데비안 8 VM 웹 서버에서 DDoS 바이러스 감염 (유닉스 서비스)


14

2 년 동안 ~ okeanos 서비스로 가상 머신에서 학생 팀을 위해 (완전히 업데이트 된) Wordpress를 유지합니다. 오늘 헬프 데스크는 내가 DDoS 공격을 수행하고 있다는 사실을 알았습니다. 그들이 기계를 멈추고 메일 시스템을 불태 웠을 때 나는 무슨 일이 있었는지 알아 내려고 노력했다.

먼저, 실행중인 ps -ej것을 체크 아웃 하기 위해 a 를 실행합니다.

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

bvxktwwnsb와 rguoywvrf에 주목하십시오.

그런 다음 ps aux서비스를 받기 위해 (다시 말하면) 꼬리를 내 렸습니다.

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     

항목 [-4 : -1]에 유의하십시오. 그런 다음 온라인에서 찾았 chkconfig --list으므로 실행하면 다음과 같이 나타납니다.

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

on나는 1에서 5까지 그러나 나는 그들을 돌렸다 off. 그런 다음 다시 시작하고 이름이 변경되었습니다. 그런 다음 located acdnfhruvx와이가 나타났습니다.

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

그중 하나의 내용 (모두 동일) : 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    

이것은 다시 시작한 후에 발견되었으므로 /bin/acdnfhruvx아무데도 없었습니다. 나중에 exes (ELF 형식)를 찾았습니다 /usr/bin(용감한 사람이 있으면 공유 할 수 있다고 생각합니다)

기계가 원점을 모르고 실행되는 것을 본 광범위한 명령 목록 (연속 ps -ejs 및 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은 무의미합니다. 항상 분기되어 파일을 제거 /etc/init.d/하고 /{usr/,}bin다시 시작한 후 새로운 (동일한) 버전의 실행 파일이 있기 때문에 무의미합니다. 이 모든 정보를 마친 후에 두 가지 질문이 있습니다. 감염된 방법을 알 수 있습니까? 이것을 제거 할 수 있습니까? 미리 감사드립니다!


서버가 손상된 경우 침입자가 로그 파일을 닥터 / 제거하는 것이 쉽지 않기 때문에 서버가 감염된 방법과 수행 된 작업을 파악하기가 매우 어렵습니다. 가장 좋은 방법은 다른 위치에 로그 파일을 오프 사이트에 저장하는 것입니다. 따라서 시스템이 손상된 경우 최소한 로그를 가져와 침입 할 수 있습니다. 궁극적으로 나는 감염되지 않은 깨끗한 시스템을 보장하는 유일한 방법으로 다시 설치해야한다고 생각합니다.

답변:


24

우리는 아마도 ssh brute force login을 통해 Suse에서 비슷한 감염을 겪었습니다 .

청소 단계는 다음과 같습니다.

  1. 파일을 확인하십시오 /etc/crontab. 아마도 3 분마다 바이러스에 감염 될 수 있습니다.

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

    이 줄을 삭제하십시오.

  2. 바이러스의 부모 프로세스를 식별하십시오. rguoywvrf당신에서 ps -ej. 다른 프로세스는 계속 생성되어 종료됩니다.
  3. 그만해, 죽이지 마 kill -STOP 1632
  4. ps -ej부모 만 살고 있는지 확인 하고 아이들은 빨리 죽어야합니다
  5. 이제 /usr/bin및 의 파일을 삭제할 수 있습니다 /etc/init.d. 그것은 또한 사용하는 바이러스의 변종이있다 /boot거나 /bin. ls -lt | head최근에 수정 한 파일을 찾는 데 사용하십시오 .
  6. 에서 스크립트를 확인하십시오 /etc/cron.hourly/cron.sh. 우리 서버에서에 다른 바이러스 사본을 호출했습니다 /lib/libgcc.so. 두 파일을 모두 삭제하십시오.
  7. 이제 rguoywvrf프로세스를 확실히 종료 할 수 있습니다 .

1
/etc/rc6.d/에 나쁜 스크립트가 있습니다, 그들은 K90 시작
mazgalici

1
DO가 find / -name "*rguoywvrf*"대체하는 다른 파일을 찾기 위해 rguoywvrf무엇이든 파일의 이름은 한
모하메드 하페즈을

1

3

질문에 대답하려면 :

  1. 필요한 예방 조치 (사이트 외부 시스템 로그, IDS, 로그 모니터링 등) 없이는 어떤 일이 발생했는지 알 수 없을 것입니다.
  2. 나는 Matt와 동의해야 할 것이다. 당신은 결코 믿을 수없는 기계를 가동시키기 위해 시간을 투자 할 것입니다. 제 생각에는 가장 좋은 해결책은 데이터를 사이트 밖으로 옮기고 기계를 다시 실행하는 것입니다.

물론 가치가있는 것은 이것이 내 의견 일뿐입니다. 그러나 기계를 다시 실행할 때 필요한 예방 조치를 취하고 나중에 더 잘 보호 할 수 있습니다.


1

이것은 DDOS 공격을 시작하고 포트 80에서 외부 서버에 수천 개의 연결을 생성하기 때문에 많은 문제를 발생시키는 위협이지만 의도적이든 아니든간에 라우터 / 방화벽이 없을 때까지 연결이 과부하되는 경향이 있습니다. DDOS 공격 규칙.

이제이 위협을 어떻게 제거 할 수 있습니까?

  1. 당신의 위협을 찾아 사용

센 토스 / 레드햇

ps -ely 

데비안

ps -ej

당신은 볼 것이다 :

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"는 당신의 목표입니다

  1. 그런 다음 단일 사용자 모드에서 Linux 서버를 부팅해야하며 다중 사용자 모드의 변경 사항은 무의미합니다. 일반적으로 다음 명령으로 전환 할 수 있습니다.

    telinit S

  2. 그 후 당신은 시작시 실행 파일을 삭제해야합니다

Centos / Redhat에서 절차는

단계 a)

cd /etc/init.d          
ll -tr 

마지막 명령은 파일을 역순으로 정렬하면 마지막에 다음과 같은 이름으로 마지막 1 또는 2 파일을 보게됩니다

acdnfhruvx
kmrkuwbrng
gqpjiestmf
bvxktwwnsb

당신은 내용을 볼 필요가

cat /etc/init.d/gqpjiestmf

일반적으로 이름이 같은 / bin 또는 / usr / sbin에있는 파일이 실행되는 것을 볼 수 있습니다

두 파일을 모두 삭제해야합니다.

단계 b)

cd /etc/
ll -tr 

crontab 파일이 최근에 변경되었는지 확인하고 내용을보고 줄을 검색하십시오.

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

또는

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

파일을 편집하고 해당 줄을 제거해야합니다.

udev.sh또는 의 내용을 확인하면 crontab.sh다음과 같은 것을 볼 수 있습니다

#!/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

"libgcc4.4.so"파일 또는 언급 된 다른 파일을 제거해야합니다 (예 : 권한 변경도 작동 함 chmod a-x libgcc.so).

서버를 재부팅하면 모든 것이 정상입니다.

데비안 / 우분투 및 친척의 경우 :

locate bvxktwwnsb

/ etc 및 / bin에있는 파일을 삭제하십시오.

이것이 많은 사람들을 돕기를 바랍니다.


올바른 형식으로 표시되지 않아 답변을 읽기 어려울 수 있습니다. 도움말이 필요한 경우 도움말 센터 에 게시물 형식을 올바르게 지정하는 방법에 대한 자세한 정보가 있습니다.
bwDraco

0

뭔가 찾았어요 !!!

/ etc / crontab을 찾으십시오

내 서버에는 3 분마다 무언가를 실행하기위한 cronjob이 있습니다.

*/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

내 해결책 :

  1. /etc/init.d/ {/ usr} / bin / /lib/libgcc.so에 대한 권한 비활성화 (rwx 000)
  2. / etc / crontab에서 cronjob 항목 제거
  3. /etc/cron.hourly/cron.sh에서 cron 스크립트를 제거하십시오.
  4. 서버를 다시 시작

참고 : 파일 위치는 다를 수 있습니다


0

Serhii 솔루션을 보완하는 추가 트릭. 네트워크와 CPU를 스팸으로 처리하므로 모든 프로세스를 중지하기가 어려울 수 있습니다. 따라서 /etc/crontab모든 불쾌한 프로세스를 자동으로 중지 하려면이 행을 추가하십시오 (3 분마다 이름에 10 개의 문자가있는 모든 프로세스를 중지).

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

정리 후 프로세스가 다시 시작되지 않도록하는 것이 좋습니다. 상자가 깨끗해질 때까지 잠시 동안 실행하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.