一款偽裝 iTerm2 App的應用程式會下載並執行惡意軟體,並從受害者電腦裡收集個人資料。
在九月初,中國問答網站知乎上有一位使用者回報搜尋關鍵字iTerm2會出現一個山寨網站item2.net,它偽裝成合法的iterm2.com(圖 1)。但透過iterm2.net上的連結會下載到惡意版本的iTerm2 App(macOS 終端模擬器)。當執行此應用程式時,它會下載並執行g.py,一個來自47[.]75[.]123[.]111的惡意Python腳本。這惡意腳本被趨勢科技偵測為TrojanSpy.Python.ZURU.A,它會從受害者電腦上收集個人資料。
一款偽裝 iTerm2 App的應用程式會下載並執行惡意軟體,並從受害者電腦裡收集個人資料。
在本月初,中國問答網站知乎上有一位使用者回報搜尋關鍵字iTerm2會出現一個山寨網站item2.net,它偽裝成合法的iterm2.com(圖 1)。但透過iterm2.net上的連結會下載到惡意版本的iTerm2 App(macOS 終端模擬器)。當執行此應用程式時,它會下載並執行g.py,一個來自47[.]75[.]123[.]111的惡意Python腳本。這惡意腳本被趨勢科技偵測為TrojanSpy.Python.ZURU.A,它會從受害者電腦上收集個人資料。
Objective-see之前發表一篇關於此惡意軟體的文章,分析了駭客如何重新封裝iTerm2 App來載入惡意的libcrypto.2.dylib。它會下載並執行其他組件,包括前面提到的g.py腳本和名為「GoogleUpdate」的Mach-O檔案(裡面包含了Cobalt Strike beacon)。這篇文章提供了惡意軟體的詳細資訊。
木馬化應用程式
截至9月15日,iterm2.net仍然活者。不過惡意檔案並沒有直接放在此網站上。此網站包含了連結hxxp://www.kaidingle.com/iTerm/iTerm.dmg,讓使用者下載名為iTerm.dmg的macOS磁碟映像檔(DMG)。無論使用者選擇從山寨網站下載哪個版本的應用程式,都會被導向iTerm.dmg的下載網址;真正的iterm2.com網站為不同版本提供了不同網址和檔案。而且從合法網站下載的檔案採用ZIP檔案格式,而非詐騙網站的DMG檔案(如圖2所示)。
比較DMG和ZIP檔案的目錄結構可以看出許多不同之處:
- 木馬化iTerm2 App的所有Mach-O檔案都是用Apple Distribution憑證(如圖 3 所示),而合法iTerm2.app的檔案使用Developer ID應用程式憑證進行程式碼簽章。根據Apple的文件,開發者用Apple Distribution憑證簽章應用程式只有在送到App Store之前,因此從App Store下載的應用程式通常沒有Apple Distribution憑證。
- 木馬化iTerm2 App在其Frameworks資料夾裡包含了合法版本不存在的libcrypto.2.dylib(其SHA-256雜湊值為2c269ff4216dc6a14fd81ffe541994531b23a1d8e0fbd75b9316a9fa0e0d5fef),如圖 4 所示。
- 在木馬化iTerm2 App裡,主Mach-O檔裡有多一個命令LC_LOAD_DYLIB會載入libcrypto.2.dylib(如圖 5 所示)。
根據Objective-see的文章,當受害者執行木馬化iTerm2 App時,libcrypto.2.dylib內的惡意程式碼會自動執行。 這是一種我們之前沒看過的重新封裝合法應用程式方法。
一旦執行,惡意軟體會連上伺服器並接收下列指令:
- 下載g.py腳本到/tmp/g.py並執行
- 下載「GoogleUpdate」到/tmp/GoogleUpdate並執行
- 使用g.py腳本收集資料
Python腳本g.py會從受害者電腦收集下列系統資料和檔案,然後傳送到伺服器:
- 作業系統資訊
- 使用者名稱
- 已安裝應用程式
- 本地IP地址
- 下列檔案和資料夾副本:
- ~/.bash_history’
- ~/.zsh_history
- ~/.gitConfig
- /etc/hosts
- ~/.ssh
- ~/.zhHistory
- ~/Library/Keychains/Login.keychain-db
- ~/Library/Application Support/VanDyke/SecureCRT/Config/
- ~/Library/Application Support/iTerm2/SavedState/
- 下列資料夾內的內容:
- ~/ – {目前使用者的家目錄}
- ~/Desktop
- ~/Documents
- ~/Downloads
- /Applications
其他木馬化應用程式和假網站
我們進一步分析木馬化iTerm2 App的Apple Distribution憑證後在VirusTotal上找到類似的木馬化應用程式(表 1),這些應用程式都使用相同方法木馬化。
表 1. 在VirusTotal上發現的其他木馬化應用程式
檔名 | SHA-256雜湊值 | 偵測名稱 |
iTerm.app.zip | 5f59ead37fa836c6329a7ba3edd4afc9a2c5fec61de4e0cdb8e8a41031ae4db0 | TrojanSpy.MacOS.ZURU.A |
SecureCRT.dmg | ae0510032cd4699ef17de7ed1587918ffcd7ff7c9a77fc45f9d68effe2934132 | Trojan.MacOS.ZuRu.PFH |
SecureCRT.dmg | 1e462f8716275dbae6acb3ff4f7a95624c1afb23c5069fa42a14ed49c2588921 | Trojan.MacOS.ZuRu.PFH |
Microsoft Remote Desktop.dmg | 5ca2fb207762e886dd3336cf1cb92c28f096a5fbb1798ea6721b7c94c1395259 | TrojanSpy.MacOS.ZURU.A |
Navicat15_cn.dmg | 6df91af12c87874780cc9d49e700161e1ead71ae045954adbe7633ec9e5e45ff | TrojanSpy.MacOS.ZURU.A |
Navicat15_cn.dmg | 91541cfc0474d6c06376460759517ae94f36fca74d5ab84cf5c23d98bd33939e | TrojanSpy.MacOS.ZURU.A |
在 VirusTotal搜尋iterm2.net所用的SSL指紋後發現了其他詐騙網站。如圖6所示,這些網站都解析到相同的IP地址,43[.]129[.]218[.]115。
我們曾經可以連上其中一個假網站snailsvn.cn,但當時其網頁的下載連結是空的,因此無法確定該網站是否曾被用來散播木馬化的SnailSVN,Mac OS X上的Apache Subversion(SVN)客戶端(圖 7)。但當本文撰寫時,這些網域都無法連上。
下載伺服器
用來代管木馬化檔案的伺服器kaidingle[.]com是在9月7日註冊,目前仍處在活動狀態。根據 VirusTotal,它除了iterm.dmg還代管了其他DMG檔案,如SecureCTR.dmg和Navicat15_cn.dmg(圖 8)。截至9月18日,後面兩個DMG檔案仍可從伺服器下載。
根據伺服器在WHOIS的查詢資訊,同一註冊者名下還有四個其他網域(圖 9)。但到目前為止,這些網域都沒有跟惡意軟體有關的跡象。
第二階段伺服器
VirusTotal在IP 地址47[.]75[.]123[.]111(與惡意g.py腳本相同的地址)下記錄了多個與第二階段伺服器相關的網址(從9月8日到17日,如圖10所示)。
除了g.py腳本和「GoogleUpdate」組件是木馬化iTerm App的一部分,第二階段伺服器還代管了其他四個作為滲透後工具的Mach-O檔案(表 2)。
表2. 代管在第二階段伺服器的其他Mach-O檔案
檔名 | SHA-256雜湊值 | 偵測名稱 |
la | 79ef23214c61228a03faea00a1859509ea3bf0247219d65ae6de335fde4061f5 | 開放原始碼的內網滲透掃描器框架 (https://github.com/k8gege/LadonGo) |
iox | f005ea1db6da3f56e4c8b1135218b1da56363b077d3be7d218d8284444d7824f | 端口轉發和內網代理服務工具 (https://github.com/EddieIvan01/iox) |
netscan-darwin-amd64 | d12ef7f6de48c09e84143e90fe4a4e7b1b3d10cee5cd721f7fdf61e62e08e749 | Netscan掃描網路以找出特定IP/IP範圍內的開啟端口及該網路正在使用的IP地址 (https://github.com/jessfraz/netscan/releases) |
Host | a83edc0eb5a2f1db62acfa60c666b5a5c53733233ce264702a16cb5220df9d4e | Backdoor.MacOS.Wirenet.PFH |
值得注意的是,第二階段伺服器的 IP 地址跟「GoogleUpdate」連接的IP地址(47[.]75[.]96[.]198)相似。這兩個IP地址均由香港阿里巴巴代管。如圖 11 所示,47[.]75[.]96[.]198 下的網址跟第二階段伺服器內的註冊時間大致相同,這顯示這兩個伺服器可能是由同一名駭客建置。
廣告網站
如前面的使用者報告所描述,搜尋引擎結果的第一條是在子網域rjxz.jxhwst.top底下。透過Google搜尋此地址會出現兩個結果,但指向網頁存檔(圖 12),在本文撰寫時,它們的實際網頁已經關閉。
第一個搜尋結果為「Microsoft Remote Desktop」,其地址為hxxp://rjxz.jxhwst.top/3,但根據其網頁存檔(圖 13)和程式碼(圖 14),我們發現它會將使用者導向山寨網站hxxp://remotedesktop.vip。
檢視其主頁,我們發現二級網域jxhwst.top屬於中國北方的一家農業公司。除了子網域rjxz.jxhwst.top外,這個二級網域還有44個其他子網域,幾乎都用於與農業公司無關的廣告(圖 15)。公司可能將這些子網域出租給其他人作為廣告用途,但無法防止它們被用於非法目的。如果是這樣,駭客會租用子網域來散播惡意軟體。
安全建議
- 為了保護系統抵禦此類威脅,使用者應該只從官方或合法應用商店下載應用程式。要謹慎對待搜尋引擎的結果,記得仔細檢查網址以確保它們確實指向官方網站。Mac用戶可以考慮使用多層次安全解決方案,如趨勢科技的PC-cillin for Mac,它提供了加強的反詐騙保護,能夠標示和封鎖試圖竊取個人資料的詐騙網站。PC-cillin for Mac也是趨勢科技PC-cillin
的一部分,這是套多平台解決方案,提供全面位安全防護和多裝置保護來對抗網路威脅。
入侵指標 (IOC)
檔名 | SHA-256雜湊值 | 偵測名稱 |
SecureCRT.dmg | 1e462f8716275dbae6acb3ff4f7a95624c1afb23c5069fa42a14ed49c2588921 | TrojanSpy.MacOS.ZURU.A |
com.microsoft.rdc.macos | 5ca2fb207762e886dd3336cf1cb92c28f096a5fbb1798ea6721b7c94c1395259 | TrojanSpy.MacOS.ZURU.A |
iTerm.app.zip | 5f59ead37fa836c6329a7ba3edd4afc9a2c5fec61de4e0cdb8e8a41031ae4db0 | TrojanSpy.MacOS.ZURU.A |
Navicat15_cn.dmg | 6df91af12c87874780cc9d49e700161e1ead71ae045954adbe7633ec9e5e45ff | TrojanSpy.MacOS.ZURU.A |
Navicat15_cn.dmg | 91541cfc0474d6c06376460759517ae94f36fca74d5ab84cf5c23d98bd33939e | TrojanSpy.MacOS.ZURU.A |
SecureCRT.dmg | ae0510032cd4699ef17de7ed1587918ffcd7ff7c9a77fc45f9d68effe2934132 | TrojanSpy.MacOS.ZURU.A |
iTerm.dmg | e5126f74d430ff075d6f7edcae0c95b81a5e389bf47e4c742618a042f378a3fa | TrojanSpy.MacOS.ZURU.A |
Microsoft Remote Desktop.dmg | 4e8287b61b0269e0d704c6d064cb584c1378e9b950539fea366ee304f695743f | TrojanSpy.MacOS.ZURU.A |
libcrypto.2.dylib | 4aece9a7d73c1588ce9441af1df6856d8e788143cd9e53a2e9cf729e23877343 | TrojanSpy.MacOS.ZURU.A |
libcrypto.2.dylib | 4e8287b61b0269e0d704c6d064cb584c1378e9b950539fea366ee304f695743f | TrojanSpy.MacOS.ZURU.A |
libcrypto.2.dylib | 8db4f17abc49da9dae124f5bf583d0645510765a6f7256d264c82c2b25becf8b | TrojanSpy.MacOS.ZURU.A |
libcrypto.2.dylib | 62cae3c971ed01c61454e4c3d9a8439cdcb409a8e1c5641e5c7c4ac7667cb5e5 | TrojanSpy.MacOS.ZURU.A |
libcrypto.2.dylib | aba7c61d2c16cdae17785a38b070df57aa3009f00686881642be31a589fabe0a | TrojanSpy.MacOS.ZURU.A |
libcrypto.2.dylib | af2cb957387b7c4b0c5c9fa24a711988c9e8802e758622b321c9bdc5720120d2 | TrojanSpy.MacOS.ZURU.A |
libcrypto.2.dylib | e8184e1169373e2d529f23b9842f258dddc1d24c77ced0d12b08959967dfadef | TrojanSpy.MacOS.ZURU.A |
libcrypto.2.dylib | 2c269ff4216dc6a14fd81ffe541994531b23a1d8e0fbd75b9316a9fa0e0d5fef | TrojanSpy.MacOS.ZURU.A |
g.py | ffb0a802fdf054d4988d68762d9922820bdc3728f0378fcd6c4ed28c06da5cf0 | TrojanSpy.Python.ZURU.A |
MITRE攻擊戰略、技術和步驟(TTP)
攻擊戰略 | ID | 名稱 | 介紹 |
初始進入(Initial Access) | T1566.002 | 魚叉式釣魚連結 | 來自搜尋引擎結果的釣魚網站 |
執行(Execution) | T1059.006 | Python | 下載Python腳本 |
T1204.002 | 惡意檔案 | 執行重新封裝的iTerm2 App會啟動惡意軟體dylib libcrypt.2.dylib | |
防禦逃脫(Defense Evasion) | T1140 | 去混淆/解碼檔案或資訊 | 惡意軟體dylib內的字串經過AES和Base64編碼 |
T1036 | 偽裝 (6) | 惡意軟體dylib加進重新封裝的iterm2 App | |
收集(Collection) | T1560.002 | 經由程式庫壓縮 | 收集各種資訊並加進zip壓縮檔 |
T1005 | 來自本地系統的資料 | 收集系統資訊、bash歷史記錄和登入憑證資訊 | |
T1602 | 來自設定庫的資料 (2) | 收集/Library/Application Support/VanDyke/SecureCRT/Config 的內容 | |
資料滲出(Exflitration) | T1041 | 透過C2管道滲出 | 檔案被外洩到hxxp://47[.]75[.]123[.]111/u.php |
@原文出處:Mac Users Targeted by Trojanized iTerm2 App 作者:Steven Du, Luis Magisa
訂閱資安趨勢電子報,每日掌握資安趨勢