Artikel ini mencantumkan alat yang tersedia untuk melakukan analisis server yang disusupi. (Membersihkan server yang disusupi berada di luar cakupannya.) Menggunakan alat ini membantu Anda menentukan informasi berikut:
- Titik masuk
- Asal usul serangan
- File mana yang disusupi
- Tingkat akses yang diperoleh penyerang
- Jejak audit jejak kaki penyerang
Banyak jenis kompromi yang berbeda dapat mengeksploitasi server Unix®. Penyerang mungkin meluncurkan serangan brute force, menebak kata sandi yang lemah, atau mencoba menggunakan kerentanan perangkat lunak yang diketahui dengan harapan server tidak memiliki jadwal patch reguler. Penting untuk memahami bagaimana mesin disusupi untuk menentukan tingkat kerusakan pada server Anda dan host lain yang dapat diakses oleh mesin yang disusupi.
Untuk sebagian besar kompromi tingkat root, pendekatan pemulihan yang paling mudah adalah melakukan instalasi server yang bersih dan memulihkan data penting apa pun dari cadangan. Namun, sampai Anda mengetahui titik masuk penyusupan, langkah ini mungkin tidak cukup karena Anda perlu memahami penyusupan sehingga Anda dapat menutup lubang keamanan dengan benar.
Dokumentasikan serangan
Saat diberi tahu bahwa sistem di bawah kendali Anda mungkin disusupi, pastikan Anda memperoleh informasi sebanyak mungkin dari pelapor, termasuk item berikut:
- Bagaimana masalah awal ditemukan
- Perkiraan waktu terjadinya kompromi
- Apakah server dimodifikasi setelah terdeteksi adanya penyusupan
- Hal lain yang menurut reporter penting
Penting :Jika Anda berencana untuk melibatkan penegak hukum, sangat penting bahwa Anda tidak mengambil tindakan tambahan di server. Server harus tetap dalam kondisi saat ini untuk tujuan pengumpulan bukti.
Jika Anda memilih untuk melanjutkan penyelidikan, dokumentasikan apa pun yang Anda temukan di server. Langkah ini bisa sesederhana menyalin dan menempelkan perintah dan hasilnya.
Alat investigasi
Dalam beberapa kompromi, penyerang berhasil menghapus semua file log penting untuk menyembunyikan jejak mereka. Namun, ini tidak selalu terjadi. Akibatnya, file log berisi petunjuk berharga tentang apa yang dilakukan penyerang ke server. File log mungkin juga membantu Anda menentukan apakah serangan tersebut merupakan peretasan web dasar atau kompromi tingkat akar. Gunakan perintah di bagian ini untuk menemukan petunjuk untuk membantu Anda mengungkap tingkat kompromi.
perintah terakhir
last
perintah mencantumkan sesi pengguna yang baru saja masuk ke sistem. Keluarannya termasuk cap waktu dan nama host dan menunjukkan apakah pengguna masih masuk. Jika alamat Protokol Internet (IP) aneh muncul di keluaran, Anda dapat melakukan referensi silang terhadap serangan brute force Secure Shell (SSH) di /var/log/messages atau /var/log/secure direktori. Langkah ini mungkin menunjukkan bagaimana penyerang mendapatkan entri, nama pengguna apa yang mereka gunakan untuk mendapatkan akses, dan apakah mereka dapat meningkatkan hak istimewa mereka ke root
.
ls -lart perintah
ls -lart
perintah mengeluarkan daftar file dan direktori yang diurutkan berdasarkan waktu yang dapat Anda korelasikan saat kompromi terjadi. Output ini dapat membantu Anda menentukan serangan yang ditambahkan atau dihapus dari sistem.
netstat -na perintah
netstat -na
perintah menampilkan soket mendengarkan saat ini pada mesin. Menjalankan perintah ini mungkin mengungkapkan pintu belakang apa pun yang mendengarkan atau layanan yang salah yang sedang berjalan.
ps -wauxef command
Perintah ini membantu Anda melacak setiap proses yang salah yang mendengarkan dan menunjukkan proses aneh lainnya (misalnya, pengguna www
menjalankan proses Bash). Anda juga dapat menjalankan perintah lsof |grep <pid>
untuk menemukan informasi lebih lanjut tentang file terbuka yang digunakan suatu proses. Secara bersamaan, menjalankan cat /proc/<pid>/cmdline
mungkin juga memberi tahu Anda di mana file yang mengontrol suatu proses berada.
perintah bash_history
Berkas sejarah sering kali menjadi batu Rosetta untuk melacak apa yang perlu dilakukan selama kompromi. Menggunakan bash_history
perintah untuk melihat .bash_history
pengguna file sering menunjukkan dengan tepat perintah apa yang mereka jalankan, program jahat apa yang mereka unduh, dan direktori yang mereka fokuskan.
perintah teratas
Proses berbahaya sering menyebabkan masalah perselisihan unit pemrosesan pusat (CPU) dalam lingkungan, dan karena itu muncul di dekat bagian atas daftar proses. Gunakan top
perintah untuk menampilkan daftar ini. Saat Anda melacak kompromi, pertimbangkan proses apa pun yang menyebabkan masalah pertikaian CPU sebagai hal yang mencurigakan.
perintah strace
Saat Anda menjalankan strace -p pid
perintah pada proses yang mencurigakan, strace
perintah mungkin menghasilkan wawasan penting tentang apa yang sedang dilakukan proses.
Alat lain
Perintah sebelumnya mungkin tidak memberikan banyak petunjuk tentang apa yang terjadi selama serangan. Jika demikian, Anda dapat menggunakan alat yang lebih khusus.
Penting :Sebelum Anda menggunakan alat di bagian ini, Anda harus memastikan bahwa biner yang Anda gunakan untuk menyelidiki bukan versi yang di-trojan. Versi yang di-trojan dapat melakukan tugas atas nama penyerang, seperti menghilangkan informasi yang mungkin mengungkapkan apa yang coba dicapai oleh kompromi.
Jalankan perintah berikut untuk memverifikasi bahwa Anda memiliki seperangkat alat yang berfungsi dengan baik:
rpm -Va
Memverifikasi paket membandingkan informasi tentang file paket yang diinstal dengan metadata untuk paket yang disimpan oleh database RPM Package Manager (RPM). Verifikasi membandingkan informasi tentang ukuran, jumlah MD5, izin, jenis, pemilik, dan grup yang terkait dengan setiap file. Output menampilkan perbedaan.
Penting :Paket yang ditandai dalam direktori berikut mungkin menunjukkan bahwa Anda menggunakan versi biner yang di-trojan, dan oleh karena itu Anda tidak dapat memercayai keluarannya:
/bin
/sbin
/usr/bin
/usr/sbin
Contoh berikut menunjukkan file trojan:
S.5….T /bin/login
rpm -qa perintah
Anda dapat menggunakan perintah rpm -qa
untuk menampilkan urutan kronologis paket yang baru diinstal. Namun, dalam kasus penyusupan root, basis data rpm mungkin juga disusupi.
perintah lsattr
Jika penyerang memperoleh akses root dan trojan binari tertentu, mereka mungkin membuat binari tersebut tidak dapat diubah sehingga Anda tidak dapat menginstal ulang versi bersihnya. Periksa direktori berikut:
/bin
/sbin
/usr/bin
/usr/sbin
Contoh berikut menunjukkan file yang dibuat tidak dapat diubah oleh penyerang:
-------i----- /bin/ps
Under normal circumstances in these directories, the rules should all look similar to:
------------- /bin/ps
menemukan perintah
find
adalah alat Unix yang sangat penting dalam menemukan file yang baru dimodifikasi. Misalnya, Anda dapat menemukan file yang dimodifikasi dalam lima hari terakhir dengan menjalankan perintah berikut:
find / -mtime 5
Direktori umum untuk eksploitasi web
Periksa direktori world-writable berikut tempat Apache® biasanya menulis file sementara:
ls -al /tmp
ls -al /var/tmp
ls -al /dev/shm
Cari file yang tidak Anda kenali atau yang terlihat mencurigakan. Waspadai file tersembunyi dan file yang memiliki izin eksekusi.
Jika Anda telah menyetel izin untuk direktori di situs web Anda ke 777, periksa juga izin tersebut.
Temukan titik masuk
Jika Anda menemukan informasi bermanfaat dengan menggunakan alat di bagian sebelumnya, Anda mungkin juga memiliki stempel waktu kapan peretas memasang file atau file berbahaya di server.
Anda dapat menggunakan stempel waktu tersebut untuk meninjau log akses situs web Anda untuk entri mencurigakan yang ditambahkan selama periode waktu tersebut. Jika Anda menemukan sesuatu yang mencurigakan, Anda dapat melakukan referensi silang dengan lokasi file berbahaya untuk mempersempit titik masuk.
Meskipun sebagian besar kompromi berasal dari kode yang dapat dieksploitasi dalam situs web Anda, Anda tidak dapat mengesampingkan titik masuk lainnya. Pastikan Anda meninjau/var/log/* untuk apa pun yang tampak mencurigakan selama jangka waktu yang dilaporkan.
Contoh investigasi
Contoh investigasi di bagian ini menunjukkan proses yang harus Anda gunakan saat menyelidiki dugaan penyusupan tingkat akar.
Identifikasi jenis serangan
Verifikasi apakah itu peretasan web dasar atau penyerang benar-benar mendapatkan hak akses root. Dalam kebanyakan kasus, serangan tersebut adalah peretasan web sederhana yang dapat Anda bersihkan dengan aman.
-
Jalankan perintah berikut untuk menentukan apakah penyerang memperoleh hak akses root:
lsattr /usr/sbin | kurang
lsattr /usr/bin | kurang
lsattr /bin | kurang
lsattr /sbin | kurang
-
Cari atribut yang dimodifikasi, seperti biner yang telah disetel ke tidak dapat diubah.
Keluaran:
s---ia------- /sbin/shs
Saat Anda menggunakan
strings
perintah pada file itu, Anda melihat bahwa itu adalah backdoorshell.
Periksa apakah penyerang membersihkan jejaknya
Dalam banyak kasus, penyerang tidak berpengalaman atau ceroboh dan tidak menghapus jejak mereka. Gunakan langkah-langkah berikut untuk memeriksa apakah penyerang telah meninggalkan petunjuk:
-
Verifikasi bahwa semua akun pengguna di
/etc/passwd
memiliki shell yang valid dengan menjalankan perintah berikut:cat /home/$USER/.bash_history
-
Ambil riwayat pengguna root dengan menjalankan perintah berikut:
sejarah
cat /root/.bash_history
Dalam contoh ini, output dari /root/.bash_history
perintah mengungkapkan bahwa penyerang melakukan tindakan berikut di server:
- Alat berbahaya yang diunduh untuk ditayangkan melalui Apache® di /var/www/html/* .
- Alat Obrolan Relay Internet (IRC) dan alat lainnya terpasang di/var/tmp/.ICE-unix .
- Modifikasi root crontab untuk mengunduh ulang alat berbahaya jika seseorang menghapusnya dari server (
* * * * * /var/tmp/.ICE-unix/update >/dev/null 2>&1
).
Periksa peretasan web dasar
Hingga saat ini, kami telah menentukan bahwa serangan tersebut mungkin merupakan peretasan web sederhana yang dapat Anda bersihkan dengan mudah tanpa memformat server.
Namun, dalam contoh ini, kita tahu bahwa penyerang memperoleh hak akses root. Mereka juga mungkin telah mengeksploitasi phpMyAdmin
. Setelah PHP Shell backdoor dimuat, penyerang dapat melakukan eksploitasi root lokal untuk meningkatkan hak istimewa mereka.
-
Jalankan perintah berikut untuk menemukan file dan direktori tersembunyi di direktori yang dapat dibaca di dunia tempat Apache biasanya menulis
tmp
file:ls -al /var/tmp |less
ls -al /tmp
ls -al /dev/shm
-
Dalam contoh ini, perintah mengembalikan output berikut:
drwx—— 3 70 70 4096 19 Nov 02:00 /var/tmp/.ICE-unix
-
Jika Anda menemukan item di sini, Anda harus mencoba melacak titik masuk sehingga Anda dapat menghapus situs, meningkatkan kode situs, atau memperbaiki kode yang dapat dieksploitasi. Langkah 5 menyajikan cara cepat untuk menyelesaikan tugas ini. Namun, jika output dari
ps -waux
perintah menunjukkan bahwa bot IRC sedang berjalan, maka Anda dapat mencoba menangkap dari mana proses itu berjalan dengan menggunakanlsof
perintah ataups -wauxxef |grep <pid>
.
Cari pengidentifikasi proses yang mendengarkan koneksi masuk
- Jalankan perintah berikut untuk mencari pengidentifikasi proses (PID) yang mendengarkan koneksi masuk:
-
netstat -natp
:Mencari koneksi mencurigakan yang berjalan di oddports -
ps -wauxxef
:Mencari file yang mencurigakan, sepertibash
berjalan di bawahwww
konteks -
lsof <pid>
:Membantu menentukan dari mana PID dijalankanOutputnya tampak seperti contoh berikut:
tcp 0 0 0.0.0.0:1144 0.0.0.0:* LISTEN 1008/bash tcp 0 1 172.16.23.13:60968 22.22.22.22:7000 SYN_SENT 6860/sshd
Dalam contoh ini, beberapa koneksi yang dibuat SSH lainnya juga berjalan dari port tingkat tinggi, seperti yang ditunjukkan pada contoh berikut:
[root@www tmp]# netstat -natp |grep sshd |awk '{print $4,$5,$6,$7}' 0.0.0.0:22 0.0.0.0:* LISTEN 1046/sshd 172.16.23.13:60986 22.22.22.22:6667 SYN_SENT 6860/sshd 123.123.123.123:22 22.22.22.22:59361 ESTABLISHED 22795/sshd 123.123.123.123:22 22.22.22.22:57434 ESTABLISHED 22796/sshd 123.123.123.123:57139 143.143.143.143:6667 ESTABLISHED 6860/sshd 123.123.123.123:57402 22.22.22.22:6667 ESTABLISHED 6860/sshd 123.123.123.123:22 143.143.143.143:49238 ESTABLISHED 8860/sshd 123.123.123.123:57134 22.22.22.22:6667 ESTABLISHED 6860/sshd 123.123.123.123:56845 22.22.22.22:6667 ESTABLISHED 6860/sshd 123.123.123.123:57127 143.143.143.143:6667 ESTABLISHED 6860/sshd
Keluaran ini menunjukkan bahwa penyerang masih terhubung ke mesin ini. Namun, Anda tidak dapat melihatnya karena mereka mungkin memodifikasi biner untuk menyembunyikan diri.
Tentukan titik masuk untuk kompromi awal
Gunakan langkah-langkah berikut untuk menentukan titik masuk untuk kompromi asli:
-
Periksa
/var/log/[messages|secure]
untuk upaya paksa SSH. -
Periksa log akses Apache dan log kesalahan. Langkah ini dapat membantu menentukan situs mana yang dapat dieksploitasi.
Anda juga harus melakukan referensi silang IP terhadap log jika menurut Anda ada kemungkinan bahwa itu berasal dari sana. Ini adalah cara cepat dan mudah untuk melacak titik asal.
Anda dapat dengan cepat memeriksa server yang memiliki banyak log web dengan menggunakan perintah berikut:
cd /var/log/httpd for i in `ls * |grep access`; do echo $i && grep wget $i; done for i in `ls * |grep access`; do echo $i && grep curl $i; done
Catatan :Contoh ini mencari
wget
karenawget
berada di historyfile root di bawah apa yang mungkin menjadi bagian dari titik masuk.
Hasil
Dalam contoh ini, penyelidikan kami mengungkapkan bahwa penyerang mengeksploitasi phpMyAdmin
instalasi di /var/www/html
direktori, kemungkinan besar karena versiphpMyAdmin
diinstal pada server sudah sangat usang. Menambal phpMyAdmin
pada jadwal yang teratur mencegah situasi ini terjadi.