《惡意軟體分析訣竅與工具箱:對抗“流氓”軟體的技術與利器》是清華大學出版社2012年1月1日出版的圖書,由萊(Michael Hale Ligh)編著。
基本介紹
- 又名:Malware Analyst's Cookbook and DVD:Tools and Techniques for Fighting Malicious Code
- ISBN:9787302274407
- 頁數:584頁
- 出版社:清華大學出版社
- 出版時間:2012年1月1日
- 裝幀:平裝
- 開本:16
內容簡介,作者簡介,目錄,
內容簡介
《惡意軟體分析訣竅與工具箱:對抗"流氓"軟體的技術與利器》主要內容簡介:針對多種常見威脅的強大而循序漸進的解決方案,我們將《惡意軟體分析訣竅與工具箱——對抗“流氓”軟體的技術與利器》稱為工具箱,是因為每個訣竅都給出了解決某個特定問題或研究某個給定威脅的原理和詳細的步驟。在配書光碟中提供了補充資源,您可以找到相關的支持檔案和原始程式。您將學習如何使用這些工具分析惡意軟體,有些工具是作者自己開發的,另外數百個工具則是可以公開下載的。如果您的工作涉及緊急事件回響、計算機取證、系統安全或者反病毒研究,那么《惡意軟體分析訣竅與工具箱:對抗"流氓"軟體的技術與利器》將會為您提供極大的幫助。學習如何在不暴露身份的前提下進行線上調查,使用蜜罐收集由殭屍和蠕蟲分布的惡意軟體,分析javascript、pdf檔案以及office文檔中的可疑內容,使用虛擬或基礎硬體建立一個低預算的惡意軟體實驗室,通用編碼和加密算法的逆向工程,建立惡意軟體分析的高級記憶體取證平台,研究主流的威脅,如zeus、silent banker、coreflood、conficker、virut、clampi、bankpatch、blackenergy等。
作者簡介
作者:萊(Michael Hale Ligh) (美國)StevenAdair (美國)Blake Hartstein 等 譯者:胡喬林 鐘讀航
Michael Hale Ligh,是Verisign iDefense公司的惡意代碼分析專家,同時也是MNIN Security公司特別項目的主管。
Steven Adair,是Shadowserver Foundation的成員之一,經常分析惡意軟體和跟蹤殭屍網路。他與重點調查網路間諜組織發起的各種網路攻擊。
Blake Hartstein,是多個安全工具的開發人員,同時也是Verisign iDefense公司的快速回響工程師,主要負責惡意軟體突發事件的回響。
Matthew Richard開發過多種安全工具,同時為多家銀行和信用機械提供安全管理服務。
目錄
第1章 行為隱匿
1.1 洋蔥路由器(tor)
1.2 使用tor研究惡意軟體
1.3 tor缺陷
1.3.1 速度
1.3.2 不可信賴的tor操作員
1.3.3 tor阻止列表
1.4 代理伺服器和協定
1.4.1 超文本傳輸協定(http)
1.4.2 socks4
1.4.3 socks5
1.5 基於web的匿名代理
1.6 保持匿名的替代方法
1.6.1 蜂窩internet連線
1.6.2 虛擬專用網
1.7 唯一且匿名
第2章 蜜罐
2.1 nepenthes蜜罐
2.1.1 利用nepenthes收集惡意軟體樣本
2.1.2 使用irc日誌進行實時攻擊監視
2.1.3 使用基於python的http接收nepenthes提交的檔案
2.2 使用dionaea蜜罐
2.2.1 使用dionaea收集惡意軟體樣本
2.2.2 使用基於python的http接收dionaea提交的檔案
2.2.3 實時事件通告以及使用xmpp共享二進制檔案
2.2.4 分析重放dionea記錄的攻擊
2.2.5 使用p0f工具被動識別遠程主機作業系統
2.2.6 使用sqlite 和gnuplot繪製dionaea記錄的攻擊模式圖
第3章 惡意軟體分類
3.1 使用clamav分類
3.1.1 檢查現有clamav特徵碼
3.1.2 創建自定義clamav特徵碼資料庫
3.2 使用yara分類
3.2.1 將clamav特徵碼轉換到yara格式特徵碼
3.2.2 使用yara和peid識別加殼檔案
3.2.3 使用yara檢測惡意軟體的能力
3.3 工具集成
3.3.1 使用python識別檔案類型及哈希算法
3.3.2 編寫python多防毒掃描軟體
3.3.3 python中檢測惡意pe檔案
3.3.4 使用ssdeep查找相似惡意軟體
3.3.5 使用ssdeep檢測自修改代碼
3.3.6 使用ida和bindiff檢測自修改代碼
第4章 沙箱和多防毒掃描軟體
4.1 公用防毒掃描軟體
4.1.1 使用virus total掃描檔案
4.1.2 使用jotti掃描檔案
4.1.3 使用novirusthanks掃描檔案
4.1.4 啟用資料庫的python多防毒上傳程式
4.2 多防毒掃描軟體的比較
4.3 公用沙箱分析
4.3.1 使用threatexpert分析惡意軟體
4.3.2 使用cwsandbox分析惡意軟體
4.3.3 使用anubis分析惡意軟體
4.3.4 編寫joebox autoit腳本
4.3.5 使用joebox應對路徑依賴型惡意軟體
4.3.6 使用joebox應對進程依賴型動態程式庫
4.3.7 使用joebox設定主動型http代理
4.3.8 使用沙箱結果掃描項目
第5章 域名與ip地址
5.1 研究可疑域名
5.1.1 利用whois研究域
5.1.2 解析dns主機名
5.2 研究ip地址
5.3 使用被動dns和其他工具進行研究
5.3.1 使用bfk查詢被動dns
5.3.2 使用robtex檢查dns記錄
5.3.3 使用domaintools執行反向ip搜尋
5.3.4 使用dig啟動區域傳送
5.3.5 使用dnsmap暴力攻擊子域
5.3.6 通過shadowserver將ip地址映射到asn
5.3.7 使用rbl檢查ip信譽
5.4 fast flux域名
5.4.1 使用被動dns和ttl檢測fast flux網路
5.4.2 跟蹤fast flux域名
5.5 ip地址地理映射
第6章 文檔、shellcode和url
6.1 分析javascript
6.1.1 使用spidermonkey分析javascript
6.1.2 使用jsunpack自動解碼javascript
6.1.3 最佳化jsunpack-n的解碼速度和完整性
6.1.4 通過模擬瀏覽器dom元素觸發漏洞利用
6.2 分析pdf文檔
6.2.1 從pdf檔案中提取javascript
6.2.2 偽造pdf軟體版本觸發漏洞利用
6.2.3 利用didier stevens的pdf工具集
6.2.4 確定利用pdf檔案中的哪些漏洞
6.2.5 使用distorm反彙編shellcode
6.2.6 使用iibemu模擬shellcode
6.3 分析惡意office文檔
6.3.1 使用officemalscanner分析microsoftoffice檔案
6.3.2 使用disview和malhost-setup調試office shellcode
6.4 分析網路流量
6.4.1 使用jsunpack從報文捕獲檔案中提取http檔案
6.4.2 使用jsunpack繪製url關係圖
第7章 惡意軟體實驗室
7.1 網路互聯
7.1.1 實驗室中tcp/ip路由連線
7.1.2 捕獲、分析網路流量
7.1.3 使用inetsim模擬internet
7.1.4 使用burp套件操作http/https
7.2 物理目標機
7.2.1 使用joe stewart開發的truman
7.2.2 使用deep freeze保護物理系統
7.2.3 使用fog克隆和映像磁碟
7.2.4 使用mysql資料庫自動調度fog任務
第8章 自動化操作
8.1 惡意軟體分析周期
8.2 使用python實現自動化操作
8.2.1 使用virtualbox執行自動化惡意軟體分析
8.2.2 分析virtualbox磁碟以及記憶體映像
8.2.3 使用vmware執行自動化惡意軟體分析
8.3 添加分析模組
8.3.1 在python中使用tshark捕獲報文
8.3.2 在python中使用inetsim收集網路日誌
8.3.3 使用volatility分析記憶體轉儲
8.3.4 組合所有的沙箱塊
8.4 雜項系統
8.4.1 使用zerowine和qemu執行自動化分析
8.4.2 使用sandboxie和buster執行自動化分析
第9章 動態分析
9.1 變化檢測
9.1.1 使用process monitor記錄api調用
9.1.2 使用regshot進行變化檢測
9.1.3 接收檔案系統變化通知
9.1.4 接收註冊表變化通知
9.1.5 句柄表的差異比較
9.1.6 使用handlediff研究代碼注入
9.1.7 觀察bankpatch.c禁用windows檔案保護的活動
9.2 api監視/鉤子
9.2.1 使用microsoft detours構建api監視器
9.2.2 使用api監視器追蹤子進程
9.2.3 捕獲進程、執行緒和映像載入事件
9.3 數據保護
9.3.1 阻止進程終止
9.3.2 阻止惡意軟體刪除檔案
9.3.3 阻止載入驅動程式
9.3.4 使用數據保護模組
9.3.5 使用reactos創建定製命令shell
第10章 惡意軟體取證
10.1 the sleuth kit(tsk)
10.1.1 使用tsk發現備用數據流
10.1.2 使用tsk檢測隱藏檔案和目錄
10.1.3 使用microsoft脫機api查找隱藏註冊表數據
10.2 取證/事件回響混合
10.2.1 繞開poisonivy鎖定的檔案
10.2.2 繞開conficker檔案系統的acl限制
10.2.3 使用gmer掃描rootkit
10.2.4 通過檢查ie的dom檢測html注入
10.3 註冊表分析
10.3.1 使用regripper外掛程式對註冊表取證
10.3.2 檢測惡意安裝的pki證書
10.3.3 檢查泄露數據到註冊表的惡意軟體
第11章 調試惡意軟體
11.1 使用調試器
11.1.1 打開和附加到進程
11.1.2 為shellcode分析配置jit調試器
11.1.3 熟悉調試器的圖形用戶界面
11.1.4 檢查進程記憶體和資源
11.1.5 控制程式執行
11.1.6 設定和捕獲斷點
11.1.7 使用有條件的日誌記錄斷點
11.2 immunity debugger的python api接口
11.2.1 使用python腳本和pycommand調試
11.2.2 在二進制檔案中檢測shellcode
11.2.3 調查silentbanker木馬的api鉤子
11.3 winappdbg python調試器
11.3.1 使用winappdbg工具操作進程記憶體
11.3.2 使用winappdbg工具設計一個python api監視器
第12章 反混淆
12.1 解碼常見算法
12.1.1 python中的逆向xor算法
12.1.2 使用yaratize檢測xor編碼的數據
12.1.3 使用特殊字母解碼base64
12.2 解密
12.2.1 從捕獲的數據包中隔離加密數據
12.2.2 使用snd反向工具、findcrypt和kanal搜尋加密機制
12.2.3 使用zynamicsbindiff移植open ssl的符號
12.2.4 在python中使用pycrypto解密數據
12.3 惡意軟體脫殼
12.3.1 查找加殼惡意軟體的oep
12.3.2 使用lordpe轉儲進程記憶體
12.3.3 使用imprec重建導入表
12.4 與脫殼有關的資源
12.5 調試器腳本
12.5.1 破解域名生成算法
12.5.2 使用x86emu和python解碼字元串
第13章 處理dll
13.1 枚舉dll的導出函式
13.1.1 cff explorer
13.1.2 pefile
13.1.3 ida pro
13.1.4 常見和不常見的導出名
13.2 使用rundll32.exe執行dll
13.3 繞過宿主進程的限制
13.4 使用rundll32ex遠程調用dll導出函式
13.4.1 創建新工具的原因
13.4.2 使用rundll32ex
13.5 使用loaddll.exe調試dll
13.5.1 將dll載入到調試器中
13.5.2 找到dll的入口點
13.6 捕獲dll入口點處的斷點
13.7 執行作為windows服務的dll
13.7.1 服務dll的入口點
13.7.2 服務初始化
13.7.3 安裝服務dll
13.7.4 傳遞參數給服務
13.8 將dll轉換成獨立的執行檔
第14章 核心調試
14.1 遠程核心調試
14.2 本地核心調試
14.3 軟體需求
14.3.1 使用livekd進行本地調試
14.3.2 啟用核心調試啟動開關
14.3.3 調試vmware工作站客戶機(在windows系統中)
14.3.4 調試parallels客戶機(在mac os x上)
14.3.5 windbg命令和控制簡介
14.3.6 探索進程和進程上下文
14.3.7 探索核心記憶體
14.3.8 在驅動程式載入時捕捉斷點
14.3.9 脫殼驅動程式
14.3.10 轉儲和重建驅動程式
14.3.11 使用windbg腳本檢測rootkit
14.3.12 使用idapro進行核心調試
第15章 使用volatility進行記憶體取證
15.1 記憶體獲取
15.1.1 使用moonsolswindows記憶體工具箱轉儲記憶體
15.1.2 使用f-response獲取遠程、唯讀記憶體
15.1.3 訪問虛擬機的記憶體檔案
15.2 準備安裝volatility
15.2.1 volatility概覽
15.2.2 在記憶體轉儲中研究進程
15.2.3 使用psscan檢測dkom攻擊
15.2.4 研究csrss.exe的備用進程列表
15.2.5 識別進程上下文的技巧
第16章 記憶體取證:代碼注入與提取
16.1 深入研究dll
16.1.1 搜尋已載入的可疑dll
16.1.2 使用ldr_modules檢測未連結的dll
16.2 代碼注入和vad
16.2.1 研究vad
16.2.2 轉換頁面保護
16.2.3 在進程記憶體中搜尋證據
16.2.4 使用malfind和yara識別注入代碼
16.3 重建二進制檔案
16.3.1 從記憶體中重建執行檔的映像
16.3.2 使用impscan掃描導入函式
16.3.3 轉儲可疑的核心模組
第17章 記憶體取證:rootkit
17.1 檢測iat鉤子
17.2 檢測eat鉤子
17.3 檢測內聯api鉤子
17.4 檢測idt鉤子
17.5 檢測驅動程式的irp鉤子
17.6 檢測ssdt鉤子
17.6.1 ssdt的角色
17.6.2 鉤子和鉤子檢測
17.7 使用ssdt_ex自動研究
17.8 根據附加的核心執行緒搜尋rootkit
17.8.1 使用執行緒在核心中隱藏
17.8.2 在記憶體轉儲中檢測分離執行緒
17.9 識別系統範圍的通知例程
17.9.1 找出檢查的位置
17.9.2 使用notifyroutines外掛程式
17.10 使用svscan定位惡意的服務進程
17.10.1 惡意軟體如何濫用服務
17.10.2 scm的服務記錄結構
17.10.3 枚舉進程記憶體中的服務
17.10.4 blazgel木馬的例子
17.10.5 使用volatility的svcscan外掛程式
17.11 使用mutantscan掃描互斥體對象
第18章 記憶體取證:網路和註冊表
18.1 探索套接字和連線對象
18.1.1 套接字和連線證據
18.1.2 套接字和連線對象
18.2 分析zeus留下的網路證據
18.3 檢測企圖隱藏tcp/ip的活動
18.3.1 掃描套接字和連線對象
18.3.2 其他項目
18.4 檢測原始套接字和混雜模式的網路接口
18.4.1 混雜模式的套接字
18.4.2 檢測混雜模式
18.5 註冊表分析
18.5.1 使用記憶體註冊表工具分析註冊表證據
18.5.2 通過最後寫入時間戳排序註冊表項
18.5.3 使用volatility和reg-ripper