1. 程式人生 > 其它 >Exp4 惡意程式碼分析

Exp4 惡意程式碼分析

目錄

Exp4 惡意程式碼分析

實踐目標

  • 是監控你自己系統的執行狀態,看有沒有可疑的程式在執行。

  • 是分析一個惡意軟體,就分析Exp2或Exp3中生成後門軟體;分析工具儘量使用原生指令或sysinternals,systracer套件。

  • 假定將來工作中你覺得自己的主機有問題,就可以用實驗中的這個思路,先整個系統監控看能不能找到可疑物件,再對可疑物件進行進一步分析,好確認其具體的行為與性質。

實踐內容-系統執行監控

系統執行監控-計劃任務

寫.bat檔案與接收檔案

指令碼檔案
date /t >> C:\exp4\netstatlog.txt
time /t >> C:\exp4\netstatlog.txt
netstat -bn >> C:\exp4\netstatlog.txt
接收檔案

建立計劃任務

schtasks /create /TN netcontrol1310 /sc MINUTE /MO 1 /TR "C:\exp4\20191310netcontrol.bat"

指令分析:

檢視任務計劃

設定相應許可權

設定選項:

等待之後檢視資料

我們用Excel分析獲得的資料

匯入資料

新建excel檔案->選擇上方“資料”->選擇“獲取外部資料”->選擇“自文字”

進入檔案匯入嚮導第一步

選中“分隔符號”,點選“下一步”

進入檔案匯入嚮導第二步

選中全部分隔符號,點選“下一步”

進入檔案匯入嚮導第三步

列資料格式選擇常規,點選“完成”

匯入情況完成
對資料進行統計學分析

首先檢視所有聯網程式的聯網次數,具體excel操作如下

選中分析資料

選中分析結果所在表

遴選資料標籤,選中軸和值

生成分析表格:

分析結果

在此項中,“nvcontroller”是方式最多的,這裡基本上每次連線都會涉及,排名第二的是“NVDIA”。這裡我們還可以找到微信、虛擬機器、onedirve等程序資訊。

安裝配置sysinternals裡的sysmon工具,設定合理的配置檔案,監控自己主機的重點事可疑行為

下載安裝sysmon

設定配置檔案

新建一個配置檔案,我這裡命名為1310sysmon

<Sysmon schemaversion="4.81">
  <!-- 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> 
    </ProcessCreate>

    <FileCreateTime onmatch="exclude" >
      <Image condition="end with">chrome.exe</Image>
    </FileCreateTime>
    
    <NetworkConnect onmatch="exclude">
      <Image condition="end with">chrome.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">winlogon.exe</TargetImage>
      <SourceImage condition="end with">powershell.exe</SourceImage>
    </CreateRemoteThread>
  </EventFiltering>
</Sysmon>
在有sysmon.exe的檔案目錄下用管理員方式開啟cmd

輸入

 .\Sysmon.exe -i .\1310sysmon.txt
有彈窗,點選agree
成功安裝

分析

執行實驗二和實驗三的後門軟體

已經正常回連

檢視sysmon

桌面“這臺電腦”圖示,右鍵選單中,點選開啟“管理”,點選左側“系統工具”->“事件檢視器”,點選“事件檢視器”右側小箭頭,選擇日誌的位置:應用程式和服務日誌/Microsoft/Windows/Sysmon/Operational。

Sysmon具體分析日誌的例子我選擇了自己實驗三中生成的後門20191310_upx.exe進行分析
進行攻擊例項

檢視sysmon

出現了SearchFilterHost.exe、conhost.exe等系統執行exe,但是後門的通訊沒有具體展示,應該是在conhonst中隱藏了。

  • conhost.exe是命令列程式的宿主程序。簡單的說他是微軟出於安全考慮,在windows 7和Windows server 2008中引進的新的控制檯應用程式處理機制。
  • SearchFilterHost.exe是桌面搜尋引擎的索引程式,其主要作用是建立快速索引檔案,讓使用者能夠更好的搜尋出電腦中的任意資料。它會在計算機空閒時自動掃描索引位置的檔名、屬性資訊和給定類別的檔案內容,這些索引位置預設包括桌面、收藏夾、開始選單、系統目錄。
繼續分析

每進行一次攻擊,不管成功與否(可能不成功)我們就發現了都有這樣的svhost

Svchost.exe是微軟視窗作業系統裡的一個系統程序,管理通過Dll檔案啟動服務的其它程序,一些病毒木馬偽裝成系統dll檔案通過Svchost呼叫它,試圖隱藏自己。每個svchost可以同時呼叫多個dll檔案,啟動多個服務。

說明這裡是採用了微軟視窗裡的這個系統程序進行的攻擊。

當然也有直接顯示的:

這裡便是利用sysmon的分析簡要過程,還可以利用sysmon得到的資訊檢索更有效的分析結果!

惡意軟體分析

分析該軟體在

(1)啟動回連

(2)安裝到目標機

(3)其他任意操作時(如程序遷移或抓屏,重要是你感興趣)

該後門軟體

(3)讀取、新增、刪除了哪些登錄檔項

(4)讀取、新增、刪除了哪些檔案

(5)連線了哪些外部IP,傳輸了什麼資料

利用Systracer進行動態分析

下載安裝systracer

安裝大版,選擇2

設定埠,我設定成我實驗二和三常用的埠

快照

在後門沒開啟之前先快照一下。點選“take snapshot”,如圖,按照以下步驟進行:

完成

Kali開啟msfconsole,完成相關設定後開始監聽,Windows執行後門後,拍攝快照:

新的快照完成

快照分析(讀取、新增、刪除了哪些檔案)

  • 點選上方“Applications”->左側“Running Processes”->找到後門程序“zjy_backdoor.exe”->點選“Opened Ports”查看回連地址、遠端地址和埠號:
  • 在快照介面“Snapshots”右下角點選“Compare”,比對一下回連前後計算機發生的變化:
  • 大致的結果(讀取新增刪除了哪些登錄檔項):

所有藍色標註的地方,就是前後發生變化的地方。例如,我發現後門啟動後,對我的"Local Settings"->"Software"中的檔案進行了修改

同時:

hkey_local_machine根鍵的System子鍵進行了修改。

這裡關於HKEY_LOCAL_MACHINE的介紹:

  • 它儲存了登錄檔裡的所有與這臺計算機有關的配置資訊
  • 被修改的部分是Fastcache,即高速緩衝儲存器。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control這個子鍵包括了win95控制面板中的資訊。不要編輯這些資訊,因為一些小程式的改變在很多地方,一個丟失的項會使這個系統變的不穩定。

同樣,這裡只要kali機進行了攻擊指令,那麼一定會有快照的變化,我們利用這種方法,可以初步進行對比前後的時間分析!

利用wireshark進行抓包分析

kali回連之前捕獲

回連完成後結束捕獲(連線了哪些外部IP)

過濾規則設定為 ip.addr == 192.168.40.128,這裡我只想檢視和虛擬機器IP有關的資料包,所以把沒用的包過濾掉:

在這裡已經發現了和自己主機(被攻擊的通道)

傳輸的資料(傳輸了什麼資料)

第一條是kali向win傳送的[PSH,ACK]包

第二條便是回覆確認包

分析中必定能找到握手包,且包攜帶有資料

Kali獲取下攝像頭、錄個音、獲取擊鍵記錄並檢視,再看看wireshark

這回PSH+ACK的包好像多了些,估計多出來的便是我們這些攻擊手段衍生的資料包。

通過PEview分析

根據PE檔案的完整性以及相關特徵來進行分析,本程式使用了ADVAPI32.dllKERNEL32.dllMSVCRT.dllWS2_32.dllWSOCK32.dll連結庫,其中WS2_32.dllWSOCK32.dll是比較熟悉的win上面編寫SOCKET用的,這是用來回連使用的,而ADVAPI32.dll是一個高階API應用程式介面服務庫的一部分,包含的函式與物件的安全性,登錄檔的操控以及事件日誌有關,從這句解釋就可以看出,本後門程式的潛在的威脅,KERNEL32.dll是Windows 9x/Me中非常重要的32位動態連結庫檔案,屬於核心級檔案。它控制著系統的記憶體管理、資料的輸入輸出操作和中斷處理,當Windows啟動時,kernel32.dll就駐留在記憶體中特定的防寫區域,使別的程式無法佔用這個記憶體區域。而MSVCRT.dll是微軟在windows作業系統中提供的C語言執行庫執行檔案(Microsoft Visual C Runtime Library),其中提供了printf,malloc,strcpy等C語言庫函式的具體執行實現,並且為使用C/C++(Vc)編譯的程式提供了初始化(如獲取命令列引數)以及退出等功能。

故此種分析也是可以的!

Stud_PE編輯與檢視(已經分析好的劃分資料)

使用OllyDbg分析程式

單步除錯:

可檢視入口地址,堆疊情況

實驗後回答問題

(1)如果在工作中懷疑一臺主機上有惡意程式碼,但只是猜想,所有想監控下系統一天天的到底在幹些什麼。請設計下你想監控的操作有哪些,用什麼方法來監控。

我會看他修改了哪些登錄檔、建立了哪些程序、佔用了哪些埠、修改、查看了哪些檔案等等,利用上面實驗所使用的檔案或者程式,比如說快照技術的對比,還比如說可以定時讓主機執行netstat然後分析,去編寫一些指令碼檔案,當然也可以利用Sysmon,編寫配置檔案,記錄與自己關心的事件有關的系統日誌,然後採用視覺化方法讀取並且匯入分析!

為實現網路監控,我可以採用這些工具:Fport,lsof,TDImon,ifconfig,tcpdump

(2)如果已經確定是某個程式或程序有問題,你有什麼工具可以進一步得到它的哪些資訊

  • 可以利用IDAPro,gdb,SoftICE,systrace,ollydbg進行單步除錯

  • 可以利用Wireshark等網路工具檢視是否存在可疑連線

  • 可以利用工具Systracer拍攝快照,比對前後區別,分析改變的登錄檔及檔案等資訊

  • 當然為了安全,可以利用NormanSandbox,CWSandbox,FVMSandbox等工具

實驗總結與體會

在本次實驗中,在週期性任務那裡我學會了命令列的操控方法,學會了把命令列下的結果記錄到檔案中、利用.bat檔案顯示時間、以及按照學姐學長們的方法利用excel分析資料、當然可以利用別的工具如python,但是我環境壞掉了,就不行了。我還學會了如何利用Sysmon監控自己的事件、如何寫配置檔案、如何分析日誌中的大量資訊、如何對惡意程式碼進行進一步分析。

通過這樣的一個動手實踐,實現了從攻擊者身份到檢測、分析者身份的轉變,更全面的理解了前兩次實驗中生成的後門程式到底在做什麼,對惡意程式碼有了更深入的理解。

同時這次的實驗是讓我們通過個這種各樣的工具或者軟體去更好的瞭解自己的電腦在做著什麼,這次實驗下載了一些工具,頗有感覺!

網路對抗,異常重要,資訊保安,任重道遠!