挖矿木马植入服务器分析
用了这么多年 linux,第一次遇到了挖矿木马植入攻击 1。记录一下分析和解决过程。
1 事情经过
昨天用 top 命令查看服务器 cpu 使用情况,突然发现一个用户占用了 8 个 cpu 跑了一个cron
,并且运行时间越来越长。
这个用户一般情况下是不会去使用服务器的,所以我立马引起警觉,联系当事人,询问情况。
很显然该用户没有做任何操作。
由于这个服务器本身的一些原因,暂时无法解决的安全问题,这次并没有查出入侵的原因是管理员用户弱密码攻击,还是运行的某些服务有漏洞。
2 删除木马程序
首先要做的是关掉这个cron
程序。
ps -aux | grep cron
kill -9 进程号
#如果没有其他cron job运行,可以直接杀掉crontab
pkill -9 crontab
接下来删除这个 cron 定时任务。
crontab -r 用户名
之后开始查找木马文件,进入该用户目录,发下了隐藏的文件夹.bashtemp
。
.
├── a
│ ├── a
│ ├── anacron
│ ├── bash.pid
│ ├── cron
│ ├── dir.dir
│ ├── init0
│ ├── run
│ ├── stop
│ └── upd
├── b
│ ├── a
│ ├── dir.dir
│ ├── run
│ ├── stop
│ └── sync
├── cron.d
└── dir2.dir
看到cron.d
是执行的定时任务。/home/用户名/.bashtemp/b/sync
是所执行的程序。
0 0 */3 * * /home/用户名/.bashtemp/a/upd>/dev/null 2>&1
@reboot /home/用户名/.bashtemp/a/upd>/dev/null 2>&1
5 8 * * 0 /home/用户名/.bashtemp/b/sync>/dev/null 2>&1
@reboot /home/用户名/.bashtemp/b/sync>/dev/null 2>&1
0 0 */3 * * /tmp/.X19-unix/.rsync/c/aptitude>/dev/null 2>&1
.bashtemp/b/sync
是一段 shell 脚本,用来运行.bashtemp/b/run
里面的内容,run
里是恶意挖矿脚本以及添加黑客的 rsa 公钥加到/root/.ssh/authorized_keys
的程序,具体内容和详细分析参见参考资料2 2。
密钥长这个模样:
AAAAB3NzaC1yc2EAAAABJQAAAQEArDp4cun2lhr4KUhBGE7VvAcwdli2a8dbnrTOrbMz1+5O73fcBOx8NVbUT0bUanUV9tJ2/9p7+vD0EpZ3Tz/+0kX34uAx1RV/75GVOmNx+9EuWOnvNoaJe0QXxziIg9eLBHpgLMuakb5+BgTFB+rKJAw9u9FSTDengvS8hX1kNFS4Mjux0hJOK8rvcEmPecjdySYMb66nylAKGwCEE6WEQHmd1mUPgHwGQ0hWCwsQk13yCGPK5w6hYp5zYkFnvlC8hGmd4Ww+u97k6pfTGTUbJk14ujvcD9iUKQTTWYYjIIu5PmUux5bsZ0R4WFwdIe6+i6rBLAsPKgAySVKPRK+oRw== mdrfckr
通过上面的定时任务,还可以发现在/tmp
文件夹下有一个隐藏的文件夹.X19-unix
, 里面有一个 dota3 的压缩包和隐藏的.rsync
文件夹,压缩包查看内容后发现是整套木马程序(.rsync
里的内容)。
.
├── dota3.tar.gz
└── .rsync
├── 1
├── a
│ ├── a
│ ├── anacron
│ ├── cron
│ ├── init0
│ ├── run
│ └── stop
├── b
│ ├── a
│ ├── run
│ └── stop
├── c
│ ├── 1
│ ├── aptitude
│ ├── dir.dir
│ ├── go
│ ├── golan
│ ├── lib
│ │ ├── 32
│ │ │ ├── libc.so.6
│ │ │ ├── libdl.so.2
│ │ │ ├── libnss_dns.so.2
│ │ │ ├── libnss_files.so.2
│ │ │ ├── libpthread.so.0
│ │ │ ├── libresolv-2.23.so
│ │ │ ├── libresolv.so.2
│ │ │ └── tsm
│ │ └── 64
│ │ ├── libc.so.6
│ │ ├── libdl.so.2
│ │ ├── libnss_dns.so.2
│ │ ├── libnss_files.so.2
│ │ ├── libpthread.so.0
│ │ ├── libresolv-2.23.so
│ │ ├── libresolv.so.2
│ │ └── tsm
│ ├── n
│ ├── run
│ ├── scan.log
│ ├── slow
│ ├── start
│ ├── stop
│ ├── tsm
│ ├── tsm32
│ ├── tsm64
│ ├── v
│ └── watchdog
├── dir.dir
├── init
├── init2
├── initall <---安装木马程序到服务器
└── .out
上面的程序,会安装木马到指定的用户目录下,并改写 root 目录下的 ssh 公钥。所以如果只删除了用户目录的可以程序,并不能解决问题。
3 如何防范这种事情再次发生?
- 安装 fail2ban6 禁止多次尝试用户名密码撞库的 ip
- 禁止通过 ssh 方式用 root 账号登录服务器(即,只让用管理员账号登录)
- 关闭常用的 22 端口
参考资料: