Program sekuriti tidak hanya berguna bagi hacker. Pengguna Linux awam pun bisa menggunakannya untuk mengetahui aman tidaknya sistem mereka. Pelajari bagaimana program-program ini dapat menguak informasi yang tergolong sensitif di PC Anda!
Program hacking pada dasarnya tidak bersifat netral. Dia bisa menjadi positif jika digunakan oleh orang yang bertujuan baik, dan sebaliknya bisa berbahaya jika digunakan orang jahat. Kali ini, kita akan memposisikan diri sebagai orang baik dan menggunakannya untuk melakukan suatu analisis keamanan PC.
Apa yang hendak kita analisis? Tidak jauh-jauh, PC kita sendiri. Mengapa kita melakukannya? Alasannya yaitu untuk mengetahui kelemahan sistem lebih dini sebelum cracker jahat menemukannya. Begitu kita menemukannya, kita bisa melakukan langkah preventif agar celah keamanan tidak dimanfaatkan cracker untuk menyusup ke sistem. Ingat, tidak ada sistem yang sempurna. Jadi, waspadalah dan lakukan pengauditan secara berkala.
Teknik diulas disini hanya sebagian saja dari bermacam-macam teknik hacking yang ada. Penulis mempertimbangkan aspek realitas keamanan sistem dilihat dari sisi pandang penggunaan Linux sebagai desktop. Praktik berikut ini memakai distro Fedora 9 (kernel 2.6.32), tetapi metode yang sama bisa diterapkan pada distro lainnya atau mungkin dengan sedikit modifikasi. Seperti biasa, prompt # berarti perintah dilakukan sebagai root, sementara tanda $ berarti dilakukan sebagai user non root.
Nmap: Melacak host dan port PC di jaringan
Nmap atau Network Mapper adalah program sekuriti “de facto” yang dipakai untuk mengetahui port-port jaringan yang terbuka pada suatu komputer. Tidak hanya itu, Nmap (www.nmap.org) bisa memberikan informasi lain seperti menebak sistem operasi yang digunakan oleh target serta nama dan versi program yang menjalankan suatu service.
Kenapa informasi seperti ini sangat berguna? Ibaratnya rumah dan pintu, jika seseorang ingin masuk ke rumah tersebut, tentunya hal pertama yang dicari adalah letak pintu. Jika orang tersebut adalah tamu yang diundang, pintu yang dicari adalah pintu utama. Tapi untuk seseorang dengan niat jelek, tentunya semua pintu akan dicoba untuk ditemukan. Lalu, satu per satu dicari mana yang paling mudah diterobos.
Hal yang sama dilakukan oleh cracker. Dengan Nmap, hacker mencari port-port jaringan yang terbuka pada PC Anda. Dalam terminologi TCP/IP, port diberikan nomor mulai dari 1 sampai dengan 65535. Ada dua jenis port, yaitu TCP dan UDP. TCP digunakan untuk koneksi yang memerlukan pengiriman data yang terpercaya, sementara UDP digunakan bagi koneksi yang bisa mentoleransi kehilangan data. Sebagai ilustrasi, inilah hasil pemindaian Nmap pada komputer milik penulis:
$ nmap -p 0-65535 localhost
Starting Nmap 4.53 ( http://insecure.org )
at 2010-01-04 22:31 WIT
Interesting ports on mulyadi.kos.com
(127.0.0.1):
…
PORT STATE SERVICE
6000/tcp open X11
Nmap done: 1 IP address (1 host up) scanned
in 5.654 seconds
Hasil di atas menandakan bahwa ada satu port TCP yang terbuka, yaitu port nomor 6000. Sesuai keterangan Nmap (yang Anda bisa cek silang di file /etc/services), port ini digunakan oleh sistem X Window. Dengan asumsi Anda sedang menggunakan sistem X Window, semisal GNOME, pesan seperti di atas adalah wajar.
Nmap juga memiliki fasilitas untuk mendeteksi sistem operasi dan nama service. Caranya adalah dengan menggunakan opsi -A:
$ sudo nmap -A -n -p 0-65535 localhost
Starting Nmap 4.53 ( http://insecure.org ) at
2010-01-04 23:50 WIT
Interesting ports on 127.0.0.1:
…
PORT STATE SERVICE VERSION
6000/tcp open X11 (access denied)
…
TCP/IP fingerprint:
OS:SCAN(V=4.53%D=1/
4%OT=6000%CT=1%CU=38536%PV=N%DS=0%G
=Y%TM=4B421C73%P=i386
…
Uptime: 1.540 days (since Sun Jan 3 10:52:51
2010)
Network Distance: 0 hops
Service Info: OS: Unix
Kali ini informasi yang tampil lebih lengkap. Nmap setidaknya bisa menebak bahwa PC penulis memakai sistem operasi UNIX. Namun, tidak berhasil menebak versi X Window yang sedang digunakan.
Tindak lanjut: Anda bisa menutup port tersebut dengan jalan menonaktifkan program yang memanfaatkan port yang bersangkutan. Cara lain adalah dengan menggunakan iptables untuk menyaring akses ke port tersebut. Sebagai contoh, jika misalnya yang terlihat di atas adalah port 25 sementara Anda tidak menjadikan PC tersebut sebagai mail server, Anda bisa menonaktifkan service-nya. Secara default, pada Fedora dan distro lainnya, program sendmail yang aktif pada port ini. Coba perhatikan perintah berikut ini.
# /etc/init.d/sendmail stop
# chkconfig sendmail off
Berdasarkan perintah terakhir dapat dipastikan bahwa program sendmail tidak akan dijalankan saat Linux di boot.
John The Ripper: Menguji tingkat keamanan password
Kita misalkan saja PC Anda bisa disusupi seseorang dari luar. Penyusup ini masuk sebagai user biasa. Tentu saja kemampuannya secara teknis terbatas karena dia bukan root untuk saat ini. Jadi selanjutnya bisa ditebak, sang penyusup akan mencoba menjadikan dirinya root. Salah satu cara termudah untuk melakukannya adalah menebak password root saat menjalankan perintah “su”. Tergantung pada seberapa rumit password root yang digunakan, proses menebak bisa memakan waktu dalam hitungan menit, jam, bahkan sampai berhari-hari.
Manusia biasa tentunya punya kesabaran. Setelah mencoba untuk beberapa saat, jika masih gagal, kemungkinan besar dia akan menyerah. Berdasarkan fakta ini, maka suatu password dikatakan kuat (aman) jika membutuhkan waktu yang relatif lama untuk dipecahkan.
Utility John the Ripper (http://www.openwall.com/john/) adalah standar yang digunakan untuk meng-crack password login di sistem UNIX. Untuk menggunakannya, download source code-nya lalu compile dengan perintah:
$ tar xzvf john-1.7.4.tar.bz2
$ cd john-1.7.4
Anda juga memerlukan sebuah patch tambahan yang tidak disertakan dalam paket resmi John The Ripper. Anda bisa temukan patch tersebut di http://openwall.info/wiki/john/patches pada bagian “generic crypt (3) support”. Hal ini diperlukan karena distribusi semisal Fedora 9 yang penulis gunakan secara default menggunakan algoritma hash SHA 512 bit tetapi John The Ripper tidak mendukung format file password hasil enkripsi algoritma ini.
Tempatkan patch pada direktori yang sama dengan direktori tempat source code John The Ripper yang telah Anda download sebelumnya. Selanjutnya, lakukan patching:
$ zcat ../john-1.7.3.1-generic-crypt-1.diff.gz |
patch -p1
$ cd src
$ make linux-x86-sse2
Perintah make (baris terakhir) akan menghasilkan binary john yang memanfaatkan instruksi SSE (Streaming SIMD Extensions) versi 2. Contoh prosesor yang mendukung instruksi SSE2 adalah Core Duo, Core 2 Duo, Athlon 64, Atom. Daftar lengkap bisa pembaca simak di http://en.wikipedia.org/wiki/SSE2.
Sekarang yang Anda perlukan adalah sepasang file yang merupakan daftar user dan password Anda. Untuk mudahnya, dimisalkan kita menyalin dua file tersebut ke dalam direktori “run” dalam direktori hasil ekstrak file John The Ripper:
$ cd ../run
$ su
# cp -i /etc/passwd .
# cp -i /etc/shadow .
# chown frank.frank passwd shadow
# chmod a+r passwd shadow
# exit
$ ./unshadow passwd shadow >> ./list.txt
Ganti kata “frank” pada baris eksekusi chown dengan nama user yang Anda pakai. Baris terakhir akan menciptakan file bernama list.txt yang berisi gabungan nama user dan password yang terenkripsi.
Selanjutnya Anda tinggal menjalankan program john sebagai berikut:
$ ./john –shells=/bin/bash ./list.txt
Loaded 4 password hashes with 4 different
salts (generic crypt(3) [?/32])
xxxxxx (yono)
xxxxxx (root)
xxxxxx (mulyadi)
xxxxxx (doel)
guesses: 4 time: 0:00:05:59 100% (2) c/s:
28.24 trying: xxxxxx
Sangat mungkin Anda mendapat hasil yang berbeda. Dalam contoh di atas, password untuk 4 nama user bisa dipecahkan dalam waktu kurang lebih 6 menit. Sebenarnya ada lebih 4 user dalam daftar password milik penulis, tetapi lewat opsi “–shells=/bin/bash” secara spesifik kita menetapkan program John agar hanya meng-crack password user yang bisa login secara interaktif.
Tindak lanjut: 6 menit bagi seorang cracker bisa dikatakan waktu yang relatif cepat untuk memecahkan suatu password. Password pada ilustrasi di atas mudah dipecahkan karena terdiri atas 6 huruf dan merupakan kata bahasa Inggris biasa. Program seperti John The Ripper memiliki algoritma khusus yang dengan mudah dapat memecahkan password semacam ini. Bahkan perkembangan terbaru memungkinkan menebak kata semacam cl0u4 (adaptasi dari cloud), 3133t (elite), dan seterusnya.
Penulis menyarankan agar Anda menggunakan password yang tergolong passphrase. Contohnya, l1nux_dan_w1nd0ws, th3_d4y_th3_34rth_st00d_sti11, dan sebagainya. Kombinasi kata yang panjang semacam ini akan menyulitkan password cracker untuk memecahkannya (membutuhkan waktu yang lama, bahkan bisa berbulan-bulan untuk ditemukan).
Selain itu, cobalah membiasakan diri mengganti password Anda (terutama user root) secara teratur. Dengan cara ini, dalam kasus terburuk, misalnya pada saat password-nya berhasil di-crack, kemungkinan besar password tersebut sudah tidak valid karena telah Anda ganti.
Foremost: Mengembalikan berbagai jenis file yang terhapus
Mungkin pada suatu saat, Anda menjual laptop atau PC Anda dan menggantinya dengan yang baru. Kemungkinan besar Anda turut menjual hard disk lama yang ada di dalamnya. Anda pun bisa menjual USB Flash Drive (flash disk) atau hard disk portable Anda. Sebelum menjualnya, agar privasi data Anda tetap terjaga, Anda mungkin akan merasa cukup aman dengan menghapus file-file penting di dalamnya dengan perintah “rm” atau melakukan penghapusan via file manager. Benarkah file-file tersebut benar-benar telah terhapus dan aman dari berbagai kemungkinan recovery data?
Bagaimana jika penulis ungkapkan fakta bahwa data-data tersebut sangat mungkin masih bersarang dalam disk Anda. Kenapa ini bisa terjadi? Sederhana saja. Saat kita meminta sistem operasi untuk menghapus file, misalnya dengan perintah “rm”, yang terjadi sebenarnya adalah file tersebut hanya dihapus dari “peta data”. Namun, data itu sendiri masih tersimpan. Hal ini menciptakan ilusi bahwa file tersebut sudah terhapus.
Dengan program Foremost (http://foremost.sourceforge.net) atau Photorec (http://www.cgsecurity.org/wiki/PhotoRec), seseorang bisa dengan relatif mudah mencari file-file yang terhapus secara kurang tuntas ini. Untuk ilustrasi, penulis menjalankan Foremost pada suatu partisi hard disk internal yang sering terjadi operasi buat-hapus file. Download source code Foremost, unpack, dan compile. Pada saat tulisan ini dibuat, versi terbarunya adalah 1.5.6. Tahapannya bisa Anda lihat pada perintah berikut ini.
$ tar xzvf foremost-1.5.6.tar.gz
$ cd foremost-1.5.6
$ make
Selanjutnya, lakukan editing pada file foremost.conf. Pada file ini, terdapat setting agar bisa mendeteksi suatu jenis file tertentu. Sebagai contoh, format mp3 bisa dikenali dengan menghapus tanda # pada awal baris-baris berikut:
mp3 y 8000000 \xFF\xFB??\x44\x00\x00
mp3 y 8000000 \x57\x41\x56\45 \x00\x00\xFF\
mp3 y 8000000 \xFF\xFB\xD0\ \xD1\x35\x51\xCC\
mp3 y 8000000 \x49\x44\x33\
mp3 y 8000000 \x4C\x41\x4D\x45\
Lakukan pengeditan serupa pada baris-baris lain yang menyatakan suatu format file. Apabila ada komentar berbunyi “note this format has a builtin extraction function”, ini berarti Foremost sudah mampu mengenali secara otomatis tanpa bantuan konfigurasi eksternal.
Kini salin file foremost dan foremost.conf ke disk eksternal atau USB flash drive. Ini disarankan agar sesuai dengan prinsip forensik di mana tempat data yang dicakup berada pada disk (physical disk) yang berbeda dengan target pencarian. Dengan demikian, tidak terjadi “gangguan” yang mungkin memperkecil kemungkinan file yang bisa di-recover.
Kita misalkan program foremost dan konfigurasinya disalin ke flash disk yang di-mount di /media/flash dalam direktori foremost. Kita akan menarget partisi /dev/sda5:
# pwd
/media/flash/foremost
# ./foremost -d -q -v /dev/sda5
Makna dari masing-masing opsi yang dipakai adalah:
-d : melakukan deteksi indirect block (khusus pada sistem UNIX). File berukuran besar menggunakan menggunakan teknik ini dalam pemetaannya.
-q : memerintahkan Foremost untuk melakukan scanning secara cepat.
-v : menampilkan proses scanning
Secara default, Foremost membuat subdirektori bernama “output” di dalam direktori saat ini. Direktori ini nantinya menampung file-file hasil recovery. Berikut sebagian contoh outputnya.
# ./foremost -d -q -v /dev/sda5
Foremost version 1.5.6 by Jesse Kornblum,
Kris Kendall, and Nick Mikus
Audit File
…
Processing: /dev/sda5
|—————————————————–
File: /dev/sda5
…
Num Name (bs=512) Size File Offset Comment
*0: 00339422.rpm 976 KB 173784064
1: 00358472.rpm 976 KB 183537664
2: 00363296.rpm 976 KB 186007552
3: 00364230.rpm 976 KB 186485760 (IND BLK
bs:=512)
*4: 00532320.mpg 19 MB 272547840
5: 00556368.mpg 19 MB 284860416 (IND BLK
bs:=4096)
6: 00445237.rpm 976 KB 227961344
7: 00449457.rpm 976 KB 230121984
8: 00561672.asf 7 MB 287576064 (IND BLK
bs:=4096)
9: 00564896.asf 7 MB 289226752
(IND BLK bs:=4096)
10: 00568152.asf 7 MB 290893824
(IND BLK bs:=4096)
Dari cuplikan di atas, setidaknya bisa kita lihat bahwa beberapa file multimedia dan RPM bisa dikembalikan oleh Foremost. Dengan tambahan waktu, sangat mungkin ditemukan file-file lain semisal file Microsoft Word atau gambar-gambar JPEG.
Tindak lanjut: Hapus file Anda secara lebih aman! Gunakan program seperti wipe atau shred agar penghapusan dilakukan dengan terlebih dahulu menimpa file dengan sekumpulan data acak. Contoh:
$ shred -n 5 -z -u -v ./penting.odt
Akan menghapus file penting.odt dengan melakukan penimpaan data acak sebanyak 5 kali pengulangan (opsi -n). Setelah itu, dilakukan penamaan ulang file menjadi sederetan angka nol dan terakhir baru file dihapus. Opsi -v akan menunjukkan proses penghapusan untuk Anda.
Berikan angka yang cukup besar untuk argumen opsi -n misalnya 20 jika Anda ingin memastikan data benar-benar sulit untuk dilacak.
Post a Comment