Archivo

Archivo de Autor

Intentando descubrir hidden services en TOR

octubre 22, 2014 Deja un comentario

En el articulo “ataca un servicio oculto en la red de TOR, si te atreves” he explicado el funcionamiento del protocolo rendesvouz de TOR y las dificultades existentes a la hora de descubrir cualquier tipo de servicio anónimo en TOR. Actualmente, una de las formas más eficientes de atacar la red consiste en intentar controlar la mayor cantidad de repetidores de entrada y salida para posteriormente ejecutar ataques basados en el análisis de las peticiones y los tiempos de las mismas, sin embargo para ello se requieren varios repetidores de TOR controlados y profesionales que sepan aplicar las técnicas de ataque adecuadas, cosas que no suelen estar al alcance de cualquiera. Por otro lado, una de las características intrínsecas de la deep web de TOR, es que no es fácil encontrar cualquier servicio y menos aun si no conoces su dirección onion. Muchas veces, los usuarios de estas redes se dedican a curiosear y a recopilar direcciones que van encontrando en foros, sitios en Internet o en algunos de los buscadores más populares en la web profunda, sin embargo ¿qué pasa con aquellos servicios que son realmente ocultos? Es decir, aquellos servicios cuyas direcciones onion solamente las conocen un grupo muy pequeño de personas y no se encuentran registradas en foros o buscadores. ¿Quiénes suelen crear y usar ese tipo de servicios? Si lo piensas detenidamente, encontrar dichas direcciones es prácticamente imposible, ya que como se ha explicado en el artículo anterior, no es como buscar una aguja en pajar, es más bien como buscar una aguja entre varios billones de agujas aparentemente iguales y sin ningún patrón o perfil que las distinga.

Por otro lado, cuando intentas desarrollar un Framework de auditoria en la deep web de TOR, contar con un repositorio de direcciones onion para poder ejecutar ataques automatizados contra dichos servicios es muy importante y además de contar con un listado de direcciones conocidas (recolectadas de foros, sitios en Internet y buscadores), también es útil contar con mecanismos para intentar descubrir servicios ocultos. Sin embargo aquí, volvemos a lo que ya se ha explicado anteriormente: Manejar el volumen de datos que puede producir el espacio de posibles direcciones onion es simplemente inviable con la capacidad de procesamiento que tienen los ordenadores modernos.

No obstante, a pesar de las dificultades, un atacante puede intentar generar muchas direcciones onion de forma aleatoria o incremental y determinar si en alguna de ellas hay un servicio en ejecución. En este sentido, en Tortazo he implementado algunos mecanismos para generar y procesar direcciones onion, con el fin de intentar descubrir servicios ocultos en la web profunda de TOR.

Estos mecanismos y la estructura que he montado, se explica a continuación.

Modo “Onion Repository” en Tortazo

Es posible generar direcciones Onion validas y posteriormente intentar realizar diferentes tipos de peticiones a dicha dirección, si la conexión es correcta, se asume que hemos encontrado un servicio valido. Ahora bien, pueden haber dos formas de abordar el problema considerando las limitaciones de procesamiento explicadas anteriormente, por un lado puedes intentar generar todas las permutaciones posibles partiendo de una dirección onion parcial con lo cual, entre más conocimiento se tenga sobre la dirección onion (número de caracteres conocidos), mayores serán las probabilidades de encontrar rápidamente el servicio en la web profunda de TOR. Por otro lado, si no tienes información sobre una dirección onion concreta y simplemente quieres consultar cualquier dirección onion sin ningún patrón determinado, Tortazo permitirá generar direcciones onion de forma aleatoria y realizar una conexión para ver si existe algún servicio oculto en ejecución en dicha dirección.

Se trata de dos aproximaciones completamente distintas que pueden ayudar a descubrir servicios ocultos, pero en ambos casos, lo más importante es que la generación y procesamiento de cada dirección onion se haga lo más rápidamente posible, esto con el fin de probar la mayor cantidad de direcciones onion en una franja de tiempo determinada.

En primer lugar, contar con un único proceso para la generación de direcciones y posterior procesamiento (petición contra el servicio) puede ser algo bastante lento, por este motivo, en Tortazo se cuenta con dos colas compartidas, una para las direcciones onion generadas y otra para aquellas direcciones sobre las cuales se ha detectado un servicio oculto en ejecución. Evidentemente, existen dos grupos de procesos, uno de ellos se encarga de la generación de direcciones onion que se insertarán en la cola de direcciones generadas y otro para procesar cada una de dichas direcciones onion y determinar si hay un servicio oculto en ejecución; y si ese es el caso, dicha dirección se insertará en la cola compartida de direcciones con servicios en ejecución.

Puede que suene un poco complejo, a lo mejor con la siguiente imagen queda un poco más claro.

OnionRepository

Para ejecutar Tortazo en modo “repositorio” es necesario especificar la opción “-R” y además, es posible indicar otros detalles como el número de procesos que debe crear la herramienta para el procesamiento y generación de direcciones onion (-W), una dirección onion parcial para generar las direcciones onion de forma incremental (-O <partialAddress>) o generar direcciones onion de forma aleatoria (-O RANDOM).

Algunos ejemplos se pueden ver a continuación:

Generación aleatoria de direcciones onion utilizando 5 procesos para generación y procesamiento de las direcciones creadas. Se realizarán peticiones HTTP contra cada uno de dichos servicios. El programa se ejecutará indefinidamente, hasta que el usuario manualmente decida detenerlo.


python Tortazo.py –R http –O RANDOM –W 5 –v 

 

Generación aleatoria de direcciones onion utilizando 5 procesos para generación y procesamiento de las direcciones creadas. Se realizarán peticiones FTP contra cada uno de dichos servicios. El programa se ejecutará indefinidamente, hasta que el usuario manualmente decida detenerlo.

python Tortazo.py –R ftp –O RANDOM –W 10 –v

 

Generación incremental de direcciones onion utilizando la dirección parcial “sad53kig53r2gha” y 5 procesos para generación y procesamiento de las direcciones creadas. Se realizarán peticiones FTP contra cada uno de dichos servicios. El programa se ejecutará hasta que todas las combinaciones posibles hayan sido probadas, es decir, en este caso concreto, las combinaciones de los dos últimos caracteres de la dirección.

>python Tortazo.py –R ftp –O sad53kig53r2gh –W 10 –v

Generación incremental de direcciones onion utilizando la dirección parcial “sad53kig53r2gha” y 5 procesos para generación y procesamiento de las direcciones creadas. Se realizarán peticiones SSH contra cada uno de dichos servicios. El programa se ejecutará hasta que todas las combinaciones posibles hayan sido probadas, es decir, en este caso concreto, las combinaciones de los dos últimos caracteres de la dirección.

>python Tortazo.py –R ssh –O sad53kig53r2gh –W 10 –v

 

Por otro lado, las direcciones onion sobre las que se ha detectado un servicio oculto en ejecución, se almacenan directamente en base de datos para que puedan ser usadas en alguno de los plugins disponibles en Tortazo. Además, en el proyecto también se incluye un fichero con un listado casi 400 direcciones onion que pueden cargarse (opcionalmente) en la base de datos cuando se arranca el modo “respository” de Tortazo.

Y así funciona el modo repositorio en Tortazo. Actualmente estoy desarrollando varias ideas para ampliar/mejorar el mecanismo de descubrimiento de direcciones onion, sin embargo, será algo que implementaré para la versión 1.2 y cuando sea el momento os hablaré de ello. De momento encontrarás información más detallada en la documentación oficial: http://tortazo.readthedocs.org/en/latest/
Por último, si tienes alguna idea o sugerencia para mejorar, me encantaria que te pusieras en contacto conmigo (debiadastra [at] gmail.com).
Un saludo y Happy Hack!

Servicios REST en Nessus y pynessus-rest

octubre 14, 2014 Deja un comentario

Nessus es un escáner de vulnerabilidades que ha ganado su prestigio gracias a sus capacidades a la hora de detectar y reportar fallos de todo tipo. Es una herramienta que se encuentra a la altura de otras herramientas tan potentes y utilizadas como OpenVAS, NeXpose o Metasploit Framework. Nessus permite crear y lanzar diferentes tipos de escaneos contra múltiples objetivos, crear políticas ajustadas a diferentes tipos de auditorías que pueden ser lanzadas por el pentester y generar reportes muy completos sobre las vulnerabilidades encontradas. Su uso es muy intuitivo y aunque muchos pentesters suelen utilizarlo “in-situ” por medio de la consola administrativa de Nessus, también es posible utilizarlo de forma programática por medio de la API Rest disponible para ello. No son muchos los pentesters que suelen utilizar esta potente característica de Nessus, ya que normalmente estos servicios serán consumidos por herramientas de auditoría desarrolladas por terceros que quieran aprovechar los beneficios de Nessus o automatizar sus rutinas, como es el caso del plugin de “nessus” incluido en Tortazo.
Hace varios meses, tenia la necesidad de utilizar Nessus desde mis scripts escritos en Python, pero desafortunadamente no encontré ninguna librería que utilizará la especificación de servicios REST incluida a partir de la versión 5 de Nessus, solamente encontraba librerías que utilizaban la especificación antigua, la cual se basaba en XML-RPC. Una de las primeras que me encontré fue pynessus (http://code.google.com/p/pynessus/) la cual no solamente no utiliza la última especificación, sino que además no se encuentra soportada por nadie y tiene varias funciones con errores de compilación. Cualquier desarrollador la descartaría a la primera. Otras más como nessusxmlrpc (http://code.google.com/p/nessusxmlrpc/) o python-nessus (https://github.com/greencm/python-nessus) son más de lo mismo.
Cansado de perder tiempo buscando y encontrando solamente escombros de código, decidí crear una librería en Python para consumir los servicios REST de Nessus desde cualquier herramienta escrita en Python y es así como he terminado escribiendo pynessus-rest (https://github.com/Adastra-thw/pynessus-rest).
Se trata de una librería muy simple que consume todos los servicios REST definidos en la especificación de Nessus(http://static.tenable.com/documentation/nessus_5.0_XMLRPC_protocol_guide.pdf) y permite convertir los formatos de las respuestas (típicamente JSON) en una estructura de objetos en Python para su posterior uso.
Para instalar pynessus-rest, basta con ejecutar el script “setup.py” con el argumento “install”.

	python setup.py install

Después de instalar la librería, es posible utilizarla desde cualquier script en Python simplemente importando las clases y/o funciones necesarias. En este caso, la clase más importante para interactuar con una instancia de Nessus es la clase “NessusClient”, la cual cuenta con varios métodos para gestionar usuarios, políticas, reportes, escaneos planificados, etc.

Autenticación con el servidor de Nessus.

Lo primero es autenticarse para poder interactuar con los demás servicios y para ello, se debe invocar al servicio REST “login” el cual recibe como argumentos, el nombre de usuario y contraseña. Si el proceso de autenticación es correcto, el servicio devolverá un token identificativo del usuario, el cual debe ser utilizado por el cliente para futuras invocaciones a otros servicios que requieran permisos de acceso. La clase “NessusClient” tiene la función “login”, la cual se encarga de todos estos detalles a la hora de interactuar con el servicio REST “login” de Nessus e internamente, guarda el token devuelto por el servicio en el caso de una autenticación exitosa. Esto quiere decir, que la propia instancia de “NessusClient” guarda el token de autenticación internamente para que cualquier otra petición posterior lo pueda usar. El desarrollador se despreocupa de tener que guardar él mismo dicho token entre diferentes peticiones a otros servicios REST.
Para crear una instancia de la clase “NessusClient” se deben enviar al constructor el host y el puerto donde se encuentra en ejecución el servidor de Nessus y la función “login” recibe como argumentos las credenciales de acceso para iniciar sesión y obtener un token valido.

	from pynessus.rest.client.NessusClient import NessusClient
	client = NessusClient('127.0.0.1','8834')
	client.login('adastra','adastra')

En el caso de que el proceso de login se ejecute correctamente con las credenciales ingresadas por el usuario, es posible utilizar todos los servicios expuestos en Nessus por medio de la instancia de “NessusClient” creada anteriormente.

 

Gestión de Políticas

Para iniciar un escaneo utilizando Nessus, es obligatorio crear una política que será aplicada a dicho escaneo. Las políticas definen los objetivos e indican el tipo de auditoría que se debe aplicar e internamente, define los plugins que se lanzarán contra los objetivos definidos. Hay una serie de plantillas de políticas que vienen pre-configuradas en Nessus, el usuario normalmente debe seleccionar una de dichas plantillas y rellenar los campos necesarios para configurar la política. Con Pynessus-rest, es posible utilizar todos los servicios REST definidos en la especificación de Nessus para la creación y gestión de políticas. El uso de algunas de dichas funciones se incluye a continuación:

	client.policyPreferencesList()
	client.policyList()
	client.policyCopy(1)
	client.policyDelete(1)
	client.policyFilePolicyImport("policy.nessus")

 

Gestión de Escaneos

Los escaneos son la principal característica funcional de Nessus, sin los cuales evidentemente la herramienta carecería de sentido. Los escaneos creados en Nessus pueden ser planificados y además pueden pausarse, reanudarse o detenerse manualmente. Estas características también se pueden controlar programáticamente desde pynessus-rest utilizando los servicios REST de Nessus disponibles para ello.

	client.scanNew("192.168.1.33",'1','EscaneoConPolitica1')
	client.scanStop('ec665c9e-ce24-336b-acb4-e2b199fac1800854abce5c111a8d')
	client.scanTemplateNew('1','127.0.0.1', 'Plantilla')
	client.scanTemplateLaunch('NewTemplate')

 

Gestión de Reportes

Todos los escaneos lanzados desde Nessus van generando reportes de forma periódica, dependiendo del progreso del escaneo, dichos reportes pueden ser más o menos completos.

	client.reportList()
	client.reportHosts("2e8ed9f5-79b5-4f60-d223-bc08e9688c79a606b97c670a7deb")
	client.reportTags("2e8ed9f5-79b5-4f60-d223-bc08e9688c79a606b97c670a7deb", '127.0.0.1', jsonFormat=True)

 

Convertir respuestas JSON a objetos en Python.

Todas las respuestas devueltas por los servicios REST de Nessus pueden estar en formato XML o JSON, siendo el formato JSON el valor por defecto y de uso más común cuando hablamos de servicios REST. Dado que las estructuras de datos que devuelven algunos servicios REST de Nessus son bastante complejas, la clase “NessusConverter” se encarga de convertir dichas respuestas en objetos Python que puedan ser manejados mucho más fácilmente por el desarrollador.

 nessusConverter = NessusConverter(self.nessusClient.usersList())
 nessusConverter.userToStructure()
 for nessusUser in nessusConverter.nessusStructure.nessusUsers:
     print nessusUser.name,nessusUser.admin,nessusUser.idx,nessusUser.lastLogin

 
 nessusConverter = NessusConverter(self.nessusClient.pluginsList())
 nessusConverter.pluginsListToStructure()
 for nessusPlugin in nessusConverter.nessusStructure.pluginsList:
     print nessusPlugin.familyMembers, nessusPlugin.familyName

 nessusConverter = NessusConverter(self.nessusClient.pluginsMd5())
 nessusConverter.md5StructureToStructure()
 for md5 in nessusConverter.nessusStructure.md5Structure:
     print  md5.fileName, md5.md5

En esta entrada solamente he incluido una breve descripción de la librería con algunas de sus funcionalidades, un uso mucho más exhaustivo lo podrás encontrar en el módulo “nessus” de Tortazo, el cual explota completamente todas las funciones disponibles en pynessus-rest y los servicios REST definidos en la última versión de Nessus. Además te invito a que pruebes esta librería con cualquier instancia de Nessus a la que tengas acceso.

Saludos y Happy Hack!

Vulnerabilidades comunes en HTML5 – Configuraciones inseguras con CORS – Parte 1

octubre 8, 2014 1 comentario

HTML5 en una especificación muy conocida que permite a los desarrolladores crear aplicaciones del tipo RIA (Rich Internet Applications) y aunque incluye características que se encuentran soportadas en prácticamente todos los navegadores modernos, algunas de dichas características pueden representar problemas de seguridad muy serios que en versiones previas de HTML5 no se presentaban. HTML5 ahora es una combinación de varios elementos que permiten mejorar la navegabilidad y la experiencia de usuario gracias al uso de componentes como XMLHttpRequest2 (XHR-Level2), Web Sockets, Cross Origin Resource Sharing (CORS), localstorage, webSQL y otras mejoras relacionadas con el renderizado de componentes HTML en el navegador web. Muchas de estas nuevas características recaen directamente sobre el navegador del cliente y habilitan un espectro de ataque mucho más amplio que con versiones antiguas de la especificación, algo que los atacantes en Internet ahora buscan y explotan diariamente.
Algunos de los escenarios de ataque más comunes en navegadores y aplicaciones que soportan HTML5 y que no se encuentran debidamente aseguradas se listan a continuación.

CORS y ataques CSRF

SOP (Same Origin Policy) es una política que ha sido bastante efectiva a la hora de impedir que un dominio concreto pueda acceder a recursos de un dominio distinto. Por este motivo, gracias a SOP un dominio determinado no puede acceder directamente a los recursos (tales como cookies, árbol DOM, comunicaciones, etc) de un dominio distinto del suyo. En la especificación de HTML5, se ha implementado una característica interesante llamada CORS (Cross Origin Resource Sharing), la cual relaja un poco la política SOP y permite que los recursos de un dominio concreto se puedan compartir con otros dominios. Para hacer uso de esta característica, solamente es necesario utilizar algunas cabeceras HTTP que un navegador con soporte a CORS, entenderá y utilizará adecuadamente. El problema con este mecanismo, es que si no se configura adecuadamente, podría permitirle a un atacante acceder a recursos sensibles de un dominio concreto (como cookies de sesión) y llevar a cabo un ataque típico del tipo CSRF. Las cabeceras HTTP que le dan sentido CORS y que permiten una potencial brecha de seguridad son las siguientes:
Petición
Origin, Access-Control-Request-Method, Access-Control-Request-Headers
Respuesta
Access-Control-Allow-Origin, Access-Control-Allow-Credentials, Access-Control-Allow-Expose-Headers, Access-Control-Allow-Max-Age, Access-Control-Allow-Allow-Methods, Access-Control-Allow-Allow-Headers

Estas cabeceras son específicas para el funcionamiento de CORS y en el caso de que se encuentren incluidas en las respuestas devueltas por un servidor web, indica que CORS es soportado y que posiblemente, un atacante puede acceder a recursos compartidos a los que normalmente no debería tener autorización.

Ejemplo:
Suponiendo que la víctima tiene abierto en su navegador varias pestañas con sitios web en los que se encuentra navegando. Uno de dichos sitios tiene CORS habilitado y las respuestas a las peticiones incluyen la cabecera “Access-Control-Allow-Origin” con el valor “*” y otro de dichos sitios web es controlado por un atacante en Internet.
El atacante enviará un script malicioso al navegador de la víctima que se encargará de utilizar el objeto XMLHttpRequest para ejecutar una petición POST hacia el dominio que tiene CORS habilitado, es un dominio *distinto* del dominio del atacante y dicha petición será silenciosa y pasará inadvertida para el usuario, ya que su navegabilidad no se verá afectada y los componentes HTML que se encuentra visualizando no han tenido ningún tipo de cambio.
Con las condiciones descritas anteriormente, el atacante podrá acceder a datos sensibles del usuario que se encuentra autenticado en la aplicación web vulnerable, accediendo de esta forma a recursos tan importantes como la cookie de sesión del sitio web en el que el usuario se ha identificado, dando lugar a una fuga de información y posteriormente a un ataque de suplantación de identidad utilizando la información de acceso (cookie de sesión) del usuario identificado. En efecto, estamos hablando de un ataque clásico del tipo CSRF.
La siguiente imagen enseña un sitio web con CORS habilitado y como se puede apreciar, la cabecera “Access-Control-Allow-Origin” tiene el valor “*”

Sin nombre

Si el usuario se encuentra logueado y navega a un sitio web controlado por un atacante, el cual contiene un script como el que se enseña a continuación, el atacante podrá acceder a información sensible que le permitirá suplantar la identidad del usuario.

	<script language= “javascript” type= “text/javascript">
	function corsrequest() {
		var http;
		http = XMLHttpRequest();
		http.open(“POST”, “http://vulncors-site.com/”, true);
		http.setRequestHeader(“Content-Type”, “text/plain”);
		http.withCredentials= “true”;
		http.onreadystatechange = function() {
		if (http.readyState == 4) {
			var response = http.responseText
			document.getElementById(“responseFromVictim”).innerHTML = response;
		}
	}
	http.send(null)
	}
	</script>

Como se puede apreciar, el atacante realizará una petición “POST” al sitio web vulnerable con el fin de recuperar información sobre el usuario identificado en el sistema, para tal fin incluye el atributo “withCredentials” con el valor “true” para que el servidor web replique en la respuesta el contenido de la cookie de sesión del usuario. Hasta este punto, el atacante tiene todos los elementos necesarios para suplantar la identidad del usuario sin mayores dificultades, produciendo una vulnerabilidad del tipo CSRF.

CORS y CORJacking
Continuando con la explicación sobre las posibles brechas de seguridad que pueden incluirse con CORS, otro tipo de vulnerabilidad que se presenta en las aplicaciones web RIA con HTML5 es la conocida como CORJacking, la cual consiste en la capacidad que tiene un atacante de modificar dinámicamente la estructura DOM de un sitio web con CORS habilitado y mal configurado. De esta forma, el atacante podrá modificar algunos atributos de los elementos cargados en el árbol DOM del sitio web con CORS habilitado e incorrectamente configurado, para controlar la interacción del usuario con los contenidos del sitio web vulnerable.

Ejemplo:
Suponiendo que una aplicación web con CORS habilitado y mal configurado tiene un elemento dinámico como por ejemplo un fichero Flash, SilverLight o un fichero de vídeo o audio. Un atacante puede suplantar dicho contenido navegando por la estructura DOM y modificar la ubicación de dicho recurso por otra ruta que apunte a un recurso cuidadosamente creado por el atacante. Si el contenido dinámico servido por el atacante, tiene la misma apariencia visual que el contenido original de la aplicación web, el usuario no notará la diferencia y creerá que interactúa con el elemento original. Más grave aun, cuando se trata de contenidos Flash o similares que intervienen en operaciones de negocio de la aplicación, como por ejemplo un componente en Flash para recibir las credenciales de acceso de los usuarios.

Etiquetas, atributos y eventos HTML5 inseguros

Algunos etiquetas de las especificaciones anteriores de HTML contienen atributos y eventos muy interesantes que permiten que un usuario pueda interactuar de una forma mucho más amigable con dichos elementos, sin embargo, muchos de los nuevos atributos y etiquetas en HTML5 permiten la ejecución de código JavaScript, algo de lo que se podría aprovechar un atacante para producir vulnerabilidades XSS o CSRF.

Ejemplo:
Hay varios atributos y etiquetas nuevas en HTML5 que permiten la ejecución de código JavaScript de forma nativa. Una de las más comunes, es la etiqueta “video” y su atributo “onerror” que se activará automáticamente cuando el recurso que debe cargar la etiqueta “video” no puede cargarse.

<video source onerror="javascript:alert(‘XSS’)">

El atributo “autofocus” que en HTML5 se encuentra disponible en todos los elementos HTML de entrada, también puede representar un problema cuando no se valida adecuadamente el valor del atributo “onfocus” en el momento en el que se recarga la página.

<input autofocus onfocus= alert(‘XSS’)>
<select autofocus onfocus= alert(‘XSS’)>
<textarea autofocus onfocus= alert(‘XSS’)>
<keygen autofocus onfocus= alert(‘XSS’)>
<keygen autofocus onfocus= write(‘XSS’)>
 

Otro atributo potencialmente peligroso es “formaction” de la etiqueta “form”, el cual también admite la ejecución de código JavaScript.

<input autofocus onfocus= alert(‘XSS’)>
<select autofocus onfocus= alert(‘XSS’)>
<textarea autofocus onfocus= alert(‘XSS’)>
<keygen autofocus onfocus= alert(‘XSS’)>
<keygen autofocus onfocus= write(‘XSS’)>
 

Existen varias etiquetas y atributos que son consideradas peligrosas si no se aplican las validaciones de datos adecuadas, para ver una lista mucho más completa, se recomienda visitar el sitio HTML5 Security Cheatsheet: https://html5sec.org/

En una próxima entrada, más sobre riesgos y vulnerabilidades cuando en el uso de las nuevas características implementadas en HTML5

Un saludo y Happy Hack!

Navaja Negra 4 Edición

octubre 6, 2014 Deja un comentario

El pasado 2 de octubre, junto con Ismael González (aka kontrol0) hemos presentado nuestra charlar sobre Tortazo. El evento, como muchos de vosotros ya sabéis, ha sido en la ciudad de Albacete y si has podido asistir o ver los comentarios de la gente en redes sociales como Twitter, has visto que ha sido todo un éxito. Nuestra charla fue la primera del evento, lo que ha sido todo un honor, además de ser muy ventajoso ya que hemos podido disfrutar plenamente de todas las charlas, sin la presión y los nervios acumulados de esperar tu turno. He conocido mucha gente que si bien, ya sabia de ellos por su trabajo y sus “identidades virtuales”, ha sido muy gratificante conocerles personalmente, me ha encantado conocer personas como Kio (@kioardetroya), Telmo (@t31m0), Kao (@MininaKaotika), Daniel García (@cr0hn), Pablo Burgueño (@pablofb), Alex (@ocixela), Pedro (@ocixela), Rafa (@R_a_ff_a_e_ll_o), Pablo González (@pablogonzalezpe), Sauron (@NN2ed_s4ur0n), Carlos (@charliesec), Miguel (@Miguel_Angelhak) entre muchos, muchos otros. Grandes profesionales, grandes personas que me han aportado varias ideas sobre cosas con las que tengo pensado ponerme en breve y de las que espero, poder hablaros en este blog. No suelo asistir a este tipo de eventos por motivos que no vienen al cuento, pero desde luego la filosofía de Navaja Negra me parece que va muy de la mano con lo que yo entendiendo que debería ser una comunidad de Hackers, es una conferencia en la que me pienso apuntar de ahora en adelante, ya sea como ponente o asistente. También me he sorprendido por el interés que ha demostrado la gente con mi libro sobre Python para Pentesters, ya que se ha agotado muy rápidamente y me resultaba curioso ver a la gente andando a mi lado con el libro bajo el brazo, sin saber que era yo el autor XD. Algunos lo sabían y se me acercaban para que les escribiera una dedicatoria, algo que me ha producido una sensación extraña, ya que soy un poco “tímido” con la gente que no conozco y me da un poco de corte ese tipo de cosas, de entrada no sé qué escribir, pero de verdad que agradezco a todos los que compran el libro y de esa forma, apoyan mi trabajo. En conclusión, han sido 3 días en los que hemos aprendido muchísimo y en los que también ha habido cabida para la fiesta y la diversión. Vamos, que recomiendo que os apuntéis para la próxima :-) Para la charla de Tortazo, tenia preparados algunos vídeos en el caso de que tener problemas a la hora de conectarnos con TOR, pero todo ha ido bien, así que en esta corta entrada, os dejo los vídeos que teníamos preparados para la presentación, espero que os gusten y si tenéis cualquier duda, comentario, sugerencia o lo que sea, ya sabéis que podéis escribirnos un mensaje a Isma o a mi. Saludos y Happy Hack.

Tortazo – Information Gathering

Tortazo – Botnet Mode

Tortazo – Onion Repository

Tortazo – Plugin: crawler

Tortazo – Plugin: Hidden Service

Tortazo – Plugin: Bruter

Explotación de Software Parte 34 – Desarrollo de Shellcodes en Linux – Egghunters

octubre 2, 2014 Deja un comentario

Explicación sobre el funcionamiento y uso de los EggHunters bajo plataformas Linux.
Utilizamos las técnicas descritas por Skape en su paper titulado “Safely Searching Process Virtual Address Space” el cual puede ser encontrado en el siguiente enlace: http://www.hick.org/code/skape/papers/egghunt-shellcode.pdf

skapeEggHunter.nasm:    https://github.com/Adastra-thw/ExploitSerie/blob/master/skapeEggHunter.nasm
shellcodeEggHunter.c:     https://github.com/Adastra-thw/ExploitSerie/blob/master/shellcodeEggHunter.c

Repositorio GIT de la serie:
https://github.com/Adastra-thw/ExploitSerie.git


Make a Donation Button

Hacking con Python Parte 34 – Examinando servicios SNMP con PySNMP

septiembre 30, 2014 Deja un comentario

Uso de PySNMP para controlar agentes SNMP en un segmento de red local.

simpleSNMPTest.py:    https://github.com/Adastra-thw/pyHacks/blob/master/simpleSNMPTest.py
simpleSNMPTestOIDs.py:    https://github.com/Adastra-thw/pyHacks/blob/master/simpleSNMPTestOIDs.py
snmpBruter.py:    https://github.com/Adastra-thw/pyHacks/blob/master/snmpBruter.py


Repositorio GIT de la serie:

https://github.com/Adastra-thw/pyHacks.git


Make a Donation Button

Hoy vengo a hablar de mi libro. Python para Pentesters.

septiembre 22, 2014 13 comentarios

A partir del día de hoy, se encuentra disponible al público mi libro sobre Pentesting con Python :-). Se trata de un documento que he escrito basándome en lo que he aprendido en los años que llevo dedicándome a la seguridad informática y al desarrollo de software. Me ha llevado varios meses escribir un documento con el me que sintiera a gusto, un documento en el que pudiera recopilar algunos de los tópicos que considero los más importantes cuando se habla de pentesting y hacking. Los contenidos del libro no son los mismos que has visto en la serie de vídeos que he desarrollado sobre “Hacking con Python”, el libro incluye temas más avanzados y completos, además se explica cómo usar librerías y herramientas que no se han mencionado en los vídeos. Lo he hecho con la idea que siempre he tenido en mente cuando de informática se trata: Cualquier profesional que se dedique a esto tiene que tener unos conocimientos mínimos en programación (que no consiste simplemente en dominar un único lenguaje), tiene que tener la capacidad suficiente para afrontar problemas de manera creativa y utilizando la inmensa cantidad de recursos que se encuentran a su disposición y creo, que es algo que las nuevas generaciones de hackers y pentesters lo suelen olvidar (o mejor, solemos olvidar porque no soy tan mayor. :-) ). He intentado ponerme en el lugar del lector y he enfocado el documento en aquellos temas que a cualquier persona dedicada a temas relacionados con el hacking le gustaría leer. Por otro lado, aquellos que me conocéis (y los que me soportáis :-p ) sabéis que no me siento a gusto “vendiendo humo”, hablando de cosas de las que no controlo plenamente o sobre “teorías” demasiado abstractas que en muchos casos se alejan tanto del mundo real/practico, que en raras ocasiones las vemos reflejadas en herramientas funcionales. Con todo esto, mi idea es que el lector tenga un documento en el que se mezcle la teoría y la practica con muchos ejemplos y casos prácticos.

No es precisamente un documento introductorio a técnicas de pentesting, hacking o programación en general, pero creo que es una buena guía para el “público de todas las edades”, incluso si no sabes programar, solamente necesitas ser curioso, tener ganas de aprender y dedicar algo de tiempo.

Dado que se trataba de mi primera obra y tenía muchísimas dudas sobre cómo debía editar y publicar mi libro, decidí contactar directamente con Chema Alonso para que me diese consejos sobre todos esos temas y me hablase sobre 0xWORD, que es la editorial que él lleva desde hace algunos años. Chema es una persona que se ha ganado mi respeto no solamente por su nivel técnico, sino también porque es una persona con carisma, amable y que siempre esta dispuesto a compartir sus conocimientos y colaborar en lo que pueda, eso si, no le pidas que te consiga una cuenta de Facebook o Hotmail que ahí ya no es tan amable XD. Toda mi vida he pensado que el respeto es algo que hay que ganarse, ya que tus méritos, habilidades y dedicación es lo que realmente cuenta y la gente puede ver el “brillo” de tu labor.

Por otro lado, después de valorar las otras opciones que tenia a mi disposición, he confiado mi obra a 0xWORD y creo que ha sido la decisión correcta ya que me han asesorado y apoyado durante todo el proceso, la verdad es que he quedado muy satisfecho con su trabajo y desde ya os adelanto, que hay otro libro en marcha sobre Python, pero centrado en Maleware, anonimato, Exploiting, Cyberwarfare y todo lo relacionado con la seguridad puramente ofensiva, a lo que se dedican “los chicos malos” de Internet. Seguro que os va a encantar, pero de momento no puedo decir mucho más. :-)

La verdad es que llevaba mucho tiempo pensando en escribir un libro sobre Hacking, ese era uno de los objetivos que tenía previstos para este año y desde el mes de enero comencé a dar pinceladas y a estructurar lo que quería escribir. Todos los días estuve volcando las cosas que tenia en mi cabeza y página tras página iba dando forma al documento. Ha sido una actividad muy estimulante para mí, ya que movía de un lado al otro aquellas cosas que llevo aprendiendo desde que comencé a “jugar” con ordenadores. Mientras escribía, me venían muchos recuerdos de aquellas épocas en las me pasaba horas y horas delante del monitor y mis padres se enfadaban conmigo por ello. Épocas en las que iba a la facultad de informática de mi universidad y me sentía a gusto en las salas de ordenadores programando algo en C, jugando con alguna distro de Linux, o en la biblioteca leyendo algún libro. También recuerdo la forma en la que me miraban algunas personas y con su lenguaje corporal (o a veces directamente) me decían: “¿A dónde vas con esos pelos? ¿Qué haces? Las personas de bien llevan el cabello corto y no se visten así”, recuerdo que me importaba una soberana .…. y de hecho, me divertia mucho ver sus reacciones XD. Los ordenadores y mi conocimiento sobre ellos ha cambiado muchísimo desde aquel entonces, pero prácticamente todo lo demás sigue igual, sin importar los años ni las circunstancias. Solamente espero tener la oportunidad de poder seguir así, de poder seguir aprendiendo cosas, mejorando mis habilidades y compartiendo lo aprendido. Aun hay un largo camino por recorrer.

Si compras el libro, solamente espero que superes con creces lo que has invertido, que te sirva para ampliar tus conocimientos o simplemente recordar cosas que a lo mejor tenias olvidadas y como siempre, si tienes cualquier duda, comentario o sugerencia para una futura edición, no dudes en ponerte en contacto conmigo. Con esta entrada no intento venderte nada, simplemente voy dejar que los contenidos del documento hablen por si solos. Fíjate en el índice del libro y si después de leerlo crees que te puede aportar algo, no dudes en comprarlo, eso es justo lo que yo hago con los libros que realmente despiertan mi interés y creo que es el mejor consejo que se le puede dar a cualquier lector.

Saludos y Happy Hack!

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 1.119 seguidores

A %d blogueros les gusta esto: