出版時間:2012-6 出版社:人民郵電出版社 作者:冀云 頁數(shù):265 字?jǐn)?shù):406000
Tag標(biāo)簽:無
內(nèi)容概要
《C++黑客編程揭秘與防范》旨在通過簡單的語法知識及常用的系統(tǒng)函數(shù)編程,完成一些有特定功能的安全工具,讓讀者對系統(tǒng)知識等各方面有一個全面的了解,并且在筆者的帶領(lǐng)下一步步完成書中的實(shí)例。本書主要內(nèi)容為:第1章了解黑客編程,主要講解了VC(Visual
C++的縮寫)和Windwos下安全編程方面的基礎(chǔ)知識。第2章 從剖析簡單的木馬說起,講解有關(guān)的網(wǎng)絡(luò)編程和協(xié)議知識。第3章
Windows應(yīng)用編程基礎(chǔ),講解API編程的技術(shù)。第4章 加密與解密,講解PE等加密有關(guān)的知識。第5章
HOOK編程,講解了與鉤子有關(guān)的知識。第6章
黑客編程剖析,剖析了病毒的原理和攻防技術(shù),以及安全工具的開發(fā)。第7章最后的旅程——簡單驅(qū)動開發(fā)及逆向。
《C++黑客編程揭秘與防范》適合網(wǎng)絡(luò)安全人員、黑客愛好者,以及相關(guān)的程序員閱讀。
書籍目錄
第1章 黑客編程入門
1.1 編程語言和開發(fā)環(huán)境的選擇
1.1.1 何為SDK、API和MFC
1.1.2 VC6和SDK的配置
1.2 應(yīng)用程序的調(diào)試
1.2.1 編寫我們的第一個程序
1.2.2 用VC6調(diào)試第一個程序
1.2.3 專業(yè)的應(yīng)用程序調(diào)試工具——OllyDbg
1.3 簡單API的介紹
1.3.1 復(fù)制自身程序到Windows目錄和系統(tǒng)目錄下
1.3.2 獲得系統(tǒng)的相關(guān)信息
1.3.3 Debug和Release的編譯方式
1.3.4 查看函數(shù)定義
1.4 總結(jié)
第2章 木馬開發(fā)剖析
2.1 網(wǎng)絡(luò)通信基礎(chǔ)
2.1.1 IP地址的作用與分類
2.1.2 端口的作用與分類
2.2 網(wǎng)絡(luò)編程基礎(chǔ)知識
2.2.1 通信模型
2.2.2 Winsock
2.2.3 Winsock的相關(guān)函數(shù)
2.2.4 字節(jié)順序
2.3 簡單的通信程序
2.3.1 基于TCP協(xié)議的“Hello World!”
2.3.2 基于UDP協(xié)議的“Hello World!”
2.4 實(shí)現(xiàn)一個C/S模式的簡單木馬
2.4.1 木馬服務(wù)器端的實(shí)現(xiàn)
2.4.2 木馬客戶端的實(shí)現(xiàn)
2.5 總結(jié)
第3章 Windows應(yīng)用編程基礎(chǔ)
3.1 文件
3.1.1 打開文件
3.1.2 文件操作
3.2 AutoRun免疫程序的編寫
3.2.1 AutoRun免疫原理
3.2.2 AutoRun免疫程序的代碼實(shí)現(xiàn)
3.2.3 界面設(shè)置
3.2.4 代碼相關(guān)部分
3.3 注冊表操作
3.3.1 注冊表
3.3.2 與注冊表操作相關(guān)的常用API函數(shù)
3.3.3 注冊表啟動項的管理
3.3.4 程序的界面設(shè)置及相關(guān)代碼
3.3.5 啟動項的枚舉
3.3.6 添加啟動項的代碼
3.3.7 刪除啟動項的代碼
3.4 服務(wù)相關(guān)的編程
3.4.1 如何查看系統(tǒng)服務(wù)
3.4.2 服務(wù)控制管理器的開發(fā)
3.4.3 枚舉服務(wù)的相關(guān)API函數(shù)
3.4.4 服務(wù)的停止
3.4.5 停止服務(wù)的相關(guān)API函數(shù)
3.4.6 服務(wù)的啟動
3.5 進(jìn)程與線程
3.5.1 進(jìn)程
3.5.2 進(jìn)程的創(chuàng)建
3.5.3 “下載者”的簡單演示
3.5.4 CreateProcess()函數(shù)介紹與程序創(chuàng)建
3.5.5 進(jìn)程的結(jié)束
3.5.6 進(jìn)程的枚舉
3.5.7 調(diào)整當(dāng)前進(jìn)程的權(quán)限
3.5.8 進(jìn)程的暫停與恢復(fù)
3.5.9 多線程
3.6 DLL編程
3.6.1 什么是DLL
3.6.2 編寫一個簡單的DLL程序
3.6.3 對DLL程序的調(diào)用方法一
3.6.4 對DLL程序的調(diào)用方法二
3.7 遠(yuǎn)程線程
3.7.1 DLL注入
3.7.2 DLL卸載
3.7.3 無DLL的代碼注入
3.8 總結(jié)
第4章 加密與解密
4.1 PE文件結(jié)構(gòu)
4.1.1 PE文件結(jié)構(gòu)全貌
4.1.2 MZ頭部
4.1.3 PE頭部
4.1.4 節(jié)表
4.1.5 節(jié)表數(shù)據(jù)
4.2 詳解PE文件結(jié)構(gòu)
4.2.1 DOS頭部詳解IMAGE_DOS_HEADER
4.2.2 PE頭部詳解IMAGE_NT_HEADERS
4.2.3 IAMGE_FILE_HEADER
4.2.4 IMAGE_OPTIONAL_HEADER
4.2.5 節(jié)區(qū)詳解IMAGE_SECTION_HEADER
4.2.6 與PE結(jié)構(gòu)相關(guān)的3種地址
4.2.7 3種地址的轉(zhuǎn)換
4.3 PE查看器
4.4 簡單的查殼工具
4.5 地址轉(zhuǎn)換器
4.6 添加節(jié)區(qū)
4.6.1 手動添加一個節(jié)區(qū)
4.6.2 通過編程添加節(jié)區(qū)
4.7 破解基礎(chǔ)知識及調(diào)試API函數(shù)的應(yīng)用
4.7.1 CrackMe程序
4.7.2 用OD破解CrackMe
4.8 文件補(bǔ)丁及內(nèi)存補(bǔ)丁
4.8.1 文件補(bǔ)丁
4.8.2 內(nèi)存補(bǔ)丁
4.9 調(diào)試API函數(shù)的使用
4.9.1 常見的3種斷點(diǎn)方法
4.9.2 調(diào)試API函數(shù)及相關(guān)結(jié)構(gòu)體介紹
4.9.3 判斷是否處于被調(diào)試狀態(tài)
4.9.4 斷點(diǎn)異常函數(shù)
4.9.5 調(diào)試事件
4.9.6 調(diào)試循環(huán)
4.9.7 內(nèi)存的操作
4.9.8 線程環(huán)境相關(guān)API及結(jié)構(gòu)體
4.10 打造一個密碼顯示器
4.11 總結(jié)
第5章 HOOK編程
5.1 HOOK知識前奏
5.2 內(nèi)聯(lián)鉤子——Inline Hook
5.2.1 Inline Hook的原理
5.2.2 Inline Hook的實(shí)現(xiàn)
5.2.3 HOOK MessageBoxA
5.2.4 HOOK CreateProcessW
5.2.5 7字節(jié)Inline Hook
5.2.6 Inline Hook的注意事項
5.3 導(dǎo)入地址表鉤子——IAT HOOK
5.3.1 導(dǎo)入表簡介
5.3.2 導(dǎo)入表的數(shù)據(jù)結(jié)構(gòu)定義
5.3.3 手動分析導(dǎo)入表
5.3.4 枚舉導(dǎo)入地址表
5.3.5 IAT HOOK介紹
5.3.6 IAT HOOK之CreateFileW()
5.4 Windows鉤子函數(shù)
5.4.1 鉤子原理
5.4.2 鉤子函數(shù)
5.4.3 鍵盤鉤子實(shí)例
5.4.4 使用鉤子進(jìn)行DLL注入
5.5 總結(jié)
第6章 黑客編程剖析
6.1 惡意程序剖析
6.1.1 惡意程序的自啟動
6.1.2 木馬的配置生成與反彈端口
6.1.3 代碼實(shí)現(xiàn)剖析
6.2 簡單病毒剖析
6.2.1 病毒的感染剖析
6.2.2 縫隙搜索的實(shí)現(xiàn)
6.2.3 感染目標(biāo)程序文件剖析
6.2.4 添加感染標(biāo)志
6.2.5 自刪除功能的實(shí)現(xiàn)
6.3 隱藏DLL文件
6.3.1 啟動WinDBG
6.3.2 調(diào)試步驟
6.3.3 編寫枚舉進(jìn)程中模塊的函數(shù)
6.3.4 指定模塊的隱藏
6.4 安全工具開發(fā)基礎(chǔ)
6.4.1 行為監(jiān)控工具開發(fā)基礎(chǔ)
6.4.2 專殺工具
6.4.3 U盤防御軟件
6.4.4 目錄監(jiān)控工具
6.5 引導(dǎo)區(qū)解析
6.5.1 通過WinHex來手動解析引導(dǎo)區(qū)
6.5.2 通過程序解析MBR
6.5.3 自定義MBR的各種結(jié)構(gòu)體
6.5.4 解析MBR的程序?qū)崿F(xiàn)
6.6 加殼與脫殼
6.6.1 手動加殼
6.6.2 編寫簡單的加殼工具
第7章 最后的旅程——簡單驅(qū)動開發(fā)及逆向
7.1 驅(qū)動版的“Hello World”
7.2 驅(qū)動下的進(jìn)程遍歷
7.2.1 配置VMware和WinDbg進(jìn)行驅(qū)動調(diào)試
7.2.2 EPROCESS和手動遍歷進(jìn)程
7.2.3 編程實(shí)現(xiàn)進(jìn)程遍歷
7.3 HOOK SSDT(系統(tǒng)服務(wù)描述表)
7.3.1 SSDT簡介
7.3.2 HOOK SSDT
7.3.3 Inline HOOK SSDT
7.4 應(yīng)用程序與驅(qū)動程序的通信
7.4.1 創(chuàng)建設(shè)備
7.4.2 應(yīng)用程序與驅(qū)動程序的通信方式
7.4.3 應(yīng)用程序與驅(qū)動程序的通信實(shí)例
7.5 C語言代碼逆向基礎(chǔ)
7.5.1 函數(shù)的識別
7.5.2 if…else…分支結(jié)構(gòu)
7.5.3 switch分支結(jié)構(gòu)
7.5.4 for循環(huán)結(jié)構(gòu)
7.5.5 do…while與while…循環(huán)結(jié)構(gòu)
參考文獻(xiàn)
章節(jié)摘錄
版權(quán)頁: 插圖: 從圖6—6中看到了反彈木馬的工作原理。通常情況下攻擊者的IP地址是變動的,那么“小白”是如何連接到“黑客”的主機(jī)的呢?一般情況下黑客要把自己的IP地址動態(tài)地保存到某個固定的IP地址下(比如保存到網(wǎng)上FTP空間中),然后木馬通過讀取該IP地址下保存的黑客的IP地址進(jìn)行連接,同樣用圖來說明,如圖6—7所示。 從圖6—7中可以看出,黑客開啟木馬客戶端后,首先會更新服務(wù)器上保存著的自己的IP地址?!靶“住睍プx取服務(wù)器中保存著的黑客的IP地址,然后“小白”去連接“黑客”的主機(jī),主動地讓黑客去控制它,這就是木馬中的“自動上線”。關(guān)于反彈端口的介紹就到這里。有了思路,通過前面學(xué)習(xí)的Wmsock的知識自己可以試著實(shí)現(xiàn)一下,這里就不做更多的介紹了。 二、木馬的配置生成與配置信息的保護(hù) 木馬寫好以后,通常會發(fā)布一個程序,在木馬程序中通過配置一些相關(guān)的內(nèi)容和參數(shù)后,會生成一個木馬的服務(wù)器端程序。為什么木馬的客戶端會生成木馬的服務(wù)端程序呢?其實(shí)木馬的客戶端和服務(wù)端本來就是兩個程序,只是通過某種方式使其成為了一個文件而已。讓木馬的服務(wù)端和客戶端成為一個文件可以有多種方法,常見的有資源法和文件附加數(shù)據(jù)法兩種。 在PE文件結(jié)構(gòu)中有一個數(shù)據(jù)目錄稱作資源,資源可以是圖片、圖標(biāo)、音頻、視頻等內(nèi)容。資源法也就是把服務(wù)端以資源的形式連接到客戶端的程序中,然后客戶端通過一些操作資源的函數(shù)將資源讀取出來并生成文件。文件附加數(shù)據(jù)法是將服務(wù)端保存到客戶端的末尾,然后通過文件操作函數(shù),直接將服務(wù)端讀取出來并生成新的文件。 反彈端口連接是要訪問某個固定的IP地址去讀取保存著黑客的動態(tài)IP地址的信息,而這個固定的IP地址是保存在木馬程序中的。也就是說,我們的客戶端在把服務(wù)端生成以后,會把一些配置信息寫入服務(wù)端程序的指定位置中,服務(wù)端程序會讀取指定位置的信息來進(jìn)行使用。配置信息的寫入與讀出必須要一致,否則就沒有意義了。 對于配置信息中往往會存在一些比較敏感的信息,比如郵箱賬號、密碼等內(nèi)容。比如,我們在分析盜QQ的木馬時會發(fā)現(xiàn)接收QQ密碼的郵箱,由于現(xiàn)在很多郵箱都需要SMTP的驗(yàn)證,因此在配置信息中也會看到郵箱的賬號及密碼信息。這樣配置信息中的這些敏感信息很容易被人獲取到,甚至接收QQ密碼郵箱的賬號和密碼也會被別人獲取到,真是“偷雞不成蝕把米”。對于此類情況,正確的做法是對配置信息進(jìn)行加密。也就是說客戶端往服務(wù)端中寫配置信息前需要加密后再寫入,而服務(wù)端在使用這些信息前需要先解密再使用。 關(guān)于配置生成客戶端與配置信息的保護(hù)上面已經(jīng)介紹得差不多了,接下來應(yīng)該把重點(diǎn)放在代碼的實(shí)現(xiàn)上了。我們的代碼是模擬實(shí)現(xiàn)上面的內(nèi)容,而不是真的去生成木馬。
編輯推薦
1、講解windows安全和網(wǎng)絡(luò)編程知識;2、講解內(nèi)核編程以及軟件逆向知識;
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載