Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Snoopy — Snoopy: Um framework distribuído de rastreamento e interceptação de dados | Kitploit
Ferramentas/GitHubGitHub/sensepost/snoopy
OSINT (Inteligência de Fontes Abertas)ReconhecimentoAuditoria de Wi-FiMapeamento de RedePhishingAnálise de MalwareEngenharia SocialRed Teaming
GitHubsensepost/snoopy

Snoopy

Snoopy: Um framework distribuído de rastreamento e interceptação de dados

Ver Repositório
6131492há 13 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

root@kitploit:~
|       ||  |  | ||       ||       ||       ||  | |  |
|  _____||   |_| ||   _   ||   _   ||    _  ||  |_|  |
| |_____ |       ||  | |  ||  | |  ||   |_| ||       |
|_____  ||  _    ||  |_|  ||  |_|  ||    ___||_     _|
 _____| || | |   ||       ||       ||   |      |   |  
|_______||_|  |__||_______||_______||___|      |___|
                                               V0.1  
"Amy, tecnologia não é intrinsecamente boa ou má. É como ela é usada. Como o Raio da Morte."
-Professor Farnsworth

Bem-vindo ao Snoopy; uma estrutura distribuída de rastreamento e perfilamento. O Snoopy é um trabalho em andamento, então sinta-se à vontade para enviar sugestões e/ou correções. Este documento descreve o uso básico. Para entender um pouco mais do histórico, dê uma olhada no seguinte:

  • Snoopy: uma estrutura distribuída de rastreamento e perfilamento
  • ZaCon4 - Glenn Wilkinson - Terrorismo, rastreamento, privacidade e interações humanas
  1. INTRODUÇÃO E VISÃO GERAL ============================= O Snoopy consiste em quatro componentes:
  • Software cliente (também conhecido como software Snoopy Drone)
  • Software servidor
  • Interface web
  • Transforms do Maltego

a. Drones Snoopy

O software do lado cliente é executado no que chamamos de "Drones". Um Drone pode ser qualquer dispositivo baseado em Linux que possua interface WiFi (com drivers de injeção) e conectividade de internet de saída. O Snoopy foi testado em um Nokia N900 e em um laptop rodando BackTrack. Os Drones realizam as duas operações a seguir:

  1. Coletar SSIDs de sonda (Probe SSIDs) de dispositivos sem fio próximos
  2. Oferecer um Ponto de Acesso Rogue (Rogue AP) para que dispositivos sem fio próximos possam se conectar

As solicitações de sonda coletadas (ex.: o iPhone do Bob procurando por BTHomeHub-4123) são enviadas ao servidor Snoopy em intervalos regulares. Todos os dispositivos que se associam ao Rogue AP têm sua Internet servida através do Servidor Snoopy.

b. Software do Servidor

O servidor armazena todas as solicitações de sonda em um banco de dados, e usa o Wigle para determinar coordenadas GPS, e o Google Maps para determinar endereços (e fotografias do Street View). Isso significa que, se você estiver sondando sua rede doméstica, eu posso obter uma fotografia da sua casa.

Cada Drone se conecta ao servidor via OpenVPN e possui sua própria sub-rede. Os clientes associados recebem um endereço IP do Drone e roteiam o tráfego através dele. Isso significa que, no servidor, podemos associar endereços IP de clientes (e portanto endereços MAC) à atividade de internet.

No servidor, acontece o seguinte:

  • O tráfego de internet é roteado por proxy transparente através do Squid, que registra todas as solicitações no MySQL
  • O SSLStrip tenta reescrever páginas web sem HTTPS
  • O mitmproxy.py permite injeção arbitrária em páginas web
  • Vários scripts são executados para extrair dados de mídias sociais (ex.: puxar perfis do Facebook)

O diagrama de rede é o seguinte:

root@kitploit:~
     Client1                        Drone1                                  Snoopy Server
    +----------+            +-----------------------+               +-----------------------+
    |    wlan0-|<---WiFi--->|-at0                   |               |                   eth0|<-squid-sslstrip-mitmproxy->Internet
    |          |    |       | 10.2.0.1              |               |            11.22.33.44|    |
    | dhclient |    |       |                       |               |                       |    Traffic inspection
    |          |    |       |                  tap0-|<-openvpn----->|-tap0                  |    Social media analysis
    +----------+    |       |          192.168.42.2 |           +--/| 192.168.42.1          |
    10.2.0.2        |       +-----------------------+           |   +-----------------------+
                    |                                           |
                    |                                           | route 10.2.0.0 via 192.168.42.2
                    |                                           | route 10.3.0.0 via 192.168.42.3
      Client2       |                                           |
    +----------+    |                                           |
    |    wlan0-|<---+                                           |
    |          |                                                |
    | dhclient |                                                |
    |          |                                                |
    +----------+                                                |
    10.2.0.3                                                    |
                                                                |
                                                                |
                                                                |
      Client3                       Drone2                      |      
    +----------+            +-----------------------+           |
    |    wlan0-|<---WiFi--->|-at0                   |           |
    |          |    |       | 10.3.0.1              |           |
    | dhclient |    |       |                       |           |
    |          |    |       |                  tap0-|<-openvpn--+
    +----------+    |       |          192.168.42.3 |       
    10.3.0.2        |       +-----------------------+       
                    |
                    |       
                    |
      Client4       |                                       
    +----------+    |                                       
    |    wlan0-|<---+                                       
    |          |                                            
    | dhclient |                                            
    |          |                                            
    +----------+
    10.3.0.3

c. A Interface Web

Walter escreveu uma interface web para o Snoopy. Ela pode ser acessada em http://your-snoopy-server.com:5000/

d. Transforms do Maltego

Existem vários transforms do Maltego para explorar graficamente os dados coletados (veja abaixo para mais informações).

  1. INSTALAÇÃO ================ A instalação do servidor deve ser simples. Ela só foi testada em uma instalação padrão do Ubuntu 12.04 LTS 32bit. São feitas alterações em vários componentes do servidor, portanto é altamente recomendável executar o script de instalação em uma instalação base, e não rodar muitas outras coisas nessa máquina (se é que algo). Em caso de dúvida, percorra o arquivo install.sh e faça as alterações manualmente. Caso contrário, basta executar o instalador (./install.sh).

  2. USO ======== Quando a instalação terminar, você deve conseguir digitar 'snoopy' para carregar o menu do servidor. Se não funcionar (ou em caso de dúvida), vá para o diretório home do usuário criado durante a instalação. Dentro do diretório 'snoopy/server/' há um arquivo 'snoopy.sh' que você pode executar. Abaixo está o menu:

    root@kitploit:~
     +---------------------------------------------------------------+
     |                    Welcome to Snoopy V0.1                     |
     |                        SERVER SIDE                            |
     |                                                               |
     |              SensePost Information Security                   |
     |         [email protected] / www.sensepost.com            |
     +---------------------------------------------------------------+
     Date: Thu Nov  1 16:37:08 CET 2012
     Snoopy Server Status: Stopped
     Connected Drones: 0
     Wigle User: setYourWigleAccount
    
     Would you like to:
     [1] (Re)Start Snoopy server components
     [2] Stop Snoopy server components
     [3] Manage drone configuration packs
     [4] Configure server options
     [5] Set web traffic injection string
     [6] Observe logs
     [X] Exit
    
     [?] Help
    
  3. Criando pacotes de drones A opção [3] no menu permitirá que você crie 'pacotes' do lado do cliente para seus dispositivos Drone. Cada Drone recebe suas próprias chaves OpenVPN e SSH, faixas DHCP e tabelas de roteamento. Você receberá uma URL de download por dispositivo Drone. Certifique-se de que o servidor e o drone tenham a hora configurada corretamente, caso contrário a conexão VPN não será estabelecida.

Cada entidade do Snoopy pode ter diferentes transforms aplicados a ela. Arraste a entidade 'Snoopy' para o seu gráfico para começar. Se você não especificar uma data de início ou término nas propriedades da entidade, ela buscará resultados dos últimos 5 minutos por padrão (esse valor pode ser alterado no menu de configuração do servidor).

As máquinas do Snoopy permitem sequenciar transforms automaticamente e filtrar/excluir nós com base em requisitos. O código-fonte/comentários devem descrever suficientemente como elas funcionam.

  1. CONSIDERAÇÕES LEGAIS ======================= Todos ou alguns dos componentes do Snoopy podem ser ilegais onde você mora. Informe-se antes de usar o software. No Reino Unido, o componente de coleta de sondas é legal devido à natureza de transmissão do tráfego. No entanto, o componente de ponto de acesso rogue provavelmente é ilegal na maioria das regiões. A SensePost não se responsabiliza se você tiver problemas por usar esta ferramenta.

  2. CONSIDERAÇÕES DE SEGURANÇA ========================== Cada 'pacote de Drone' contém chaves OpenVPN e SSH. Se um Drone for comprometido (por roubo ou qualquer outro meio), isso pode representar um risco de segurança para o seu servidor. É altamente recomendável que o seu servidor Snoopy seja dedicado à sua finalidade. O usuário criado no servidor tem o seguinte adicionado automaticamente ao .ssh/authorized_hosts file, para um pouco mais de segurança:

    "no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="/usr/bin/rsync ${SSH_ORIGINAL_COMMAND#* }""

  3. TRABALHO FUTURO =============== Ainda há muitas coisas a serem feitas/adicionadas. Esta versão é mais um PoC.

  • Integrar suporte ao ToR
  • Adicionar filtros para facilmente acrescentar outras capturas de tráfego (ex.: mDNS)
  • Incorporar ataques aGPS (já que controlamos o DNS das vítimas)
  • Evilgrade
  • Rastreamento Bluetooth/GSM
  • Desautenticação WiFi / interferência 3G
  • Câmera com identificação facial
  • Carregador de plugin Firefox para cookies roubados
  • Substituir o processo de envio de dados (atualmente todos os drones usam rsync com o mesmo usuário).
  1. PROBLEMAS CONHECIDOS / BUGS ======================
  • SSIDs com caracteres incomuns podem causar problemas
  • Atualmente, todas as solicitações de sonda são capturadas e inseridas em um banco de dados. O banco fica grande rapidamente, especialmente em áreas movimentadas. O banco de dados deveria ser normalizado, e deveria haver uma decisão sobre manter ou não todas as sondas.
  • Originalmente, a captura de sondas era feita com o Scapy, mas foi substituída por um one-liner do tshark (devido à incapacidade do Scapy de ler o parâmetro de intensidade do sinal 802.11). Uma ressalva descoberta na versão antiga do tshark disponível no N900 é que ela não suporta a saída do tempo epoch, apenas o horário local. Isso bagunça bastante com fusos horários. Se você puder compilar um novo tshark para o N900, seria ótimo (estamos de olho em você, PwnieExpress). O ponto é: certifique-se de que o servidor/drones estejam todos no mesmo fuso horário por enquanto.
  1. CONTATO ============== O código foi escrito por Glenn (com exceção da interface web do Walter). Você pode enviar um e-mail para ele via [email protected] ou bug^H^H^H segui-lo no Twitter: @glennzw. Glenn não é desenvolvedor, e pede desculpas pelo seu código ruim. Ele é um hacker, e esta ferramenta permitiu que ele hackeasse você.

Agradecimentos

Agradecimentos pela ajuda/conselhos/contribuições de:

  • A equipe da SensePost (lugar legal para trabalhar).
  • DocScrutinizer e o resto da gangue do #maemo na Freenode pela ajuda com o N900.

APÊNDICE A1. CENÁRIOS DE ATAQUE (não endossados, nem incentivados)

Capturando o Espião

P. Sabemos que um espião estrangeiro chega a Heathrow em 11 de novembro, mas não sabemos quando nem em qual voo. Nossa inteligência sugere que ele ficará no Hilton após chegar e pegará um voo do aeroporto de Luton no dia 14 (novamente, não sabemos a hora nem o destino). Ele é um mestre do disfarce. Como podemos identificá-lo?

R. Implante drones Snoopy em Heathrow, no Hilton e em Luton. O transform 'CommonLocation' do Maltego observará a interseção de todos os dispositivos presentes nesses três locais. Esperamos que apenas um resultado apareça - nosso alvo humano. Uma vez descoberto, podemos examinar o Google Maps e fotografias do Street View dos lugares para onde nosso espião viajou. A identidade dele pode ser revelada se o(s) dispositivo(s) dele for(em) enganado(s) para conectar(em) ao ponto de acesso rogue do Snoopy (como Facebook, Twitter ou e-mail dele).

Identificando Indesejáveis

Peça ao Snoopy para anotar todos os indivíduos que se conectaram a um ponto WiFi em certos países arenosos^W indesejáveis.

Rastreando Clientes

Implante o Snoopy em suas 10 lojas de departamento. Observe o tráfego de pessoas, clientes recorrentes, tipos de clientes.

Distribuição de Malware

Injete código malicioso para assumir o controle dos dispositivos clientes e instalar malware. Exploits podem ser disparados diretamente do servidor para as vítimas conectadas, devido às tabelas de roteamento.

O Metrô de Londres

A TFL poderia implantar um Drone Snoopy em cada estação do Metrô de Londres. Eles poderiam monitorar o tráfego de pessoas, observando horários/dias de pico e de baixa, e alocar/reduzir a equipe de acordo.

Rastreamento Humano em Grande Escala

Implante 500 Drones Snoopy por toda Londres. Monitore os movimentos das pessoas quando passarem por um Drone. Padrões interessantes de movimento humano certamente se manifestarão se aplicado ao longo de semanas/meses.


APÊNDICE A2. NOTAS DE HARDWARE

Para um Desktop/Laptop baseado em Linux, a placa Alfa AWUS036H tem desempenho mediano. Uma placa mais confiável é a Ubiquity SR-71. Qualquer retorno sobre o que funciona/não funciona para você em relação ao suporte a drivers de injeção seria apreciado.

Para o N900, você notará que o carregamento dos drivers de injeção reduz severamente a vida útil da bateria. O pacote de bateria TecNet 6600mAh proporcionou cerca de 6 a 8 horas nos testes. Você, no entanto, precisará de um adaptador para conectar o N900 a qualquer pacote de bateria. Reduzir (ou desativar) a frequência de consulta ao GPS também ajudará a prolongar a vida útil da bateria.

Dicas sobre como conectar seu N900 ao laptop via USB (para fins de SSH) podem ser encontradas aqui

Atualmente estou testando no RaspberryPi, Alfa R36 mini AP e SheevaPlug. Resultados em breve.


APÊNDICE A3. SCRIPTS MALTEGO DO SNOOPY

Você pode criar seus próprios transforms do Maltego para explorar os dados coletados. Os fornecidos servem principalmente para demonstrar o que pode ser feito. Verifique o código-fonte e leia:

  • http://www.paterva.com/web6/documentation/developer.php
  • http://www.paterva.com/web6/documentation/developer-tds.php

Entre em contato com [email protected] se tiver alguma dúvida (ou pergunte ao pessoal incrível do Maltego).


APÊNDICE A4. SCRIPTS DA INTERFACE WEB DO SNOOPY

Introdução

O código da interface web é acessível em ~user/snoopy/server/bin/snoopy/src/snoopy/

Requisitos (já instalados)

Pacotes Python

  • Beaker
  • cryptacular
  • Flask
  • MySQLdb
  • SQLAlchemy

Plug-ins

Os plug-ins consistem em duas partes:

  • Parte back-end (fornecimento de dados), escrita em Python
  • Parte front-end (exibição), escrita em JavaScript (opcional)

Back-end

Um plug-in é um chamável que é carregado dinamicamente pela aplicação Snoopy. Vamos começar com um exemplo:

root@kitploit:~
from snoopy import db, pluginregistry

@pluginregistry.add('client-data', 'ssidlist', 'SSID List', js='/static/js/ssidlist.js')
def ssid_list(mac):
    with db.SessionCtx() as session:
        query = session.query(
            distinct(db.Probe.probe_ssid) # SELECT DISTINCT probe_ssid FROM probes
        ).filter_by(
            device_mac=mac                # WHERE device_mac=$mac
        ).order_by(
            db.Probe.probe_ssid           # ORDER BY probe_ssid
        )
        return query.all()

Agora, o detalhamento...

root@kitploit:~
from snoopy import db, pluginregistry

Precisamos de db para acessar o banco de dados do Snoopy e de pluginregistry para registrar nosso plug-in.

root@kitploit:~
@pluginregistry.add('client-data', 'ssidlist', 'SSID List', js='/static/js/ssidlist.js')

É assim que registramos nosso plug-in (que pode ser qualquer chamável). O primeiro argumento especifica o nome do grupo ao qual este plug-in pertence. Especificamos client-data, pois este plug-in aceita um endereço MAC e retorna dados a serem exibidos em uma janela de dados do cliente. Além de client-data, existe também o grupo de plug-ins session-data, que opera em sessões de proximidade. O segundo parâmetro é o nome do plug-in. Esse nome é apenas para uso interno e deve ser compatível com JSON. O terceiro parâmetro é o título do plug-in. Essencialmente, é o mesmo que o nome, mas o título é exibido na GUI. Mais especificamente, este é o título da seção de dados na janela de dados do cliente.

Todos os argumentos de palavra-chave após o título são salvos como opções. Embora o sistema de plug-ins não exija nenhuma opção, o Snoopy suporta a opção js. Esta opção especifica a URL (do lado do navegador, não do lado do Snoopy/servidor) do componente JavaScript deste plug-in.

root@kitploit:~
def ssid_list(mac):

Este plug-in é uma função simples. Ele aceita uma string de endereço MAC, conforme a definição de plug-ins client-data. O nome do chamável não é usado.O corpo deste plug-in de exemplo simplesmente executa uma consulta SQLAlchemy que basicamente faz SELECT DISTINCT probe_ssid FROM probes WHERE device_mac=$mac e retorna os resultados como uma lista. Os valores de retorno dos plug-ins são geralmente adicionados como parte de uma resposta JSON. Portanto, os resultados têm a limitação de que precisam ser compatíveis com JSON (como suportado pela função jsonify() do Flask).

Simples assim!

Front-end

Os plug-ins de front-end para dados de cliente são chamados de manipuladores de dados do cliente. Eles são registrados por meio da função Snoopy.registerPlugin(sectionName, dataHandler). sectionName é o nome da seção de dados que o manipulador de dados deseja manipular. Esse nome é o mesmo do plug-in de back-end que gerou os dados. O dataHandler deve ser uma função com a seguinte assinatura: function($section, clientData) {...}. $section é um objeto jQuery do elemento div onde o manipulador de dados pode exibir dados ou efetuar alterações. Os dados do cliente (gerados pelo plug-in de back-end) são fornecidos no parâmetro clientData.

Como a única saída permitida do manipulador de dados são alterações no div fornecido ($section), nenhum valor de retorno é necessário.

Baixar ferramenta
  • Instalando e executando o Snoopy no Drone Você pode ter até 100 drones (se quiser mais, verifique o código-fonte ou me envie um e-mail; não há limitação real). A instalação consiste em baixar o pacote de configuração da etapa anterior e executar o script de configuração relevante. Para o Nokia N900, um ícone será colocado na sua Área de Trabalho. Por exemplo:

    root@kitploit:~
     haxor@drone001# wget http://snoopy-server.com/secretdir/drone001.tar.gz
     haxor@drone001# tar xzvf drone001.tar.gz
     haxor@drone001# cd snoopy && ./setup_n900.sh
    
  • Consultando localizações de SSID Crie uma conta em www.wigle.net e defina suas credenciais em 'Configure server options'

  • Interface Web Você pode acessar a interface web via http://your-snoopy-server:5000/. Você pode escrever seus próprios plugins para percorrer e exibir dados. Walter facilitou isso para você (veja o apêndice deste documento).

  • Explorando Dados com o Maltego No menu do servidor Snoopy, vá em 'Configure Server Options' > 'Maltego'. Aqui você verá URLs para baixar entidades, máquinas e URLs dos transforms do Snoopy. Para usar os transforms do Maltego, você precisará de:

    • Adicionar entidades do Snoopy ao Maltego
    • Criar uma conta em http://cetas.paterva.com/TDS/
    • Entrar em cetas.paterva.com/TDS/
    • Criar uma seed em cetas.paterva.com/TDS/
    • Adicionar as URLs dos transforms à seed criada
    • Adicionar a seed no Maltego (Manage > Discover Transforms (Advanced)
    • Digitar o nome como 'Snoopy' e a URL da seed como sua seed
    • Adicionar as máquinas do Snoopy à seção de máquinas