Conferencias Navaja Negra – Día 1

Hace unos días, mi compañero Joel (@jsevilleja) y yo asistimos a las charlas Navaja Negra, que tuvieron lugar en Albacete del 3 al 5 de octubre. Navaja Negra son unas charlas jóvenes (van por la tercera edición), pero a pesar de ello congregan a un montón de gente interesante, manteniendo un espíritu colaborativo y cercano. Podéis seguir lo que se ha escrito sobre ellas en los hashtag #nn3ed y #nn3d, o seguir su cuenta oficial de Twitter en @navajanegra_ab.

Las conferencias tuvieron lugar, después de un cambio de ubicación a última hora, en las instalaciones de la Universidad Popular de Albacete. Tras el acto de bienvenida, empezaron las charlas.

La primera de ellas corrió a cargo de Juan Carlos Montes (@jcmontes_tec), de Inteco, que nos habló de una herramienta que ha desarrollado, llamada Telepathy. Esta herramienta proporciona una gran versatilidad a la hora de analizar muestras de malware ya que permite al analista actuar en dos frentes: por una parte, permite cargar nuevas DLL en un proceso en ejecución y hacer que este proceso las utilice; por otra, permite lanzar la ejecución bajo demanda de cualquier función o fragmento de código incluida en un proceso en ejecución. Este segundo supuesto es muy útil por ejemplo en funciones de cifrado y descifrado de las comunicaciones del malware, ya que da la posibilidad al analista de obtener las órdenes que envía y recibe una muestra de código malicioso sin tener que hacer ingeniería inversa sobre dicha muestra.

La aplicación está programada para Windows XP, aunque Montes indica que, a pesar de las protecciones añadidas en versiones posteriores de Windows, se podría conseguir una funcionalidad similar. El código fuente de la aplicación es público y se puede descargar del repositorio de GitHub de Inteco.

La segunda charla, impartida por Daniel Martinez (@dan1t0), se centró en el día a día de un pentester español. Dani nos trasladó a Raccoon City, y nos contó de una forma muy divertida cómo sobrevivir a una auditoría típica en la que hay mucha carga de trabajo y muy poco tiempo para realizar dicho trabajo. Pasando por la fase de recopilación (KeepNote) y minería (Nessie Viewer) de información, y haciendo énfasis en diferentes herramientas (Nmap, Nessus, Wmap, Nikto, Hydra, Mutator, …), configuraciones y optimizaciones que se pueden realizar a dichas herramientas, nos mostró un “script guarro” (definición propia del ponente) para automatizar al máximo el proceso de la auditoría y poder aligerar en la medida de lo posible el duro trabajo del auditor.

A continuación subió al estrado Florencio Cano (@florenciocano) para ilustrarnos sobre el fuzzing en general y el fuzzing sobre navegadores en particular. El fuzzing consiste en proveer, de forma (semi)automática, a una aplicación de datos de entrada que no espera, incluyendo datos inválidos o aleatorios. Floren nos explicó cómo se suele trabajar, así como los tipos de fallos que se pueden buscar y los tipos de fuzzing que existen, para pasar a continuación a mostrarnos su trabajo de fuzzing de navegadores web, utilizando la herramienta Peach Fuzzer. Este conjunto de herramientas automatiza el proceso de prueba, e incluye funcionalidades muy interesantes como son la definición y validación de gramáticas para definir el lenguaje de los datos de entrada, la monitorización del proceso analizado, o la interacción con herramientas de depuración.

Para finalizar la mañana, Alfonso Moratalla (@alfonso_ng) y Ricardo Monsalve (@cenobita8bits) nos hablaron de la radio definida por software (o SDR, por sus siglas en inglés). Estos maestros de las ondas nos mostraron la cantidad ingente de redes electromagnéticas que pasan a nuestro alrededor y cómo podemos escuchar (únicamente escuchar, nunca transmitir, ya que además de la limitación física de la antena que llevan los dispositivos que nos mostraron, podemos tener problemas legales) infinidad de ondas, desde la radio comercial a la ISS, pasando por walkie talkies, transpondedores navales y aeronauticos, satélites profesionales y amateurs, GPS o satélites meteorológicos, entre otros muchos.

Lo mejor de todo esto es que se pueden utilizar dispositivos muy baratos (alrededor de 5€) que, aunque se venden como receptores de TDT, utilizando el software adecuado y antenas acordes a las ondas que se quieren capturar, permiten la recepción de ondas en un rango que excede con creces el cometido con el que se venden.

Tras una parada para degustar manjares manchegos, nos reincorporamos por la tarde con una charla de Adrián Pulido (@winsock) sobre un tema que según él parece que pasa bastante desapercibido, las capacidades de ejecución de código en las DLL. Adrián nos explicó el funcionamiento de los ejecutables en Windows, donde antes de ejecutar el código de la aplicación se cargan las librerías necesarias para su ejecución y se llama a ciertas funciones de la librería. Además, una vez lanzada una aplicación, hay muchas formas de cargar más librerías de forma dinámica, y en el momento de su carga siempre se ejecutarán partes de código de la propia librería. Por si esto no fuera poco, podemos ofuscar una librería maliciosa haciéndola pasar por cualquier otro tipo de fichero.

Tras todo esto, nos muestra a través de varios ejemplos cómo consigue una shell remota cargando DLL en ficheros a priori inocuos. En los ejemplos podemos comprobar que, a pesar de cerrar la aplicación en la que se ha introducido la DLL y lanzado la shell remota, esta shell sobrevive y no es mostrada en el administrador de tareas de Windows.

La siguiente charla corrió a cargo de uno de los organizadores, Daniel García (alias cr0hn – @ggdaniel), que nos habló de GoLismero, una herramienta que están desarrollando en su empresa y que consiste en un framework para crear herramientas para la realización auditorías de seguridad. Con una estructura modular y una API muy bien documentada que permite una fácil ampliación mediante plugins, están creando una herramienta capaz de realizar de forma automática auditorías, basándose en los datos de multitud de herramientas y plugins, tanto existentes como propios. La realimentación de todos los módulos con la salida del resto, y la posibilidad de definir la profundidad con que se va a realizar la auditoría (únicamente reconocimiento, análisis de vulnerabilidades, explotación, …), así como la generación automática de informes, son varios de los puntos fuertes de esta aplicación.

Tras una merendola con galletas y miguelitos, continuamos la tarde con Jaime Peñalba (@nighterman), quien con la colaboración de Sergi Álvarez (alias pancake – @trufae), nos hizo una breve introducción al mundo del exploiting, explicando qué es y para qué se utiliza, así como dando una breve introducción al funcionamiento de la CPU y la memoria, para pasar a hablar sobre los tipos de fallos que se pueden aprovechar para explotar una aplicación, las técnicas que se han ido implantando para tratar de mitigar estos fallos, y las técnicas que han ideado los malhechores para poder seguir haciendo de las suyas.

Para finalizar el día, Alejandro Nolla (@z0mbiehunt3r) y Felipe Martín (@fmartingr) nos hablaron sobre cómo auditar una red de entrega de contenidos, o CDN, por sus siglas en inglés. Explicaron la estructura común de estas redes, en la que un conjunto de equipos en diferentes localizaciones físicas contienen réplicas del contenido de un servidor web. Con el uso de anycast se posibilita que el usuario reciba siempre la información desde la réplica más cercana a él. De ahí pasaron a los posibles vectores de ataque, que van desde los frontales del CDN al propio servidor de origen, pasando por la infraestructura de la red WAN y el propio proveedor de servicios. En cada uno de ellos explicaron posibles formas de encontrar debilidades y aprovecharlas.

Para facilitar el proceso Alejandro ha creado, con la ayuda de Felipe, una interfaz web que recopila todos los pasos y herramientas mencionados en la charla. Lamentablemente, no van a liberar el código por la dificultad para llevar a cabo estas auditorías y las implicaciones que podría tener un mal uso del software.

Tras esta última charla se dio por finalizada la jornada, y terminamos el día cenando en un bar de tapas típico de la zona acompañados por algunos de los amigos que nos encontramos en las charlas. En unos días seguiremos narrando las charlas del segundo y tercer día de conferencias.

Para los que os hayáis quedado con ganas de saber más, estad tranquilos, ya que se han grabado todas las charlas y esperamos que en breve estén disponibles para su consulta pública.

Comments

  1. Muchas gracias por la pedazo de crónica que os habéis currado. Está super bien explicado, muy entretenido de leer.

    Espero que os gustase mi charla que era lo que pretendía. De nuevo mil gracias por la pedazo de entrada, está muy currada, entrando en detalle y detenimiento sobre las charlas.

  2. Gracias a ti Adrián por tu estupenda charla, y gracias también por tomarte el tiempo necesario para leer nuestra humilde (y extensa) crónica.

    La verdad es que tu charla me impactó un poco ya que no creía que se podía hacer tanto con una simple DLL, y mucho menos el tema de la ocultación.

    Espero que sigas así y poder ver tus ponencias en futuros eventos ;)

  3. Muy buena crónica y muy detallada. ¡Y eso que es solo el primer día! Vila, nos vemos en la próxima ;) Vas a la nocon?
    @WiNSoCk me pareció muy interesante tu charla. Es difícil explicar para el público en general un tema tan denso como las DLLs, pero lo hiciste muy ameno y comprensible. Enhorabuena :)

  4. Interesante el tema del “fuzzing”. Por lo que he visto es una forma sistemática de buscar errores “a ciegas” sobre protocolos o programas con la esperanza de encontrar defectos en el diseño. Lo sorprendente es la elevada tasa de éxito que consigue.

    Lo de las DLL inocuas en las que es posible cargar una shell remota y que permanezca oculta a los ojos de Windows también me parece muy interesante.

  5. Muchas gracias a todos por el apoyo, da gusto entrar para ver los comentarios y que sean todos tan positivos.

    Ha sido un tema mucho más fácil de investigar que de hacer la presentación comprensible para todo el mundo. Me alegra mucho saber que fue algo ameno, por suerte los nervios no me traicionaron “demasiado” :P

    Espero que la próxima tenga otro tema interesante para tratar, e intentar hacerlo un poquito mejor, con algo más de dinamismo. De nuevo agradeceros a todos el repport que me estáis dando de la charla y el molestaros en dejar el comentario.

  6. @Blanka Muchas gracias !! Al final no creo que pueda ir, pero si no a ver si nos vemos en la siguiente ;)

    @Alejandro Gracias por el comentario. La verdad es que tanto el Fuzzing como las DLL son temas que no tienen tanta prensa como otros pero pueden ser muy interesantes.

    @WiNSoCk De nuevo, gracias a ti por la charla que nos ofreciste.