2018-2019-2 20165215《網絡對抗技術》Exp4 惡意代碼分析
目錄
- 實踐目標
- 實踐內容
- 基礎問題回答
- 實驗步驟
- 使用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工具,監視文件系統、註冊表、進程/線程的活動
- 使用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 惡意代碼分析