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

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

實驗要求

  1. 監控你本身系統的運行狀態,看有沒有可疑的程序在運行。html

  2. 分析一個惡意軟件,就分析Exp2或Exp3中生成後門軟件;分析工具儘可能使用原生指令或sysinternals,systracer套件。linux

  3. 假定未來工做中你以爲本身的主機有問題,就能夠用實驗中的這個思路,先整個系統監控看能不能找到可疑對象,再對可疑對象進行進一步分析,好確認其具體的行爲與性質。git

實驗任務

實踐內容(3.5分)shell

  1. 系統運行監控(2分)

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

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

參考:schtask與sysmon應用指導瀏覽器

實際日誌的分析還須要發揮下本身的創造力,結合之前學過的知識如linux的文本處理指令等進行。分析的難點在於從大量數據中理出規律、找出問題。這都依賴對結果過濾、統計、分類等進一步處理,這就得你們會什麼用什麼了。安全

  1. 惡意軟件分析(1.5分)

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

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

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

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

該實驗重點在「分析」,不是「如何使用某軟件」。組長、課題負責人要求寫細一點,其餘人能夠重點放在分析上。

基礎知識問答

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

我感受後門程序會

①建立一些進程來進行惡意行爲

②佔用一些端口

③修改我電腦上的一些文件,偷看個人文件內容

④鏈接一些網絡以進行一些信息交互

監控的話,能夠

①讓主機執行netstat並分析網絡鏈接狀況。

②還能夠利用Sysmon,編寫配置文件,記錄日誌。

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

①利用Wireshark抓包,進行分析有沒有異常的或可疑的鏈接。

②還能夠利用Systracer來拍攝快照,進行對比分析改變的註冊表及文件信息。

實驗過程及步驟分析

任務一 使用系統運行監控

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

(1)使用schtask監控系統運行

  • 對於計劃任務,我打算使用Schtasks命令來監視,學姐的博客中建議閱讀Schtask命令詳解

  • 學習也要有目的地學習,咱們想要建立一個計劃任務,因而,瞭解到與建立任務有關的命令參數:

/tn TaskName ------- 指定任務的名稱

/tr TaskRun  ------- 指定任務運行的程序或命令

/sc schedule ------- 指定計劃類型,有效值MINUTE表示指定計劃的單位時間爲minute。

/mo modifier
指定任務在其計劃類型內的運行頻率,默認值爲1

由此,命令可爲

schtasks /create/tn TaskName /tr TaskRun /sc MINUTF [/mo {1 - 365}]

第一步:建立一個計劃任務

  • 在Windows7下輸入schtasks /create /TN 20165203netstat /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstatlog.txt"便可以每分鐘監測哪些程序在利用網絡,而且能夠把結果記錄進netstatlog.txt文件裏,如圖所示建立成功。

在文檔中如何顯示日期和時間呢?咱們須要經過bat批處理來實現。那什麼又是bat批處理呢?學姐推薦了dos命名大全,.bat文件的寫法

>命令在清除掉原有文件中的內容後才把新的內容寫入原文件
>>命令會另起一行把新的內容追加到原文件中。

time,顯示和設置DOS的系統時間。[格式] time [hh[:mm[:ss[.cc]]]

date,顯示和設置DOS的系統日期。[格式] date [MM-DD-YY]

netstat,顯示與IP 、TCP 、UDP 和ICMP 協議相關的統計數據
-b顯示包含於建立每一個鏈接或監聽端口的可執行組件
-n以數字形式顯示地址和端口號。

因此,最後bat文件以下:
date /t >> c:\netstatlog.txt
time /t >> c:\netstatlog.txt
netstat -bn >> c:\netstatlog.txt

第二步:

  • 在桌面上建立一個netstatlog.txt文件,文件內容爲上面分析的內容。
date /t >> c:\netstatlog.txt
time /t >> c:\netstatlog.txt
natstat -bn >> c:\netstatlog.txt
  • 保存後修改文件名爲"netstatlog.bat";
  • 將其複製粘貼到C盤,須要用管理員權限。

第三步:編輯任務

  • 首先,咱們須要進入任務計劃程序:
    點擊控制面板 -> 選擇管理工具 -> 選擇任務計劃程序

  • 活動任務中找到咱們建立的計時任務20165203netstat,並雙擊點開。

  • 點擊左數第三個選項操做 -> 點擊右欄中的屬性 -> 屬性頁面上方的操做

  • 雙擊任務進入編輯操做界面

  • 程序或腳本處點擊瀏覽 -> 選擇咱們建立的netstat.txt添加參數處可選空。

  • 修改完畢後,點擊肯定就能夠啦。

  • 還要提升任務權限。(後面問題解決模塊詳細說明)

  • 查看C盤目錄下的netstat.txt文件,就已經有了時間的記錄了,任務的建立完成了。

第四步:接下來咱們要作的就是等待,等待的時間取決於你想要監視的時長,注意,必定是電腦接通交流電源的時候監視任務才能運行哦,可不要竹籃打水一場空。

第五步:分析數據

獲得了數據,咱們就要分析數據了,這須要咱們的數學知識和計算機基本操做知識了,分析數據最直觀的就是統計圖的形式了,那麼在哪裏能夠找到統計圖呢?個人選擇是Excel

  • 導入數據:在新建的excel文件中選擇上方的數據 -> 獲取外部數據 -> 自文本。並選擇帶有咱們所要統計數據的文本netstatlog.txt,點擊導入

  • 進入嚮導後,選擇分隔符號,點擊下一步

  • 進入第二步後,選中所有分隔符號,點擊下一步

  • 進入第三步後,列數據格式選擇常規,點擊完成便可。

  • 鼠標選中左上角第一個單元格,點擊肯定便可。

  • 如此就獲得了咱們的待分析的數據了。

第六步:獲得數據的統計圖,並進行統計學分析

咱們能夠統計一下哪一個程序鏈接互聯網的次數最多。

  • 統計哪一個程序鏈接互聯網的次數最多,天然咱們的數據對象就是咱們的程序(第2列),咱們首先選中第2列。

  • 在上方的插入 -> 數據透視圖

  • 選擇在一個新工做表中生成

  • 右側選擇要添加到報表的字段,點擊下三角,取消沒有意義的字段(由於TCP和一些時間信息不在咱們統計範圍內,咱們須要的是程序名),點擊肯定

  • 將咱們設置好的字段拖到如圖所示的軸字段數值兩個區域中。

  • 接下來就看到咱們的圖了。

分析一下,根據個人圖,聯網最多的是虛擬機vm對應的程序vmware-hosted.exe,由於我一下午一直在整理我虛擬機裏的文檔,用虛擬機作可信的實驗,嘻嘻,排名第二的是vmware.exe,是虛擬機的一個進程程序,此外,咱們還能夠看到你們熟悉的微信wechat.exe,QQTIMTIM.exe等等。

咱們還能夠分析一些進程程序的鏈接位置,幹了什麼事,例如,個人搜狗瀏覽器SougouExplorer.exe的外部地址是36.110.170.195:55261,應該是我在查東西的時候進入到這個地址而後進行數據傳輸。

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

這一步,我想在Windows7虛擬機裏作。

  • 首先,咱們肯定監控對象:

我選擇的是進程建立ProcessCreate、進程建立時間FileCreatTime、網絡鏈接NetworkConnect、遠程線程建立CreateRemoteThread。

  • 接下來,來寫配置文件。

根據本身想要監控的事件對應的配置文件,由於使用瀏覽器不少,爲了,因此,我不想監視虛擬機的瀏覽器,天然就要過濾掉對應iexplorer.exe,創建一個配置文件20165203Sysmoncfig.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">iexplore.exe</Image> 
    </ProcessCreate>

    <FileCreateTime onmatch="exclude" >
      <Image condition="end with">iexplore.exe</Image>
    </FileCreateTime>
    
    <NetworkConnect onmatch="exclude">
      <Image condition="end with">iexplore.exe</Image>
      <SourcePort condition="is">137</SourcePort>
      <SourceIp condition="is">127.0.0.1</SourceIp>
    </NetworkConnect>
    <NetworkConnect onmatch="include">  
      <DestinationPort condition="is">5203</DestinationPort>    
      <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這裏是本身使用的瀏覽器,個人Windows7虛擬機用的是IE瀏覽器,因此,我用的是iexplore,本身能夠寫本身經常使用的瀏覽器,能夠在任務管理器中的進程中查看。
    • 進程的建立時間我也沒有建立瀏覽器進程的時間。
    • 網絡鏈接我過濾掉了瀏覽器的網絡鏈接、源IP爲127.0.0.1(本機IP)的網絡鏈接和目的端口爲137的鏈接服務,且查看目的端口爲520三、80(http)和443(https)的網絡鏈接。
    • 遠程線程建立記錄了目標爲explorer.exesvchost.exewinlogon.exepowershell.exe的遠程線程。
  • 把配置文件放在C盤根目錄下。

  • 咱們在[老師給的連接]https://gitee.com/wildlinux/NetSec/attach_files)上下載SysinternalsSuite201608.zip,並解壓。

  • 以管理員的身份進入cmd.exe,輸入sysmon.exe -i C:\20165203Sysmoncfig.txt以安裝sysmon。

  • 輸入運行後會彈出如圖所示的一個窗口,點擊agree便可。

  • 成功安裝後,如圖所示。

接下來,咱們來查看一下咱們的日誌

  • 右擊計算機,點擊打開管理

  • 點擊左側系統工具 -> 事件查看器

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

  • 利用Sysmon具體分析日誌,我所分析的日誌爲本身生成的後門程序20165203_backdoor.exe

分析:

    • 啓動回連、安裝到目標主機。

    • 如圖所示,能夠找到本身在23:52運行的後門文件20165203_backdoor.exe 對應的日誌。

    • 我還發現了qqpctray.exe的程序啓動,這應該是電腦管家試圖殺死後門程序所啓用的程序。

    • 我又試了一下:dir、shell、getuid、getpid等一些操做我又發現了一些新的線索。
      • 首先我發現了一個進程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用來攻擊主機的。

任務二 惡意軟件分析

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

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

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

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

靜態分析

  1. virscan掃描
  • virscan網站上,掃描本身的後門程序xyx_backdoor.exe

  1. 使用PEiD進行外殼檢測
  • PEid的官網上下載工具,它是一款著名的查殼工具,其功能強大,幾乎能夠偵測出全部的殼,其數量已超過470 種PE 文檔 的加殼類型和簽名。

  • 下載後解壓,點擊文件夾中的.exe文件,進行安裝啓用。

  • 咱們能夠直接選擇本身想要分析的後門程序或者直接把後門程序拖進PEid中。

    • 我一開始選擇的是沒有加殼的xyx_backdoor.exe,則顯示如圖所示信息----什麼也沒發現

    • 後來,我選擇了加壓縮殼的程序,則顯示了加殼的版本。

    • 點擊右下角>>,能夠看到關於殼的詳盡信息。
  1. 使用PE explorer來查看PE文件頭中包含的代碼信息
  • 官網上下載PE explorer。

  • 在軟件中打開咱們須要查看的後門程序,我選擇的是本身生成的xyx_backdoor2.exe。

  • 打開後咱們就能查看頭部信息。

  • 咱們能夠在試圖 -> 數據目錄中查看程序靜態數據目錄信息。

  • 咱們也能夠在試圖 -> 節頭中查看節頭信息。

  • 找到工具 -> 反彙編器能夠進行反彙編,咱們能夠看到頭部的彙編語言。

  • 點擊導入標誌,咱們能夠查看引用的Dll庫。

  • 咱們能夠看到該後門程序運用了一些dll庫執行文件:
    • msvcrt.dllmsvcrt.dll是微軟在windows操做系統中提供的C語言運行庫執行文件(Microsoft Visual C Runtime Library),其中提供了printf,malloc,strcpy等C語言庫函數的具體運行實現,而且爲使用C/C++(Vc)編譯的程序提供了初始化(如獲取命令行參數)以及退出等功能。
    • kernel32.dll:kernel32.dll是Windows 9x/Me中很是重要的32位動態連接庫文件,屬於內核級文件。它控制着系統的內存管理、數據的輸入輸出操做和中斷處理,當Windows啓動時,kernel32.dll就駐留在內存中特定的寫保護區域,使別的程序沒法佔用這個內存區域。
    • advapi32.dlladvapi32.dll是一個高級API應用程序接口服務庫的一部分,包含的函數與對象的安全性,註冊表的操控以及事件日誌有關。xp系統通常位於C:\WINDOWS\system32\目錄下,大小659KB。
    • wsock32.dll:wsock32.dll是Windows Sockets應用程序接口,用於支持不少Internet和網絡應用程序,容易遭受木馬病毒的破壞而致使系統找不到該文件,而且出現錯誤提示框。
    • ws2_32.dll:Windows和須要執行TCP/IP網絡通訊的應用程序會調用動態連接庫ws2_32.dll
      若是ws2_32.dll不可用,那麼計算機鏈接網絡的操做會不穩定(即便不鏈接到外部網絡)。

動態分析

  1. 使用Systracer來分析:

    • 設置咱們所要監聽的端口號(我選的個人學號,也就是生成後門程序時利用的端口)。

    • 接下來安裝完成。
  • 打開後門程序前,先快照一下,點擊take snapshot,記錄一下電腦安全時的文件狀況,快照名字爲Snapshop #1。

  • 在Kali中咱們打開msfconsole,開始監聽,Windows運行後門,咱們再開始快照,記錄一下Kali監聽後的計算機文件狀況,快照爲Snapshop #2。

  • 進行分析:

    • 咱們點擊上方的Applications -> 左側Running Processes -> 找到後門程序"xyx_backdoor2.exe" -> 點擊"Opened Ports" 就能查看回連地址、遠程地址和端口號。

    • 能夠進入快照界面Snapshots右下角點擊Compare,比對一下回連先後計算機文件所發生的變化。

    • 其實,這款軟件設計的很好,藍色標註的地方就是先後發生變化的地方。
      • 首先,我發現了UserAssist中的Count發生了變化,如圖所示,這是註冊表中的一個表項,它是軟件使用記錄,不過常常會被病毒或木馬用到,應該是啓動後門程序後,後門程序對該鍵項值作了修改。

      • 其次,我還發現了nsi表項是一個腳本表項,用來描述安裝程序的行爲和邏輯的,後門的程序侵入電腦,記錄天然會發生變化。

      • 此外,如圖所示,咱們還能夠觀察到一些表項被刪除。

  • 此外,咱們訪問讓攻擊機獲取目標主機音頻、攝像頭和擊鍵記錄生成了快照snapshop #3和#4。

    • 咱們也能夠看到UserAssist中的Count又發生了改變,Nsi也發生了改變。

    • 刪除了如下表項。

  1. 咱們用wireshark抓包來分析鏈接了哪些外部IP,傳輸的數據。
  • 在回連以前,開始捕獲包;

  • 在回連完成後結束捕獲,由於咱們只想查看和虛擬機IP有關的數據包,因此,把沒用的包過濾掉,咱們能夠把過濾規則設置爲ip.addr == 192.168.1.186

  • 發現了本身的windows主機IP

  • 分析一下所傳輸的數據:

    • 第一條:咱們發現了Windows向Kali發出的TCP同步請求包[SYN]:

    • 第二條:發現了Kali的[SYN+ACK]包:

    • 第三條:Windows給Kali的迴應包。

    • 這很明顯,就是三次握手啊,哈哈哈。後面還有不少[PUSH + ACK]包。
    • 後面,我在Kali獲取下攝像頭、錄音、獲取擊鍵記錄並查看,觀察到[PSH + ACK]包更多了。

實驗中遇到的問題及解決方法

問題1:在使用schtask監控系統運行時,關於監控的狀況始終寫不進記錄文件中。

解決1:後來,發如今計算機管理中找到咱們所建立的任務,右鍵 -> 屬性,設置成最高權限,就能夠了。

問題2:在安裝sysmon時,在終端輸入輸入sysmon.exe -i C:\20165203Sysmoncfig.txt後,顯示安裝失敗,如圖所示。

解決2:後來發現,原來是沒有以管理員身份運行cmd.exe,咱們點擊查找,在cmd.exe處點擊右鍵,選擇以管理員身份運行便可。

實驗體會與總結

本次實驗,咱們經過各個軟件對後門程序做了分析,你們使用的軟件有不少,還有一些我沒寫進博客中,可是也在課下嘗試了一下。隨着軟件的不一樣,咱們的分析方法也不一樣。經過這些軟件,咱們更加全面地分析了後門程序所犯下的罪行,這些後門都繞過了殺毒軟件,這些更加證實了殺毒軟件不是萬能的,打鐵還需自身硬,提升本身的知識才能不給這些後門程序可乘之機。

相關文章
相關標籤/搜索