挖矿病毒记录
该攻击一共出现了3次, 最早一次是在23年5月份, 但是那次被托管中心的安全发现,发了警告并ban掉了整台服务器的IP访问。后面两次发生在24年1月31与2月5日,均没有被安全中心发现。
原因是因为早期服务器root权限管理混乱以及部分用户密码过弱导致。
2024.5
和该文中 https://blog.csdn.net/weixin_43693967/article/details/130753155
是同一种
找到启动的文件(二进制文件伪装名为system)后, 尝试使用
1
> ./system stop
同目录下可以找到其配置文件config.ini
最简答的解决方案是直接将其配置文件破坏掉,再去将其剩余的试图分配显卡资源的进程kill掉。
观察一段时间后没有重新启动。以为这件事就这么结束了。后续是回收了所有一般用户的管理员权限并更换了更严格的密码。
2024.1.31
大过年突然发现他卷土重来,显卡占用率均100%拉满。
找到其启动位置
1
2
> sudo readlink /proc/<进程号>/exe
/tmp/fileRwy8XM
stat检查,确实是不久之前(root权限)创建的。
先检查一下, 确认和上一次是同一个
于是依然按照上次的操作重新进行了一遍,想等过两天去机房直接重新安装系统。但是修改后的密码测试过,其他机器暴力扫应该是破不了的。很奇怪它是如何获得root权限的。
2024.2.5
当以为一切都ok的时候,突然发现它又来了,而且这次如果使用上次的方法,会立刻重新创建一个二进制文件。 例如我刚刚删除了/tmp/file1,它会立刻创建一个/tmp/file3来运行。
寻找所有使用/tmp路径的进程
1
> sudo lsof +D /tmp
发现异常, 来自一个已经废弃的账号(下图中打码的)的进程。
该账号早期有管理员权限,但是已经被废弃了。检查/tmp/.ICE-unix/路径。对比另一台正常的机器,一般来说,这下面只会有缓存目录。但是却包含了很多异常的文件:
检查config.json,包含了cpu和gpu的相关配置,基本可以确定与挖矿有关。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
{
"api": {
"id": null,
"worker-id": null
},
"http": {
"enabled": false,
"host": "127.0.0.1",
"port": 0,
"access-token": null,
"restricted": true
},
"autosave": true,
"background": false,
"colors": false,
"title": true,
"randomx": {
"init": -1,
"init-avx2": -1,
"mode": "auto",
"1gb-pages": false,
"rdmsr": true,
"wrmsr": true,
"cache_qos": false,
"numa": true,
"scratchpad_prefetch_mode": 1
},
"cpu": {
"enabled": true,
"huge-pages": true,
"huge-pages-jit": false,
...
},
...
}
那它到底是怎么来的呢?
核心功能被篡改
检查定时任务
1
> ls -lah /etc/cron.*
发现了异常
检查是一个空文件, 但是根据其Change和Access时间,应该与最近的两次攻击都有关系。
先删除该任务吧
1
2
> sudo rm -f /etc/cron.hourly/0
rm: cannot remove '/etc/cron.hourly/0': Operation not permitted
发现无法删除它, 没有权限。使用lsattr和chattr也无法修改器权限设置。
突然想了一下,检查下chattr
1
2
3
4
5
6
7
8
9
10
11
> ls -lah /bin/chattr
-rwxr-xr-x 1 root root 73 6 2024 /bin/chattr
> stat /bin/chattr
File: /bin/chattr
Size: 73 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 2814158 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2025-02-05 16:47:04.362367974 +0000
Modify: 2024-02-06 19:33:23.323953572 +0000
Change: 2024-02-06 19:33:23.327953586 +0000
发现时间点与最新一次攻击非常接近。
然后去另一台正常的机器上,检查lsattr
对比发现,明显不对,这台机器上的chattr小的离谱了。正常的机器上Size为14656, 但是它只有73。一身冷汗,赶紧检查一下其他的几个常用命令:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
> stat /bin/ls
File: /bin/ls
Size: 150551 Blocks: 296 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 2753280 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2025-02-06 03:28:16.422220307 +0000
Modify: 2025-01-31 16:10:20.593860153 +0000
Change: 2025-01-31 16:10:20.593860153 +0000
Birth: -
> stat /bin/ps
File: /bin/ps
Size: 137688 Blocks: 272 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 2753332 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2025-02-06 02:37:39.019569599 +0000
Modify: 2023-10-31 11:35:56.000000000 +0000
Change: 2023-11-16 06:12:11.410744056 +0000
Birth: -
> stat /bin/find
File: /bin/find
Size: 320160 Blocks: 632 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 2753161 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2025-02-06 06:25:01.632548914 +0000
Modify: 2020-02-18 01:05:59.000000000 +0000
Change: 2022-03-16 11:37:59.443857825 +0000
Birth: -
> stat /bin/top
File: /bin/top
Size: 129072 Blocks: 256 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 2758735 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2025-02-05 12:09:28.561120753 +0000
Modify: 2023-10-31 11:35:56.000000000 +0000
Change: 2023-11-16 06:12:11.410744056 +0000
发现像ls, lsattr, chattr这几个命令都被篡改了。
目前使用apt重新安装是做不到了,因为在覆盖文件时是拿不到权限的。
下载解压对应版本的coreutils和e2fsprogs的deb包,解压。
1
2
> wget http://archive.ubuntu.com/ubuntu/pool/main/e/e2fsprogs/e2fsprogs_1.45.5-2ubuntu1.1_amd64.deb
> dpkg-deb -x e2fsprogs_1.45.5-2ubuntu1.1_amd64.deb extracted2/
先对比下正常的chattr与被篡改的chattr
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
> stat chattr
File: chattr
Size: 14656 Blocks: 32 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 6964046 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 1012/ winka) Gid: ( 1012/ winka)
Access: 2025-02-06 13:43:19.963694821 +0000
Modify: 2022-06-02 00:59:32.000000000 +0000
Change: 2025-02-06 13:43:19.963694821 +0000
Birth: -
> stat /usr/bin/chattr
File: /usr/bin/chattr
Size: 73 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 2814158 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2025-02-05 16:47:04.362367974 +0000
Modify: 2024-02-06 19:33:23.323953572 +0000
Change: 2024-02-06 19:33:23.327953586 +0000
使用解压后包中的chattr(/usr/bin下)修改/bin路径下的chattr权限然后替换它
1
> sudo extracted2/usr/bin/chattr -ia /bin/chattr
同样逻辑处理lsattr
这两项核心功能处理完后,使用apt重新安装coreutils和e2fsprogs两个包
同样处理掉定时任务
1
2
> sudo chattr -ia /etc/cron.hourly/0
> sudo rm -rf /etc/cron.hourly/0
保险起见,其他的核心功能也重新安装
1
sudo apt reinstall coreutils e2fsprogs findutils procps
安装debsum来检查其他的包是否有问题
1
2
3
> sudo debsums -c
/usr/sbin/rsyslogd
/usr/sbin/rmt-tar
重新安装
> sudo lsattr /usr/sbin/rsyslogd
-----a--------e----- /usr/sbin/rsyslogd
> sudo lsattr /var/log/syslog
----ia--------e----- /var/log/syslog
重新分配属性即可
1
2
> sudo chattr -ia /var/log/syslog
> sudo chattr -ia /usr/sbin/rsyslogd
至此结束