*本報告翻譯自Paloalto Networks技術報告archcenter,作者Josh Grunzweig, Mike Scott and Bryan Lee,僅供業界學習,不用于任何商業用途。如有疏忽或翻譯錯誤敬請指出。
最近幾周Paloalto Networks的研究人員注意到,APT組織Wekby對美國的部分秘密機構展開了一次攻擊。Wekby這些年一直活躍在醫療、電信、航空航天、國防和高科技等多個領域。它會在漏洞出現的第一時間就對其大加利用,就像在HackingTeam的zero-day漏洞事件中表現的那樣。
Wekby使用的惡意軟件是HTTPBrower惡意軟件家族的一員,這種惡意軟件利用DNS請求作為指令和控制機制(C&C)。此外,它還使用各種模糊處理技術,使得技術人員在分析過程中屢屢受阻。根據樣本中看到的那些元數據,Palo Alto網絡公司將其命名為pisloader惡意軟件。
基礎設施
Pisloader惡意軟件家族通過HTTP從下面URL中進行傳播。這個URL至今還處于活躍狀態。
http://globalprint-us [.]com/proxy_plugin.exe
示例中還有在此域下的其他URL:
http://globalprint-us [.]com/proxy_web_plugin.exe
MD5:E4968C8060EA017B5E5756C16B80B012
SHA256: 8FFBB7A80EFA9EE79E996ABDE7A95CF8DC6F9A41F9026672A8DBD95539FEA82A
大?。?26976字節
編譯時間:2016年4月28日00:38:46
這份已經發現的文件是最常見的poison lvy惡意軟件家族的一種,下面是它的配置數據:
命令和控制地址:intranetwabcam [.]com
命令和控制端口:80
密碼:管理員
互斥鎖:) !VoqA.I5
在這次攻擊中所有使用過的域名都是在攻擊之前剛剛被注冊的。所包含的域如下:
另外,研究員們還發現了下面的IP:
攻擊之初
下面是最初發現的攻擊,在之后的分析中也一直在被引用:
MD5:E8D58AA76DD97536AC225949A2767E05
SHA256:DA3261C332E72E4C1641CA0DE439AF280E064B224D950817A11922A8078B11F1
大?。?26976字節
編譯時間:2016年4月27日14:37:34
這個特定文件具有以下的元數據屬性。Pisloader這個名字也是來源于此。
最初的注入攻擊中包含的代碼非常簡單,主要任務是通過運行注冊表項進行設置,并安裝執行嵌入式的windows可執行文件。如果遇到混淆,攻擊者會立刻將字符串拆分為更小的子字符串,然后使用“strcpy”和“strcat”調用來重新進行構建。他們也會使用同樣的技術來生成從未使用過的垃圾字符串,目的是為了阻止樣品的檢測和分析。下面的反編譯代碼會解釋得更加清楚,我們已經在其中添加了注釋,以顯示完全生成的字符串。
在上述的反編譯代碼中,我們看到pisloader生成了下面的字符串,之后會用來設置運行注冊表項。
cmd.exe/cregaddHKCUSoftwareMicrosoftWindowsCurrentVersionRun /v lsm /t reg_sz /d"%appdata%lsm.exe"/f
這一特定命令會用%appdata%lsm.exe值來設置HKCUSoftwareMicrosoftWindowsCurrentVersionRunlsm注冊表項。此項設置之后,惡意軟件會用一個單字節054的XOR值解密兩組數據。由此產生的數據將會寫入%appdata%lsm.exe 文件路徑。
在寫如此文件之后,惡意軟件會執行剛編寫的 lsm.exe文件,其中包含pisloader的有效攻擊荷載。
有效攻擊荷載
下面是已發現的、并在隨后的分析中加以引用的案例:
MD5: 07B9B62FB3B1C068837C188FEFBD5DE9
SHA256:456FFFC256422AD667CA023D694494881BAED1496A3067485D56ECC8FEFBFAEB
大小 ︰ 102400 字節
編譯時間 ︰ 2016年4月27日 13:39:02
攻擊者使用了面向返回編程(ROP)技術,以及大量垃圾程序及指令對有效荷載進行了模糊化處理。在下面的示例中,用紅色標記的都是沒有任何用處的代碼。此類代碼可以作為垃圾處理,直接忽略。真正行使功能的代碼是綠色部分,這些代碼中有兩個函數偏移量在返回指令之后被堆放到堆棧中。這個返回指令會先將執行代碼指向空函數,空函數會反過來將執行代碼指向“next-function”。有效荷載運行的時候會使用這種技術,這樣會使得靜態分析變得更加困難。
在忽略了垃圾代碼之后,惡意軟件實際上是非常簡單的。開始它會隨機生成一個10字節長的字母數字作為標頭。其余的數據會進行base32編碼,之后刪除填充。此數據會用于填充子域,而這個子域就是之后的DNS請求中用于TXT記錄的地方。
這種利用DNS作為C&C攻擊的做法一直沒有被惡意攻擊者廣泛采用過,除了下面這些:
· FrameworkPOS
· C3PRO-RACCOON
· FeederBot
· Morto
· 新型PlugX
與此同時,這一做法也使得pisloader可以繞過某些安全產品(如果無法繞過,這些安全產品就會發現其中的異常)。
pisloader會定期發送一個信標,其中包含被用作有效荷載的4字節隨機大寫字符串。下面的示例中顯示了這一點:
對于pisloader預估響應之外的所有響應,惡意軟件都會不予理睬。所以攻擊者會設置下面的DNS,因為如果沒有設置額外標明,惡意軟件就沒有辦法進行分辨。
· 響應
· 所需的遞歸函數
· 可用的遞歸函數
“問題”和“回答資源記錄”字段必須被設置為01值。另外,響應查詢子域必須與原始DNS請求匹配。
攻擊者還將遠程命令和控制(C&C)服務器靜態嵌入到惡意軟件中去。在案例中我們還發現了“ns1.logitech-usa[.]com”主機。
C&C服務器會用一個TXT文檔進行響應,而文檔的加密方式與初始請求類似。在響應中,第一個字節會被忽略,剩下的數據是用的base32編碼方法。下面是示例:
下面是惡意軟件支持的相關命令以及它們的描述:
· sifo——收集受害者系統信息
· 驅動器——列舉受害者計算機上的驅動器
· 列表——列舉提供目錄中的文件信息
· 上傳——將文件上傳到受害者計算機
· 打開——生成命令外殼程序
下面是正在使用這些命令的一些情況。我們使用了一個模擬的DNS服務器來生成命令并接收結果數據。
發送“驅動器”命令:
發送“打開”命令:
發送“sifo”命令:
列舉C盤內容:
此外,大量命令都與HTTPBrowser類似。這些命令的格式化響應也是一致的。在一份已知的HTTPBrowser樣例中發現了與作為討論樣本的pisloader類似的元數據,而且用來生成這些命令的代碼可以通過GitHub獲得。這也讓我們更加確信,pisloader就是這個惡意軟件家族的一員。
結論
Wekby使用更高級的惡意軟件繼續將矛頭對準各種高機密組織機構。Pisloader惡意軟件家族使用了各種新技術(將DNS作為C2協議)和各種反分析策略(利用面向返回編程)。
為此,Palo Alto網絡采用了以下措施來保護用戶避免這種威脅:
· 能夠正確識別所有pisloader產品的WildFire
· 專門為這一系列惡意軟件設計的pisloader自動對準標記
· 攻擊中所使用到的所有域名、IP都已經被標記為惡意
· 已經創建了用于檢測pisloader DNS通信的IPS規則
*本文翻譯自:researchcenter,譯者:極客小默,轉載請注明來自FreeBuf黑客與極客(FreeBuf.COM)