pwntools for Windows
===> GO_PWNER <===
Этот пост про тулзу для пывна под винду на го. Была сделана где-то
два месяца назад на пару с клодом. Пост будет дополняться. Зависимости -
golang.org/x/sys + golang.org/x/arch.
1. Зачем она нужна
Стандартный pwntools не работает под виндой, плюс питон мне не очень нравится.
Идея простая: pwntools написан под linux, соответственно фокусируется на elf файлах, glibc, знает про ptrace и т.д. Под windows аналогов соответствующих понятий будут PE, ntdll, Windows Debug API.
Есть библиотека, import "winpwn" и CLI тулза
winpwn checksec / cyclic / rop / heap ....
2. Структура проекта
Все в целом понятно из названий файлов:
tube.go, process.go, remote.go- IO часть, Spawn/Remote/Send/Recv/Interactivepipe_windows.go- Named Pipe функционал, ServePipe/DialPipe - возвращают*Tubepe.go, sections.go- PE парсингchecksec.go, authenticode_windows.go- ASLR/NX/CFG/SafeSEH/GS/AUthenticode/.netexports,imports,imported_libs_windows- IAT/EAT/ImportedLibs с живым base адресомgadgets.go, rop.go- оболочка над rp-win.exe (лучше использовать rp-win напрямую, там есть сложности с выбором гаджетов)patch.go- патчинг PE - права секций, tls, checksumprocmem_windows,symobls_windows- PE из памяти живого процесса (ReadProcMemory + PEB walk)debugger_windows.go- Win Debug API - attach bp/registers/memoryheap*.go- NT heap, Segmented Heap парсинг структурspray.go- SprayAndFind - spray&check примитивminidump.go- парсинг.dmpфайловshellcraft, shellcode_exec_windows- PIC шеллкод (winexec через peb walk), недоделано.cyclic, packing, fiddling- DeBrujin , p64/u64, hexdump, xorencoders- доп. кодеры
3. Примеры
Находятся в папке workspace/.