2018-2019-2 20165330《網絡對抗技術》Exp4 惡意代碼分析
目錄
- 基礎問題
- 相關知識
- 實驗目的
- 實驗內容
- 實驗步驟
- 實驗過程中遇到的問題
- 實驗總結與體會
實驗目的
- 監控你自己系統的運行狀態,看有沒有可疑的程序在運行
- 分析一個惡意軟件,就分析Exp2或Exp3中生成後門軟件;分析工具盡量使用原生指令或sysinternals,systracer套件
- 假定將來工作中你覺得自己的主機有問題,就可以用實驗中的這個思路,先整個系統監控看能不能找到可疑對象,再對可疑對象進行進一步分析,好確認其具體的行為與性質
返回目錄
實驗內容
- 系統運行監控
- 使用如計劃任務,每隔一分鐘記錄自己的電腦有哪些程序在聯網,連接的外部IP是哪裏。運行一段時間並分析該文件,綜述一下分析結果。目標就是找出所有連網的程序,連了哪裏,大約幹了什麽(不抓包的情況下只能猜),你覺得它這麽幹合適不。如果想進一步分析的,可以有針對性的抓包
- 安裝配置sysinternals裏的sysmon工具,設置合理的配置文件,監控自己主機的重點事可疑行為
- 惡意軟件分析
- 分析該軟件在
啟動回連
,安裝到目標機
及其他任意操作
時(如進程遷移或抓屏,重要是你感興趣)。該後門軟件——- 讀取、添加、刪除了哪些註冊表項
- 讀取、添加、刪除了哪些文件
- 連接了哪些外部IP,傳輸了什麽數據(抓包分析)
- 分析該軟件在
返回目錄
基礎問題
如果在工作中懷疑一臺主機上有惡意代碼,但只是猜想,所以想監控下系統一天天的到底在幹些什麽。請設計下你想監控的操作有哪些,用什麽方法來監控。
- 利用Windows計劃任務netstat,定期查看並分析網絡連接情況
- 可利用sysmon工具,配置好想要監控的端口、註冊表信息、網絡連接等信息,通過其生成的日誌文件進行查看
- 利用wireshark查看數據包,分析數據流
- 使用Process Explorer工具,監視進程執行情況
如果已經確定是某個程序或進程有問題,你有什麽工具可以進一步得到它的哪些信息。
- 利用wireshark查看數據包,查找可以數據連接
- 利用systracer進行快照的對比(註冊表、文件等)
返回目錄
相關知識
惡意代碼
- 是通過存儲介質和網絡進行傳播,從一臺計算機系統到另一臺計算機系統,未經授權破壞計算機系統完整性的程序或代碼
- 最常見的惡意代碼有病毒、木馬、蠕蟲、後門、僵屍網絡、Rootkit等
- 惡意代碼都有以下共同特征:
- 惡意的目的
- 本身是計算機程序
- 通過執行發生作用
- 具體可看惡意代碼
惡意代碼分析
- 靜態分析(不運行程序)
- 使用反病毒軟件來確認程序樣本的惡意性(VirusTotal或者virscan,可調用多個反病毒引擎來進行掃描)
- 哈希值:惡意代碼的指紋(md5deep程序:計算出程序的哈希值)
- 通過檢索惡意代碼字符串獲得相應的功能調用解釋等,查看是否有被加殼處理(字符串檢索:Strings 外殼檢測:PEiD)
- 可移植執行(PE)文件以一個文件頭開始,包含代碼信息、應用程序類型、所需的庫函數與空間要求。(使用PEview來分析PE文件。使用Resource Hacker工具來瀏覽.rsrc節(資源)。PEBrowse Professional和PE Explorer 也是分析PE文件的兩大工具)
- 動態分析(運行程序)
- 沙箱:提供容易理解的輸出結果,用來做初診斷非常有用(Norman沙箱、GFI沙箱等)
- DLL類型文件執行(PEview、PE Exporer)
- 用一些系統監視類軟件捕獲運行中惡意程序的系統調用(process monitor、process explorer)
返回目錄
實驗步驟
系統運行監控
(1)使用如計劃任務,每隔一分鐘記錄自己的電腦有哪些程序在聯網,連接的外部IP是哪裏。運行一段時間並分析該文件,綜述一下分析結果。目標就是找出所有連網的程序,連了哪裏,大約幹了什麽(不抓包的情況下只能猜),你覺得它這麽幹合適不。如果想進一步分析的,可以有針對性的抓包。
- 使用schtasks指令監控系統
使用
schtasks /create /TN netstat5330 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstat5330.txt"
命令創建計劃任務netstat5330
其中,TN是TaskName的縮寫,這裏計劃任務名是netstat5330;sc表示計時方式,以分鐘計時填MINUTE;TR=Task Run,要運行的指令是
netstat -bn
,b表示顯示可執行文件名,n表示以數字來顯示IP和端口。在C盤要目錄下建一個文件
c:\netstat5330.bat
(可以先在桌面新建txt文本文件,使用記事本寫入後在修改後綴為.bat,復制到C盤中),寫入內容如下:date /t >> c:\netstat5330.txt time /t >> c:\netstat5330.txt netstat -bn >> c:\netstat5330.txt
- 在左下角Windows處右鍵打開
計算機管理
-任務計劃程序
,可以看到我們新創建的任務:
- 雙擊這個任務,點擊
操作
-編輯
,將其中的程序或腳本
改為我們創建的netstat5330.bat
批處理文件,參數可選項
為空,點擊確定。(註意看這裏:一定要勾選使用最高權限運行
,否則可能導致文件不能自主更新或者記錄裏出現權限問題)
- 還可在
條件
中設置其他屬性,在電源
這裏默認操作為只有在計算機使用交流電源時才啟動此任務
,那麽使用電池電源時就會停止任務,所以若保持默認註意電腦保持開機聯網狀態!
- 在計算機管理界面對該任務右鍵點擊
運行
,可在netstat5330.bat
目錄下看到一個txt文本文件,打開就可看到每隔一分鐘被輸到這裏的聯網數據。
- 現在我們等待一段時間,讓記錄項目足夠多了我們用excel來進行分析
- 打開Excel表格,選擇
數據
-獲取外部數據
-自文本
,在數據類型
中選擇分隔符號
- 點擊
下一步
,標記所有分隔符號
,點擊完成
- 就可以看到txt文檔中一樣的信息,然後選擇我們要分析的那一列
- 選擇
插入
-數據透視圖
,並默認位置新表格
,點擊確定
- 在字段中去除不需要的字段(註意去掉TCP)
- 將該字段拖動到下方的
軸
和值
兩個區域中
就可以清晰的看到聯網信息的統計圖了
(2)安裝配置sysinternals裏的sysmon工具,設置合理的配置文件,監控自己主機的重點事可疑行為。
Sysmon是微軟Sysinternals套件中的一個工具。可以監控幾乎所有的重要操作,參考使用輕量級工具Sysmon監視你的系統開始我們的使用。
① 基本操作
- 確定要監控的目標:在這裏我選擇
進程創建
、進程創建時間
、網絡連接
、遠程線程創建
- 寫配置文件
- 相關事件過濾器選項在這可看到,
進程創建ProcessCreate
我用到了Image
、SourceIp
、SourcePort
,進程創建時間FileCreateTime
我用到了Image
,網絡連接NetworkConnect
我用了Image
、SourceIp
、SourcePort
,遠程線程創建CreateRemoteThread
我用了TargetImage
、SourceImage
開始寫與自己想要監控的事件相對應的配置文件,命名為
20165330Sysmoncfig.txt
,內容如下:(配置文件是xml文件,為了簡單編輯就直接命令為.txt,每次用寫字本打開。)<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">QQBrowser.exe</Image> </ProcessCreate> <FileCreateTime onmatch="exclude" > <Image condition="end with">QQBrowser.exe</Image> </FileCreateTime> <NetworkConnect onmatch="exclude"> <Image condition="end with">QQBrowser.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”,我用的是QQ瀏覽器則更改為“QQBrowser.exe”(可在上面的netstat5330.txt中找到進程名稱),寫在exclude中就是不記錄由QQ瀏覽器創建的進程。- 進程創建時間類似,也是不創建瀏覽器創建進程的時間。
- 網絡連接過濾掉了瀏覽器的網絡連接、源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 命令行外殼程序。該外殼程序包括交互式提示和腳本環境,兩者既可以獨立使用也可以組合使用。
- 相關事件過濾器選項在這可看到,
- 將配置文件放在C盤中
② 啟動sysmon
- 下載老師給的安裝包並解壓:SysinternalsSuite201608
- 右鍵點擊左下角Windows標誌,打開
Windows PowerShell(管理員)
進入管理員命令行,先cd
進入工具目錄,在安裝sysmon:.\Sysmon.exe -i C:\20165330Sysmoncfig.txt
(因為按老師的指令報錯我將指令改為如上才成功執行) - 彈出窗口點擊
Agree
,安裝成功如下圖
- 如果修改了配置文件,要運行指令:
.\Sysmon.exe -c C:\20165330Sysmoncfig.txt
來更新 - 輸入
.\Sysmon.exe -i
命令啟動sysmon
③ 使用sysmon
- 左下角右鍵Windows標誌,找到
事件查看器
,在應用程序和服務日誌
-Microsoft
-Windows
-Sysmon
-Operational
可以看到按照配置文件的要求記錄的新事件,以及事件ID、任務類別、詳細信息等等
- 分析實驗二生成的後門程序
20165330_backdoor.exe
,按步驟執行到回連
- 在點擊
Sysmon
-Operational
刷新記錄,在12:36:34找到運行後門文件20165330_backdoor.exe
相對應的日誌如下
- 此時我們還可以看到有360安全的記錄日誌,在運行時後門程序會被攔截,就會啟動這裏的
360RealPro.exe
,這是360的實時保護進程名,後續還運行了其他一些可執行文件,如360sctblist.exe、360sclog.exe。
- Linux執行
shell
獲取cmd
- 在13:11左右我獲取了shell,在事件管理器中,發現
C:\Windows\SysWOW64\cmd.exe
這樣一個進程,其顯示目錄在後門程序目錄下,很顯然與後門程序相關
SysWOW64可以在64bit的Windows中運行32bit的程序,而Windows下的cmd.exe是64bit的,kali回連獲取的windows的cmd程序是32位的 - 我們在輸入
dir
獲取目錄下信息,發現了一個被運行的的進程svchost.exe
Svchost.exe是微軟視窗操作系統裏的一個系統進程,管理通過Dll文件啟動服務的其它進程,一些病毒木馬偽裝成系統dll文件通過Svchost調用它,試圖隱藏自己。每個svchost可以同時調用多個dll文件,啟動多個服務。 - 我們在輸入
webcam_snap
獲取攝像頭,同樣也發現了Svchost.exe
這個進程。
- 在13:11左右我獲取了shell,在事件管理器中,發現
惡意軟件分析
靜態分析
① 使用VirusTotal分析惡意軟件
- 將exp3中生成的加殼後門在VirusTotal進行掃描
可疑程度相當高。。 - 查看這個惡意代碼的基本屬性:可以看出它的SHA-1、MD5摘要值、文件類型、文件大小,以及TRiD文件類型識別結果
- 算法庫支持
- 加殼情況
② 使用PEiD進行外殼檢測
PEiD(PE Identifier)是一款著名的查殼工具,其功能強大,幾乎可以偵測出所有的殼,其數量已超過470 種PE 文檔 的加殼類型和簽名
- 虛擬機win7中下載後點.exe安裝(別安裝捆綁軟件!)
- 選擇.exe文件路徑或直接把.exe文件拖到裏面,可以看到所加殼upx版本為0.89.6
- 點擊右下角
>>
查看詳細信息
- 若沒有加殼則顯示
- PEiD還可進行脫殼
- 下面是通用脫殼器
- 還有專門針對一些殼進行脫殼
- 下面是通用脫殼器
③ 使用PE explorer查看PE文件頭中包含代碼信息
PE Explorer是功能超強的可視化Delphi、C++、VB程序解析器,能快速對32位可執行程序進行反編譯,並修改其中資源
- 虛擬機win7中下載並安裝
- 打開後門程序
20165330_backdoor.exe
- 查看程序頭部信息
試圖
-數據目錄
查看程序靜態數據目錄
試圖
-節頭
查看節頭信息
工具
-反匯編器
進行反匯編
- 退出後點擊
導入
查看所引用的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"文件的功能,所以殺毒軟件等就無法運行了而提示:應用程序正常初始化失敗。
動態分析
① 使用SysTracer分析後門軟件的運行過程
SysTracer是一款可以分析你的計算機文件,文件夾和註冊表項目改變的系統實用工具。你可以在任何想要的時間獲取無數個屏幕快照,比較任何一對想要的屏幕快照,並且觀察其間的不同之處。獲取屏幕快照通常會持續幾分鐘的時間,這取決於文件和文件夾的數量和註冊表項目的總數。
- 最好用兩臺虛擬機:kali和win7
- 下載SysTracer
- 進入安裝選擇第二個,
next
設置端口為5330
(後門生成時利用的端口),安裝完成後進入界面
- 打開後門前先點擊
take snapshot
(創建快照),接著Start
- 創建過程長短視當前系統體量而定,創建好後默認名稱為
Snapshot #1
- 開啟後門程序回連kali(停在獲取命令的那一刻),此時創建第二個快照
Snapshot #2
- 然後kali中輸入一個
ls
命令,此時創建第三個快照Snapshot #3
- 輸入
screenshot
命令抓屏,此時創建第四個快照Snapshot #4
- 點擊右下角
compare
將快照之間進行比較,在Registry
可看到註冊表的變化(藍色部分為有變化的)
- 我們按住
ctrl
鍵,選擇#1和#2進行比較:可以發現在啟動回連時的變化- 註冊表變化
- 端口變化
- 新增了一些dll文件
- 註冊表變化
- 比較#2和#3:可以看到在獲取win7的cmd命令在Wow3264node這個註冊表發生了變化(它是計算機專門給32位系統訪問的)在上一個軟件分析中我們可知kali獲取的cmd是32位的,它訪問64位的qin7並獲取命令,就會再次發生變化。
- 查看
opened handles
(打開的句柄)來對比他們都做了什麽
- 查看
- 比較#1和#4可以發現在進行截屏時,也修改了很多dll文件
- 對其他註冊表我們會發現SysTracer沒有辦法查看,只能知道這部分做了修改
- 關於HKEY_LOCAL_MACHINE:它保存了註冊表裏的所有與這臺計算機有關的配置信息
- 關於HKEY_CURRENT_USER:它管理系統當前的用戶信息。在這個根鍵中保存了本地計算機中存放的當前登錄的用戶信息,包括用戶登錄用戶名和暫存的密碼
- 對其他註冊表我們會發現SysTracer沒有辦法查看,只能知道這部分做了修改
② 使用wireshark對流量進行抓包分析
- 打開Wireshark,選擇本地連接接口開始抓包
- kali中打開監控,win7執行後門程序
5330.exe
進行回連,輸入過濾條件ip.addr == 192.168.30.129
,可以看到Wireshark上捕獲到大量的TCP傳輸(由於抓包時Kali一直處於連接win7的狀態,因此並沒有捕獲到TCP四次握手取消連接過程)
- 輸入其他命令,Kali會不斷給Windows傳一大堆ACK包,有時還伴有PSH+ACK包。(PSH就表示有 DATA數據傳輸)
③ 使用Process Monitor分析惡意軟件
Process Monitor一款系統進程監視軟件,總體來說,Process Monitor相當於Filemon+Regmon,其中的Filemon專門用來監視系統 中的任何文件操作過程,而Regmon用來監視註冊表的讀寫操作過程
- win7虛擬機中下載並安裝
- 打開軟件,可以看出其對各個進程的詳細記錄
- 可以點擊
過濾器
-過濾器
,選擇進程名稱
,輸入後門名稱5330.exe
,選擇包括
並添加,點擊應用確定,就可以看到監視條目 - 我們在kali中打開監控,win7中雙擊程序回連,kali中我輸入了
ls
查看目錄,在Process Monitor中發現這個操作
- 我們右鍵點擊
跳轉到
可以跳轉到註冊表,發現指向了這個註冊表
- 看它的名字我猜測kali為獲取名稱而修改了這個跟命名相關的註冊表。。
④ 使用Process Explorer分析惡意軟件
Process Explorer讓使用者能了解看不到的在後臺執行的處理程序,能顯示目前已經載入哪些模塊,分別是正在被哪些程序使用著,還可顯示這些程序所調用的 DLL進程,以及他們所打開的句柄。Process Explorer最大的特色就是可以終止任何進程,甚至包括系統的關鍵進程!
- 在win7虛擬機中下載並安裝
- 在win7中運行木馬,回連kali時,我們可以看到Process Explorer對其進行的記錄,雙擊可查看其屬性
- 在
Strings
通常能夠顯示這個進程在運行的時候可能會使用到的一些字符串,比如網址、路徑名、註冊表信息等等蛛絲馬跡。如果是病毒或者惡意軟件通過包含著一個遠程的地址用來下載病毒或者將竊取的信息上傳。這裏通常還會包含其他信息,對於不同的場合來說,總有一些是有用的。通常有些殺毒軟件也會從這裏提取病毒特征碼的。
我在其中發現了前面分析到的dll文件:wsock32.dll
和ws2_32.dll
,這兩個是會經常被木馬、病毒等進行侵略篡改的文件,可以分析出我們的後門程序對其做一定的修改來實現反彈連接控制被控機。
返回目錄
實驗過程中遇到的問題
在安裝sysmon時報錯,提示
找不到命令Sysmon.exe,但它確實存在於當前位置
解決辦法:按照提示要求將命令改為
.\Sysmon.exe -i C:\20165330Sysmoncfig.txt
即可。
返回目錄
實驗總結與體會
- 本次實驗從各個軟件入手,對之前的後門程序做出不同程度的分析,在學習使用的同時,我也不段掌握了分析的基本方法,從攻擊者轉換到分析者,更全面的知悉後門程序到底做了什麽,一般我們都是依靠殺軟來檢測出惡意程序,實驗中用到的也都很陌生,但其實也是殺軟的一些基本構件,分析程度也有高低,當然我們也不能全寄希望於這些工具,也會存在足夠厲害的躲過所有監控的惡意程序,杜絕非法鏈接,增強安全意識也是很重要的一點。
參開資料
- Windows計劃任務schtasks
- 使用輕量級工具Sysmon監視你的系統
- 靜態分析基礎技術
- 動態分析基礎技術
- Process Monitor分析某個應用行為
- ProcessExplorer使用分享
- Process Explorer使用圖文教程
2018-2019-2 20165330《網絡對抗技術》Exp4 惡意代碼分析