農林漁牧網

您現在的位置是:首頁 > 林業

七夕—一例APT28(Fancybear)樣本詳細分析

2022-01-14由 安全客小安 發表于 林業

火絨劍是幹什麼的

七夕—一例APT28(Fancybear)樣本詳細分析

0x00 背景

APT28是一個疑似具有俄羅斯政治背景的APT組織。筆者根據公開的情報整理到的資訊大概如下。

七夕—一例APT28(Fancybear)樣本詳細分析

本次的樣本來源於沙箱app。any。run:https://app。any。run/tasks/d6a8d1db-52c8-4371-b6d3-bf740408bb10/

上傳到app。any。run的時間為2020年7月27。

七夕—一例APT28(Fancybear)樣本詳細分析

可以看到樣本已經標記為了APT28

樣本MD5為:36524c90ca1fac2102e7653dfadb31b2

0x01 樣本基本資訊

樣本下載到本地之後透過exeinfo檢視樣本可以知道樣本是標準VC編譯的程式。

七夕—一例APT28(Fancybear)樣本詳細分析

使用火絨劍和fakenet跑一下樣本的行為:

七夕—一例APT28(Fancybear)樣本詳細分析

樣本執行後,最直接的行為就是在本地appdata路徑釋放了一個dll檔案和一個bat檔案,然後在左邊的fakenet視窗中可以看到傳送了超級長的一段base64編碼資料,這次猜測可能是透過base64編碼了本地收集到的資訊然後傳到C2。

七夕—一例APT28(Fancybear)樣本詳細分析

轉到bat和dll檔案的目錄下,可以看到bat的內容就是呼叫rundll32。exe去啟用載入這個dll。

七夕—一例APT28(Fancybear)樣本詳細分析

所以看樣子,我們拿到的這個exe有很大的機率是一個Dropper。

0x02 Dropper分析

使用IDA載入原始樣本。

七夕—一例APT28(Fancybear)樣本詳細分析

WinMain的入口點沒什麼特殊的,進來之後呼叫了三次sub_401DEF函式,這種情況下,sub_401DEF一般都是解密函式。

七夕—一例APT28(Fancybear)樣本詳細分析

解密的第一個字串是SystemRoot\SysWow64

第二個串是SystemRoot\SysWow64

第三個串是:TEMP

七夕—一例APT28(Fancybear)樣本詳細分析

所以我們將sub_401DEF函式重新命名為:Rename_decodeStr

三個字串解密之後,程式會再呼叫一個名為sub_4012D3的函式,這個函式如果呼叫失敗,程式將透過jmp跳轉到最後結束執行。所以sub_4012D3有可能是進行環境校驗啥的。

七夕—一例APT28(Fancybear)樣本詳細分析

WinMain->12d3

12D3函式進來之後,首先會透過GetProcessHeap獲取當前程序的堆地址,然後透過HeapAlloc分配一個堆空間。

七夕—一例APT28(Fancybear)樣本詳細分析

成功分配之後,程式會呼叫sub_401063繼續分配

七夕—一例APT28(Fancybear)樣本詳細分析

然後在分配的堆空間中解密出這個dll名稱

七夕—一例APT28(Fancybear)樣本詳細分析

第二次解密出appdata這個環境變數的名稱

七夕—一例APT28(Fancybear)樣本詳細分析

12D3函式執行完成之後,程式會呼叫執行sub_4013F7

WinMain->13F7

該函式進來,程式首先是透過之前分析的解密函式,解密了兩個解壓相關的API:

RtlGetCompressionWorkSpaceSize

RtlDecompressBuffer

這裡應該是為等會釋放檔案做準備了。

七夕—一例APT28(Fancybear)樣本詳細分析

然後LoadLibrary之後透過GetProcAddress獲取剛才解密出來的API函式的地址

七夕—一例APT28(Fancybear)樣本詳細分析

然後直接呼叫該函式,引數為eax:

七夕—一例APT28(Fancybear)樣本詳細分析

然後呼叫了RtlDecompressBuffer,根據引數來看,這裡應該是會將目標資料解壓縮到esi所在的地址

七夕—一例APT28(Fancybear)樣本詳細分析

函式執行之後成功解壓出一個PE

七夕—一例APT28(Fancybear)樣本詳細分析

七夕—一例APT28(Fancybear)樣本詳細分析

至此,sub_4013F7函式功能分析完畢,經過分析,該函式用於解壓縮資料為PE檔案。

接下來是呼叫sub_40155B函式。

WinMain->155B

在115B函式中,程式首先執行了一個call ,然後就準備LoadLibrary

七夕—一例APT28(Fancybear)樣本詳細分析

155B->sub_4010CD

跟進到sub_4010CD中,程式首先是解密了兩個字串,分別是SystemRoot和\System32

然後就嘗試透過GetEnvironmentVariableW獲取LOCALAPPDATA環境變數的路徑。

七夕—一例APT28(Fancybear)樣本詳細分析

成功獲取,根據行為分析我們可以知道,這個路徑是後續用於釋放檔案的。

七夕—一例APT28(Fancybear)樣本詳細分析

然後嘗試透過lstrcatW拼接字串,獲取更完整的路徑。

七夕—一例APT28(Fancybear)樣本詳細分析

最後拼接出解密dll的完整路徑:

至此,sub_4010CD函式分析完成,我們回到1565B函式中

程式是通過了拆分字串的方式,組裝出了Kernel32。dll

七夕—一例APT28(Fancybear)樣本詳細分析

然後準備呼叫CreateFileW

七夕—一例APT28(Fancybear)樣本詳細分析

成功獲取API地址之後,程式首先跳轉到loc_4016E3去,然後透過jmp函式又跳轉回來繼續執行。

七夕—一例APT28(Fancybear)樣本詳細分析

跳回來之後,程式透過CreateFile建立這個dll的檔案物件。

七夕—一例APT28(Fancybear)樣本詳細分析

同樣的方式,去獲取WriteFile的API地址:

七夕—一例APT28(Fancybear)樣本詳細分析

然後呼叫WriteFile將dll檔案寫入過去:

七夕—一例APT28(Fancybear)樣本詳細分析

這裡是檔案物件建立成功

七夕—一例APT28(Fancybear)樣本詳細分析

這裡是closeHandle之後,dll檔案寫入成功。

七夕—一例APT28(Fancybear)樣本詳細分析

到這裡,sub_40155B函式就分析完成。

透過分析我們可以知道,該函式的主要功能是解壓縮資源,釋放目標dll檔案到指定的目錄。

回到WinMain中,155B函式呼叫完成之後,程式會呼叫sub_40264C函式。

WinMain->264C

264c函式進來之後就一直在解密字串:

七夕—一例APT28(Fancybear)樣本詳細分析

解密的第一個字串是rundll32。exe

七夕—一例APT28(Fancybear)樣本詳細分析

解密出來的字串分別如下:

七夕—一例APT28(Fancybear)樣本詳細分析

然後老套路解密出了操作登錄檔的API:RegOpenKeyExw

七夕—一例APT28(Fancybear)樣本詳細分析

然後迴圈的去呼叫之前的解密函式,逐步解密出bat的完整內容

七夕—一例APT28(Fancybear)樣本詳細分析

嘗試透過CreateFileA建立檔案:

七夕—一例APT28(Fancybear)樣本詳細分析

七夕—一例APT28(Fancybear)樣本詳細分析

檔案物件建立成功之後,將呼叫執行dll的命令寫入進去:

七夕—一例APT28(Fancybear)樣本詳細分析

寫入成功之後就是一系列的收尾工作:

七夕—一例APT28(Fancybear)樣本詳細分析

到這裡,sub_402030函式分析完成,該函式的主要功能就是將啟動dll的命令寫入到bat檔案中。

七夕—一例APT28(Fancybear)樣本詳細分析

然後建立一個UserInitMprLogonScript的登錄檔,這是一種用於許可權維持的操作。因為HKEY_CURRENT_USER\Environment\

Logon Scripts 的執行順序在殺軟錢,所以Logon Scripts可以優先於殺軟執行,繞過殺軟對敏感操作的攔截。

七夕—一例APT28(Fancybear)樣本詳細分析

到這裡,264C函式也執行完畢。

該函式的主要功能就是釋放bat檔案,然後寫入Logon Scripts登錄檔以繞過殺軟。

接下來是在WinMain中呼叫sub_401707函式:

七夕—一例APT28(Fancybear)樣本詳細分析

WinMain->1707

1707進來之後首先是解密了三個字串,分別是RunDll32。exe ,#1 和Open

七夕—一例APT28(Fancybear)樣本詳細分析

接著call到了sub_401D09中。該函式用於獲取程序的一個執行許可權

七夕—一例APT28(Fancybear)樣本詳細分析

獲取之後,程式會帶引數載入這個dll檔案。

七夕—一例APT28(Fancybear)樣本詳細分析

這裡載入執行之後,程式就會做一些收尾操作,然後退出當前的程式了。

這裡程式其實配置了多種啟動方式,感興趣的可以看下。

最後,程式嘗試透過DeleteFile刪除自身

七夕—一例APT28(Fancybear)樣本詳細分析

到這裡,Dropper這個程式就完全分析完成。

0x03 cdnver。dll分析

釋放出來的這個dll就是APT28的特馬。

該樣本功能非常完善,包括資訊收集、資訊上傳、下載、執行PE、截圖等。

網上關於該木馬的分析報告還挺多的,這裡就隨便看一下,且因為篇幅的原因,也不能寫太長啦~ 這就是一個標準的遠控木馬,沒有什麼混淆,有一些自定義的解密函式,跟著除錯很快就可以除錯完。

使用IDA載入該dll,由bat檔案中的執行指令可以知道,程式呼叫該dll的時候,是執行了序號為1的匯出函式。

start rundll32。exe “C:\Users\Administrator\AppData\Local\cdnver。dll”,#1

七夕—一例APT28(Fancybear)樣本詳細分析

該函式結構非常簡單,進來直接就是CreateThread執行了sub_10002CA0,這裡是該特馬的入口點。

七夕—一例APT28(Fancybear)樣本詳細分析

#1->2ca0

2CA0進來呼叫的第一個函式是sub_10002CFD

七夕—一例APT28(Fancybear)樣本詳細分析

sub_10002CFD

程式首先是透過10002F3F解密得到了一個互斥體名,然後透過CreateMuteA建立互斥體。

七夕—一例APT28(Fancybear)樣本詳細分析

七夕—一例APT28(Fancybear)樣本詳細分析

透過gethostbyname獲取當前的主機名:

七夕—一例APT28(Fancybear)樣本詳細分析

透過GetVolumeInformationW獲取磁碟資訊:

七夕—一例APT28(Fancybear)樣本詳細分析

呼叫obtainUserAgentString檢索當前的User-Agenet HTTP請求標頭字串。

七夕—一例APT28(Fancybear)樣本詳細分析

七夕—一例APT28(Fancybear)樣本詳細分析

開啟:Software\Microsoft\Windows\CurrentVersion\Internet Setting\Servers登錄檔鍵值,將C2資訊加密後儲存在這個鍵值的Domain項中。

七夕—一例APT28(Fancybear)樣本詳細分析

解密出域名:cdnverify。net

七夕—一例APT28(Fancybear)樣本詳細分析

該域名是apt28的經典域名

七夕—一例APT28(Fancybear)樣本詳細分析

將接下來要請求的資訊base64編碼,方便之後傳輸。

七夕—一例APT28(Fancybear)樣本詳細分析

首先對google發起網路請求,確保網路暢通。

七夕—一例APT28(Fancybear)樣本詳細分析

樣本會來回在googl和真實的c2之間來回切換通訊,達到隱藏通訊的目的。

該樣本中使用的是標準的HttpSendRequestA系列API進行網路請求:

七夕—一例APT28(Fancybear)樣本詳細分析

傳送資料之後,程式會透過InternetReadFile接收並解析返回值。

七夕—一例APT28(Fancybear)樣本詳細分析

關於cdnver。dll就分析到這裡。感興趣的小夥伴可以到app。any。run上下載該樣本到本地繼續分析。

0x04 總結

經過分析,可以看到這是一個apt28的老樣本,Dropper釋放出來的payload就是經典的APT28遠控木馬。現在他們更常用的payload是由Dephi編寫的Zebrocy,後面有機會再分享給大家。

原文連結:https://www。anquanke。com/post/id/215184