2018-2019 20165208 網絡對抗 Exp4 惡意代碼分析
實驗內容
系統運行監控(2分)
- 使用如計划任務,每隔一分鍾記錄自己的電腦有哪些程序在聯網,連接的外部IP是哪里。運行一段時間並分析該文件,綜述一下分析結果。目標就是找出所有連網的程序,連了哪里,大約干了什么(不抓包的情況下只能猜),你覺得它這么干合適不。如果想進一步分析的,可以有針對性的抓包。
- 安裝配置sysinternals里的sysmon工具,設置合理的配置文件,監控自己主機的重點事可疑行為。
參考:schtask與sysmon應用指導
實際日志的分析還需要發揮下自己的創造力,結合以前學過的知識如linux的文本處理指令等進行。分析的難點在於從大量數據中理出規律、找出問題。這都依賴對結果過濾、統計、分類等進一步處理,這就得大家會什么用什么了。
惡意軟件分析(1.5分)
- 分析該軟件在(1)啟動回連(2)安裝到目標機(3)及其他任意操作時(如進程遷移或抓屏,重要是你感興趣)。
- 該后門軟件
- 讀取、添加、刪除了哪些注冊表項
- 讀取、添加、刪除了哪些文件
- 連接了哪些外部IP,傳輸了什么數據(抓包分析)
該實驗重點在“分析”,不是“如何使用某軟件”。組長、課題負責人要求寫細一點,其他人可以重點放在分析上。
報告評分(1分)
基礎問題回答
1. 如果在工作中懷疑一台主機上有惡意代碼,但只是猜想,所有想監控下系統一天天的到底在干些什么。請設計下你想監控的操作有哪些,用什么方法來監控
- 使用Windows自帶的schtasks指令設置一個計划任務,指定每隔一定時間記錄主機的聯網記錄或者是端口開放、注冊表信息等;
- 通過sysmon工具,配置好想記錄事件的文件,之后在事件查看器里找到相關日志文件查看;
- 使用任務管理器->進程,監視進程執行情況,查看是否有可疑程序運行。
2. 如果已經確定是某個程序或進程有問題,你有什么工具可以進一步得到它的哪些信息
- Systracer分析注冊表差異、文件、運行進程等的不同;
- virscan集合各種殺軟,對指定文件進行分析定性。
- Threatbook也就是老師上課所說的沙箱的一種,感覺比virscan檢測出的信息更多些,而且還是網頁版的很方便。
實踐過程記錄
1. 系統運行監控——計划任務
正常導入
- 創建計划任務,使系統每1分鍾自動檢測到有哪些程序在連接我們的網絡。
- TN:Task Name,本例中是netstat
- SC: SChedule type,本例中是MINUTE,以分鍾來計時
- MO: MOdifier
- TR: Task Run,要運行的指令是 netstat
- -bn,b表示顯示可執行文件名,n表示以數字來顯示IP和端口
C:\schtasks /create /TN 20165208netstat /sc MINUTE /MO 1/TR "cmd /c netstat -bn > c:\netstatlog.txt"
帶時間批量導入
- 相較老師的辦法,我是在完成第一步的操作后刪了兩個文件,在桌面新建了netstatlog.txt 和 netstatlog.bat。再在netstatlog.bat中編輯如下內容:
date /t >> c:\netstatlog.txt
time /t >> c:\netstatlog.txt
netstat -bn >> c:\netstatlog.txt
-
用
schtasks /create /TN 20165208netstat /sc MINUTE /MO 1 /TR "c:\netstatlog.bat"
實現批量帶時間的輸出。 -
在任務管理器中把對應任務屬性->條件->電源,關閉選項。and千辛萬苦得出的結論“使用最高權限運行”一定要選!!!另外我發現如果操作成功上次運行結果顯示操作成功完成而不會像我之前失敗的只顯示返回值。
注意事項:這個操作要始終開機聯網不鎖屏,因為電池續航能力的原因我大概做了4個小時的。
數據分析
-
將netstatlog.txt的內容導入到Excel中。我使用的是WPS,依次點擊:數據(選項卡)——導入數據——直接打開數據文件——選擇數據源(找到netstatlog.txt所在文件夾,並選中)——打開
-
將文本進行分割成excel表。
-
文件轉換頁面默認選項直接“下一步”
-
文本導入向導,文件類型一定要選擇分隔符號;分隔符號選擇空格;
-
選擇常規。
-
點擊完成,就可以看到數據導入成功
-
-
對數據進行統計學分析:
-
首先查看所有聯網程序的聯網次數,選中我們要分析的列
-
點擊上方“插入”->“數據透視圖”
-
默認選擇在一個新工作表中生成
-
在右側“選擇要添加到報表的字段”中點擊對應字段右側的小箭頭->取消選擇那些沒有意義的字段,然后點擊“確定”
-
將該字段拖動到下方的“軸字段”和“數值”兩個區域中
-
然后就可以看到我們的統計圖進行分析
-
-
分析
首先我們可以看到TCP是最多的,其次是“360se.exe”和“wpscloud.exe”。一個是360,當啟動瀏覽器是它就會出現在任務管理器中,關閉任務管理器后會自動退出。但也有可能是病毒仿裝的進程,他會有可能下載盜號或惡意修改你電腦。另一個是wps軟件雲端的一個服務的進程。這里我們還可以找到微信、虛擬機、后門程序20165208ex4_backdoor.exe這些連網的進程。
2. 系統運行監控——利用Sysmon
安裝配置sysinternals里的sysmon工具,設置合理的配置文件,監控自己主機的重點事可疑行為。
確定監控對象
選擇的是進程創建ProcessCreate、進程創建時間FileCreatTime、網絡連接NetworkConnect、遠程線程創建CreateRemoteThread。
寫配置文件
寫與自己想要監控的事件相對應的配置文件。編寫好的20165208Sysmoncfig.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">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>
注釋
- exclude相當於白名單,不包括,即不用記錄。
include相當於黑名單,即要記錄的。 - Image condition,映像條件,根據自己使用的瀏覽器更改。例如谷歌瀏覽器是“chrome.exe”,IE瀏覽器是“iexplore.exe”,我用的是360瀏覽器,進程名是“360chrome.exe”,也是以“chrome.exe”結尾的,所以這里只寫“chrome.exe”即可。寫在exclude中就是不記錄由360瀏覽器創建的進程。
- 進程創建時間類似,也是不創建瀏覽器創建進程的時間。
- 網絡連接為過濾掉瀏覽器的網絡連接、源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 命令行外殼程序。該外殼程序包括交互式提示和腳本環境,兩者既可以獨立使用也可以組合使用。
啟動sysmon
-
下載sysmon,解壓。
-
安裝sysmon:以管理員身份執行命令
sysmon.exe -i C:\20165208Sysmoncfig.txt
-
會提示出錯,輸入命令
sysmon -accepteula -i -n
;
-
就會在任務管理器中看到sysmon.exe已經在運行了
在事件查看器里查看日志
- 圖標“計算機”右鍵,點擊打開“管理”。點擊左側“系統工具”->“事件查看器”->應用程序和服務日志/Microsoft/Windows/Sysmon/Operational
利用Sysmon具體分析日志
這里我選擇了自己實驗二中生成的后門20165208_backdoor.exe進行分析(命名為20165208ex4_backdoor.exe)
-
啟動回連、安裝到目標主機。
-
16:50:40可以找到“20165208ex4_backdoor.exe”對應的日志如下
-
因為最開始手快關了防火牆和360,最初沒有出現像學姐一樣的360toasts.exe。
后續操作中,開啟了360,並添加了后門的信任,可以看到如:360RealPro.exe、360se.exe的進程日志。 -
其中經過查找資料emmmm怎么說的都有,360RealPro.exe有說是病毒有說是360的保護的,具體還要看數字簽名,360的解釋也是需要具體分析,而360se.exe是當啟動瀏覽器是它就會出現在任務管理器中,會占較高的CPU看到了不少教關閉的教程hhhh
-
執行了record_mic截獲音頻、webcam_snap截獲照片、keyscan_start記錄擊鍵記錄、getuid獲取當前用戶等操作。這里就有看到一個啟動了SearchFilterHost.exe的事件。
-
查找資料發現,SearchFilterHost.exe是桌面搜索引擎的索引程序,其主要作用是建立快速索引文件,讓用戶能夠更好的搜索出電腦中的任意資料。它會在計算機空閑時自動掃描索引位置的文件名、屬性信息和給定類別的文件內容,這些索引位置默認包括桌面、收藏夾、開始菜單、系統目錄。
-
除此之外,還看到了一個mspclock.sys的日志
-
也去查了一下,看到有疑問說“這個是系統文件,殺毒軟件為什么會提示有木馬”,就又去找了下,還是模棱兩可的解釋。
-
之后我看到一個Audio\ADCTL.exe的日志,上網搜了下沒有合適的解釋,但Audio是聽的意思,我想會不會和錄音有關,姑且保留懷疑。
感覺這個軟件更多的是用來預測,因為好多進程並不能一對一的確定為是誰造成的,更適合用來與猜測的一款軟件。
3. 惡意軟件分析—— virscan網站
在virscan網站上查看上次實驗檢查所做的后門程序。結果如下:
4. 惡意軟件分析——Threatbook
也就是老師上課所說的沙箱的一種,感覺比virscan檢測出的信息更多些。
5. 惡意軟件分析——Systracer
分析該軟件在(1)啟動回連,(2)安裝到目標機(3)及其他任意操作時(如進程遷移或抓屏,重要是你感興趣)。
該后門軟件
(1)讀取、添加、刪除了哪些注冊表項
(2)讀取、添加、刪除了哪些文件
(3)連接了哪些外部IP,傳輸了什么數據(抓包分析)
下載安裝Systracer
- 下載完成->運行->agree->選第二個->設置監聽端口號->安裝完成
進行分析
這里我主要進行了四次快照,分別為還未傳遞后門程序前、存在后門程序后、進行回連后、進行了錄音截屏記錄鍵盤輸入以及攝像頭拍照等操作后。
-
點擊“take snapshot”,如圖,按照以下步驟進行
-
點擊上方“Applications”->左側“Running Processes”->找到后門進程“20165208ex4_backdoor.exe”->點擊“Opened Ports”查看回連地址、遠程地址和端口號
-
在快照界面“Snapshots”右下角點擊“Compare”,比對一下回連前后計算機發生的變化,這里可以選擇only difference
Wireshark進行抓包分析
用wireshark抓包分析連接了哪些外部IP,傳輸了什么數據
-
首先要設置捕哪個網絡的,這里我根據虛擬機的ip進行了判斷。
-
在回連之前,開始捕獲;回連完成后結束捕獲,並把過濾規則設置為ip.addr == 192.168.134.128,這里我只想查看和虛擬機IP有關的數據包,所以把沒用的包過濾掉:
可以看到,其先進行了TCP的三次握手,之后再進行數據的傳輸,如圖所示,帶有PSH,ACK的包傳送的便是執行相關操作指令時所傳輸的數據包。
實驗中遇到的問題及解決方法
1.問題:在schtasks /create /TN netstat /sc MINUTE /MO 2 /TR "c:\netstatlog.bat"
步驟時,查看netstatlog.txt,出現了各種錯誤包括只能更新一次、看連接情況,發現提示錯誤:請求的操作需要提升等。只有通過以管理員身份運行,才能正常運行,但顯然這是不符合老師要求的。我知道是權限的問題,但是嘗試了幾種方式都以失敗告終。
我分別做了以下幾種嘗試分別為
-
更改netstatlog.bat和netstatlog.txt的權限
-
在netstatlog.bat輸入輸入命令“net localgroup administrators 用戶名 /add”希望能將運行變為管理員權限
-
讓cmd命令行固定以管理員身份運行
在都以失敗告終后,我以為我這個實驗可能廢了,頹(>_<)
看看我這悲催的嘗試,這還是清空了三次回收站之后。。。
后來在茫茫網絡之中終於看到了有人和我遇到了一樣的問題,也終於找對了方法,即操作見教程
計划任務中請求的操作需要提升如何解決
2.問題:在SysTracer應用中,在用了一段時間后出現了提示No registered的情況,也不能進行比對的操作。
剛開始我以為是我同時運行了兩個進程的原因
后來想起register是注冊。。。我點了register,顯示需要激活碼,可是我沒有。。。上網查了一圈也沒有共享的激活碼,就選擇重新下載安裝,好在安裝過程不麻煩。
實驗感想
這次實驗一度讓我感到絕望,第一個計划任務無論如何都不能按要求將數據導進txt中,嘗試着去搜了解決方法,不是提供的方法不能解決,就是呈現效果有所折扣。因為上一次實驗在驗收時出現了很多我自己做的時候都沒有發生的問題,所以對這次實驗我也更加較真了,能在平常避免的問題一定要及時解決掉,因為我也不知道在之后的實踐里又會出現什么樣未知的情況。
除了這個我最大的感觸在病毒查殺這方面好多軟件都沒有百分百的確定性,一個進程他可能是木馬也可能是系統程序。大多數情況下都需要我們去猜去根據實際情況具體分析。但是又有個很方便的是就是我們這幾次用到的軟件普遍都不大,但功能卻很全,利用好他們組合使用也能解決不少問題。
同時我這次最大的感受就是學姐學長的博客真的真的真的很有用,我這次遇到的最大的問題在自己找解決方法,嘗試了四種都沒成功幾乎要不知道怎么辦的時候,無意中看到了白皎學姐的博客,看到了她的解決辦法后,順利的解決了。有時候真的要去參考他們的經驗,站在巨人的肩膀上分析問題解決問題。