2018-2019-2 網絡對抗技術 20165318 Exp4 惡意代碼分析


2018-2019-2 網絡對抗技術 20165318 Exp4 惡意代碼分析


原理與實踐說明

1.實踐目標

  • 監控你自己系統的運行狀態,看有沒有可疑的程序在運行。
  • 分析一個惡意軟件,就分析Exp2或Exp3中生成后門軟件;分析工具盡量使用原生指令或sysinternals,systracer套件。
  • 假定將來工作中你覺得自己的主機有問題,就可以用實驗中的這個思路,先整個系統監控看能不能找到可疑對象,再對可疑對象進行進一步分析,好確認其具體的行為與性質。

2.實踐內容概述

  • 系統運行監控
    • 使用如計划任務,每隔一分鍾記錄自己的電腦有哪些程序在聯網,連接的外部IP是哪里。運行一段時間並分析該文件,綜述分析結果。
    • 安裝配置sysinternals里的sysmon工具,設置合理的配置文件,監控自己主機的重點事可疑行為。
  • 分析該軟件在(1)啟動回連,(2)安裝到目標機(3)及其他任意操作時(如進程遷移或抓屏,重要是你感興趣)。該后門軟件
    • 讀取、添加、刪除了哪些注冊表項
    • 讀取、添加、刪除了哪些文件
    • 連接了哪些外部IP,傳輸了什么數據

3.基礎問題回答

  • 如果在工作中懷疑一台主機上有惡意代碼,但只是猜想,所有想監控下系統一天天的到底在干些什么。請設計下你想監控的操作有哪些,用什么方法來監控。

    • 使用windows自帶的schtasks指令設置一個計划任務,發現網絡連接異常
    • 使用Sysmon,編寫配置文件,記錄有關的系統日志
    • 使用Process Explorer工具,監視進程執行情況。
    • 使用Process Monitor工具,監視文件系統、注冊表、進程/線程的活動。
  • 如果已經確定是某個程序或進程有問題,你有什么工具可以進一步得到它的哪些信息。

    • 使用systracer工具分析惡意軟件,查看其對注冊表和文件的修改。
    • 使用Wireshark進行抓包分析,監視其與主機進行的通信過程。
    • 使用Process Explorer工具或Process Monitor工具,監視文件系統、注冊表、進程/線程的活動。

返回目錄


實踐過程記錄

1.使用schtasks指令監控系統(使用如計划任務,每隔一分鍾記錄自己的電腦有哪些程序在聯網,連接的外部IP是哪里。運行一段時間並分析該文件,綜述分析結果)

  • 使用schtasks /create /TN netstat5318 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstatlog.txt"命令創建計划任務netstat5318

    • TN是TaskName的縮寫,我們創建的計划任務名是netstat5318;
    • sc表示計時方式,我們以分鍾計時填MINUTE;
    • TR=Task Run,要運行的指令是 netstat
    • bn,b表示顯示可執行文件名,n表示以數字來顯示IP和端口;
    • >表示輸出重定向,將輸出存放在c:\netstatlog.txt文件中
  • 在C盤中創建一個netstat5318.bat腳本文件,寫入以下內容

    date /t >> c:\netstat5318.txt
    time /t >> c:\netstat5318.txt
    netstat -bn >> c:\netstat5318.txt
    
  • 打開任務計划程序,可以看到新創建的這個任務:

  • 雙擊這個任務,點擊操作並編輯,將“程序或腳本”改為我們創建的netstat5318.bat批處理文件,確定即可。

  • 還可以自行更改該任務的其他屬性,如在"條件"選項卡中可以看到,電源選項中默認操作為“只有在計算機使用交流電源時才啟動此任務”,那么使用電池電源時就會停止任務。這點需要格外注意,如果沒有修改默認操作,任務無論如何都無法執行可能只是因為拔掉了電源。,為了我們統計足夠多的數據,最好把這個取消掉

  • 執行此腳本一定時間,就可以在netstat5318.txt文件中查看到本機在該時間段內的聯網記錄:

  • 當記錄的數據足夠豐富時,停止任務,將所得數據在excel中進行分析,此過程要一直保持開機聯網狀態才能持續監控

  • 等待一段時間(如一天),將存儲的數據通過excel表進行整理,過程參考可愛的學姐的博客

    • 統計數據如下:

    • 統計圖如下:

  • 由統計數據可知,聯網最多的是是火狐瀏覽器對應的程序“firefox.exe”,排名第二的是“vmware.exe”,它虛擬機的進程。這里我們還可以找到微信、TIM、后門程序20165318_win7_騰訊電腦管家.exe這些連網的進程。

返回目錄

2.使用sysmon工具監控系統(安裝配置sysinternals里的sysmon工具,設置合理的配置文件,監控自己主機的重點事可疑行為。)

  • sysmon是微軟Sysinternals套件中的一個工具,使用sysmon工具前首先要配置文件。參考使用輕量級工具Sysmon監視你的系統該文章,創建配置文件sysmon20165318.xml

  • 可選擇的事件過濾器有 ProcessCreate 進程創建、FileCreateTime 進程創建時間、NetworkConnect 網絡鏈接、ProcessTermina 進程結束、DriverLoad 驅動加載、ImageLoad 鏡像加載、CreateRemoteTh 遠程線程創建、RawAccessRead 驅動器讀取、ProcessAccess 進程訪問、FileCreate 文件創建、RegistryEvent 注冊表事件、FileCreateStre 文件流創建等。

  • 我比較感興趣的是進程創建ProcessCreate、進程創建時間FileCreatTime、網絡連接NetworkConnect、遠程線程創建CreateRemoteThread。

  • 過濾器事件的選項:

    • 進程創建ProcessCreate的過濾事件選項有:UtcTime, ProcessGuid, ProcessId, Image, CommandLine, CurrentDirectory, User, LogonGuid, LogonId, TerminalSessionId, IntegrityLevel, Hashes, ParentProcessGuid, ParentProcessId, ParentImage, ParentCommandLine
    • 進程創建時間FileCreatTime的過濾事件選項有:UtcTime, ProcessGuid, ProcessId, Image, TargetFilename, CreationUtcTime, PreviousCreationUtcTime
    • 網絡連接NetworkConnect的過濾事件選項有:UtcTime, ProcessGuid, ProcessId, Image, User, Protocol, Initiated, SourceIsIpv6, SourceIp, SourceHostname, SourcePort, SourcePortName, DestinationIsIpv6, DestinationIp, DestinationHostname, DestinationPort, DestinationPortName
    • 遠程線程創建CreateRemoteThread的過濾事件選項有:UtcTime, SourceProcessGuid, SourceProcessId, SourceImage, TargetProcessGuid, TargetProcessId, TargetImage, NewThreadId, StartAddress, StartModule, StartFunction
  • 我創建的配置文件sysmon20165318.xml內容如下:

<Sysmon schemaversion="4.12">
  <!-- Capture all hashes -->
  <HashAlgorithms>*</HashAlgorithms>
  <EventFiltering>
    <!-- Log all drivers except if the signature -->
    <!-- contains Microsoft or Windows -->
    <ProcessCreate onmatch="exclude">     
      <Image condition="end with">chrome.exe</Image> 
      <Image condition="end with">firefox.exe</Image>
    </ProcessCreate>

    <ProcessCreate onmatch="include"> 
      <ParentImage condition="end with">cmd.exe</ParentImage>
    </ProcessCreate>

    <FileCreateTime onmatch="exclude" >
      <Image condition="end with">chrome.exe</Image>
      <Image condition="end with">firefox.exe</Image>
    </FileCreateTime>
    
    <NetworkConnect onmatch="exclude">
      <Image condition="end with">chrome.exe</Image>
      <Image condition="end with">firefox.exe</Image>
      <SourcePort condition="is">137</SourcePort>
      <SourceIp condition="is">127.0.0.1</SourceIp>
    </NetworkConnect>

    <NetworkConnect onmatch="include">     
      <DestinationPort condition="is">80</DestinationPort>      
      <DestinationPort condition="is">443</DestinationPort>    
    </NetworkConnect>

    <CreateRemoteThread onmatch="include">
      <TargetImage condition="end with">explorer.exe</TargetImage>
      <TargetImage condition="end with">svchost.exe</TargetImage>
      <TargetImage condition="end with">firefox.exe</TargetImage>
      <TargetImage condition="end with">winlogon.exe</TargetImage>
      <SourceImage condition="end with">powershell.exe</SourceImage>
    </CreateRemoteThread>
  </EventFiltering>
</Sysmon>

參數解釋:

  • exclude相當於白名單,不用記錄。include相當於黑名單。

  • Image condition這里要根據自己使用的瀏覽器更改,例如谷歌瀏覽器是“chrome.exe”,IE瀏覽器是“iexplore.exe”,火狐瀏覽器是“firefox.exe”我用的是360瀏覽器和火狐瀏覽器寫在exclude中就是不記錄由360瀏覽器和火狐瀏覽器創建的進程。想知道自己瀏覽器進程名,可以查看“netstat5318.txt”中的記錄。

  • 進程創建時間類似,也是不創建瀏覽器創建進程的時間。

  • 網絡連接過濾掉了瀏覽器的網絡連接、源IP為127.0.0.1的網絡連接和目的端口為137的連接服務,並查看目的端口為80(http)和443(https)的網絡連接。

    • 137端口的主要作用是在局域網中提供計算機的名字或IP地址查詢服務,一般安裝了NetBIOS協議后,該端口會自動處於開放狀態。
    • 127.0.0.1表示本機IP。
  • 遠程線程創建記錄了目標為explorer.exe、svchost.exe、firefox.exe、winlogon.exe和powershell.exe 的遠程線程。

    • explorer.exe是Windows程序管理器或者文件資源管理器
    • svchost.exe是一個屬於微軟Windows操作系統的系統程序,是從動態鏈接庫 (DLL) 中運行的服務的通用主機進程名稱。
    • winlogon.exe是Windows NT 用戶登陸程序,用於管理用戶登錄和退出。
    • powershell.exe是專為系統管理員設計的新 Windows 命令行外殼程序。該外殼程序包括交互式提示和腳本環境,兩者既可以獨立使用也可以組合使用。
  • 安裝sysmon:執行命令sysmon.exe -i C:\sysmon20165318.xml,成功安裝結果如下:

  • 查看“事件查看器”,選擇日志的位置,應用程序和服務日志/Microsoft/Windows/Sysmon/Operational,在這里,我們可以看到按照配置文件的要求記錄的新事件,以及事件ID、任務類別、詳細信息等。

  • 這個配置文件記錄的第一個日志就是打開C:\sysmon20165318.xml配置文件

  • 分析日志,我分析的是自己生成的后門文件進行分析。

    • 啟動回連到kali

    • 找到運行后門文件相對應的日志,打開這個事件,可以看到其屬於“NetworkContect”。查看詳細信息,可以看到這個后門映像文件的具體位置、源IP和端口、目的IP和端口等

    • 運行shell,getuid等命令之后,我們都會找到一個之前沒有出現過的C:\Windows\SysWOW64\cmd.exe程序如下圖所示,SysWOW64可以在64bit的Windows中運行32bit的程序,而Windows下的cmd.exe是64bit的,kali回連獲取的windows的cmd程序是32位的!

    • 在執行完getuid指令后,出現了以下兩個日志,雖然在沒有運行后門之前這兩個指令也會出現,但是緊接着getuid指令后出現就讓人心存疑慮了

    • SearchFilterHost.exe是桌面搜索引擎的索引程序,其主要作用是建立快速索引文件,讓用戶能夠更好的搜索出電腦中的任意資料。它會在計算機空閑時自動掃描索引位置的文件名、屬性信息和給定類別的文件內容,這些索引位置默認包括桌面、收藏夾、開始菜單、系統目錄。

返回目錄

惡意軟件分析

  • 靜態分析
    • 文件掃描(VirusTotal、VirusScan工具等)
    • 文件格式識別(peid、file、FileAnalyzer工具等)
    • 字符串提取(Strings工具等)
    • 反匯編(GDB、IDAPro、VC工具等)
    • 反編譯(REC、DCC、JAD工具等)
    • 邏輯結構分析(Ollydbg、IDAPro工具等)
    • 加殼脫殼(UPX、VMUnPacker工具等)

3.使用VirusTotal分析惡意軟件

  • 把生成的惡意代碼放在VirusTotal進行分析(也可以使用VirusScan工具),基本情況如下:

    雖然有20個報毒,但是對比實驗三中生成的那些后門來說已經算是比較少的了。

  • 查看這個惡意代碼的基本屬性:

    可以看出它的SHA-1、MD5摘要值、文件類型、文件大小,以及TRiD文件類型識別結果。(注:TRiD通過讀取文件頭,根據特征碼進行文件類型匹配。)最神奇的是它可以查出來文件的編碼方式,可以看出我是用VC++進行編譯的!

  • 還可以看到加殼情況:

  • 以及該惡意代碼的算法庫支持情況:

返回目錄

4.使用PEiD分析惡意軟件

> PEiD(PE Identifier)是一款著名的查殼工具,其功能強大,幾乎可以偵測出所有的殼,其數量已超過470種PE文檔的加殼類型和簽名。
  • 先看一下沒有加殼的后門程序

  • 再看一下加過壓縮殼的后門程序:

  • 再看一下加過加密殼的后門程序:

  • 我們可以看到,這個軟件雖然可以查到壓縮殼,但是竟然查不到加密殼!!!,說好的可以偵測出所有的殼呢(* ̄︶ ̄)

返回目錄

5.使用PE Explorer分析惡意軟件

PE Explorer是功能超強的可視化Delphi、C++、VB程序解析器,能快速對32位可執行程序進行反編譯,並修改其中資源。該軟件支持插件,你可以通過增加插件加強該軟件的功能,原公司在該工具中捆綁了UPX的脫殼插件、掃描器和反匯編器,可以查看程序頭部信息(默認界面)、程序靜態數據目錄、程序結頭信息、對程序反匯編等等,非常好用。

  • 這里主要看文件引用的dll庫,可以通過視圖->引入進行查看,如下圖所示:


    • KERNEL32.dll:控制着系統的內存管理、數據的輸入輸出操作和中斷處理。
    • msvcrt.dll:是微軟編譯軟件的函數庫。
    • USER32.dll:Windows用戶界面相關應用程序接口,用於包括Windows處理,基本用戶界面等特性,如創建窗口和發送消息。它是一個對系統很關鍵或很可疑的文件,易遭受木馬病毒破壞導致系統找不到此文件,出現錯誤提示框。
    • WSOCK32.dll:Windows Sockets應用程序接口,用於支持很多Internet和網絡應用程序。是一個對系統很關鍵或很可疑的文件,易遭受木馬病毒破壞導致系統找不到此文件,出現錯誤提示框。
    • 我使用該工具查看了實驗三生成的多個后門程序,發現使用veil生成的后門程序所引用的dll文件是最多的,而且所有的后門程序都會引用KERNEL32.dll這個文件。

返回目錄

  • 動態分析
    • 快照比對(SysTracer、Filesnap、Regsnap工具等)
    • 抓包分析(WireShark工具等)
    • 行為監控(Filemon、Regmon、ProcessExplorer工具等)
    • 沙盒(NormanSandbox、CWSandbox工具等)
    • 動態跟蹤調試(Ollydbg、IDAPro工具等)

6.使用Process Monitor分析惡意軟件

Process Monitor 是一款由 Sysinternals 公司開發的包含強大的監視和過濾功能的高級 Windows 監視工具,可實時顯示文件系統、注冊表、進程/線程的活動。

  • 打開軟件,可以看到各個進程的詳細記錄,下圖是我的后門進程:(大家如果使用這個軟件,一定一定不要光靠肉眼去找,要善於利用查找,不然猶如大海撈針啊!!!)

  • 進程的詳細信息如下:

  • 我們還可以看到這個后門程序引用的各種其他的庫

返回目錄

7.使用Process Explorer分析惡意軟件

Process Explorer是由Sysinternals開發的Windows系統和應用程序監視工具,目前已並入微軟旗下。不僅結合了Filemon(文件監視器)和Regmon(注冊表監視器)兩個工具的功能,還增加了多項重要的增強功能。包括穩定性和性能改進、強大的過濾選項、修正的進程樹對話框(增加了進程存活時間圖表)、可根據點擊位置變換的右擊菜單過濾條目、集成帶源代碼存儲的堆棧跟蹤對話框、更快的堆棧跟蹤、可在 64位 Windows 上加載 32位 日志文件的能力、監視映像(DLL和內核模式驅動程序)加載、系統引導時記錄所有操作等。

  • 靶機運行后門程序進行回連時,我們可以在 Process Explorer工具中查看到其記錄,我們可以看到這個程序運行時子程序中有conhost.exe這個程序,同樣的程序我們可以在cmd.exe的子程序中看到,由此我們可以知道該程序是在命令行中運行的。

  • 也可以詳細查看該進程使用的CPU,虛擬內存空間、物理內存空間、I/O等。

返回目錄

8.使用systracer分析惡意軟件

  • 此實驗建議在兩台虛擬機中進行,windows虛擬機文件少,進行快照時間短,且易於分析。

  • 下載SysTracer工具

  • 點擊右側的take snapshot,存儲快照

    • 快照一:未移植后門程序,保存為Snapshot #1
    • 快照二:移植后門程序,保存為Snapshot #2
    • 快照三:運行后門程序並在kali中實現回連,保存為Snapshot #3
    • 快照四:在kali中使用dir指令,保存為Snapshot #4
    • 快照五:在kali中使用record_mic指令,保存為Snapshot #5


  • 通過右下角的compare鍵或者View Differences Lists比對各快照,可以選擇Only Difference只查看不同的項

  • 對比快照一快照二:增加了我的后門程序20165318_backdoor.exe

  • 這里可以看到很多增加,刪除,更新的鍵值和文件

  • 對比快照二快照三(后門啟動前與啟動后):

    • 可以看到新增的后門進程,而且可以詳細看到其的目的IP和端口號、源IP和端口號以及連接的協議:

    • 而且該后門程序生成了很多文件、目錄和鍵值

    • c:\Windows\Prefetch目錄下增加了相關的文件

      此外,如上圖所示,一些Systracer未授權的地方我們是沒法查看的。

    • HKEY_USERHKEY_CURRENT_USER根鍵中的Software子鍵進行了修改(HKEY_CURRENT_USER管理系統當前的用戶信息。在這個根鍵中保存了本地計算機中存放的當前登錄的用戶信息,包括用戶登錄用戶名和暫存的密碼。):

  • 對比快照三快照四:kali上執行dir指令

    • key_local_machine根鍵中的內容進行了修改(HKEY_LOCAL_MACHINE保存了注冊表里的所有與這台計算機有關的配置信息)
    • c:\Program Files\SysTracer\data新增了snap003
  • 對比快照四快照五:kali上執行record_mic指令

    • 注冊表項中有以下變化:

    • 新建了很多連接,其中有與后門程序相關的Apache HTTP Server
    • 進程中增加了這一項,而且是與多媒體有關的,我猜測應該是與record_mic指令相關
  • 此外我們可以通過查看后門軟件的“opened handles”(打開的句柄)來對比他們都做了什么

返回目錄

9.使用wireshark抓包分析惡意軟件

  • 回連完成后結束捕獲,並把過濾規則設置為ip.addr == 10.1.1.128,這里我只想查看和虛擬機IP有關的數據包,所以把沒用的包過濾掉

  • 我們可以看到有大量的TCP包,這其中有回連相關的包,之后我有用dir指令查看了靶機的當前目錄,傳輸了很多數據過來:

  • 傳輸的數據包括Windows向Kali發出TCP同步請求包SYN,Kali給Windows發出的SYN同步請求包和確認包ACK,Kali給Windows傳的ACK包、PSH+ACK包等等(PSH表示有DATA數據傳輸)

返回目錄


實驗中遇到的問題及解決方法

  • 在安裝sysmon是,出現以下問題:
    • 因為我的配置文件中版本原來設置的是“3.10”,與我下載的sysmon版本不符,改成"4.20"之后就可以正常安裝了

返回目錄


實驗總結與體會

  • 本次實驗在操作上沒有什么難度,主要是下載安裝軟件並應用,重點在於如何利用這些軟件分析惡意代碼。在不斷實踐的過程中,我掌握了很多種工具的用法,學會了如何讓計算機周期性執行一個任務,如果把命令行下的結果記錄到文件中、如何利用.bat文件顯示時間、如何利用excel分析數據、如何利用Sysmon監控自己感興趣的事件、如何寫配置文件、如何分析日志中的大量信息、如何利用多種工具對惡意代碼進行進一步分析。

  • 尤其是在動態分析的時候,特別考驗我們的信息處理能力,明顯看到有很多不同,但是分析是又不知道該從何下手,不太清楚每一項具體代表什么含義,只能通過查閱資料,連蒙帶猜的進行分析。

  • 通過自己動手實踐,實現了從攻擊者身份到檢測、分析者身份的轉變,更全面的理解了前兩次實驗中生成的后門程序到底在做什么,對惡意代碼有了更深入的理解。

返回目錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM