2019-2020-1 20175313張黎仙《網絡對抗技術》Exp4 惡意代碼分析

1、實驗目標

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

2、預備知識

惡意代碼概念html

  • 是經過存儲介質和網絡進行傳播,從一臺計算機系統到另外一臺計算機系統,未經受權破壞計算機系統完整性的程序或代碼
  • 最多見的惡意代碼有病毒、木馬、蠕蟲、後門、僵屍網絡、Rootkit等
  • 惡意代碼都有如下共同特徵:
  • 惡意的目的
  • 自己是計算機程序
  • 經過執行發生做用

更多詳情請參見惡意代碼linux

Schtasks的使用git

C:\schtasks /create /TN netstat /sc MINUTE /MO 5 /TR "cmd /c netstat -bn > c:\netstatlog.txt"
  • TN(TaskName)任務名,這裏爲netatat
  • sc(ScheduleType)計時方式,這裏爲MINUTE,表示以分鐘爲單位
  • MO(Modifier)指定任務在其計劃類型內運行的頻率,這裏爲5,結合上面的sc,表示每5分鐘執行一次
  • TR(TaskRun)要運行的指令,這裏爲cmd /c netstat -bn > c:\netstatlog.txt

更多詳情請參見Schtasks官方網站chrome

Sysmon的使用shell

  • Sysmon是微軟Sysinternals套件中的一個工具。能夠監控幾乎全部的重要操做。
  • 基本操做能夠描述爲三步:
  1. 肯定要監控的目標
  2. 寫好配置文件
  3. 啓動sysmon

而後就能夠在事件查看器裏找到日誌了api

  • Sysmon.exe -i <configfile>:Sysmon安裝
  • Sysmon.exe -c <configfile>:Sysmon配置
  • Sysmon.exe -u [force]:Sysmon卸載

更多詳情請參見Sysmon官方網站瀏覽器

3、實驗內容

任務一:系統運行監控

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

  • 使用schtasks /create /TN netstat5313 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstat5313.txt"命令建立計劃任務netstat5313安全

  • 在C盤要目錄下建一個文件c:\netstat5313.bat,內容以下:網絡

date /t >> c:\netstat5313.txt
time /t >> c:\netstat5313.txt
netstat -bn >> c:\netstat5313.txt

  • 打開計算機管理-任務計劃程序,能夠看到咱們新建立的任務:

  • 雙擊netstat5313,點擊操做->編輯,將程序或腳本改成咱們建立的netstat5313.bat批處理文件,參數可選項爲空,常規中勾選使用最高權限運行

  • 對該任務右鍵點擊運行,可在netstat5313.bat目錄下看到netstat5313.txt,打開就可看到每隔一分鐘被輸到這裏的聯網數據。

  • 一段時間後,打開Excel表格,選擇數據->導入數據->選擇數據源,點擊肯定。

  • 原始數據類型中選擇分隔符號,勾選全部分隔符號便可

  • 選擇插入->數據透視圖,選擇咱們要分析的那一列,並默認位置新表格,點擊肯定

  • 在字段中去除不須要的字段

  • 該字段拖動到下方的軸和值兩個區域中

  • 最後,獲得咱們須要的聯網信息統計圖

  • 從圖中可知:
  • 使用最多的是youdao.exe,由於我正在寫博客/(ㄒoㄒ)/~~
  • chrome.exe、wps.exe、wpscenter.exe這些均爲正常的
  • WpnService和WpnUserService至關於一個軟件檢測版本更新同樣有更新就會自動檢測到自動更新,也是正常的
  • 值得注意的是出現了SearchUI.exe和svchost.exe猜想個人電腦裏應該是出現了惡意代碼。。。

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

  1. 肯定要監控的目標
  • 進程建立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
  1. 寫好配置文件
<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」,寫在exclude中就是不記錄由谷歌瀏覽器建立的進程
  • 進程建立時間相似,也是不建立瀏覽器建立進程的時間
  • 網絡鏈接過濾掉了瀏覽器的網絡鏈接、源IP爲127.0.0.1(localhost)的網絡鏈接和目的端口爲137的鏈接服務,且查看目的端口爲80(http)和443(https)的網絡鏈接。(137端口的主要做用是在局域網中提供計算機的名字或IP地址查詢服務,通常安裝了NetBIOS協議後,該端口會自動處於開放狀態)
  • 遠程線程建立記錄了目標爲explorer.exe、svchost.exe、winlogon.exe和powershell.exe 的遠程線程
    • explorer.exe是Windows程序管理器或者文件資源管理器
    • svchost.exe是一個屬於微軟Windows操做系統的系統程序,是從動態連接庫 (DLL) 中運行的服務的通用主機進程名稱
    • winlogon.exe是Windows NT 用戶登錄程序,用於管理用戶登陸和退出
    • powershell.exe是專爲系統管理員設計的新 Windows 命令行外殼程序。該外殼程序包括交互式提示和腳本環境,二者既能夠獨立使用也能夠組合使用
  1. 啓動sysmon
  • 以管理員身份進入到SysinternalsSuite201608文件夾下,執行sysmon.exe -i C:\20175313Sysmoncfig.txt

  • 點擊事件查看器,在應用程序和服務日誌->Microsoft->Windows->Sysmon->Operational能夠看到按照配置文件的要求記錄的新事件,以及事件ID、任務類別等

  1. 分析實驗二生成的後門程序20175313_backdoor.exe
  • 回連成功

  • 在點擊Sysmon->Operational刷新記錄,查看運行後門文件20175313_backdoor.exe日誌具體內容

  • kali執行shell獲取win7的cmd,並查看事件查看器


  • kali執行migrate 2224遷移到explore.exe進程上,並查看事件查看器


  • kali執行record_mic獲取win7的錄音,並查看事件查看器

這裏發現了一個被建立的的進程svchost.exe,並且他還遷移到explore.exe上,隱藏本身。(svchost.exe是微軟視窗操做系統裏的一個系統進程,管理經過Dll文件啓動服務的其它進程,一些病毒木馬假裝成系統dll文件經過Svchost調用它,試圖隱藏本身。每一個svchost能夠同時調用多個dll文件,啓動多個服務)app

任務二:惡意軟件分析

你能夠在任何想要的時間獲取無數個屏幕快照,比較任何一對想要的屏幕快照,而且觀察其間的不一樣之處。獲取屏幕快照一般會持續幾分鐘的時間,這取決於文件和文件夾的數量和註冊表項目的總數。

  • 遠程掃描設置端口號5313

  • 開啓後門程序回連kali,成功後建立第二個快照Snapshot #2
  • 一段時間事後(中間發生了一些事情),從新截取快照Snapshot #3
  • kali執行shell獲取目標機cmd,執行dir後,捕獲快照Snapshot #4

(1)安裝到目標機,啓動回連並進行其餘任意操做進行分析

  • 快照Snapshot #3和快照Snapshot #4對比分析:


  • 從圖中能夠看出:
  • 運行後門程序須要加載apphelp.dll 應用程序兼容性客戶端庫
  • explore.exe新增了一個tquery.dll,說明explore.exe正在運行程序,這裏猜想是因爲後門程序爲了隱藏本身,遷移到瀏覽器上了。
  • SearchIndexr.exe新增了大量的.dll猜想是在進行大量的查詢工做,由於攻擊機kali執行了dir

(2)查看該後門軟件讀取、添加、刪除了哪些註冊表項

  • 快照Snapshot #3和快照Snapshot #4對比分析:

(3)查看該後門軟件讀取、添加、刪除了哪些文件

修改



從這裏能夠看出來,後門程序修改了註冊表配置文件。

新增


  • kernel32.dll屬於內核級文件,它控制着系統的內存管理、數據的輸入輸出操做和中斷處理,是必需的
  • advapi32.dll是一個高級API應用程序接口服務庫的一部分,包含的函數與對象的安全性,註冊表的操控以及事件日誌有關,會受到病毒的侵擾及篡改,致使系統文件丟失、損壞
  • wsock32.dll是Windows Sockets應用程序接口,用於支持不少Internet和網絡應用程序,是一個對系統很關鍵或很可疑的文件,易遭受木馬病毒(如「犇牛」病毒)破壞致使系統找不到此文件,出現錯誤提示框。
  • ws2_32.dll是Windows Sockets應用程序接口。一些病毒會在殺毒軟件目錄中創建僞"ws2_32.dll"的文件或文件夾,在殺毒軟件看來這是程序運行須要的文件而調用,這個所謂的「文件」又不具有系統"ws2_32.dll"文件的功能,因此殺毒軟件等就沒法運行了而提示:應用程序正常初始化失敗。
  • wsock32.dll和ws2_32.dll,這兩個是會常常被木馬、病毒等進行侵略篡改的文件,能夠分析出咱們的後門程序對其作必定的修改來實現反彈鏈接控制被控機。

刪除

  • EhStorAPI.dll Windows加強的存儲API
  • netprofm.dll網絡列表管理器
  • 這裏能夠看到後門程序進行反彈鏈接後還刪除了瀏覽器對其行爲了記錄

(4)查看該後門軟件鏈接了哪些外部IP,傳輸了什麼數據(抓包分析)



從上圖可知,win7給kali發送SYN請求鏈接,說明該後門程序採用反彈式鏈接;創建鏈接後,Kali會不斷給Windows傳一大堆ACK包,有時還伴有PSH+ACK包(進行數據傳輸)。

4、實驗思考

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

  • 監控進程:使用Process Explorer
  • 查看網絡鏈接狀況:使用Windows任務計劃netstat
  • 查看數據包:使用wireshark捕包,進行數據流分析
  • 查看端口:使用nmap查看可疑端口
  • 最後,還可利用sysmon工具,配置好想要監控的端口、註冊表信息、網絡鏈接等信息,經過其生成的日誌文件進行查看

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

  • 使用命令tasklist查看程序進程號
  • 使用SysTracer隔斷時間截取快照,對截取的快照進行對比分析,分析文件、註冊表、應用程序等信息之間的差別
  • 使用PEiD進行外殼檢測
  • 使用PE explorer查看PE文件頭中包含代碼信息
  • 使用Process Monitor分析該程序。Process Monitor至關於Filemon+Regmon,其中的Filemon專門用來監視系統 中的任何文件操做過程,而Regmon用來監視註冊表的讀寫操做過程

5、實踐體會

  • 本次實驗,理論性是知識偏多,須要學習的內容也比較多。須要準備一個清醒的頭腦,以及勤勞的雙手。可是,不用安裝許多軟件,真是讓個人電腦又多了一線生機。由此,也讓我更加願意進行本章節內容的學習。
  • 固然經過本次實驗,更加加深了我對惡意代碼的認識,也彷佛讓我找到了某同窗安插在我電腦上的後門程序🙃

6、參考資料

相關文章
相關標籤/搜索