Archivo

Archive for the ‘Programacion’ Category

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

septiembre 22, 2014 7 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!

Tortazo v1.1 ya está disponible!

septiembre 19, 2014 Deja un comentario

Hace un par de semanas he terminado de desarrollar la versión 1.1 de Tortazo y dado que he incluido varias cosas que me han parecido interesantes, en esta entrada hablaré un poco sobre los cambios y mejoras que se han incluido en esta primera versión estable (o eso espero) del proyecto. Para aquellos que no saben de que va todo esto, desde hace unos meses se me ocurrió desarrollar un framework de auditoría centrado exclusivamente en la web profunda de TOR (aunque tengo pensado extender sus funcionalidades a otras redes como I2P), la razón es muy simple, porque actualmente no hay, o al menos que yo conozca, herramientas que permitan ejecutar pruebas de penetración contra repetidores o servicios ocultos en TOR. Mi idea ha sido crear un framework que incluya varias funcionalidades y utilidades que puedan ser utilizadas por usuarios finales y por desarrolladores que quieran ejecutar rutinas de código contra repetidores maliciosos o servicios ocultos, algo así como Metasploit Framework, pero enfocado a la web profunda. Además de lo anterior, cuenta con una pequeña API que permite crear plugins que rápidamente se integran en Tortazo y permite reutilizar funciones para conectividad, acceso y pentesting en la web profunda. Aunque llevo algunos meses de desarrollo y estoy bastante satisfecho con los resultados, aun hay muchas cosas que me quedan por implementar, cosas que se pueden mejorar y seguramente, cosas que se deben corregir, pero tengo el animo y la motivación para hacerlas en la próxima versión.

Algunas de las cosas que he hecho en la versión 1.1 son las siguientes:

Documentación en readthedocs.

Documentación completa sobre cómo utilizar Tortazo y sus modos de operación. Todas las secciones se encuentran subidas a readthedocs.org en el siguiente enlace: http://tortazo.readthedocs.org

 

Mejoras en el código.

Se han mejorado los modos de operación y la carga de plugins en el interprete de IPython, además se han deprecado algunas opciones, especialmente las que permitían ejecutar ataques por diccionario, las cuales ahora se encuentran incluidas en el plugin “bruter” de Tortazo. También se han incluido varias funciones en la API para que cualquiera pueda aprovecharlas, como por ejemplo funciones para conectar con servicios ocultos con SSH, FTP, SMB, HTTP o iniciar un túnel con Socat. Dichas funciones se explican en la siguiente sección de la documentación: http://tortazo.readthedocs.org/en/latest/plugin_development.html

 

Ejecutables para Windows y Linux.

Utilizando PyInstaller he generado un fichero ejecutable para Windows y otro para Linux, de esta forma, si solamente quieres probar las funcionalidades básicas de Tortazo, los ficheros ejecutables incluyen todas las dependencias necesarias para usarlo sin necesidad de instalarlas una a una en tu interprete de Python. No obstante, solamente incluye los modos de operación básicos y dado que PyInstaller, ni ninguna de las otras alternativas para convertir programas en Python a ficheros ejecutables soporta la importación dinámica de módulos, el sistema de plugins no se encuentra disponible en los ejecutables generados, los cuales se encuentran ubicados en el directorio “bin” del proyecto.

Modo “repositorio” para descubrir servicios ocultos.

Tal como explicaba en algunas entradas anteriores sobre encontrar y atacar servicios ocultos en la red de TOR, descubrir servicios ocultos no es una tarea trivial, de hecho es todo un reto para cualquier pentester de seguridad que se enfoca en la web profunda de TOR. Pensando en esto, he intentado mitigar un poco el problema creando un modo de ejecución nuevo en Tortazo, el cual se encarga de generar direcciones onion validas y probar si alguno de los tipos de servicios soportados se encuentra en ejecución en dichas direcciones. Para ello existen dos formas de generación y procesamiento de las direcciones:

Incremental: Partiendo de una dirección onion parcial, intenta completar los caracteres restantes con todas las combinaciones validas y probar cada dirección onion resultante.

Aleatorio: De forma indefinida, intentará generar direcciones onion validas y aleatorias, las cuales son posteriormente probadas para determinar si hay un servicio en ejecución en dicha dirección.

Para ver más detalles sobre este modo de operación, la documentación explica detalladamente su funcionamiento interno. http://tortazo.readthedocs.org/en/latest/repo-mode.html#repository-mode-label

Para activar este modo, basta con ejecutar el script Tortazo.py con la opción “-R” especificando un tipo de servicio para ejecutar las pruebas.

	python Tortazo.py -R ftp -O ganiondf6k8ldip -v 

	python Tortazo.py -R ssh -O daditnwf7kqltus -v 

	python Tortazo.py -R http -O RANDOM -v 

En los ejemplos de ejecución anteriores, los dos primeros comandos intentarán generar todas las combinaciones posibles para los caracteres faltantes en las direcciones onion ingresadas con la opción “-O” y con cada una de ellas, se ejecutarán peticiones dependiendo del tipo de servicio indicado en la opción “-R”. Finalmente, en el último ejemplo, se ejecutarán peticiones HTTP contra todas las direcciones aleatorias generadas por Tortazo. Como se puede apreciar, para indicarle a Tortazo que genere direcciones onion aleatorias, solamente es necesario utilizar la opción “-O” con el valor “RANDOM”. Todos los resultados son almacenados en la base de datos y posteriormente pueden ser utilizados desde cualquiera de los plugins integrados en Tortazo.

Por otro lado, en el fichero ubicado en <TORTAZO_DIR>/db/knowOnionSites.txt hay más de 400 direcciones onion con servicios ocultos descubiertos. Dichas direcciones pueden ser comprobadas y automáticamente insertadas en la base de datos de Tortazo editando el valor de la propiedad “loadKnownOnionSites” ubicada en el fichero <TORTAZO_DIR>/config/config.py y cuyo valor por defecto es “False”. En el caso de activar dicha propiedad, cada vez que se ejecute Tortazo en modo “repositorio”, automáticamente se comprobará y se insertará en base de datos dichas direcciones, solamente en el caso de que emitan una respuesta valida.

Configuraciones personalizadas y arranque automático de TOR.

Para que alguien pueda realizar peticiones contra cualquier servicio oculto o simplemente para navegar anónimamente utilizando TOR, es necesario iniciar una instancia de TOR que actuará como cliente y se encargará de crear un circuito para el envío de peticiones. Esto no es nada nuevo, pero además de crear un circuito virtual, también se abren ciertos puertos que permiten interactuar con dicha instancia, como por ejemplo un puerto de control, un puerto SOCKS, un puerto OR, entre otros que dependen directamente de las opciones incluidas en el fichero de configuración “torrc” indicado para iniciar TOR. Estas propiedades y especialmente, el valor del proxy SOCKS, son muy importantes para poder utilizar TOR. Evidentemente, muchas de las funcionalidades incluidas en Tortazo también dependen de que exista un proxy SOCKS por el cual poder enviar peticiones contra la web profunda y en este caso, pueden haber dos posibles escenarios:
1. Existe una instancia de TOR ejecutándose y el puerto SOCKS es alcanzable por Tortazo

2. No existe una instancia de TOR ejecutándose o el valor del puerto SOCKS utilizado por Tortazo no es correcto.

En el primero de los escenarios no hay ningún problema, ya que Tortazo utilizará el puerto SOCKS y por medio de él ejecutará peticiones contra cualquier servicio oculto en la red de TOR, Tortazo leerá el valor de la propiedad “socksPort” localizada en el fichero de configuración <TORTAZO_DIR>/config/config.py para obtener el puerto en la máquina local donde supuestamente deberá existir una instancia de TOR en ejecución cuyo valor por defecto será “9050”. Sin embargo, en el segundo escenario hay un problema, ya que para ciertas tareas, es necesario poder conectarse con la web profunda de TOR utilizando el proxy SOCKS de una instancia en ejecución. En tal caso, es posible utilizar las opciones “-U” y “-T”, donde “-U” indica que se debe usar una instancia de TOR iniciada por Tortazo y -T para iniciar una instancia de TOR desde Tortazo utilizando los valores declarados en el fichero de configuración que se debe pasar por argumento. El fichero <TORTAZO_DIR>/config/config-example/torrc-example contiene algunas opciones de configuración de TOR y puede ser utilizado para iniciar una instancia rápidamente.

	python Tortazo.py -R ftp -O ganiondf6k8ldip -v -U -T config/config-example/torrc-example

Desarrollo de plugins en Tortazo.

En Tortazo existe un sistema de plugins que se basa en el uso de IPython para la carga dinámica de clases. Dichas clases representan los plugins que se integran en Tortazo y extienden de la clase “BasePlugin”, la cual incluye todas las funciones y elementos necesarios para conectarse con la web profunda de TOR. Aun se trata de una API pequeña, pero contará con muchísimas más funciones en futuras versiones. Para ver un ejemplo simple sobre cómo crear un plugin en Tortazo, la siguiente guía puede ser de utilidad. http://tortazo.readthedocs.org/en/latest/plugin_development.html

 

Plugins incluidos en la versión 1.1

El número de plugins que se encuentran integrados en la versión 1.1 es muy pequeño, sin embargo son completamente funcionales y permiten realizar tareas de pentesting contra repetidores o servicios ocultos. Algunos de ellos se explican a continuación.

crawler

Se trata de un plugin que utiliza la API de Scrapy para lanzar un crawler contra un servicio web oculto en la deep web de TOR. Cuenta con varias funciones que permiten especificar las reglas que debe usar el Spider a la hora de visitar enlaces y extraer contenidos. Este plugin, como muchos otros, se encarga de crear un túnel utilizando Socat para mapear un puerto local contra una dirección onion concreta. El valor de dicho puerto por defecto es el 8765, con lo cual debe encontrarse abierto en la máquina donde se ejecuta Tortazo, pero si no es el caso, es posible especificar un valor distinto cuando se invoca a la función “crawlOnionWebSite”.

	python Tortazo.py -P crawler -D -v -U -T config/config-example/torrc-example

	Tortazo Plugin<deepWebCrawlerPlugin> : self.help()

	Tortazo Plugin<deepWebCrawlerPlugin> : self.compareWebSiteWithHiddenWebSite('http://theanarchistlibrary.org/library', 'http://4zeottxi5qmnnjhd.onion/titles.html')

	Tortazo Plugin<deepWebCrawlerPlugin> :self.crawlOnionWebSite("http://4zeottxi5qmnnjhd.onion/")

En las instrucciones anteriores, se carga el plugin en el interprete y posteriormente se ejecutan algunas funciones disponibles en él. La función “help” muestra todas las funciones disponibles en el plugin, la función “compareWebSiteWithHiddenWebSite” se encarga de comparar un sitio web en Internet con el contenido de un sitio web oculto y devuelve un porcentaje que indica el nivel de similitud entre ambos sitios y finalmente, la función “crawlOnionWebSite” se encarga de ejecutar el spider contra la dirección onion indicada.

hiddenService

Este plugin permite crear un servicio web oculto en la deep web con el contenido indicado por el usuario. Con este plugin es posible crear servicios web ocultos con contenidos maliciosos que intenten obtener información sobre el usuario que consulta dicho servicio. Permite crear una dirección onion nueva o utilizar un servicio que se ha inicializado anteriormente.

	python Tortazo.py -P hiddenService -D -U -T config/config-example/torrc-example -v	

        TortazoPlugin <maliciousHiddenServicePlugin> :self.startHTTPHiddenService(serviceDir="/home/adastra/Tortazo/plugins/attack/utils/hiddenServiceTest/",hiddenserviceDir="/home/adastra/Escritorio/hidden_service_django")		

La única función definida en el plugin es “startHTTPHiddenService” y permite iniciar un servicio oculto con los recursos indicados en el argumento “serviceDir”, recursos como páginas html, scripts, CSS, imágenes, documentos, etc. En el caso de que se haya creado un servicio oculto con anterioridad, es posible indicar su ubicación con el parámetro “hiddenserviceDir”, si dicho parámetro no se indica, automáticamente se creará un servicio oculto con una dirección onion nueva.

bruterPlugin

Este plugin simplemente se encarga de ejecutar ataques por diccionario contra diferentes tipos de servicios ocultos, tales como SSH, FTP, SNMP o SMB. Del mismo modo que otros plugins en Tortazo, es necesario contar con una instancia de TOR en ejecución con el puerto SOCKS abierto, de esta forma será posible enviar las peticiones a cada uno de los servicios ocultos indicados.

	python Tortazo.py -P bruter -D -U -T config/config-example/torrc-example -v	

        Tortazo	Plugin <bruterPlugin>: self.sshBruterOnHiddenService("5bsk3oj5jufsuii6.onion",dictFile="/home/user/dict")

	Tortazo Plugin <bruterPlugin> : self.sshBruterOnHiddenService("5bsk3oj5jufsuii6.onion")

	Tortazo Plugin <bruterPlugin> : self.ftpBruterOnRelay("37.213.43.122",dictFile="/home/user/dict")

	Tortazo Plugin <bruterPlugin> : self.ftpBruterOnHiddenService("5bsk3oj5jufsuii6.onion",dictFile="/home/user/dict")

        Tortazo Plugin <bruterPlugin> : self.self.snmpBruterOnRelay("37.213.43.122",dictFile="/home/user/dict")

Existen varias funciones en el plugin que permiten ejecutar ataques por diccionario, las cuales en todos los casos, reciben como argumento el diccionario con nombres de usuario y contraseña. En el caso de no especificar dicho fichero, el plugin utilizará FuzzDB automáticamente para la generación de usuarios y contraseñas a probar. La función “help” permite ver todas las funciones disponibles y en todos los casos, existen funciones para atacar repetidores o servicios ocultos en la deep web de TOR. No obstante, el caso de SNMP es bastante particular, dado que se trata de un protocolo que funciona sobre UDP y el trafico que maneja la red TOR es enteramente TCP, debido a esto, teóricamente no pueden existir servicios ocultos con SNMP, sin embargo si que es posible que algunos de los repetidores encontrados tengan un servicio SNMP en ejecución, por este motivo las funciones disponibles para atacar este tipo de servicios, solamente están disponibles para repetidores y no para servicios ocultos.

Hay algunos otros plugins que también son interesantes y si el proyecto te llama la atención, puedes estudiarlos con mayor detalle en la siguiente sección de la documentación. http://tortazo.readthedocs.org/en/latest/available_plugins.html
Además, existen otros plugins que permiten integrar herramientas como Nessus, W3AF o Shodan.

Saludos y Happy Hack!

Explotación de Software Parte 33 – Desarrollo de Shellcodes en Linux – Reverse Shell

septiembre 18, 2014 Deja un comentario

Desarrollo de una ReverseShell en un sistema Linux. Se enseña el uso de la systemcall “socketcall” con las funciones “socket” y “connect”.

reverse.nasm:      https://github.com/Adastra-thw/ExploitSerie/blob/master/reverse.nasm
reverseTest.c:     https://github.com/Adastra-thw/ExploitSerie/blob/master/reverseTest.c


Repositorio GIT de la serie:

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


Make a Donation Button

Explotación de Software Parte 32 – Desarrollo de Shellcodes en Linux – Bind Shell

septiembre 11, 2014 Deja un comentario

Desarrollo de una BindShell en un sistema Linux. Se enseña el uso de la systemcall “socketcall” con las funciones “socket”, “bind”, “listen” y “accept”.

dump.sh:  https://github.com/Adastra-thw/ExploitSerie/blob/master/dump.sh
bind.nasm: https://github.com/Adastra-thw/ExploitSerie/blob/master/bind.nasm

Repositorio GIT de la serie:

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


Make a Donation Button

 

Hacking con Python Parte 32 – Uso de Fabric sobre servicios SSH

septiembre 9, 2014 Deja un comentario

Uso de la librería Fabric para administrar paralelamente múltiples servidores SSH. Puede ser útil para crear una botnet sobre servidores SSH vulnerables o con contraseñas débiles.

fabfile.py:   https://github.com/Adastra-thw/pyHacks/blob/master/fabfile.py

SimpleFabricAdmin.py:   https://github.com/Adastra-thw/pyHacks/blob/master/SimpleFabricAdmin.py


Repositorio GIT de la serie:

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


Make a Donation Button

Explotación de Software Parte 31 – Desarrollo de Shellcodes en Linux – Execve Local Shell

septiembre 4, 2014 2 comentarios

Primer vídeo en el que se hace un énfasis especial en el desarrollo de shellcodes bajo sistemas Linux. Se enseña un ejemplo en el que es posible generar una shell local.

dump.sh:     https://github.com/Adastra-thw/ExploitSerie/blob/master/dump.sh
shell.nasm:  https://github.com/Adastra-thw/ExploitSerie/blob/master/shell.nasm
exit.nasm:   https://github.com/Adastra-thw/ExploitSerie/blob/master/exit.nasm

 

Repositorio GIT de la serie:

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


Make a Donation Button

Hacking con Python Parte 31 – Examinando programas y librerías con pefile y pydasm

septiembre 2, 2014 Deja un comentario

Usando PEFile y PyDASM para inspeccionar y desensamblar ficheros en formato Portable Executable (PE) en sistemas windows.

 

disassemblerDemo.py:   https://github.com/Adastra-thw/pyHacks/blob/master/disassemblerDemo.py

Repositorio GIT de la serie:

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


Make a Donation Button

Seguir

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

Únete a otros 969 seguidores

%d personas les gusta esto: