一.惡意軟件分析

惡意軟件或惡意代碼分析通常包括靜態分析和動態分析。特征種類如果按照惡意代碼是否在用戶環境或仿真環境中運行,可以劃分為靜態特征和動態特征。

那么,如何提取惡意軟件的靜態特征或動態特征呢? 因此,第一部分將簡要介紹靜態特征和動態特征。

1.靜態特征

沒有真實運行的特征,通常包括:

  • 字節碼
  • :二進制代碼轉換成了字節碼,比較原始的一種特征,沒有進行任何處理
  • IAT表
  • :PE結構中比較重要的部分,聲明了一些函數及所在位置,便于程序執行時導入,表和功能比較相關
  • Android權限表
  • :如果你的APP聲明了一些功能用不到的權限,可能存在惡意目的,如手機信息
  • 可打印字符
  • :將二進制代碼轉換為ASCII碼,進行相關統計
  • IDA反匯編跳轉塊
  • :IDA工具調試時的跳轉塊,對其進行處理作為序列數據或圖數據
  • 常用API函數
  • 惡意軟件圖像化

靜態特征提取方式:

  • CAPA
  • – https://github.com/mandiant/capa
  • IDA Pro
  • 安全廠商沙箱

2.動態特征

相當于靜態特征更耗時,它要真正去執行代碼。通常包括:

– API調用關系:比較明顯的特征,調用了哪些API,表述對應的功能

– 控制流圖:軟件工程中比較常用,機器學習將其表示成向量,從而進行分類

– 數據流圖:軟件工程中比較常用,機器學習將其表示成向量,從而進行分類

動態特征提取方式:

  • Cuckoo
  • – https://github.com/cuckoosandbox/cuckoo
  • CAPE
  • – https://github.com/kevoreilly/CAPEv2
  • – https://capev2.readthedocs.io/en/latest/
  • 安全廠商沙箱

二.Cuckoo和Cape沙箱簡介

1.Cuckoo沙箱簡介

Cuckoo Sandbox 是一個開源的自動惡意軟件分析系統,并且是經典的沙箱分析工具。Cuckoo沙箱將在幾秒鐘內為您提供一些詳細的分析結果,概述該文件在隔離環境中執行時的情況。不像在線VirusTotal、VirusShare、微步、AnyRun、Hybrid等在線沙箱,Cuckoo可以實現本地安裝和離地分析,其定制化和可控程度更高。

  • https://github.com/cuckoosandbox/cuckoo

Cuckoo Sandbox始于2010年蜜網計劃中的谷歌Summer of Code項目,它最初是由Claudio“nex”Guarnieri設計和開發的。在2010年夏天開啟該工作之后,第一個測試版于2011年2月5日發布,這是Cuckoo第一次公開發布。2011年3月,在谷歌Code Summer of 2011期間,Cuckoo再次被選為蜜網項目的支持項目,在此期間Dario Fernandes加入了該項目并擴展了其功能。

Cuckoo Sandbox started as a Google Summer of Code project in 2010 within The Honeynet Project. It was originally designed and developed by Claudio “nex” Guarnieri, who is still the main developer and coordinates all efforts from joined developers and contributors.

2.Cape沙箱簡介

CAPE Sandbox 是一款用于自動分析可疑文件或惡意軟件的開源系統,它使用自定義組件來監視在隔離環境中運行的惡意進程的行為。CAPE來源于Cuckoo Sandbox,目的是添加自動惡意軟件解包和配置提取——因此它的名字是一個縮寫“配置和有效載荷提取(Config And Payload Extraction)”。自動解包允許基于Yara簽名的分類,以補充網絡(Suricata)和行為(API)簽名。于2016年誕生。

  • https://github.com/kevoreilly/CAPEv2
  • https://capesandbox.com
CAPE Sandbox is an Open Source software for automating analysis of suspicious files. To do so it makes use of custom components that monitor the behavior of the malicious processes while running in an isolated environment.

CAPE被用來自動運行和分析文件,并收集全面的分析結果,概述惡意軟件在孤立的Windows操作系統中運行時的行為。它可以檢測以下類型的結果:

  • 由惡意軟件生成的所有進程執行的win32 API調用的痕跡。
  • 惡意軟件在執行過程中創建、刪除和下載的文件。
  • 惡意軟件進程的內存轉儲。
  • PCAP格式的網絡流量跟蹤。
  • 在執行惡意軟件期間截取的Windows桌面截圖。
  • 機器的全內存轉儲。

由于CAPE的模塊化設計,它既可以作為獨立的應用程序使用,也可以集成到更大的框架中。它可以用來分析:

  • Generic Windows executables
  • DLL files
  • PDF documents
  • Microsoft Office documents
  • URLs and HTML files
  • PHP scripts
  • CPL files
  • Visual Basic (VB) scripts
  • ZIP files
  • Java JAR
  • Python files
  • Almost anything else

雖然CAPE沙箱的配置和有效載荷提取是最初聲明的目標,但CAPE調試器的首要目標是:為了從任意惡意軟件家族中提取配置文件或解壓縮有效負載,而不依賴進程轉儲(遲早會被壞人破壞),指令級別的監視和控制是必要的。CAPE中的新調試器遵循最大化使用處理器硬件和最小化使用Windows調試接口的原則,允許通過Yara簽名或API調用在引爆期間以編程方式設置硬件斷點,從入口點偷偷地檢測和操縱惡意軟件。這允許捕獲指令跟蹤,或執行操作,如控制流操作或轉儲內存區域。

調試器允許CAPE在其原始功能之外繼續發展,這些功能現在包括了動態反規避繞過。由于現代惡意軟件通常試圖在沙箱中逃避分析,例如通過使用定時陷阱來進行虛擬化或API鉤子檢測,CAPE允許開發動態對策,結合調試器在Yara簽名中的動作,來檢測隱藏的惡意軟件,并執行控制流程操作,迫使樣品完全引爆或跳過規避動作。CAPE的動態旁路越來越多,其中包括:

  • Guloader
  • Ursnif
  • Dridex
  • Zloader
  • Formbook
  • BuerLoader
  • Pafish

CAPE利用了許多惡意軟件技術或行為,允許未打包的有效載荷捕獲,這些行為將導致捕獲注入、提取或解壓縮的有效載荷,以便進一步分析。此外,CAPE自動為每個進程創建一個進程轉儲,或者在DLL的情況下,為內存中的DLL模塊映像創建一個進程轉儲。

推薦讀者學習官方文檔:

  • https://capev2.readthedocs.io/en/latest/
  • https://capev2.readthedocs.io/en/latest/usage/submit.html


3.Cape原理

CAPE Sandbox由處理樣本執行和分析的中央管理軟件組成。每個分析都在一個全新的、孤立的虛擬機中啟動。CAPE的基礎結構由一臺主機(管理軟件)和一些Guest機器(用于分析的虛擬機)組成。主機Host運行管理整個分析過程的沙盒核心組件,而Guest是安全執行和分析惡意軟件樣本的隔離環境。

CAPE的主要架構如下圖所示:

  • 推薦的設置是GNU/Linux (Ubuntu LTS最好)作為主機,Windows 7作為客戶。


三.Cape沙箱安裝過程

在介紹Cape沙箱之前,我先介紹如何安裝Cape。在網上會有很多Cuckoo或Cape沙箱的安裝教程,整個安裝真的繁瑣,需要多個系統嵌套,包括Ubuntu、Windows、Cuckoo等。這里作者介紹一種相對簡單的Cape沙箱安裝環境,通過我CFT師弟集成的Cape虛擬機鏡像安裝,通過他允許后在此分享,并表示感謝。具體步驟如下:

1.載入虛擬機鏡像

第一步:安裝VMware虛擬機并打開。

第二步,利用VMware打開指定文件夾的虛擬機鏡像。該集成鏡像由我師弟完成,再次表示感謝。整個虛擬機內容如下:

第三步,導入虛擬機并存儲指定位置,等待虛擬機的導入。

第四步,導入成功后如下圖所示,接著開啟虛擬機。

等待打開Ubuntu系統,如下圖所示:

第五步,打開Ubuntu系統。

  • 密碼:admin123

最終結果如下圖所示,這是配置好的環境,接下來需要啟動沙箱。


2.啟動沙箱

第一步, 在任意文件夾中運行"sudo virtualbox",現在已經安裝了一個Win7 X64專業版虛擬機。

sudo virtualbox

輸入密碼仍然為“admin123”,后續操作均是它。

此時會啟動cuckoo沙箱,如下圖所示。

如果cuckoo關閉則啟動即可,如下圖所示:

它會啟動Windows 7系統,后續會調用agent.py代碼執行動態分析。

第二步, 進入/opt/CAPEv2/文件夾,運行"sudo python3 cuckoo.py"。

cd /opt/CAPEv2sudo python3 cuckoo.py

注意輸入命令按“Tab”鍵會自動補齊。

對應的源文件如下圖所示,集成的CAPEv2文件夾。

第三步, 在/opt/CAPEv2/文件夾下運行"sudo python3 utils/process.py -p7 auto",參數代表優先級劃分,輸入多個樣本時,沙箱會優先運行高優先級樣本。

cd /opt/CAPEv2/sudo python3 utils/process.py -p7 auto

類似于動態分析監控過程。

運行的文件對應位置如下:

第四步,在/opt/CAPEv2/web目錄下(由于環境依賴的問題,必須由指向該文件夾的shell運行該命令),運行"sudo python3 manage.py runserver 127.0.0.1:8088"(該虛擬機的8080端口已被占用,端口可自己指定)。

cd /opt/CAPEv2/websudo python3 manage.py runserver 127.0.0.1:8088

該操作相當于打開前段服務器,用于加載惡意軟件和呈現分析結果。

對應源文件如下:

至此,沙箱成功啟動,共開啟四個窗口分別運行各種操作。


四.Cape沙箱基本用法

該部分將介紹Cape沙箱的詳細用法。

1.提交樣本

在虛擬機的火狐中打開127.0.0.1:8088,在submit頁面提交樣本即可。

第一步,在虛擬機的火狐中打開127.0.0.1:8088。

第二步, 選擇需要分析的樣本上傳。注意,作者在環境中已設置兩個樣本供大家分析。

同時,作者已將虛擬機的Tool開啟,可以直接從主機中拖動需要分析的文件至指定目錄進行分析。如下圖所示,將HGZ和WannaCry樣本。

再次強調
在惡意軟件分析中,一定要做好本機保護,包括在虛擬機隔離環境中進行分析,甚至需要斷網防止沙箱逃逸。同時,本人堅決反對滲透和破壞行為,一切犯罪行為必將受到嚴懲,綠色網絡需要我們共同維護。這里僅是分享惡意軟件分析背后的原理,更好地進行防護。

選擇動態分析的必要參數,比如時間為60秒。

第三步,提交分析,調用Cape沙箱開展動態分析。

會喚醒Cuckoo沙箱進行分析。

完成分享后如下圖所示:


2.WannaCry動態分析結果查看

點擊控制面板的“Recent”查看分析結果。由圖可知,本文分析的結果已產生,同時有之前提交的兩個樣本。

點擊MD5值查看分析結果。

Quick Overview

首先展示快速分析的基本信息,包括機器和時間等。

下面是惡意軟件動態分析的具體內容。

(1) 文件詳細信息

(2) 簽名信息(signatures)

可以看到生成的文件,比如WannaCry任務執行生成的“taskche.exe”,感興趣的讀者請詳細看看我之前分析的WannaCry樣本傳播機理。

DLL載入文件如下圖所示:

HTTP請求可以看到WannaCry域名開關去連接的三個域名(早已下架)。

加密和簽名信息如下:

(3) 動態運行截屏信息

(4) 各種動態行為特征總結

下面是各種動態特征總結,由圖可知,Cape沙箱的功能非常強大。其中比較重要的信息,比如IOCs如下圖所示。

動態API如下圖所示:

注冊表操作如下圖所示:


Static Analysis

靜態分析結果如下圖所示:


Behavior Analysis

動態行為特征如下圖所示:

該部分能看到動態API序列,極為重要的特征,如下圖所示:


Network Analysis

網絡分析如下圖所示:


Process Dumps

進程特征如下:


Reports

同時可以下載對應的報告,如下圖所示:

報告的位置如下圖所示,分析結果均存儲在“storage”文件夾中。


Statistics

統計結果如下圖所示:


3.其它功能介紹

整個Cape頁面主要包括六個菜單:

  • Dashboard
  • Recent
  • Pending
  • Search
  • API
  • Submit

Dashboard是分析統計結果。

Recent是最近分析的結果,需從該位置查看詳細信息。

Pending正在分析的樣本。

Search搜索功能。

API相關函數及信息。

Submit提交頁面。


五.總結

寫到這里這篇文章就結束,希望對您有所幫助。忙碌的三月,真的很忙,項目本子論文畢業,等忙完后好好寫幾篇安全博客,感謝支持和陪伴,尤其是家人的鼓勵和支持, 繼續加油