Tag Archives: python

Como hacer un “host checker” en Python para Linux

pythonHoy vamos a hacer una pequeña tool en Python para chequear si los hosts están “vivos”. Algo a tener en cuenta es que la tool que desarrollaremos solamente funcionara en Linux

Que vamos a necesitar:

  • Python (funciona en 2.7, pero mejor en 3+)
  • Una conexión a una red (LAN o Internet)
  • Una Computadora corriendo Linux

Si no tenes instalado Python, algo muy difícil ya que la mayoría de las distros actuales lo traen pre-instalado, lo podes bajar de este link: Python

Porque funciona solamente en Linux?

Nunca recomiendo utilizar librerías de terceros, pero sin una librería no se puede utilizar el comando ping de la misma manera que en Linux. En linux cuando usas el comando ping recibís como respuesta un “0” si el host esta “vivo” y otros números si el host no responde. Esto significa que, en Linux, cuando el host responde el ping con éxito recibiremos como respuesta “0” (operation completed successfully), en el caso contrario responderá con un numero de error. En Windows esto es mas complicado. Cuando le hacemos ping a un host el comando devolverá como respuesta que la operación se completo indistintamente si el host vivo o no.

Código Fuente:

Modo de uso:

> $ python hostchecker.py -s xxx.xxx.xxx -r1 xxx -r2 xxx

Ejemplo

$ python hostchecker.py -s 10.0.0 -r1 1 -r2 150
[*] Host Scanner launched!
[+] 10.0.0.1 is up!
[+] 10.0.0.21 is up!
[+] 10.0.0.23 is up!
[+] 10.0.0.26 is up!
[+] 10.0.0.100 is up!

Como ven es una tool muy sencilla y fácil de usar!

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

.

Ejecutando nmap con Python

nmapNmap es probablemente una de las herramientas más conocidas y utilizadas en el mundo del pentesting y no es para menos, ya que se trata de un escaner que no solamente permite encontrar puertos abiertos en un máquina o segmento de red, sino que también permite ejecutar scripts NSE (Nmap Scripting Engine) para filtrar información o detectar vulnerabilidades sobre el objetivo.

Algunas de las características avanzadas que incluye Nmap y que son igualmente útiles para pentesters, administradores de sistemas y atacantes, se listan a continuación:

  • Implementación de técnicas de evasión de IDS/IPS y Firewalls
  • Permite ejecutar varias técnicas de escaneo, entre las que se incluyen escaneos del tipo XMAS, Null, Fin, Stealth, entre muchos otros.
  • Permite la fragmentación de paquetes a la hora de realizar el escaneo. La finalidad de esta técnica es la de dificultar la identificación del escaneo por parte de mecanismos como IDS o IPS
  • Generación aleatoria de hosts y señuelos como origen de los paquetes
  • Ejecución de scripts NSE, así como la posibilidad de crear scripts personalizados utilizando lenguaje LUA.
  • Capacidad de ejecutar “Idle scans” que permiten utilizar un host cuyo manejo del numero de secuencia de los paquetes IP es predecible. (ver: TCP Idle Scan)
  • Capacidad de controlar la frecuencia en la que se envían los paquetes de datos al sistema objetivo. De esta forma es posible controlar cada cuanto se envían paquetes para la detección del estado de un puerto.

Estas son tan solo algunas de las características que convierten a Nmap en una herramienta que se debe de encontrar en el arsenal de cualquier pentester. Sin embargo, en ocasiones es muy útil poder automatizar su uso por medio de scripts o rutinas externas. En el caso de Python, es posible hacerlo como con cualquier otro ejecutable, se puede crear un proceso utilizando la utilidad subprocess de Python y ejecutar Nmap con los argumentos adecuados. No obstante, hacerlo de esta forma puede resultar ineficiente, ya que seria necesario parsear los contenidos del canal estándar de salida (stdout) para que la información retornada por Nmap pueda ser útil desde un script. Una solución mucho más adecuada para este propósito y desde luego mucho más elegante, es utilizando una librería que se encargue de estos detalles y devuelva una estructura de datos consistente con los resultados devueltos por Nmap. Una de las mejores alternativas es python-nmap.

Utilizando Python-nmap

Python-nmap es una librería que se encuentra en desarrollo continuo y que a la fecha de escribir este documento, soporta todas las características disponibles en la ultima versión de Nmap. Existen dos versiones que permiten operar con Python 3.x y Python 2.x, lo cual es importante tenerlo en cuenta a la hora de instalar dicha librería. Por otro lado, con esta librería es posible ejecutar escaneos de forma síncrona o asíncrona. Un escaneo síncrono, consiste simplemente en que python-nmap bloqueará el hilo de ejecución principal hasta que el escaneo finalice su ejecución. Un escaneo asíncrono ejecuta el escaneo Nmap en un nuevo hilo de ejecución y permite que el hilo principal siga ejecutándose. En un escaneo asíncrono, se permite la definición de una función de callback que será invocada de forma automática cuando se obtenga un resultado sobre alguno de los puertos analizados.

Para instalar la librería, se sigue el mismo procedimiento que muchas de las librerías disponibles para Python, consiste simplemente en ejecutar el script setup.py con el argumento install el cual se encuentra ubicado en el directorio raíz del paquete descargado.

El uso básico de la librería es por medio de la clase PortScanner. Dicha clase implementa todas las funciones necesarias para ejecutar un escaneo y recuperar la información retornada por Nmap.

Desde el interprete de Python, se ha creado un objeto del tipo PortScanner y luego se ha ejecutado un escaneo contra la máquina local en los puertos 22, 25, 80 y 443. Las funciones scaninfo, command_line y all_host devuelven información general sobre el escaneo ejecutado, el comando Nmap ejecutado y todos los hosts que han sido analizados en el escaneo.

Como se puede apreciar, es posible recorrer el diccionario que contiene los resultados utilizando como claves, el host analizado, el protocolo y el puerto analizado. Se trata de un diccionario anidado y como tal, puede ser recorrido utilizando instrucciones y funciones estándar del lenguaje.
Por otro lado, se trata de una librería que permite ejecutar Nmap de forma personalizada, del mismo modo que lo haría un pentester o administrador de sistemas desde linea de comandos, especificando los argumentos necesarios para la ejecución del escaneo.

Con el parámetro “arguments” es posible especificar las opciones que recibirá Nmap para ejecutar el escaneo contra los objetivos definidos. Con esto, es posible controlar mucho mejor el proceso de escaneo.

Finalmente, tal y como se comentaba anteriormente, es posible ejecutar un escaneo asíncrono utilizando python-nmap tal y como se detalla a continuación.

Para implementar un escaneo asíncrono, se debe utilizar la clase PortScannerAsync la cual es exactamente igual a la clase PortScanner con la diferencia de que incluye un argumento adicional que permite definir una función de callback y cuenta con algunas funciones adicionales para controlar el proceso de escaneo en el caso de ser necesario.

Python-nmap es una muy buena solución que permite implementar las funcionalidades completas de Nmap desde cualquier script en python. Se trata desde luego, de una utilidad que viene muy bien a cualquier proyecto relacionado con la seguridad informática o para el uso de un pentester profesional.

OS X Auditor: Herramienta de análisis forense para Mac

apple-bajo-lupaOS X Auditor es una herramienta gratuita de análisis forense para Mac OS X. Está escrita en Python y parsea/hashea los siguientes elementos de un sistema en ejecución o una copia que quieras analizar:

  • Las extensiones del kernel
  • Los agentes del sistema y demonios
  • Agentes y demonios de terceros
  • Los viejos y obsoletos system y los elementos de inicio de terceros
  • Agentes de usuario
  • Archivos descargados de los usuarios
  • Las aplicaciones instaladas

Y luego extrae:

  • Archivos en cuarentena de los usuarios
  • Historial de los usuarios de Safari, descargas, topsites, bases de datos HTML5 y localstore
  • Cookies de Firefox, descargas, formhistory, permisos, lugares e inicios de sesión
  • Historial de los usuarios de Chrome y archivos de historial, cookies, datos de acceso, sitios más visitados, datos de webs, bases de datos HTML 5 y el almacenamiento local
  • Cuentas sociales y de correo electrónico de los usuarios
  • Los puntos de acceso WiFi señala a los que el sistema auditado se ha conectado(y trata de geolocalizarlos)

También busca palabras clave sospechosas en el archivo .plist.

Puede verificar la reputación de cada archivo en:

  • MHR Team Cymru
  • VirusTotal
  • Malware.lu
  • …su propia base de datos local

Por último, los resultados pueden ser:

  • Representados como un archivo de log txt sencillo (para que puedas hacer cat-pipe-grep en ellos … o simplemente grep )
  • Representados como un archivo de log HTML
  • Enviados a un servidor Syslog

Uso:

Link: https://github.com/jipegit/OSXAuditor

Diferencia entre Linux y Unix

¿Que es Linux?

Linux es actualmente un nombre común para una gran variedad de sistemas operativos. Muchas empresas venden Linux y es posible que haya oído hablar de algunas de ellas, Red Hat, Debian, SuSe, Slackware, etc. Linux es un buen SO, ya que es compatible con el popular lenguaje de programación PHP. Es también elegido por muchas empresas de hosting web, en la que, en general, tiene un historial de seguridad muy bueno y tiende en promedio a ser un sistema operativo estable. Además, el software Linux es gratis.

¿Que es Unix?

La ultima versión se dice que se encuentra muy cera en comparación con las versiones de Linux. La principal diferencia es la historia de como las dos versiones llegaron a existir. Linux es una rama del sistema operativo Unix, donde los sistemas operativos “Unix-based” son refinamientos de Unix mismo. Linux, básicamente, es un primo de los sistemas operativos “Unix-Based”. Los principales sistemas operativos “Unix-based” son FreeBSD y OpenBSD. Estos sistemas operativos suelen ser muy estables, una vez instalados. OpenBSD también tiene la reputación de ser muy seguro, se dice que en los últimos 6 años solo había un agujero de seguridad en el propio software. Sin embargo, OpenBSD no permite todo, tienes que sacrificar algo de flexibilidad por seguridad. Estos sistemas operativos (FreeBSD y OpenBSD) son gratis al igual que Linux. Por lo general las empresas de hosting Unix son mas baratas que Windows Server, esto se debe a que la mayoría de los sistemas operativos Unix y su software son gratuitos. Sin lugar a dudas los servicios de hosting del tipo Unix/Linux (nix, **nix) son mas populares y si tiene la intención de utilizar programas Perl, Python en su sitio, les recomiendo Unix, aunque Perl y Python  están disponibles para Windows Server no son soportados nativamente. La mayoría de los scripts Perl y Python en Internet son para Unix/Linux y algunos incluyen funciones que solo funcionaran en un sistema Unix/Linux, tales como el uso de sendmail. Muchos desarrolladores están de acuerdo en que la combinación de Perl o Python y MySQL/mSQL en un servidor Unix es la mejor combinación para aplicaciones web y el acceso a base de datos, es barato y puede soportar muchos procesos simultáneos.