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的命令類(lèi)型,常用命令,命令語(yǔ)法,調(diào)試符號(hào),符號(hào)文件的種類(lèi),符號(hào)服務(wù)器,
定制調(diào)試事件的方法和重要的調(diào)試命令,
軟件斷點(diǎn)、硬件斷點(diǎn),復(fù)雜的斷點(diǎn)命令,
x86寄存器和反匯編技巧
[試驗(yàn)二] WinDBG基礎(chǔ)(15分鐘)
|
第四部分:棧和局部緩沖區(qū)溢出
|
要點(diǎn):?;A(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)生用戶(hù)態(tài)轉(zhuǎn)儲(chǔ),以及分析用戶(hù)態(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,
三類(lèi)事件,誤報(bào)問(wèn)題和函數(shù)建模,
開(kāi)源的掃描工具
|
第x部分:數(shù)字簽名和代碼完整性基礎(chǔ)
|
數(shù)字簽名的工作原理和有關(guān)的密碼學(xué)基礎(chǔ),
非對(duì)稱(chēng)加密,
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ù)路徑,
防止按鍵被嗅探的方法
|
?
|
?