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庫

PEiD

  • PEiD是一款著名的查殼工具,其功能強大,幾乎可以偵測出所有的殼,其數量已超過470種PE文檔的加殼類型和簽名。

  • 經過上一次(《20145221高其_免殺原理與實踐》)的實踐學習,知道惡意代碼為了掩護偽裝自己,另一種常用方式就是加殼,通過加殼來達到不被殺毒引擎特征碼察覺的目的

  • 所以一般正常的軟件是不會為自己加殼的,如果你從網上下載了一個帶殼軟件,那么你就要小心了,須謹慎使用該軟件;接下來就通過PEiD這款工具分析一下5221.exe看看是否帶殼(PS:我將網上提供的PEiD下載到win10虛擬機上發現不能打開文件,所以改用XP虛擬機打開了)

  • “什么都沒找到 [調試] ”是不是看着挺傷心,這病毒咋沒加殼?其實不是這樣的,正常的編譯話會顯示編譯器的,既然沒找到,說明不能識別該編譯器(可能和PEiD版本有關),所以我們點擊一下上圖中的Set Info,看看到底是怎樣的編譯器使它不能識別

  • 百度一下UPX不難發現,這就是一個壓縮殼工具!所以5221.exe可能是一款壓縮殼病毒

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層,可以訪問所有層的數據,而其他驅動程序位於RING1、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等一些工具,可以搜集一段時間內系統注冊表、文件等的變化;
  • 如果懷疑一台主機上有惡意代碼,應當首先更新病毒庫,並對敏感懷疑位置進行病毒查殺,如果沒有找到,應該開啟相關病毒掃描引擎,對計算機進行動態掃描,然后打開相應的監視器,查看有沒有可疑注冊表、進程,通過注冊表中的可疑項或者進程,右鍵可以打開文件所在位置,對特定的文件進行詳細的靜動態分析,最終確認是否為惡意代碼;
  • 惡意代碼分析是一種解剖惡意代碼的藝術,需要了解惡意代碼是如何工作的、如何識別它,以及如何戰勝它消除它,通過這次的實踐,對惡意代碼的基本分析還是不算很難的,靜態動態的分析方法綜合應用,基本上就可以確認一個代碼的行為了,根據以上方法,我們不用過渡依賴於殺毒軟件給我們的殺毒報告,可以對有所懷疑的軟件進行自主分析,最后做出自己的決定是否對其查殺。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM