Pentest Python - Automatizando Testes de Invasão
### Introdução
Pentest, ou teste de penetração, é uma prática essencial na segurança da informação. Ele envolve a simulação de ataques em sistemas para identificar vulnerabilidades e corrigi-las antes que sejam exploradas por invasores. Python, com sua simplicidade e poder, é uma linguagem ideal para automatizar muitos aspectos do Pentest. Neste eBook, exploraremos como você pode utilizar Python para automatizar testes de invasão, apresentando ferramentas e técnicas práticas com exemplos de código em contextos reais.
### Por que Python para Pentest?
Python é uma escolha popular entre os pentesters devido à sua simplicidade, legibilidade e vasto ecossistema de bibliotecas. Com Python, você pode criar scripts personalizados rapidamente, automatizar tarefas repetitivas e integrar facilmente outras ferramentas de segurança.
### Instalando Bibliotecas Essenciais
Antes de começar, certifique-se de ter Python instalado em sua máquina. Além disso, algumas bibliotecas serão necessárias para nossos exemplos:
pip install requests scapy nmap
### Explorando Redes com Scapy
#### Escaneamento de Rede
Scapy é uma poderosa biblioteca de manipulação de pacotes. Vamos começar com um exemplo simples de escaneamento de rede:
from scapy.all import ARP, Ether, srp
def scan_network(ip_range):
arp = ARP(pdst=ip_range)
ether = Ether(dst="ff:ff:ff:ff:ff:ff")
packet = ether/arp
result = srp(packet, timeout=2, verbose=False)[0]
devices = []
for sent, received in result:
devices.append({'ip': received.psrc, 'mac': received.hwsrc})
return devices
devices = scan_network("192.168.1.0/24")
for device in devices:
print(f"IP: {device['ip']} MAC: {device['mac']}")
Este script escaneia a rede local e lista os dispositivos conectados, mostrando seus endereços IP e MAC.
### Automatizando Escaneamento de Portas com Nmap
#### Usando a Biblioteca python-nmap
Nmap é uma ferramenta popular para escaneamento de portas. Podemos automatizá-lo com Python usando a biblioteca python-nmap:
import nmap
def scan_ports(ip):
nm = nmap.PortScanner()
nm.scan(ip, '1-1024')
for host in nm.all_hosts():
print(f"Host: {host} ({nm[host].hostname()})")
print("State: ", nm[host].state())
for proto in nm[host].all_protocols():
print("Protocol: ", proto)
lport = nm[host][proto].keys()
for port in lport:
print(f"Port: {port}\tState: {nm[host][proto][port]['state']}")
scan_ports("192.168.1.1")
Este script realiza um escaneamento de portas nos primeiros 1024 ports do IP especificado, listando o estado de cada porta.
### Exploração de Vulnerabilidades Web com Requests
#### Detectando SQL Injection
SQL Injection é uma das vulnerabilidades mais comuns em aplicações web. Vamos criar um script para detectar essa vulnerabilidade:
import requests
def detect_sql_injection(url):
payloads = ["'", "' OR '1'='1", "' OR '1'='1' --"]
for payload in payloads:
r = requests.get(url + payload)
if "error" not in r.text.lower():
print(f"Possível vulnerabilidade de SQL Injection com payload: {payload}")
detect_sql_injection("http://example.com/login?username=")
Este script envia payloads maliciosos para a URL especificada e verifica se a resposta indica uma possível vulnerabilidade de SQL Injection.
### Conclusão
Automatizar testes de invasão com Python pode aumentar significativamente a eficiência e eficácia de seus esforços de segurança. As bibliotecas e técnicas apresentadas neste eBook são apenas o começo. Com Python, você pode criar ferramentas poderosas e personalizadas para qualquer necessidade de Pentest.
Lembre-se sempre de usar esses conhecimentos de maneira ética e responsável, apenas em ambientes onde você tem permissão para realizar testes de segurança.