En este caso el dicho popular “segundas partes nunca fueron buenas” no se cumplió. Repitiendo el éxito del año pasado la organización de la rooted trajo a tierras valencianas un buen elenco de profesionales de la seguridad para presentar sus últimos trabajos. Como en años anteriores, S2 Grupo ha participado como espónsor del congreso, mostrando así nuestro compromiso con la seguridad.
Esta vez tuvimos la oportunidad de participar en uno de los trainings impartidos por Pablo San Emeterio de Telefónica, entorno al mundo del hooking. En primer lugar y antes de comentar los aspectos más relevantes del lab, destacar la profesionalidad, cercanía y humildad (sí humildad, ese concepto tan extraño de encontrar dentro del security world…) de Pablo.
El training, es altamente recomendable para los que como yo, habíamos oído del tema pero nunca nos habíamos puesto con las manos en la masa, así como para los que tengan adquiridos conceptos básicos de hooking y quieran ampliarlos/reforzarlos o simplemente amueblar ordenadamente lo aprendido de forma autodidacta.
A grandes rasgos, la estructura general del lab está dividida en técnicas de: hooking en Linux, Windows user space y Windows Kernelland, con algunos toques de hooking de red mediante netfilter y parcheo de binarios.
Comenzamos la jornada implementando técnicas de hooking en Linux mediante LD_PRELOAD, lo cual nos permitió como ejemplo práctico controlar las llamadas a read y write de Openssl y de esta manera inspeccionar todo el tráfico cifrado en una comunicación mediante https.
Gratamente sorprendidos por las grandes posibilidades de estas técnicas (solo hay que dejar volar la imaginación e identificar alguna librerías interesantes…), pasamos a trabajar sobre la gestión y modificación de paquetes de red mediante Netfilter. Haciendo uso de sus librerías y de Scapy fuimos capaces de manipular los paquetes de red a nuestro antojo, en una conexión inline.
Abandonando el mundo de Linux y con grandes expectativas de llegar a la parte de Hooking Windows, el training continuó su jornada dentro del espacio de usuario o userland. Ansiosos de descubrir cómo ponernos en medio de una llamada a una función, procedimos a desarrollar un pequeño keylogger capaz de inyectarse como DLL en todos los procesos del sistema. Para ello hookeamos los mensajes de ventana de los procesos con esta característica identificando todos aquellos que presentaban un evento de tipo WM_KEYDOWN, esto nos permitió guardar en un archivo todo lo que el usuario tecleaba sobre las aplicaciones de escritorio.
Por último y entrando ya en el mundo de las sombras, Pablo dio un repaso de las técnicas de hooking a nivel de kernel, mundo en el que hay que ser bastante valiente y osado para adentrarse. En resumen lab altamente recomendable. Si en próximas ediciones estáis pensando en apuntaros a algún training de rooted, este no os defraudará.