Infeksi Virus DDoS (sebagai layanan unix) pada server Web Debian 8 VM

14

Saya mempertahankan (sepenuhnya diperbarui) Wordpress untuk tim siswa di Mesin Virtual pada layanan ~ okeanos selama beberapa tahun. Hari ini, helpdesk memberi tahu saya bahwa saya sedang melakukan serangan DDoS, yang - tentu saja - saya tidak (layanan ini menghubungkan kredensial akademik saya ..). Setelah mereka menangguhkan mesin dan saya menyalakan sistem pengiriman surat mereka, saya mencoba mencari tahu apa yang terjadi.

Pertama-tama, saya menjalankan ps -ejcheckout apa yang sedang berjalan:

root@snf-25181:~# ps -ej
1545 1545 1545 ? 00:00:00 console-kit-dae
1618 1057 1057 ? 00:00:00 gdm-session-wor
1632 1632 1632 ? 00:01:40 rghuoywvrf
1767 1767 1767 ? 00:00:00 sshd
1769 1769 1769 ? 00:00:00 systemd
1770 1769 1769 ? 00:00:00 (sd-pam)
1775 1767 1767 ? 00:00:00 sshd
1776 1776 1776 pts/0 00:00:00 bash
1849 1849 1776 pts/0 00:00:00 su
1870 1870 1776 pts/0 00:00:00 bash
2246 0 0 ? 00:00:00 kworker/0:0
2797 839 839 ? 00:00:00 apache2
3158 3158 3158 ? 00:00:00 bvxktwwnsb
3162 3162 3162 ? 00:00:00 bvxktwwnsb
3163 3163 3163 ? 00:00:00 bvxktwwnsb
3164 3164 3164 ? 00:00:00 bvxktwwnsb
3165 3165 1776 pts/0 00:00:00 ps

Perhatikan bvxktwwnsb dan rguoywvrf

Kemudian saya melakukan ps auxuntuk mendapatkan layanan (sekali lagi, ekor):

Debian-+  1629  0.0  0.0 178300  4444 ?        Sl   16:53   0:00 /usr/lib/dconf/dconf-service
root      1667  0.0  0.0  30744  4436 ?        Ss   16:53   0:00 /sbin/wpa_supplicant -u -s -O /run/wpa_supplicant
root      1670  0.0  0.1 299588  9884 ?        Ssl  16:53   0:00 /usr/lib/packagekit/packagekitd
root      1674  0.0  0.1 1055004 6168 ?        Ssl  16:53   0:00 /usr/sbin/console-kit-daemon --no-daemon
www-data  1923  0.0  0.1 240964  8112 ?        S    16:53   0:00 /usr/sbin/apache2 -k start
pankgeo+  5656  0.0  0.0  27416  3424 ?        Ss   17:03   0:00 /lib/systemd/systemd --user
pankgeo+  5657  0.0  0.0 143108  2408 ?        S    17:03   0:00 (sd-pam)   
root      5893  0.0  0.1 102420  6428 ?        Ss   17:04   0:00 sshd: pankgeorg [priv]
pankgeo+  5904  0.1  0.0 102560  4128 ?        S    17:04   0:02 sshd: pankgeorg@pts/0
pankgeo+  5905  0.2  0.1  16816  6388 pts/0    Ss+  17:04   0:04 -bash      
root      7443  0.0  0.1 102420  6496 ?        Ss   17:07   0:00 sshd: pankgeorg [priv]
pankgeo+  7448  0.0  0.0 102552  4160 ?        S    17:07   0:00 sshd: pankgeorg@pts/1
pankgeo+  7449  0.0  0.1  16468  6228 pts/1    Ss+  17:07   0:01 -bash      
root     17351  0.0  0.0      0     0 ?        S    17:15   0:00 [kworker/0:0]
root     18446  0.0  0.0      0     0 ?        S    17:18   0:00 [kworker/0:2]
root     18488  0.1  0.0      0     0 ?        S    17:18   0:01 [kworker/1:1]
root     22680  1.5  0.0      0     0 ?        S    17:28   0:08 [kworker/1:0]
root     24173  0.0  0.1 102420  6416 ?        Ss   17:31   0:00 sshd: pankgeorg [priv]
pankgeo+ 24181  0.3  0.0 102420  3360 ?        S    17:31   0:01 sshd: pankgeorg@pts/2
pankgeo+ 24182  0.0  0.0  16480  6112 pts/2    Ss   17:31   0:00 -bash      
root     25316  2.3  0.0      0     0 ?        S    17:33   0:06 [kworker/1:2]
root     26777  0.0  0.0      0     0 ?        S    17:35   0:00 [kworker/0:1]
root     26778  0.0  0.0      0     0 ?        S    17:35   0:00 [kworker/0:3]
root     27300  0.0  0.0   1424  1040 ?        Ss   17:38   0:00 cat resolv.conf  #note                        
root     27306  0.0  0.0   1424  1036 ?        Ss   17:38   0:00 gnome-terminal   #from                     
root     27307  0.0  0.0   1424  1036 ?        Ss   17:38   0:00 ifconfig eth0    #here                    
root     27308  0.0  0.0   1424  1040 ?        Ss   17:38   0:00 id               #(DDOS?)         
root     27309  0.0  0.0   1424  1040 ?        Ss   17:38   0:00 ifconfig                        
pankgeo+ 27315  0.0  0.0  11136  2044 pts/2    R+   17:38   0:00 ps aux     

Perhatikan item [-4: -1]. Lalu saya temukan online tentang chkconfig --listjadi saya jalankan itu dan ini muncul:

root@snf-25181:/home/pankgeorg# chkconfig --list
acdnfhruvx 0:off 1:off 2:off 3:off 4:off 5:off 6:off
flyymwddwn 0:off 1:off 2:off 3:off 4:off 5:off 6:off

1 sampai 5 di mana ontetapi saya mengubahnya off. Kemudian saya memulai kembali dan telah berganti nama. Lalu aku located yang acdnfhruvxdan ini muncul keluar:

root@snf-25181:~# locate acdnfhruvx
/etc/init.d/acdnfhruvx
/etc/rc1.d/S01acdnfhruvx
/etc/rc2.d/S01acdnfhruvx
/etc/rc3.d/S01acdnfhruvx
/etc/rc4.d/S01acdnfhruvx
/etc/rc5.d/S01acdnfhruvx

Isi salah satunya (semuanya sama): root @ snf-25181: ~ # cat /etc/init.d/acdnfhruvx #! / Bin / sh

chkconfig: 12345 90 90
description: acdnfhruvx
BEGIN INIT INFO
Provides: acdnfhruvx
Required-Start:
Required-Stop:
Default-Start: 1 2 3 4 5
Default-Stop:
Short-Description: acdnfhruvx
END INIT INFO
case $1 in
start)
/bin/acdnfhruvx
;;
stop)
;;
*)
/bin/acdnfhruvx   
;;
esac    

Ini ditemukan setelah restart, jadi /bin/acdnfhruvxtidak ada tempat. Kemudian saya menemukan ongkos (ELF diformat) di /usr/bin(saya pikir saya bisa membagikannya jika ada pria pemberani di antara Anda)

Daftar lengkap dari perintah saya melihat mesin mengeksekusi tanpa mengetahui asal (dari berturut-turut ps -ejdan ps auxes:

root     27755  0.0  0.0   1424  1036 ?        Ss   17:40   0:00 ifconfig                        
root     27759  0.0  0.0   1424  1036 ?        Ss   17:40   0:00 who                        
root     27760  0.0  0.0   1424  1040 ?        Ss   17:40   0:00 echo "find"                        
root     27761  0.0  0.0   1424  1036 ?        Ss   17:40   0:00 top                        
root     27762  0.0  0.0   1424  1036 ?        Ss   17:40   0:00 id                        
root     27805  0.0  0.0   1424  1036 ?        Ss   17:40   0:00 gnome-terminal                        
root     27809  0.0  0.0   1424  1040 ?        Ss   17:40   0:00 ifconfig                        
root     27810  0.0  0.0   1424  1044 ?        Ss   17:40   0:00 sh                        
root     27811  0.0  0.0   1424  1040 ?        Ss   17:40   0:00 sleep 1                        
root     27822  0.0  0.0   1424  1040 ?        Ss   17:40   0:00 netstat -an                        
root     27826  0.0  0.0   1424  1036 ?        Ss   17:40   0:00 top                        
root     27829  0.0  0.0   1424  1040 ?        Ss   17:40   0:00 bash                        
root     27833  0.0  0.0   1424  1040 ?        Ss   17:40   0:00 cd /etc                        
root     27834  0.0  0.0   1424  1040 ?        Ss   17:40   0:00 whoami                        
root     27822  0.0  0.0   1424  1040 ?        Ss   17:40   0:00 netstat -an                        
root     27826  0.0  0.0   1424  1036 ?        Ss   17:40   0:00 top                        
root     27829  0.0  0.0   1424  1040 ?        Ss   17:40   0:00 bash                        
root     27833  0.0  0.0   1424  1040 ?        Ss   17:40   0:00 cd /etc                        
root     27834  0.0  0.0   1424  1040 ?        Ss   17:40   0:00 whoami                        

pkilling tidak ada gunanya, karena selalu bercabang, menghapus file dari /etc/init.d/dan /{usr/,}binjuga tidak ada gunanya karena setelah restart ada versi baru (identik) dari executable. Setelah semua info ini, saya punya dua pertanyaan: Dapatkah saya mencari tahu BAGAIMANA saya terinfeksi? Bisakah saya menyingkirkan ini? Terima kasih sebelumnya!

pankgeorg
sumber
Jika server Anda telah dikompromikan maka akan sangat sulit untuk mengetahui bagaimana itu terinfeksi dan apa yang telah dilakukan, karena itu sepele bagi pengganggu untuk dokter / menghapus file log. Praktik terbaik adalah memiliki penyimpanan file log di luar lokasi di lokasi lain, jadi jika mesin Anda dikompromikan, Anda setidaknya memiliki log yang mengarah ke pembobolan. Pada akhirnya saya pikir Anda perlu menginstal ulang - satu-satunya cara untuk memastikan sistem bersih tidak terinfeksi.

Jawaban:

24

Kami menderita infeksi serupa di Suse, mungkin melalui ssh brute force login .

Langkah-langkah untuk membersihkan adalah:

  1. Periksa file /etc/crontab. Anda mungkin memiliki entri untuk memanggil virus setiap 3 menit

    */3 * * * * root /etc/cron.hourly/cron.sh
    

    Hapus baris ini.

  2. Identifikasi proses induk virus. The rguoywvrfdi Anda ps -ej. Proses lainnya dibuat dan dibunuh terus menerus.
  3. Hentikan, jangan bunuh, dengan kill -STOP 1632
  4. Periksa dengan yang lain ps -ejbahwa hanya orang tua yang hidup, anak-anak harus mati dengan cepat
  5. Sekarang Anda dapat menghapus file di /usr/bindan /etc/init.d. Ada varian virus yang juga menggunakan /bootatau /bin. Gunakan ls -lt | headuntuk mencari file yang telah dimodifikasi baru-baru ini.
  6. Periksa skrip di /etc/cron.hourly/cron.sh. Di server kami ia memanggil salinan virus yang lain /lib/libgcc.so. Hapus kedua file.
  7. Sekarang Anda dapat membunuh rguoywvrfprosesnya.
Serxipc
sumber
1
ada beberapa skrip buruk di /etc/rc6.d/, mereka mulai dengan K90
mazgalici
1
lakukan find / -name "*rguoywvrf*"untuk menemukan file lain, ganti rguoywvrfdengan apa pun nama file Anda
Mohamed Hafez
1
Periksa tautan ini: garasiku.web.id/web/joomla/index.php/security/…
DarckBlezzer
3

Untuk menjawab pertanyaan Anda:

  1. Tanpa tindakan pencegahan yang diperlukan (di luar syslog, IDS, pemantauan log, dll.) Anda mungkin tidak akan pernah tahu apa yang terjadi.
  2. Saya harus setuju dengan Matt. Anda akan menginvestasikan waktu untuk menjalankan mesin yang tidak akan pernah Anda percayai. Menurut pendapat saya, solusi terbaik adalah memindahkan data dari situs & mengulang mesin.

Tentu saja, untuk apa nilainya, ini hanya pendapat saya. Padahal, ketika mengulang mesin, Anda tentu saja dapat mengambil tindakan pencegahan yang diperlukan & melindungi diri Anda lebih baik di masa depan.

Eamonn Travers
sumber
1

ini ancaman yang menghasilkan banyak masalah karena meluncurkan serangan DDOS dan menghasilkan ribuan koneksi ke server eksternal pada port 80, tetapi saya tidak melakukannya jika disengaja atau tidak, itu cenderung membebani koneksi Anda sampai router / firewall membeku jika tidak ada Aturan serangan DDOS.

sekarang, bagaimana Anda bisa menghilangkan ancaman ini?

  1. temukan ancamanmu, gunakan

Centos / redhat

ps -ely 

Debian

ps -ej

kamu akan lihat:

3158 3158 3158 ? 00:00:00 bvxktwwnsb
3162 3162 3162 ? 00:00:00 bvxktwwnsb
3163 3163 3163 ? 00:00:00 bvxktwwnsb
3164 3164 3164 ? 00:00:00 bvxktwwnsb

" bvxktwwnsb" adalah target Anda

  1. maka Anda perlu mem-boot server linux Anda pada mode pengguna tunggal, membuat perubahan dalam mode multiuser tidak ada gunanya, biasanya Anda dapat beralih dengan perintah berikut:

    telinit S

  2. setelah itu Anda perlu menghapus file yang berjalan saat startup

di Centos / Redhat prosedurnya

Langkah a)

cd /etc/init.d          
ll -tr 

perintah terakhir memerintahkan file Anda di tanggal mundur, Anda akan melihat 1 atau 2 file terakhir di akhir dengan nama seperti

acdnfhruvx
kmrkuwbrng
gqpjiestmf
bvxktwwnsb

Anda perlu melihat kontennya

cat /etc/init.d/gqpjiestmf

biasanya Anda akan melihat eksekusi file yang terletak di / bin atau / usr / sbin dengan nama yang sama

Anda perlu menghapus kedua file.

Langkah b)

cd /etc/
ll -tr 

periksa apakah file crontab Anda baru-baru ini diubah, lihat isinya, cari baris

*/3 * * * * root /etc/cron.hourly/udev.sh

atau

*/3 * * * * root /etc/cron.hourly/crontab.sh 

Anda perlu mengedit file dan menghapus baris itu.

periksa konten udev.shatau crontab.shdan Anda akan melihat sesuatu seperti ini

#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin
cp /lib/libgcc4.so /lib/libgcc4.4.so
/lib/libgcc4.4.so

Anda perlu menghapus file "libgcc4.4.so" atau lainnya yang disebutkan di sana (misalnya, mengubah izin juga akan berfungsi, chmod a-x libgcc.so)

reboot server Anda dan semuanya akan beres.

Untuk debian / ubuntu dan kerabat gunakan:

locate bvxktwwnsb

dan hapus file yang ditemukan di / etc dan / bin

semoga ini membantu banyak orang.

Jorge Arenas
sumber
Jawaban Anda mungkin sulit dibaca karena tampaknya tidak diformat dengan benar. Jika Anda memerlukan bantuan, pusat bantuan memiliki informasi lebih lanjut tentang memformat posting dengan benar.
bwDraco
0

Aku menemukan sesuatu!!!

cari / etc / crontab

Di server saya, ada cronjob setiap 3 menit untuk mengeksekusi sesuatu:

*/3 * * * * root /etc/cron.hourly/cron.sh

cat cron.sh

#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin
for i in `cat /proc/net/dev|grep :|awk -F: {'print $1'}`; do ifconfig $i up& done
cp /lib/libgcc.so /lib/libgcc.so.bak
/lib/libgcc.so.bak

Solusi saya:

  1. nonaktifkan izin (rwx 000) untuk: /etc/init.d/ {/ usr} / bin / /lib/libgcc.so
  2. hapus entri cronjob di / etc / crontab
  3. hapus skrip cron di /etc/cron.hourly/cron.sh
  4. restart server

catatan: lokasi file dapat bervariasi

Andi Bobinsky
sumber
0

Trik tambahan tambahan untuk solusi Serhii. Menghentikan semua proses bisa jadi sulit karena hal ini mem-spam jaringan dan cpu. Karena itu tambahkan baris ini ke Anda /etc/crontabuntuk secara otomatis BERHENTI semua proses buruk (hentikan semua proses dengan 10 karakter dalam nama setiap tiga menit):

*/3 * * * * root pstree -ap | grep -E -- '-[a-z]{10},' | cut -d, -f2 | xargs kill -STOP 2>/dev/null

Ini adalah hal yang baik untuk dilakukan setelah pembersihan untuk memastikan proses tidak kembali. Jalankan sebentar sampai Anda yakin kotak Anda bersih.

lzap
sumber