Como
ya es bien conocido en la comunidad de seguridad, los días 6, 7 y 8 de
Marzo tiene lugar uno de los mejores congresos de seguridad informática
de ámbito nacional, la
RootedCon.
Este año, la organización hizo un esfuerzo extra para intentar ofrecer
una visión más internacional al evento tanto aceptando propuestas de
ponentes extranjeros como ofreciendo servicios de traducción simultánea.
Sin embargo, el tema que vamos a tratar en este artículo versa,
posiblemente, del mejor training de explotación de software a nivel
internacional.
La organización de la
RootedCon consiguió que Peter Van Eeckhoutte, aka
@corelanc0d3r, viniera por primera vez a España a impartir su “
Corelan Live: Win32 Exploit Development Bootcamp”, marcando un precedente, como suele ocurrir con muchas de las cosas que se llevan a cabo en la RootedCon.
El
Bootcamp de Corelan tiene una duración de dos
días, sin embargo, ya nos avisaron de que no iban a ser dos días muy
normales, que tuviéramos claro que se iba a dormir muy poco. Y así fue.
El training de
Corelan bien se podría hacer durante toda una
semana. El primer día de training empezó a las nueve de la mañana,
durando hasta la una y media. No, no la una y media del medio día...
sino ¡de la madrugada! Un total de 16 horas y media de training,
contando la hora para comer. El segundo día empezó sobre las nueve y
acabó a las dos y media. 17 horas y media. Y acabamos a las dos y media
porque Peter nos vio las caras de incredulidad y desesperación cuando
dijo que estaría bien acabar cierto exploit antes de irnos. Un use
Use-After-Free haciendo
Heap Spraying y
ROP,
que en condiciones normales posiblemente nos hubiera llevado una o dos
horas, pero después de un total de unas 33 horas de training en dos
días, todo apuntaba a que nos iba a llevar todo lo que quedaba de noche.
¡Si esto no te ha convencido para hacer el training en cuanto puedas, no sé qué podría hacerlo!
Cuando se presentan los requisitos del training, sorprendentemente se afirma que no son necesarios conocimientos previos de
exploiting y
hasta se afirma que no es necesario tener conocimientos de ensamblador.
Después de asistir al bootcamp, por extraño que parezca, me pareció que
realmente sí que era cierto que no eran necesarios conocimientos de
ensamblador.
Durante todo el
training, Peter tiene preparados todo un conjunto de ejercicios en los que te presenta las aplicaciones vulnerables y un pequeño
Proof of Concept que utiliza para generar un
crash en la aplicación. A partir de ese momento, eres tú el que se encarga de hacer de ese
crash una
ejecución de código arbitraria. Esto significa que en ningún momento
necesitas hacer reversing de la aplicación para identificar la
vulnerabilidad. Evidentemente vas a tener que leer un poco de
ensamblador, pero con unos conocimientos básicos que te da el propio
Peter ya es más que suficiente.
Por otro lado, creo que lo que no es tan cierto es que no se necesiten conocimientos previos de
exploiting.
Es verdad que Peter asume que los asistentes no tienen estos
conocimientos (hasta te refresca aspectos de arquitectura de
computadores de primero de carrera) pero la curva de aprendizaje es
exponencial. Juzga tú mismo: ¿crees que es posible no tener ni idea de
lo que es un desbordamiento de búfer y al cabo de dos días estar
explotando vulnerabilidades en navegadores web a través de
Use-After-Free?
Peter casi materializa este milagro, pero te aconsejo que antes de
asistir al training pongas un poco de tu parte para no perderte a medio
camino. Una buena estrategia es hacer un repaso a sus tutoriales. No
hace falta que llegues a los últimos, pero sí que deberías asistir al
training con unos conceptos sólidos.
En fin, vayamos a lo interesante.
El primer día, nos adentramos en el mundo del exploiting en Windows a
través de desbordamientos básicos de bufers para, como diría el propio
Peter, influenciar el registro
EIP (que no es lo mismo que sobrescribirlo). Después se hace hincapié en técnicas para evadir medidas de seguridad como
SEH, repasando conceptos como
SafeSEH o
SEHOP, pero sin entrar en profundidad en ellos. También se programan varios módulos de
Metasploit para facilitar el desarrollo de los
exploits.
Durante este primer día también se tocan otros conceptos como el uso de
los debuggers, la identificación de caracteres inválidos en los
payloads o el uso de una de mis nuevas herramientas favoritas, Mona.
Este podría parecer un día básico para alguien con conocimientos sobre
exploiting,
pero lo cierto es que se obtienen unos conocimientos y metodologías muy
robustos que establecen la base para seguir hacia adelante. Eres capaz
de vislumbrar el modo de pensar y trabajar de una persona que se ha
dedicado al desarrollo de exploits durante más de diez años. Para todos
aquellos que tengáis unos conocimientos sólidos sobre métodos de
explotación de software, estoy seguro que las siguientes frases de Peter
(las digo de memoria, así que puede que su forma literal varíe) os
harán plantear ciertas cosas:
- "
Si alguien os dice que puede sobrescribir EIP, ¡huid! A EIP sólo se le puede influenciar."
- "
Si alguien os dice que puede sobrescribir una vtable, ¡huid!"
Y la que a mí más me gustó y, a la vez, más me chocó es:
- "
Si alguien está utilizando NOPS en su exploit, probablemente no tenga ni idea de lo que está haciendo"
Ahora decidme... Alguna vez habéis utilizado
NOPS en
vuestros exploits? Si es así, es momento de plantearos si realmente era
necesario o simplemente no teníais muy claro lo que estaba ocurriendo.
:)
El segundo día del training nos adentramos en conceptos algo más avanzados como
DEP o
ASLR. A diferencia del primer día en el que se trabaja con
Windows XP SP3, este segundo día se trabaja sobre
Windows 7. Esto nos llevó toda la mañana y parte de la tarde. Llegados a este punto se supone que ya eres capaz de programar módulos de
Metasploit sin
muchos problemas y utilizarlos para explotar las vulnerabilidades. De
la tarde hasta la madrugada se empezó a profundizar en temas como
Heap Spraying y
Use-After-Free.
Por desgracia, no nos dio tiempo de asentar los conocimientos más
avanzados tal y como había ocurrido con los conocimientos del primer
día. Tampoco pudimos abordar el tema de information leaks.
Esto sería un problema, si no fuera porqué después del training, a
los asistentes se les da acceso a un foro+IRC privado para que todas tus
dudas sean resueltas por el propio Peter u otros estudiantes. Sí, lo
habéis leído bien. Después del training, Peter sigue resolviendo tus
dudas. De nuevo, el precio/hora del training parece que se reduce. :)
Comentar que todas las vulnerabilidades que se explotan en el
training son reales, pasando por simples reproductores de música hasta
Wireshark o navegadores web. Además hay muchos ejercicios que se quedan en el tintero, para que los pienses tu en casa.
Por último, me gustaría recalcar el valor añadido que ofrece Peter.
A nivel personal, es el profesor más implicado que jamás he visto.
¿Sabéis lo que es estar encerrado durante 17 horas en la misma sala y
que él siga motivándote? Siempre que nos ponía un ejercicio iba dando
vueltas por la sala en vez de quedarse sentado en su sitio esperando a
que lo llamaras, con lo que era mucho más amigable plantearle dudas.
Cuando avanzaba con los ejercicios, se aseguraba (dentro de lo posible)
que todos lo hubiéramos conseguido.
A nivel pedagógico, Peter es muy bueno explicando. A mí, que ya tenía
experiencia previa, me quedaron claros la mayoría de los conceptos. Sin
embargo, vi a personas que se perdían a medio camino. Lo que es
evidente es que, por un lado, sin unos conocimientos sólidos te va a ser
más difícil seguir la clase, y por el otro, si te despistas 5 o 10
minutos, te pierdes. Así que debes mantenerte concentrado todo el
tiempo.
Por último, a nivel de conocimientos, Peter es excepcional y, además,
trabaja duro. Esto se puede apreciar en muchos momentos. Te da
explicaciones sobre ciertos conceptos que normalmente no se encuentran
por la red (aún menos en libros). Te explica cosas que la gente
acostumbra a hacer, sin saber realmente porqué las hace y te explica por
qué ya no son necesarias. Te ofrece información que ha descubierto él
mismo y que, por lo que se puede apreciar, seguro que obtenerla le ha
llevado una buena cantidad de horas. Además, al final del training
habrás interiorizado un modo de trabajar y de pensar que puede
facilitarte mucho las cosas en el momento de encarar otros escenarios
por tu cuenta.
Ahora, como dice Peter, llega el punto clave: si la semana siguiente
al training no repasas todos los conceptos explicados es muy posible que
todo esto no haya servido de nada. Por suerte, en las diapositivas y
los materiales del training hay decenas de ejercicios que no se hicieron
en el training, con lo que hay diversión para tiempo. Por suerte,
tendremos el apoyo de Peter con todas las dudas que nos puedan surgir.
Y sobre todo, ¡Don't look the next slide!
Autor: Albert López
Departamento de Auditoría