日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

恶意软件分析诀窍与工具箱——对抗“流氓”软件的技术与利器

發布時間:2024/1/1 编程问答 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 恶意软件分析诀窍与工具箱——对抗“流氓”软件的技术与利器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

?

基本信息


作者: (美)Michael Hale Ligh??? Steven Adair??? Blake Hartstein??? Matthew Richard??

譯者: 胡喬林 鐘讀航
叢書名: 安全技術經典譯叢
出版社:清華大學出版社
ISBN:9787302274407
上架時間:2012-2-8
出版日期:2012 年1月
開本:16開
頁碼:584
版次:1-1

樣章試讀:http://product.china-pub.com/59230

內容簡介:

???????針對多種常見威脅的強大而循序漸進的解決方案
  我們將《惡意軟件分析訣竅與工具箱——對抗“流氓”軟件的技術與利器》稱為工具箱,是因為每個訣竅都給出了解決某個特定問題或研究某個給定威脅的原理和詳細的步驟。在配書光盤中提供了補充資源,您可以找到相關的支持文件和原始程序。您將學習如何使用這些工具分析惡意軟件,有些工具是作者自己開發的,另外數百個工具則是可以公開下載的。如果您的工作涉及緊急事件響應、計算機取證、系統安全或者反病毒研究,那么本書將會為您提供極大的幫助。
   ●學習如何在不暴露身份的前提下進行在線調查
   ●使用蜜罐收集由僵尸和蠕蟲分布的惡意軟件
   ●分析javascript、pdf文件以及office文檔中的可疑內容
   ●使用虛擬或基礎硬件建立一個低預算的惡意軟件實驗室
   ●通用編碼和加密算法的逆向工程
   ●建立惡意軟件分析的高級內存取證平臺
   ●研究主流的威脅,如zeus、silent banker、coreflood、conficker、virut、clampi、bankpatch、blackenergy等

作者簡介

?????? Michael Hale Ligh是Verisign iDefense公司的惡意代碼分析專家,專門從事開發各種用于檢測、解密以及調查惡意軟件的工具。在過去數年里,他在里約熱內盧、上海、吉隆坡、倫敦、華盛頓特區和紐約等地講授惡意軟件分析課程,已經培訓了數百名學生。在進入Verisign iDefense公司之前,Michael在全國最大的醫療保健服務提供商之一中擔任漏洞研究員,并提供黑客倫理服務。正是由于擔任過該職務,他對逆向工程以及操作系統內部的背景有著深刻理解。

?

目錄

《惡意軟件分析訣竅與工具箱——對抗“流氓”軟件的技術與利器》
第1章 行為隱匿 1
1.1 洋蔥路由器(tor) 1
1.2 使用tor研究惡意軟件 4
1.3 tor缺陷 7
1.3.1 速度 7
1.3.2 不可信賴的tor操作員 7
1.3.3 tor阻止列表 8
1.4 代理服務器和協議 8
1.4.1 超文本傳輸協議(http) 8
1.4.2 socks4 9
1.4.3 socks5 9
1.5 基于web的匿名代理 14
1.6 保持匿名的替代方法 15
1.6.1 蜂窩internet連接 15
1.6.2 虛擬專用網 16
1.7 唯一且匿名 18
第2章 蜜罐 19
2.1 nepenthes蜜罐 20
2.1.1 利用nepenthes收集惡意軟件樣本 20
.2.1.2 使用irc日志進行實時攻擊監視 23
2.1.3 使用基于python的 http接收nepenthes提交的文件 25
2.2 使用dionaea蜜罐 27
2.2.1 使用dionaea收集惡意軟件樣本 27
2.2.2 使用基于python的http接收dionaea提交的文件 30
2.2.3 實時事件通告以及使用xmpp共享二進制文件 31
2.2.4 分析重放dionea記錄的攻擊 32
2.2.5 使用p0f工具被動識別遠程主機操作系統 33
2.2.6 使用sqlite 和gnuplot繪制dionaea記錄的攻擊模式圖 35
第3章 惡意軟件分類 39
3.1 使用clamav分類 39
3.1.1 檢查現有clamav特征碼 40
3.1.2 創建自定義clamav特征碼數據庫 42
3.2 使用yara分類 46
3.2.1 將clamav特征碼轉換到yara格式特征碼 46
3.2.2 使用yara和peid識別加殼文件 47
3.2.3 使用yara檢測惡意軟件的能力 49
3.3 工具集成 53
3.3.1 使用python識別文件類型及哈希算法 54
3.3.2 編寫python多殺毒掃描軟件 56
3.3.3 python中檢測惡意pe文件 60
3.3.4 使用ssdeep查找相似惡意軟件 64
3.3.5 使用ssdeep檢測自修改代碼 66
3.3.6 使用ida和bindiff檢測自修改代碼 68
第4章 沙箱和多殺毒掃描軟件 73
4.1 公用殺毒掃描軟件 73
4.1.1 使用virus total掃描文件 74
4.1.2 使用jotti掃描文件 76
4.1.3 使用novirusthanks掃描文件 77
4.1.4 啟用數據庫的python多殺毒上傳程序 78
4.2 多殺毒掃描軟件的比較 82
4.3 公用沙箱分析 82
4.3.1 使用threatexpert分析惡意軟件 82
4.3.2 使用cwsandbox分析惡意軟件 84
4.3.3 使用anubis分析惡意軟件 85
4.3.4 編寫joebox autoit腳本 86
4.3.5 使用joebox應對路徑依賴型惡意軟件 88
4.3.6 使用joebox應對進程依賴型動態鏈接庫 89
4.3.7 使用joebox設置主動型http代理 91
4.3.8 使用沙箱結果掃描項目 92
第5章 域名與ip地址 99
5.1 研究可疑域名 99
5.1.1 利用whois研究域 100
5.1.2 解析dns主機名 104
5.2 研究ip地址 107
5.3 使用被動dns和其他工具進行研究 109
5.3.1 使用bfk查詢被動dns 110
5.3.2 使用robtex檢查dns記錄 111
5.3.3 使用domaintools執行反向ip搜索 112
5.3.4 使用dig啟動區域傳送 113
5.3.5 使用dnsmap暴力攻擊子域 114
5.3.6 通過shadowserver將ip地址映射到asn 115
5.3.7 使用rbl檢查ip信譽 117
5.4 fast flux域名 118
5.4.1 使用被動dns和ttl檢測fast flux網絡 119
5.4.2 跟蹤fast flux域名 121
5.5 ip地址地理映射 123
第6章 文檔、shellcode和url 127
6.1 分析javascript 127
6.1.1 使用spidermonkey分析javascript 127
6.1.2 使用jsunpack自動解碼javascript 130
6.1.3 優化jsunpack-n的解碼速度和完整性 133
6.1.4 通過模擬瀏覽器dom元素觸發漏洞利用 134
6.2 分析pdf文檔 138
6.2.1 使用pdf.py從pdf文件中提取javascript 138
6.2.2 偽造pdf軟件版本觸發漏洞利用 142
6.2.3 利用didier stevens的pdf工具集 145
6.2.4 確定利用pdf文件中的哪些漏洞 148
6.2.5 使用distorm反匯編shellcode 154
6.2.6 使用iibemu模擬shellcode 159
6.3 分析惡意office文檔 161
6.3.1 使用officemalscanner分析microsoft office文件 161
6.3.2 使用disview和malhost-setup調試office shellcode 167
6.4 分析網絡流量 170
6.4.1 使用jsunpack從報文捕獲文件中提取http文件 171
6.4.2 使用jsunpack繪制url關系圖 173
第7章 惡意軟件實驗室 177
7.1 網絡互聯 179
7.1.1 實驗室中tcp/ip路由連接 180
7.1.2 捕獲、分析網絡流量 182
7.1.3 使用inetsim模擬internet 185
7.1.4 使用burp套件操作http/https 188
7.2 物理目標機 191
7.2.1 使用joe stewart開發的truman 191
7.2.2 使用deep freeze保護物理系統 192
7.2.3 使用fog克隆和映像磁盤 194
7.2.4 使用mysql數據庫自動調度fog任務 197
第8章 自動化操作 201
8.1 惡意軟件分析周期 201
8.2 使用python實現自動化操作 203
8.2.1 使用virtualbox執行自動化惡意軟件分析 203
8.2.2 分析virtualbox磁盤以及內存映像 208
8.2.3 使用vmware執行自動化惡意軟件分析 210
8.3 添加分析模塊 213
8.3.1 在python中使用tshark捕獲報文 214
8.3.2 在python中使用inetsim收集網絡日志 216
8.3.3 使用volatility分析內存轉儲 217
8.3.4 組合所有的沙箱塊 219
8.4 雜項系統 229
8.4.1 使用zerowine和qemu執行自動化分析 229
8.4.2 使用sandboxie和buster執行自動化分析 233
第9章 動態分析 237
9.1 變化檢測 237
9.1.1 使用process monitor記錄api調用 239
9.1.2 使用regshot進行變化檢測 240
9.1.3 接收文件系統變化通知 242
9.1.4 接收注冊表變化通知 245
9.1.5 句柄表的差異比較 246
9.1.6 使用handlediff研究代碼注入 250
9.1.7 觀察bankpatch.c禁用windows文件保護的活動 252
9.2 api監視/鉤子 253
9.2.1 使用microsoft detours構建api監視器 254
9.2.2 使用api監視器追蹤子進程 260
9.2.3 捕獲進程、線程和映像加載事件 263
9.3 數據保護 267
9.3.1 阻止進程終止 268
9.3.2 阻止惡意軟件刪除文件 270
9.3.3 阻止加載驅動程序 272
9.3.4 使用數據保護模塊 273
9.3.5 使用reactos創建定制命令shell 276
第10章 惡意軟件取證 283
10.1 the sleuth kit(tsk) 283
10.1.1 使用tsk發現備用數據流 283
10.1.2 使用tsk檢測隱藏文件和目錄 286
10.1.3 使用microsoft脫機api查找隱藏注冊表數據 293
10.2 取證/事件響應混合 298
10.2.1 繞開poison ivy鎖定的文件 298
10.2.2 繞開conficker文件系統的acl限制 302
10.2.3 使用gmer掃描rootkit 306
10.2.4 通過檢查ie的dom檢測html注入 309
10.3 注冊表分析 318
10.3.1 使用regripper插件對注冊表取證 319
10.3.2 檢測惡意安裝的pki證書 325
10.3.3 檢查泄露數據到注冊表的惡意軟件 328
第11章 調試惡意軟件 335
11.1 使用調試器 335
11.1.1 打開和附加到進程 336
11.1.2 為shellcode分析配置jit調試器 337
11.1.3 熟悉調試器的圖形用戶界面 339
11.1.4 檢查進程內存和資源 344
11.1.5 控制程序執行 347
11.1.6 設置和捕獲斷點 348
11.1.7 使用有條件的日志記錄斷點 351
11.2 immunity debugger的python api接口 352
11.2.1 使用python腳本和pycommand調試 353
11.2.2 在二進制文件中檢測shellcode 356
11.2.3 調查silentbanker木馬的api鉤子 360
11.3 winappdbg python調試器 363
11.3.1 使用winappdbg工具操作進程內存 364
11.3.2 使用winappdbg工具設計一個python api監視器 366
第12章 反混淆 373
12.1 解碼常見算法 373
12.1.1 python中的逆向xor算法 373
12.1.2 使用yaratize檢測xor編碼的數據 378
12.1.3 使用特殊字母解碼base64 379
12.2 解密 382
12.2.1 從捕獲的數據包中隔離加密數據 382
12.2.2 使用snd反向工具、findcrypt和kanal搜索加密機制 384
12.2.3 使用zynamics bindiff移植open ssl的符號 386
12.2.4 在python中使用pycrypto解密數據 387
12.3 惡意軟件脫殼 389
12.3.1 查找加殼惡意軟件的oep 390
12.3.2 使用lordpe轉儲進程內存 392
12.3.3 使用imprec重建導入表 394
12.4 與脫殼有關的資源 400
12.5 調試器腳本 401
12.5.1 破解域名生成算法 402
12.5.2 使用x86emu和python解碼字符串 406
第13章 處理dll 411
13.1 枚舉dll的導出函數 411
13.1.1 cff explorer 412
13.1.2 pefile 412
13.1.3 ida pro 413
13.1.4 常見和不常見的導出名 414
13.2 使用rundll32.exe執行dll 415
13.3 繞過宿主進程的限制 416
13.4 使用rundll32ex遠程調用dll導出函數 418
13.4.1 創建新工具的原因 418
13.4.2 使用rundll32ex 420
13.5 使用loaddll.exe調試dll 421
13.5.1 將dll加載到調試器中 421
13.5.2 找到dll的入口點 422
13.6 捕獲dll入口點處的斷點 422
13.7 執行作為windows服務的dll 423
13.7.1 服務dll的入口點 424
13.7.2 服務初始化 424
13.7.3 安裝服務dll 425
13.7.4 傳遞參數給服務 425
13.8 將dll轉換成獨立的可執行文件 428
第14章 內核調試 431
14.1 遠程內核調試 431
14.2 本地內核調試 431
14.3 軟件需求 432
14.3.1 使用livekd進行本地調試 432
14.3.2 啟用內核調試啟動開關 433
14.3.3 調試vmware工作站客戶機(在windows系統中) 436
14.3.4 調試parallels客戶機(在mac os x上) 438
14.3.5 windbg命令和控制簡介 439
14.3.6 探索進程和進程上下文 445
14.3.7 探索內核內存 451
14.3.8 在驅動程序加載時捕捉斷點 456
14.3.9 脫殼驅動程序 463
14.3.10 轉儲和重建驅動程序 469
14.3.11 使用windbg腳本檢測rootkit 474
14.3.12 使用ida pro進行內核調試 479
第15章 使用volatility進行內存取證 483
15.1 內存獲取 483
15.1.1 使用moonsols windows內存工具箱轉儲內存 483
15.1.2 使用f-response獲取遠程、只讀內存 486
15.1.3 訪問虛擬機的內存文件 487
15.2 準備安裝volatility 488
15.2.1 volatility概覽 488
15.2.2 在內存轉儲中研究進程 491
15.2.3 使用psscan檢測dkom攻擊 496
15.2.4 研究csrss.exe的備用進程列表 499
15.2.5 識別進程上下文的技巧 501
第16章 內存取證:代碼注入與提取 507
16.1 深入研究dll 507
16.1.1 搜尋已加載的可疑dll 508
16.1.2 使用ldr_modules檢測未鏈接的dll 510
16.2 代碼注入和vad 514
16.2.1 研究vad 514
16.2.2 轉換頁面保護 517
16.2.3 在進程內存中搜索證據 520
16.2.4 使用malfind和yara識別注入代碼 522
16.3 重建二進制文件 527
16.3.1 從內存中重建可執行文件的映像 529
16.3.2 使用impscan掃描導入函數 530
16.3.3 轉儲可疑的內核模塊 533
第17章 內存取證:rootkit 537
17.1 檢測iat鉤子 537
17.2 檢測eat鉤子 539
17.3 檢測內聯api鉤子 540
17.4 檢測idt鉤子 543
17.5 檢測驅動程序的irp鉤子 544
17.6 檢測ssdt鉤子 547
17.6.1 ssdt的角色 548
17.6.2 鉤子和鉤子檢測 548
17.7 使用ssdt_ex自動研究 551
17.8 根據附加的內核線程搜索rootkit 552
17.8.1 使用線程在內核中隱藏 553
17.8.2 在內存轉儲中檢測分離線程 554
17.9 識別系統范圍的通知例程 555
17.9.1 找出檢查的位置 555
17.9.2 使用notifyroutines插件 556
17.10 使用svscan定位惡意的服務進程 557
17.10.1 惡意軟件如何濫用服務 558
17.10.2 scm的服務記錄結構 558
17.10.3 枚舉進程內存中的服務 560
17.10.4 blazgel木馬的例子 560
17.10.5 使用volatility的svcscan插件 561
17.11 使用mutantscan掃描互斥體對象 564
第18章 內存取證:網絡和注冊表 567
18.1 探索套接字和連接對象 567
18.1.1 套接字和連接證據 567
18.1.2 套接字和連接對象 569
18.2 分析zeus留下的網絡證據 570
18.3 檢測企圖隱藏tcp/ip的活動 572
18.3.1 掃描套接字和連接對象 572
18.3.2 其他項目 574
18.4 檢測原始套接字和混雜模式的網絡接口 574
18.4.1 混雜模式的套接字 574
18.4.2 檢測混雜模式 575
18.5 注冊表分析 575
18.5.1 使用內存注冊表工具分析注冊表證據 576
18.5.2 通過最后寫入時間戳排序注冊表項 580
18.5.3 使用volatility和reg-ripper 582
? 前言 《惡意軟件分析訣竅與工具箱——對抗“流氓”軟件的技術與利器》一書提供了大量的解決方案和教程,能夠提高個人分析惡意軟件的技能和水平,或者避免受到惡意軟件的攻擊。不管您是進行取證調查、事件響應,還是出于個人興趣對惡意軟件進行逆向工程,本書都能夠教會您許多達到目的的方法。本書在材料的選取上有幾個重要的目標。第一個目標是希望能夠將我們多年來處理惡意代碼的經驗以一種比較好的方式傳授給非技術讀者,同時又不能太簡單,使技術讀者也能從中受益。也就是說,惡意軟件分析人員需要結合使用多種技能。我們希望讀者至少應當熟悉下面一些知識:
  ● 網絡和TCP/IP
  ● 操作系統內部原理(Windows和Unix)
  ● 計算機安全
  ● 取證和事件響應
  ● 程序設計語言(C、C++、Python和Perl)
  ● 逆向工程
  ● 漏洞利用研究
  ● 惡意軟件基礎
  第二個目標是闡述各種工具的工作原理,而不僅僅是講述如何使用工具。如果能夠理解單擊某個按鈕(或者輸入某個命令)后所發生的事情,而不是只知道單擊哪個按鈕,就能夠更好地根據工具的輸出結果進行分析,而不僅僅是收集輸出結果。我們知道并不是每個人都愿意編寫程序,因此在配書光盤中提供了50多個工具供讀者使用,并且在整個正文中討論了100多個其他的工具。我們盡量避免提供隨處都可以找到的工具的鏈接。本書中討論的工具都是我們所熟悉的,并且盡可能是免費的工具。
  最后,本書并不是研究惡意軟件樣本或進行取證調查時所執行操作的完整指南。我們盡量包括了最常見問題的解決方案,但又是在其他書籍和網站上很少見到的知識。盡管惡意軟件可能會運行在多種平臺(如Windows、Linux、Mac OSX、移動設備和硬件/固件組件)上,但是本書主要關注分析Windows平臺上的惡意軟件。
  0.1 本書讀者對象
  如果您要學習惡意軟件,就應當閱讀本書。我們期望本書的讀者包括取證調查人員、事件響應人員、系統管理員、安全工程師、滲透測試人員、惡意軟件分析師、漏洞利用研究人員和所有對安全感興趣的人。如果您是如下所示的情況之一,您就是我們的目標讀者之一。
  ● 您是組織內事件處理、事件響應或取證小組的成員,并且希望學習一些新的工具和技術來處理惡意軟件。
  ● 您是系統、安全或網絡管理員,并且希望理解如何更加高效地保護最終用戶。
  ● 您是國家計算機緊急事件響應小組(Computer Emergency Response Team,CERT)的成員,并且需要識別和研究惡意軟件的入侵。
  ● 您在某個反病毒或研究公司工作,并且需要實際分析和報告最新的惡意軟件。
  ● 您是一名在校學生,并且希望學習一些學校不會教授的新技術。
  ● 您在IT領域工作,但是對目前的工作感到厭倦,因此您需要尋找一個新的專業來補充技術知識。
.  0.2 本書主要內容
  本書組織成許多訣竅的集合,每個訣竅解決一個特定的問題,講述一些工具的使用方法,或者討論如何使用有趣的方式檢測和分析惡意軟件。其中有一些訣竅是獨立的,即問題、討論和解決方案都是在同一個訣竅中講述。也有一些訣竅是聯系在一起,共同描述一個問題的一系列操作步驟,共同解決一個更大的問題。本書涵蓋了很多主題,隨著學習的深入,所討論的主題也變得越來越復雜和專業。如下所示是每一章所討論主題的簡要介紹:
  ● 第1章 行為隱匿:描述如何在不暴露自身身份的前提下進行在線調查。當按照本書進行練習或者在將來進行研究時,您可以使用該技術保持自身的安全。
  ● 第2章 蜜罐:描述如何使用蜜罐來收集采用蠕蟲和病毒形式發布的惡意軟件。使用這些技術,您可以收集到最新的惡意軟件族的變種、實時與其他研究人員共享、分析攻擊模式或者生成工作流自動分析樣本。
  ● 第3章 惡意軟件分類:說明如何識別、區分和組織惡意軟件。您將學習如何使用定制的反病毒特征碼檢測惡意文件、確定樣本之間的關系以及準確地找出攻擊者可能在新變種中引入的新功能。
  ● 第4章 沙箱和多病毒掃描軟件:描述如何使用在線病毒掃描軟件和公共沙箱。您將學習如何使用腳本控制樣本在目標沙箱中的行為、如何使用Python腳本在命令行下提交樣本、如何將結果存儲到數據庫中以及如何根據沙箱結果掃描惡意證據。
  ● 第5章 域名與IP地址:說明如何識別和關聯有關域名、主機名和IP地址的信息。您將學習如何跟蹤fast flux域、確定域名的擁有者、定位攻擊者擁有的其他系統,以及根據IP地址的地理位置信息創建靜態或交互地圖。
  ● 第6章 文檔、shellcode和URL:在該章中,您會學習如何分析JavaScript、PDF、
  ● Office 文檔以及惡意活動捕獲的數據包。我們討論了如何在調試器或模擬環境下提取shellcode并進行分析。
  ● 第7章 惡意軟件實驗室:說明了如何建立一個安全、可擴展和不太昂貴的實驗室,在其中執行和監視惡意代碼。我們分別討論了涉及虛擬機或物理機的解決方案,并且使用真實或模擬的Internet。
  ● 第8章 自動化操作:描述如何在VMware或VirtualBox虛擬機中自動執行惡意軟件。該章講述了幾個Python腳本,用于創建關于惡意軟件行為的報告,包括網絡流量日志和在物理內存中留下的證據。
  ● 第9章 動態分析:理解惡意軟件行為最好的一種方式是執行并觀察它的行為。該章將講述如何構建自己的API監視器、如何防止某些證據被破壞、如何在不使用鉤子的情況下實時記錄文件系統和注冊表活動、如何比較進程句柄表的變化,以及如何記錄攻擊者通過后門發送的命令。
  ● 第10章 惡意軟件取證:關注使用取證工具檢測rootkit和竊密惡意軟件的各種方法。該章講述了如何掃描文件系統和注冊表搜索隱藏數據、如何繞過鎖定文件限制并刪除頑固的惡意軟件、如何檢測HTML注入以及如何研究新形式的注冊表閑置空間。
  ● 第11章 調試惡意軟件:講述如何使用調試器分析、控制和操作惡意軟件樣本的行為。您將學習如何用Python控制調試會話,以及如何創建調試器插件來監視API調用、輸出HTML形式的行為報告以及自動突出顯示可疑活動。
  ● 第12章 反混淆:描述如何解碼、解密和脫殼攻擊者試圖掩蓋自己活動的數據。我們遍歷了一個惡意軟件樣本的逆向工程過程,恢復出了被竊取的數據,該惡意軟件加密了其網絡數據。該章還介紹了破解域名生成算法的技術。
  ● 第13章 處理DLL:描述如何分析以DLL形式分發的惡意軟件。您將學習如何枚舉和檢查DLL的導出函數、如何按照您的選擇將DLL作為進程運行(并且繞過宿主進程限制)、如何將DLL作為Windows服務執行,以及如何將DLL轉變為單獨的可執行文件。
  ● 第14章 內核調試:有一些惡意軟件只運行在內核模式下。該章講述了如何調試受到惡意軟件感染的虛擬機的內核,以便于理解惡意軟件的底層功能。您將學習如何創建WinDbg腳本、脫殼內核驅動程序以及利用IDA Pro的調試器插件。
  ● 第15章 使用Volatility進行內存取證:描述了如何從物理機和虛擬機中獲取內存樣本、如何安裝Volatility高級內存取證平臺和有關插件,以及如何通過檢測進程上下文的詭計和DKOM攻擊開始分析。
  ● 第16章 內存取證:代碼注入和提取:描述了如何從進程內存中檢測和提取隱藏的代碼(解除鏈接的DLL、shellcode等)。您將學習如何從內存樣本中重建二進制文件,包括用戶模式程序和內核驅動程序,以及如何根據內存轉儲中的信息重建加殼惡意軟件的輸入地址表(IAT)。
  ● 第17章 內存取證:rootkit:講述了如何檢測各種形式的rootkit活動,包括系統中存在的IAT、EAT、驅動程序IRP、IDT和SSDT鉤子。您將學習如何識別在內核內存中不需要加載驅動程序進行隱藏的惡意軟件、如何定位系統級的通知例程,以及如何檢測隱藏運行Windows服務的企圖。
  ● 第18章 內存取證:網絡和注冊表:講述了如何搜索系統由于惡意軟件樣本的網絡活動而留下的證據。您將學習如何檢測活動連接、偵聽套接字以及使用原始套接字和混雜模式的網卡。該章還講述了如何從內存中提取注冊表鍵和值。
  0.3 建立環境
  本書所執行的絕大多數的開發和測試Windows工具的活動都是在32位的Windows XP和Windows 7系統下進行的,使用了Microsoft的Visual Studio和Windows Driver Kit。如果需要重新編譯本書提供的工具 (如為了修復某個bug),或者希望在源代碼的基礎上開發自己的工具,那么可以從這里下載開發環境:
  ● Windows Driver Kit:http://www.microsoft.com/whdc/devtools/WDK/default.mspx。
  ● Visual Studio C++ Express:http://www.microsoft.com/express/Downloads/#2010-Visual- CPP。
  對于Python工具而言,我們都是在Linux(主要是在Ubuntu9.04、9.10或10.04)和Mac OSX 10.4和10.5下開發和測試的。您會發現絕大多數的Python工具都支持在多個平臺下運行。如果需要安裝Python,可以從http://python.org/download/處下載。建議使用Python 2.6或者更高的版本(但是不要使用3.x),因為這樣能夠與本書DVD中的絕大多數工具更好地兼容。
  在整本書中,當討論如何在Linux下安裝工具時,我們都是假設使用的是Ubuntu系統。只要您理解了Linux系統的工作方式,您就會了解如何從源代碼編譯包、如何解決包的基本依賴問題,這樣在使用其他Linux分發版本時就不會有任何問題。我們之所以選擇使用Ubuntu,是因為本書中引用的絕大多數工具(或者工具依賴的庫)要么是可以預安裝的,可以通過apt-get包管理器獲得,要么是工具的開發人員指定其工具要運行在Ubuntu系統中。
  以下幾種方式可以訪問Ubuntu機器:
  ● 直接下載Ubuntu:http://www.ubuntu.com/desktop/get-ubuntu/download。
  ● 下載Lenny Zeltser的REMnux:http://REMnux.org。REMnux是一個預先配置了各種開源惡意軟件分析工具的Ubuntu系統。REMnux提供兩種形式的下載:VMWare鏡像和ISO映像。
  ● 下載Rob Lee的SANS SIFT工作站:https://computer-forensicssans.org/community/ siftkit/。SIFT是一個預配置各種取證工具的Ubuntu系統。SIFT也提供了兩種下載形式:VMWare鏡像和ISO映像。
  我們總是試圖提供訣竅中使用工具的URL,然而有幾個工具使用得特別頻繁,同時出現在了5~10個訣竅中。因而沒有在每次使用時都給出其鏈接,下面是在所有章節中都會經常用到的工具的列表:
  ● Sysinternals Suite:http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx。
  ● Wireshark:http://www.wireshark.org/。
  ● IDA Pro and Hex-Rays:http://www.hex-rays.com/idapro/。
  ● Volatility:http://code.google.com/p/volatility/。
  ● WinDbg Debugger:http://www.microsoft.com/whdc/devtools/debuggingdefault.mspx。
  ● YARA:http://code.google.com/p/yara-project/。
  ● Process Hacker:http://processhacker.sourceforge.net/。
  
  閱讀本書之前,還應當注意一些事情。許多工具都需要在管理員特權下安裝和執行。通常情況下,將惡意代碼與管理員特權混在一起是很糟糕的,因此必須非常小心地加固您的環境(參見第7章建立虛擬機),您必須還要了解那些禁止收集、分析、共享或報告惡意代碼的法律法規。因為本書中討論的技術并不一定在您所居住的國家或城市中是可以合法應用的。
  致 謝
  
  Michael向現在以及曾經的老板們表示感謝,因為他們提供了鼓勵和激發創意的良好環境。Michael同時也要感謝他的同事們和工作中共享知識的所有人。尤其感謝AAron Walters和Ryan Smith,他們毫不猶豫地參與了有趣的新技術研究和討論。特別感謝從繁忙的工作中抽出時間審閱本書的朋友們:Lenny Zeltser、Tyler Hudak和 Ryan Olson。
  Steven向那些在幕后花費了無數個小時調查惡意軟件以及與網絡犯罪作斗爭的人們致以感謝!同時對Shadowserver Foundation的同事們的辛勤工作以及促使Internet變得更加安全的無私奉獻的精神表示感謝!
  我們還要感謝以下人員:
  ● Wiley出版社的Maureen Spears和Carol A. Long,他們幫助完成了我們的第一本書。
  ● Ilfak Guilfanov(以及Hex-Rays小組)與Halvar Flake(以及Zynamics小組),允許我們使用一些他們的靈巧的工具。
  ● 所有本書參考過的工具的開發人員,特別是Frank Boldewin、Mario Vilas、Harlan Carvey以及Jesse Kornblum在其專業知識領域上幫助審閱了本書的一些訣竅。
  ● 其他書籍、博客的作者,以及有助于收集社區討論知識的網站。
  ——Michael、Steven、Blake和 Matthew

《惡意軟件分析訣竅與工具箱——對抗“流氓”軟件的技術與利器》一書提供了大量的解決方案和教程,能夠提高個人分析惡意軟件的技能和水平,或者避免受到惡意軟件的攻擊。不管您是進行取證調查、事件響應,還是出于個人興趣對惡意軟件進行逆向工程,本書都能夠教會您許多達到目的的方法。本書在材料的選取上有幾個重要的目標。第一個目標是希望能夠將我們多年來處理惡意代碼的經驗以一種比較好的方式傳授給非技術讀者,同時又不能太簡單,使技術讀者也能從中受益。也就是說,惡意軟件分析人員需要結合使用多種技能。我們希望讀者至少應當熟悉下面一些知識:
  ● 網絡和TCP/IP
  ● 操作系統內部原理(Windows和Unix)
  ● 計算機安全
  ● 取證和事件響應
  ● 程序設計語言(C、C++、Python和Perl)
  ● 逆向工程
  ● 漏洞利用研究
  ● 惡意軟件基礎
  第二個目標是闡述各種工具的工作原理,而不僅僅是講述如何使用工具。如果能夠理解單擊某個按鈕(或者輸入某個命令)后所發生的事情,而不是只知道單擊哪個按鈕,就能夠更好地根據工具的輸出結果進行分析,而不僅僅是收集輸出結果。我們知道并不是每個人都愿意編寫程序,因此在配書光盤中提供了50多個工具供讀者使用,并且在整個正文中討論了100多個其他的工具。我們盡量避免提供隨處都可以找到的工具的鏈接。本書中討論的工具都是我們所熟悉的,并且盡可能是免費的工具。
  最后,本書并不是研究惡意軟件樣本或進行取證調查時所執行操作的完整指南。我們盡量包括了最常見問題的解決方案,但又是在其他書籍和網站上很少見到的知識。盡管惡意軟件可能會運行在多種平臺(如Windows、Linux、Mac OSX、移動設備和硬件/固件組件)上,但是本書主要關注分析Windows平臺上的惡意軟件。
  0.1 本書讀者對象
  如果您要學習惡意軟件,就應當閱讀本書。我們期望本書的讀者包括取證調查人員、事件響應人員、系統管理員、安全工程師、滲透測試人員、惡意軟件分析師、漏洞利用研究人員和所有對安全感興趣的人。如果您是如下所示的情況之一,您就是我們的目標讀者之一。
  ● 您是組織內事件處理、事件響應或取證小組的成員,并且希望學習一些新的工具和技術來處理惡意軟件。
  ● 您是系統、安全或網絡管理員,并且希望理解如何更加高效地保護最終用戶。
  ● 您是國家計算機緊急事件響應小組(Computer Emergency Response Team,CERT)的成員,并且需要識別和研究惡意軟件的入侵。
  ● 您在某個反病毒或研究公司工作,并且需要實際分析和報告最新的惡意軟件。
  ● 您是一名在校學生,并且希望學習一些學校不會教授的新技術。
  ● 您在IT領域工作,但是對目前的工作感到厭倦,因此您需要尋找一個新的專業來補充技術知識。
.  0.2 本書主要內容
  本書組織成許多訣竅的集合,每個訣竅解決一個特定的問題,講述一些工具的使用方法,或者討論如何使用有趣的方式檢測和分析惡意軟件。其中有一些訣竅是獨立的,即問題、討論和解決方案都是在同一個訣竅中講述。也有一些訣竅是聯系在一起,共同描述一個問題的一系列操作步驟,共同解決一個更大的問題。本書涵蓋了很多主題,隨著學習的深入,所討論的主題也變得越來越復雜和專業。如下所示是每一章所討論主題的簡要介紹:
  ● 第1章 行為隱匿:描述如何在不暴露自身身份的前提下進行在線調查。當按照本書進行練習或者在將來進行研究時,您可以使用該技術保持自身的安全。
  ● 第2章 蜜罐:描述如何使用蜜罐來收集采用蠕蟲和病毒形式發布的惡意軟件。使用這些技術,您可以收集到最新的惡意軟件族的變種、實時與其他研究人員共享、分析攻擊模式或者生成工作流自動分析樣本。
  ● 第3章 惡意軟件分類:說明如何識別、區分和組織惡意軟件。您將學習如何使用定制的反病毒特征碼檢測惡意文件、確定樣本之間的關系以及準確地找出攻擊者可能在新變種中引入的新功能。
  ● 第4章 沙箱和多病毒掃描軟件:描述如何使用在線病毒掃描軟件和公共沙箱。您將學習如何使用腳本控制樣本在目標沙箱中的行為、如何使用Python腳本在命令行下提交樣本、如何將結果存儲到數據庫中以及如何根據沙箱結果掃描惡意證據。
  ● 第5章 域名與IP地址:說明如何識別和關聯有關域名、主機名和IP地址的信息。您將學習如何跟蹤fast flux域、確定域名的擁有者、定位攻擊者擁有的其他系統,以及根據IP地址的地理位置信息創建靜態或交互地圖。
  ● 第6章 文檔、shellcode和URL:在該章中,您會學習如何分析JavaScript、PDF、
  ● Office 文檔以及惡意活動捕獲的數據包。我們討論了如何在調試器或模擬環境下提取shellcode并進行分析。
  ● 第7章 惡意軟件實驗室:說明了如何建立一個安全、可擴展和不太昂貴的實驗室,在其中執行和監視惡意代碼。我們分別討論了涉及虛擬機或物理機的解決方案,并且使用真實或模擬的Internet。
  ● 第8章 自動化操作:描述如何在VMware或VirtualBox虛擬機中自動執行惡意軟件。該章講述了幾個Python腳本,用于創建關于惡意軟件行為的報告,包括網絡流量日志和在物理內存中留下的證據。
  ● 第9章 動態分析:理解惡意軟件行為最好的一種方式是執行并觀察它的行為。該章將講述如何構建自己的API監視器、如何防止某些證據被破壞、如何在不使用鉤子的情況下實時記錄文件系統和注冊表活動、如何比較進程句柄表的變化,以及如何記錄攻擊者通過后門發送的命令。
  ● 第10章 惡意軟件取證:關注使用取證工具檢測rootkit和竊密惡意軟件的各種方法。該章講述了如何掃描文件系統和注冊表搜索隱藏數據、如何繞過鎖定文件限制并刪除頑固的惡意軟件、如何檢測HTML注入以及如何研究新形式的注冊表閑置空間。
  ● 第11章 調試惡意軟件:講述如何使用調試器分析、控制和操作惡意軟件樣本的行為。您將學習如何用Python控制調試會話,以及如何創建調試器插件來監視API調用、輸出HTML形式的行為報告以及自動突出顯示可疑活動。
  ● 第12章 反混淆:描述如何解碼、解密和脫殼攻擊者試圖掩蓋自己活動的數據。我們遍歷了一個惡意軟件樣本的逆向工程過程,恢復出了被竊取的數據,該惡意軟件加密了其網絡數據。該章還介紹了破解域名生成算法的技術。
  ● 第13章 處理DLL:描述如何分析以DLL形式分發的惡意軟件。您將學習如何枚舉和檢查DLL的導出函數、如何按照您的選擇將DLL作為進程運行(并且繞過宿主進程限制)、如何將DLL作為Windows服務執行,以及如何將DLL轉變為單獨的可執行文件。
  ● 第14章 內核調試:有一些惡意軟件只運行在內核模式下。該章講述了如何調試受到惡意軟件感染的虛擬機的內核,以便于理解惡意軟件的底層功能。您將學習如何創建WinDbg腳本、脫殼內核驅動程序以及利用IDA Pro的調試器插件。
  ● 第15章 使用Volatility進行內存取證:描述了如何從物理機和虛擬機中獲取內存樣本、如何安裝Volatility高級內存取證平臺和有關插件,以及如何通過檢測進程上下文的詭計和DKOM攻擊開始分析。
  ● 第16章 內存取證:代碼注入和提取:描述了如何從進程內存中檢測和提取隱藏的代碼(解除鏈接的DLL、shellcode等)。您將學習如何從內存樣本中重建二進制文件,包括用戶模式程序和內核驅動程序,以及如何根據內存轉儲中的信息重建加殼惡意軟件的輸入地址表(IAT)。
  ● 第17章 內存取證:rootkit:講述了如何檢測各種形式的rootkit活動,包括系統中存在的IAT、EAT、驅動程序IRP、IDT和SSDT鉤子。您將學習如何識別在內核內存中不需要加載驅動程序進行隱藏的惡意軟件、如何定位系統級的通知例程,以及如何檢測隱藏運行Windows服務的企圖。
  ● 第18章 內存取證:網絡和注冊表:講述了如何搜索系統由于惡意軟件樣本的網絡活動而留下的證據。您將學習如何檢測活動連接、偵聽套接字以及使用原始套接字和混雜模式的網卡。該章還講述了如何從內存中提取注冊表鍵和值。
  0.3 建立環境
  本書所執行的絕大多數的開發和測試Windows工具的活動都是在32位的Windows XP和Windows 7系統下進行的,使用了Microsoft的Visual Studio和Windows Driver Kit。如果需要重新編譯本書提供的工具 (如為了修復某個bug),或者希望在源代碼的基礎上開發自己的工具,那么可以從這里下載開發環境:
  ● Windows Driver Kit:http://www.microsoft.com/whdc/devtools/WDK/default.mspx。
  ● Visual Studio C++ Express:http://www.microsoft.com/express/Downloads/#2010-Visual- CPP。
  對于Python工具而言,我們都是在Linux(主要是在Ubuntu9.04、9.10或10.04)和Mac OSX 10.4和10.5下開發和測試的。您會發現絕大多數的Python工具都支持在多個平臺下運行。如果需要安裝Python,可以從http://python.org/download/處下載。建議使用Python 2.6或者更高的版本(但是不要使用3.x),因為這樣能夠與本書DVD中的絕大多數工具更好地兼容。
  在整本書中,當討論如何在Linux下安裝工具時,我們都是假設使用的是Ubuntu系統。只要您理解了Linux系統的工作方式,您就會了解如何從源代碼編譯包、如何解決包的基本依賴問題,這樣在使用其他Linux分發版本時就不會有任何問題。我們之所以選擇使用Ubuntu,是因為本書中引用的絕大多數工具(或者工具依賴的庫)要么是可以預安裝的,可以通過apt-get包管理器獲得,要么是工具的開發人員指定其工具要運行在Ubuntu系統中。
  以下幾種方式可以訪問Ubuntu機器:
  ● 直接下載Ubuntu:http://www.ubuntu.com/desktop/get-ubuntu/download。
  ● 下載Lenny Zeltser的REMnux:http://REMnux.org。REMnux是一個預先配置了各種開源惡意軟件分析工具的Ubuntu系統。REMnux提供兩種形式的下載:VMWare鏡像和ISO映像。
  ● 下載Rob Lee的SANS SIFT工作站:https://computer-forensicssans.org/community/ siftkit/。SIFT是一個預配置各種取證工具的Ubuntu系統。SIFT也提供了兩種下載形式:VMWare鏡像和ISO映像。
  我們總是試圖提供訣竅中使用工具的URL,然而有幾個工具使用得特別頻繁,同時出現在了5~10個訣竅中。因而沒有在每次使用時都給出其鏈接,下面是在所有章節中都會經常用到的工具的列表:
  ● Sysinternals Suite:http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx。
  ● Wireshark:http://www.wireshark.org/。
  ● IDA Pro and Hex-Rays:http://www.hex-rays.com/idapro/。
  ● Volatility:http://code.google.com/p/volatility/。
  ● WinDbg Debugger:http://www.microsoft.com/whdc/devtools/debuggingdefault.mspx。
  ● YARA:http://code.google.com/p/yara-project/。
  ● Process Hacker:http://processhacker.sourceforge.net/。
  
  閱讀本書之前,還應當注意一些事情。許多工具都需要在管理員特權下安裝和執行。通常情況下,將惡意代碼與管理員特權混在一起是很糟糕的,因此必須非常小心地加固您的環境(參見第7章建立虛擬機),您必須還要了解那些禁止收集、分析、共享或報告惡意代碼的法律法規。因為本書中討論的技術并不一定在您所居住的國家或城市中是可以合法應用的。
  致 謝
  
  Michael向現在以及曾經的老板們表示感謝,因為他們提供了鼓勵和激發創意的良好環境。Michael同時也要感謝他的同事們和工作中共享知識的所有人。尤其感謝AAron Walters和Ryan Smith,他們毫不猶豫地參與了有趣的新技術研究和討論。特別感謝從繁忙的工作中抽出時間審閱本書的朋友們:Lenny Zeltser、Tyler Hudak和 Ryan Olson。
  Steven向那些在幕后花費了無數個小時調查惡意軟件以及與網絡犯罪作斗爭的人們致以感謝!同時對Shadowserver Foundation的同事們的辛勤工作以及促使Internet變得更加安全的無私奉獻的精神表示感謝!
  我們還要感謝以下人員:
  ● Wiley出版社的Maureen Spears和Carol A. Long,他們幫助完成了我們的第一本書。
  ● Ilfak Guilfanov(以及Hex-Rays小組)與Halvar Flake(以及Zynamics小組),允許我們使用一些他們的靈巧的工具。
  ● 所有本書參考過的工具的開發人員,特別是Frank Boldewin、Mario Vilas、Harlan Carvey以及Jesse Kornblum在其專業知識領域上幫助審閱了本書的一些訣竅。
  ● 其他書籍、博客的作者,以及有助于收集社區討論知識的網站。
  ——Michael、Steven、Blake和 Matthew

?

轉載于:https://my.oschina.net/cjkall/blog/195960

總結

以上是生活随笔為你收集整理的恶意软件分析诀窍与工具箱——对抗“流氓”软件的技术与利器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。