第三章 動態分析基礎技術

2021-09-25 22:09:01 字數 3932 閱讀 5932

動態分析是分析的第二步

乙個程式不是所有的**都會被執行到,比如有些需要命令列引數才會執行

沙箱是一種在安全環境裡執行不信任程式的機制,不用擔心傷害到「真正的」系統。

沙箱包含乙個虛擬環境,通過某種方式模擬網路服務,以確保被測試的軟體或惡意**能正常執行

norman,gfi是最受歡迎的沙箱

這些沙箱用來做初始診斷很有用

沙箱生成的惡意**分析報告包含了網路行為,建立檔案,virustotal的掃瞄結果等

只能簡單的執行可執行程式,不能帶有命令列選項,如果惡意**選喲命令選項,那麼沙箱中任何**都不會被執行

如果分析的是乙個後門程式,需要等待一條控制指令才能啟動特定行為,那麼這個沙箱中這個後門程式也不會被啟動並執行分析

沙箱也不能記錄所有事件,比如設定了sleep,雖然沙箱會對sleep進行hook,使得時間變得很短,但是休眠的方式有很多種,沙箱也不能考慮到所有的情況

還有一些潛在的缺點:

惡意**會對虛擬機器進行檢測

一些惡意**需要一些特定的登錄檔項或檔案才能啟動,這些在沙箱中是沒有的

如果惡意**是乙個dll,一些匯出函式可能不會被恰當地呼叫,因為乙個dll不會像exe那樣容易執行

沙箱的作業系統對惡意**來說可能不正確,比如需要在xp上執行,在win7上跑不通

沙箱不會告訴你惡意**做了什麼。它能報告基本功能,但是具體功能還需要自己去總結

首先來看如何啟動dll檔案,來進行動態分析

所有的windows版本中都包含rundll32.exe,它提供了乙個執行dll的平台

c:\>rundll32.exe dllname,export arguments
export的值必須是乙個dll檔案匯出函式表中的函式名或者序號,比如乙個dll中有乙個匯出函式叫做install

c:\>rundll32.exe ***.dll install
也可以用序號匯出,在序號前面加#就可以了

c:\>rundll32.exe ***.dll #1
惡意的dll檔案通常在dllmain執行他們的**,因為無論dll什麼時候被載入,dllmain總是會被執行

還可以通過修改pe頭部,並改變它的副檔名,是的windows以一種可執行檔案的方式來載入dll

從image_file_header的特徵域裡擦除image_file_dll(0x2000)標記,儘管這樣改變不會執行任何輸入函式,但是會呼叫dllmain方法,也有可能導致惡意**崩潰或終止。然而只要修改能夠使得惡意**執行它的惡意部分,能夠分析收集到資訊,其他的就不重要了

dll形態的惡意**可能需要被安裝成乙個服務,下面的這個例子中匯出了installservice函式

c:\>rundll32.dll ipr32.dll,installservice servicename

c:\>net start servicename

servicename引數必須提供給惡意**,讓它能夠被安裝並執行起來,而在windows系統中啟動指定的服務,可以使用net start命令

process monitor是windows系統下的高階監視工具,可以監控登錄檔,檔案系統,網路,程序和執行緒行為,它結合了檔案監視器filemon和登錄檔監視器regmon

但並不是能捕獲所有資料,例如乙個使用者態元件通過裝置io控制與核心套件進行通訊的裝置驅動行為,或者一些特定的圖形介面呼叫,如setwindowshookex等

不應該用來記錄網路行為,因為它在微軟不同windows版本中的相容性存在一些問題

監視器一旦執行起來,就會監控所有能捕獲的系統呼叫,不能檢查所有的系統呼叫。監視器使用記憶體來記錄事件,直到他被告知停止,這可能耗盡所有的可用記憶體而使虛擬機器崩潰。所以需要設定乙個比較短的時間,可以file-->captrue events。在新的分析前,清空當前捕獲的事件,可以通過edit-->clear display

可以通過雙擊某一行,來檢視事件的全部細節

file-->filter開啟過濾選單,通過下拉框選擇條件

登錄檔,檔案系統,程序行為,網路四個選項可以通過工具欄上的按鈕來選擇是否開啟

如果分析的程式是乙個開機啟動的,需要使用程序監視器的啟動選項,將其安裝為乙個自啟動程式,從而捕獲惡意**的啟動事件

可以用來列出所有活躍的程序、被程序載入的dll、各種程序屬性和整體系統資訊

也可以用來結束乙個程序、退出使用者登入、啟動與啟用程序

樹狀結構,每秒更新一次

預設情況下,服務以粉色高亮顯示,程序顯示為藍色,新程序為綠色,被終止的程序顯示為紅色。綠色和紅色的高亮顯示是臨時的,當程序被完全啟動或終止後顏色就會改變

當dll資訊顯示視窗被啟用時,可以單擊乙個程序去看它所有載入到記憶體裡的dll檔案,可以切換dll顯示視窗到控制代碼視窗,它顯示了程序所持有的控制代碼,包括檔案控制代碼,互斥量,事件等等

雙擊乙個程序名,可以開啟屬性視窗

theads標籤顯示所有活動的執行緒,tcp\ip標籤顯示活躍的連線和程序監聽的埠

verify標籤

單擊按鈕,可以驗證磁碟上的映象檔案是否有微軟的簽名驗證,因為微軟的大部分可執行檔案使用了數字簽名,可以看惡意**是否替換了windows的認證檔案

如果乙個攻擊者使用程序替換技術process replacement,包括在系統上執行程序並用惡意**重寫記憶體空間,那麼這個功能就沒有用武之地了

一種識別程序替換的方法為使用程序屬性視窗的字串標籤,通過比較包含在磁碟上可執行檔案的字串與記憶體中同乙個可執行檔案的字串,來看兩者是否相同。如果兩者有很大不同,那麼可能就發生了程序替換。

程序瀏覽器允許你在執行程序上啟動depends.exe,通過右鍵程序名選擇launch-->depends,能讓你通過選擇find--find dll有時候特別有用,比如當在磁碟上發現乙個惡意的dll,並且想知道是否有執行程式使用了這個dll。

驗證按鈕不會對所有動態時刻裝載的dll檔案進行驗證,為了判斷乙個dll是否被載入到程序,可以比較程序瀏覽器中的dll列表與在dependency walker中顯示的匯入dll列表

比如pdf和word

若文件開啟的時候啟動了任意程序,都可以在程序瀏覽器中看到,並能通過屬性視窗中的映象(image)標籤來定位惡意**在磁碟上的位置

開啟惡意文件的同時啟動程序監視工具是一種快速確定文件是否惡意的好方法

是乙個開源的登錄檔比較工具,可以比較兩個登錄檔的快照

先進行第一次快照,再執行惡意**,然後單擊2nd shot進行第二次快照,最後單擊compare進行比較

惡意**有時候需要連線到命令與控**務器,需要採用一些模擬網路的基本步驟,用來快速獲取網路資源,而不需要連線網際網路,這些資源包括dns網域名稱系統,ip位址和資料報記錄器

是用來檢視惡意**發出的dns請求最快速的方式。通過在本機上監聽udp的53埠,對使用者指定的ip位址給出虛假的dns相應。它用你指定的ip位址去響應dns查詢請求,軟體可以使用十六進製制和ascii碼來顯示所有的接受到的請求

設定想在dns響應包中發出的ip位址,並選擇介面,接下來單擊start server按鈕,自動開啟dns服務,並修改dns設定到localhost上。之後執行惡意**,就可以在視窗上觀察出現的dns請求

將dns請求重定向到本機,也可以指定到其他地方,預設情況下,軟體將會使用目前的閘道器或當前的dns配置來插入到dns響應中

還可以通過不存在的網域名稱(nxdomain)選項,來捕獲惡意**樣本使用的其他網域名稱,惡意**經常會在連線第乙個或者第二個網域名稱不成功時嘗試其他網域名稱。使用nxdomain選項可以欺騙惡意**為你提供配置中儲存的其他網域名稱資訊

第三章 詞法分析

詞法分析的主要目的是將輸入的字串輸出為乙個個單獨的單詞符號。即從左至右逐個字元的對源程式進行掃瞄,產生乙個個的單詞符號,把作為字串的源程式改造成為由單詞符號串組成的程式。實現這種過程需要借助詞法分析器,其輸入時源程式,輸出為單詞符號,其實現過程如下 單詞的種類基本字 保留字,關鍵字 由程式語言定義的...

第三章 需求分析

涉眾的重要程度是不同的。準確的識別出來,並確定其優先順序。需要斡旋和協調,讓目標系統滿足大多數涉眾的要求 常見涉眾 終端使用者 投資者 業務提出者 業務管理者 業務執行者 第三方 開發方 法律法規。考慮在業務系統中進行管理和處理的關鍵業務實體。考慮業務相關的過程資料,即圍繞基本業務實體的加工和組合而...

第三章 需求分析

軟體需求分析的任務 深入描述軟體的功能和效能 確認軟體設計的約束和軟體同其他系統元素的介面問題 定義軟體的其他有效性需求 軟體需求分析的任務就是借助於當前系統的邏輯模型匯出目標系統的邏輯模型,解決目標系統的 做什麼 的問題。需求分析的過程 問題識別 分析與綜合 面向資料流的結構化分析方法sa,面向資...