背景
一哥们反应自己的测试机器总是关机,联系云主机客服得知服务器总是大量发包,导致技术关停该机器。
排查过程
Last查看登录记录
查找到一个可疑IP
[root@i-9kp9tipm dpkgd]# grep "1.180.212.21" /var/log/secure*
/var/log/secure-20170409:Apr 4 22:20:43 i-9kp9tipm sshd[25921]: Accepted password for root from 1.180.212.21 port 5777 ssh2
/var/log/secure-20170409:Apr 4 23:21:16 i-9kp9tipm sshd[29214]: Accepted password for root from 1.180.212.21 port 50625 ssh2
/var/log/secure-20170409:Apr 5 00:13:12 i-9kp9tipm sshd[31509]: Accepted password for root from 1.180.212.21 port 12305 ssh2
/var/log/secure-20170409:Apr 5 00:24:56 i-9kp9tipm sshd[32029]: Accepted password for root from 1.180.212.21 port 12334 ssh2
查看所有登录成功的记录
确认后得知119.254.100.106和124.207.112.10为正常IP,但是这哥们的Root密码也算是复杂。
既然Root被拿了,那么看一下常用命令呢
发现ps和netstat被替换
发现ss被替换
发现2进制程序pythno和.sshd,并且在bsd-port下也有两个可执行程序
在dpkgd目录下发现替换之前的命令
看一下.sshd文件的时间点。
用Strings查看一下
发现里面有很多IP地址。
查看下当前的连接:
发现了3个可以进程1742、1677、1683
看一下这些可执行程序在什么地方
发现这个ps看不到1742,然后我从自己主机上拷贝了一个ps过来,再执行下
这三个2进制程序
然后哥们反馈的是开机就会大量发包,来看下crontab,没有异常。查看rc.local没有异常。查看/etc/cron*没有异常。检查/etc/init.d的时候发现
/tmp下发现DDOS客户端文件
检查history没有发现操作记录。
检查mysql,发现密码简单123456,启动权限为mysql,plugin目录没有写入权限。
history中看到哥们之前有安装redis,且redis.conf中没有配置pass,检查/root/.ssh下没有发现异常,查看redis键未发现异常。
中间件是tomcat,发现/manager/html,没有账户。
项目为java项目,用到了struts2,检查struts2的版本
查看access log
没有发现异常
处理方式
1)加强SSH和Mysql密码,SSH限制IP访问,redis后期如果使用需配置认证。如无需对外提供服务,仅监听本地。
2)升级struts2到2.3.32版本
3)杀死进程
4)删除木马文件,拷贝正常命令
5)删除开机启动项
6)重启