In-Security for fun and pr0fit!

977 views

Published on

Disertación que realize en la Expo de Software Libre 2009, en la Universidad Técnologica Nacional. El evento estuvo organizado por LuGMEN.

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
977
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

In-Security for fun and pr0fit!

  1. 1. In-Security for fun and profit Expo 2009 – Mendoza, Argentina
  2. 2. IMPORTANTE Todo lo aquí expuesto se realiza con fines  educativos. El autor no se responsabiliza por el  uso que se le de a la información y material que  aquí es expuesto. Tenga presente que mucho de los actos aquí  presentados se encuentran penados por la ley.
  3. 3. $: WHOAMI */ * * My.Name  : Facundo M. de la Cruz → _tty0  _tty0 * My.E­Mail: fmdlc <at> debian­ar.org / tty0 <at> codigounix.com.ar * My.Blog  : http://www.codigounix.com.ar/ * * 0x41) Consultor en IT   * 0x42) Coordinador de SanLuiX * 0x43) Estudie gastronómia y fui ayudante de cocina * 0x44) Amigo de OpenBSDeros * 0x45) Fucking Fuzzero (by dererk) * 0x46) Todos saben que ZZ es: * Zerial Zorra. * */
  4. 4. Pasen y dejen sus sombreros en la puerta, no impora el color que sean...
  5. 5. Disassemble main
  6. 6. Seguridad La seguridad informática es el conjunto de medidas  utilizados para proteger a los sistemas y aquello que  lo soporta. GNU/Linux y *BSD proporciona un variado arsenal de utilidades y  GNU/Linux *BSD mecanismos para asegurar la integridad y la seguridad de su sistema  y red. Para así lograr:  0x41> Integridad 0x41 0x42> Confidencialidad 0x42 0x43> Disponibilidad 0x43 0x44> No repudio (irrefutabilidad)  0x44 AirCrack, AirDump, Clamav, Fuzz, Ettercap, Etherape, Metasploit, MTR, Nemesis, Nessus, Nmap, Nikto, SQLMap, Tripwire, TCPDump, Wireshark...
  7. 7. ¿De que nos protegemos? Los problemas de seguridad pueden dividirse en    diferentes categorías: categorías 0x41> Ataques de denegación de servicio (DoS/DDoS) 0x41 0x42> Comprometer cuentas de usuarios 0x42 0x43> Comprometer root a través de servidores accesibles 0x43 0x44> Comprometer root desde cuentas de usuario 0x44 0x45> Creación de puertas traseras (“Backdoors”) 0x45 0x46> Obtener información sensible 0x46
  8. 8. Etapas de un ataque Descubrimiento  Exploración  Intrusión
  9. 9. Smashing the stack
  10. 10. BUFFER OVERFLOW Un BOF se produce cuando los datos que se escriben  BOF en el buffer corrompen a los datos en direcciones de  memoria adyacentes debido a la falta de validación  de los datos de entrada. 0 0 0 0 0 0 6 6 6 Buffer A - Char (6 Bytes) Buffer B - Char (3 Bytes) */Example 1.c */ #include <stdio.h> int main() { char A[6] = ''; char B[3] = ''; .... ....
  11. 11. BUFFER OVERFLOW #: ./buffer AAAAAAAA 0x41> gets() #: ./buffer `python ­c 'print “x41”*8'` 0x42> strcpy() #: ./buffer `perl ­e '{print “x41”x8}'` 0x43> strcat() 0x44> vsprintf() buffer – Segmentation Fault 0x45> scanf() 0x46> getc() 0x47> fgetc() 0x48> getchar() ¿Pero que sucede? A A A A A A A A 6 Buffer A - Char (6 Bytes) Buffer B – Char (3 Bytes)
  12. 12. La Memoria A grandes rasgos podemos dividir la memoria en tres  grandes regiones: 0x40) Text → (Rutinas del programa) 0x41) Data / BBS → (Variables no inicialiazas / Constantes) 0x42) Stack → (Variables dinámicas) - Direcciones altas Text Data / BBS Stack - Direcciones bajas
  13. 13. El stack Bloque contiguo de memoria que contiene datos Área de la memoria donde se agrega información y se  libera: funcionalidad dinámica. ACCESO SOLO A TOS (Top of the Stack) ACCESO SOLO A TOS LIFO → Last in, first out LIFO Las dimensiones de la pila son ajustadas por el kernel  dinámicamente en tiempo de ejecución. 0xFFF ← dirección fija PUSH ++ POP ­­ 0x000 ← lamada al puntero SP  ←
  14. 14. Registros Son estructuras internas del CPU utilizadas para  comunicar de forma directa la UAL con la memoria.  Pueden contener de a una palabra por vez (1 WORD). 0x41> Registros Generales  (EAX, EBX, ECX, EDX) → 32 Bits  0x42> Registros de Segmento  (CS, SS, DS)  → 16 Bits 0x43> Registros de Offset  (ESP, EIP, EDI, EBP) → 32 Bits    0x44> Otros Registros  (MMX, 3DNOW, SSE, etc..) Ejemplo registro EBX 31 16 0 BH BL BX EBX
  15. 15. Registros REGISTROS GENERALES: → EAX: Acumulador (MUL/DIV)  → EBX: Registro de proposito general → ECX: Contador de búcles y operaciones en cadena → EDX: Puntero de E/S – Guarda datos op. Aritméticas Cuando el código se bifurca (JMP) aquí se guarda antiguo EIP. REGISTROS DE OFFSET: → EIP: Proxima intrucción a ser ejecutada  → (Program Counter) → EBP: Inició local para una función → (trabaja con FP) → ESP: La cima de la pila  → ESI: Contiene el offset de los datos de origen → EDI: Contiene el offset de los datos de destino REGISTROS DE SEGMENTOS: →  CS: Segmento en ejecución  → Completa en CS:EIP →  SS: Registro de stack  → Completo en SS:ESP →  DS: Registro de datos
  16. 16. Epilog y Prolog Existe un puntero llamado FP (Frame Pointer), este apunta a  la localización dentro del stack de las variables locales y  parametros de una función (con EBP). Las variables locales  podrían ser situadas dando sus offsets desde SP.  Los parámetros actuales tinen offsets positivos, y las  variables locales offsets negativos de SP. Al llamar a una función: 1.Guardar valor FP, para ser restaurado al fin. 2.Copiar SP dentro de FP, creando nuevo FP. 3.Espacio en el stack para reserver mem. para las variables locales.  PROCEDURE LOG: PROLOG PROCEDURE EPILOG push $ebp leave mov  $esp $ebp ret push {valor}, $esp
  17. 17. Formas básicas NOP + SHELLCODE + NOP + EIP Buffer A Buffer B FP RET a b c void function(int a, int b, int c) {    char bufferA[5];    char bufferB[10]; } void main() {   function(1,2,3); }
  18. 18. Rootkits Attacking SMM Memory via Intel CPU Cache Poisoning
  19. 19. Definición Es una herramienta, o un grupo de ellas que tiene como    finalidad esconderse a sí misma y esconder otros  programas, procesos, archivos, directorios, claves de  registro, y puertos.  Tipos de rootkits: 0x41> Integrados al núcleo → Kernel, módulos, librerías 0x41 0x42> A nivel aplicación  → Binarios, librerías 0x42 0x43> Hardware  0x43 → OMFG!! WTF??
  20. 20. Rings Los procesadores modernos utilizan el sistema de rings   Los procesadores modernos utilizan el sistema de rings  para especificar las distintas capas de seguridad, que  tienen los distintos permisos de acceso a los recursos. Ring  3> Usuario, llamadas al sistema: execv(“/bin/sh”, NULL) Ring  3 Ring  0> Sistema operativo      → Supervisor  Ring  0 Ring ­1> Virtualización         → Hypervisor Ring ­1 Ring ­2> System Managament Mode → SMM Ring ­2
  21. 21. Modos de Intel x86 Modo real  Es un modo de 16 bits, utilizado durante el booteo. No conoce de protección de memoria ni de multitareas. Modo protegido Trabaja a 32 Bits, provee un modelo de protección para el OS. Multitareas, Soporte Memoria Virtual, Protección de memoria,  Conmutación de tareas. Modo virtual 8086 Eficiencia corriendo programas para arquitecturas 8086 y 8088. Long Mode Modo 64 bits. System Managament Mode Funciones de ahorro de energía.
  22. 22. Rings El SMM es utilizado para ejecutar tareas de manejo de   El SMM es utilizado para ejecutar tareas de manejo de  energia. Luego de entrar en el SMM varias partes del sistema  pueden ser apagadas o deshabilitadas, guardando el  contexto del procesador en algún lugar para ser  restaurado luego. El SMM opera independiente al sistema operativo, y se  supone que esto deberia funcionar tanto para: GNU/Linux, FreeBSD, OpenBSD, HP­UX, GNU/Hurd, Solaris, OpenSolaris, AIX, Windows, BeOS, etc.
  23. 23. System management mode MODO PROTEGIDO SMRAM 0x1FFFF bytes desde SMBASE.   LibPCI SMBASE es por default 0x30000 SMI HANDLER RSM Leera el contexto grabado y retomara a situación previa del procesador Codigo arbitrario Para acceder a la memoria podemos mapear los rangos del dispositivo /dev/mem El hub controlador de memoria  tiene un control de registros  SMRAM llamado SMRAM Control  Register: SYSTEM MANAGEMENT MODE → Bit D_OPEN: Todo acceso a  Paginamiento deshabilitado. Se ingresa en un esta area de memoria empezando  modo de 16 bits, pero toda la memoria física de SMBASE es redirigido a  puede ser redireccionada, sin restrinciones de SMRAM. E/S y con igual privilegios que en RING 0. Supuestamente el acceso a SMRAM esta Si no esta seteado todo acceso  reservado para la BIOS. a SMRAM es forwardeado a la  placa de video.
  24. 24. Man in the middle
  25. 25. Direccionamiento lógico Address resolution protocol (ARP) es un   Address protocolo de nivel de red que se utiliza para asociar una dirección MAC a una dirección IP. ARP_REQUEST ARP_REPLY
  26. 26. Ettercap ¿Qué es Ettercap?   0x41)Una herramienta muy versátil de manipulación de redes switcheadas. 0x42)Hace uso de libpcap y libnet (como Wireshark) 0x43)Captura el tramas que circula en nustra red  0x44)Interfaz Curses, GTK, Consola 0x45)Diversos plugins 0x46)Inteceptor de contraseñas 0x47)Soporta múltiples protocolos de red 0x48)Intercepta conexiones SSH1, HTTPS (SSL) 0x49)Puede realizar ataques MITM!!! → OMG!
  27. 27. Ettercap ARP Poisoning para redes switcheadas   Principal función de Ettercap. Envenenar la tabla significa enviar paquetes espurios,  fingiendo que se es la IP destinataria 0x41)Inyectar caracteres  0x42)Filtrar paquetes y modificar paquetes 0x43)Recolección de contraseñas 0x44)Matanza de conexiones
  28. 28. Ettercap Filtros en Ettercap   0x41)Permiten cambiar el contenido de los paquetes 0x42)Algo similares al lenguaje C 0x43)Hay que compilar con etterfilter antes de usar. 0x44)Son una forma saludable de divertirse
  29. 29. Algunos links útiles 0x41)BlackHack 0x41) → http://www.blackhack.org/ 0x42)CodigoUnix 0x42) →  http://www.codigounix.com.ar/  0x43)FreeBSD 0x43) → http://www.freebsd.org/es/ 0x44)OpenBSDeros 0x44) → http://www.openbsderos.org/ 0x45)Milw0rm 0x45) → http://www.milw0rm.org/  0x46)Packet Storn 0x46) →  http://www.packetstorn.org/
  30. 30. Agradecimientos Gracias a: → runlvl → x41 → dererk → hdc → Zerial → juantelez → ingnucious → Cynthia (Traducciones / Psicologia) → LugMEN
  31. 31. Game Over "...Ahora este es nuestro mundo, el mundo del electrón y el interruptor, la belleza del baudio..." - The Menthor 08/01/86

×