TOP
0
0
三民出版.新書搶先報|最速、最優惠的新鮮貨報給你知!
惡意程式碼分析實戰(簡體書)
滿額折

惡意程式碼分析實戰(簡體書)

商品資訊

人民幣定價:128 元
定價
:NT$ 768 元
優惠價
87668
絕版無法訂購
商品簡介
名人/編輯推薦
目次
書摘/試閱
相關商品

商品簡介

《惡意程式碼分析實戰》是一本內容全面的惡意程式碼分析技術指南,其內容兼顧理論,重在實踐,從不同方面為讀者講解惡意程式碼分析的實用技術方法。

《惡意程式碼分析實戰》分為21章,覆蓋惡意程式碼行為、惡意程式碼靜態分析方法、惡意程式碼動態分析方法、惡意程式碼對抗與反對抗方法等,並包含了shellcode分析,C++惡意程式碼分析,以及64位惡意程式碼分析方法的介紹。本書多個章節後面都配有實驗並配有實驗的詳細講解與分析。通過每章的介紹及章後的實驗,本書一步一個臺階地幫助初學者從零開始建立起惡意程式碼分析的基本技能。

《惡意程式碼分析實戰》獲得業界的一致好評,IDA Pro的作者Ilfak Guilfanov這樣評價本書:“一本惡意程式碼分析的實踐入門指南,我把這本書推薦給所有希望解剖Windows惡意程式碼的讀者”。

《惡意程式碼分析實戰》的讀者群主要是網路與系統安全領域的技術愛好者與學生及惡意程式碼分析研究方面的安全從業人員。

名人/編輯推薦

編輯推薦

不管你是否有惡意程式碼分析的背景和經驗,《惡意程式碼分析實戰》極其豐富的內容都將使你獲益匪淺。

《惡意程式碼分析實戰》教你如何、以及何時使用惡意程式碼分析技術,深入掌握惡意程式碼分析工具的核心功能,從而達到準確診斷、及時突破、快速回應的效果。

《惡意程式碼分析實戰》一經問世,便贏來業內好評如潮,被業內人士一致推薦為入門、晉級的權威讀本。

權威,詳盡,經典——每一位認真學習過《惡意程式碼分析實戰》的讀者,必將在惡意程式碼分析的專業技能上獲得巨大的提升。

 

媒體評論

一本優秀的惡意程式碼速成教程。──Dino Dai Zovi,自由安全諮詢師

一本最為全面的惡意程式碼分析技術指南,覆蓋了所有惡意程式碼分析所需的關鍵技術,幫助你理解最新惡意程式碼帶來的技術挑戰。──Chris Eagle,美國海軍研究生院,電腦科學系高級講師

一本惡意程式碼分析的實踐入門指南,我把這本書推薦給所有希望解剖Windows惡意程式碼的讀者。── Ilfak Guilfanov,IDA PRO創始人

一本惡意程式碼分析的優秀指南,所有章節都包含有詳細的技術解釋和動手實踐案例教程,讓你能夠立即面對真實的惡意程式碼。──Sebastian Porst,Google軟體工程師

本書為各個技術層次上的讀者帶來逆向工程方法,提供了一大堆覆蓋各種技術並且容易訪問的實踐案例,將帶領你更加深入地理解逆向工程的藝術與科學。我強烈推薦本書,無論是新手還是領域專家。──

Danny Quist,博士,OFFENSIVE COMPUTING創始人

如果你只要讀一本惡意程式碼的書籍,或是希望進入到惡意程式碼分析師的世界,就來看這本書吧!──Patrick Engbretson,達科他州立大學教授,The Basics of Hacking and Pen Testing一書的作者

為軟體安全或入侵偵測系統等研究生級別高級課程提供很好的課程資料,實踐案例對學生學習逆向工程方法、惡意程式碼分析和理解等方面具有特殊的價值。──Sal Stolfo,哥倫比亞大學教授

 

目次

第0章 惡意程式碼分析技術入門

0.1 惡意程式碼分析目標

0.2 惡意程式碼分析技術

0.2.1 靜態分析基礎技術

0.2.2 動態分析基礎技術

0.2.3 靜態分析高級技術

0.2.4 動態分析高級技術

0.3 惡意程式碼類型

0.4 惡意程式碼分析通用規則

第 1篇 靜態分析

第1章 靜態分析基礎技術

1.1 反病毒引擎掃描:實用的第一步

1.2 雜湊值:惡意程式碼的指紋

1.3 查找字串

1.4 加殼與混淆惡意程式碼

1.4.1 文件加殼

1.4.2 使用PEID檢測加殼

1.5 PE檔案格式

1.6 程式庫與函數

1.6.1 靜態連結、運行時連結與動態連結

1.6.2 使用DEPENDENCY WALKER工具探索動態連結函數

1.6.3 導入函數

1.6.4 匯出函數

1.7 靜態分析技術實踐

1.7.1 POTENTIALKEYLOGGER.EXE:一個未加殼的可執行檔

1.7.2 PACKEDPROGRAM.EXE:窮途末路

1.8 PE文件頭與分節

1.8.1 使用PEVIEW來分析PE檔

1.8.2 使用RESOURCE HACKER工具來查看資源節

1.8.3 使用其他的PE文件工具

1.8.4 PE文件頭概述

1.9 小結

1.10 實驗

第2章 在虛擬機器中分析惡意程式碼

2.1 虛擬機器的結構

2.2 創建惡意程式碼分析機

2.2.1 配置VMWARE

2.2.2 斷開網路

2.2.3 創建主機模式網路

2.2.4 使用多個虛擬機器

2.3 使用惡意程式碼分析機

2.3.1 讓惡意程式碼連接互聯網

2.3.2 連接和斷開週邊設備

2.3.3 拍攝快照

2.3.4 從虛擬機器傳輸文件

2.4 使用VMWARE進行惡意程式碼分析的風險

2.5 記錄/重放:重複電腦運行軌跡

2.6 小結

第3章 動態分析基礎技術

3.1 沙箱:簡便但粗糙的方法

3.1.1 使用惡意程式碼沙箱

3.1.2 沙箱的缺點

3.2 運行惡意程式碼

3.3 進程監視器

3.3.1 進程監視器的顯示

3.3.2 進程監視器中的過濾

3.4 使用進程流覽器(PROCESS EXPLORER)來查看進程

3.4.1 進程流覽器的顯示

3.4.2 使用驗證選項

3.4.3 比較字串

3.4.4 使用依賴遍歷器(DEPENDENCY WALKER)

3.4.5 分析惡意文檔

3.5 使用REGSHOT來比較註冊表快照

3.6 類比網路

3.6.1 使用APATEDNS

3.6.2 使用NETCAT進行監視

3.7 使用WIRESHARK進行資料包監聽

3.8 使用INETSIM

3.9 基礎動態分析工具實踐

3.10 小結

3.11 實驗

第 2篇 靜態分析高級技術篇

第4章 X86反彙編速成班

4.1 抽象層次

4.2 逆向工程

4.3 X86體系結構

4.3.1 記憶體

4.3.2 指令

4.3.3 操作碼和位元組序

4.3.4 運算元

4.3.5 寄存器

4.3.6 簡單指令

4.3.7 棧

4.3.8 條件指令

4.3.9 分支指令

4.3.10 重複指令

4.3.11 C語言主函數和偏移

4.3.12 更多資訊:INTEL X86 ARCHITECTURE MANUAL

4.4 小結

第5章 IDA PRO

5.1 載入一個可執行檔

5.2 IDA PRO介面

5.2.1 反彙編視窗模式

5.2.2 對分析有用的視窗

5.2.3 返回到默認視圖

5.2.4 導航IDA PRO

5.2.5 搜索

5.3 使用交叉引用

5.3.1 代碼交叉引用

5.3.2 資料交叉引用

5.4 分析函數

5.5 使用圖形選項

5.6 增強反彙編

5.6.1 重命名位置

5.6.2 注釋

5.6.3 格式化運算元

5.6.4 使用命名的常量

5.6.5 重新定義代碼和資料

5.7 用外掛程式擴展IDA

5.7.1 使用IDC腳本

5.7.2 使用IDAPYTHON

5.7.3 使用商業外掛程式

5.8 小結

5.9 實驗

第6章 識別彙編中的C代碼結構

6.1 全域與區域變數

6.2 反彙編算術操作

6.3 識別IF語句

6.3.1 用IDA PRO圖形化分析函數

6.3.2 識別嵌套的IF語句

6.4 識別迴圈

6.4.1 找到FOR迴圈

6.4.2 找到WHILE迴圈

6.5 理解函式呼叫約定

6.5.1 CDECL

6.5.2 STDCALL

6.5.3 FASTCALL

6.5.4 壓棧與移動

6.6 分析SWITCH語句

6.6.1 IF樣式

6.6.2 跳轉表

6.7 反彙編陣列

6.8 識別結構體

6.9 分析鏈表遍歷

6.10 小結

6.11 實驗

第7章 分析惡意WINDOWS程式

7.1 WINDOWS API

7.1.1 類型和匈牙利表達法

7.1.2 控制碼

7.1.3 檔案系統函數

7.1.4 特殊檔

7.2 WINDOWS註冊表

7.2.1 註冊表根鍵

7.2.2 REGEDIT

7.2.3 自啟動程式

7.2.4 常用註冊表函數

7.2.5 練習分析註冊表操作代碼

7.2.6 使用.REG檔的註冊表腳本

7.3 網路API

7.3.1 伯克利相容通訊端

7.3.2 網路的伺服器和用戶端

7.3.3 WININET API

7.4 跟蹤惡意程式碼的運行

7.4.1 DLL

7.4.2 進程

7.4.3 執行緒

7.4.4 使用互斥量的進程間協作

7.4.5 服務

7.4.6 元件物件模型

7.4.7 異常:當事情出錯時

7.5 內核與使用者模式

7.6 原生API

7.7 小結

7.8 實驗

第 3篇 動態分析高級技術篇

第8章 動態調試

8.1 原始程式碼級與彙編級的調試器

8.2 核心模式與使用者模式調試

8.3 使用調試器

8.3.1 單步調試

8.3.2 單步跳過(STEPPING-OVER)和單步跳入(STEPPING-INTO)

8.3.3 用中斷點暫停執行

8.4 異常

8.4.1 首次和二次異常處理

8.4.2 常見異常

8.5 使用調試器修改可執行檔

8.6 修改可執行程式的實踐

8.7 小結

第9章 OLLYDBG

9.1 載入惡意程式碼

9.1.1 打開一個可執行檔

9.1.2 附加調試器到一個運行程式

9.2 OLLYDBG的介面

9.3 記憶體映射

9.3.1 基底位址重定位

9.4 查看執行緒和堆疊

9.5 執行代碼

9.6 中斷點

9.6.1 軟體中斷點

9.6.2 條件中斷點

9.6.3 硬體中斷點

9.6.4 記憶體中斷點

9.7 載入DLL

9.8 跟蹤

9.8.1 標準回溯跟蹤

9.8.2 堆疊調用跟蹤

9.8.3 運行跟蹤

9.8.4 跟蹤POISON IVY

9.9 異常處理

9.10 修補

9.11 分析SHELLCODE

9.12 協助功能

9.13 外掛程式

9.13.1 OLLYDUMP

9.13.2 調試器隱藏外掛程式

9.13.3 命令列

9.13.4 書簽

9.14 腳本調試

9.15 小結

9.16 實驗

第10章 使用WINDBG調試內核

10.1 驅動與內核代碼

10.2 安裝內核調試

10.3 使用WINDBG

10.3.1 從記憶體中讀取

10.3.2 使用算術操作符

10.3.3 設置中斷點

10.3.4 列舉模組

10.4 微軟符號表

10.4.1 搜索符號

10.4.2 查看結構資訊

10.4.3 配置WINDOWS符號表

10.5 內核調試實踐

10.5.1 用戶空間的代碼

10.5.2 核心模式的代碼

10.5.3 查找驅動物件

10.6 ROOTKIT

10.6.1 ROOTKIT分析實踐

10.6.2 中斷

10.7 載入驅動

10.8 WINDOWS VISTA、WINDOWS 7 和X64版本的內核問題

10.9 小結

10.10 實驗

第 4篇 惡意程式碼功能篇

第11章 惡意程式碼行為

11.1 下載器和啟動器

11.2 後門(BACKDOOR)

11.2.1 反向SHELL

11.2.2 遠端控制工具

11.2.3 僵屍網路

11.2.4 遠端控制工具與僵屍網路的比較

11.3 登錄憑證竊密器

11.3.1 GINA攔截

11.3.2 口令雜湊轉儲

11.3.3 擊鍵記錄

11.4 存活機制

11.4.1 WINDOWS註冊表

11.4.2 特洛伊木馬化(TROJANIZED)系統二進位檔案

11.4.3 DLL載入順序劫持

11.5 提權

11.5.1 使用SEDEBUGPRIVILEGE

11.6 隱藏它的蹤跡——用戶態的ROOTKIT

11.6.1 IAT HOOK

11.6.2 INLINE HOOK

11.7 小結

11.8 實驗

第12章 隱蔽的惡意程式碼啟動

12.1 啟動器(LAUNCHER)

12.2 進程注入

12.2.1 DLL注入

12.2.2 直接注入

12.3 進程替換

12.4 鉤子(HOOK)注入

12.4.1 本地和遠端鉤子(HOOK)

12.4.2 使用鉤子的擊鍵記錄器

12.4.3 使用SETWINDOWSHOOKEX

12.4.4 目標執行緒

12.5 DETOURS

12.6 APC注入

12.6.1 使用者模式下APC注入

12.6.2 核心模式的APC注入

12.7 小結

12.8 實驗

第13章 資料加密

13.1 分析加密演算法的目的

13.2 簡單的加密演算法

13.2.1 凱撒密碼

13.2.2 XOR

13.2.3 其他一些簡單的加密策略

13.2.4 BASE64

13.3 常見的加密演算法

13.3.1 識別字串和導入

13.3.2 查找加密常量

13.3.3 查找高熵值內容

13.4 自訂加密

13.4.1 識別自訂加密

13.4.2 攻擊者使用自訂加密的優勢

13.5 解密

13.5.1 自解密

13.5.2 手動執行解密函數

13.5.3 使用通用的解密規範

13.6 小結

13.7 實驗

第14章 惡意程式碼的網路特徵

14.1 網路應對措施

14.1.1 在原始環境中觀察惡意程式碼

14.1.2 惡意行為的痕跡

14.1.3 OPSEC=操作安全性

14.2 安全地調查線上攻擊者

14.2.1 間接性策略

14.2.2 獲取IP位址和功能變數名稱資訊

14.3 基於內容的網路應對措施

14.3.1 使用SNORT進行入侵偵測

14.3.2 深入觀察

14.4 結合動態和靜態分析技術

14.4.1 過度分析的危險

14.4.2 在眾目睽睽下隱藏

14.4.3 理解周邊代碼

14.4.4 尋找網路操作代碼

14.4.5 瞭解網路內容的來源

14.4.6 硬編碼資料 VS. 臨時數據

14.4.7 確定和利用編碼步驟

14.4.8 創建特徵

14.4.9 分析解析常式

14.4.10 針對多個元素

14.5 瞭解攻擊者的意圖

14.6 小結

14.7 實驗

第 5篇 逆向工程

第15章 對抗反彙編

15.1 何謂對抗反彙編技術

15.2 挫敗反彙編演算法

15.2.1 線性反彙編

15.2.2 面向代碼流的反彙編

15.3 對抗反彙編技術

15.3.1 相同目標的跳轉指令

15.3.2 固定條件的跳轉指令

15.3.3 無效的反彙編指令

15.3.4 用IDA PRO對指令進行NOP替換

15.4 混淆控制流圖

15.4.1 函數指標問題

15.4.2 在IDA PRO中添加代碼的交叉引用

15.4.3 濫用返回指針

15.4.4 濫用結構化異常處理

15.5 挫敗棧幀分析

15.6 小結

15.7 實驗

第16章 反調試技術

16.1 探測WINDOWS調試器

16.1.1 使用WINDOWS API

16.1.2 手動檢測資料結構

16.1.3 系統痕跡檢測

16.2 識別調試器的行為

16.2.1 INT掃描

16.2.2 執行代碼校驗和檢查

16.2.3 時鐘檢測

16.3 干擾調試器的功能

16.3.1 使用TLS回檔

16.3.2 使用異常

16.3.3 插入中斷

16.4 調試器漏洞

16.4.1 PE頭漏洞

16.4.2 OUTPUTDEBUGSTRING漏洞

16.5 小結

16.6 實驗

第17章 反虛擬機器技術

17.1 VMWARE 痕跡

17.1.1 繞過VMWARE痕跡的探測

17.1.2 探測記憶體痕跡

17.2 查找漏洞指令

17.2.1 使用RED PILL反虛擬機器技術

17.2.2 使用NO PILL技術

17.2.3 查詢I/O通訊連接埠

17.2.4 使用STR指令

17.2.5 反虛擬機器的X86指令

17.2.6 在IDA PRO中高亮顯示反虛擬機器代碼

17.2.7 使用SCOOPYNG

17.3 調整設置

17.4 虛擬機器逃逸

17.5 小結

17.6 實驗

第18章 加殼與脫殼

18.1 剖析加殼

18.1.1 脫殼存根

18.1.2 載入可執行檔

18.1.3 解析導入函數表

18.1.4 尾部跳轉

18.1.5 圖示脫殼過程

18.2 識別加殼程式

18.2.1 加殼程式的標識

18.2.2 熵計算

18.3 脫殼選項

18.4 自動脫殼

18.5 手動脫殼

18.5.1 使用導入重構器重構導入表

18.5.2 查找OEP

18.5.3 手動修復導入表

18.6 常見殼的技巧與竅門

18.6.1 UPX

18.6.2 PECOMPACT

18.6.3 ASPACK

18.6.4 PETITE

18.6.5 WINUPACK

18.6.6 THEMIDA

18.7 不完全脫殼情況下的分析

18.8 加殼DLL

18.9 小結

18.10 實驗

第 6篇 高級專題

第19章 SHELLCODE分析

19.1 載入SHELLCODE進行分析

19.2 位置無關代碼

19.3 識別執行位置

19.3.1 使用CALL/POP指令

19.3.2 使用FNSTENV指令

19.4 手動符號解析

19.4.1 在記憶體中找到KERNEL32.DLL

19.4.2 解析PE檔匯出資料

19.4.3 使用散列過的匯出符號名

19.5 一個完整的HELLO WORLD例子

19.6 SHELLCODE編碼

19.7 空指令雪橇

19.8 找到SHELLCODE

19.9 小結

19.10 實驗

第20章 C++代碼分析

20.1 物件導向的程式設計語言

20.1.1 THIS指針

20.1.2 重載與修飾

20.1.3 繼承(INHERITANCE)和函數重寫(OVERRIDING)

20.2 虛函數和非虛函數

20.2.1 虛函數表的使用

20.2.2 識別虛函數表

20.3 創建和銷毀對象

20.4 小結

20.5 實驗

第21章 64位惡意程式碼

21.1 為什麼需要64位元惡意程式碼

21.2 X64架構上的差別

21.2.1 X64調用約定和棧使用上的差別

21.2.2 64位異常處理

21.3 在WINDOWS 64位上的WINDOWS 32位

21.4 惡意程式碼功能上的64位提示

21.5 小結

21.6 實驗

附錄A 常見WINDOWS函數清單

附錄B 流行的惡意程式碼分析工具列表

附錄C 實驗作業參考解答

附錄D 致青春,基礎軟體發展的中國故事

附錄E SYSER操作入門

書摘/試閱

電話鈴聲急促響起,網路系統管理員告訴你說公司網站被黑了,網站上的客戶敏感資訊被盜了。於是你立馬開始調查分析,首先檢查了日誌記錄,來確定事件涉及的主機。你用殺毒軟體對這些主機進行了掃描,檢查是否感染了惡意程式碼。你的運氣還算不錯,殺毒軟體檢測到一個木馬程式,名為TROJ.snapAK。你刪除這個檔,並清理了現場,同時你還部署了一個入侵偵測系統,來確認沒有其他主機被感染。最後你修補了一個你認為是被攻擊者利用來入侵主機的安全性漏洞,來確保這種攻擊事件不會再次發生。

不幸的是,幾天之後網路系統管理員再次打電話過來,告訴你說敏感資訊又被竊取了。這看起來似乎是相同的攻擊,但你卻不知道該做什麼。很顯然,你部署的入侵偵測系統特徵庫失效了。因為更多的主機被感染了,而你的殺毒軟體並沒有提供足夠的保護來隔離攻擊威脅。現在,公司高層管理人員要求你解釋發生了什麼,而你可以告訴他們的只是一個名為TROJ.snapAK的惡意程式碼。你沒有針對最重要問題的答案,這讓他們認為你是一位不稱職的安全工程師。

你該如何確定TROJ.snapAK惡意程式碼在做什麼,從而可以讓你消除這個威脅?你如何才能寫出一個更有效的網路檢測特徵?你怎樣才能找出其他感染了這個惡意程式碼的主機呢?你該如何確保你刪除了整個惡意程式碼套裝程式,而不只是其中的一部分呢?你該如何回答管理層關於這個惡意程式碼幹了些什麼的問題呢?

如果你所有能做的,只是告訴你的老闆,說你需要聘請昂貴的外部諮詢顧問,因為你不能保護自己的網路,這真的不是確保工作飯碗的好辦法。

幸運的是,你有著足夠的智慧,馬上啃起了這本《惡意程式碼分析實戰》,從這本書中你將學到的技能,可以教你如何來回答這些困難的問題,並為你展示保護網路免受惡意程式碼侵害的方法。

什麼是惡意程式碼分析

惡意程式碼,也稱為惡意軟體,在大多數電腦入侵事件中都扮演了重要角色。任何以某種方式來對使用者、電腦或網路造成破壞的軟體,都可以被認為是惡意程式碼,包括電腦病毒、木馬、蠕蟲、內核套件、勒索軟體、間諜軟體,等等。儘管各種不同的惡意程式碼類型會做一些完全不同的事情(你將會在本書中看到),作為惡意程式碼分析師,我們擁有一組核心的工具和技術,用來解剖分析各式各樣的惡意程式碼。

惡意程式碼分析是一種解剖惡意程式碼的藝術,瞭解惡意程式碼是如何工作的、如何識別它,以及如何戰勝或消除它。你並不是需要成為一名超級駭客,才能進行惡意程式碼分析。

網路上每天有著數以百萬計,甚至更多的惡意程式碼,惡意程式碼分析成為了任何一位元從事電腦安全事件回應安全工程師的必需技能。此外,由於惡意程式碼分析專業人才的短缺,熟練的惡意程式碼分析師正處於強烈的人才需求之中。

這麼說吧,這不是一本關於如何找到惡意程式碼的書籍。我們的重點是在如何分析已經找到的惡意程式碼。我們專注於Windows作業系統上發現的惡意程式碼——因為到目前為止,Windows作業系統還是最為常用的作業系統。但你所學到的技能可以為你在任何作業系統上分析惡意程式碼提供支援。我們還將專注在可執行檔上,因為它們是最常見的,也是你所遇到的最難以分析的一些文件。與此同時,我們選擇不討論如惡意JavaScript腳本、Java程式等其他類型的惡意程式碼,相反的是,我們選擇對方法進行深入討論,用於分析更加高級的威脅,比如後門、隱蔽性惡意程式碼和內核套件。

先決條件

不管你是否有惡意程式碼分析的背景或經驗,你都會從本書中受益。

第1~3章將討論基礎的惡意程式碼分析技術,即使你沒有安全或程式設計經驗,也可以用這些技術來進行惡意程式碼分析。第4~14章則覆蓋中等級別的內容,可以讓你武裝上一些用來分析大多數惡意程式的主流工具與技能。這些章節都需要一些關於程式設計語言的基本知識。第15~19章,則提供最先進的技術材料,即使對資深的惡意程式碼分析師來說都是有用的,因為這部分內容涵蓋了惡意程式碼分析的一些戰術和技巧,在分析最為複雜的惡意程式碼樣本時都用得上,比如那些應用了對抗反彙編、反調試技術或加殼技術的惡意程式碼。

本書將教你如何以及何時使用各種惡意程式碼分析技術。瞭解何時應該使用特定的技術與掌握技術本身一樣重要,因為在某個特定狀況下使用了錯誤的技術,可能會是在令人沮喪地浪費時間。我們不會涵蓋每一個工具,因為工具會隨時改變,而它的核心功能才是最重要的。此外,我們將在整本書中使用切合實際的惡意程式碼樣本(你可以從http://www.practicalmalwareanalysis.com/或http://www.nostarch. com/malware.htm下載),來為你揭示在分析真實世界中惡意程式碼時會遇到的各種狀況。

實踐動手學習

我們有著逆向工程和惡意程式碼分析專業課程的豐富教學經驗,這些經驗已經告訴我們,學生只有通過使用所學習的技能進行動手實踐練習時,才能真正掌握和學到這些技能。我們也發現了實驗作業的品質與講授的課程內容同等重要,如果沒有一個實驗作業部分,要學會如何分析惡意程式碼是幾乎不可能的。

從始至終,本書中絕大多數章節最後都會給出一些實驗作業,讓你來練習這一章中所講授的技術。這些實驗作業為你提供了真實惡意程式碼樣本的挑戰,旨在展示你將在真實世界中遭遇到惡意程式碼中最為普遍的類型和行為。這些實驗作業旨在加強每章中所介紹的基本概念,而不會用一些無關資訊來讓你無所適從。每個實驗都包括一個或多個惡意檔(可以從http://www.practicalmalware analysis.com/,或者http://www.nostarch.com/malware.htm下載),以及一些特意設計來引導你完成實驗的問題,此外也給出了對這些問題的簡短答案,以及對惡意程式碼樣本的詳細分析過程。

這些實驗都模擬了真實的惡意程式碼分析場景。比如,它們都以通用化的檔案名字進行命名,而不會提供任何能夠洞察到惡意程式碼功能的資訊。對於真正環境中的惡意程式碼,你也同樣在開始分析時不會有任何資訊,而你需要用你所學到的技能,來收集線索,並找出惡意程式碼在做些什麼。

每個實驗所需的時間將取決於你的經驗。你可以嘗試自己來完成實驗,或者沿著詳細分析過程,來瞭解如何在實踐中使用各種技術。

大多數章節都包含了三個實驗作業。第一個實驗通常是最簡單的,絕大多數讀者都應該能夠完成它。第二個實驗是中等難度的,大多數讀者會需要解答中的一些援助來完成。而第三個實驗是最困難的,如果沒有從參考答案取得提示,只有最勤奮和技術大拿的讀者們才能夠完成它們。

本書內容預覽

《惡意程式碼分析實戰》以使用簡單的方法,從相對而言不那麼複雜的惡意程式碼中獲取資訊開始,然後逐步提升難度,講解可以用來對抗最為先進惡意程式的複雜技術。以下是本書每章的內容預覽:

第0章,“惡意程式碼分析技術入門”,建立起惡意程式碼分析的整體過程和基礎方法學。

第1章,“靜態分析基礎技術”,傳授無須執行就能從可執行檔獲取資訊的方法。

第2章,“在虛擬機器中分析惡意程式碼”,帶你一起設置虛擬機器,用作運行惡意程式碼的安全環境。

第3章,“動態分析基礎技術”,介紹一些通過執行惡意程式進行分析、易於使用但非常高效的技術方法。

第4章,“x86反彙編速成班”,是對x86組合語言的一個簡要介紹,這章為使用IDA Pro進行惡意程式碼深入分析提供了基礎。

第5章,“IDA Pro”,為你顯示如何使用IDA Pro,一個最為重要的惡意程式碼分析工具。我們將在全書的其餘章節使用IDA Pro工具。

第6章,“識別彙編中的C代碼結構”,提供了一些C語言代碼的彙編語句案例,並教你如何理解彙編代碼的高層功能結構。

第7章,“分析惡意Windows程式”,覆蓋範圍廣泛的Windows程式特定概念,而這些是理解惡意Windows程式所必需的。

第8章,“動態調試”,解釋調試的基本知識,以及惡意程式碼分析師該如何使用調試器。

第9章,“OllyDbg”,為你展示如何使用OllyDbg,惡意程式碼分析師中最流行的一款調試器。

第10章,“使用WinDbg調試內核”,包括了如何使用WinDbg來分析核心模式惡意程式碼和內核套件。

第11章,“惡意程式碼行為”,介紹了常見的惡意程式碼功能,並告訴你在分析惡意程式碼時該如何識別惡意功能。

第12章,“隱蔽的惡意程式碼啟動”,討論如何分析一類將自己的執行隱藏至另一進程中的特殊惡意程式碼。

第13章,“資料加密”,演示了惡意程式碼如何加密資料,使其更難在網路流量或受害主機上被發現。

第14章,“惡意程式碼的網路特徵”,教你如何通過惡意程式碼分析來創建網路檢測特徵,並演示這類特徵要優於單獨從捕獲網路流量中提取的特徵。

第15章,“對抗反彙編”,解釋一些惡意程式碼編寫者如何設計自己的惡意程式碼,使得它們難以被反彙編,並說明如何識別和擊敗這些技術。

第16章,“反調試技術”,描述惡意程式碼編寫者可以讓他們的代碼難以被調試的伎倆,以及克服這些障礙的方法。

第17章,“反虛擬機器技術”,演示惡意程式碼所使用的反虛擬機器技術,這些技術會讓分析師在虛擬機器中難以分析這些惡意程式碼,並介紹繞過這些技術的方法。

第18章,“加殼與脫殼”,告訴讀者惡意程式碼是如何使用加殼來隱藏自己真正目的的,然後提供一步一步的脫殼的技術方法。

第19章,“shellcode分析”,解釋了shellcode是什麼,並展示分析惡意shellcode的一些技巧和竅門。

第20章,“C++代碼分析”,為你指明C++代碼在編譯之後存在什麼樣的差異,並教授你如何對由C++編寫的惡意程式碼進行分析。

第21章,“64位惡意程式碼”,討論惡意程式碼編寫者為何使用64位惡意程式碼,以及你所需要瞭解的x86與x64之間的區別。

附錄A,“常見Windows函數清單”,簡要介紹了惡意程式碼中普遍使用的Windows函數。

附錄B,“流行的惡意程式碼分析工具列表”,列出了對於惡意程式碼分析師們來說最有用的工具。

附錄C,“實驗作業參考解答”,對全書每個章節的實驗給出了參考解答。

附錄D,“致青春,基礎軟體發展的中國故事”,講述中國程式師開發Windows內核調試器Syser的幕後故事。

附錄E,“Syser操作入門”,提供Syser內核調試器的入門指南。

我們整本書的目標就是為你武裝能夠擊敗各種類型惡意程式碼的分析技術。正如你看到的,我們涵蓋了大量的技術材料,以及能夠加強這些技術材料的實驗作業。當你讀完本書時,應該學到了用來分析任何惡意程式碼的技能,包括快速分析常規惡意程式碼樣本的基礎技術,以及解剖那些甚至是“來自外星”的神秘惡意程式碼樣本所需的高超技術。

那麼,讓我們開始吧!

您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 668
絕版無法訂購

暢銷榜

客服中心

收藏

會員專區