Tag Archives: hacking

Colección de Herramientas de Hacking (Python)

ninja-ideSi estas involucrado en el análisis de vulnerabilidades, ingeniería inversa, o pentesting, les sugiero probar con el lenguaje Python. Cuenta con un gran conjunto de bibliotecas y programas útiles. En este post se enumeran algunos de ellos.

La mayor parte de las herramientas enumeradas están desarrolladas en Python, otras son enlaces Python a librerías C existentes. es decir, que hacen que esas bibliotecas se puedan utilizar fácilmente a partir de programas escritos en Python.

.

.

Network

  • Scapy: envía, rastrea y analiza y crea paquetes de red. Se puede usar de forma interactiva o como una librería
  • pypcap, Pcapy y pylibpcap: varios enlaces Python para libpcap
  • libdnet: rutinas de red de bajo nivel, incluyendo la interfaz de búsqueda y transmisión de tramas Ethernet
  • dpkt: rápida y simple creación de paquetes y análisis, con las definiciones básicas de los protocolos TCP/IP
  • Impacket: modifica y decodifica paquetes de red. Incluye soporte para los protocolos de más alto nivel, tales como NMB y SMB
  • pynids: wrapper de libnids que incluye sniffing, IP defragmentation, reensamblado de streams TCP y detección de escaneos de puertos
  • Dirtbags py-pcap: lee ficheros pcap sin libpcap
  • flowgrep: grep a través de payloads de paquetes utilizando expresiones regulares
  • Knock Subdomain Scan: enumera los subdominios de un dominio de destino a través de una lista de palabras
  • SubBrute: Herramienta de enumeración rápida de subdominios
  • Mallory: proxy man-in-the-middle extensible TCP/UDP, soporta la modificación de protocolos no estándar al vuelo
  • Pytbull: framework de pruebas de IDS/IPS muy flexible (incluye más de 300 tests)

Debugging and Reverse Engineering

  • Paimei: framework de ingeniería inversa, incluye PyDBG, PIDA, pGRAPH
  • Immunity Debugger: GUI programable y debugger en linea de comandos
  • mona.py: PyCommand para Immunity Debugger que reemplaza y mejora pvefindaddr
  • IDAPython: plugin de IDA Pro que integra Python, permitiendo ejecutar scripts en IDA Pro
  • PyEMU: emulador IA-32 completamente programable, útil para análisis de malware
  • pefile: permite leer y trabajar con archivos Portable Executable (PE)
  • pydasm: interfaz en Python para la librería libdasm de desensamblado x86
  • PyDbgEng: wrapper en Python para el motor de depuración de Microsoft Windows
  • uhooker: intercepta llamadas a llamadas a la API dentro de DLLs , así como las direcciones arbitrarias en el archivo ejecutable en la memoria
  • diStorm: biblioteca de desensamblador para AMD64, bajo licencia BSD
  • python-ptrace: depurador usando ptrace (Linux, BSD y Darwin system call para trazar procesos) escrito en Python
  • vdb / vtrace: API de depuración de procesos multi-plataforma implementado en python, y vdb es un depurador que lo utiliza
  • Androguard: ingeniería inversa y análisis de aplicaciones de Android
  • Capstone: Framework desensamblador ligero multi-plataforma, multi-arquitectura con enlaces Python
  • PyBFD: Interfase Python para la libreria GNU Binary File Descriptor (BFD)

Fuzzing

  • Sulley: framework de desarrollo fuzzer y pruebas que consiste en varios componentes extensibles
  • Peach Fuzzing Platform: framework de fuzzing extensible para la generación y la mutación basada en fuzzing (la v2 fue escrita en Python)
  • antiparser: fuzz testing y API de inyección de fallos
  • TAOF: (el Arte del Fuzzing) incluye ProxyFuzz, un fuzzer man-in -the-middle de red no determinista
  • untidy: fuzzer XML de propósito general
  • Powerfuzzer: fuzzer web altamente automatizado y totalmente personalizable (protocolo HTTP basado en fuzzer de aplicación)
  • SMUDGE
  • Mistress: genera formatos de archivos al vuelo y protocolos con datos malformados, basados en patrones predefinidos
  • Fuzzbox: multi-codec media fuzzer
  • Forensic Fuzzing Tools: genera ficheros fuzzeados, sistemas de ficheros, y sistemas de ficheros con ficheros fuzzeados para probar la robustez de herramientas forenses y sistemas de análisis
  • Windows IPC Fuzzing Tools: herramientas para fuzzear aplicaciones que usan mecanismos Windows Interprocess Communication
  • WSBang: ejecuta pruebas automáticas contra servicios web SOAP
  • Construct: librería para parsear y construir estructuras de datos (binario o texto).
  • fuzzer.py (feliam): fuzzer sencillo de Felipe Andres Manzano
  • Fusil: librería en Python usada para escribir programas de fuzzing

WEB

  • Requests: librería HTTP sencilla y elegante, hecha para seres humanos
  • HTTPie: cliente http similar a cURL pero más intuitivo.
  • ProxMon: procesa logs de proxy y crea informes con los resultados
  • WSMap: encuentra servicios web y descubre ficheros
  • Twill: navega por Internet mediante un interface en línea de comandos. Soporta web testing automatizado
  • Ghost.py: cliente webkit escrito en Python
  • Windmill: herramienta de pruebas creada para automatizar y depurar aplicaciones web
  • FunkLoad: medidor de carga web funcional
  • spynner: módulo de navegación web programable para Python con soporte Javascript/AJAX
  • python-spidermonkey: binding para el motor JavaScript de Mozilla SpiderMonkey; permite llamar y evaluar scripts y funciones Javascript
  • mitmproxy: proxy HTTP de interceptación con soporte SSL. Permite inspeccionar y editar tráfico al vuelo.
  • pathod / pathoc: demonio/cliente para saturar clientes y servidores HTTP

Forensics

  • Volatility: extrae y analiza artefactos digitales de la memoria volátil (RAM)
  • Rekall: Framework de análisis de memoria desarrollado por Google
  • LibForensics: librería para desarrollar aplicaciones forenses digitales
  • TrIDLib: identifica los tipos de archivo de sus firmas binarias. Ahora incluye Python binding
  • aft: Android forensic toolkit

Malware Analysis

  • pyew: editor hexadecimal y desensamblador en línea de comandos, principalmente usado para analizar malware
  • Exefilter: filtra formatos de archivo en mensajes de correo electrónico, páginas web o archivos. Detecta muchos formatos de archivo comunes y puede eliminar contenido.
  • pyClamAV: añade capacidades de detección de virus para tu software Python
  • jsunpack-n: unpacker de JavaScript genérico: emula la funcionalidad del navegador para detectar exploits dirigidos a explotar vulnerabilidades en navegadores y plugins
  • yara-python: identifica y clasifica muestras de malware
  • phoneyc: implementación de honeyclient totalmente escrito en python
  • CapTipper: analiza, explora y reactiva trafico HTTP malicioso desde un archivo PCAP

PDF

  • peepdf: Herramienta de Python para analizar y explorar los archivos PDF para saber si pueden ser dañinos
  • Didier Stevens’ PDF tools: analiza, identifica y crea ficheros PDF (incluye PDFiD, pdf-parser, make-pdf y mPDF)
  • Opaf: Open Framework Analysis PDF . Convierte PDF a un árbol XML que puede ser analizado y modificado.
  • Origapy: wrapper de Python para el módulo de Ruby Origami que desinfecta archivos PDF
  • pyPDF2: Python PDF toolkit, extrae info, corta, une, cifra, descifra…
  • PDFMiner: extrae texto de ficheros PDF
  • python-poppler-qt4: une Python con la librería Poppler PDF, incluyendo soporte Qt4

MISC

  • InlineEgg: toolbox de clases para escribir pequeños programas en Python
  • Exomind: para la creación de gráficos y el desarrollo de módulos de inteligencia de código abierto, centrada en servicios de redes sociales, motores de búsqueda y mensajería instantánea
  • RevHosts: enumera los virtual hosts de una dirección IP dada
  • simplejson: JSON encoder/decoder, para por ej. usar Google’s AJAX API
  • PyMangle: herramienta de línea de comandos y una biblioteca de Python utilizada para crear listas de palabras para su uso con otras herramientas de pruebas de intrusión
  • Hachoir: permite ver y editar un stream binario campo por campo
  • py-mangle: Herramienta de linea de comandos y biblioteca de Python que se utiliza para crear listas de palabras para su uso con otras herramientas de pentesting

En el link también van a encontrar otras herramientas y scripts desarrolladas en Python como así también mucha documentación acorde.

Python tools for penetration testers

.

Una Introducción a Sniffing de Red

Muchas empresas creen que están a salvo mediante el uso de algunas herramientas antivirus inteligente para proteger sus equipos de backdoors como las herramientas de administración remota o keyloggers, es bueno utilizar algún antivirus inteligente o firewall, pero se debe tener en cuenta el sniffing como un problema de seguridad.

Existen muchas herramientas disponibles para diferentes sistemas operativos, incluyendo Windows y Linux, vamos a hablar de las herramientas mas adelante, pero en primer lugar es necesario describir que es “sniffing”.

Las herramientas de sniffing de red y los analizadores de paquetes generalmente son la misma cosa, el objetivo principal del “sniffing” es analizar los paquetes entrantes y salientes, hay que tener en cuenta que cuando nos conectamos a un servidor web o cualquier red (de computadoras) se esta enviando datos a través de una conexión ethernet (por cable) o inalámbrica en forma de paquetes, los datos que enviamos viajan en forma de paquetes.

Un paquete de datos contiene la Dirección IP fuente (emisor) y destino (receptor) y la dirección MAC y también contiene los datos que se van a enviar. Así que imaginemos que si alguien recibe este paquete, esta persona puede fácilmente saber lo que estamos enviando, un atacante puede fácilmente “sniffear” información confidencial (tarjeta de crédito, paypal, contraseñas, etc), por lo que el “sniffing” es un ataque importante que se debe considerar como una medida de seguridad.

Las grandes empresas y los servidores web utilizan una conexión segura para transmitir datos, por ejemplo, PayPal utiliza https:// en lugar de http:// por lo que los datos se viajan en forma encriptada. Aunque se este utilizando SSL, esto no significa que sus datos estén seguros siempre, hay maneras de crackear un canal seguro SSL.

Todo lo que dijimos anteriormente nos muestra que el “sniffing” no es algo bueno. sin embargo, esto no es totalmente cierto se le puede dar un uso positivo al sniffer, usándolo regularmente, cuyo objetivo sera mantener la red y el sistema funcionando normalmente.

  • Capturando paquetes
  • Registrando y analizando el trafico de red
  • Desencriptando paquetes y mostrándolos en texto plano
  • Convirtiendo datos a un formato legible
  • Mostrando información relevante como ser Dirección IP, Protocolo, nombre de un host o servidor, etc

Mientras que los usos negativos son claramente:

  • Capturar contraseñas, que son la razón principal para la mayoría de los usos ilegales de las herramientas de “sniffing”
  • Capturar información critica y privada de transacciones, como nombre de usuario, numero de cuenta bancaria, usuario y contraseña
  • Grabar y capturar EMail o mensajería instantánea (Chats, Messenger, GTalk, etc) y acumular el contenido

Las herramientas mas conocidas utilizadas para sniffing son:

  • Wireshark
  • Kismet (para wireless)
  • NetStumber (para wireless)
  • KisMAC (para wireless y MacOS X)
  • Ettercap
  • Tcpdump
  • Cain & Abel
  • etc

 

Descubrir una contraseña de seis caracteres en 4 segundos

La tecnología avanza sin precedentes y, con eso, debería hacerlo el usuario en tratar de mantenerse al margen de los abusos que realizan de ella en beneficio de algunos delincuentes.

A través de la explotación de la arquitectura de los procesadores gráficos se han realizado importantes mejoras a nivel de procesamiento de datos.

Esos avances, lamentablemente, también son utilizados por los atacantes para maximizar la eficiencia de sus ataques. Por lo tanto, la investigación de nuevas tecnologías no siempre va tener un fin positivo. Como las empresas de hardware no pueden controlar estrictamente el uso que será dado a sus dispositivos, es responsabilidad del usuario tomar medidas para prevenir posibles ataques. A continuación, analizaremos datos que nos revelan que el paralelismo proporcionado por los procesadores gráficos a través del procesamiento multi-hilo puede superar ampliamente el procesamiento de las CPU en el descifrado de contraseñas.

Capacidad de procesamiento

Los estudios arrojan resultados devastadores de utilización de GPU sobre CPU en ataques de fuerza bruta. Una contraseña de 5 caracteres alfanuméricos puede ser vulnerada, por una CPU promedio actual, en 24 segundos a una tasa de 9.8 millones comparaciones por segundo. Ese número que realmente parece asombroso, resulta ínfimo si lo comparamos con la tasa de procesamiento que puede tener una GPU (ATI Radeon 5770), ya que puede realizar 3300 millones de comparaciones por segundo. En este caso, la velocidad en que el procesador gráfico descifraría la clave es menor a un segundo.

En caso de aumentar su longitud, y contar con una clave de 9 caracteres combinando números, letras en mayúsculas y minúsculas y símbolos, entonces a la CPU le llevaría 43 años descifrar la clave mientras que la GPU la estaría rompiendo en aproximadamente un mes y medio.

Buenas prácticas y sugerencias

Esto significa que combinar letras con números es una muy buena práctica, no obstante el usuario ahora debe hacer más que nunca mayor énfasis en la longitud de sus claves. De hecho, cuanto mayor la capacidad de procesamiento que tengan los atacantes, mayor es la longitud que debe tener la clave del usuario para no salir perdiendo en el desfasaje tecnológico.

A continuación, enumeramos algunas sugerencias importantes:

  • Un carácter más, siempre va aumentar exponencialmente la complejidad de la clave.
  • Cambiar caracteres por números similares para poder recordarlos (A=4, E=3, I=1, etc.).
  • Utilizar varias palabras juntas.
  • Mezclar los números en las palabras para que ninguna palabra pertenezca a algún idioma.

La siguiente contraseña de ejemplo: L4c4s4d3cr1st4l!; puede ayudar a ilustrar al lector un caso de una contraseña de 16 dígitos, con mayúsculas, minúsculas, números y símbolos que no es tan difícil de recordar para el usuario y que con la tecnología existente se tardarían miles de años en poder descifrarla.

 

Introducción y Tutorial de NetCat – Ncat

Netcat es una de las mas importante y mejores herramientas que juega un papel importante en el campo de las pruebas de seguridad IT, pentesting, o ethical hacking, también se la conoce como la “Navaja Suiza” para TCP/IP. Pero que sea para TCP/IP no quiere decir que solo pueda ser utilizada solamente para TCP, también puede ser usada para UDP. La importancia de Netcat radica en que puede ser usada con muchos propósitos.

Si como muchos profesionales de seguridad IT utilizas alguna distro de Linux como Backtrack, Gnacktrack, BackBox, Blackbuntu u otras puedes encontrar netcat en las mismas, abra una terminal y escriba “ncat” y si el mismo responde no necesitas instalarlo.

En este post voy a cubrir algunas cuestiones de uso básico y avanzado de Netcat, pero antes de empezar con el tutorial quiero explicar algunos pormenores.

Que es NetCat?

Netcat es presentada como una utilidad de networking que lee y escribe datos a través de conexiones de red, usando el protocolo TCP/IP. Unix tiene el comando “cat” y netcat ha sido diseñado para alcanzar la meta del comando cat, puedes usar netcat en diferentes sistemas operativos, el equipo de Nmap ha diseñado ncat con el concepto de netcat, por lo que en principio son la misma cosa.

Que puedes hacer con NetCat?

Esta es la pregunta mas importante y simple que uno se puede hacer acerca de esta herramienta, la respuesta es que netcat puede hacer varias cosas, pero aquí les dejo las mas importantes.

  • Banner Grabbing
  • File Transfering
  • Telnet Usage
  • Shell Backdoor

Tutorial

Puede utilizar ncat en su SO Windows  también, pero para este tutorial estoy utilizando Linux BackTrack 5 R1, así que aquí esta el tutorial desde básico hasta avanzado. El comando basico es el siguiente

# ncat <options> <hostname> <port>

El puerto por defecto para netcat es el 31337, pero ud puede usar cualquier otro puerto para conectar con el servidor, recuerden que esto es un tutorial de ncat por lo que el comando que voy a escribir es ncat en lugar de netcat. Puedes encontrar ayuda a través del siguiente comando:

# ncat -h

Si quieres saber el banner (el proceso se llama “banner grabbing”) de un software de servidor entonces utilice el comando mas simple de ncat

# ncat google.com 80

Usted seguramente se pregunte porque he utilizado el puerto 80, El puerto 80 es utilizado para HTTP, y a veces los grandes servidores utilizan firewalls o IDS (Sistema de Detección de Intrusos) entonces otro puerto podría estar cerrado.

Así que utilizando el método de “banner grabbing” se puede obtener información muy valiosa.

Puedes subir cualquier archivo a cualquier servidor o computadora cliente aquí en el comando principal sustituir la dirección IP a la dirección IP deseada:

# ncat -l 127.0.0.1 80 < test.txt