hacking ético con herramientas python

94
Hacking ético con herramientas python José Manuel Ortega | @jmortegac

Upload: jose-manuel-ortega-candel

Post on 22-Jan-2018

1.192 views

Category:

Software


94 download

TRANSCRIPT

Page 1: Hacking ético con herramientas Python

Hacking ético con herramientas python

José Manuel Ortega | @jmortegac

Page 2: Hacking ético con herramientas Python

http://jmortega.github.io

Page 3: Hacking ético con herramientas Python

http://jmortega.github.io

Page 4: Hacking ético con herramientas Python

https://speakerdeck.com/jmortega

Page 5: Hacking ético con herramientas Python

Agenda

Introducción al pentesting con python

Herramientas avanzadas

Módulos(Sockets,Requests,Beautifulsoup,Shodan)

Análisis de metadatos

Demo pentesting-tool

Análisis de puertos(nmap,pcapy,scapy)

Page 6: Hacking ético con herramientas Python

Introducción al pentesting con python

• Multiplataforma

• Prototipos y pruebas de concepto

• Muchas herramientas y librerías

enfocadas a la seguridad

• Buena documentación

Page 7: Hacking ético con herramientas Python

Introducción al pentesting con python

Page 8: Hacking ético con herramientas Python

SQL Map

Page 9: Hacking ético con herramientas Python

Sparta

• http://sparta.secforce.com • Pruebas de pentesting en las fases de

exploración y enumeración

Page 10: Hacking ético con herramientas Python

The Harvester

https://github.com/laramies/theHarvester

Page 11: Hacking ético con herramientas Python
Page 12: Hacking ético con herramientas Python

W3af

Page 13: Hacking ético con herramientas Python

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

Page 14: Hacking ético con herramientas Python

Introducción al pentesting con python

Page 15: Hacking ético con herramientas Python

Security Tools builder

• https://github.com/abirtone/STB

Page 16: Hacking ético con herramientas Python

Paso de parámetros

import argparse

Page 17: Hacking ético con herramientas Python

Ping Scan NetWork

Page 18: Hacking ético con herramientas Python

Ping Scan NetWork

Page 19: Hacking ético con herramientas Python

Ping Scan NetWork

from subprocess import Popen, PIPE

Page 20: Hacking ético con herramientas Python

Sockets module

import socket

socket.

socket(socket.AF_INET,socket.SOCK_STREAM) #TCP

result = sock.connect_ex(('127.0.0.1',80))

if result == 0:

print "Port is open"

else:

print "Port is not open"

Page 21: Hacking ético con herramientas Python

Socket port scanner

from socket import AF_INET, SOCK_STREAM, setdefaulttimeout

Page 22: Hacking ético con herramientas Python

Socket port scanner

Page 23: Hacking ético con herramientas Python

Obtain banner server

Page 24: Hacking ético con herramientas Python

Obtain banner server

Page 25: Hacking ético con herramientas Python

Socket resolving IP/domain

Page 26: Hacking ético con herramientas Python

Socket cliente /servidor

Page 27: Hacking ético con herramientas Python

Requests module

Page 28: Hacking ético con herramientas Python

Requests library

Page 29: Hacking ético con herramientas Python

Requests library

Page 30: Hacking ético con herramientas Python

Autenticación HTTP

Basic

Digest

MD5 /SHA

Page 31: Hacking ético con herramientas Python

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)

Page 32: Hacking ético con herramientas Python

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.

Page 33: Hacking ético con herramientas Python

Beautiful Soup / extraer links

Page 34: Hacking ético con herramientas Python

Beautiful Soup / extraer links

Page 35: Hacking ético con herramientas Python

WebCrawler

Page 36: Hacking ético con herramientas Python

Scraping images and pdfs

Page 37: Hacking ético con herramientas Python

Scraping

Page 38: Hacking ético con herramientas Python

Scraping

Page 39: Hacking ético con herramientas Python

Shodan

• Rastrear servidores y dispositivos IP

• Obtención de banners

• Escaneo de puertos con el API de

python

Page 40: Hacking ético con herramientas Python

Shodan

Page 41: Hacking ético con herramientas Python

Shodan

• https://developer.shodan.io

Page 42: Hacking ético con herramientas Python

Shodan

import shodan

SHODAN_API_KEY = "insert your API key here"

api = shodan.Shodan(SHODAN_API_KEY)

Page 43: Hacking ético con herramientas Python

Shodan API

Page 44: Hacking ético con herramientas Python

Shodan Search

Page 45: Hacking ético con herramientas Python

Shodan API

Page 46: Hacking ético con herramientas Python

Shodan banners

Page 47: Hacking ético con herramientas Python

Shodan host info

Page 48: Hacking ético con herramientas Python

Shodan ftp anonymous access

Page 49: Hacking ético con herramientas Python

DNSPython

• Permite resolver nombres de dominios

a direcciones IP y viceversa

• Existen registros para direcciones

ipv4,ipv6,servidores de correo

Page 50: Hacking ético con herramientas Python

DNSPython

Page 51: Hacking ético con herramientas Python

Python whois

Page 52: Hacking ético con herramientas Python

Python whois

Page 53: Hacking ético con herramientas Python

Builtwith

pip install builtwith

builtwith.parse(‘http://www.sh3llcon.es’)

Page 54: Hacking ético con herramientas Python

Análisis de metadatos

• Metadatos en documentos PDF

• pyPDF2

• Metadatos en imágenes

• from PIL.ExifTags import TAGS,

GPSTAGS

Page 55: Hacking ético con herramientas Python

Análisis de metadatos

Page 56: Hacking ético con herramientas Python

Análisis de metadatos

Page 57: Hacking ético con herramientas Python

Análisis de metadatos

Page 58: Hacking ético con herramientas Python

Análisis de puertos(nmap,scapy)

Page 59: Hacking ético con herramientas Python

Python-nmap

Page 60: Hacking ético con herramientas Python

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')

Page 61: Hacking ético con herramientas Python

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")

Page 62: Hacking ético con herramientas Python

NmapScanner

Page 63: Hacking ético con herramientas Python

NmapScanner

for port in port_list:

NmapScanner().nmapScan(ip, port)

Page 64: Hacking ético con herramientas Python

NmapScanner

{"192.168.56.101": [

{"tcp": "21"}, {"tcp": "22"}, {"tcp": "23"}, {"tcp": "25"},

{"tcp": "80"}]

}

Page 65: Hacking ético con herramientas Python

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)

Page 66: Hacking ético con herramientas Python

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")

Page 67: Hacking ético con herramientas Python

Nmap-scripts

https://nmap.org/nsedoc/scripts

Page 68: Hacking ético con herramientas Python

Nmap-scripts

Page 69: Hacking ético con herramientas Python

scapy

• Equivalente al wireshark

• Capturar paquetes

• Filtrar por protocolos

• Leer y escribir pcap

• Analizar el tráfico que genera la red

Page 70: Hacking ético con herramientas Python

Scapy commands

• ls(TCP)

Page 71: Hacking ético con herramientas Python

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)

Page 72: Hacking ético con herramientas Python

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()

Page 73: Hacking ético con herramientas Python

Escáner de puertos con scapy

from scapy.all import sr1, IP, TCP

Page 74: Hacking ético con herramientas Python

Escáner de red con scapy

from scapy.all import *

Page 75: Hacking ético con herramientas Python

Scapy traceroute

Page 76: Hacking ético con herramientas Python

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')

Page 77: Hacking ético con herramientas Python

Paramiko

• PyCrypto

• Criptography

• Soporta autenticación mediante una

SSH key en lugar de user y password

Page 78: Hacking ético con herramientas Python

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')

Page 79: Hacking ético con herramientas Python

Paramiko / abrir una sesión

Page 80: Hacking ético con herramientas Python

Check FTP Login Anonymous

import ftplib

Page 81: Hacking ético con herramientas Python

Plugins

Page 82: Hacking ético con herramientas Python

metasploit

• python-msfrpc

import msfrpc

Page 83: Hacking ético con herramientas Python

Metasploit > msfconsole

Page 84: Hacking ético con herramientas Python

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'])

Page 85: Hacking ético con herramientas Python

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

Page 86: Hacking ético con herramientas Python

Nexpose

Page 88: Hacking ético con herramientas Python

Pentesting tool

Page 90: Hacking ético con herramientas Python

Referencias

http://docs.shodanhq.com

http://www.secdev.org/projects/scapy

http://www.pythonsecurity.org

http://thehackerway.com

Page 91: Hacking ético con herramientas Python

Books

Page 92: Hacking ético con herramientas Python

Books

Page 93: Hacking ético con herramientas Python

Books

Page 94: Hacking ético con herramientas Python

Thank you!

José Manuel Ortega | @jmortegac