惡意挖礦監測運營實踐和典型樣本預警
0x00 背景概述
2018年以來,加密貨幣市場出現震盪,很多幣種幣值較年初都有一定程度的縮水,但是由於“免費電”挖礦這種零投入模式的存在,幣市降溫似乎並沒有給各類挖礦木馬的傳播者造成太大的影響,挖礦木馬仍然是黑產團伙重要的盈利點。對於企業內部安全來說,無論是辦公環境還是生產環境,挖礦木馬都可以被定義為高危威脅,360 MeshFire Team聚焦於威脅檢測的落地運營,在日常運營中提煉了挖礦的主要威脅場景,對惡意挖礦事件的持續進行監測和處置,總結歸納出對此類威脅型別的主要檢測指標和處置流程,同時給出部分工具,方法和樣本案例,供相關從業者參考。
本文的後半部分我們以一個捕獲到的高危MAC挖礦樣本為例,展開此類安全事件的監測和處置過程。該樣本藉助 “MAC使用word文件”等關鍵詞SEO搜尋結果,誘導使用者下載執行挖礦程式,導致MAC電腦使用者在網路中尋求幫助時會不甚感染挖礦木馬。由於MAC系統少有人安裝殺軟,且目前沒有殺軟程式報毒相關樣本,為了避免出現更多的受感染者,我們決定提前公開部分分析結果,向更多使用者發出預警。特感謝專注於IOS安全研究的360 涅槃團隊在分析過程中給予的支援和幫助。
0x01惡意挖礦行為來源
1.企業員工自主挖礦
在一些論壇或者社交網路中,不難找到“免費”挖礦的踐行者分享經歷的資訊。他們或利用手頭的辦公資源,或利用自身管理的伺服器和其他網路裝置,通過部署礦機的方式進行挖礦行為。這種行為最直接的後果是:員工獲取不正當利益的同時,致使企業遭受損失。而一旦被發現,員工也可能會因此承擔相應的責任。
2.PC感染挖礦木馬
在github等程式碼託管平臺中,有大量的開源挖礦程式。這就給挖礦木馬的二次開發提供了基礎元件。在我們發現的挖礦木馬傳播事件中,攻擊者多次利用xmrig、xmr-stak等開源專案,或是自己編寫惡意挖礦程式碼進行挖礦。而礦機程式的傳播,也不外乎幾個方面:垃圾郵件傳播、掛馬網頁、殭屍網路、挖礦蠕蟲、捆綁安裝工具和破解軟體的安裝等。
3.伺服器感染挖礦木馬
如果企業伺服器祕鑰管理不善或軟體補丁更新不及時,則可能因為弱口令、應用程式漏洞等原因,被攻擊者成功入侵,植入惡意挖礦程式碼。一個比較突出的例項是:今年上半年由於Redis提權漏洞的出現,大量攻擊者利用該漏洞入侵Linux伺服器進行掃描和挖礦,而被挖礦惡意程式碼感染的伺服器,從而導致效能降低甚至宕機的狀況出現。
4.網站挖礦指令碼
幾年前,隨著加密貨幣價格持續走高,“瀏覽即挖礦”這一黑產模式出現在我們的視野當中。網頁中植入一段JS程式碼,使用者瀏覽時即可在主機挖礦,在加密貨幣具備價值的前提下,這種變現模式比流量和廣告變現要容易得多。利益驅動下,多個網站,甚至廣告平臺被曝光網頁植入挖礦指令碼的情形出現也就不足為奇了。對於企業和相關機構來說,員工瀏覽植入挖礦指令碼的網頁,會對計算機效能、電力造成損耗,而企業網站如果因為安全問題被植入挖礦程式碼,則是對企業信譽,乃至形象的損害。
0x02 內網挖礦威脅監控和處置流程
1.內網資產挖礦監控體系
我們日常安全運營依賴自研的宙合大資料威脅檢測平臺,整合終端、流量、網路邊界、郵件等安全防護裝置產生的告警資訊和安全日誌,基於特徵檢測、威脅情報和大資料關聯聚合等技術手段,構建了一套基於大資料技術的內網威脅檢測體系。通過資料關聯和聚合分析,為網路掃描、漏洞利用、病毒傳輸、風險行為、郵件釣魚等多種威脅場景的日常運營分析工作提供資料平臺支撐。系統基本架構如下所示:
宙合平臺同樣適用於內網挖礦威脅場景的監測,基於挖礦行為的入侵檢測的規則,從郵件附件、流量還原樣本檢測、伺服器安全Agent和終端EDR日誌等多種資料維度挖掘和關聯,我們可以從主機執行環境,網路通訊過程等多個採集點完成此類威脅的發現。
2.惡意挖礦監控和取證模式
2.1.資產定位
威脅檢測落地首先需要完善安全基礎工作,資產資料清晰準確的管理至關重要,將精細化的資產資訊關聯到告警日誌中,將極大的提升安全運營的效率。一旦監測到威脅,快速響定位相應資產取證,而資產歸屬得以確認則是取證工作順利進行的先決條件。在日常工作中完善運維和IT資產管理,梳理清晰的網路拓撲和網路安全策略等前置基礎工作必不可少。
2.2.挖礦特徵監測思路和規則
挖礦惡意軟體主要目的是為了感染目標機器,執行挖礦軟體,為追求利益最大化,防止追蹤,一般惡意挖礦軟體挖掘的加密貨幣符合下面4個條件:
(1)匿名性 (2)CPU挖礦 (3)價值靠前 (4)抗AISC
目前市面上存在2000多種加密貨幣,而符合上面4個條件,升級演算法後的門羅幣(XMR)幾乎是唯一選擇,這也是惡意挖礦軟體大多挖掘門羅幣的原因。
門羅幣採用Cryptonight演算法,目前較為常用CPU挖礦軟體有:xmr-stak,xmrig,claymore,對軟體網路特徵進行分析,發現各軟體特徵如下:
xmr-stak
xmrig
Claymore
從上面特徵中,我們可以明顯看到,挖礦客戶端首先會與礦池互聯,產生登陸操作,登陸操作分為兩種,一種是直接登入,一種是通過jsonrpc方式,這兩種方式依賴於TCP的Stratum。開源的ET open規則裡都進行了監控。規則細節如下:
alert tcp-pkt $HOME_NET any -> $EXTERNAL_NET any (msg:"ET POLICY Cryptocurrency Miner Checkin"; flow:established,to_server; content:"|7b 22|id|22 3a|"; nocase; depth:6; content:"|22|jsonrpc|22 3a|"; nocase; distance:0; content:"|22 2c 22|method|22 3a 22|login|22 2c 22|params|22 3a|"; fast_pattern; content:"|22|pass|22 3a 22|"; nocase; content:"|22|agent|22 3a 22|"; nocase; content:!"<title"; nocase; content:!"<script"; nocase; content:!"<html"; nocase; metadata: former_category POLICY; classtype:policy-violation; sid:2024792; rev:4; metadata:affected_product Windows_XP_Vista_7_8_10_Server_32_64_Bit, attack_target Client_Endpoint, deployment Perimeter, signature_severity Minor, created_at 2017_10_02, updated_at 2018_06_15;) alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"ET POLICY Crypto Coin Miner Login"; flow: to_server,established; content:"|7b 22|method|22 3a 20 22|login|22 2c 20 22|params|22 3a 20 7b 22|login"; nocase; depth:37; fast_pattern:17,20; content:"agent|22 3a 20 22|"; nocase; distance:0; reference:md5,d1082e445f932938366a449631b82946; reference:md5,33d7a82fe13c9737a103bcc4a21f9425; reference:md5,ebe1aeb5dd692b222f8cf964e7785a55; classtype:trojan-activity; sid:2022886; rev:2;)
除開源規則外,還可使用如下規則,監控挖礦軟體與礦池之間的網路通訊過程。
alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"Cryptocurrency Miner Request Pools"; content:"|22|method|223a|"; content:"|22|params|223a|"; content:"|22|job_id|223a|"; content:"|22|nonce|223a|"; content:"|22|result|223a|"; classtype:bad-unknown;rev:1;sid:7000179;)
2.3挖礦行為的終端取證
取證是事件分析和追溯的重要步驟,取證結果直接關係能否成功定位威脅,及後續工作的進行。下面簡單介紹些我們在日常不同作業系統下的取證物件、方法及工具,應用場景不限於各類安全事件響應工作中的取證環節,供參考。
2.3.1 Windows主機取證
Windows取證工具有很多,下面列舉部分工具,並簡單描述使用場景。
Sysinternals:一個用於監控Windows系統的工具套件,有PsTools、Process Monitor、ProcessExplorer、Autoruns、sysmon、Whois、ProcDump等,幾乎涵蓋Windows取證各個方面。https://docs.microsoft.com/en-us/sysinternals/ AVZ:一款資訊獲取工具,可以獲得程序、服務、核心空間、埠等資訊。 GMER:可以用來檢測和刪除rootkit的工具http://www.gmer.net/ Forensic Toolkit:可以用於數字取證的實用工具http://accessdata.com/solutions/digital-forensics/forensic-toolkit-ftk?/solutions/digital-forensics/ftk Rekall:一個記憶體分析框架,可以檢測系統的inline_hook,建立記憶體轉儲http://www.rekall-forensic.com 火絨劍、PcHunter、PETools等分析和取證輔助工具 ……
2.3.2 Linux取證
Linux取證工作的主要物件有:
使用者:Linux不同使用者往往有不同的操作許可權,如果有非正常新增使用者或使用者許可權異常變動,往往是有問題的。 程序:一般被入侵的Linux系統(伺服器)都會有惡意程式執行,通過檢視程序資訊則可以發現一些威脅痕跡。 網路:可以通過對程序網路通訊和端口占用情況,與網路告警資訊比對,以此找到威脅源。 命令歷史:如不加刪除,linux使用者歷史命令都會存在使用者目錄下.bash_history當中。 登入歷史:可以通過檢視登入歷史判斷威脅落地的時間,以及入侵的可能責任物件。 開機啟動和定時任務:一旦系統被入侵,則可能通過開機啟動項配置,crontab和守護程序設定的方式達到持久化的效果,所以linux取證環節中,對相應項的檢測是很重要的。 系統日誌和各類應用日誌:重要性不必多說。
除上述方面和物件外,還有許多要注意的其他內容,這裡不做贅述。
2.3.3 MacOS取證
MacOS取證物件與Linux類似,除部分內建軟體外這裡列舉部分取證工具僅供參考:
fsmon:跨平臺檔案監控工具 https://github.com/nowsecure/fsmon dtrace:動態行為檢測神器http://dtrace.org/blogs/ objective-see部分MacOS防護軟體:https://www.objective-see.com/products.html instruments:MacOS原生動態行為監控工具,需要xcode環境
3. 後續處置工作
1. 礦池域名封堵
隨著時間推移,節點直連區塊中心挖礦的模式,已經很難挖到加密貨幣了,現在更多的人選擇將節點連線到礦池的方式獲取加密貨幣。所以,對於企業而言,阻斷內網資產對常見挖礦威脅礦池的訪問,是一種較為有效的網路側處置手段。
2. 攻擊鏈還原
為了確認惡意挖礦事件的攻擊鏈,需要對取證結果、樣本分析結果、網路日誌等資訊進行關聯整合,形成攻擊事件的流程。還原攻擊鏈的目的主要有三個:一是確認挖礦行為的源頭是來自於入侵還是內部員工的違規行為;二是找到內部資產脆弱點,從而對內部資產進行安全升級;三是提取攻擊載荷特徵,部署入侵監測系統、防火牆過濾規則,便於威脅源頭阻斷和後續的追溯工作。
3. Payload查殺
對於一些企業和機構來說,如果內網部署企業級終端安全防護產品,則可通過後臺策略進行內網查殺,如果不能則需要根據payload行為編寫專殺工具或手動清理感染痕跡。
0x04 挖礦木馬事件典型示例
破解版應用程式誘導下載安裝挖礦程式惡意事件
安全分析人員在8月發現內網部分MacOS主機產生挖礦網路告警,通過Review告警資訊,資產確認後,鎖定若干Mac辦公機。進一步取證,分析,發現這些Mac主機確實感染挖礦木馬,攻擊樣本來自百度搜尋“MAC使用word文件”等關鍵字反饋結果的置頂廣告推薦。
1. 事件告警
8月10日前後,內網發現大量挖礦告警,告警地址顯示為45.195.146.32,該IP地址對應域名funningx.com,告警埠為3333,產生告警截圖如下
2. 資產定位和主機取證
發現告警後,第一時間從網路資產管理系統中查詢告警IP所屬主機,確定主機為部分iMac和Macbook。拿到取證機後,接入網路,檢視3333端口占用程序資訊,定位到一個名為ssl.plist的程序。IDA靜態分析樣本行為,確認這是一個xmr-stak的礦機程式。
在~/Library/LaunchAgents,/Library/LaunchDeamos,/Library/LaunchAgents,/System/Library/LaunchDaemons開機啟動項中查詢ssl.plist路徑資訊,均無所獲,其他開機啟動方式檢查也未有結果。殺掉程序,刪除ssl.plist, cpu.txt, config.txt, pools.txt等配置檔案後,重啟系統,挖礦程式會重新啟動。
在~/Library/LaunchAgents目錄下發現兩個plist檔案:com.apple.Yahoo.plist和com.apple.Google.plist。其中com.apple.Google.plist是一個plist檔案,內容如下:
該plist配置檔案表明系統開機時會啟動osascript,並且執行com.apple.Yahoo.plist這個applescript指令碼。
由檔案16進位制內容可知,這是一個run-only applescript指令碼檔案。手動啟動com.apple.Yahoo.plist,並進行主機行為和網路監測,發現該指令碼檔案的部分行為是:根據主機型別釋放挖礦配置檔案,下載 ofollow,noindex" target="_blank">http://101.55.20.149/gogoto.png 儲存為11.png並執行。
同樣用osascript啟動指令碼,並監控osascript行為和網路行為。行為顯示該指令碼的部分功能為:下載 http://101.55.20.149/ssl.zip 並解壓到~/Library/Safari目錄下,得到ssl.plist和openssl資料夾,並執行ssl.plist程序。
根據指令碼行為鎖定101.55.20.149這個IP,Review被感染主機歷史流量日誌,發現攻擊載荷最初的入口均來自vip1.czscrj.com,由百度搜索“excel mac版下載” “mac 使用word”等關鍵字查詢獲取:
下載office4mac.zip,解壓執行,mac主機啟動挖礦程式,開始挖礦,主機和網路行為與告警一致。至此取證工作完畢。
3. 樣本行為分析
office4mac.app 目錄結構如下:
~ /Desktop/office4mac/office4mac.app
└── Contents
├── Info.plist
├── MacOS
│ └── applet
├── PkgInfo
└── Resources
├── 001.plist ———————-即為com.apple.Yahoo.plist applescript指令碼檔案
├── 1.png
├── 10.png
├── 2.png
├── 3.png
├── 4.png
├── 5.png
├── 6.png
├── 7.png
├── 8.png
├── 9.png
├── Scripts
│ └── main.scpt ——-程式編譯的applescript程式碼,run-only,不可讀
├── applet.icns
├── applet.plist
├── applet.rsrc
└── description.rtfd
└── TXT.rtf
尤其可以認定該樣本是一個applescript匯出為run-only模式的Mac平臺應用程式。由於目前還沒有找到run-only applescript 的有效分析方法,逆向osascript的工作還在進行中,但是通過行為監測,可以大致梳理出office4mac.app執行後挖礦工具的安裝流程,流程如下:
(1) 執行office4mac.app 啟動office4mac.appContentsMacOSapplet程序,程序行為是載入office4mac.appContentsResourcesScriptsmain.scpt,執行指令碼檔案。從檔案行為檢測上看,該指令碼的部分功能是:讀取主機硬體資訊,向~/Library/LaunchAgents/目錄下釋放com.apple.Google.plist 和com.apple.Yahoo.plist兩個檔案並com.apple.Google.plist由指令碼建立並寫入內容,com.apple.Yahoo.plist為樣本的資原始檔office4mac.appContentsResources01.plist複製到相應目錄下。經過測試,com.apple.Yahoo.plist的主要行為是: http://101.55.20.149/gogoto.png 儲存為11.png並執行。
(2) 11.png執行後的指令碼檢測結果是:自刪除,釋放挖礦配置檔案,cpu.txt,config.txt,pools.txt等。然後呼叫curl下載 http://101.55.20.149/ssl.zip 並解壓到~/Library/Safari目錄下,得到ssl.plist和openssl資料夾,並執行ssl.plist程序。ssl.plist即為xmr-stak礦機程式。
另外,在虛擬機器中測試office4mac應用程式,不會觸發挖礦行為,猜測指令碼程式碼中有虛擬機器檢測的行為,因程式碼暫時沒能準確解讀,所以僅作猜想。
4. 使用者自查和病毒查殺方案
MacOS使用者可參考如下方案完成挖礦病毒自查和病毒查殺:
1.終端輸入命令netstat –an |grep 3333檢視是否有ssl.plist程序繫結3333埠。 2.檢視主機是否執行挖礦程序:ps -ef |grep ssl.plist,如果有程序,則需要用kill pid命令殺掉程序。 3.通過ls ~/Library/LaunchAgents/ 看目錄下是否有com.apple.Google.plist 和com.apple.Yahoo.plist,如果有,則刪除檔案。 4.刪除~/Library/Safari/目錄下的ssl.plist ,cpu.txt ,config.txt,pools.txt 和openssl資料夾,進入相應目錄使用rm命令即可。 5.實測此office4mac應用程式並不會安裝mac平臺office應用軟體,如有需求請尋找其他資源,建議購買正版。
5. 小結
office4mac應用程式的開發者採用匯出為run-only applescript的方式生成payload檔案,但現階段對applescript指令碼的分析方法還比較匱乏,所以分析人員採用fsmon和dtrace等系統行為檢測工具分析樣本的行為。關於applescript的逆向,需要後續跟進和分析。
0x05 總結
文中給出的基於大資料技術進行挖礦威脅場景的監測方法,從實踐的檢驗來看有非常好的效果,挖礦相關行為會持續產生規律性告警,客戶端及網路流量一側也能準確捕捉到挖礦行為的產生,是一種比較成熟的挖礦行為檢測模型。
關於MacOS平臺盜版Office挖礦的事件,由於macos系統對applescript原生支援混淆和編譯,這是保護軟體著作的一種途徑,但也給applescript惡意程式碼對抗分析,逃避殺軟檢測帶來了捷徑。目前applescript的惡意程式碼比較少見,但如果對此種類型惡意程式碼的前景做一個大膽預測, applescript惡意程式碼日後有可能成為MacOS平臺中VBS惡意巨集指令碼的角色。所以,現階段安全從業者不應對此有所忽視。
此外,網路攻擊形式是有趨利性的,從銀行木馬,到勒索軟體,再到現在各類挖礦木馬,本質上都是一個在儘可能短的時間內攫取更多利益的過程。現在很多面向個人和企業的殺軟也逐漸推出防挖礦功能,但是對企業來說,僅僅依靠殺軟在終端提供支援還遠遠不夠,對MAC系統安全的也不應該有絕對的自信,需要的是完善的威脅監測機制和安全運營流程,不斷提升應急響應的效率,減少不必要的損失。
0x06 附錄:部分IOC
Office4mac.zip:
MD57e077211cb23838ba48073dde67a80a4 SHA-1d6118f4ec47ee0c4606b9a1594648ffbafefc3a0 File TypeZIP TRiDZip archive data, at least v1.0 to extract File Size3.8 MB
Yahoo.plist:
MD5f3247a8b7a25d35dc88dbd676d7f2476 SHA-1f3d83291008736e1f8a2d52e064e2decb2c893ba File Typerun-only applescript TRiDCompiled AppleScript script (100%) File Size4.23 KB
11.png:
MD51b477f3f2b2af9e22dff5c316fe3d5a9 SHA-1c6759838dd64c370cc6e728828cc71e738339702 File Typerun-only applescript TRiDCompiled AppleScript script (100%) File Size6.28 KB
ssl.zip:
MD5af08ffb2ddd5c207f0d8b8ded070282c SHA-18bcdc85aec55821791032cb9d6c9f7ab161def3e File TypeZIP TRiDZIP compressed archive (80%) File Size1.12 MB
ssl.plist:
MD5b74ff65d7af518316f5d0230f62f9433 SHA-1b8f6734ceede14e071320820b9de448ccfa1466f File TypeMach-O MagicMach-O 64-bit executable TRiDMac OS X Mach-O 64bit Intel executable (100%) File Size769.74 KB