登录服务器时,发现密码错误,无法登录。
打算登录云管平台重置密码,不小心看到安全告警,原来是中了挖矿病毒。
挖矿病毒的侵入性还是蛮大的,一般都会终止掉CPU占用超过20%的进程,以免计算资源不够挖矿,这常常导致正常业务被中断。
而改掉登录密码,一般是为了避免友商(其它挖矿病毒)通过口令爆破进来抢夺计算资源,这常常导致正常运维工作无法开展,也就是本文出现的情况。
重置密码竟然需要重启服务器,看来第一案发现场没了。
事实证明第一案发现场确实没了,这病毒太不抗造了,一个重启就一蹶不振。
整体排查思路
恶意程序排查
一、网络排查
使用netstat -tunlap命令,未发现网络异常,没有预期的外联矿池行为、异常进程名称。
二、进程排查
01、 网络进程排查
由于没有发现网络异常,因此不涉及网络相关进程排查。
02、告警进程排查
使用ps -ef | grep
03、所有进程排查
使用pstree -as命令查看所有进程的名称和启动进程的命令CMD,并未发现异常进程,没有预期的名称是随机字符或与系统进程相似的进程存在。
04、隐藏进程排查
使用ps -ef | awk '{print}' | sort | uniq > 1 && ps -ef | awk '{print}' | sort | uniq > 2 && diff 1 2命令排查隐藏进程,并未发现异常进程。
05、进程资源排查
使用top命令查看所有进程消耗资源的情况,并未发现异常进程,没有预期的CPU或MEM占用过高的进程。
三、文件排查
01、告警文件排查
使用stat
02、时间文件排查
使用find / -newerct命令排查告警详情提到的攻击发生时间,发现大量异常文件。
001、/tmp/2mOsaG3ceM文件于2023-11-30 08:24:58被攻击者创建,经文件沙箱检测是恶意程序,后续需备份后删除。
002、/etc/crontab文件于2023-11-30 08:25:01被攻击者篡改,添加了执行恶意程序的计划任务。后续需备份后删除计划任务/etc/crontab、备份后删除恶意程序/tmp/2mOsaG3ceM。
003、/var/spool/cron/root文件于2023-11-30 08:25:01被攻击者篡改,添加了执行恶意程序的计划任务。后续需备份后删除计划任务/var/spool/cron/root、备份后删除恶意程序/tmp/2mOsaG3ceM。
004、/root/.bash_logout文件于2023-11-30 08:25:01被攻击者篡改,植入了用户退出bash时执行恶意程序的自动任务。后续需备份后删除/root/.bash_logout、备份后删除恶意程序/tmp/2mOsaG3ceM。
005、/tmp/.opass文件于2023-11-30 08:24:58被攻击者创建,从文件名判断是密码本,一般用于解密恶意程序,后续需备份后删除。
006、/tmp/RgX48OS6BF文件于2023-11-30 10:36:40被攻击者改过,但从atime看2023-11-30 08:24:56就被创建,经文件沙箱检测是恶意程序,后续需备份后删除。
007、/root/.ssh/authorized_keys文件于2023-11-30 08:24:58被攻击者篡改,经与系统管理员(我自己)确认,该 SSH公钥是被攻击者添加的。后续需备份后删除/root/.ssh/authorized_keys。
008、/etc/ssh/sshd_config文件于2023-11-30 08:25:01被攻击者篡改,对比配置相同的其它正常服务器的sshd_config文件多了PubkeyAuthentication yes配置,是攻击者为了公钥登录而添加的。后续若无公钥登录需求,需删除该配置。
03、敏感目录排查
使用find /tmp ! -type d -exec ls -lctr --full-time {} + 2>/dev/null命令排查临时目录,未发现新的异常文件。
使用find $HOME ! -type d -exec ls -lctr --full-time {} + 2>/dev/null命令排查家目录,未发现新的异常文件。
04、特权文件排查
使用find / -perm 2000 2>/dev/null命令排查特权文件,未发现异常文件。
后门排查
一、账户后门排查
01、SSH账户
使用cat /etc/passwd | grep -v nologin$命令排查可以登录SSH的账户,发现只有root的/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、polkitd、chrony都有口令,经与系统管理员(我自己)确认,未启用过polkitd和chrony账户。
排查/etc/shadow的ctime,发现是云管平台重置SSH密码并重启服务器的时间。排查/etc/passwd,发现polkitd和chrony用户都无法登录。因此推断polkitd和chrony账户的SSH口令是云管平台配置的,与攻击行为无关。
使用cat /etc/shadow | awk -F: 'length($2)==0 {print $1,$2}'命令排查空口令的SSH账户,未发现异常账户。
02、SSH密钥
/root/.ssh/authorized_keys文件已在“恶意程序排查 – 文件排查”时分析过,这里不再分析。
二、条件后门排查
01、 计划任务
使用find /etc/*cron* ! -type d -exec ls -lctr --full-time {} + 2>/dev/null命令排查计划任务,发现/etc/crontab文件于2023-11-30 08:25:01被攻击者篡改。由于已在“恶意程序排查 – 文件排查”时分析过,这里不再分析。
使用find /var/spool/cron -type f -exec ls -lctr --full-time {} + 2>/dev/null命令排查计划任务,发现/var/spool/cron/root文件于2023-11-30 08:25:01被攻击者篡改。由于已在“恶意程序排查 – 文件排查”时分析过,这里不再分析。
02、启动项
使用find /etc/rc.d/ -type f -exec ls -lctr --full-time {} + 2>/dev/null命令排查启动项,发现ctime都是2019-07-11的,未发现异常。
03、自启服务
使用chkconfig --list和service --status-all命令排查自启服务,未发现异常。
04、命令别名
使用alias命令排查命令别名,未发现异常。
使用find / -name *bashrc* -type f -exec ls -lctr --full-time {} + 2>/dev/null命令排查命令别名,发现ctime都是2019-07-11的,未发现异常。
溯源排查
一、日志分析
01、系统日志
001、安全日志secure
使用cat /var/log/secure* | grep Accepted | awk '{print $11}' | sort | uniq -c | sort -nr命令,发现恶意IP地址8.219.176.16成功登录过一次SSH。
使用cat /var/log/secure* | grep 8.219.176.16 | grep Failed | wc -l命令,发现恶意IP地址8.219.176.16没有一次登录失败。
使用cat /var/log/secure* | grep 8.219.176.16命令,查看恶意IP地址的登录时间,是2023-11-30 08:24:40。
002、登录日志last系列
使用lastlog(/var/log/lastlog)查看用户最后登录系统的信息,使用w(/var/run/utmp)查看用户正在登录系统的信息,均未发现异常。
003、命令日志history
使用history(/root/.bash_history)命令查看历史命令,未发现攻击者使用过的命令。
02、中间件日志
没有运行中间件服务,不涉及中间件日志排查。
03、数据库日志
没有运行数据库服务,不涉及数据库日志排查。
04、安全设备日志
没有部署安全设备,不涉及安全产品日志排查。
二、流量分析
没有部署流量采集产品,不涉及流量排查。
三、内存分析
服务器在重置SSH密码时被重启过,内存已丢失,没有分析价值。
四、溯源结论
01、2023-11-30 08:24:40
攻击源IP地址8.219.176.16(威胁情报恶意IP、新加坡、阿里云)于2023-11-30 08:24:40登录SSH服务的root账户,没有失败登录记录,只有一次成功登录记录。
02、2023-11-30 08:24:58
18秒后,攻击者于2023-11-30 08:24:58至08:25:01,上传恶意程序/tmp/2mOsaG3ceM,并为该恶意程序添加定时任务/var/spool/cron/root和/etc/crontab、添加条件任务/root/.bash_logout。
同时创建SSH密钥/root/.ssh/authorized_keys,并修改配置/etc/ssh/sshd_config允许密钥登录。
同时上传密码文件/tmp/.opass,并上传恶意程序/tmp/RgX48OS6BF(VirusTotal提示需要密码打开)。
03、2023-11-30 08:34:25
10分钟后,攻击者执行的挖矿程序于2023-11-30 08:34:25被阿里云盾检测到。
04、2023-12-01 09:34:24
一天后,重置SSH密码时重启了服务器,恶意进程结束后不再重启。
工具排查
01、chkrootkit
1. wget ftp://ftp.chkrootkit.org/pub/seg/pac/chkrootkit.tar.gz
2. tar -zxvf chkrootkit.tar.gz
3. cd chkrootkit-<版本>
4. ./chkrootkit > result.txt
5. cat result.txt | grep -v "nothing found|not infected|not found|not tested"
新发现异常文件/usr/lib/debug/usr/.dwz,但ctime是2019-07-11,且文件实际不存在。
02、rkhunter
1. yum -y install rkhunter
或者
1. 浏览器下载https://sourceforge.net/projects/rkhunter/files/latest/download
2. tar -zxvf rkhunter-<版本>.tar.gz;
3. cd rkhunter-<版本>
4. ./installer.sh --install
然后
1. rkhunter -c –sk
2. cat /var/log/rkhunter/rkhunter.log | grep -C 2 Warning
逐个排查Warning,并未发现异常。
03、GScan
1. git clone https://github.com/grayddq/GScan.git
2. cd GScan
3. python GScan.py
工具发现攻击者上传SSH密钥,之前已处置过。
后续待办
序号 |
待办 |
原因 |
方法 |
1 |
备份后删除文件:/tmp/2mOsaG3ceM、/tmp/RgX48OS6BF、/tmp/.opass。 |
是恶意程序 |
scp [email protected]:/tmp/2mOsaG3ceM C:UsersonemorethinkDesktop rm -rf /tmp/2mOsaG3ceM scp [email protected]:/tmp/RgX48OS6BF C:UsersonemorethinkDesktop rm -rf /tmp/RgX48OS6BF scp [email protected]:/tmp/.opass C:UsersonemorethinkDesktop rm -rf /tmp/.opass |
2 |
备份后删除文件:/etc/crontab、/var/spool/cron/root、/root/.bash_logout。 |
启动恶意程序的定时任务和条件任务。 |
scp [email protected]:/etc/crontab C:UsersonemorethinkDesktop rm -rf /etc/crontab scp [email protected]:/var/spool/cron/root C:UsersonemorethinkDesktop rm -rf /var/spool/cron/root scp [email protected]:/root/.bash_logout C:UsersonemorethinkDesktop rm -rf /root/.bash_logout |
3 |
备份后删除文件:/root/.ssh/authorized_keys。 |
攻击者添加了SSH密钥后门 |
scp [email protected]:/root/.ssh/authorized_keys C:UsersonemorethinkDesktop rm -rf /root/.ssh/authorized_keys |
4 |
修改配置文件禁止SSH密钥登录:/etc/ssh/sshd_config。 |
是攻击者为了公钥登录而启用的配置。 |
sed -i 's/PubkeyAuthentication yes/PubkeyAuthentication no/g' /etc/ssh/sshd_config |
5 |
修改SSH服务的root账号的密码 |
root账号被攻击者成功登录 |
passwd root |
修改配置文件禁止SSH密钥登录时,发现/etc/ssh/sshd_config无法被修改,被添加了i属性,需要先取消i属性后才能修改。
排查发现,其它需要删除的文件也有部分被添加了i属性,需要先取消i属性后才能删除。
其它说明
1、后面如果想练习这个环境,在自己的Linux环境执行计划任务中的命令即可。建议使用Host-Only模式(仅主机模式)的虚拟机,以避免蠕虫扩散,事态不可控时可以执行如下命令终止全部恶意进程,或者断网或关机。
2、有一个存疑的点,恶意程序的计划任务是每分钟执行一次,但实际并未生效,即时重启crond也没用,但手动执行计划任务中的命令又可以成功。
原文始发于微信公众号(OneMoreThink):记一个真实的应急响应案例(2)挖矿病毒事件
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论