Exploiting Tools
Metasploit
Shellcodes
GDB
Sakinisha
Vigezo
Maelekezo
Unaweza hiari kutumia hii fork ya GEF ambayo ina maelekezo zaidi ya kuvutia.
Mbinu
Anwani sawa za GDB
Wakati wa kudebugi GDB itakuwa na anwani kidogo tofauti na zile zinazotumiwa na binary inapotekelezwa. Unaweza kufanya GDB iwe na anwani sawa kwa kufanya yafuatayo:
unset env LINES
unset env COLUMNS
set env _=<njia>
Weka njia kamili ya binaryTumia mbinu ya kudukua binary kwa kutumia njia kamili
PWD
naOLDPWD
lazima ziwe sawa unapotumia GDB na unapodukua binary
Kufuatilia nyuma ili kupata kazi zilizoitwa
Ukiwa na binary iliyolinkwa kistatiki kazi zote zitakuwa sehemu ya binary (na sio maktaba za nje). Katika kesi hii itakuwa ngumu kutambua mwendelezo ambao binary inafuata kwa mfano kuomba mwingiliano wa mtumiaji.
Unaweza kutambua mwendelezo huu kwa kutekeleza binary na gdb hadi utakapoombwa mwingiliano. Kisha, isimamishe kwa kubonyeza CTRL+C na tumia amri ya bt
(backtrace) kuona kazi zilizoitwa:
Server ya GDB
gdbserver --multi 0.0.0.0:23947
(katika IDA unahitaji kujaza njia kamili ya faili ya kutekelezwa kwenye mashine ya Linux na kwenye mashine ya Windows)
Ghidra
Pata offset ya stack
Ghidra ni muhimu sana kwa kupata offset kwa kuzidi kwa buffer kutokana na habari kuhusu nafasi ya variables za ndani.
Kwa mfano, katika mfano hapa chini, kuzidi kwa buffer katika local_bc
inaonyesha kwamba unahitaji offset ya 0xbc
. Zaidi ya hayo, ikiwa local_10
ni kuki ya canary inaonyesha kwamba kuiandika upya kutoka local_bc
kuna offset ya 0xac
.
Kumbuka kwamba 0x08 ya kwanza ambapo RIP inahifadhiwa inahusiana na RBP.
qtool
Pata kila opcode inayotekelezwa katika programu.
GCC
gcc -fno-stack-protector -D_FORTIFY_SOURCE=0 -z norelro -z execstack 1.2.c -o 1.2 --> Kupachika bila ulinzi -o --> Matokeo -g --> Hifadhi kanuni (GDB itaweza kuiona) echo 0 > /proc/sys/kernel/randomize_va_space --> Kulegeza ASLR katika linux
Kupachika shellcode: nasm -f elf assembly.asm --> rudisha ".o" ld assembly.o -o shellcodeout --> Inatekelezeka
Objdump
-d --> Disassemble sehemu za utekelezaji (angalia opcodes ya shellcode iliyopachikwa, pata ROP Gadgets, pata anwani ya kazi...) -Mintel --> Sintaksia ya Intel -t --> Jedwali la alama -D --> Disassemble zote (anwani ya kipengee tuli) -s -j .dtors --> sehemu ya dtors -s -j .got --> sehemu ya got -D -s -j .plt --> sehemu ya plt iliyopachikwa -TR --> Uhamishaji ojdump -t --dynamic-relo ./exec | grep puts --> Anwani ya "puts" ya kuhaririwa katika GOT objdump -D ./exec | grep "VAR_NAME" --> Anwani au kipengee tuli (hizi hifadhiwa katika sehemu ya DATA).
Core dumps
Tekeleza
ulimit -c unlimited
kabla ya kuanza programu yanguTekeleza
sudo sysctl -w kernel.core_pattern=/tmp/core-%e.%p.%h.%t
sudo gdb --core=<path/core> --quiet
Zaidi
ldd executable | grep libc.so.6 --> Anwani (ikiwa na ASLR, basi hii hubadilika kila wakati) for i in `seq 0 20`; do ldd <Ejecutable> | grep libc; done --> Mzunguko wa kuona ikiwa anwani inabadilika sana readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system --> Kielezo cha "system" strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh --> Kielezo cha "/bin/sh"
strace executable --> Kazi zilizoitwa na utekelezaji rabin2 -i ejecutable --> Anwani ya kila kazi
Inmunity debugger
IDA
Kudebugi kwa mbali kwenye linux
Ndani ya folda ya IDA unaweza kupata binaries ambazo zinaweza kutumika kudebugi binary kwenye linux. Ili kufanya hivyo hamisha binary linux_server
au linux_server64
ndani ya server ya linux na iendeshe ndani ya folda inayohifadhi binary hiyo:
Kisha, sanidi kielekezi cha kufuatilia: Kielekezi (mbali ya linux) --> Chaguo la Mchakato...:
Last updated