GNU/Linux >> Belajar Linux >  >> Linux

Selidiki server yang disusupi

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.

  1. 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

  2. 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:

  1. Verifikasi bahwa semua akun pengguna di /etc/passwd memiliki shell yang valid dengan menjalankan perintah berikut:

    cat /home/$USER/.bash_history

  2. 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.

  1. 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

  2. Dalam contoh ini, perintah mengembalikan output berikut:

    drwx—— 3 70 70 4096 19 Nov 02:00 /var/tmp/.ICE-unix

  3. 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 menggunakan lsof perintah ataups -wauxxef |grep <pid> .

Cari pengidentifikasi proses yang mendengarkan koneksi masuk

  1. 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, seperti bash berjalan di bawah www konteks

  • lsof <pid> :Membantu menentukan dari mana PID dijalankan

    Outputnya 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:

  1. Periksa /var/log/[messages|secure] untuk upaya paksa SSH.

  2. 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 karena wget 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.


Linux
  1. Buat Server Cloud OnMetal

  2. Selidiki server Windows yang disusupi

  3. 17 Contoh Perintah hpacucli untuk Linux di Server HP

  1. Cara mengubah zona waktu di server RHEL7 Linux

  2. arsitektur server NTP

  3. Perintah Linux untuk menunggu server SSH aktif

  1. Statistik server CWP

  2. Cara Menginstal Lokasi di Server Fedora

  3. Periksa waktu aktif Server Windows