技术交流可以关注公众号 OneMoreThink 或公众号后台添加微信,欢迎提出宝贵建议。
目录
-
恶意程序排查
-
网络排查
-
进程排查
-
网络进程排查
-
所有进程排查
-
隐藏进程排查
-
进程资源排查
-
文件排查
-
时间文件排查
-
敏感目录排查
-
特权文件排查
-
后门排查
-
账号后门排查
-
SSH账户
-
SSH密钥
-
条件后门排查
-
计划任务
-
启动项
-
自启服务
-
命令别名
-
溯源排查
-
日志分析
-
系统日志
-
中间件日志
-
数据库日志
-
安全设备日志
-
流量分析
-
内存分析
-
溯源结论
-
后续待办
-
终止恶意进程
-
备份后删除恶意程序
-
修复漏洞和后门
1、恶意程序排查
1.1、网络排查
使用命令netstat -tunlap
发现ID是512
、名称是work32
的进程在连接大量公网IP的22端口(使用命令netstat -tunlap | grep ":22" | wc -l
发现有7000多个),应该是口令扫描。
使用命令netstat -tunlap | grep -v ":22" | grep work32
发现该进程还会连接公网IP的其它端口,以及监听本机的14747、8012、5060端口,应该是漏洞扫描和远程后门。
使用命令netstat -tunlap | grep -v ":22" | grep -v work32
确认没有其它恶意进程。
1.2、进程排查
1.2.1、网络进程排查
使用命令pstree -asp 512
排查恶意进程512,发现所有与之相关的父进程与子进程,后续需要全部终止。
使用命令ls -l /proc/512/exe /proc/512/cwd
发现恶意进程512的启动程序/usr/.work/work32
和启动目录/usr/.work/
,微步沙箱work32分析报告[1]确认该启动程序是恶意程序,后续需要备份后删除。
使用命令ls -la /usr/.work/
发现启动目录下的另一个可疑程序/usr/.work/work64
,微步沙箱work64分析报告[2] 确认该程序是恶意程序,后续需要备份后删除。
1.2.2、所有进程排查
使用命令pstree -asp
排查所有进程,通过进程名称和进程启动命令,发现可疑进程682等、677等、669等共三组。
使用命令ls -l /proc/682/exe /proc/682/cwd
发现可疑进程682的启动程序/usr/bin/bash
和启动目录/tmp/
,收获不大。
使用命令ps -ef | grep 682
发现可疑进程682的启动程序/tmp/auth.sh
,使用命令cat /tmp/auth.sh
发现是每分钟拉黑一次1个小时内登录失败超过8次的IP地址,因此无异常。
使用命令ls -l /proc/677/exe /proc/677/cwd
发现可疑进程677的启动程序/usr/bin/bash
和启动目录/tmp/
,收获不大。
使用命令ps -ef | grep 677
发现可疑进程677的启动程序/tmp/secure.sh
,使用命令cat /tmp/secure.sh
发现是每分钟拉黑一次1个小时内登录失败超过8次的IP地址,因此无异常。
使用命令ls -l /proc/669/exe /proc/669/cwd
发现恶意进程669的启动程序/tmp/xmr
,微步沙箱xmr分析报告[3]确认该启动程序是恶意程序,后续需要备份后删除。
1.2.3、隐藏进程排查
使用命令ps -ef | awk '{print}' | sort | uniq > 1
、ps -ef | awk '{print}' | sort | uniq > 2
、diff 1 2
排查隐藏进程,没有收获。
1.2.4、进程资源排查
使用命令top
排查所有进程消耗资源的情况,发现除了已知的恶意进程work32把CPU干到了150%之外,没有新的收获。
1.3、文件排查
1.3.1、时间文件排查
使用命令stat 文件路径
查看恶意程序的落地时间,发现全部都是2024-01-22 11:50
。
使用命令find / -newerct '2024-01-22 10:50:00' ! -newerct '2024-01-22 14:50:00' ! -path '/proc/*' ! -path /'sys/*' ! -path '/run/*' -type f -exec ls -lctr --full-time {} + 2>/dev/null
排查恶意程序落地前后相继落地的其它文件,发现一些可疑文件。
01、/usr/.work/work32
是1.2.1网络进程排查
发现的恶意程序。
02、/tmp/config.json
是xmr矿池的配置文件,内有矿池url和user等信息。后续需要备份后删除该文件,并封堵对矿池域名xmr.crypto-pool.fr
的访问请求(若有访问请求,还需排查请求源是否挖矿)。
03、/tmp/xmr
是1.2.2所有进程排查
发现的恶意程序。
04、/root/.ssh/authorized_keys
是攻击者创建的SSH公钥文件,后续需要备份后删除。
05、/var/spool/cron/root
攻击者创建了每小时执行一次恶意程序/usr/.work/work32
的计划任务,后续需要删除该计划任务、删除该恶意程序。
06、/etc/rc.d/rc.local
攻击者创建了执行恶意程序/usr/.work/work32&
的开机自启服务,后续需要删除该自启服务、删除该恶意程序。
07、/etc/crontab
攻击者创建了每小时执行一次恶意程序/usr/.work/work32
的计划任务,后续需删除该计划任务、删除该恶意程序。
08、/usr/.work/work64
是1.2.1网络进程排查
发现的恶意程序。
09、可疑但正常的文件
/usr/bin/wget1:文件落地时间与恶意程序落地时间一致可能是攻击者上传的,Modify的毫秒是0可能被攻击者修改过(详情点击:应急响应中的文件时间:mtime、atime、ctime)。但微步沙箱wget1分析报告[4]未发现异常,对系统无影响,需询问系统管理员或进行逆向分析判断是否保留。
/usr/bin/curl1:文件落地时间与恶意程序落地时间一致可能是攻击者上传的,Modify的毫秒是0可能被攻击者修改过。但微步沙箱curl1分析报告[5]未发现异常,对系统无影响,需询问系统管理员或进行逆向分析判断是否保留。
/tmp/secure.sh:文件落地时间与恶意程序落地时间一致可能是攻击者上传的。但脚本内容是每分钟拉黑一次1个小时内登录失败超过8次的IP地址,对系统无影响。需询问系统管理员判断是否保留。
/tmp/auth.sh:文件落地时间与恶意程序落地时间一致可能是攻击者上传的。但脚本内容是每分钟拉黑一次1个小时内登录失败超过8次的IP地址,对系统无影响。需询问系统管理员判断是否保留。
1.3.2、敏感目录排查
使用命令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.3.3、特权文件排查
使用命令find / -perm -u=s 2 -type f -ls >/dev/null
命令排查特权文件,未发现可疑文件。
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.3.1.4
分析过,普通用户未发现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-22 11:50:32被攻击者篡改,已在1.3.1.5进行分析,已被删除因此没有显示。
使用命令find /etc/*cron* -type f -exec ls -lctr --full-time {} + 2>/dev/null
排查计划任务,发现/etc/crontab
文件于2024-01-22 11:50:32被攻击者篡改,已在1.3.1.7进行分析,已被修改。
2.2.2、启动项
使用命令find /etc/rc.d/ -type f -exec ls -lctr --full-time {} + 2>/dev/null
排查启动项,发现/etc/rc.d/rc.local
文件于2024-01-22 11:50:32被攻击者篡改,已在1.3.1.6进行分析,已修改。
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
排查可以配置命令别名的配置文件,发现最新的ctime都是服务器创建时候的,未发现异常。
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。
微步情报确认85.209.11.254是俄罗斯的恶意IP。使用命令cat /var/log/secure* | grep 8.219.176.16 | grep Failed | wc -l
发现只有1次登录失败记录,看来root密码太弱了。
使用命令cat /var/log/secure* | grep 85.209.11.254
查看登录时间,与本次攻击时间不吻合,可能与本次挖矿事件无关,只是单纯的口令扫描。
微步情报确认222.186.16.214是北京的恶意IP。使用命令cat /var/log/secure* | grep 222.186.16.214 | grep Failed | wc -l
发现有4次登录失败记录,看来root密码太弱了。
使用命令cat /var/log/secure* | grep 222.186.16.214
查看登录时间,与本次攻击时间不吻合,可能与本次挖矿事件无关,只是单纯的口令扫描。
微步情报确认143.198.98.252是美国的境外IP。使用命令cat /var/log/secure* | grep 143.198.98.252 | grep Failed | wc -l
未发现登录失败记录,对方这密码本太强大了。
使用命令cat /var/log/secure* | grep 143.198.98.252
查看登录时间,与本次攻击时间完全吻合,是本次挖矿事件的始作俑者。
微步情报确认141.98.11.11是立陶宛的恶意IP。使用命令cat /var/log/secure* | grep 141.98.11.11 | grep Failed | wc -l
未发现登录失败记录,对方这密码本太强大了。
使用命令cat /var/log/secure* | grep 141.98.11.11
查看登录时间,与本次攻击时间不吻合,可能与本次挖矿事件无关,只是单纯的口令扫描。
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-22 11:50:27
来自美国的攻击源IP地址143.198.98.252登录SSH服务的root账号,没有登录失败记录,只有一次成功登录记录。
02、2024-01-22 11:50:31至34
4秒后,攻击者上传并执行恶意程序/usr/.work/work32
、/usr/.work/work64
、/tmp/xmr
(配置文件/tmp/config.json
),修改后门配置/root/.ssh/authorized_keys
、/var/spool/cron/root
、/etc/rc.d/rc.local
、/etc/crontab
。整个过程持续3秒。
03、2024-01-22 11:50:33至39
5秒钟后,攻击者上传的恶意程序均被腾讯云镜主机安全检测到并告警,不知是这个样本太菜,还是腾讯云镜太强,反正上次记一个真实的应急响应案例(2)挖矿病毒事件的阿里云盾用了10分钟。
4、后续待办
4.1、终止恶意进程
序号 |
待办 |
原因 |
方法 |
1 |
终止恶意进程work32 |
连接大量公网IP的22端口(口令扫描)、连接公网IP的其它端口(漏洞扫描)、监听本机的端口(远程后门)。 |
kill -9 512 kill -9 513 kill -9 514 kill -9 515 kill -9 518 kill -9 729 kill -9 730 kill -9 783 kill -9 802 kill-9 22402 |
2 |
终止恶意进程xmr |
挖矿。 |
kill -9 669 kill -9 671 kill -9 672 kill -9 673 kill -9 674 kill -9 675 |
4.2、备份后删除恶意程序
序号 |
待办 |
原因 |
方法 |
1 |
备份后删除/usr/.work/work32 |
连接大量公网IP的22端口(口令扫描)、连接公网IP的其它端口(漏洞扫描)、监听本机的端口(远程后门)。 |
scp [email protected]:/usr/.work/work32 ./ rm -rf /usr/.work/work32 |
2 |
备份后删除/usr/.work/work64 |
同上。 |
同上。 |
3 |
备份后删除/tmp/xmr |
挖矿。 |
同上。 |
4 |
备份后删除/tmp/config.json |
挖矿程序的配置文件。 |
同上。 |
4.3、修复漏洞和后门
序号 |
待办 |
原因 |
方法 |
1 |
修改root用户密码 |
弱口令漏洞被攻击者获取服务器权限 |
passwd root |
2 |
备份后删除/root/.ssh/a1uthorized_keys |
攻击者的后门SSH密钥 |
scp [email protected]:/root/.ssh/authorized_keys ./ rm -rf /root/.ssh/authorized_keys |
3 |
备份后删除/etc/crontab |
攻击者的后门定时任务 |
同上。 |
4 |
备份后修改/var/spool/cron/root |
攻击者的后门定时任务 |
1、打开文件:vim /var/spool/cron/root 2、移动位置:上下箭头移动到恶意代码行 3、删除代码:输入dd删除恶意代码 4、退出文件::wq |
5 |
备份后修改/etc/rc.d/rc.local |
攻击者的后门启动项 |
同上。 |
参考资料
微步沙箱work32分析报告: https://s.threatbook.com/report/file/7f28b2791ad94a202eea5e4c91d47cdeadca4723723427af574519f8aedbf15e
[2]微步沙箱work64分析报告: https://s.threatbook.com/report/file/2d2239acd852e43952bcb14fcdc7485fd804b54df241c077750f5447b55354b7
[3]微步沙箱xmr分析报告: https://s.threatbook.com/report/file/86f0e4c7596a7ac30af4152ce86268b109c325f62a7cfe1be0dbc72de0d9279a
[4]微步沙箱wget1分析报告: https://s.threatbook.com/report/file/782bed6a835398f7bf31f03e5f27453c70ceaf73aa66b50d3638561d5f896bd2
[5]微步沙箱curl1分析报告: https://s.threatbook.com/report/file/bf5a41d753283e01ef2f7bbb79f45e04efa6c601afe32b493a8f30460c46fb14
原文始发于微信公众号(OneMoreThink):记一个真实的应急响应案例(3)XMR挖矿病毒事件
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论