SlideShare uma empresa Scribd logo
1 de 36
Evasión de técnicas forense
                    (Shellcode ELF loader)

Albert Puigsech Galicia ripe@7a69ezine.org
Rubén Jiménez García pluf@7a69ezine.org



                                             FIST BCN 2005
Introducción
Introducción

  Sistema de explotación común:

    Localización de maquina vulnerable

    Generación de programa exploit

    Utilización de shellcode especifica

    Se inicia el proceso de post-explotación
Introducción

  La shellcode es nuestra amiga:

      Codigos pequeños y faciles de programar
      Se pueden adaptar a cualquier exploit
      Pueden incorporar tecnicas de antidetección
      Generalmente se ejecuta una shell via execve()


  Pero nos puede trainicionar:

    Imposibilidad de utilizar execve()!!
Introducción

  Y si disponemos de execve()?

    Ejecución de comandos y aplicaciones locales
    Descarga/compilación de programas
    Estamos muertos..


  Que ha ocurrido?

    for(;;) printf(“evidencias!!”);
Introducción

  Para poder solucionar estos problemas tendremos
   que optar por un sistema que nos facilite la
   ejecución de programas y al mismo tiempo genere
   el menor numero posible de evidencias:


            Userland execve()
Userland execve
Userland execve

  El procedimiento que permite la ejecución local de
   un programa sin utilizar la llamada al sistema
   ‘execve’ recibe el nombre de ‘userland execve’.

  Mecanismo que simula de forma correcta y
   ordenada las tareas que realiza el núcleo:

    Carga de las secciones necesarias del binario
    Inicialización del contexto de la pila.
    Salto al punto de entrada.
Userland execve

  El uso de ‘userland execve’ nos soluciona los
   problemas planteados anteriormente.

    No es necesario el uso de la syscall, por lo que no es
     preocupante que esté denegada.

    La implementación es nuestra por lo que es posible
     cambiar el origen del ejecutable y obtenerlo de la red, en
     lugar del disco duro. Así podemos ejecutar una shell pese
     a que no exista en el disco.

    La ejecución remota nos permitirá ejecutar herramientas
     que no estan en el host atacado sin alterar el disco.
Userland execve

  Primera versión publica de userland execve:
   grugq

  Problemas:

    poco portable
    exceso de código inútil
    orientado a la ejecución local

  Solución:

    Shellcode ELF Loader
Shellcode ELF loader
Shellcode ELF loader

  La shellcode ELF loader es una nueva y sofisticada
   técnica post-explotación basada en el ‘userland
   execve’.

    Diseñada para ser utilizada en exploits

    Reduce la generación de evidencias

    Posibilita la ejecución en entornos ostiles

    Es fácil de programar y utilizar
Diseño e implementación

  SELF esta formado por tres elementos:

    Lxobject (1)

    Builder (2)

    Jumper (3)


  Cada uno realiza una tarea especifica dentro del
   proceso de post-explotación
Lxobject (1)

  Es un objeto ejecutable y auto-cargable utilizado
   para sustituir por completo un proceso original por
   otro.

    Es la parte más compleja e importante de todo el
     sistema.

    Se construye por el ‘builder’ en el host del atacante.
Lxobject (1)

  Un lxobject esta constituido por tres partes:

     Binario ELF estático

     Contexto inicial de la pila

     Shellcode cargadora
Binario ELF estático (1.a)

   Es el binario que queremos cargar y ejecutar en la
    maquina remota.

   El sistema sólo funciona con binarios estáticos, se
    ha optado por ello por varios motivos.

      Facilita el diseño y la implementación

      No nos preocupamos por las librerías

      Reduce la complejidad de SELF

      El binario lo genera el atacante. (uso de armerías)
Contexto de pila (1.b)

  Todo proceso dispone de una zona de memoria
   llamada pila o stack usada para varios cometidos.

    Variables locales.

    Control del flujo de ejecución.

    Copias temporales de registros.

    Parámetros pasados a la aplicación por el proceso padre.

    Variables de entorno.
Contexto de pila (1.b)

  La pila debe tener un contexto inicial para que el
   proceso funcione correctamente.

  Para facilitar la portabilidad y estabilidad se ha
   optado por pre-construir el contexto de la pila en
   el host atacante e incluirlo en el lxobject como de
   un program header más se tratara.

  No es necesario incluir los vectores auxiliares
   utilizados para tratar con binarios dinámicos.
Shellcode cargadora (1.c)

  Se trata de la parte más importante y delicada del
   lxobject.

  Es una shellcode que simula el userland execve()

    Código pequeño y fácil de entender

    Se puede adaptar a cada sistema/plataforma

    No construye el contexto de pila
Builder (2)

  Es la aplicación encargada de ensamblar las
   piezas que construyen el lxobject.
Builder (2)

   Su funcionamiento es sencillo:

    bash ~$ ./builder <host> <port> <exec> <argv> <envp>


   host, port: dirección y puerto de la máquina atacada donde el jumper
   está ejecutándose y esperando.

   exec: Fichero binario ELF que queremos ejecutar

   argv, envp: Argumentos y variables de entorno pasadas al programa.
Builder (2)

  Elemplo de ejecución:


  bash ~$ ./builder 172.26.0.1 2002 nmap-static “-P0;-p;23;172.26.0.30” “PATH=/bin”
Proceso de construcción

  Se crea una zona de memoria lo suficientemente
   grande para almacenar el fichero ejecutable
   estátido y se copia el binario.
    elf_new = (void*)malloc(elf_new_size);
  Se limpian aquellos campos referentes a las
   secciones pues no seran usadas por nuestro
   binario.

   ehdr_new->e_shentsize = 0;
   ehdr_new->e_shoff =0;
   ehdr_new->e_shnum = 0;
   ehdr_new->e_shstrndx = 0;
Proceso de construcción

  Se introduce el shellcode ELF loader y se guarda
   su offset en el campo e_ident de la cabecera del
   ejecutable.
  memcpy(elf_new + elf_new_size - PG_SIZE + LOADER_CODESZ, loader,
  LOADER_CODESZ);
  ldr_ptr = (unsigned long *)&ehdr_new->e_ident[9];
  *ldr_ptr = elf_new_size - PG_SIZE + LOADER_CODESZ;


  El lxobject está perfectamente ensamblado y listo
   para ser enviado.
 connect(sfd, (struct sockaddr *)&srv, sizeof(struct sockaddr));
 write(sfd, elf_new, elf_new_size);
Jumper (3)

  El jumper es la shellcode que deberá ser usada
   por el exploit en el proceso de explotación.

  Su misión es activar el lxobject y para ello debe
   realizar, por lo menos, las siguientes acciones:

     Obtener el lxobject.

     Almacenarlo en la memoria.

     Activarlo saltando al loader.
Obtener el lxobject

  El lxobjet puede obtenerse de muchas fuentes.

    Disco duro

    Socket de red

    ...


  Es recomendable usar un socket de red para
   reducir el riesgo de dejar evidencias.
Almacenarlo en memoria

  Es necesario almacenar el lxobject en la memoria
   de proceso. Se plantean entonces tres
   posibilidades.

    Almacenarlo en la heap

    Almacenarlo en la pila del proceso

    Almacenarlo en una nueva zona de memoria (mmap).
Almacenarlo en la heap

  Para almacenar el lxobject en la heap es necesario
   localizar la vaddr del proceso usando brk().

  Ventajas:

    Es sencillo de implementar.No suele haber restricciones
     de copia de datos.

  Desventajas:

    Se puede desmapear el propio lxobject durante el
     proceso de carga
Almacenarlo en el stack

  Si se conoce la situación de la pila es posible
   almacenar ahí el lxobject.

  Ventajas:

     Es sencillo de implementar.
     No suele haber restricciones de copia de datos.

  Desventajas:

     Se puede desmapear el propio lxobject durante el
      proceso de carga.
     Pueden existir restricciones de ejecución en la pila, es
      bastante común en sistemas hostiles.
Almacenar en una nueva
zona
  Es posible mapear (usando la llamada al sistema
   mmap) una nueva zona de memoria destinada
   almacenar el lxobject.

  Ventajas:

    No existen restricciones para la copia o ejecución de
     datos.

    No existe peligro de que el lxobject se desmapee durante
     el proceso de carga.
Demostración
    Simple stack overflow + SELF = envio y ejecución de nmap
Demostración
    Simple stack overflow + SELF = envio y ejecución de elfsh
Referencias

 [+] The Design and Implementation of ul_exec - the grugq
 http://securityfocus.com/archive/1/348638/2003-12-29/2004-01-04/0

 [+] Remote Exec - the grugq
 http://www.phrack.org/show.php?p=62&a=8

 [+] Advanced antiforensics - Ripe & Pluf
 http://www.phrack.org/show.php?p=63&a=11

 [+] Forensic Shell. FSH – Parki

 [+] API Proxy – ilo
 http://www.reversing.org
Alguna preguntita?



                ?
Muchas gracias




 A los organizadores de FIST BARCELONA
                  
FIN


      http://www.7a69ezine.org



       Albert Puigsech Galicia
       Rubén Jiménez García

Mais conteúdo relacionado

Mais procurados

40 configuración del kernel y dispositivos
40  configuración del kernel y dispositivos40  configuración del kernel y dispositivos
40 configuración del kernel y dispositivos
Aprende Viendo
 
41 parámetros y módulos generales
41  parámetros y módulos generales41  parámetros y módulos generales
41 parámetros y módulos generales
Aprende Viendo
 
Jesús Olmos - ChromeHack, a html5/chrome webhack tool [Rooted CON 2013]
Jesús Olmos - ChromeHack, a html5/chrome webhack tool [Rooted CON 2013]Jesús Olmos - ChromeHack, a html5/chrome webhack tool [Rooted CON 2013]
Jesús Olmos - ChromeHack, a html5/chrome webhack tool [Rooted CON 2013]
RootedCON
 

Mais procurados (20)

Ethical hacking 03
Ethical hacking 03Ethical hacking 03
Ethical hacking 03
 
Ethical hacking 04a
Ethical hacking 04aEthical hacking 04a
Ethical hacking 04a
 
Armitage pruebas
Armitage pruebasArmitage pruebas
Armitage pruebas
 
Pablo sanemeteriovalencia
Pablo sanemeteriovalenciaPablo sanemeteriovalencia
Pablo sanemeteriovalencia
 
Ethical hacking 00a
Ethical hacking 00aEthical hacking 00a
Ethical hacking 00a
 
Cuckoo sandbox
Cuckoo sandboxCuckoo sandbox
Cuckoo sandbox
 
Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016
Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016
Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016
 
40 configuración del kernel y dispositivos
40  configuración del kernel y dispositivos40  configuración del kernel y dispositivos
40 configuración del kernel y dispositivos
 
Metasploit
MetasploitMetasploit
Metasploit
 
Gestión Remota de Equipos con Python
Gestión Remota de Equipos con PythonGestión Remota de Equipos con Python
Gestión Remota de Equipos con Python
 
41 parámetros y módulos generales
41  parámetros y módulos generales41  parámetros y módulos generales
41 parámetros y módulos generales
 
Ataque win xp
Ataque win xpAtaque win xp
Ataque win xp
 
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]
 
Zenmap
ZenmapZenmap
Zenmap
 
Linux Kernel - System Calls - Modules - Drivers
Linux Kernel - System Calls - Modules - DriversLinux Kernel - System Calls - Modules - Drivers
Linux Kernel - System Calls - Modules - Drivers
 
Jesús Olmos - ChromeHack, a html5/chrome webhack tool [Rooted CON 2013]
Jesús Olmos - ChromeHack, a html5/chrome webhack tool [Rooted CON 2013]Jesús Olmos - ChromeHack, a html5/chrome webhack tool [Rooted CON 2013]
Jesús Olmos - ChromeHack, a html5/chrome webhack tool [Rooted CON 2013]
 
Ud3 inocente alcaide
Ud3 inocente alcaideUd3 inocente alcaide
Ud3 inocente alcaide
 
Present3
Present3Present3
Present3
 
Explotar Eternalblue & Doublepulsar para obener una shell de Empire/Meterpret...
Explotar Eternalblue & Doublepulsar para obener una shell de Empire/Meterpret...Explotar Eternalblue & Doublepulsar para obener una shell de Empire/Meterpret...
Explotar Eternalblue & Doublepulsar para obener una shell de Empire/Meterpret...
 
Lenguaje de programación Java
Lenguaje de programación JavaLenguaje de programación Java
Lenguaje de programación Java
 

Destaque

Curso de Cómputo Forense 2013
Curso de Cómputo Forense 2013Curso de Cómputo Forense 2013
Curso de Cómputo Forense 2013
NPROS Perú
 
LIOS: a tool for IOS Forensic
LIOS: a tool for IOS ForensicLIOS: a tool for IOS Forensic
LIOS: a tool for IOS Forensic
navajanegra
 
La prueba pericial . victor de santos
La prueba pericial . victor de santosLa prueba pericial . victor de santos
La prueba pericial . victor de santos
san_van
 
El Cibercrimen y delitos informaticos
El Cibercrimen y delitos informaticosEl Cibercrimen y delitos informaticos
El Cibercrimen y delitos informaticos
Jleon Consultores
 
Cpmx3 computo forense reloaded
Cpmx3   computo forense reloadedCpmx3   computo forense reloaded
Cpmx3 computo forense reloaded
Futura Networks
 
Andres velazquez presentacion
Andres velazquez presentacionAndres velazquez presentacion
Andres velazquez presentacion
lideresacademicos
 
Informatica forense1
Informatica forense1Informatica forense1
Informatica forense1
Arlen Caicedo
 

Destaque (20)

Las redes sociales
Las redes socialesLas redes sociales
Las redes sociales
 
Computacion forense
Computacion  forenseComputacion  forense
Computacion forense
 
2010 reporte mexico-institucional
2010 reporte mexico-institucional2010 reporte mexico-institucional
2010 reporte mexico-institucional
 
Curso de Cómputo Forense 2013
Curso de Cómputo Forense 2013Curso de Cómputo Forense 2013
Curso de Cómputo Forense 2013
 
LIOS: a tool for IOS Forensic
LIOS: a tool for IOS ForensicLIOS: a tool for IOS Forensic
LIOS: a tool for IOS Forensic
 
NANO - FORENSE
NANO - FORENSENANO - FORENSE
NANO - FORENSE
 
Peritos forenses
Peritos forensesPeritos forenses
Peritos forenses
 
La prueba pericial . victor de santos
La prueba pericial . victor de santosLa prueba pericial . victor de santos
La prueba pericial . victor de santos
 
Doing Research about Web Application Firewalls
Doing Research about Web Application FirewallsDoing Research about Web Application Firewalls
Doing Research about Web Application Firewalls
 
Computacion forense
Computacion forenseComputacion forense
Computacion forense
 
FC00::1 (Algunos) Ataques en IPv6
FC00::1 (Algunos) Ataques en IPv6FC00::1 (Algunos) Ataques en IPv6
FC00::1 (Algunos) Ataques en IPv6
 
Presentación prueba electrónica y sus alcances
Presentación prueba electrónica y sus alcances Presentación prueba electrónica y sus alcances
Presentación prueba electrónica y sus alcances
 
El Cibercrimen y delitos informaticos
El Cibercrimen y delitos informaticosEl Cibercrimen y delitos informaticos
El Cibercrimen y delitos informaticos
 
Cpmx3 computo forense reloaded
Cpmx3   computo forense reloadedCpmx3   computo forense reloaded
Cpmx3 computo forense reloaded
 
Peritos informáticos colegiados: Pruebas digitales
Peritos informáticos colegiados: Pruebas digitalesPeritos informáticos colegiados: Pruebas digitales
Peritos informáticos colegiados: Pruebas digitales
 
Andres velazquez presentacion
Andres velazquez presentacionAndres velazquez presentacion
Andres velazquez presentacion
 
El indulto en la legislacion boliviana
El indulto en la legislacion bolivianaEl indulto en la legislacion boliviana
El indulto en la legislacion boliviana
 
Informatica forense1
Informatica forense1Informatica forense1
Informatica forense1
 
AI05 Analisis forense de sistemas
AI05 Analisis forense de sistemasAI05 Analisis forense de sistemas
AI05 Analisis forense de sistemas
 
Psicología Forense
Psicología ForensePsicología Forense
Psicología Forense
 

Semelhante a Evasión de Técnicas Forenses

Episodio de pentesting
Episodio de pentestingEpisodio de pentesting
Episodio de pentesting
akencito
 
Meterpreter en android el desembarco en tu smartphone
Meterpreter en android   el desembarco en tu smartphoneMeterpreter en android   el desembarco en tu smartphone
Meterpreter en android el desembarco en tu smartphone
JASENT
 
Componentes Ubuntu
Componentes UbuntuComponentes Ubuntu
Componentes Ubuntu
Elvis Calle
 

Semelhante a Evasión de Técnicas Forenses (20)

Realidad Aumentada 01 documentacion tapir
Realidad Aumentada 01 documentacion tapirRealidad Aumentada 01 documentacion tapir
Realidad Aumentada 01 documentacion tapir
 
Workshop Técnicas Replicacion I
Workshop Técnicas Replicacion IWorkshop Técnicas Replicacion I
Workshop Técnicas Replicacion I
 
Bd practica 1.10
Bd practica 1.10Bd practica 1.10
Bd practica 1.10
 
Curso linux clase_2_2012
Curso linux clase_2_2012Curso linux clase_2_2012
Curso linux clase_2_2012
 
Episodio de pentesting
Episodio de pentestingEpisodio de pentesting
Episodio de pentesting
 
Introduccion a Ansible
Introduccion a AnsibleIntroduccion a Ansible
Introduccion a Ansible
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
 
Unidad 2. Lenguaje orientado a objetos
Unidad 2. Lenguaje orientado a objetosUnidad 2. Lenguaje orientado a objetos
Unidad 2. Lenguaje orientado a objetos
 
Usando Docker con sistemas Asterisk
Usando Docker con sistemas AsteriskUsando Docker con sistemas Asterisk
Usando Docker con sistemas Asterisk
 
Usando Docker con sistemas Asterisk
Usando Docker con sistemas AsteriskUsando Docker con sistemas Asterisk
Usando Docker con sistemas Asterisk
 
Jug málaga docker 101 - final
Jug málaga   docker 101 - finalJug málaga   docker 101 - final
Jug málaga docker 101 - final
 
FROM lost to the docker
FROM lost to the dockerFROM lost to the docker
FROM lost to the docker
 
Meterpreter en android el desembarco en tu smartphone
Meterpreter en android   el desembarco en tu smartphoneMeterpreter en android   el desembarco en tu smartphone
Meterpreter en android el desembarco en tu smartphone
 
FROM lost to the Docker 2020
FROM lost to the Docker 2020FROM lost to the Docker 2020
FROM lost to the Docker 2020
 
Componentes Ubuntu
Componentes UbuntuComponentes Ubuntu
Componentes Ubuntu
 
Desarrollo de rootkits en Linux [GuadalajaraCON 2013]
Desarrollo de rootkits en Linux [GuadalajaraCON 2013]Desarrollo de rootkits en Linux [GuadalajaraCON 2013]
Desarrollo de rootkits en Linux [GuadalajaraCON 2013]
 
Docker y PostgreSQL
Docker y PostgreSQLDocker y PostgreSQL
Docker y PostgreSQL
 
Docker 2014 v2
Docker 2014 v2Docker 2014 v2
Docker 2014 v2
 
Construyendo rootkits basicos
Construyendo rootkits basicosConstruyendo rootkits basicos
Construyendo rootkits basicos
 
Semana9 Vbr
Semana9 VbrSemana9 Vbr
Semana9 Vbr
 

Mais de Conferencias FIST

Seguridad en Entornos Web Open Source
Seguridad en Entornos Web Open SourceSeguridad en Entornos Web Open Source
Seguridad en Entornos Web Open Source
Conferencias FIST
 
Las Evidencias Digitales en la Informática Forense
Las Evidencias Digitales en la Informática ForenseLas Evidencias Digitales en la Informática Forense
Las Evidencias Digitales en la Informática Forense
Conferencias FIST
 
Evolución y situación actual de la seguridad en redes WiFi
Evolución y situación actual de la seguridad en redes WiFiEvolución y situación actual de la seguridad en redes WiFi
Evolución y situación actual de la seguridad en redes WiFi
Conferencias FIST
 
El Information Security Forum
El Information Security ForumEl Information Security Forum
El Information Security Forum
Conferencias FIST
 
Inseguridad en Redes Wireless
Inseguridad en Redes WirelessInseguridad en Redes Wireless
Inseguridad en Redes Wireless
Conferencias FIST
 
Mas allá de la Concienciación
Mas allá de la ConcienciaciónMas allá de la Concienciación
Mas allá de la Concienciación
Conferencias FIST
 
Riesgo y Vulnerabilidades en el Desarrollo
Riesgo y Vulnerabilidades en el DesarrolloRiesgo y Vulnerabilidades en el Desarrollo
Riesgo y Vulnerabilidades en el Desarrollo
Conferencias FIST
 
Demostracion Hacking Honeypot y Análisis Forense
Demostracion Hacking Honeypot y Análisis ForenseDemostracion Hacking Honeypot y Análisis Forense
Demostracion Hacking Honeypot y Análisis Forense
Conferencias FIST
 

Mais de Conferencias FIST (20)

Seguridad en Open Solaris
Seguridad en Open SolarisSeguridad en Open Solaris
Seguridad en Open Solaris
 
Seguridad en Entornos Web Open Source
Seguridad en Entornos Web Open SourceSeguridad en Entornos Web Open Source
Seguridad en Entornos Web Open Source
 
Spanish Honeynet Project
Spanish Honeynet ProjectSpanish Honeynet Project
Spanish Honeynet Project
 
Seguridad en Windows Mobile
Seguridad en Windows MobileSeguridad en Windows Mobile
Seguridad en Windows Mobile
 
SAP Security
SAP SecuritySAP Security
SAP Security
 
Que es Seguridad
Que es SeguridadQue es Seguridad
Que es Seguridad
 
Network Access Protection
Network Access ProtectionNetwork Access Protection
Network Access Protection
 
Las Evidencias Digitales en la Informática Forense
Las Evidencias Digitales en la Informática ForenseLas Evidencias Digitales en la Informática Forense
Las Evidencias Digitales en la Informática Forense
 
Evolución y situación actual de la seguridad en redes WiFi
Evolución y situación actual de la seguridad en redes WiFiEvolución y situación actual de la seguridad en redes WiFi
Evolución y situación actual de la seguridad en redes WiFi
 
El Information Security Forum
El Information Security ForumEl Information Security Forum
El Information Security Forum
 
Criptografia Cuántica
Criptografia CuánticaCriptografia Cuántica
Criptografia Cuántica
 
Inseguridad en Redes Wireless
Inseguridad en Redes WirelessInseguridad en Redes Wireless
Inseguridad en Redes Wireless
 
Mas allá de la Concienciación
Mas allá de la ConcienciaciónMas allá de la Concienciación
Mas allá de la Concienciación
 
Security Metrics
Security MetricsSecurity Metrics
Security Metrics
 
PKI Interoperability
PKI InteroperabilityPKI Interoperability
PKI Interoperability
 
Wifislax 3.1
Wifislax 3.1Wifislax 3.1
Wifislax 3.1
 
Network Forensics
Network ForensicsNetwork Forensics
Network Forensics
 
Riesgo y Vulnerabilidades en el Desarrollo
Riesgo y Vulnerabilidades en el DesarrolloRiesgo y Vulnerabilidades en el Desarrollo
Riesgo y Vulnerabilidades en el Desarrollo
 
Demostracion Hacking Honeypot y Análisis Forense
Demostracion Hacking Honeypot y Análisis ForenseDemostracion Hacking Honeypot y Análisis Forense
Demostracion Hacking Honeypot y Análisis Forense
 
Security Maturity Model
Security Maturity ModelSecurity Maturity Model
Security Maturity Model
 

Último

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Último (11)

Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 

Evasión de Técnicas Forenses

  • 1. Evasión de técnicas forense (Shellcode ELF loader) Albert Puigsech Galicia ripe@7a69ezine.org Rubén Jiménez García pluf@7a69ezine.org FIST BCN 2005
  • 3. Introducción  Sistema de explotación común:  Localización de maquina vulnerable  Generación de programa exploit  Utilización de shellcode especifica  Se inicia el proceso de post-explotación
  • 4. Introducción  La shellcode es nuestra amiga:  Codigos pequeños y faciles de programar  Se pueden adaptar a cualquier exploit  Pueden incorporar tecnicas de antidetección  Generalmente se ejecuta una shell via execve()  Pero nos puede trainicionar:  Imposibilidad de utilizar execve()!!
  • 5. Introducción  Y si disponemos de execve()?  Ejecución de comandos y aplicaciones locales  Descarga/compilación de programas  Estamos muertos..  Que ha ocurrido?  for(;;) printf(“evidencias!!”);
  • 6. Introducción  Para poder solucionar estos problemas tendremos que optar por un sistema que nos facilite la ejecución de programas y al mismo tiempo genere el menor numero posible de evidencias: Userland execve()
  • 8. Userland execve  El procedimiento que permite la ejecución local de un programa sin utilizar la llamada al sistema ‘execve’ recibe el nombre de ‘userland execve’.  Mecanismo que simula de forma correcta y ordenada las tareas que realiza el núcleo:  Carga de las secciones necesarias del binario  Inicialización del contexto de la pila.  Salto al punto de entrada.
  • 9. Userland execve  El uso de ‘userland execve’ nos soluciona los problemas planteados anteriormente.  No es necesario el uso de la syscall, por lo que no es preocupante que esté denegada.  La implementación es nuestra por lo que es posible cambiar el origen del ejecutable y obtenerlo de la red, en lugar del disco duro. Así podemos ejecutar una shell pese a que no exista en el disco.  La ejecución remota nos permitirá ejecutar herramientas que no estan en el host atacado sin alterar el disco.
  • 10. Userland execve  Primera versión publica de userland execve: grugq  Problemas:  poco portable  exceso de código inútil  orientado a la ejecución local  Solución:  Shellcode ELF Loader
  • 12. Shellcode ELF loader  La shellcode ELF loader es una nueva y sofisticada técnica post-explotación basada en el ‘userland execve’.  Diseñada para ser utilizada en exploits  Reduce la generación de evidencias  Posibilita la ejecución en entornos ostiles  Es fácil de programar y utilizar
  • 13. Diseño e implementación  SELF esta formado por tres elementos:  Lxobject (1)  Builder (2)  Jumper (3)  Cada uno realiza una tarea especifica dentro del proceso de post-explotación
  • 14. Lxobject (1)  Es un objeto ejecutable y auto-cargable utilizado para sustituir por completo un proceso original por otro.  Es la parte más compleja e importante de todo el sistema.  Se construye por el ‘builder’ en el host del atacante.
  • 15. Lxobject (1)  Un lxobject esta constituido por tres partes:  Binario ELF estático  Contexto inicial de la pila  Shellcode cargadora
  • 16. Binario ELF estático (1.a)  Es el binario que queremos cargar y ejecutar en la maquina remota.  El sistema sólo funciona con binarios estáticos, se ha optado por ello por varios motivos.  Facilita el diseño y la implementación  No nos preocupamos por las librerías  Reduce la complejidad de SELF  El binario lo genera el atacante. (uso de armerías)
  • 17. Contexto de pila (1.b)  Todo proceso dispone de una zona de memoria llamada pila o stack usada para varios cometidos.  Variables locales.  Control del flujo de ejecución.  Copias temporales de registros.  Parámetros pasados a la aplicación por el proceso padre.  Variables de entorno.
  • 18. Contexto de pila (1.b)  La pila debe tener un contexto inicial para que el proceso funcione correctamente.  Para facilitar la portabilidad y estabilidad se ha optado por pre-construir el contexto de la pila en el host atacante e incluirlo en el lxobject como de un program header más se tratara.  No es necesario incluir los vectores auxiliares utilizados para tratar con binarios dinámicos.
  • 19. Shellcode cargadora (1.c)  Se trata de la parte más importante y delicada del lxobject.  Es una shellcode que simula el userland execve()  Código pequeño y fácil de entender  Se puede adaptar a cada sistema/plataforma  No construye el contexto de pila
  • 20. Builder (2)  Es la aplicación encargada de ensamblar las piezas que construyen el lxobject.
  • 21. Builder (2)  Su funcionamiento es sencillo: bash ~$ ./builder <host> <port> <exec> <argv> <envp> host, port: dirección y puerto de la máquina atacada donde el jumper está ejecutándose y esperando. exec: Fichero binario ELF que queremos ejecutar argv, envp: Argumentos y variables de entorno pasadas al programa.
  • 22. Builder (2)  Elemplo de ejecución: bash ~$ ./builder 172.26.0.1 2002 nmap-static “-P0;-p;23;172.26.0.30” “PATH=/bin”
  • 23. Proceso de construcción  Se crea una zona de memoria lo suficientemente grande para almacenar el fichero ejecutable estátido y se copia el binario. elf_new = (void*)malloc(elf_new_size);  Se limpian aquellos campos referentes a las secciones pues no seran usadas por nuestro binario. ehdr_new->e_shentsize = 0; ehdr_new->e_shoff =0; ehdr_new->e_shnum = 0; ehdr_new->e_shstrndx = 0;
  • 24. Proceso de construcción  Se introduce el shellcode ELF loader y se guarda su offset en el campo e_ident de la cabecera del ejecutable. memcpy(elf_new + elf_new_size - PG_SIZE + LOADER_CODESZ, loader, LOADER_CODESZ); ldr_ptr = (unsigned long *)&ehdr_new->e_ident[9]; *ldr_ptr = elf_new_size - PG_SIZE + LOADER_CODESZ;  El lxobject está perfectamente ensamblado y listo para ser enviado. connect(sfd, (struct sockaddr *)&srv, sizeof(struct sockaddr)); write(sfd, elf_new, elf_new_size);
  • 25. Jumper (3)  El jumper es la shellcode que deberá ser usada por el exploit en el proceso de explotación.  Su misión es activar el lxobject y para ello debe realizar, por lo menos, las siguientes acciones:  Obtener el lxobject.  Almacenarlo en la memoria.  Activarlo saltando al loader.
  • 26. Obtener el lxobject  El lxobjet puede obtenerse de muchas fuentes.  Disco duro  Socket de red  ...  Es recomendable usar un socket de red para reducir el riesgo de dejar evidencias.
  • 27. Almacenarlo en memoria  Es necesario almacenar el lxobject en la memoria de proceso. Se plantean entonces tres posibilidades.  Almacenarlo en la heap  Almacenarlo en la pila del proceso  Almacenarlo en una nueva zona de memoria (mmap).
  • 28. Almacenarlo en la heap  Para almacenar el lxobject en la heap es necesario localizar la vaddr del proceso usando brk().  Ventajas:  Es sencillo de implementar.No suele haber restricciones de copia de datos.  Desventajas:  Se puede desmapear el propio lxobject durante el proceso de carga
  • 29. Almacenarlo en el stack  Si se conoce la situación de la pila es posible almacenar ahí el lxobject.  Ventajas:  Es sencillo de implementar.  No suele haber restricciones de copia de datos.  Desventajas:  Se puede desmapear el propio lxobject durante el proceso de carga.  Pueden existir restricciones de ejecución en la pila, es bastante común en sistemas hostiles.
  • 30. Almacenar en una nueva zona  Es posible mapear (usando la llamada al sistema mmap) una nueva zona de memoria destinada almacenar el lxobject.  Ventajas:  No existen restricciones para la copia o ejecución de datos.  No existe peligro de que el lxobject se desmapee durante el proceso de carga.
  • 31. Demostración Simple stack overflow + SELF = envio y ejecución de nmap
  • 32. Demostración Simple stack overflow + SELF = envio y ejecución de elfsh
  • 33. Referencias [+] The Design and Implementation of ul_exec - the grugq http://securityfocus.com/archive/1/348638/2003-12-29/2004-01-04/0 [+] Remote Exec - the grugq http://www.phrack.org/show.php?p=62&a=8 [+] Advanced antiforensics - Ripe & Pluf http://www.phrack.org/show.php?p=63&a=11 [+] Forensic Shell. FSH – Parki [+] API Proxy – ilo http://www.reversing.org
  • 35. Muchas gracias A los organizadores de FIST BARCELONA 
  • 36. FIN http://www.7a69ezine.org Albert Puigsech Galicia Rubén Jiménez García