譯者:知道創宇404實驗室翻譯組
原文鏈接:https://threatintel.blog/OPBlueRaven-Part1/

本文旨在為讀者提供有關PRODAFT&INVICTUS威脅情報(PTI)團隊針對不同威脅者的最新詳細信息,以及發現與臭名昭著的Fin7 APT組織合作的人是誰。

所有這些都源自威脅者方面的一次OPSEC故障,我們將嘗試逐步擴展主題,類似于我們在不斷發現的基礎上擴大范圍。

關于Fin7和Carbanak的前所未有的事實:第1部分

在5月至2020年7月之間;PRODAFT威脅情報團隊的四名成員進行了BlueRaven行動。案例研究源于發現一組看似不重要的輕微OpSec故障。當然,后來發現這些威脅因素與臭名昭著的Fin7 / Carbanak威脅因素有聯系。

PTI的OP源于攻擊者一方的OPSEC故障。與以前發現和發布的數據不同,使此OP如此與眾不同的是,我們設法發現了大量有關攻擊者工具集的未發布信息,這些信息揭示了攻擊者的TTP。

Carbanak Group / Fin7于2014年首次被發現,是世界上最有效的APT組織之一,并且是最早知道的APT組織之一。該組織被認為在全球范圍內造成超過9億美元的損失。我們的OP結果發現了有關這些威脅者的以下關鍵發現:

  • 獲得了Fin7中某些攻擊者的真實身份。
  • 有關Fin7的工具和攻擊方法的詳細證據已經出現。
  • Fin7和REvil勒索軟件組(將在后面的階段中詳細介紹)之間的關系已經出現。

撰寫此報告旨在提高認識并協助網絡安全專家進行分析。當然,PRODAFT的一些發現已被刪除。因此,授權機構可以與PRODAFT或INVICTUS聯系以進行進一步的披露。

每篇文章都將討論操作的特定方面,包括但不限于攻擊方法,組織和攻擊者的身份。我們的團隊設法竊聽了攻擊者之間的各種刺耳對話。這些對話中的大多數也將在整個系列中發布。

Carbanak后門

Carbanak Backdoor是我們小組獲得的第一批發現之一。 當前版本的CARBANAK后門程序(團隊中最知名的工具,即Carbanak組的名字)是引起我們團隊關注的第一個工具。根據PE文件標題在2019年11月編譯的“ 3.7.5”版本是后門命令和控制服務器的最新檢測到版本。下面的屏幕快照提供了“ 3.7.5”版Carbanak后門管理面板的屏幕截圖。

img

我們將獲得的最新版本與2017年Virustotal中的“命令管理器”版本進行了比較,并對此工具進行了評估。在下圖中,可以看到由于上述兩個版本的反編譯而獲得的源代碼之間的差異。下圖僅列出了兩個版本之間的源代碼,左列屬于2017年上載到Virustotal的文件,右列屬于我們團隊獲得的“ 3.7.5”版本。藍線表示不同的文件,而綠線表示新文件。通過對命令和控制服務器軟件的檢查,可以發現,通過GUI界面對插件進行了基本更改,以創建更詳細的錯誤日志,并添加了新的語言編碼。

img

確定了2019年編譯的6個版本的惡意軟件“命令管理器”工具。下圖給出了檢測到的版本的時間。

編譯時間
3.7.5 2019年11月7日星期四16:50:51
3.7.3 2019年9月16日星期一18:06:32
3.7.2 2019年7月24日星期三20:52:26
3.7.1 2019年7月5日星期五21:16:24
3.6.3 2019年5月16日星期四11:13:05
3.6 2019年4月19日星期五10:17:22

在舊版本的Bot.dll中,它是在受害設備上運行的惡意軟件的組件,在反匯編中檢測到981個功能,而在同一軟件的新版本中檢測到706個功能。使用Diaphora二進制比較工具,有607個函數獲得最佳匹配分數,而有43個函數獲得部分匹配。另外,與Virustotal中的舊版本相比,新的bot文件的文件大小小于50kb。當檢查新的bot文件時,可以看到,舊版本中除基本功能以外的功能都是作為插件實現的。這些新插件可以執行諸如按鍵記錄,過程監視之類的操作,并且可以通過反射加載方法無文件執行。結果,惡意軟件的文件大小減小了,從而為基于簽名的安全軟件解決方案留下了更少的痕跡。

  • 高清插頭
  • hd64.plug
  • hvnc.plug
  • hvnc64.plug
  • keylog.dll
  • keylog64.dll
  • procmon.dll
  • procmon64.dll
  • rdpwrap.dll
  • switcher.dll
  • switcher64.dll
  • vnc.plug
  • vnc64.plug

在本節中,將檢查先前發現的文件中“not”的一些插件。由于這些是臭名昭著的工具包中前所未有的功能,因此,我們認為以下各節對于進一步分析該小組的TTP至關重要。

鍵盤記錄插件

“keylog.dll”插件使用RegisterRawInputDevices API捕獲用戶擊鍵。為了確定在哪個上下文中使用了擊鍵,前臺進程的“可執行文件路徑”,“ Windows文本”和時間戳信息將與擊鍵一起記錄下來。

img

鍵盤記錄插件使用Windows GDI + API將收集的數據轉換為Bitmap,并將其寫入用戶%TEMP%目錄中名為“ SA45E91.tmp”的文件夾中。下圖顯示了惡意軟件用來存儲數據的功能。

img

下圖給出了所獲得日志示例的屏幕截圖。

img

過程監控器插件

該插件可以跟蹤在目標系統中運行的進程,并用于獲取有關所需進程的開始和終止時間的信息。在下圖中,給出了收集有關正在運行的進程的信息的功能的屏幕快照。

img

Tirion裝載機( Carbanak后門的未來)

Fin7小組的新加載程序工具是名為Tirion的惡意軟件,該軟件被認為是替代Carbanak后門程序而開發的。它包含許多功能,用于信息收集,代碼執行,偵察和橫向移動。與上一節中檢查過的最新版本的Carbanak后門程序一樣,該惡意軟件執行的許多功能已作為獨立的插件開發。使用反射性加載方法將它們加載到目標系統中并以無文件方式執行。公開數據顯示,Carbanak后門的開發目前已停止,并且同一團隊正在Tirion Loader上進行開發和測試。攻擊者之間的通信日志表明,此新工具旨在替代Carbanak后門。

img

Tirion惡意軟件的功能如下:

  • 信息收集
  • 截屏
  • 列出運行進程
  • 命令/代碼執行
  • 流程遷移
  • Mimikatz執行
  • 密碼搶奪
  • Active Directory和網絡偵聽

檢測到的最新Tirion Loader版本屬于“2020年6月28日23:24:03”編譯的版本“1.6.4”。下圖顯示了攻擊者可以在機器人設備上執行的操作。“ 1.0”版本是最早檢測到的版本,被認為是使用的第一個版本,已于“2020年3月5日20:29:53”進行了編譯。

我是一個

攻擊者編寫的“readme.txt”文件中的以下文本清楚地說明了惡意軟件的基本組件。

Описание системы удаленного доступа Tirion Система состоит из 3-х компонентов:

  1. Сервер
  2. Клиент
  3. Лоадер Эти компоненты связаны следующим образом: Лоадер переодически коннектится к серверу, клиент подключается к серверу с постоянным коннектом. Лоадер выполняет команды от сервера и передает ему ответы. Через клиента пользователь отдает команды лоадеру через сервер. Полученны ответы от лоадера, сервер передает клиенту.

相關文本的英文翻譯如下。

The system consists of 3 components:

Server

Client

Loader

These components are related as follows:
The loader periodically connects to the server, the client connects to the server with a permanent connection. The loader executes commands from server and sends it responses. Through the client, the user issues commands to the loader through the server. Received responses from the loader,the server transmits to the cl

惡意軟件的文件組織如下:

檔案結構

|-- client
|   |-- client.exe
|   |-- client.ini.xml
|   |-- jumper
|   |   |-- 32
|   |   `-- 64
|   |       `-- l64_r11.ps1
|   |-- keys
|   |   `-- client.key
|   |-- libwebp_x64.dll
|   |-- libwebp_x86.dll
|   `-- plugins
|       `-- extra
|           |-- ADRecon.ps1
|           |-- GetHash32.dll
|           |-- GetHash64.dll
|           |-- GetPass32.dll
|           |-- GetPass64.dll
|           |-- PswInfoGrabber32.dll
|           |-- PswInfoGrabber64.dll
|           |-- PswRdInfo64.dll
|           |-- powerkatz_full32.dll
|           |-- powerkatz_full64.dll
|           |-- powerkatz_short32.dll
|           `-- powerkatz_short64.dll
|-- loader
|   |-- builder.exe
|   |-- loader32.dll
|   |-- loader32.exe
|   |-- loader32_NotReflect.dll
|   |-- loader64.dll
|   |-- loader64.exe
|   `-- loader64_NotReflect.dll
|-- readme.txt
`-- server
    |-- AV.lst
    |-- System.Data.SQLite.dll
    |-- ThirdScripts
    |-- client
    |   `-- client.key
    |-- data.db
    |-- loader
    |   `-- keys
    |       |-- btest.key
    |       `-- test.key
    |-- logs
    |   |-- error
    |   `-- info
    |-- plugins
    |   |-- CommandLine32.dll
    |   |-- CommandLine64.dll
    |   |-- Executer32.dll
    |   |-- Executer64.dll
    |   |-- Grabber32.dll
    |   |-- Grabber64.dll
    |   |-- Info32.dll
    |   |-- Info64.dll
    |   |-- Jumper32.dll
    |   |-- Jumper64.dll
    |   |-- ListProcess32.dll
    |   |-- ListProcess64.dll
    |   |-- NetSession32.dll
    |   |-- NetSession64.dll
    |   |-- Screenshot32.dll
    |   |-- Screenshot64.dll
    |   |-- extra
    |   |-- mimikatz32.dll
    |   `-- mimikatz64.dll
    |-- server.exe
    |-- server.ini.xml
    |-- x64
    |   `-- SQLite.Interop.dll
    |-- x86
        `-- SQLite.Interop.dll

Readme.txt

“readme.txt”文件中內容如下:

client 1.6.3
[+] The result of ADRecon work is saved in the database in the loader from which it was launched, when the tab is called again, the data loaded automatically
[+] Added a form for launching the script ps2x.py (PsExec).
server 1.5
[+] Added support for executing scripts from the ThirdScripts folder

client 1.5
[+] Added plugin NetSession. The plugin collects information about the computers connected to the computer where the loader is running.

client 1.4
[+] added plugin info. In the context menu, select Info and after a while in the Info field there will be the user name, domain and version of Windows

client 1.3.3
[+] The “Get passwords” button has been added to the mimikatz plugin

client 1.3.2
[+] Added support for RDP grabber.
client 1.3
[+] added plugin mimikatz.
[+] added grabber plugin.

server 1.2:
[*] updated data transfer protocol
[+] added AV definition, for this there must be an AV.lst file in the server folder

loader:
[*] updated data transfer protocol
[+] sending local

server 1.1:
[+] - added support for the jumper plugin

client 1.1
[+] - added support for the jumper plugin

裝載機組件

將在受害系統上運行的惡意軟件的此組件大小約為9kb,并從服務器運行命令。當攻擊者想要在受害者的設備上運行某個功能時,包含該功能的相關插件文件會以反射方式加載到受害者的設備上,并以無文件方式執行。

服務器和加載器之間的網絡流量使用在構建階段確定的密鑰進行加密。下圖包含相關的加密算法。

img

PswInfoGrabber

它是一個DLL文件,負責從目標系統中竊取和報告敏感信息,尤其是瀏覽器和郵件密碼。確定攻擊者也獨立于Tirion Loader使用了此工具。在下圖中,包含了由惡意軟件收集的日志的屏幕截圖。

img

opBlueRaven | 第一部分的結尾

在這些系列的第一版中,我們希望通過將PTI發現的最新Carbanak工具包與可公開訪問的較舊版本進行比較,以介紹我們的運營情況。

在下一篇文章中,我們還將通過提供攻擊者之間實際對話的參考來更深入地研究攻擊者的TTP。 此外,我們還將提供直接從威脅行為者的計算機獲取的屏幕截圖。

img

附錄:YARA簽名

import "pe"
rule apt_Fin7_Tirion_plugins
{

    meta:
        author = "Yusuf A. POLAT"
        description = "Tirion Loader's plugins. It is used by Fin7 group. Need manual verification"
        version = "1.0"
        date = "2020-07-22"    
        reference = "https://threatintelligence.blog/"
        copyright = "PRODAFT"
        SHA256 = "fdc0ec0cc895f5b0440d942c0ab60eedeb6e6dca64a93cecb6f1685c0a7b99ae"

    strings:
        $a1 = "ReflectiveLoader" ascii
        $a2 = "plg.dll" fullword ascii
    condition:
        uint16(0) == 0x5A4D  and (all of ($a*)) and filesize < 15000 and (pe.exports("?ReflectiveLoader@@YA_KPEAX@Z") or
            pe.exports("?ReflectiveLoader@@YGKPAX@Z"))
}

rule apt_Fin7_Tirion_PswInfoGrabber
{

    meta:
        author = "Yusuf A. POLAT"
        description = "Tirion Loader's PswInfoGrabber plugin. It is used by Fin7 group."
        version = "1.0"
        date = "2020-07-22"    
        reference = "https://threatintelligence.blog/"
        copyright = "PRODAFT"
        SHA256 = "e7d89d1f23c2c31e2cd188042436ce6d83dac571a5f30e76cbbcdfaf51e30ad9"

    strings:
        $a1 = "IE/Edge Grabber Begin" fullword ascii
        $a2 = "Mail Grabber Begin" fullword ascii
        $a3 = "PswInfoGrabber" ascii
        $a4 = "Chrome Login Profile: '"
        $a5 = "[LOGIN]:[HOST]:"
    condition:
        uint16(0) == 0x5A4D  and (all of ($a*)) and filesize < 150KB
}

rule apt_Fin7_Tirion_loader
{

    meta:
        author = "Yusuf A. POLAT"
        description = "Tirion Loader's loader component. It is used by Fin7 group."
        version = "1.0"
        date = "2020-07-22"    
        reference = "https://threatintelligence.blog/"
        copyright = "PRODAFT"
        SHA256 = "e7d89d1f23c2c31e2cd188042436ce6d83dac571a5f30e76cbbcdfaf51e30ad9"

    strings:
        $a1 = "HOST_PORTS" fullword ascii
        $a2 = "KEY_PASSWORD" fullword ascii
        $a3 = "HOSTS_CONNECT" ascii
        $a4 = "SystemFunction036"
        $a5 = "ReflectiveLoader"
    condition:
        uint16(0) == 0x5A4D  and (all of ($a*)) and filesize < 15KB
}

rule apt_Fin7_Carbanak_keylogplugin  
{

    meta:
        author = "Yusuf A. POLAT"
        description = "Carbanak backdoor's keylogger plugin. It is used by Fin7 group"
        version = "1.0"
        date = "2020-07-21"    
        reference = "https://threatintelligence.blog/"
        copyright = "PRODAFT"
        SHA256 = "db486e0cb94cf2bbe38173b7ce0eb02731ad9a435a04899a03d57b06cecddc4d"

    strings:
        $a1 = "SA45E91.tmp" fullword ascii
        $a2 = "%02d.%02d.%04d %02d:%02d" fullword ascii
        $a3 = "Event time:" fullword ascii
        $a4 = "MY_CLASS" fullword ascii
        $a5 = "RegisterRawInputDevices" fullword ascii 

    condition:
        uint16(0) == 0x5A4D  and (all of ($a*)) and filesize < 15000
}

rule apt_Fin7_Carbanak_procmonplugin  
{

    meta:
        author = "Yusuf A. POLAT"
        description = "Carbanak backdoor's process monitoring plugin. It is used by Fin7 group"
        version = "1.0"
        date = "2020-07-21"    
        reference = "https://threatintelligence.blog/"
        copyright = "PRODAFT"
        SHA256 = "3bf8610241a808e85e6ebaac2bb92ba4ae92c3ec1a6e56e21937efec71ea5425"

    strings:
        $a1 = "[%02d.%02d.%04d %02d:%02d:%02d]" fullword ascii
        $a2 = "%s open %s" fullword ascii
        $a3 = "added monitoring %s" fullword ascii
        $a4 = "pm.dll" fullword ascii
        $a5 = "CreateToolhelp32Snapshot" fullword ascii  

    condition:
        uint16(0) == 0x5A4D  and (all of ($a*)) and filesize < 10000
}

rule apt_Fin7_Carbanak_hdplugin  
{

    meta:
        author = "Yusuf A. POLAT"
        description = "Carbanak backdoor's hidden desktop plugin. It is used by Fin7 group"
        version = "1.0"
        date = "2020-07-21"    
        reference = "https://threatintelligence.blog/"
        copyright = "PRODAFT"
        SHA256 = "39b545c7cd26258a9e45923053a5a64c9461470c3d7bfce3be1c776b287e8a95"

    strings:
        $a1 = "hd%s%s" fullword ascii
        $a2 = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced" fullword ascii
        $a3 = "StartHDServer" fullword ascii
        $a4 = "SetThreadDesktop" fullword ascii
    condition:
        uint16(0) == 0x5A4D  and (all of ($a*)) and filesize < 15000
}
rule apt_Fin7_Carbanak_hvncplugin  
{

    meta:
        author = "Yusuf A. POLAT"
        description = "Carbanak backdoor's hvnc plugin. It is used by Fin7 group"
        version = "1.0"
        date = "2020-07-21"    
        reference = "https://threatintelligence.blog/"
        copyright = "PRODAFT"
        SHA256 = "40ce820df679b59476f5d277350dca43e3b3f8cac7ec47ad638371aaa646c315"

    strings:
        $a1 = "VncStartServer" fullword ascii
        $a2 = "VncStopServer" fullword ascii
        $a3 = "RFB 003.008" fullword ascii
        $a4 = "-nomerge -noframemerging" fullword ascii
        $a5 = "--no-sandbox --allow-no-sandbox-job --disable-3d-apis --disable-gpu --disable-d3d11" fullword wide
    condition:
        uint16(0) == 0x5A4D  and (all of ($a*)) and filesize < 300000
}

rule apt_Fin7_Carbanak_vncplugin  
{

    meta:
        author = "Yusuf A. POLAT"
        description = "Carbanak backdoor's vnc plugin. It is used by Fin7 group"
        version = "1.0"
        date = "2020-07-21"    
        reference = "https://threatintelligence.blog/"
        copyright = "PRODAFT"
        SHA256 = "ecf3679f659c5a1393b4a8b7d7cca615c33c21ab525952f8417c2a828697116a"

    strings:
        $a1 = "VncStartServer" fullword ascii
        $a2 = "VncStopServer" fullword ascii
        $a3 = "ReflectiveLoader" fullword ascii
        $a4 = "IDR_VNC_DLL" fullword ascii
    condition:
        uint16(0) == 0x5A4D  and (all of ($a*)) and filesize < 400000
}

rule apt_Fin7_Carbanak_rdpplugin  
{

    meta:
        author = "Yusuf A. POLAT"
        description = "Carbanak backdoor's rdp plugin. It is used by Fin7 group"
        version = "1.0"
        date = "2020-07-21"    
        reference = "https://threatintelligence.blog/"
        copyright = "PRODAFT"
        SHA256 = "0d3f1696aae8472145400d6858b1c44ba7532362be5850dae2edbd4a40f36aa5"

    strings:
        $a1 = "sdbinst.exe" fullword ascii
        $a2 = "-q -n \"UAC\"" fullword ascii
        $a3 = "-q -u \"%s\"" fullword ascii
        $a4 = "test.txt" fullword ascii
        $a5 = "install" fullword ascii
        $a6 = "uninstall" fullword ascii
    condition:
        uint16(0) == 0x5A4D  and (all of ($a*)) and filesize < 400000
}

rule apt_Fin7_Carbanak_switcherplugin  
{

    meta:
        author = "Yusuf A. POLAT"
        description = "Carbanak backdoor's switcher plugin. It is used by Fin7 group"
        version = "1.0"
        date = "2020-07-21"    
        reference = "https://threatintelligence.blog/"
        copyright = "PRODAFT"
        SHA256 = "d470da028679ca8038b062f9f629d89a994c79d1afc4862104611bb36326d0c8"

    strings:
        $a1 = "iiGI1E05.tmp" fullword ascii
        $a2 = "oCh4246.tmp" fullword ascii
        $a3 = "inf_start" fullword ascii
        $a4 = "Shell_TrayWnd" fullword ascii
        $a5 = "ReadDirectoryChangesW" fullword ascii
        $a6 = "CreateToolhelp32Snapshot" fullword ascii
    condition:
        uint16(0) == 0x5A4D  and (all of ($a*)) and filesize < 15000
}

Paper 本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/1335/