image

Acesse bootcamps ilimitados e +650 cursos pra sempre

60
%OFF
Article image

BM

Bruno Menezes29/07/2024 13:57
Compartilhe

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.

    Compartilhe
    Comentários (0)