20155312 張競予 Exp4 惡意代碼分析

Exp4 惡意代碼分析

目錄


基礎問題回答

(1)若是在工做中懷疑一臺主機上有惡意代碼,但只是猜測,因此想監控下系統一每天的到底在幹些什麼。請設計下你想監控的操做有哪些,用什麼方法來監控。html

我想了解的大概有linux

  • 修改了哪些註冊表
  • 建立了哪些進程
  • 佔用了哪些端口
  • 修改、查看了哪些文件
  • 鏈接了哪些網絡

監控方法:git

  • 能夠定時讓主機執行netstat而後分析,發現網絡鏈接異常
  • 能夠利用Sysmon,編寫配置文件,記錄與本身關心的事件有關的系統日誌

(2)若是已經肯定是某個程序或進程有問題,你有什麼工具能夠進一步獲得它的哪些信息。web

  • 能夠利用Wireshark等網絡工具查看是否存在可疑鏈接
  • 能夠利用工具Systracer拍攝快照,比對先後區別,分析改變的註冊表及文件等信息。

返回目錄chrome


實踐過程記錄

1、系統運行監控

(1)使用如計劃任務,每隔一分鐘記錄本身的電腦有哪些程序在聯網,鏈接的外部IP是哪裏。運行一段時間並分析該文件,綜述一下分析結果。目標就是找出全部連網的程序,連了哪裏,大約幹了什麼(不抓包的狀況下只能猜),你以爲它這麼幹合適不。若是想進一步分析的,能夠有針對性的抓包。

第一步:在windows命令行下輸入命令:schtasks /create /TN 20155312netstat /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstatlog.txt"shell

【注】:經過閱讀盧肖明學長的博客,我發現其實不用像後續操做這樣複雜,其實只須要「編輯netstatlog.bat」->執行指令schtasks /create /TN 20155312netstat /sc MINUTE /MO 1 /TR "c:\netstatlog.bat"兩步便可建立一個每隔兩分鐘記錄計算機聯網狀況的任務。但這裏仍是詳細的記錄了我使用學姐的方法探索的過程,若是你們想省事,不用像我這麼麻煩~小程序

  • TN是TaskName的縮寫,咱們建立的計劃任務名是20155312netstat;
  • sc表示計時方式,咱們以分鐘計時填MINUTE;
  • TR=Task Run,要運行的指令是 netstat
    -bn,b表示顯示可執行文件名,n表示以數字來顯示IP和端口;
  • c:\netstatlog.txt相似於Linux中的重定向,輸出將存放在C盤下的netstatlog.txt文件中(自動生成)。windows

建立成功結果以下:瀏覽器

此命令完成後,每1分鐘就會監測哪些程序在使用網絡,並把結果記錄在netstatlog.txt文檔裏,爲了顯示日期和時間,咱們經過bat批處理文件來實現。安全

第二步:在C盤要目錄下建一個文件c:\netstatlog.bat

  • 直接在C盤下是無法建立文件的,因此爲了解決這個問題我試了幾種方法:
    • 在命令行下輸入指令type nul>netstatlog.bat,結果提示拒絕訪問。
    • 在前面加個sudo結果仍是提示拒絕訪問。
  • 最終解決的方法是在桌面上建立一個netstatlog.txt文件,編輯文件內容以下:
date /t >> c:\netstatlog.txt
time /t >> c:\netstatlog.txt
netstat -bn >> c:\netstatlog.txt
  • 保存後修改文件名爲「netstatlog.bat」;
  • 粘貼到C盤中,這是須要用管理員權限;

  • 能夠右鍵點擊「編輯」用記事本查看bat文件內容。

第三步:編輯任務操做:

1.進入任務計劃程序:「win+c」選擇「設置」->進入「控制面板」->選擇「管理工具」->進入「任務計劃程序」

2.找到咱們的任務20155312netstat,雙擊點開

3.點擊下方「操做」->右側所選項欄中「屬性」->屬性頁面上方的「操做」

4.雙擊任務進入「編輯操做」界面

5.在程序腳本處點擊「瀏覽」->選擇剛纔建立的「netstat.bat」,「參數可選項」爲空,

6.點擊「肯定」完成修改,詳細信息處以下圖:

7.查看netstat.txt文件,已經有了時間的記錄,至此完成了任務的建立:

第四步:等待一直兩天;

【注】:這裏須要一直保持開機聯網狀態,才能持續監控哦~天真的我甚至還關了機在那傻等……

此外,若是發現netstatlog.txt沒有每分鐘更新一次,多是由於設置時默認選擇了「只有計算機使用交流電源時才啓用此任務」,因此一旦咱們不給電腦充電,任務就無法運行。解決方法就是在netstat任務屬性的設置中取消選中該選項,以下圖所示,而後就能夠發現每隔一分鐘命令行會閃現一下,其中包含netstatlog.bat中的三行指令,netstatlog.txt本身就隨之更新了。

第五步:用excel分析數據。

1.導入文本數據:新建excel文件->選擇上方「數據」->選擇「獲取外部數據」->選擇「自文本」

2.選擇記錄鏈接狀況的文本netstatlog.txt,點擊「導入」

3.進入文件導入嚮導第一步,選中「分隔符號」,點擊「下一步」

4.進入文件導入嚮導第二步,選中所有分隔符號,點擊「下一步」

5.進入文件導入嚮導第三步,列數據格式選擇常規,點擊「完成」。

6.鼠標選中左上角第一個單元格,而後點擊「肯定」

待分析數據以下:

第六步:對數據進行統計學分析:

1.首先查看全部聯網程序的聯網次數,具體excel操做以下:

①首先選中咱們要分析的列:

②其次點擊上方「插入」->「數據透視表」->「數據透視圖」

③默認選擇在一個新工做表中生成

④在右側「選擇要添加到報表的字段」中點擊對應字段右側的小箭頭->取消選擇那些沒有意義的字段,而後點擊「肯定」

②將該字段拖動到下方的「軸字段」和「數值」兩個區域中

⑥而後就能夠看到咱們的統計圖進行分析了:

2.由上圖所示,聯網最多的是360瀏覽器對應的程序「360chrome.exe」,排名第二的是「wpscloud.exe」,它是wps軟件雲端的一個服務的進程。這裏咱們還能夠找到微信、虛擬機、後門程序zjy_backdoor.exe這些連網的進程。

沒發現什麼其餘可疑的程序,既然這樣咱們就分析一下wpscloud.exe連了哪裏,大約幹了什麼吧。

經過查看錶格,咱們發現它鏈接了外部網絡119.75.216.20:443,猜想他就是不斷的檢測系統文件有沒有更新,而後往雲端傳送吧。

(2)安裝配置sysinternals裏的sysmon工具,設置合理的配置文件,監控本身主機的重點事可疑行爲。

返回目錄

第一步:肯定監控木匾。我感興趣的是進程建立ProcessCreate、進程建立時間FileCreatTime、網絡鏈接NetworkConnect、遠程線程建立CreateRemoteThread。

第二步:寫配置文件。

1.瞭解一下配置文件應該怎麼寫:

①進程建立ProcessCreate的過濾事件選項有:

UtcTime, ProcessGuid, ProcessId, Image, CommandLine, CurrentDirectory, User, LogonGuid, LogonId, TerminalSessionId, IntegrityLevel, Hashes, ParentProcessGuid, ParentProcessId, ParentImage, ParentCommandLine

↑ 這裏我用到了Image、SourceIp、SourcePort。

②進程建立時間FileCreatTime的過濾事件選項有:

UtcTime, ProcessGuid, ProcessId, Image, TargetFilename, CreationUtcTime, PreviousCreationUtcTime

↑ 這裏我用到了Image。

③網絡鏈接NetworkConnect的過濾事件選項有:

UtcTime, ProcessGuid, ProcessId, Image, User, Protocol, Initiated, SourceIsIpv6, SourceIp, SourceHostname, SourcePort, SourcePortName, DestinationIsIpv6, DestinationIp, DestinationHostname, DestinationPort, DestinationPortName

↑ 這裏我用到了Image、SourceIp、SourcePort。

④遠程線程建立CreateRemoteThread的過濾事件選項有:

UtcTime, SourceProcessGuid, SourceProcessId, SourceImage, TargetProcessGuid, TargetProcessId, TargetImage, NewThreadId, StartAddress, StartModule, StartFunction

↑ 這裏我用到了TargetImage、SourceImage。

其餘時間過濾器、過濾事件的選項、onmatch選項可取值、condition可設置的值、配置文件樣例,能夠參考使用輕量級工具Sysmon監視你的系統

2.寫與本身想要監控的事件想對應的配置文件。個人建立配置文件20155312Sysmoncfig.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瀏覽器,(不用IE瀏覽器),進程名是「360chrome.exe」,也是以「chrome.exe」結尾的,因此這裏只寫「chrome.exe」便可。寫在exclude中就是不記錄由360瀏覽器建立的進程。
    • 想知道本身瀏覽器進程名,能夠查看咱們上一階段的「netstatlog.txt」中的記錄。
  • 進程建立時間相似,也是不建立瀏覽器建立進程的時間。
  • 網略鏈接過濾掉了瀏覽器的網絡鏈接、源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.把配置文件放在C盤下。

第三步: 啓動sysmon。

1.下載老師提供的SysinternalsSuite201608壓縮包,解壓。

2.在命令提示符(管理員)中進入到該目錄下。win8中用管理員身份運行cmd方法:使用「win+x」調出win8開始菜單->選擇「命令提示符(管理員)」

2.安裝sysmon:執行命令sysmon.exe -i C:\20155312Sysmoncfig.txt,這裏注意要把配置文件名換成本身的。

3.這裏彈出的窗口點擊agree:

4.成功安裝的結果以下:

【注】:若是沒有以管理員身份運行安裝指令,安裝後會提示:「You need to launch Sysmon as an Administrator.」以下圖。且在第四步中將沒法找到Windows下的Sysmon。

5.若是修改了配置文件,要運行指令:sysmon.exe -c C:\20155312Sysmoncfig.txt

第四步:在事件查看器裏查看日誌

1.桌面「這臺電腦」圖標,右鍵菜單中,點擊打開「管理」。

2.點擊左側「系統工具」->「事件查看器」

3.點擊「事件查看器」右側小箭頭,選擇日誌的位置:應用程序和服務日誌/Microsoft/Windows/Sysmon/Operational。

4.利用Sysmon具體分析日誌的例子我選擇了本身實驗二中生成的後門zjy_backdoor.exe進行分析。

第一步:啓動回連、安裝到目標主機。

14:21:28時可找到運行後門文件zjy_backdoor.exe相對應的日誌以下:

與此同時,我還發現了一個名爲360toasts.exe的程序,由於我運行後門時有被360攔截,因此它就是360檢測到危險時運行的程序。

後來我添加後門到了信任文件,因此360衛士後續還運行了其餘一些可執行文件,例如:360RealPro.exe、360sctblist.exe、360sclog.exe、360tray.exe、。

第二步:Linux執行了record_mic截獲音頻、webcam_snap截獲照片、keyscan_start記錄擊鍵記錄、getuid獲取當前用戶等操做。

15:16前我完成了record_mic截獲音頻、webcam_snap截獲照片、keyscan_start記錄擊鍵記錄、getuid獲取當前用戶等操做,相對應的觀察日誌文件發現有這樣幾條記錄:

15:15:16時啓動了conhost.exe的事件:

  • conhost.exe是命令行程序的宿主進程。簡單的說他是微軟出於安全考慮,在windows 7和Windows server 2008中引進的新的控制檯應用程序處理機制。這個好像和後門沒什麼關係。

15:16:15時有一個啓動了SearchFilterHost.exe的事件:

  • SearchFilterHost.exe是桌面搜索引擎的索引程序,其主要做用是創建快速索引文件,讓用戶可以更好的搜索出電腦中的任意資料。它會在計算機空閒時自動掃描索引位置的文件名、屬性信息和給定類別的文件內容,這些索引位置默認包括桌面、收藏夾、開始菜單、系統目錄。

因此沒分析出個因此然,這個日誌看不出來是否獲取了攝像頭什麼的。

第三步:既然上述行爲暫時分析不出什麼,咱們試試下面這些操做:dir、shell、getuid、getpid、ps等

①運行dir後,首先咱們發現了一個很是重要的進程svchost.exe:

  • Svchost.exe是微軟視窗操做系統裏的一個系統進程,管理經過Dll文件啓動服務的其它進程,一些病毒木馬假裝成系統dll文件經過Svchost調用它,試圖隱藏本身。每一個svchost能夠同時調用多個dll文件,啓動多個服務。

②運行shell後,咱們能夠觀察到一個和咱們後門所在文件夾有關的C:\Windows\SysWOW64\cmd.exe程序以下圖所示。

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

其餘幾個命令分析方法相似,通常Kali中執行個指令,Windows日誌中就會記錄這個C:\Windows\SysWOW64\cmd.exe。

返回目錄


2、惡意軟件分析

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

(1)讀取、添加、刪除了哪些註冊表項

(2)讀取、添加、刪除了哪些文件

(3)鏈接了哪些外部IP,傳輸了什麼數據(抓包分析)

第一步:下載安裝Systracer

1.首先下載完成後進行安裝,步驟爲:agree->選第二個(全面點總不會有錯吧)

->設置監聽端口號(我設成了後門生成時利用的端口)

->安裝完成

2.在打開後門前先快照一下,點擊「take snapshot」,如圖,按照如下步驟進行:

完成後顯示Snapshop #1

3.Kali打開msfconsole,完成相關設置後開始監聽,Windows運行後門後,拍攝快照:

完成後顯示Snapshop #2

4.進行分析:

①點擊上方「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控制面板中的信息。不要編輯這些信息,由於一些小程序的改變在不少地方,一個丟失的項會使這個系統變的不穩定。

此外,一些Systracer未受權的地方咱們是無法查看的。

5.接下來咱們訪問讓攻擊機獲取目標主機音頻、攝像頭、擊鍵記錄,而後生成快照,看看它又作了什麼:

它改了HKEY_CURRENT_USER->software->SogouInput中用戶搜狗輸入的一部份內容,我以爲好像和擊鍵記錄有關係,由於他確定是獲取了我輸入的權限。而HKEY_CURRENT_USER的做用以下:

  • HKEY_CURRENT_USER管理系統當前的用戶信息。在這個根鍵中保存了本地計算機中存放的當前登陸的用戶信息,包括用戶登陸用戶名和暫存的密碼。

對比結果以下:

此外,還有這些修改咱們是沒有辦法查看的,雖然不知道具體改了什麼,但咱們仍是能夠了解攻擊機獲取主機權限後修改了什麼:

6.此外咱們能夠經過查看後門軟件的「opened handles」(打開的句柄)來對比他們都作了什麼:

回連成功時:

獲取權限進行相關操做後,跟只是回連相比,多了不少內容:

第二步:用wireshark抓包分析鏈接了哪些外部IP,傳輸了什麼數據

1.在回連以前,開始捕獲;

2.回連完成後結束捕獲,並把過濾規則設置爲ip.addr == 192.168.217.132,這裏我只想查看和虛擬機IP有關的數據包,因此把沒用的包過濾掉:

3.接下來能夠看看它鏈接了哪些外部IP:

  • 219.126.28.25

4.再往下看看,發現本身的Windows主機IP:

5.看看都傳了啥數據:

①第一條是Windows向Kali發出TCP同步請求包SYN:

②第二條是Kali給Windows的復位包RST和確認包ACK:

可是RST標示覆位、用來異常的關閉鏈接。這樣看來是Kali如今還不是和主機鏈接的時機哈哈哈哈,再往下看看。

③果真!找到了後面他們兩個握手的包:

這是SYN同步請求包:

這是SYN+ACK:

後面Kali還給Windows傳了一大堆ACK包,這裏省略,有時還伴有PSH+ACK包。(PSH就表示有 DATA數據傳輸)

6.Kali獲取下攝像頭、錄個音、獲取擊鍵記錄並查看,再看看wireshark:

這回PSH+ACK的包好像多了些,具體的數值看不出個因此然,但一猜確定就是那些擊鍵記錄啥的唄。

返回目錄


實驗總結與體會

經過本次實驗,我學會了如何讓計算機週期性執行一個任務,若是把命令行下的結果記錄到文件中、如何利用.bat文件顯示時間、如何利用excel分析數據、如何利用Sysmon監控本身感興趣的事件、如何寫配置文件、如何分析日誌中的大量信息、如何對惡意代碼進行進一步分析。

經過本身動手實踐,實現了從攻擊者身份到檢測、分析者身份的轉變,更全面的理解了前兩次實驗中生成的後門程序到底在作什麼,對惡意代碼有了更深刻的理解。

返回目錄

相關文章
相關標籤/搜索