技术交流可以关注公众号 OneMoreThink 或后台添加微信,欢迎提出宝贵建议。
-
恶意程序排查
-
文件排查
-
告警文件排查
-
时间文件排查
-
敏感目录排查
-
特权文件排查
-
网络排查
-
进程排查
-
网络进程排查
-
所有进程排查
-
隐藏进程排查
-
进程资源排查
-
后门排查
-
账号后门排查
-
SSH账户
-
SSH密钥
-
条件后门排查
-
计划任务
-
启动项
-
自启服务
-
命令别名
-
溯源排查
-
日志分析
-
系统日志
-
中间件日志
-
数据库日志
-
安全设备日志
-
流量分析
-
内存分析
-
溯源结论
-
后续待办
-
终止恶意进程
-
备份后删除恶意程序
-
修复漏洞和后门
-
攻击回溯与防护
2024年01月24日08时13分,收到主机安全告警,立即上机开展排查。
1、恶意程序排查
1.1、文件排查
1.1.1、告警文件排查
01、文件
使用命令stat /usr/bin/dhpcd
和file /usr/bin/dhpcd
确认存在告警中的恶意文件/usr/bin/dhpcd
。
这个环节如果定位不到告警文件,可能是被恶意程序自身删除了,此时可以基于告警时间排查其他落地文件。如果还是没有,那可能要进行内存马查杀了。
使用微步沙箱进行交叉验证,dhpcd分析报告[1]的结论也是恶意样本,同时还是首次提交,看来中挖矿病毒这事咱也是敢为人先勇立潮头呀。
02、进程
使用命令lsof /usr/bin/dhpcd
发现该恶意文件正被ID是14213
的进程使用。
使用命令pstree -asp 14213
发现该进程的所有子进程,后续需要全部终止。
03、网络
使用命令netstat -tunlap | grep 14213
发现该恶意进程外联了93.240.52.232的3389端口和139.99.125.38的443端口,查询威胁情报,猜测分别是远控服务器和矿池服务器。
使用命令tcpdump -i eth0 (host 93.240.52.232 and port 3389) or (host 139.99.125.38 and port 443) -w dhpcd.pcap
捕获通信流量包,并下载到本地分析。
分析发现远控服务器93.240.52.232:3389每隔10秒会给受害服务器下发algo币
的挖矿任务,但由于矿池139.99.124.170:443没有响应,无法确认受害服务器的挖矿任务,因此受害服务器并未真正开始挖矿工作。
后续需要在边界防火墙封堵对恶意IP地址93.240.52.232和139.99.125.38的访问请求,并在流量侧安全设备中查询最近7日是否存在相关访问请求,若存在,还需排查请求源设备是否中了挖矿病毒。
1.1.2、时间文件排查
使用命令find / -newerct '2024-01-24 08:10:00' ! -newerct '2024-01-24 09:10:00' ! -path '/proc/*' ! -path /'sys/*' ! -path '/run/*' -type f -exec ls -lctr --full-time {} + 2>/dev/null
排查恶意程序落地前后相继落地的其它文件,发现一些可疑文件。
01、/etc/shadow
/etc/shadow中并未发现后门账号,攻击者应该只是修改了root用户的弱口令,让这台服务器更安全,可以避免其他挖矿和勒索病毒的攻击导致的自身挖矿进程被kill掉。看来,挖矿病毒的攻击者也饱受挖矿病毒攻击的困扰呀。因此后续需要修改root帐户的SSH密码。
02、/root/.ssh/authorized_keys
是攻击者创建的SSH后门公钥文件,用于登陆SSH服务,后续需要备份后删除。
03、/usr/bin/dhpcd
是1.1.1告警文件排查
发现的恶意程序。
04、/etc/rc.d/rc.local
攻击者创建了执行恶意程序/bin/dhpcd的开机自启服务,后续需要删除该自启服务、删除该恶意程序。
05、/var/spool/cron/root
攻击者创建了每小时的第7分钟执行一次恶意程序/bin/dhpcd的计划任务,后续需要删除该计划任务、删除该恶意程序。
06、可疑但正常的文件
/etc/crontab的ctime虽然与恶意程序/bin/dhpcd的落地时间相近,但文件本身并未发现异常内容,因此属于正常情况。
1.1.3、敏感目录排查
使用命令find /tmp ! -type d -exec ls -lctr --full-time {} + 2>/dev/null
排查临时目录,未发现新的可疑文件。
find $HOME ! -type d -exec ls -lctr --full-time {} + 2>/dev/null
命令排查家目录,未发现新的可疑文件。1.1.4、特权文件排查
使用命令find / -perm -u=s 2 -type f -ls >/dev/null
命令排查特权文件,未发现可疑文件。
1.2、网络排查
使用命令netstat -tunlap
除了发现1.1.1告警文件排查
分析过的dhpcd
进程外,还发现115.79.35.110
连接22端口。查询微步情况确认是恶意IP,使用命令cat /var/log/secure* | grep 115.79.35.110
发现只是暴力破解,并未登陆成功,因此可忽略。
1.3、进程排查
1.3.1、网络进程排查
网络排查环节并未发现新的恶意进程,所以该环节跳过。
1.2.2、所有进程排查
使用命令pstree -as
排查所有进程,通过进程名称和进程启动命令,并未发现其他可疑进程。
1.2.3、隐藏进程排查
使用命令ps -ef | awk '{print}' | sort | uniq > 1
、ps -ef | awk '{print}' | sort | uniq > 2
、diff 1 2
排查隐藏进程,除了已知的恶意进程/bin/dhpcd和SSH服务被爆破外,没有新的收获。
1.2.4、进程资源排查
使用命令top
排查所有进程消耗资源的情况,除了已知的恶意进程dhpcd把CPU干到了200%之外,没有新的收获。
2、后门排查
2.1、账号后门排查
2.1.1、SSH账户
使用命令cat /etc/passwd | grep -v 'nologin|false'
排查可以登录SSH的账户,发现只有root和lighthouse账户的/bin/bash可以登录,未发现异常。
使用命令cat /etc/passwd | awk -F: '$3==0 {print $1}'
排查UID是0的超级权限账户,发现只有root账户,未发现异常。
使用命令cat /etc/shadow | awk -F: 'length($2)>2 {print $1}'
排查有口令的SSH账户,发现只有root账户,未发现异常。
使用命令cat /etc/shadow | awk -F: 'length($2)==0 {print $1}'
排查空口令的SSH账户,未发现异常。
2.1.2、SSH密钥
特权用户的/root/.ssh/authorized_keys
文件已在1.1.2.2
分析过,普通用户未发现SSH密钥文件。
2.2、条件后门排查
2.2.1、计划任务
使用命令find /var/spool/cron/ -type f -exec ls -lctr --full-time {} + 2>/dev/null
排查计划任务,发现/var/spool/cron/root
文件于2024-01-24 08:14:16被攻击者篡改,已在1.1.2.5进行分析。
使用命令find /etc/*cron* -type f -exec ls -lctr --full-time {} + 2>/dev/null
排查计划任务,发现/etc/crontab
文件于2024-01-24 08:11:09被修改,但无异常,已在1.1.2.9进行分析。
2.2.2、启动项
使用命令find /etc/rc.d/ -type f -exec ls -lctr --full-time {} + 2>/dev/null
排查启动项,发现/etc/rc.d/rc.local
文件于2024-01-24 08:14:08被攻击者篡改,已在1.1.2.4进行分析。
2.2.3、自启服务
使用命令chkconfig --list
和service --status-all
命令排查自启服务,未发现异常。
2.2.4、命令别名
使用命令alias
排查命令别名,未发现异常。
使用命令find / -name *bashrc* -type f -exec ls -lctr --full-time {} + 2>/dev/null
排查可以配置命令别名的配置文件,未发现异常。
3、溯源排查
3.1、日志分析
3.1.1、系统日志
01、安全日志secure
使用命令cat /var/log/secure* | grep Accepted | awk '{print $11}' | sort | uniq -c | sort -nr
发现5个恶意的未知IP地址各成功登录过一次SSH。
微步情报确认222.186.16.196是北京的恶意IP。使用命令cat /var/log/secure* | grep 222.186.16.196 | grep Failed | wc -l
发现有4次登录失败记录,使用命令cat /var/log/secure* | grep 222.186.16.196 | grep Accepted | wc -l
发现有1次登陆成功记录,看来是爆破成功了。
使用命令cat /var/log/secure* | grep 222.186.16.196
查看登录时间,于2024-01-24 04:07:11开始爆破,6秒钟后爆破成功,但与本次挖矿事件的攻击时间不吻合,可能与本次挖矿事件无关。
微步情报确认222.186.16.186是北京的恶意IP。使用命令cat /var/log/secure* | grep 222.186.16.186 | grep Failed | wc -l
发现有4次登录失败记录,使用命令cat /var/log/secure* | grep 222.186.16.186 | grep Accepted | wc -l
发现有1次登陆成功记录,看来是爆破成功了。
使用命令cat /var/log/secure* | grep 222.186.16.186
查看登录时间,于2024-01-24 05:48:58开始爆破,6秒钟后爆破成功,但与本次挖矿事件的攻击时间不吻合,可能与本次挖矿事件无关。
微步情报确认222.103.98.36是韩国的IP。使用命令cat /var/log/secure* | grep 222.103.98.36 | grep Failed | wc -l
发现没有登录失败记录,使用命令cat /var/log/secure* | grep 222.103.98.36 | grep Accepted | wc -l
发现有1次登陆成功记录,看来是爆破成功了。
使用命令cat /var/log/secure* | grep 222.103.98.36
查看登录时间,于2024-01-24 08:10:27登陆成功,与本次挖矿事件的攻击时间吻合,是本次挖矿事件的始作俑者。
02、登录日志last系列
使用命令lastlog
查看用户最后登录系统的信息(/var/log/lastlog),使用命令w
查看用户正在登录系统的信息(/var/run/utmp),均未发现异常。
03、命令日志history
使用history(/root/.bash_history)命令查看历史命令,未发现攻击者使用过的命令。
3.1.2、中间件日志
没有运行中间件服务,不涉及中间件日志排查。
3.1.3、数据库日志
没有运行数据库服务,不涉及数据库日志排查。
3.1.4、安全设备日志
没有部署安全设备,不涉及安全产品日志排查。
3.2、流量分析
没有部署流量采集产品,不涉及流量排查。
3.3、内存分析
服务器在重置SSH密码时被重启过,内存已丢失,没有分析价值。
3.4、溯源结论
01、2024-01-24 08:10:27
来自韩国的攻击源IP地址222.103.98.36登录SSH服务的root账号,没有登录失败记录,只有一次成功登录记录。
02、2024-01-24 08:11:09至08:14:16
1分钟后,攻击者上传并执行恶意程序/usr/bin/dhpcd
,修改后门配置/etc/shadow
、/root/.ssh/authorized_keys
、/etc/rc.d/rc.local
、/var/spool/cron/root
,整个过程持续3分钟。
值得一提的是,/etc/crontab
文件的修改时间也在攻击者活动的时间窗口内,但确实未发现异常。
03、2024-01-24 08:13:21
恶意程序/usr/bin/dhpcd
于2024-01-24 08:13:19
被攻击者上传,2秒钟后的08:13:21
腾讯主机安全就完成了威胁检测与告警通知,不得不说这实力杠杠的。
4、后续待办
4.1、终止恶意进程
序号 |
待办 |
原因 |
方法 |
1 |
终止恶意进程dhpcd |
外联远控服务器93.240.52.232:3389获取algo币的挖矿任务,并进程挖矿,然后外联矿池服务器139.99.124.170:443提交挖矿成果。 |
kill -9 14213 kill -9 14214 kill -9 14215 kill -9 14216 kill -9 14217 kill -9 14218 kill -9 14855 kill -9 14856 |
4.2、备份后删除恶意程序
序号 |
待办 |
原因 |
方法 |
1 |
备份后删除/usr/bin/dhpcd |
外联远控服务器93.240.52.232:3389获取algo币的挖矿任务,并进程挖矿,然后外联矿池服务器139.99.124.170:443提交挖矿成果。 |
scp [email protected]:/usr/bin/dhpcd ./ rm -rf /usr/bin/dhpcd |
4.3、修复漏洞和后门
序号 |
待办 |
原因 |
方法 |
1 |
修改root用户密码 |
弱口令漏洞被攻击者获取服务器权限 |
passwd root |
2 |
备份后删除/root/.ssh/authorized_keys |
攻击者的后门SSH密钥 |
scp [email protected]:/root/.ssh/authorized_keys ./ rm -rf /root/.ssh/authorized_keys |
3 |
备份后修改/var/spool/cron/root |
攻击者的后门定时任务 |
1、打开文件:vim /var/spool/cron/root 2、移动位置:上下箭头移动到恶意代码行 3、删除代码:输入dd删除恶意代码 4、退出文件::wq |
4 |
备份后修改/etc/rc.d/rc.local |
攻击者的后门启动项 |
同上。 |
4.4、攻击回溯与防护
序号 |
待办 |
原因 |
方法 |
1 |
防护:在边界防火墙封堵对恶意IP地址93.240.52.232和139.99.125.38的访问请求。 |
93.240.52.232是外联远控服务器,139.99.125.38是矿池服务器。 |
查询边界防火墙的操作手册。 |
2 |
回溯:在流量侧安全设备中查询最近7日是否存在相关访问请求,若存在,还需排查请求源设备是否中了挖矿病毒。 |
同上。 |
查询流量侧安全设备的操作手册。 |
参考资料
dhpcd分析报告: https://s.threatbook.com/report/file/eca7a5e81277f043939f09d36c40acb4ade4be39020e25a1cc8f85e02404ca32
原文始发于微信公众号(OneMoreThink):记一个真实的应急响应案例(4)algo挖矿病毒事件
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论