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