Tuesday, December 15, 2015

Cara Menggunakan NMAP Untuk Port Scanning

Gak bisa dipungkiri bahwa Nmap adalah salah satu freeware opensource yang paling powerful untuk melakukan port scanning. Di versi windows aplikasi Nmap memiliki versi GUI nya, namun kali ini kita akan membahas cara menggunakannya di versi linux via Command Line.

Sebelum menggunakan Nmap kita harus install dulu aplikasi tersebut, apabila server kita sudah terhubung dengan repository install dengan command yum install nmap.

























Format standard penggunaan Nmap dengan command line adalah seperti ini.




Nmap memiliki banyak options dan dari sekian banyaknya options tersebut, options dibawah ini yang paling sering digunakan.

1. Scanning System Menggunakan Hostname atau IP Address
Menggunakan hostname.

Menggunakan IP Address.

Menggunakan "-v" options, untuk informasi yang lebih detail,


2. Scan OS Information dan Traceroute
Dengan menggunakan Nmap kita bisa mendapatkan informasi OS yang berjalan di remote host dengan menggunakan options "-A".
Dari informasi diatas terlihat informasi TCP/IP fingerprint dari OS yang di scan dan juga total hop dari lokasi kita melakukan scanning ke arah target hosts. Informasi ini biasanya digunakan sebagai langkah awal untuk melakukan penetration testing di level OS. Meski belum lengkap, dari hasil scanning diatas setidaknya kita mengetahui bahwa target host memiliki arsitektur 64-bit.


3. Scanning Target Hosts Untuk Mendeteksi Firewall
Command yang satu ini bisa mendeteksi packet yang di filter oleh firewall yang digunakan oleh si target host.

Contoh, dibawah ini host yang iptablesnya inactive.








Contoh, dibawah ini host yang iptablesnya active namun tidak melakukan blocking ke port 22 yang digunakan untuk ssh.










Bisa juga menggunakan options "-PN" untuk menscan apakah ada service di host target yang di protect oleh firewall.











4. Menemukan Host yang UP dalam Sebuah Network
Kita bisa menggunakan options "-sP" untuk mendapatkan informasi ini.















Command diatas melakukan scanning di network 192.168.227.0/24, hasil dari informasinya ialah terdapat 4 host yang up yaitu 192.168.227.1, 192.168.227.2, 192.168.227.153 dan 192.168.227.156.


5. Scan Spesifik Port
Untuk melakukan scanning terhadap spesifik port gunakan options "-p".










Untuk melakukan scanning multiple port gunakan separator comma, seperti dibawah ini.












6. Scan TCP & UDP Port
Scan TCP port.









Scan UDP port.







Untuk lebih cepat, kita bisa juga menggunakan kombinasi command seperti dibawah ini untuk mendapatkan informasi dari multiple ports.













Sebenernya masih banyak lagi options yang berguna selain contoh diatas, hanya saja menurut pengalaman saya untuk penggunaan standard options diatas paling sering digunakan. Untuk lebih lengkapnya bisa merujuk ke link ini sebagai dokumentasi NMAP References.

Semoga bermanfaat ya gan...

Sunday, December 6, 2015

Direktori /tmp Partition Full But No Visible Files

Udah lama gak nulis di blog karna banyak banged kerjaan yang bikin hidup gak tenang. T_T
Tapi gak apa-apa, karna tulisan kali ini sebagai catetan kecil aja di sela-sela waktu.

Beberapa waktu lalu ane dapet komplain karna di salah satu cluster server yang ane handle ternyata direktori /tmp nya full entah kenapa, pas di cek lebih aneh lagi karena bahkan di dalem direktori dan partisi itu gak ada file yg ukurannya gede.

Waktu troubleshoot ane ngecek pake command df -h, hasilnya outputnya kira2 seperti dibawah ini.


Setelah itu ane cek pake command du -sh * di dalam direktori /tmp dan jadi tambah bingung karna gak ada file yg ukurannya 1,9GB. Ane langsung berpikir mungkin karna ada invisible file, lalu di cek juga pake command ls -a tetep gak keliatan.

"So, what the hell is going on?"

Ternyata setelah analisa lebih jauh ane baru tau juga hal ini biasanya terjadi karna ketika direktori /tmp ingin digunakan untuk menyimpan physical file dan seketika itu juga OS akan membuat virtual file terlebih dahulu. Contohnya seperti ini, katakanlah kita mempunyai sebuah process yang mengenerate report 123.txt, file report tersebut melekat kedalam process yang mengenerate file tsb dan jika process tersebut tidak merelease filenya maka OS masih harus memperhitungkan file spaces yang akan digunakan bagaimanapun caranya. Akibatnya, file tsb tidak benar-benar tergenerate di dalam structure file system, namun space masih digunakan untuk perhitungan alokasi files.

Jadi file fisiknya tidak ada, namun karna OS masih trus mengkalkulasi maka terbaca di df -h ada file yg menggunakan storage dengan ukuran sekian. Mirip dengan recycle bin, file-file dibuang tapi tidak benar-benar dibuang karna file sebenernya masih ada di filesystem OS.


"Jadi Bagaimana Solusinya?"

Nah setelah googling2, dalam kasus seperti ini kita bisa menggunakan command lsof untuk mengecek list open file mana yg masih diproses oleh OS. Gunakan command lsof | grep /tmp | grep deleted seperti contoh dibawah ini.


Dari hasil output diatas, kita bisa melihat ada process yang menggunakan PID 23282 (kotak merah) yang berjalan.

Untuk mengecek lebih detail PID tersebut memproses apa bisa gunakan ps aux | grep 23282, outputnya seperti dibawah ini.


Dari hasil pengecekan diatas, missing temp files mencapai hampir 1,9GB dan inilah yang menyebabkan direktori /tmp full padahal gak ada file didalamnya.

Maka dari itu solusinya bisa meliputi.
  1. Restart daemon services yang berkaitan.
  2. Kill PID process yang berkaitan, dalam kasus diatas kill -9 23282.
  3. Restart Server.
Apabila salah satu action dari diatas sudah dilakukan maka seharusnya ukuran space /tmp akan berkurang dan kembali lagi jadi normal.


Notes
  • Kasus diatas kemungkinan besar bisa terjadi pada direktori lain, maka dari apabila nemuin kasus yang sama maka langkah troubleshotnya bisa gunain langkah-langkah diatas.

Semoga bermanfaat!

Sunday, November 8, 2015

Recover Admin Password Zimbra

Sekedar catetan kecil aja, karna ane pernah kejadian lupa ato password admin zimbra. Untuk recover password admin zimbra, kamu bisa ikutin langkah sederhana dibawah ini.

  1. Langkah pertama, SSH ke mail server lalu login dengan user zimbra.
  2. Langkah kedua, gunakan command 'zmprov sp <admin email address> <newpassword>'.




Notes

  • <admin email address>, adalah email address administrator kita.
  • <newpassword>, adalah password baru yang ingin kita gunakan.


Command lain yang berguna untuk mengetahui list email administrator ialah 'zmprov gaaa'.


Semoga bermanfaat... ^,^

Tuesday, October 20, 2015

Cara Melakukan Shellshock Attack dan Langkah Untuk Mencegahnya

Kali ini kita bakal bermain-main dan membahas tentang shellshock attack dan bagaimana cara untuk mengeksploitasi sebuah server yang rentan terhadap serangan melalui bugs shellshock termasuk langkah-langkah pencegahannya agar kita terhindar dari serangan ini.

Sebelumnya saya pernah nulis juga langkah untuk mencegah serangan Shellshock Attack di OS CentOS dengan melakukan update Bash Package yang kita gunakan. Untuk yang belum baca bisa kunjungi link ini : Update Bash Package untuk Mencegah Shellshock Attack.

Shellshock sebenernya biasa digunakan oleh server bukan hanya Operating System linux tapi juga Mac dan Shell yang memakai environment Bash (Bourne-Again Shell). Sekitar pertengahan september 2014 beberapa peneliti di keamanan jaringan menemukan bugs pada OS linux dengan kernel versi 2.6x. Bugs dan celah keamanan ini bisa dibilang sangat berbahaya karna hacker bisa mengeksploitasi sistem secara remote, ataupun lokal.

Kenapa bash sangat penting? Bash merupakan komponen vital dalam menjalakan proses di linux, bahkan Apache http Web-Server saja menggunakan bash, saya sendiri sering membuat bash scripting untuk keperluan tertentu di environment linux. Bahkan menurut gosip, bugs ini sudah ada lebih dari 10 tahun dan baru dipublikasikan sekarang.

Lalu, Bagaimana Cara Kerja Shellshock Attack?
  • Menurut beberapa sumber, celah shellshock ini terletak pada bagaimana Bash meng-handle data yang dikirimkan, padahal parameter data yang dikirim tersebut dapat dimanipulasi oleh hacker dengan menginject command atau "command injection".
  • Pola utama dalam serangan ini biasanya ialah hacker mengeksploitasi shellshock dengan melakukan injection code/program backdoor ke server target. Setelah server target disusupi dan dapat dikendalikan oleh si hacker maka mereka mulailah beraksi, bisa dengan memasuki program jahat lainnya, bisa juga mencuri data atau hal iseng lainnnya.

Apa yang Bisa Kita Lakukan Untuk Pencegahan?
  • Memasang firewall dan anti-virus untuk menangkal malware di server Anda.
  • Memasang IDS (Instrusion Detection System) dan IPS (Intrusion Prevention System).
  • Custom Protection, misalnya bikin script watchdog atau program aplikasi anti-malware yang kita kembangkan sendiri untuk monitoring trafik pada aplikasi/server kita.
  • Update Bash Package, untuk langkah-langkanya bisa ikuti tutorial saya disini.

Apakah Server Saya Rentan/Vulnerable?
  • Untuk melakukan testing apakah server kita vulnerable atau tidak, kita dapat menggunakan script dibawah ini. 
    # env x='() { :; }; echo this server vulnerable' bash -c "echo this is testing script"

    Apabila outputnya seperti dibawah ini berarti server anda rentan/vulnerable.

Bagaimana Cara Melakukan Shellshock Attack?
             Salah satu cara untuk melakukan shellshock attack adalah reverse connection dengan menjalankan netcat pada server target. Sebagai contoh kita akan buat simulasi kira-kira seperti dibawah ini.

Notes :
Setelah selesai di install, pastikan 2 node saling terhubung (bisa ping), lalu langkah selanjutnya kita coba scanning dengan aplikasi scanning bawaan kali linux yaitu, Dirbuster. Gunakan command # dirb http://192.168.227.158 
Contohnya seperti dibawah ini.

Dari contoh diatas terlihat bahwa kita telah mendapatkan bug shellshock pada server target di dalam direktori cgi-bin/, langkah selanjutnya scan kembali direktori cgi-bin/ untuk memastikan file apa saja yang ada dalam direktori tersebut. Gunakan command # dirb http://192.168.227.158/cgi-bin/ seperti contoh dibawah ini.

Langkah selanjutnya kita scanning menggunakan nmap untuk tau celah dan service apa yang terbuka, gunakan command # nmap 192.168.227.158

Dari hasil nmap, kita mendapat informasi bahwa port 80 terbuka dan port tersebut biasanya digunakan sebagai web services. Langkah selanjutnya kita gunakan tools curl dan netcat untuk melakukan reverse connection, tujuannya adalah mendapatkan akses server target dengan memanfaatkan celah bug shellshock.
  • Langkah pertama, buka terminal 1, jalankan netcat mode listening dengan command nc. Gunakan port 1919 untuk listen port.


  • Langkah kedua, buka terminal 2 lalu kirim kode shell shock attack dengan command curl seperti dibawah ini.


  • Langkah ketiga, kembali ke terminal satu dan lihat akan muncul notifikasi seperti yang di kotak merah seperti dibawah ini.

    Pada tahap ini kita sudah berhasil terhubung ke server target melalui port 1919 yang telah kita tentukan.

  • Langkah keempat, coba listing file, buat file dan hapus file.

    1) Listing File 

    Dari gambar diatas terlihat kita ada di direktori /var/www/cgi-bin/ dan di dalam direktori tersebut ada file status.

    2) Buat File

    Dari langkah diatas kita berhasil buat file arif.txt di direktori /home, apabila di cek di server VM cve-2014-6271.iso pada direktori home nya terdapat file arif.txt seperti gambar dibawah ini.


    3) Hapus File

    Dari langkah diatas kita sudah berhasil menghapus file arif.txt melalui backdoor yang kita buat dari teknik shellshock attack, sekarang silahkan cek server VM cve-2014-6271.iso, seharusnya file arif.txt sudah hilang dari direktori /home

Sekian dulu tulisan mengenai shellshock ini, kalo ada kesalahan bisa dikoreksi dan semoga bermanfaat yah.. ^,^

Thursday, October 15, 2015

Manajemen Software Packages di Linux Menggunakan YUM

Kali ini kita akan membahas tentang yum, buat pengguna linux udah gak asing lagi sama tools yang satu ini apalagi buat yang sering pake CentOS.

Sebelum ada yum administrator harus menginstall software beserta dependencies-nya satu-persatu dan itu sangat merepotkan. Bayangkan kalau ada satu packages software yang dependencies-nya mencapai ratusan? Repot kan? Harus install satu-satu menggunakan rpm -ivh sampe keriting deh jari kita.

Command yum merupakan salah satu command-line tools paling powerful di linux yang dapat digunakan untuk install, update, upgrade, query, dan delete software packages yang digunakan di operating system linux yang kita gunakan. Dibawah ini contoh penggunaan Yum di environment linux.

Query/Finding Software
  • yum help, menampilkan informasi penggunaan yum untuk administrator.
  • yum list, menampilkan software packages yang sudah tersedia dan terinstall.


  • yum search KEYWORD, menampilkan list package bedasarkan keyword name yang kita query. Contoh, kita gunakan yum search untuk query packages yang mempunyai "web server" di nama, summary, dan field deskripsinya. Gunakan search all seperti dibawah ini.


  • yum info PACKAGENAME, menampilkan informasi detail mengenai software package yg kita query seperti architecture, size, version, dsb.


    Apabila di repository kita ada packaged updates terbaru maka ketika kita query yum info akan menampilkan informasi seperti dibawah ini.


  • yum provides PATHNAME, menampilkan software packages yang sesuai dengan path yang kita query. Contoh : Untuk mencari software packages yang memprovide direktori /var/www/html gunakan command dibawah ini.



Install, Update & Remove Software
  • yum install PACKAGENAME, digunakan untuk mendapatkan dan menginstall software packages termasuk seluruh dependenciesnya.


  • yum update PACKAGENAME, digunakan untuk memperbaharui software packages ke versi terbaru beserta seluruh dependencies-nya.



    Notes : Apabila command diatas digunakan tanpa 'PACKAGENAME', maka akan mengupdate seluruh software packages yg telah terinstall di dalam OS kita.
  • yum remove PACKAGENAME, digunakan untuk remove/uninstall software packages yang telah terinstall di OS kita termasuk seluruh dependencies-nya.



Review Software Packages Transaction History
  • Seluruh history transaksi instalasi dan remove tersimpan di file /var/log/yum.log


  • Summary dari history instalasi dan remove juga bisa dilihat dengan menggunakan yum history.


Summary Command YUM
  • Biar sama-sama enggak lupa sekalian aja ane buatin summary dari command yum.

    Fungsi:
    Command:
    Menampilkan  packages yang telah terinstall bedasarkan nama
    yum list [NAME-PATTERN]
    Menampilkan packages group yang telah terinstall
    yum grouplist
    Search packages bedasarkan keyword
    yum search KEYWORD
    Menampilkan informasi detail mengenai packages
    yum info PACKAGENAME
    Install packages
    yum install PACKAGENAME
    Install group packages
    yum groupinstall “GROUPNAME”
    Update seluruh packages yang telah terinstall di OS
    yum update
    Update specifik packages names
    yum update PACKAGENAME
    Remove packages
    yum remove PACKAGENAME
    Menampilkan history transaksi
    yum history

Semoga catetan ini bermanfaat.. ^,^

Sunday, October 11, 2015

Manajemen User Account di Linux OS

Udah lama banged gak nulis, karna banyak project yang harus di selesaikan haha. Sekalian buat catetan mumpung lagi senggang, disempetin bikin catetan tentang manajemen user account di linux.

Di setiap Operating System dibutuhkan user yang digunakan untuk memanage system yg berjalan, kali ini saya mau bahas sedikit tentang beberapa command yg digunakan untuk memanage local user account di linux terutama CentOS/Redhat.

Create Users

  • useradd username, adalah command yg digunakan untuk menambahkan user yang dapat memanage operating system yang kita gunakan. Setelah command tersebut digunakan (tanpa options/parameter tambahan) maka system akan menambahkan user baru di file /etc/passwd. Hal yang harus diingat adalah, agar user dapat login password harus di setting terlebih dahulu.

  • useradd --help, adalah command yang digunakan untuk menampilkan options/parameter tambahan yang dapat digunakan untuk keperluan tertentu. 

Modify Users
  • usermod --help, akan menampilkan Opsi/Parameter standard yang dapat digunakan untuk memodifikasi account yang sudah dibuat. Opsi/parameter paling umum ialah dibawah ini.

    usermod options:
    -c, --comment COMMENT
    Menambahkan value/comment, nama, notes ke field GECOS.
    -g, --gid GROUP
    Menspesifikasikan primary group untuk user account.
    -G, --groups GROUPS
    Menspesifikasikan list dari supplementary group untuk user account.
    -a, --append
    Biasa digunakan dengan menambahkan opsi -G untuk menambahkan user ke supplementary group yang sudah ada di system tanpa me-remove user dari group lain.
    -d, --home HOME_DIR
    Menspesifikasikan home direktori baru untuk user account.
    -m, --move-home
    Move/memindahkan user home direktori ke direktori baru. Command ini harus digunakan dengan -d options.
    -s, --shell SHELL
    Menspesifikasikan login shell baru yang digunakan oleh user account.
    -L, --lock
    Lock user account.
    -U, --unlock
    Unlock user account.

Delete Users
  • userdel username, adalah command yang digunakan untuk mendelete user dari /etc/passwd, namun dengan menggunakan command ini direktori user akan tetap utuh dan tidak terhapus dari /home direktori.
  • userdel -r username, adalah command yang digunakan untuk mendelete user beserta home direktori-nya.

Command id Untuk Display Informasi User
  • id, adalah command yang digunakan untuk menampilkan informasi account user. Informasi yang ditampilkan biasanya meliputi uid number, membership group, dsb.
  • id username, adalah command yang digunakan untuk menampilkan informasi spesifik dari username yg ada di OS tsb, infromasi tsb termasuk uid number, membership group, dsb.

Setting Password
  • passwd username, adalah command yang digunakan untuk mensetting initial password atau mengubah password untuk username yang sudah dibuat di operating system.
    Notes:

    User Root dapat mensetting password dengan value apapun. Namun apabila password yang di setting tidak memenuhi criteria, maka akan muncul prompt untuk mensetting ulang password.

UID Ranges
Kalo yang satu ini bonus nih buat temen-temen yang baca terutama yang jadi sys-admin, uid yang ditulis disini mengacu pada uid yang ada di OS CentOS/Redhat.
  • UID 0, UID yang selalu di assign ke super user account yaitu root.
  • UID 1-200, adalah ranges system user yang di-assign secara periodik dan dinamik ke system yang diproses oleh OS.
  • UID 201-999, adalah ranges dari system user yang digunakan oleh system yang memproses file yang tidak ada ownernya di file system. 
  • UID 1000+, adalah range yang tersedia untuk regular users.

Sekian dulu semoga bermanfaat.

Wednesday, July 1, 2015

Recovery Root Password CentOS 7

Kalo dari catetan sebelumnya saya membahas recovery root password di centos 6, maka kali ini kita akan membahas langkah-langkah recovery root password di centos 7.


Langkah-langkahnya agak sedikit berbeda dengan di CentOS 7, dibawah ini langkah-langkah recovery root password di CentOS 7.

1) Reboot Operating System CentOS 7
Reboot OS dengan menjalankan command #reboot.











2) Interrupt Boot Loader
Ketika booting akan muncul tampilan seperti dibawah ini.












Pada tahap ini lakukan interupsi pada countdown boot loader dengan menekan tombol apapun.


3) Edit Command Kernel Parameter
Setelah langkah kedua selesai maka akan muncul tampilan dibawah ini.













Pilih opsi pertama lalu tekan tombol "e" untuk melakukan edit command kernel parameter. Setelah tekan tombol "e" maka akan muncul tampilan seperti dibawah ini.













Setelah muncul tampilan diatas gerakan kursor lalu cari command kernel line-nya yang dimulai oleh linux16.

Lalu pada baris tersebut tambahkan rd.break seperti pada gambar dibawah ini.












Setelah selesai ditambahkan, tekan tombol Ctrl + x untuk booting dengan kernel parameter baru.


4) Ganti Root Password
Pada tahap ini kita akan berada di dalam initramfs debug shell dari OS CentOS 7.
Untuk mengganti password root dapat dilakukan dari tempat ini, langkahnya adalah sebagai berikut.

Remount /sysroot dengan opsi read-write agar dapat diedit, gunakan command ini.
# mount -o remount,rw /sysroot/




Pindah ke chroot jail dimana /sysroot adalah root dari tree file system dari OS tsb, gunakan command ini.
# chroot /sysroot




Pada langkah ini, setting password baru. Gunakan command dibawah ini.
# passwd root








Tahap terakhir sebelum exit dan reboot, pastikan semua unlabeled file di re-label ketika booting.
Gunakan command dibawah ini
# touch /.autorelabel




Ketik exit dua kali. Exit pertama akan keluar dari chroot jail, lalu exit kedua keluar dari initramfs debug shell.

Pada tahap ini OS akan booting, lalu menjalankan SE-Linux relabelling. Lalu setelah kita masuk kita sudah bisa login dengan root password yang baru.


Done! Semoga bermanfaat..