Métodos de Protección
En las investigaciones rutinarias de casos de"defacements" de páginas web o de utilización de la máquina comprometida como cluster DDoS no es frecuente encontrar binarios protegidos ya que la mayoría de herramientas están circulando por la red de forma abierta. Mientras que en los compromisos de sistemas importantes como de Bancos, Líneas Aéreas o Universidades, el nivel de intruso es tecnológicamente y intelectualmente superior, por lo tanto también lo son sus herramientas. Hasta que no sepamos el propósito de cada uno de las herramientas del intrusono podremos concluir la investigación con éxito.
Podemos encontrar siguientes métodos de protección de binarios en este caso, según el nivel del atacante y tipo de herramienta utilizada. Puede que se utilicen de forma individual o de forma combinada paracomplicar el trabajo del investigador.
- UPX [3] - "Ultimate Packer for eXecutables", los intrusos con un nivel de conocimientos bajo o medio utilizan compresor de ejecutables UPX como una herramienta de protección de sus aplicaciones. Este software tiene soporte para reducir el tamaño de binarios de tipo dos/exe, dos/com, dos/sys, djgpp2/coff, watcom/le, elf y etc... a través de las funciones de la librería UCL escrita en ANSI C, por lo tanto ofuscando su contenido a nivel superficial.
Si observamos el output del comando strings vemos que es fácilmente detectable por la cadena de texto "$Id: UPX 1.22 Copyright (C) 1996-2002 the UPX Team. All Rights Reserved. $" en caso de que UPX no ha sido modificado. En otros casos cuando el intruso puso su empeño en modificar la fuentes de UPX para confundir (aun mas) al administrador el binario sigue perfectamente reconocible observando las cadenas "/tmp/upxAAAAAAAAAAA", "/prof", etc... en el fichero. Para desempaquetar el binario debemos instalarnos UPX y ejecutar el siguiente comando:
[[email protected] ervin]$ ./upx -d
- BurnEye [4] - Este tipo de protección se utiliza por los intrusos con nivel de conocimientos medio, medio-alto, que conocen la estructura de binarios ELF. BurnEye ofrece 3 nivelesde protección de binarios ELF por capas: ofuscación de código, cifrado de aplicación a través de contraseña y técnica de OS fingerprinting.
Nivel 1. El primer nivel de protección realiza un cifrado del binario y utiliza la técnica de inyección de código dentro del binario ELF. El código es un motor de descifrado que a la hora de ejecutar el programa v
descifra su contenido y lo ejecuta. Podemos detectar si el binarioestá protegido con el primer
[[email protected] dev]$ gdb ./
Illegal HTML tag removed : neye nivel 1> GNU gdb 5.2Copyright 2 Program received signal SIGTRAP, Trace/breakpoint trap.0x053714c7 in ?? ()(gdb) \
Normalmente el SIGTRAP en binarios protegidos con BurnEye suele estarsituado en 0x053714c7. Ese
Nivel 2. El segundo nivel de protección de binarios es más completoque el anterior. Su funciona
Para detectar la diferencia entre el nivel 1 y nivel 2, hay queejecutar el programa. Por lo tan
[[email protected] dev]$ ldd ./voidldd: /lib/ld-linux.so.2 exited with unknown exit code (13
Si se produce el output similar, entonces queda confirmado que elbinario está cifrado y la únic
[[email protected] dev]$ ./voidpassword:invalid key \
Una vez ejecutado el fichero vemos que nos solicita la contraseña y sipulsamos Enter, nos infor
Nivel 3. Esta capa de protección tiene un modo de funcionamiento diferente a los niveles anterio Si estamos estudiando el binario, doy por sentado que nos encontramos en una estación de análisi
[[email protected] chrooted]# ./outputinvalid fingerprint \
Es casi imposible de obtener el binario original si no nos encontramosen la máquina con un sell
• Elfe [8] - Este tipo de protección se utiliza por los intrusos con nivel de conocimientos medio, medio-alto, que conocen la estructura de binarios ELF. Elfe ofrece 1 nivel de protección de binarios ELF a través de RC4. A través de esta herramienta se puede especificar cual de las secciones del binario (.text, .data, .rodata) se quiere proteger. Esa aplicación funciona sólo bajo la arquitectura x86y únicamente puede proteger binarios producidos por el compilador gcc y stripeados, tiene soporte para binarios linkados de forma estática así como dinámica.
Comparando esa herramienta con las anteriores, podemos decir queofrece menor nivel de protecció
password:Done. Returning to program.QZ^& \
También podemos encontrar en el output cadenas de texto de lassecciones que no han sido cifrada
Aunque el método de protección no implementa detección de debuggers,el nivel de dificultad de d
Hemos podido observar que las utilidades como BurnEye y Elfe tienen una mayor capacidad de ocultación del propósito del binario. Si el intruso ha utilizado estas herramientas de forma correcta y precabida sería casi imposible de saber el objetivo del fichero. El decifrado es posible pero complejo que necesita conocimientos avanzados de ingeniería inversa y análisis criptográfico.