當前位置:
首頁 > 新聞 > 新型密碼竊取軟體AcridRain的分析

新型密碼竊取軟體AcridRain的分析

前言

AcridRain是一個用C / C 編寫的新密碼竊取程序,在2018年7月11日左右出現在黑客論壇上。這種惡意軟體可以竊取來自多個瀏覽器的憑據、cookie以及信用卡信息。它還可以轉儲Telegram和Steam會話,劫持Filezilla最近的連接。你可以在下面的圖片中,看到AcridRain的完整說明。

其中,交易信息里包含2名賣家和1名開發人員的地址,如下表所示。

技術細節

現在,我將重點分析我們在Hybrid-Analysis中找到的第一個AcridRain樣本(7b045eec693e5598b0bb83d21931e9259c8e4825c24ac3d052254e4925738b43)。快速查看二進位文件,我們可以看到它既沒有實施封裝,也沒有進行拆分(strip)處理。幸虧,還有一些調試信息可用,如PDB路徑c:usersigor1source
eposstealer ar
eleasestealer ar.pdb(ar是AcridRain的縮寫),另外,我們還發現了許多助於我們進行逆向分析的字元串。

初始化過程

在對受害者設備上的數據進行竊取之前,AcridRain需要將自身設置為正常運行,以逃避安全檢測。首先,它會檢索有關環境變數的一些信息,比如:

1.臨時路徑

2.程序文件路徑

檢索完成後,它將通過檢查註冊表值(如Steam path、Telegram full path到可執行文件的名稱和可執行文件中圖標的資源索引)繼續獲取程序路徑。

完成後,它將生成Telegram的會話字元串,然後測試它們是否存在(見下圖)。

最後,AcridRain會通過創建一個包含所有被盜數據的ZIP文件,完成初始化過程。這個ZIP在臨時文件夾中創建並包含時間戳信息,例如:C:Users[UserName]AppDataLocalTemp2018-08-20 23-10-42.zip (代碼如下圖)。

在Google Chrome實施竊取的過程

AcridRain會首先竊取位於Google Chrome的憑據、Cookie和信用卡(如下圖所示)。 AcridRain針對的瀏覽器如下:Amigo, Google Chrome, Vivaldi, Yandex browser, Kometa, Orbitum, Comodo, Torch, Opera, MailRu, Nichrome, Chromium, Epic Privacy browser, Sputnik, CocCoc以及Maxthon5。

在搜索可疑的字元串時,我們發現了一些非常有趣的行,正是根據其中的提示,它們才解開了AcridRain是如何竊取和壓縮憑據信息的。我們可以在下圖中看到惡意軟體的使用名為browser-dumpwd-master這一現成的項目。其中的PoC,它會告訴了我們如何從Chrome和Firefox竊取憑據,但其中並沒有並沒有miniz.h和zip.c的內容。根據其中的教程,我們順利地將Chrome / Firefox中的憑據代碼複製粘貼了過來。

Chrome憑據的竊取

其實竊取憑據非常簡單。根據DumpChromeCreds(0x4017F0)的給定輸入,惡意軟體將選擇用戶數據的適當目錄。只需根據給定的dumpchromecred (0x4017F0)輸入,AcridRain就會自動選擇適合於用戶數據的目錄。例如,如果輸入0x1,那麼惡意軟體將使用目錄C:Users[USER]AppDataLocalGoogleChromeUser DataDefault,如果輸入的是0x3,則目錄就會變為 C:Users[USER]AppDataLocalYandexYandexBrowserUser DataDefault。另外,為了竊取方便,AcridRain給每類瀏覽器都定義了一個固定值,如下所示。

為了能夠識別瀏覽器所對應的憑據,AcridRain會創建特定的標頭。這些標頭和憑據會存儲在%TEMP%文件夾中的文件result.txt中。在選擇了要攻擊的瀏覽器後,將在結果文件中寫入對應的標頭。

創建標頭後,惡意程序會調用dump_chromesql_pass (0x401BC0)來轉儲所有憑據。此時,SQLite資料庫的登錄數據將被複制到之前所選擇的用戶數據目錄中的templogin中,這樣做的目的是為了防止資料庫被鎖定。然後,資料庫才會被打開,攻擊者使用SQLite(代碼如下)請求其中的數據。

正如我們在前面的屏幕截圖中看到的那樣,sqlite3_exec使用回調來轉儲憑據。函數chrome_worker(0x401400)用於從表登錄中檢索特定信息。對於表中的每一行內容,惡意軟體將保存以下幾個欄位:origin_url,username_value和password_value。由於密碼使用的是CryptProtectData加密,因此要獲取純文本,就必須使用CryptUnprotectData函數。如果一切順利,則所有竊取的信息都將存在如下所示的文件中。

在確認竊取完每個瀏覽器的所有憑據後,AcridRain將對cookie進行轉儲。

對Chrome Cookie進行轉儲

Cookie的轉儲是由函數DumpChromeCookies(0x402D10)完成的,由於在項目browser-dumpwd中沒有可以竊取cookie的函數,因此我們複製粘貼了之前用於竊取憑據的代碼,並將其修改為可以竊取cookie的函數。用於保存被竊信息的文件是result_cookies.txt,就像竊取憑據的函數一樣,它也有一些標頭。但是,正如我們在下圖中看到的那樣,我們也對其中的一些標頭進行了修改。

函數dump_chromesql_cookies (0x403300)將創建一個名為templogim(sic)的SQLite cookie副本。然後發出以下SQL請求: SELECT host_key, name, path, last_access_utc, encrypted_value FROM cookies;,這個SQL查詢使用回調chrome_cookies_worker(0x401E00,如下圖所示)。

然後,與憑據函數一樣,cookie竊取者將使用CryptUnprotectedData解密encrpted_value列,並使用Netscape格式將所有竊取內容保存到result_cookie .txt中。

一旦cookie被保存,惡意軟體就會接著竊取信用卡信息。

竊取Chrome上的信用卡信息

用於轉儲信用卡的函數是DumpChromeCreditsCards (0x402970),與cookie一樣,轉儲信用卡信息的函數也是根據憑據竊取函數而修改而來的。被盜的數據保存在result_CC.txt文件中(始終位於%TEMP%目錄中)。而其中的標頭則用於標識轉儲的信息具體是來自哪個瀏覽器。一旦信息被寫入標頭後,AcridRain就會調用dump_chromesql_cc (0x4031D0),它會生成名為templogik(sic)的Web數據副本。載入此資料庫後,AcridRain將執行以下查詢。

SELECT credit_cards.name_on_card,

credit_cards.expiration_month,

credit_cards.expiration_year,

credit_cards.card_number_encrypted,

credit_cards.billing_address_id,

autofill_profile_emails.email,

autofill_profile_phones.number,

autofill_profile_names.first_name,

autofill_profile_names.middle_name,

autofill_profile_names.last_name,

autofill_profile_names.full_name,

autofill_profiles.company_name,

autofill_profiles.street_address,

autofill_profiles.dependent_locality,

autofill_profiles.city,

autofill_profiles.state,

autofill_profiles.zipcode

FROM autofill_profile_emails,

autofill_profile_phones,

autofill_profiles,

autofill_profile_names,

credit_cards

對信用卡執行的回調是chrome_credit_cards_worker(0x402080),檢索完所有值並解密信用卡號後,信息將被保存在result_CC.txt中,格式如下。

在Firefox上竊取信息的過程

用於從Firefox竊取憑據的函數DumpFirefoxCreds(0x403600)也是複製粘貼的browser-dumpwd的代碼,只是稍作了一下修改。AcridRain的第一個行為就是從CnC下載額外的庫。這些DLL來自Mozilla,它們用於解密Firefox保存的憑據中的信息。要聯繫伺服器並請求這些庫,只有使用libcurl 7.49.1。這些DLL保存在名為Libs.zip的ZIP文件中的CnC根目錄下。下載此文件後,它將保存在%TEMP%目錄中,目錄名稱為32.zip。

你可以點此下載ZIP,在這個項目中,我們可以找到前面在字元串選項卡(miniz.h和zip.c)中看到的兩個丟失的文件。它由5個DLL組成,分別是freebl3.dll,mozglue.dll,nss3.dll,nssdbm3.dll和softokn3.dll。

在Firefox上竊取憑據的過程

被AcridRain竊取的Firefox憑據存儲在Chrome的result.txt文件中,這和項目所描述的過程是一樣的。首先,AcridRain在報告文件中寫入與目標瀏覽器關聯的標頭。然後,再竊取憑據。目前該項目針對的瀏覽器包括Firefox,Waterfox,Pale Moon,Cyberfox,Black Hawk和K-Meleon。

函數dump_Firefox_passwords(0x403E60)會首先從nss3.dll載入有用的函數。這些函數是NSS_Init,NSS_Shutdown,PL_ArenaFinish,PR_Cleanup,PK11_GetInternalKeySlot,PK11_FreeSlot和PK11SDR_Decrypt。

函數被載入後,AcridRain將檢索Profile0的路徑。為此,它會讀取%APPDATA%中相應瀏覽器的profile.ini並提取與Profile0關聯的文件夾的路徑(如下圖所示),這個過程是由GetFirefoxProfilePath(0x403500)完成的。

要獲取憑據,惡意軟體會搜索兩個文件,即logins.json和signons.sqlite。JSON由decrypt_Firefox_json(0x403930)解析,這其中就包含browser-dumpwd項目的parson.c代碼。從JSON檢索的值分別是hostname,encryptedUsername和encryptedPassword。其中,用戶名和密碼由DecryptedString(0x403430)使用nss3.dll中的函數解密。

一旦JSON中的憑據完成轉儲,AcridRain就會執行回調firefox_worker (0x404180)中的查詢語句SELECT * FROM moz_logins對SQLite資料庫進行查詢。

回調過程與JSON函數中的操作相同,都會對hostname, encryptedUsername, encryptedPassword進行檢索,然後將竊取的信息轉儲到報告文件中。

與Chrome上竊取憑據的過程不同,惡意軟體在憑據竊取完以後,是不會在Mozilla瀏覽器中自動開始竊取Cookie信息或信用卡信息的。

信息壓縮過程

轉儲完所有憑據後,惡意軟體會開始對所要傳送的所有TXT文件和Telegram會話進行壓縮。為此,AcridRain會使用zip_entry_open函數在zip中指定文件的名稱和位置。例如,zip_entry_open(zip, 「result.txt」)將在zip的根目錄添加名為result.txt的給定文件, zip_entry_open(zip, 「TelegramD877F783D5DEF8C1」) 將在Telegram文件夾中創建文件D877F783D5DEF8C1 。然後,AcridRain使用zip_entry_fwrite在zip中寫入給定的文件。

竊取STEAM賬號

竊取Steam會話分兩個階段進行,首先,AcridRain將在steam目錄中轉儲所有ssfn*文件。

然後,檢索steam目錄配置中的所有文件。

竊取Filezilla憑據

FileZilla是一種快速、可信賴的FTP客戶端, AcridRain不會針對已保存在伺服器的憑據,而只會針對最近使用的憑據,即未保存在伺服器的憑據。為了轉儲這些信息,AcridRain將把recentserver .xml保存在FileZilla目錄中。

數字貨幣的竊取過程

盜竊瀏覽器憑據只是AcridRain的惡意功能的一部分,它最大的功能就是竊取數字貨幣。該惡意軟體支持5個軟體:Ethereum, mSIGNA, Electrum, Bitcoin, Armory,這些客戶端的路徑都被定義為0x404EEA,如下所示。

這個過程非常簡單, AcridRain對每個客戶端文件進行迭代查詢,尋找諸如*.dat的文件。以下是負責從比特幣客戶端竊取所有貨幣的代碼:

對於每個客戶端來說,存儲數字貨幣的錢包都保存在ZIP文件內的不同目錄中。例如,比特幣錢包保存在Bitcoinwallets文件夾內,以太坊則保存在ethereum,依此類推。

檢索桌面上的所有文本文件並發送回後台

一般來說,竊取信息的最後一步是轉儲所有文本文件,對於AcridRain來說,最後一步是檢索桌面上的所有文本文件。使用的技術與竊取Steam會話或數字錢包的技術相同(詳見下文)。

在竊取完所有信息後,惡意軟體會將報告文件發送給CnC。此時,ZIP文件使用帶有ID參數的POST請求發送。假設這個ID用於將文件發送給伺服器上的正確用戶,而用於發送這些信息的代碼位於0x405732,如下所示。

以下是在Hybrid-Analysis沙箱生成的上傳報告的HTTP流量。

清理文件,擦除攻擊痕迹

發送完所有數據後,惡意軟體將刪除所有創建的文件,然後自動退出。刪除的文件是32.zip,result.txt,mozglue.dll,nss3.dll,nssdbm3.dll,softokn3.dll,freebl3.dll,result_cookies.txt和result_CC.txt。

調試日誌

在分析AcridRain樣本過程中,我們發現了一個有趣的事情,其中存在奇怪的列印日誌,我們可以在dump_Firefox_password函數中看到一個很好的示例。

我們可以看到其中採用的語言是用英語和斯拉夫語混合而成的。我們將斯拉夫語翻譯過來,比如:

tut ebanaya oshibka???(тут ебаная ошибка): Is a fucking mistake here???

ili tut???(или тут): or here ???

ya ee nashol (я её нашол): I have found it

如果我們執行惡意軟體時將這些翻譯過來的語句重定向到文件中,則會得到以下日誌。

AcridRain的版本迭代過程分析

2018.7.29的版本變化

在2018.7.29,我們對AcridRain進行了更新,發現已經出現了新的版本,該版本與上一版僅僅差了16天。之所以如此肯定,是因為在更新的樣本中,我們發現了使用的可執行文件(769df72c4c32e94190403d626bd9e46ce0183d3213ecdf42c2725db9c1ae960b)是於2018年7月19日編譯的,具體的分析報告請參考Hybird-Analysis上的完整分析。為了找到兩個版本之間的區別,我們使用YaDiff工具(IDA資料庫之間的字元串傳送)在IDA資料庫和Diaphora之間比較兩個傳送的IDB。可以看到,第一個修改是刪除調試日誌。

先前用於生成時間戳的報告名稱已更改為針對公共IP的地址了,這是通過請求ipify.org的API並將響應保存在名稱為body.out的%TEMP%目錄中完成的。

另外,在Chrome實施竊取功能的函數也進行了修改。新版本的AcridRain,不僅可以竊取Chrome的默認配置文件,還改變了存儲這些信息的方式。在以前的版本中,所有數據都存儲在三個不同的單獨文件中,即憑據,cookie和信用卡中。現在,它們會自動存儲在為每類瀏覽器所設置的單獨文本文件中,例如,Vivaldi.txt,Vivaldi_Cookies.txt和Vivaldi_CC.txt。

既然文件名已更改,那報告ZIP文件中的目錄也會隨著更改,比如新出現的有一些名為browser,Cookies和CC的特定文件夾。

開發者還更改了Firefox瀏覽器的標頭:

現在,擴展名為* .pfx的文件也會通過桌面轉儲。這些文件包含Windows伺服器使用的公鑰和私鑰,它們都被存儲在ZIP內的Serticifate(sic)目錄中。

最重要的是,新版的惡意軟體中又新增了許多新的加密貨幣錢包。現在,AcridRain還支持Doge,Dash,Litecoin和Monero。

2018. 8. 21的版本變化

Firefox部分的標頭也更改了,現在他們看起來如下。

注意看一下,其中的報告文件名又切換回其原始名稱:[timestamp] .zip。但是,開發人員忘記在刪除過程中刪除一些未使用的文件,如result_cookies.txt,result_Cookies.txt和result_CC.txt。不過,這些文件並不會在攻擊過程中發揮什麼作用。

最後,開發者還更改了CnC伺服器地址,現在的IP為141.105.71.82。

Web操作界面的出現

要下載在CnC上傳的ZIP,可以使用這個版本中新出現的Web界面。野外使用的第一個IP是185.219.81.232,其關聯域為akridrain.pro。大約在2018年8月2日,伺服器宕機,但幾天後(大約在2018.8.8),IP 141.105.71.82就會彈出。如果我們使用瀏覽器訪問該面板,就會被重定向到登錄頁面。

登錄後,你將被重定向到儀錶板,攻擊者可以利用其中的一個操作選項,來下載和刪除AcridRain推送的zip文件。

還有一個可以下載個人信息的用戶頁面,在下圖中,我們可以看到惡意軟體用來上傳ZIP報告文件的ID。

2018. 8. 26的版本變化

這個版本的操作面板中添加了兩個新欄位:IP和Quick info(尚未運行)。另外,儀錶板中還有一個新的按鈕,用於下載所有ZIP文件。

總結

準確地說,AcridRain和市場上的所有密碼竊取器一樣。但是,目前它支持的軟體列表非常有限。雖然AcridRain號稱它可以處理大約36種瀏覽器。但正如我們在這篇文章中看到的那樣,支持的瀏覽器數量僅有22種。而對於Firefox來說,AcridRain只能竊取憑據,目前還無法竊取cookie或信用卡信息。正如本文中所講的那樣,惡意功能有許多都是從Github存儲庫中複製粘貼的現成代碼。此外,根據代碼中出現的錯誤,我們可以斷定開發人員似乎是個新手。

附錄

你將在此存儲庫中,找到AcridRain的Yara規則和IDA IDC(分析資料庫)。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

HTTP安全標頭及其工作原理(下)
信息的利用

TAG:嘶吼RoarTalk |