Data de Publicação: 18 de Agosto de 2025
Autora: Patrícia Canossa Gagliardi
Ferramenta de Análise: TOR
Em testes de invasão (pentest), a capacidade de anonimizar a origem do tráfego é fundamental para emular atacantes reais e evadir sistemas de detecção baseados em reputação de IP. O código a seguir apresenta uma função em Python que utiliza a biblioteca requests para rotear todo o seu tráfego HTTP/HTTPS através da rede TOR (The Onion Router), mascarando efetivamente o endereço de IP público do pentester.
import requests
def get_tor_session():
"""
Cria e retorna um objeto de sessão da biblioteca requests
configurado para usar a rede TOR como proxy.
"""
# Cria uma instância do objeto Session
session = requests.Session()
# Define o proxy para os protocolos HTTP e HTTPS.
# O tráfego será direcionado para um proxy SOCKS5 local,
# que é a porta de entrada padrão para o serviço TOR.
session.proxies = {
"http": "socks5://localhost:9050",
"https": "socks5://localhost:9050"
}
return session
Para que o código funcione, é mandatório que o serviço TOR esteja em execução na máquina local (localhost) e escutando na porta 9050. O script Python não inicia o TOR; ele apenas o utiliza como um proxy.
apt-get install tor e iniciado com sudo systemctl start tor.session = requests.Session(): O uso de um objeto Session é uma boa prática. Ele permite a persistência de configurações (como proxies, cookies e cabeçalhos) em múltiplas requisições, otimizando a performance e a organização do código.
session.proxies = {...}: Este é o núcleo da funcionalidade. O atributo .proxies do objeto de sessão é um dicionário que mapeia protocolos de URL (http, https) para os endereços de proxy que devem ser usados.
"socks5://localhost:9050": Esta string define os parâmetros do proxy:
socks5: Protocolo do proxy. SOCKS5 opera na camada de sessão (Camada 5 do modelo OSI), permitindo encaminhar qualquer tipo de tráfego TCP, sendo mais flexível que proxies HTTP. É o protocolo padrão utilizado pelo TOR.localhost: O host onde o serviço de proxy está rodando (a própria máquina).9050: A porta de comunicação padrão do proxy SOCKS do TOR.O script a seguir valida a eficácia da mudança de IP, comparando uma requisição direta com uma requisição feita através da sessão TOR.
# (Supondo que a função get_tor_session() já foi definida)
# Requisição com IP normal
ip_normal = requests.get("[https://api.ipify.org](https://api.ipify.org)").text
print(f"[+] IP de Origem (Direto): {ip_normal}")
# Requisição através da rede TOR
print("[*] Conectando via TOR...")
tor_session = get_tor_session()
ip_tor = tor_session.get("[https://api.ipify.org](https://api.ipify.org)").text
print(f"[+] IP de Origem (Via TOR): {ip_tor}")
if ip_normal != ip_tor:
print("\n[SUCESSO] O IP foi alterado pela rede TOR.")
else:
print("\n[FALHA] O IP não mudou. Verifique se o serviço TOR está ativo.")
A utilização desta ferramenta é estratégica em diversas fases de um pentest:
A função get_tor_session é uma ferramenta simples, porém poderosa, para o arsenal de um profissional de cibersegurança. Ela encapsula a complexidade de interagir com a rede TOR, permitindo que scripts de automação para pentest operem com um grau essencial de anonimato, resiliência e capacidade de evasão.