Python Lenguaje Preferido por Hackers

Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis que favorezca un código legible.

Ahora se están preguntando porque Python es el lenguaje favorito utilizado para el hacking? pues esto se debe a los miles y miles de móodulos que existen y que facilitan el desarrollo de herramientas que nos permitan automatizar las tareas durante el proceso de hacking, de forma rapida y sencilla. Python cuenta con más de 1.000 módulos y muchos más están disponibles en varios repositorios. Esto no quiere decir que los lenguajes de script como BASH, Perl y Ruby no puedan hacer las mismas cosas que Python, pero construir esas capacidades es mucho más fácil usando Python.

Todo lo antes mencionado nos permite desarrollar en pocas lineas desde un simple escaner de puertos, hasta un blackbox que ejecute todo el proceso para hackear o incluso para proteger sus sistemas.

Algunas herramientas en python para hacking:

    Scapy: Utilizado para el proceso de sniffing o olfateo del trafico de red.
    dpkt: Rápido, y simple para la creación y el parsing de paquetes, para protocolos TCP/IP.
    Impacket: Su objetivo es permitir crear y decodificar parquetes de red.
    Knock: Efectivo para el proceso de enumeracion de dominios.
    Pytbull: Excelente para realizar pruebas a IPS/IDS.
    Paimei: Framework para ingeniería inversa, incluye PyDBG, PIDA, pGRAPH.
    Python-nmap: Es una biblioteca python que ayuda en el uso del escáner de puertos nmap. Permite manipular fácilmente los resultados del análisis nmap.
    Scrapy: Web crawling framework permite obtener estructuras de datos de sitios web.
    untidy: fuzzer XML de propósito general
    Windows IPC Fuzzing Tools: herramientas para fuzzear aplicaciones que usan mecanimos Windows Interprocess Communication
    WSBang: Ejecuta pruebas automáticas contra servicios web SOAP
    findmyhash: Script en Python para crackear hashes usando servicios online.
    Aqui les muestro algunos ejemplos sencillos:
    MeterSSH: Una manera fácil de inyectar código shell nativo en memoria y llevarlo al atacante a través de un túnel SSH. Todo con un único fichero Python que se puede convertir fácilmente en ejecutable usando PyInstaller o py2exe.
    pyew: una herramienta desde la línea de comandos para analizar malware de forma estática.
    Noriben: Script que funciona en conjunción con Procmon de Sysinternals para analizar malware en sandbox.
    s7-brute-offline.py: Herramienta que que puede realizar ataques off-line de fuerza bruta contra controladores lógicos programables (PLCs) Siemens.
    The Backdoor Factory: Un interesante script en Python para “backdoorizar” ejecutables y librerías de Windows (Win32 PE).

Ahora veremos unos pequeños ejemplos de tools sencillas para hacking.

Escaner de puertos en python:

***********************************************************

import optparse, nmap
class NmapScanner:
def __init__(self): self.nmsc = nmap.PortScanner()

def nmapScan(self, host, port):
self.nmsc.scan(host, port)
self.state = self.nmsc[host][’tcp’][int(port)][’state’]
print " [+] "+ host + " tcp/" + port + " " + self.state

def main():

parser = optparse.OptionParser("usage%prog " + "-H -p ")
parser.add_option(’-H’, dest = ’host’, type = ’string’, help = ’Please, specify the target host.’)
parser.add_option(’-p’, dest = ’ports’, type = ’string’, help = ’Please, specify the target port(s) separated by comma.’) (options, args) = parser.parse_args() if (options.host == None) | (options.ports == None): print ’[-] You must specify a target host and a target port(s).’ exit(0) host = options.host ports = options.ports.split(’,’)

for port in ports:
NmapScanner().nmapScan(host, port)

if __name__ == "__main__":
main()

***********************************************************

Verificar la existencia de un usuario en un servidor smtp

***********************************************************
#!/usr/bin/python
import socket
import sys
if len(sys.argv)!=2:
print "Usage:,vrfy.py,"
sys.exit(0)

#Create,a,Socket
s=socket.socket(socket.AF_INET,,socket.SOCK_STREAM)
#Connect,to,the,Server,
connect=s.connect(('192.168.11.215',25))
#Receive,the,banner
banner=s.recv(1024)
print banner
# VRFY a user
s.send('VRFY,'+sys.argv[1]+'\r\n')
result=s.recv(1024)
print result
#Close the socket
s.close()

***********************************************************

A continuación algunos libros que para mi concepto son excelentes para aprender python orientado al hacking.

Hacking with Python: The Ultimate Beginners Guide
Violent Python: A Cookbook for Hackers, Forensic Analysts, Penetration Testers and Security Engineers
Black Hat Python: Python Programming for Hackers and Pentesters
Gray Hat Python: Python Programming for Hackers and Reverse Engineers
Learning Python, 5th Edition

Espero les guste mi post, no olviden compartir!!

About Omar Gudiño view all posts

Ingeniero Informatico, especialista en Seguridad Informática y Arquitecto de Soluciones Cloud. Apasionado de la seguridad Informática y las Artes Marciales.

1 Comment Unéte a los comentarios →