Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Hacking ético con herramientas python

jmortegac
January 23, 2016

Hacking ético con herramientas python

Hacking ético con herramientas python

jmortegac

January 23, 2016
Tweet

More Decks by jmortegac

Other Decks in Programming

Transcript

  1. Introducción al pentesting con python • Multiplataforma • Prototipos y

    pruebas de concepto • Muchas herramientas y librerías enfocadas a la seguridad • Buena documentación
  2. W3af • Web application attack and audit framework • Framework

    de test de intrusión web • Escáner de vulnerabilidades • Permite automatizar las tareas repetitivas de pentesting
  3. Requests Proxy http_proxy = "http://10.10.10.10:3000" https_proxy = "https://10.10.10.10:3000" ftp_proxy =

    "ftp://10.10.10.10:3000" proxyDict = { "http" : http_proxy, "https" : https_proxy, "ftp" : ftp_proxy } r = requests.get(url, headers=headers, proxies=proxyDict)
  4. Beautiful Soup • Parsea y permite extraer información de documentos

    HTML. • Soporta múltiples parsers para tratar documentos XML,HTML(lxml,html5lib). • Permite buscar elementos HTML,tales como enlaces, formularios o cualquier etiqueta HTML.
  5. Shodan • Rastrear servidores y dispositivos IP • Obtención de

    banners • Escaneo de puertos con el API de python
  6. DNSPython • Permite resolver nombres de dominios a direcciones IP

    y viceversa • Existen registros para direcciones ipv4,ipv6,servidores de correo
  7. Análisis de metadatos • Metadatos en documentos PDF • pyPDF2

    • Metadatos en imágenes • from PIL.ExifTags import TAGS, GPSTAGS
  8. Python-nmap • Automatizar el escaneo de puertos • Se puede

    tanto de forma síncrona como asíncrona import nmap #síncrono nm = nmap.PortScanner() # nm.scan(‘ip/rango’,’puertos’) results = nm.scan('127.0.0.1', '22,25,80,443')
  9. Python-nmap #obtenemos un diccionario con el resultado del scan print(nm.csv())

    import nmap nm = nmap.PortScanner() results = nm.scan(arguments="-n -A -sT -p22,80,8080,5432,3306")
  10. Python-nmap #Asíncrono nm_async = nmap.PortScannerAsync() def callback_result(host, scan_result): print '------------------'

    print host, scan_result nm_async.scan(hosts='192.168.1.0/30', arguments='-sP', callback=callback_result) while nm_async .still_scanning(): print("Waiting >>>") nm_async.wait(2)
  11. Nmap-scripts • Permiten la programación de rutinas para encontrar posibles

    vulnerabilidades en un objetivo determinado • Primero determinar si el puerto se encuentra abierto para posteriormente detectar vulnerabilidades en el servicio abierto por dicho puerto nm.scan(arguments="-n -A -p3306 -- script=/usr/share/nmap/scripts/mysql-info.nse")
  12. scapy • Equivalente al wireshark • Capturar paquetes • Filtrar

    por protocolos • Leer y escribir pcap • Analizar el tráfico que genera la red
  13. Scapy commands • Generar paquetes • tcp=IP(dst='google.com‘)/TCP(dport=80) • Ver información

    de un paquete • tcp.show() / tcp.show2() • Enviar un paquete • send(tcp) /sendp(tcp)
  14. Scapy commands • Capturar n paquetes de red • pkt

    = sniff(filter="tcp“,count=n) • Leer pcap • file=rdpcap('demo.pcap') • file.summary() • file.sessions() • file.show()
  15. Paramiko • Conexiones ssh import paramiko ssh = paramiko.SSHClient() ssh.load_system_host_keys()

    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(‘127.0.0.1', username=‘user', password=‘password') paramiko.util.log_to_file('paramiko.log')
  16. Paramiko / SSH Key import paramiko ssh = paramiko.SSHClient() rsa_key

    =paramiko. RSAKey.from_private_key_file('/home/user/.ssh/id_rsa', password='password') ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(‘127.0.0.1', pkey=rsa_key, username=‘user', password=‘password')
  17. Metasploit API • Llamadas en formato msgpack • https://community.rapid7.com/docs/DOC-1516 cmdMysqlLogin="""auxiliary/scanner/mysql/mysql_login

    set RHOSTS """ + self.ip cmdMysqlLogin = cmdMysqlLogin +"""\nrun """ print self.client.call('console.write',[self.console['id'],cmdMysqlLogin]) self.processData(self.console['id'])
  18. Nexpose • Herramienta desarrollada por Rapid7 para el escaneo y

    descubrimiento de vulnerabilidades. • Permite el acceso programático a otros programas por medio de peticiones HTTP/s • Las respuestas se devuelven en formato XML • BeautifulSoup para obtener los datos del servidor de vulnerabilidades