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