Windows平臺shellcode高級開發(fā)
shellcode是一段可以獨立運行于進(jìn)程中的代碼,,它短小精悍功能簡單,作用卻不可小覷,,常常作為exp中的payload,、用于完成木馬的感染機制、用于外掛中的進(jìn)程注入等等,。
以往的Windows平臺shellcode開發(fā)都是使用內(nèi)聯(lián)匯編,,經(jīng)過多次調(diào)試、抽象理解,、反復(fù)修改才能達(dá)到理想預(yù)期效果,,其開發(fā)效率以及平臺兼容性都不是很理想。尤其對匯編掌握熟練度有很大的要求,、還要對各種數(shù)據(jù)結(jié)構(gòu)熟練掌握,,準(zhǔn)確計算各個數(shù)據(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特點和常見問題處理方法
(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代碼起點定位,,大小計算(參考Tombkeeper的shellcode工程)
(6)shellcode的dump
(7)VS優(yōu)化選項對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ù)緊密排列,,實現(xiàn)多個文件中的shellcode代碼準(zhǔn)確提取,。
八、shellcode開發(fā)中的一些小技巧
(1)函數(shù)絕對地址在內(nèi)存中的獲取
(2)浮點數(shù)據(jù)的計算造成的shellcode崩潰
(3)Switch case 造成shellcode崩潰
(4)大數(shù)據(jù)的除法,、取模,、移位造成的崩潰
(5)較大臨時變量造成的崩潰
九、shellcode調(diào)試經(jīng)驗總結(jié)
(1)如何利用vs斷點快速定位shellcode中問題所在。
PS:以上課程章節(jié)暫定