Windows平臺shellcode高級開發(fā)
shellcode是一段可以獨(dú)立運(yùn)行于進(jìn)程中的代碼,它短小精悍功能簡單,作用卻不可小覷,常常作為exp中的payload、用于完成木馬的感染機(jī)制、用于外掛中的進(jìn)程注入等等。
以往的Windows平臺shellcode開發(fā)都是使用內(nèi)聯(lián)匯編,經(jīng)過多次調(diào)試、抽象理解、反復(fù)修改才能達(dá)到理想預(yù)期效果,其開發(fā)效率以及平臺兼容性都不是很理想。尤其對匯編掌握熟練度有很大的要求、還要對各種數(shù)據(jù)結(jié)構(gòu)熟練掌握,準(zhǔn)確計(jì)算各個數(shù)據(jù)元素的偏移。對于一些新手和非計(jì)算機(jī)特殊專業(yè)的朋友們來說shellcode開發(fā)簡直是不敢想象的。
本系列的教程就是利用windows平臺下的開發(fā)工具Visual Studio 簡單易懂、直觀明了、快速高效,快速生成x86/x64的shellcode,不牽扯一句匯編代碼,有vs的支持也可直觀的觀察調(diào)試過程對于學(xué)習(xí)其中的核心原理有很大的幫助。Shellcode的開發(fā)會像做普通開發(fā)一樣高效、快速、高質(zhì)量。
基礎(chǔ)要求:
(1) 熟悉windows平臺c/c++編程、熟悉WindowsAPI編程。
(2) 認(rèn)識windows平臺的x86/x64匯編。
目錄:
一、認(rèn)識Shellcode
(1)shellcode的定義
(2)shellcode特點(diǎn)和常見問題處理方法
(3)shellcode開發(fā)方法
二、shellcode開發(fā)環(huán)境的下載安裝,輔助工具的認(rèn)識
(1)Visual Studio 15的下載安裝
(2)Hex工具 WinHex/Hexwork
(3)調(diào)試工具OD/Immdbg
(4)Dll導(dǎo)出函數(shù)查看工具dllexp
三、shellcode工程搭建、測試以及核心代碼的認(rèn)知
(1)BIC_Bindshell核心代碼的移植、修改、
(2)修復(fù)BIC_Bindshell中的bug
(3)API函數(shù)轉(zhuǎn)換為hash值
(4)字符串的處理
四、shellcode兼容x86和x64 cpu
(1)利用vs宏來做兼容性處理
(2)完全借助vs結(jié)構(gòu)體達(dá)到兼容目的
(3)不使用用任何匯編代碼完全利用c語言
五、shellcode的提取
(1)以往的shellcode提取方法。
(2)shellcode代碼在pe文件中的排列問題。
(3)利用vs的map命令配置,生成map文件,觀察函數(shù)排列。
(4)利用vs的order命令配置,將shellcode函數(shù)緊密排列在一起。
(5)shellcode代碼起點(diǎn)定位,大小計(jì)算(參考Tombkeeper的shellcode工程)
(6)shellcode的dump
(7)VS優(yōu)化選項(xiàng)對shellcode大小的影響
六、Duilib-Shellcode工程,直觀友好易操作
(1)API函數(shù)轉(zhuǎn)Hash工具
(2)字符串轉(zhuǎn)DWORD數(shù)組工具
(3)Shelcode測試工具
(4)Shellocode生成頁面
七、多文件shellcode框架
(1)利用vs的map和order命令配置,將多個文件中的shellocde涉及到的函數(shù)緊密排列,實(shí)現(xiàn)多個文件中的shellcode代碼準(zhǔn)確提取。
八、shellcode開發(fā)中的一些小技巧
(1)函數(shù)絕對地址在內(nèi)存中的獲取
(2)浮點(diǎn)數(shù)據(jù)的計(jì)算造成的shellcode崩潰
(3)Switch case 造成shellcode崩潰
(4)大數(shù)據(jù)的除法、取模、移位造成的崩潰
(5)較大臨時變量造成的崩潰
九、shellcode調(diào)試經(jīng)驗(yàn)總結(jié)
(1)如何利用vs斷點(diǎn)快速定位shellcode中問題所在。
PS:以上課程章節(jié)暫定