1. 程式人生 > >2018-2019-2 20165215《網絡對抗技術》Exp4 惡意代碼分析

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

設置 系統管理 功能 www shel 執行 名稱 文件資源管理器 文件的

目錄

  • 實踐目標
  • 實踐內容
  • 基礎問題回答
  • 實驗步驟
    • 使用schtasks指令監控系統
    • 使用sysmon工具監控系統
    • 使用VirusTotal分析惡意軟件
    • 使用PEiD進行外殼檢測
    • 使用PE explorer查看PE文件頭中包含代碼信息
    • 使用Dependency Walker查看其依賴性、導入與導出模塊
    • 使用SysTracer分析後門軟件的運行過程
    • 使用wireshark對流量進行抓包分析

實踐目標

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

實踐內容

1、系統運行監控

  • 使用如計劃任務,每隔一分鐘記錄自己的電腦有哪些程序在聯網,連接的外部IP是哪裏。運行一段時間並分析該文件,綜述分析結果。
  • 安裝配置sysinternals裏的sysmon工具,設置合理的配置文件,監控自己主機的重點事可疑行為。

2、惡意軟件分析
分析該軟件在(1)啟動回連,(2)安裝到目標機(3)及其他任意操作時(如進程遷移或抓屏,重要是你感興趣)。該後門軟件

  • 讀取、添加、刪除了哪些註冊表項
  • 讀取、添加、刪除了哪些文件
  • 連接了哪些外部IP,傳輸了什麽數據

基礎問題回答

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

  • 使用windows自帶的schtasks指令設置一個計劃任務,發現網絡連接異常
  • 使用Sysmon,編寫配置文件,記錄有關的系統日誌
  • 使用Process Explorer工具,監視進程執行情況。
  • 使用Process Monitor工具,監視文件系統、註冊表、進程/線程的活動
    2、如果已經確定是某個程序或進程有問題,你有什麽工具可以進一步得到它的哪些信息。
  • 使用systracer工具分析惡意軟件,查看其對註冊表和文件的修改。
  • 使用Wireshark進行抓包分析,監視其與主機進行的通信過程。
  • 使用Process Explorer工具或Process Monitor工具,監視文件系統、註冊表、進程/線程的活動

實驗步驟

使用schtasks指令監控系統

1、使用schtasks /create /TN netstat5215 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstatlog.txt"命令創建計劃任務,其中
技術分享圖片

  • TN是TaskName的縮寫,我們創建的計劃任務名是netstat5215;
  • sc表示計時方式,我們以分鐘計時即MINUTE;
  • TR即Task Run,要運行的指令是 netstat;
  • bn中b表示顯示可執行文件名,n表示以數字來顯示IP和端口;
  • >表示輸出重定向,將輸出存放在c:\netstatlog.txt文件中

2、在C盤中創建一個netstat5215.bat腳本文件,寫入以下內容

date /t >> c:\netstat5215.txt
 time /t >> c:\netstat5215.txt
 netstat -bn >> c:\netstat5215.txt

3、打開任務計劃程序,可以看到新創建的這個任務
技術分享圖片

4、雙擊這個任務, 在常規欄設置使用最高權限運行,在操作欄點擊編輯,將其中的程序或腳本改為我們創建的netstat5215.bat批處理文件,參數可選項為空,點擊確定
技術分享圖片
5、

使用sysmon工具監控系統

1、確定鍵控目標:進程創建ProcessCreate、進程創建時間FileCreatTime、網絡連接NetworkConnect、遠程線程創建CreateRemoteThread
2、創建配置文件20165215Sysmoncfig.xml,內容如下

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

    <FileCreateTime onmatch="exclude" >
      <Image condition="end with">MicrosoftEdgeCP.exe</Image>
    </FileCreateTime>
    
    <NetworkConnect onmatch="exclude">
      <Image condition="end with">MicrosoftEdgeCP.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>

分析:

  • exclude相當於白名單,不用記錄。include相當於黑名單。
  • Image condition這裏要根據自己使用的瀏覽器更改,例如谷歌瀏覽器是“chrome.exe”,IE瀏覽器是“iexplore.exe”,而我的是“MicrosoftEdgeCP.exe”
  • 網略連接過濾掉了瀏覽器的網絡連接、源IP為127.0.0.1的網絡連接和目的端口為137的連接服務,且查看目的端口為80(http)和443(https)的網絡連接。
    • 137端口的主要作用是在局域網中提供計算機的名字或IP地址查詢服務,一般安裝了NetBIOS協議後,該端口會自動處於開放狀態。
    • 127.0.0.1表示本機IP。
  • 遠程線程創建記錄了目標為explorer.exe、svchost.exe、winlogon.exe和powershell.exe 的遠程線程。
    • explorer.exe是Windows程序管理器或者文件資源管理器
    • svchost.exe是一個屬於微軟Windows操作系統的系統程序,是從動態鏈接庫 (DLL) 中運行的服務的通用主機進程名稱。
    • winlogon.exe是Windows NT 用戶登陸程序,用於管理用戶登錄和退出。
    • powershell.exe是專為系統管理員設計的新 Windows 命令行外殼程序。該外殼程序包括交互式提示和腳本環境,兩者既可以獨立使用也可以組合使用。

3、以管理員身份執行命令sysmon.exe -i C:\20165215Sysmoncfig.txt,安裝sysmon
技術分享圖片
4、如果修改了配置文件,則運行指令sysmon.exe -c C:\20165215Sysmoncfig.txt
5、打開計算機管理->事件查看器->應用程序和服務日誌->Microsoft->Windows->Sysmon->Operational查看日誌
技術分享圖片
6、分析實驗二生成的後門程序20165215_backdoor.exe,執行到回連
技術分享圖片
7、運行dir時出現了 svchost.exe ,它是微軟視窗操作系統裏的一個系統進程,管理通過Dll文件啟動服務的其它進程,一些病毒木馬偽裝成系統dll文件通過Svchost調用它,試圖隱藏自己
技術分享圖片
8、運行shell後,我們可以觀察到一個後門所在文件夾有關的C:\Windows\SysWOW64\cmd.exe程序
技術分享圖片

  • SysWOW64可以在64bit的Windows中運行32bit的程序,而Windows下的cmd.exe是64bit的,kali回連獲取的windows的cmd程序是32位的

使用VirusTotal分析惡意軟件

1、在VirusTotal網站上分析通過upx加殼生成的後門
技術分享圖片
2、查看這個惡意代碼的基本屬性:可以看出它的SHA-1、MD5摘要值、文件類型、文件大小,以及TRiD文件類型識別結果等內容
技術分享圖片
3、加殼情況
技術分享圖片
4、算法庫支持
技術分享圖片

使用PEiD進行外殼檢測

1、檢測一個沒有加過殼的文件
技術分享圖片
2、選擇加過殼的.exe文件路徑或者幹脆直接把.exe文件拖到裏面即可
技術分享圖片
分析:我們可以看到軟件加的UPX的殼,版本是0.89.6,點擊擴展信息按鈕可以查看詳細信息

使用PE explorer查看PE文件頭中包含代碼信息

1、打開後門程序20165215_backdoor.exe
2、查看程序頭部信息
技術分享圖片
3、查看程序靜態數據目錄
技術分享圖片
4、查看程序結頭信息
技術分享圖片
5、工具-反匯編器進行反匯編
技術分享圖片
6、點擊導入查看其引用的dll庫
技術分享圖片
分析:

  • msvcrt.dll是微軟在windows操作系統中提供的C語言運行庫執行文件
  • kernel32.dll屬於內核級文件,控制著系統的內存管理、數據的輸入輸出操作和中斷處理
  • advapi32.dll是一個高級API應用程序接口服務庫的一部分,包含的函數與對象的安全性,註冊表的操控以及事件日誌有關,會受到病毒的侵擾及篡改,導致系統文件丟失、損壞
  • wsock32.dll是Windows Sockets應用程序接口,用於支持很多Internet和網絡應用程序,是一個對系統很關鍵或很可疑的文件,易遭受木馬病毒(如“犇牛”病毒)破壞導致系統找不到此文件,出現錯誤提示框。
  • ws2_32.dll是Windows Sockets應用程序接口。一些病毒會在殺毒軟件目錄中建立偽"ws2_32.dll"的文件或文件夾,在殺毒軟件看來這是程序運行需要的文件而調用,這個所謂的“文件”又不具備系統"ws2_32.dll"文件的功能,所以殺毒軟件等就無法運行了而提示:應用程序正常初始化失敗。

使用Dependency Walker查看其依賴性、導入與導出模塊

技術分享圖片

使用SysTracer分析後門軟件的運行過程

  • 使用kali和winddow7兩臺虛擬機完成
  • 點擊右側的take snapshot,存儲快照
    技術分享圖片

    • 初始創建快照,命名為Snapshot #1
    • 回連成功後創建快照,命名為Snapshot #2
    • kali端輸入ls命令後創建快照,命名為Snapshot #3
    • kali端輸入screenshot命令後創建快照,命名為Snapshot #3
      技術分享圖片
  • 點擊右下角compare將快照之間進行比較,為了方便對比差異,我們選擇Only Difference
    技術分享圖片
  • 端口變化
    技術分享圖片

  • dlls發生變化
    技術分享圖片

  • 查看opened handles的變化
    技術分享圖片

使用wireshark對流量進行抓包分析

回連完成後結束捕獲,並把過濾規則設置為ip.addr == 192.168.1.144(此處過濾設置為與kali有關的數據包)
技術分享圖片

我們可以看到有大量的TCP包,ACK包,有時還伴有PSH+ACK包。(PSH就表示有 DATA數據傳輸)

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