20145221高其_惡意代碼分析

20145221高其_惡意代碼分析

惡意代碼

概述

  • 惡意代碼是指故意編制或設置的、對網絡或系統會產生威脅或潛在威脅的計算機代碼。最多見的惡意代碼有計算機病毒(簡稱病毒)、特洛伊木馬(簡稱木馬)、計算機蠕蟲(簡稱蠕蟲)、後門、邏輯炸彈等。
  • 特徵:
    • 惡意的目的,獲取靶機權限、用戶隱私等
    • 自己是計算機程序,能夠執行,並做用於靶機
    • 經過執行發生做用,通常來講不運行是沒問題的

惡意代碼分析

  • 在大多數狀況下,進行惡意代碼分析時,咱們將只有惡意代碼的可執行文件自己,而這些文件並非咱們人類可讀的。爲了瞭解這些文件的意義,你須要使用各類工具和技巧,而每種只能揭露出少許的信息。因此在實戰中,咱們要綜合使用各類工具,才能看到一個全貌。
  • 惡意代碼分析有兩類基本方法:
    • 靜態分析:在沒有運行惡意代碼時對其進行分析的技術
    • 動態分析:相比較靜態分析而言,則須要運行惡意代碼,經過其產生的行爲,如對計算機中註冊表、文件的更改,網絡的鏈接等動態數據進行分析,從而肯定其具體行爲

惡意代碼

惡意代碼分析之靜態分析

概述

  • 靜態分析技術,能夠確認一個文件是不是惡意的,提供有關其功能的信息,能夠經過一些PE工具箱(PEview,dependency walker,Resource Hacker,PE explorer等)分析其函數連接庫、殼的狀況、特徵庫比對等操做,經過這些工具能夠快速分析代碼的性質,可是針對較爲複雜的惡意代碼時很大程度上是無效的;
  • 這就須要更爲高級的應用技術了,最典型的方法就是逆向工程,經過將可執行文件裝載到反彙編器中,查看程序指令,觀察惡意代碼到底作了什麼。由於這些指令是被CPU執行的,因此經過反彙編能夠告訴咱們程序具體作了什麼,該方法雖然很是高效實用,可是須要綜合掌握C語言、彙編、代碼結構以及windows操做系統等知識,上手略微困難。

靜態分析之特徵庫比對

  • 該內容在前幾篇博客中都有提到,特徵庫比對是一種靜態分析技術,經過對代碼與特徵庫中的特徵碼進行比對,判斷這個文件是不是爲惡意代碼,若是是則進一步聯繫到病毒庫中對該病毒的描述,從而確認其行爲,達到分析的目的
  • 經過VirSCAN.org平臺進行分析以下:
  • 點擊「文件行爲分析」,能夠詳細地察看是否有敏感行爲,能夠發現該文件會有網絡鏈接的行爲,自行刪除註冊表鍵值的行爲

靜態分析之PE套件使用

  • 這一部份內容在《計算機病毒》課中龐老師作過簡單的講解,應用到對惡意代碼的分析再合適不過了,這也就是學科之間的聯繫吧~

PE explorer

  • 在虛擬機下經過PE explorer打開文件5221.exe,能夠查看PE文件編譯的一些基本信息,導入導出表等
  • 以下圖,能夠看到該文件的編譯時間、連接器等基本信息
  • 以下圖,咱們點擊「導入表」,能夠查看該文件依賴的dll庫
    • WSOCK32.dllWS2_32.dll,是用來建立套接字的dll庫,顯然,若是這個程序所介紹的功能中不該該有網絡鏈接部分,那麼在其動態連接庫中還存在這2個庫就顯得尤其可疑了
    • 另外圖中所顯示的ADVAPI32.dll庫百度可知:是一個高級API應用程序接口服務庫的一部分,包含的函數與對象的安全性,註冊表的操控以及事件日誌有關。
    • 敏感了吧,註冊表的操控,想一想72k的一個小程序還操控註冊表,一看就不正經了
    • 另外2個不作過多介紹,屬於通常程序在win下都會調用的dll庫html

PEiD

  • PEiD是一款著名的查殼工具,其功能強大,幾乎能夠偵測出全部的殼,其數量已超過470種PE文檔的加殼類型和簽名。
  • 通過上一次(《20145221高其_免殺原理與實踐》)的實踐學習,知道惡意代碼爲了掩護假裝本身,另外一種經常使用方式就是加殼,經過加殼來達到不被殺毒引擎特徵碼察覺的目的
  • 因此通常正常的軟件是不會爲本身加殼的,若是你從網上下載了一個帶殼軟件,那麼你就要當心了,須謹慎使用該軟件;接下來就經過PEiD這款工具分析一下5221.exe看看是否帶殼(PS:我將網上提供的PEiD下載到win10虛擬機上發現不能打開文件,因此改用XP虛擬機打開了)
  • 「什麼都沒找到 [調試] 」是否是看着挺傷心,這病毒咋沒加殼?其實不是這樣的,正常的編譯話會顯示編譯器的,既然沒找到,說明不能識別該編譯器(可能和PEiD版本有關),因此咱們點擊一下上圖中的Set Info,看看究竟是怎樣的編譯器使它不能識別
  • 百度一下UPX不難發現,這就是一個壓縮殼工具!因此5221.exe多是一款壓縮殼病毒git

Dependency Walker

  • Dependency Walker是一款Microsoft Visual C++中提供的很是有用的PE模塊依賴性分析工具,能夠查看PE模塊的導入模塊,查看PE模塊的導入和導出函數,動態剖析PE模塊的模塊依賴性,解析C++函數名稱
  • 整體來講,是一款專門分析函數依賴的工具軟件,相比PE explorerPE view對dll文件分析更專業,更細緻具體,詳情以下圖
  • 咱們從中看見了,該可執行文件能夠對註冊表進行刪除操做,這也與VirSCAN.org查殺解僱保持一致。

系統運行監控

TCPView查看惡意代碼回連先後狀況

  • 該工具能夠幫咱們實時分析正在聯網的進程,因此咱們能夠經過查看每一個進程的聯網通訊狀態,初步判斷其行爲,例如一個程序應該是單機運行的,若是有網絡行爲,就顯得很可疑了

sysmon工具查看惡意代碼回連先後狀況

  • Sysmon.exe同目錄下創建文件:test.txt,並輸入老師指導書中給的XML
  • 管理員身份運行CMD,輸入指令:Sysmon.exe -i test.xml,進行安裝
  • 輸入指令:Sysmon.exe -c test.xml,進行配置
  • 設置好上述,能夠進入Applications and Services Logs/Microsoft/Windows/Sysmon/Operational查看日誌,這個過程會很慢,由於有大量日誌數據
  • 準備好kali,打開木馬5221.exe,查看日誌,能夠經過搜索功能找到
  • 在回連階段,我找到2個相關的日誌記錄
    • 建立網絡鏈接:
    • 建立進程:木馬極可能假裝成電腦自帶的explorer.exe進程

使用計劃任務schtasks

  • 使用命令C:\schtasks /create /TN netstat /sc MINUTE /MO 5 /TR "cmd /c netstat -bn > c:\netstatlog.txt" 建立計劃任務netstat
  • 以下圖所示:

netstat命令設置計劃任務

  • 在C盤中建立一個netstat5221.bat文件
    • 其中寫入代碼
    date /t >> c:\netstat5221.txt
    time /t >> c:\netstat5221.txt
    netstat -bn >> c:\netstat5221.txt
  • 在任務計劃程序中,新建一個觸發器
  • 新建一個操做,並設置參數:>> c:\netstat5221.txt
  • 並設置一個名稱,給予最高權限
  • 回連後,發現記錄瞭如下回連產生的記錄

惡意代碼分析之動態分析

概述

  • 動態分析技術,是創建在運行代碼的基礎上的,經過觀察惡意代碼執行後系統上的行爲,例如對系統註冊表的分析、文件的分析、網絡的鏈接等行爲,進而判斷出該代碼具體功能,以移除感染。
  • 但上述操做進行以前,必須得有一個前提——創建一個安全的環境,可以避免惡意代碼對系統帶來風險的前提下,研究運行的惡意代碼。因此通常能夠用虛擬機創建一個目標靶機,在對惡意代碼目的不明的狀況下,先對靶機進行快照備份,而後再運行惡意代碼監控其行爲,這樣的動態分析步驟纔會對系統有必定的保障。
  • 再高級一點的就是對代碼的動態調試了,經過源代碼級與彙編代碼級的調試器,對惡意代碼進行一步一步調試,觀察其執行過程當中每一個時刻的內部狀態。

動態分析之SysTracer

  • 這個實驗建議在虛擬機中完成,虛擬機中文件少、註冊表少,易分析

操做思路與步驟:

  • Step0:準備兩臺虛擬機,kali攻擊機,Win10靶機,SysTracer2.10分析軟件
  • Step1:打開攻擊機msfconsle,開放監聽;win10下對註冊表、文件、應用狀況進行快照,保存爲Snapshot #1
  • Step2:win10下打開木馬5221.exe,回連kali,win10下再次快照,保存爲Snapshot #2
  • Step3:kali中經過msf發送文件給win10靶機,win10下再次快照,保存爲Snapshot #3
  • Step4:kali中對win10靶機進行屏幕截圖,win10下再次快照,保存爲Snapshot #4
  • 經過比較每次快照文件的區別,來判斷相應的變化

結果分析

  • 啓動回連時註冊表發生變化
  • 啓動回連時,新建了5221.exe應用,能夠看見它啓用了許多DLL文件
    • wow64cpu.dll:wow64cpu.dll是一個進程來自Microsoft Corporation。它能夠被髮如今C:\位置。這是一個潛在的安全風險,它能被病毒惡意修改。
    • wow64win.dll:同上。
    • ntdll.dll:ntdll.dll是Windows系統從ring3到ring0的入口。位於Kernel32.dll和user32.dll中的全部win32 API 最終都是調用ntdll.dll中的函數實現的。ntdll.dll中的函數使用SYSENTRY進入ring0,函數的實現實體在ring0中。
    • Intel的x86處理器是經過Ring級別來進行訪問控制的,級別共分4層,RING0,RING1,RING2,RING3。Windows只使用其中的兩個級別RING0和RING3。RING0層擁有最高的權限,RING3層擁有最低的權限。按照Intel原有的構想,應用程序工做在RING3層,只能訪問RING3層的數據,操做系統工做在RING0層,能夠訪問全部層的數據,而其餘驅動程序位於RING一、RING2層,每一層只能訪問本層以及權限更低層的數據。小程序

    • 綜合以上描述,該程序能夠獲取到RING0權限,具備較高的侵略性。
  • 啓動回連時開放端口發生變化,以下圖所示,由於本地木馬5221.exe會鏈接遠程端口443,因此先關閉了443端口,再開放了443端口
  • 安裝到目標機時,文件內容監控發現多了個文件
  • 截屏時註冊表發生了一些變化

wireshark抓包分析

  • 設置IP過濾格式:ip.src==192.168.18.128 or ip.dst==192.168.18.128以下圖所示,捕捉到了靶機回連kali時經過TCP的三次握手協議過程
  • 設置IP過濾格式:ip.src==192.168.18.128 and ip.dst==192.168.18.129以下圖所示,捕捉到了靶機kali向虛擬機win7發送文件的數據包

總結與思考

  • 惡意代碼不只能夠經過一些工具來進行靜態分析,並且還能夠經過動態的手段來防禦。例如咱們電腦自帶的Windows Defender,IDS,還有殺軟的防禦功能,對系統都是一種監控;可是這種監控咱們沒法直接看到,一般都是自動處理了,只能留下清除的記錄,不過咱們能夠經過一些動態監控軟件,例如SysTracer、SysinternalsSuite、ProceMonitor等一些工具,能夠蒐集一段時間內系統註冊表、文件等的變化;
  • 若是懷疑一臺主機上有惡意代碼,應當首先更新病毒庫,並對敏感懷疑位置進行病毒查殺,若是沒有找到,應該開啓相關病毒掃描引擎,對計算機進行動態掃描,而後打開相應的監視器,查看有沒有可疑註冊表、進程,經過註冊表中的可疑項或者進程,右鍵能夠打開文件所在位置,對特定的文件進行詳細的靜動態分析,最終確認是否爲惡意代碼;
  • 惡意代碼分析是一種解剖惡意代碼的藝術,須要瞭解惡意代碼是如何工做的、如何識別它,以及如何打敗它消除它,經過此次的實踐,對惡意代碼的基本分析仍是不算很難的,靜態動態的分析方法綜合應用,基本上就能夠確認一個代碼的行爲了,根據以上方法,咱們不用過渡依賴於殺毒軟件給咱們的殺毒報告,能夠對有所懷疑的軟件進行自主分析,最後作出本身的決定是否對其查殺。
相關文章
相關標籤/搜索