Gozi的技術(shù)迭代史
大多數(shù)時候,網(wǎng)絡(luò)攻擊活動與惡意軟件攻擊之間的關(guān)系很簡單,一些惡意軟件雖已消失但未被遺忘,例如GandCrab就經(jīng)常被攻擊者使用,再比如開源Quasar RAT, Quasar是一種公開可用的開源遠程訪問木馬(RAT),主要針對Windows操作系統(tǒng)。Quasar通過惡意附件在網(wǎng)絡(luò)釣魚電子郵件中傳播。據(jù)悉,這個RAT是用C#編程語言編寫的。Quasar最初是由GitHub用戶 MaxXor 開發(fā),用于合法用途。然而,該工具此后被黑客用于各種網(wǎng)絡(luò)間諜活動。Quasar于2014年7月首次發(fā)布,名為“xRAT 2.0”,后來于2015年8月更名為“Quasar”。類似的這些惡意軟件會落入灰色區(qū)域,沒有人可以控制惡意代碼庫或二進制文件,但作為惡意工具,也沒被普遍傳播。
在本文中,我們就已Gozi為例子,詳細介紹一下惡意軟件的整個演變周期。
Gozi是目前常用的一個重量級的惡意軟件,它具有一系列復(fù)雜的功能,我們將在下面詳細介紹這些功能,并且攻擊范圍非常廣泛。 單是Dreambot(Gozi的一個變體),就影響了450000名受害者。
不過回顧歷史,Gozi最初只是一個簡單的銀行木馬,明顯缺乏Web注入功能,因此在某些方面比ZeuS的第一個版本更為原始。
Gozi在被使用的第一年時未被發(fā)現(xiàn),直到2007年才第一次被曝光。很快,Gozi(與Emotet相似)就發(fā)展成為一個多模塊,多用途的惡意平臺,并且到2020年,Gozi仍在積極運行中且被成為金融界歷史上破壞性最強的病毒之一。
自2007年首次被發(fā)現(xiàn)以來,Gozi就是一直是攻擊者迭代所用的代碼庫。在2010年之前, Gozi的源代碼還未被泄漏,不過在2010年源代碼被泄漏后,其他攻擊者就接管并運行了源代碼,這樣Gozi就出現(xiàn)了兩個新版本:Gozi Prinimalka(后來與Pony合并為Neverquest)和Gozi“ISFB”。僅這些早期的變體就已經(jīng)具備了反檢測的能力。一家安全公司更是將ISFB稱為“Gozi2”,另一些人稱之為“Ursnif”或“Snifula”,以21世紀初的一款間諜軟件命名,最初的Gozi CRM借用了該軟件的代碼。其他一些供應(yīng)商開始把這個惡意軟件稱為“Rovnix”,這個名字來源于一個通常用來混淆二進制文件的封裝器。
“ISFB”是Gozi派生詞的專有名稱,因為內(nèi)部二進制字符串包含對“ISFB項目”的引用。最初將惡意軟件稱為“Ursnif”的行為與漫惡意軟件傳統(tǒng)的命名規(guī)則有關(guān),這種傳統(tǒng)至少可以追溯到1991年的米開朗基羅病毒。這種命名規(guī)則并沒有什么錯,但是對于剛出現(xiàn)的Gozi的許多綽號和誤解則引發(fā)了混亂。幸運的是,“Rovnix”和“Snifula”的命名法落伍了,但“Ursnif”的命名規(guī)則卻被延續(xù)了下來。
幾年后,ISFB的源代碼被泄漏了,大多數(shù)證據(jù)將第二次泄漏定為2015年,但一些消息人士則表示早在2013年就發(fā)生了。其中一個變體與Nymaim合并,成為兩個惡意軟件家族的雜交后代GozNym的核心代碼。另一個變體是Dreambot,它嚴重依賴于2010年CRM泄露的原始代碼,調(diào)整了ISFB的簽入格式,并增加了對通過TOR網(wǎng)絡(luò)的C&C通信的支持。
當?shù)诙℅ozi出現(xiàn)很長一段時間后,一些攻擊者又開發(fā)了新的版本,即Goziv3(RM3加載器),ISFB3和Gozi2RM3(IAP 2.0)。這些都對惡意軟件的混淆機制,控制流和C&C通信方案進行了自己的調(diào)整。尤其是,簽名的二進制文件,HTTPS通信和2階段的客戶端注冊過程。
不同版本的Gozi功能
下面我們列出了大多數(shù)Gozi共有的一些特征:
1. 字符串以加密形式包含在二進制文件的.bss部分中,解密過程使用“密鑰”字符串,它是字符串格式的編譯時間戳記(例如,2019年4月20日)。
字符串解密過程
2. 瀏覽器中的攻擊會從受害者的憑據(jù)中竊取一系列預(yù)先配置的網(wǎng)站(通常是銀行),在ISFB及其衍生工具中,引入了網(wǎng)絡(luò)注入功能。
3. 一種特定的C&C簽入格式,顯示在請求標頭或正文中。一個典型的示例是soft =%u&version =%u&user =%08x%08x%08x%08x&server =%u&id =%u&crc =%x,盡管所使用的參數(shù)及其順序略有不同。
4. 用于混淆C&C簽入的精心設(shè)計的方案。尤其是在變體中,這實際上是一個常數(shù),我們在任何地方都沒有對其進行任何調(diào)整。混淆操作如下:
4.1 使用內(nèi)置的對稱密鑰對簽入進行加密(較早的變體使用RC6,較新的變體使用Serpent);
4.2 使用base64編碼進行編碼;
4.3 使用自定義的轉(zhuǎn)義字符“ _”轉(zhuǎn)義非字母數(shù)字字符,例如“+”變成了_2B;
4.4 在結(jié)果中隨機添加斜杠字符(" / ");
混淆方案
5.在進程級別上,執(zhí)行瀏覽器人攻擊的惡意軟件模塊與做出實際決定的模塊之間是不同的,該決定是關(guān)于注入什么內(nèi)容以及在何處將后者注入到explorer.exe中的位置。雖然惡意軟件的一些運行時信息在注冊表中保持全局可訪問(例如,從C&C服務(wù)器收到的最后一個任務(wù)列表的CRC值),但兩個進程使用一個命名管道進行通信。
6.標準信息竊取功能的范圍,如鍵記錄、電子郵件、ftp帳戶、IM數(shù)據(jù)和證書抓取,以及屏幕視頻捕捉。這些插件還支持可選的dll格式插件,C&C服務(wù)器可以通過這些插件指示受感染的計算機在運行時下載并執(zhí)行。
7.使用一種相當繁瑣的格式(稱為“聯(lián)合資源”)來處理各種硬編碼信息。硬編碼信息的類型也不是用簡單的英語編寫,而是用CRC32標簽表示。
CRC到資源名稱的示例映射
8.變體使用相同的元素和相同的格式來存儲Web注入:
8.1 @ ID @:病毒ID(受害者主機身份);
8.2 @ GROUP @:組ID(機器人的組ID);
8.3 @ RANDSTR @:隨機字符串;
8.4 @ URL = @:目標金融機構(gòu);
8.5 @ CONFIG = @:配置;
8.6 @ VIDEO = @:視頻,以便受害者訪問感興趣的頁面后進行錄制;
8.7 @ SOCKS = @:連接SOCKS服務(wù)器;
8.8 @ VNC = @:連接VNC;
Goziat
這種變體的Gozi似乎是在ISFB泄露事件幾年后首次出現(xiàn)的。與其他變體相比,它最顯著的特性是其C&C簽入中的一個功能:大多數(shù)其他Gozi版本都模擬對圖像的HTTP獲取請求,因此最后會出現(xiàn)一些/images/的變體,然后是一個冗長且復(fù)雜的BASE64 blob,最后會出現(xiàn)一個.gif或.jpeg文件擴展名。這種混淆對于安全解決方案來說有點棘手,但并非不可能,這可能就是為什么goziat使用一個不同的資源目錄而不是“圖像”,它可以在惡意軟件的構(gòu)建過程中配置。由于goziat并不擔心簽入是對圖像的合法請求,它也放棄了“圖像文件擴展名作為編碼請求”的伎倆,這在Dreambot中很流行,并被許多其他變體復(fù)制。相反,它使用簡單的action=
少數(shù)研究人員將這種變體稱為LOLSnif,因為它利用預(yù)先安裝的Windows實用程序,如mshta.exe和powershell.exe。與服務(wù)器端更先進的geofencing不同,這個變體有一個針對系統(tǒng)默認UI語言的內(nèi)置客戶端檢查。
用于定位的系統(tǒng)UI語言檢查
雖然有幾個不同的攻擊活動使用Goziat,但都傾向于使用.at頂級域名,這也是研究人員選擇這個名字的原因。這與IP地址甚至所使用的子域中的某些重疊一起,共同暗示了在活動操作級別上的一些共性。這些活動往往會在相當長的時間內(nèi)停留在相同的域和IP地址上,這并不是最佳的選擇。下表列出了研究人員能夠跟蹤使用此特定版本Gozi的攻擊。
遺留在Firefox Send上的惡意文件
除了上面列出的域外,每個攻擊還支持TOR域。
· Api1: 6buzj3jmnvrak4lh.onion, g4xp7aanksu6qgci.onion, l35sr5h5jl7xrh2q.onion
· Rpc: v6ekxns6ldq5uai3.onion, uaoyiluezum43ect.onion, tjiqtwzewnkbqxmh.onion
· Wpapi: 4fsq3wnmms6xqybt.onion, em2eddryi6ptkcnh.onion, nap7zb4gtnzwmxsv.onion, t7yz3cihrrzalznq.onion
· Webstore: vo5vuw5tdkqetax4.onion , zq4aggr2i6hmklgd.onion
· Wpx: pzgxy5elkuywloqc.onion, q7nxkpgras35dwxk.onion, rbhqdxwdwrlp67g6.onion, jesteoq7glp3cpkf.onion
Gozi2RM3 / Gozi IAP2.0
這個版本的Gozi沒有引入任何C&C通信調(diào)整,基于通信和二進制元數(shù)據(jù),很容易將其誤認為是其他版本的變體。Gozi2RM3和上一代Gozi最顯著的區(qū)別是在攻擊基礎(chǔ)設(shè)施層面,該層面實施了徹底的審核過程。
Gozi2RM3攻擊活動的C&C基礎(chǔ)結(jié)構(gòu)分為兩個階段,其中第1階段C&C的地址被硬編碼到感染受害者的初始二進制文件中。第一階段C&C已預(yù)先配置了ISP /地理位置拒絕列表,該列表用于預(yù)先過濾懷疑是好奇的研究人員而不是真正的受害者的連接。在某些情況下,即使通過了這些檢查,受害者也必須通過不斷發(fā)送數(shù)據(jù)來證明自己是真正的受害者,只有這樣,第二階段服務(wù)器才會考慮推送攻擊的主要有效載荷并發(fā)送真實配置。
值得慶幸的是,至少有一個默認的用于C2通信的serpent加密密鑰(10291029JSJUYNHG),許多活動從來都不想著進行修改。
雖然基礎(chǔ)設(shè)施上的這些差異是主要原因,但在功能上也存在一些差異,還有C&C面板,這使我們相信此變體可能已經(jīng)在某處被出售。
Gozi2RM3 C&C Web面板
還有一個更簡潔的URI格式字符串(無操作系統(tǒng)、大小、哈希),用于指定從C&C請求的資源的協(xié)議是“image feign request”協(xié)議,直接取自dreambot。
偽造的圖像請求及其含義,在Dreambot和其他一些變體中被使用
Goziat攻擊者和Gozi2RM3攻擊者之間似乎存在聯(lián)系,這兩個變體都增加了另一個加密步驟,從而改變了它們解密有效載荷的方式,惡意服務(wù)器的公共RSA密鑰進一步用serpent密鑰加密,而serpent密鑰本身只在運行時組裝。事實上,這兩個變體都以同樣的方式改變了他們的流程,而且在如此短的時間框架內(nèi),似乎暗示了他們要么是自愿共享代碼,要么其中一個團隊非常警惕地模仿另一個團隊。
下表列出了研究人員追蹤到的一些使用了這個特定版本Gozi的攻擊,這只是眾多長期停滯不前的活動中最近活躍的活動的一小部分。這些活動之間的一些共同點表明,使用Gozi2RM3的活躍攻擊者的數(shù)量可能不是很多。
用于傳播Gozi2RM3的惡意文件分類
Goziv3 RM3
至少從2017年夏季開始,這種變體就開始流行了。來自ISFB的許多代碼仍然存在,但也有很多不同之處。此變體與第二波Gozi之間存在一些明顯的技術(shù)差異:
RM3加載器使用一種獨特的文件格式,稱為“PX格式”,每個dll都是使用自定義程序加載器加載的。
Joined Resources(“ JJ”)結(jié)構(gòu)已被拋棄,取而代之的是具有不同格式的“WD”結(jié)構(gòu)。而且,該結(jié)構(gòu)不會像以前一樣直接保留在PE標頭之后,而是保存在安全目錄中。
Goziv3 RM3 WD結(jié)構(gòu)
此變體利用保留在WD結(jié)構(gòu)之一中的單詞列表來偽隨機生成注冊表項名稱,這使得通過注冊表項IOC來檢測此變體比以前的變體更加困難。
保存在隨機命名的注冊表項中的Goziv3 RM3數(shù)據(jù)
此變體使用forfiles.exe來執(zhí)行Powershell腳本,該腳本將Shellcode加載到內(nèi)存中,然后使用APC注入執(zhí)行該Shellcode。通過在感染鏈中添加可執(zhí)行文件forfiles,此變體可以逃避檢測機制,這些機制搜索諸如PowerShell和mshta之類的更多已知腳本引擎的持久性。
首先讓分析師感到驚訝的可能是通信方法的調(diào)整,雖然C&C簽入的混淆方案與Gozi變體中全局使用的相同,但在這個變體中,它被放在請求對象中,而不是URI中(它變成了“index.htm”)。此外,普通簽入的格式略有不同:
雖然這些技術(shù)上的差異確實存在,就像Gozi2 RM3一樣,但這個變體背后的團隊似乎把他們的創(chuàng)新集中在防止研究人員與C2交互并獲得有效載荷的方法上。它們通過限制服務(wù)器端的有效載荷傳遞來做到這一點,當客戶端嘗試連接到C2服務(wù)器時,如果位置與當前活動的目標區(qū)域不匹配,它們將被定位并被拒絕。更重要的是,第一階段的C2在網(wǎng)上停留的時間很短,會在被分析之前消失。Gozi3 RM3通常是通過垃圾郵件傳播的,這些郵件帶有混淆的VGS文件,或者xls4.0宏作為附件。至少從2017年開始,這種Gozi的變體就被認為與一種流行的裝載機捆綁在一起。
Goziv3 RM3垃圾郵件和附帶的惡意文件
C&C服務(wù)器的頂級域通常是.xyz,并且樣本通常使用Verisign簽名。實際上,這意味著當受害者運行這些樣本時,他們必須在一個較少的對話框上點擊“確定”,以警告他們也許他們不應(yīng)該執(zhí)行互聯(lián)網(wǎng)上陌生人交給他們的隨機文件。
Dreambot
Dreambot的許多功能甚至在較新的變體中都是獨特的,但歸根結(jié)底它還是第二波Gozi的變體。為了逃避檢測,它依靠C2簽到模擬GET請求獲取圖像,Dreambot在2020年3月似乎銷聲匿跡了。
Dreambot C&C Web面板
Saigon
Goziv3 RM3的此變體是FireEye在2019年9月發(fā)現(xiàn)的,它對基礎(chǔ)Goziv3 RM3進行了各種更改,其中包括:
1. C2簽入的新參數(shù),其中值得注意的是knock,它編碼了客戶機在發(fā)出后續(xù)請求之間等待的秒數(shù);
2. 在ECB操作模式中使用的是snake加密,而不是CBC。在實際的密碼學(xué)中,這將被認為是降級,但一般的規(guī)則是,無論如何沒有人真的對惡意軟件通信進行密碼分析;
3. 混淆加密的C2簽入時,不會穿插隨機斜線;
4. 不使用PX格式;
可以看出,大多數(shù)更改似乎都集中在刪除功能,使惡意軟件更簡單以及恢復(fù)到更類似于第二個Gozi變體。
ISFB3 / Ursnif-A
該變體僅在2018-2019年期間襲擊了日本,根據(jù)其攻擊特點,它與TA544相關(guān)。一般而言,Gozi通常是由垃圾郵件(特別是通過Cutwail)傳播的,帶有附件的辦公文件,并使用地理位置來阻止其目標(通常是日本國內(nèi)銀行的客戶)以外的任何請求。垃圾郵件通常會帶有Bebloh下載程序,然后下載真正的Gozi。
針對日本銀行客戶的ISFB3惡意軟件
名稱“ISFB3”是從惡意二進制文件中的顯式pdb路徑派生而來的-c:\ isfb3 \ x64 \ Release \ client.pdb,但是標題中的數(shù)字“3”不是第三次迭代的意思。模擬圖像檢索GET請求仍然存在,并且沒有阻止該運動研究的突破性功能,一系列細微的技術(shù)差異使此變體與其他變種有所不同。
本文翻譯自:https://research.checkpoint.com/2020/gozi-the-malware-with-a-thousand-faces/如若轉(zhuǎn)載,請注明原文地址: