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.