C++安全編程與滲透測(cè)試培訓(xùn)課程
?
| 
 ? 
 | 
| 
 培訓(xùn)目標(biāo)  
 | 
| 
 ·??了解C++程序安全概覽  
·??了解滲透測(cè)試基礎(chǔ) 
·??學(xué)習(xí)WinDBG精要 
·??了解棧和局部緩沖區(qū)溢出 
·??解析異常處理和應(yīng)用程序崩潰 
·??多線程同步和死鎖 
·??堆和堆腐敗 
·??安全開(kāi)發(fā)和威脅建模  
·??代碼掃描 
·??數(shù)字簽名和代碼完整性基礎(chǔ)  
·??鉤子和外掛 
 | 
| 
 培訓(xùn)對(duì)象:使用C++語(yǔ)言開(kāi)發(fā)Windows應(yīng)用軟件的軟件工程師,或者相關(guān)項(xiàng)目的測(cè)試工程師、項(xiàng)目帶頭人和技術(shù)經(jīng)理 
 | 
| 
 學(xué)員基礎(chǔ):有一定C++開(kāi)發(fā)和調(diào)試經(jīng)驗(yàn)。 
 | 
| 
 培訓(xùn)內(nèi)容: 
 | 
| 
 主題 
 | 
 課程安排 
 | 
 
| 
 第一部分:C++程序安全概覽  
 | 
 要點(diǎn):從C++程序角度的安全定義,Top 25 Errors,CVE,資源 
 | 
 
| 
 第二部分:滲透測(cè)試基礎(chǔ) 
 | 
 要點(diǎn):Pentest,背景,測(cè)試過(guò)程,重要資源, 
Kali Linux, Metasploitable 2, 
BackBox, 
環(huán)境搭建, 
滲透測(cè)試的五大步驟, 
Metasploit Framework詳細(xì)解析, 
主機(jī)入侵完整過(guò)程演示(利用IRC漏洞遠(yuǎn)程登錄被攻克目標(biāo)機(jī)), 
Armitage 
[試驗(yàn)一]使用MSF利用IRC的溢出漏洞入侵主機(jī) 
 | 
 
| 
 第三部分:WinDBG精要 
 | 
 要點(diǎn):WinDBG的命令類型,常用命令,命令語(yǔ)法,調(diào)試符號(hào),符號(hào)文件的種類,符號(hào)服務(wù)器, 
定制調(diào)試事件的方法和重要的調(diào)試命令, 
軟件斷點(diǎn)、硬件斷點(diǎn),復(fù)雜的斷點(diǎn)命令, 
x86寄存器和反匯編技巧 
[試驗(yàn)二] WinDBG基礎(chǔ)(15分鐘) 
 | 
 
| 
 第四部分:棧和局部緩沖區(qū)溢出 
 | 
 要點(diǎn):棧基礎(chǔ),棧幀,棧幀布局, 
棧指針被破壞(Stack pointer corruption.), 
局部緩沖區(qū)越界(Overruns), 
棧被破壞(Stack corruption.), 
緩沖區(qū)溢出攻擊(BOA), 
實(shí)例演示,SQL Server案例,Win7案例,IRCDaemon案例,GS機(jī)制(基于Cookie的溢出檢測(cè)機(jī)制),編譯器的保護(hù)措施  
[試驗(yàn)三] 理解緩沖區(qū)溢出攻擊(30分鐘) 
 | 
 
| 
 第五部分:異常處理和應(yīng)用程序崩潰 
 | 
 要點(diǎn):結(jié)構(gòu)化異常處理(SEH),C++異常處理, 
Windows的異常奮發(fā)機(jī)制, 
程序崩潰的完整過(guò)程和調(diào)試方法, 
轉(zhuǎn)儲(chǔ)的基本知識(shí), 
如何使用ADPLUS自動(dòng)產(chǎn)生用戶態(tài)轉(zhuǎn)儲(chǔ),以及分析用戶態(tài)轉(zhuǎn)儲(chǔ)的常用命令和技巧 
[試驗(yàn)四] JIT調(diào)試和異常事件處理(30分鐘) 
 | 
 
| 
 第六部分:多線程同步和死鎖  
 | 
 要點(diǎn):并發(fā)和并行,多線程, 
C++程序中創(chuàng)建線程的多種方法, 
在VC和WinDBG中觀察和操縱線程的方法, 
使用WinDBG來(lái)調(diào)試多線程程序和同時(shí)調(diào)試多個(gè)進(jìn)程,包括控制線程執(zhí)行狀態(tài),臨界區(qū),觀察同步對(duì)象、分析死鎖的方法, 
案例演示,CPU的同步機(jī)制,互鎖系列內(nèi)建函數(shù)(intrinsic) 
 | 
 
| 
 第七部分:堆和堆腐敗 
 | 
 要點(diǎn):C++程序中動(dòng)態(tài)分配內(nèi)存的多種方法(malloc, new, HeapAlloc), 
介紹調(diào)試內(nèi)存有關(guān)的典型問(wèn)題的方法和技巧, 
包括使用CRT堆和Win32堆的調(diào)試支持, 
分析內(nèi)存泄漏、訪問(wèn)違例和棧溢出等, 
在探討實(shí)踐經(jīng)驗(yàn)的同時(shí)會(huì)穿插重要的理論知識(shí), 
包括Win32對(duì)和CRT堆的結(jié)構(gòu)、內(nèi)存管理常識(shí)、堆布局等,真實(shí)案例分析 
[試驗(yàn)五] 使用UMDH追蹤堆的分配細(xì)節(jié)(30分鐘) 
 | 
 
| 
 第八部分:安全開(kāi)發(fā)和威脅建模? 
 | 
 要點(diǎn):SDL(Security Development Lifecycle),SD3C,SDL定義的主要過(guò)程和最佳安全實(shí)踐, 
Software Assurance Maturity Model (SAMM),TOP 25編程錯(cuò)誤解析, 
常用建模方法概覽(Trike 、OCTAVE 和P.A.S.T.A), 
威脅建模,Microsoft Threat Modeling過(guò)程,STRIDE,風(fēng)險(xiǎn)評(píng)級(jí), 
微軟Threat Modeling Tool 2016用法演示 
 | 
 
| 
 第九部分:代碼掃描 
 | 
 要點(diǎn):源代碼掃描和黑盒掃描, 
靜態(tài)掃描的優(yōu)勢(shì), 
Coverity介紹, 
工作過(guò)程,AST樹(shù),Checkers, 
三類事件,誤報(bào)問(wèn)題和函數(shù)建模, 
開(kāi)源的掃描工具 
 | 
 
| 
 第x部分:數(shù)字簽名和代碼完整性基礎(chǔ)  
 | 
 數(shù)字簽名的工作原理和有關(guān)的密碼學(xué)基礎(chǔ), 
非對(duì)稱加密, 
Key的保護(hù)和管理, 
Windows系統(tǒng)檢查代碼完整性的過(guò)程和有關(guān)的系統(tǒng)部件,對(duì)文件進(jìn)行數(shù)字簽名的工具和方法 
 | 
 
| 
 第x部分:鉤子和外掛  
 | 
 介紹鉤子(Hook)技術(shù)的背景和簡(jiǎn)要?dú)v史, 
分析Windows平臺(tái)上的常用鉤子技術(shù)及其工作原理, 
包括DLL注入、IAT掛鉤、消息掛鉤等, 
然后針對(duì)保護(hù)鍵盤(pán)輸入這一目標(biāo), 
討論鍵盤(pán)輸入的數(shù)據(jù)路徑, 
防止按鍵被嗅探的方法 
 | 
 
 
 
? 
 | 
?