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

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


原理與實踐說明

1.實踐目標

  • 監控你本身系統的運行狀態,看有沒有可疑的程序在運行。
  • 分析一個惡意軟件,就分析Exp2或Exp3中生成後門軟件;分析工具儘可能使用原生指令或sysinternals,systracer套件。
  • 假定未來工做中你以爲本身的主機有問題,就能夠用實驗中的這個思路,先整個系統監控看能不能找到可疑對象,再對可疑對象進行進一步分析,好確認其具體的行爲與性質。

2.實踐內容概述

  • 系統運行監控
    • 使用如計劃任務,每隔一分鐘記錄本身的電腦有哪些程序在聯網,鏈接的外部IP是哪裏。運行一段時間並分析該文件,綜述分析結果。
    • 安裝配置sysinternals裏的sysmon工具,設置合理的配置文件,監控本身主機的重點事可疑行爲。
  • 分析該軟件在(1)啓動回連,(2)安裝到目標機(3)及其餘任意操做時(如進程遷移或抓屏,重要是你感興趣)。該後門軟件
    • 讀取、添加、刪除了哪些註冊表項
    • 讀取、添加、刪除了哪些文件
    • 鏈接了哪些外部IP,傳輸了什麼數據

3.基礎問題回答

  • 若是在工做中懷疑一臺主機上有惡意代碼,但只是猜測,全部想監控下系統一每天的到底在幹些什麼。請設計下你想監控的操做有哪些,用什麼方法來監控。
    • 使用windows自帶的schtasks指令設置一個計劃任務,發現網絡鏈接異常
    • 使用Sysmon,編寫配置文件,記錄有關的系統日誌
    • 使用Process Explorer工具,監視進程執行狀況。
    • 使用Process Monitor工具,監視文件系統、註冊表、進程/線程的活動。
  • 若是已經肯定是某個程序或進程有問題,你有什麼工具能夠進一步獲得它的哪些信息。
    • 使用systracer工具分析惡意軟件,查看其對註冊表和文件的修改。
    • 使用Wireshark進行抓包分析,監視其與主機進行的通訊過程。
    • 使用Process Explorer工具或Process Monitor工具,監視文件系統、註冊表、進程/線程的活動。

返回目錄html


實踐過程記錄

1.使用schtasks指令監控系統(使用如計劃任務,每隔一分鐘記錄本身的電腦有哪些程序在聯網,鏈接的外部IP是哪裏。運行一段時間並分析該文件,綜述分析結果)

  • 使用schtasks /create /TN netstat5318 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstatlog.txt"命令建立計劃任務netstat5318
    • TN是TaskName的縮寫,咱們建立的計劃任務名是netstat5318;
    • sc表示計時方式,咱們以分鐘計時填MINUTE;
    • TR=Task Run,要運行的指令是 netstat
    • bn,b表示顯示可執行文件名,n表示以數字來顯示IP和端口;
    • >表示輸出重定向,將輸出存放在c:\netstatlog.txt文件中
  • 在C盤中建立一個netstat5318.bat腳本文件,寫入如下內容
    date /t >> c:\netstat5318.txt time /t >> c:\netstat5318.txt netstat -bn >> c:\netstat5318.txt
  • 打開任務計劃程序,能夠看到新建立的這個任務:
    算法

  • 雙擊這個任務,點擊操做並編輯,將「程序或腳本」改成咱們建立的netstat5318.bat批處理文件,肯定便可。
    chrome

  • 還能夠自行更改該任務的其餘屬性,如在"條件"選項卡中能夠看到,電源選項中默認操做爲「只有在計算機使用交流電源時才啓動此任務」,那麼使用電池電源時就會中止任務。這點須要格外注意,若是沒有修改默認操做,任務不管如何都沒法執行可能只是由於拔掉了電源。,爲了咱們統計足夠多的數據,最好把這個取消掉
    shell

  • 執行此腳本必定時間,就能夠在netstat5318.txt文件中查看到本機在該時間段內的聯網記錄:
    windows

  • 當記錄的數據足夠豐富時,中止任務,將所得數據在excel中進行分析,此過程要一直保持開機聯網狀態才能持續監控瀏覽器

  • 等待一段時間(如一天),將存儲的數據經過excel表進行整理,過程參考可愛的學姐的博客
    • 統計數據以下:
      微信

    • 統計圖以下:
      網絡

  • 由統計數據可知,聯網最多的是是火狐瀏覽器對應的程序「firefox.exe」,排名第二的是「vmware.exe」,它虛擬機的進程。這裏咱們還能夠找到微信、TIM、後門程序20165318_win7_騰訊電腦管家.exe這些連網的進程。函數

返回目錄工具

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

  • sysmon是微軟Sysinternals套件中的一個工具,使用sysmon工具前首先要配置文件。參考使用輕量級工具Sysmon監視你的系統該文章,建立配置文件sysmon20165318.xml

  • 可選擇的事件過濾器有 ProcessCreate 進程建立、FileCreateTime 進程建立時間、NetworkConnect 網絡連接、ProcessTermina 進程結束、DriverLoad 驅動加載、ImageLoad 鏡像加載、CreateRemoteTh 遠程線程建立、RawAccessRead 驅動器讀取、ProcessAccess 進程訪問、FileCreate 文件建立、RegistryEvent 註冊表事件、FileCreateStre 文件流建立等。
  • 我比較感興趣的是進程建立ProcessCreate、進程建立時間FileCreatTime、網絡鏈接NetworkConnect、遠程線程建立CreateRemoteThread。

  • 過濾器事件的選項:
    • 進程建立ProcessCreate的過濾事件選項有:UtcTime, ProcessGuid, ProcessId, Image, CommandLine, CurrentDirectory, User, LogonGuid, LogonId, TerminalSessionId, IntegrityLevel, Hashes, ParentProcessGuid, ParentProcessId, ParentImage, ParentCommandLine
    • 進程建立時間FileCreatTime的過濾事件選項有:UtcTime, ProcessGuid, ProcessId, Image, TargetFilename, CreationUtcTime, PreviousCreationUtcTime
    • 網絡鏈接NetworkConnect的過濾事件選項有:UtcTime, ProcessGuid, ProcessId, Image, User, Protocol, Initiated, SourceIsIpv6, SourceIp, SourceHostname, SourcePort, SourcePortName, DestinationIsIpv6, DestinationIp, DestinationHostname, DestinationPort, DestinationPortName
    • 遠程線程建立CreateRemoteThread的過濾事件選項有:UtcTime, SourceProcessGuid, SourceProcessId, SourceImage, TargetProcessGuid, TargetProcessId, TargetImage, NewThreadId, StartAddress, StartModule, StartFunction
  • 我建立的配置文件sysmon20165318.xml內容以下:
<Sysmon schemaversion="4.12">
  <!-- 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> 
      <Image condition="end with">firefox.exe</Image>
    </ProcessCreate>

    <ProcessCreate onmatch="include"> 
      <ParentImage condition="end with">cmd.exe</ParentImage>
    </ProcessCreate>

    <FileCreateTime onmatch="exclude" >
      <Image condition="end with">chrome.exe</Image>
      <Image condition="end with">firefox.exe</Image>
    </FileCreateTime>
    
    <NetworkConnect onmatch="exclude">
      <Image condition="end with">chrome.exe</Image>
      <Image condition="end with">firefox.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">firefox.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」,火狐瀏覽器是「firefox.exe」我用的是360瀏覽器和火狐瀏覽器寫在exclude中就是不記錄由360瀏覽器和火狐瀏覽器建立的進程。想知道本身瀏覽器進程名,能夠查看「netstat5318.txt」中的記錄。
  • 進程建立時間相似,也是不建立瀏覽器建立進程的時間。
  • 網絡鏈接過濾掉了瀏覽器的網絡鏈接、源IP爲127.0.0.1的網絡鏈接和目的端口爲137的鏈接服務,並查看目的端口爲80(http)和443(https)的網絡鏈接。
    • 137端口的主要做用是在局域網中提供計算機的名字或IP地址查詢服務,通常安裝了NetBIOS協議後,該端口會自動處於開放狀態。
    • 127.0.0.1表示本機IP。
  • 遠程線程建立記錄了目標爲explorer.exe、svchost.exe、firefox.exe、winlogon.exe和powershell.exe 的遠程線程。
    • explorer.exe是Windows程序管理器或者文件資源管理器
    • svchost.exe是一個屬於微軟Windows操做系統的系統程序,是從動態連接庫 (DLL) 中運行的服務的通用主機進程名稱。
    • winlogon.exe是Windows NT 用戶登錄程序,用於管理用戶登陸和退出。
    • powershell.exe是專爲系統管理員設計的新 Windows 命令行外殼程序。該外殼程序包括交互式提示和腳本環境,二者既能夠獨立使用也能夠組合使用。
  • 安裝sysmon:執行命令sysmon.exe -i C:\sysmon20165318.xml,成功安裝結果以下:

  • 查看「事件查看器」,選擇日誌的位置,應用程序和服務日誌/Microsoft/Windows/Sysmon/Operational,在這裏,咱們能夠看到按照配置文件的要求記錄的新事件,以及事件ID、任務類別、詳細信息等。

  • 這個配置文件記錄的第一個日誌就是打開C:\sysmon20165318.xml配置文件

  • 分析日誌,我分析的是本身生成的後門文件進行分析。
    • 啓動回連到kali

    • 找到運行後門文件相對應的日誌,打開這個事件,能夠看到其屬於「NetworkContect」。查看詳細信息,能夠看到這個後門映像文件的具體位置、源IP和端口、目的IP和端口等

    • 運行shell,getuid等命令以後,咱們都會找到一個以前沒有出現過的C:\Windows\SysWOW64\cmd.exe程序以下圖所示,SysWOW64能夠在64bit的Windows中運行32bit的程序,而Windows下的cmd.exe是64bit的,kali回連獲取的windows的cmd程序是32位的!

    • 在執行完getuid指令後,出現瞭如下兩個日誌,雖然在沒有運行後門以前這兩個指令也會出現,可是緊接着getuid指令後出現就讓人心存疑慮了

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

返回目錄

惡意軟件分析

  • 靜態分析
    • 文件掃描(VirusTotal、VirusScan工具等)
    • 文件格式識別(peid、file、FileAnalyzer工具等)
    • 字符串提取(Strings工具等)
    • 反彙編(GDB、IDAPro、VC工具等)
    • 反編譯(REC、DCC、JAD工具等)
    • 邏輯結構分析(Ollydbg、IDAPro工具等)
    • 加殼脫殼(UPX、VMUnPacker工具等)

3.使用VirusTotal分析惡意軟件

  • 把生成的惡意代碼放在VirusTotal進行分析(也可使用VirusScan工具),基本狀況以下:

    雖然有20個報毒,可是對比實驗三中生成的那些後門來講已經算是比較少的了。

  • 查看這個惡意代碼的基本屬性:

    能夠看出它的SHA-一、MD5摘要值、文件類型、文件大小,以及TRiD文件類型識別結果。(注:TRiD經過讀取文件頭,根據特徵碼進行文件類型匹配。)最神奇的是它能夠查出來文件的編碼方式,能夠看出我是用VC++進行編譯的!

  • 還能夠看到加殼狀況:

  • 以及該惡意代碼的算法庫支持狀況:

返回目錄

4.使用PEiD分析惡意軟件

> PEiD(PE Identifier)是一款著名的查殼工具,其功能強大,幾乎能夠偵測出全部的殼,其數量已超過470種PE文檔的加殼類型和簽名。
  • 先看一下沒有加殼的後門程序

  • 再看一下加過壓縮殼的後門程序:

  • 再看一下加過加密殼的後門程序:

  • 咱們能夠看到,這個軟件雖然能夠查到壓縮殼,可是居然查不到加密殼!!!,說好的能夠偵測出全部的殼呢(* ̄︶ ̄)

返回目錄

5.使用PE Explorer分析惡意軟件

PE Explorer是功能超強的可視化Delphi、C++、VB程序解析器,能快速對32位可執行程序進行反編譯,並修改其中資源。該軟件支持插件,你能夠經過增長插件增強該軟件的功能,原公司在該工具中捆綁了UPX的脫殼插件、掃描器和反彙編器,能夠查看程序頭部信息(默認界面)、程序靜態數據目錄、程序結頭信息、對程序反彙編等等,很是好用。

  • 這裏主要看文件引用的dll庫,能夠經過視圖->引入進行查看,以下圖所示:


    • KERNEL32.dll:控制着系統的內存管理、數據的輸入輸出操做和中斷處理。
    • msvcrt.dll:是微軟編譯軟件的函數庫。
    • USER32.dll:Windows用戶界面相關應用程序接口,用於包括Windows處理,基本用戶界面等特性,如建立窗口和發送消息。它是一個對系統很關鍵或很可疑的文件,易遭受木馬病毒破壞致使系統找不到此文件,出現錯誤提示框。
    • WSOCK32.dll:Windows Sockets應用程序接口,用於支持不少Internet和網絡應用程序。是一個對系統很關鍵或很可疑的文件,易遭受木馬病毒破壞致使系統找不到此文件,出現錯誤提示框。
    • 我使用該工具查看了實驗三生成的多個後門程序,發現使用veil生成的後門程序所引用的dll文件是最多的,並且全部的後門程序都會引用KERNEL32.dll這個文件。

返回目錄

  • 動態分析
    • 快照比對(SysTracer、Filesnap、Regsnap工具等)
    • 抓包分析(WireShark工具等)
    • 行爲監控(Filemon、Regmon、ProcessExplorer工具等)
    • 沙盒(NormanSandbox、CWSandbox工具等)
    • 動態跟蹤調試(Ollydbg、IDAPro工具等)

6.使用Process Monitor分析惡意軟件

Process Monitor 是一款由 Sysinternals 公司開發的包含強大的監視和過濾功能的高級 Windows 監視工具,可實時顯示文件系統、註冊表、進程/線程的活動。

  • 打開軟件,能夠看到各個進程的詳細記錄,下圖是個人後門進程:(你們若是使用這個軟件,必定必定不要光靠肉眼去找,要善於利用查找,否則猶如大海撈針啊!!!)

  • 進程的詳細信息以下:

  • 咱們還能夠看到這個後門程序引用的各類其餘的庫

返回目錄

7.使用Process Explorer分析惡意軟件

Process Explorer是由Sysinternals開發的Windows系統和應用程序監視工具,目前已併入微軟旗下。不只結合了Filemon(文件監視器)和Regmon(註冊表監視器)兩個工具的功能,還增長了多項重要的加強功能。包括穩定性和性能改進、強大的過濾選項、修正的進程樹對話框(增長了進程存活時間圖表)、可根據點擊位置變換的右擊菜單過濾條目、集成帶源代碼存儲的堆棧跟蹤對話框、更快的堆棧跟蹤、可在 64位 Windows 上加載 32位 日誌文件的能力、監視映像(DLL和內核模式驅動程序)加載、系統引導時記錄全部操做等。

  • 靶機運行後門程序進行回連時,咱們能夠在 Process Explorer工具中查看到其記錄,咱們能夠看到這個程序運行時子程序中有conhost.exe這個程序,一樣的程序咱們能夠在cmd.exe的子程序中看到,由此咱們能夠知道該程序是在命令行中運行的。

  • 也能夠詳細查看該進程使用的CPU,虛擬內存空間、物理內存空間、I/O等。

返回目錄

8.使用systracer分析惡意軟件

  • 此實驗建議在兩臺虛擬機中進行,windows虛擬機文件少,進行快照時間短,且易於分析。

  • 下載SysTracer工具

  • 點擊右側的take snapshot,存儲快照
    • 快照一:未移植後門程序,保存爲Snapshot #1
    • 快照二:移植後門程序,保存爲Snapshot #2
    • 快照三:運行後門程序並在kali中實現回連,保存爲Snapshot #3
    • 快照四:在kali中使用dir指令,保存爲Snapshot #4
    • 快照五:在kali中使用record_mic指令,保存爲Snapshot #5


  • 經過右下角的compare鍵或者View Differences Lists比對各快照,能夠選擇Only Difference只查看不一樣的項

  • 對比快照一快照二:增長了個人後門程序20165318_backdoor.exe

  • 這裏能夠看到不少增長,刪除,更新的鍵值和文件

  • 對比快照二快照三(後門啓動前與啓動後):
    • 能夠看到新增的後門進程,並且能夠詳細看到其的目的IP和端口號、源IP和端口號以及鏈接的協議:

    • 並且該後門程序生成了不少文件、目錄和鍵值

    • c:\Windows\Prefetch目錄下增長了相關的文件

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

    • HKEY_USERHKEY_CURRENT_USER根鍵中的Software子鍵進行了修改(HKEY_CURRENT_USER管理系統當前的用戶信息。在這個根鍵中保存了本地計算機中存放的當前登陸的用戶信息,包括用戶登陸用戶名和暫存的密碼。):

  • 對比快照三快照四:kali上執行dir指令
    • key_local_machine根鍵中的內容進行了修改(HKEY_LOCAL_MACHINE保存了註冊表裏的全部與這臺計算機有關的配置信息)
    • c:\Program Files\SysTracer\data新增了snap003
  • 對比快照四快照五:kali上執行record_mic指令
    • 註冊表項中有如下變化:

    • 新建了不少鏈接,其中有與後門程序相關的Apache HTTP Server
    • 進程中增長了這一項,並且是與多媒體有關的,我猜想應該是與record_mic指令相關
  • 此外咱們能夠經過查看後門軟件的「opened handles」(打開的句柄)來對比他們都作了什麼

返回目錄

9.使用wireshark抓包分析惡意軟件

  • 回連完成後結束捕獲,並把過濾規則設置爲ip.addr == 10.1.1.128,這裏我只想查看和虛擬機IP有關的數據包,因此把沒用的包過濾掉
  • 咱們能夠看到有大量的TCP包,這其中有回連相關的包,以後我有用dir指令查看了靶機的當前目錄,傳輸了不少數據過來:

  • 傳輸的數據包括Windows向Kali發出TCP同步請求包SYN,Kali給Windows發出的SYN同步請求包和確認包ACK,Kali給Windows傳的ACK包、PSH+ACK包等等(PSH表示有DATA數據傳輸)

返回目錄


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

  • 在安裝sysmon是,出現如下問題:
    • 由於個人配置文件中版本原來設置的是「3.10」,與我下載的sysmon版本不符,改爲"4.20"以後就能夠正常安裝了

返回目錄


實驗總結與體會

  • 本次實驗在操做上沒有什麼難度,主要是下載安裝軟件並應用,重點在於如何利用這些軟件分析惡意代碼。在不斷實踐的過程當中,我掌握了不少種工具的用法,學會了如何讓計算機週期性執行一個任務,若是把命令行下的結果記錄到文件中、如何利用.bat文件顯示時間、如何利用excel分析數據、如何利用Sysmon監控本身感興趣的事件、如何寫配置文件、如何分析日誌中的大量信息、如何利用多種工具對惡意代碼進行進一步分析。

  • 尤爲是在動態分析的時候,特別考驗咱們的信息處理能力,明顯看到有不少不一樣,可是分析是又不知道該從何下手,不太清楚每一項具體表明什麼含義,只能經過查閱資料,連蒙帶猜的進行分析。

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

返回目錄

相關文章
相關標籤/搜索