1100101001001110
TRANSCRIPT
Jaime Peñalba @NighterMan
WHO AM I?
OGT OFFENSIVE LABS & -D--I
CISSP EN FRIGORIFICOS
CERTIFIED CALDERATOR
NIVEL 101 EN BF3
WHY EXPLOITING?
INTRODUCCION
DESMITIFICARLO (NO ES DIFICIL)
BECAUSE IT'S PHUN
PROTECCIONES ACTUALES
ESTO NO ES UNA GUIA COMPLETA
WHAT DO I NEED TO KNOW TO EXPLOIT?
FUNCIONAMIENTO BASICO DE UN PROCESADOR
ORGANIZACION DE LA MEMORIA
FUNCIONAMIENTO DE LA PILA (STACK)
PROTECCIONES
HOW CPU WORKS
HOW CPU WORKS
HOW CPU WORKS
HOW CPU WORKS
MEMORY LAYOUT
.RODATA
.BSS
.DATA
[STACK]
[STACK]
[HEAP]
MEMORY LAYOUT
MEMORY LAYOUT
FUNCION DEL STACK
CONTROL DEL FLUJO DE EJECUCION
ALMACENAMIENTO DE LOCAL VARS
PASAR ARGS A FUNCIONES
(DEPENDE DE LA ARCH Y EL CALLING CONVENTION)
STACK
%EBP (BASE DEL FRAME)
PUNTERO AL EBP ANTERIOR
%ESP (CIMA DE LA PILA)
PUSH (ESP = ESP-4)
POP (ESP = ESP+4)
STACK
STACK
MOST COMMON FLAWS
OVERFLOWDYNAMIC ALLOCATION
FORMAT STRING
STACK HEAP
USE AFTER FREENULL POINTER
BASIC EXPLOIT
BASIC EXPLOIT
OVERWRITES FULL FRAME
OVERWRITES SAVED EBP
OVERWRITES SAVED RET
NEW EIP POINTS TO JMP %ESP
JUMPS TO SHELLCODE
OVERWRITES FULL FRAME
OVERWRITES SAVED EBP
OVERWRITES SAVED RET
NEW EIP POINTS TO JMP %ESP
JUMPS TO SHELLCODE
BASIC EXPLOIT
COUNTERMEASURES VS EXPLOITATION
Stack Smashing
StackCanary
StackCanary Bypass
HeapExploitation
GOTOverwrite
PositionIndependent
CodeASLR
Return ToLibrary No eXecute Bit
RELocationRead-Only
Return OrientedProgramming
(ROP)
PositionIndepenentExecutable
(PIE)
MemoryDisclosure
ASLR
No eXecute Bit
Return Oriented Programming
ROP
RET
POP EIP
LEAVE
ESP = EBP
POP EBP
ROP GADGETS
UNALIGNED VS ALIGNED
SIMPLE ROP
SIMPLE ROP
BASIC EXPLOIT
STACK PIVOTING
mov eax 0xfff
xchg esp eax
ret
CREAMOS UNA PILA EN OTRA ZONA DE MEMORIA DONDE TENGAMOS MEJOR CONTROL
SALTAMOS A LA NUEVA PILA
COMPLEX ROP
Creamos una zona de memoria con permisos de ejecucion mmap()
Copiamos nuestro shellcode a la nueva zona memcpy()
Saltamos a nuestro shellcode
COMPLEX ROP
mmap() no esta importada pero dlsym() si lo esta
Sacamos la direccion de mmap() llamando a dlsym
Necesitamos la direccion de nuestro shellcode y no tenemos gadgets (stack pivoting)
mmap() y dlsym() utilizan argumentos con null bytes (stack pivoting)
COMPLEX ROP
BASIC EXPLOIT
CUIDADO CON LA BEBIDA!!!
THE END