Construindo uma ferramenta de reconhecimento OSINT
Construindo uma ferramenta de reconhecimento OSINT do zero
Todo mundo tem um telefone, usando pelo menos um número de telefone. Os números de telefone são um recurso muito comum para a engenharia social. É algo que usamos quase todos os dias para nos comunicar e, às vezes, podemos ter que lidar com telefonemas ou mensagens não solicitadas. Talvez tenhamos de coletar informações sobre um número de telefone que encontramos sobre uma empresa ou um indivíduo. Informações básicas, como tipo de linha e operadora, podem ser muito úteis para um engenheiro social.
Supondo que eu saiba seu nome e seu número de telefone, posso enviar uma ameaça de phishing usando o modelo de e-mail da sua operadora. Ou posso ligar para o serviço de suporte da sua operadora para reunir o máximo de informações possível sobre você. Outro exemplo, se o número for uma linha de terra, alguns dos dígitos me dirão a área de onde vem. Essas informações são muito simples de obter sem o uso de uma ferramenta, mas e quanto a ir adiante?
O objetivo é reunir o máximo de informações possível sobre o número de telefone fornecido, incluindo os ITSPs ou o proprietário.
Um provedor de serviços de telefonia pela Internet (ITSP) oferece serviços de telecomunicações digitais baseados em Voz sobre Protocolo de Internet (VoIP) que são fornecidos via Internet. Wikipedia
Obtendo técnico
Primeiro eu tenho que entender a composição de um número de telefone e como lidar com isso. Um número de telefone tem diferentes formatos:
- E.164: + 3396360XXXX
- Internacional: +33 9 63 60 XX XX
- Nacional: 09 63 60 XX XX
- RFC3966: tel: + 33–9–63–60-XX-XX
- Formato fora do país nos EUA: 011 33 9 63 60 XX XX
O formato E.164 para números de telefone implica o seguinte:
- Um sinal + (mais)
- Código Internacional de Chamada ao País
- Código de área local
- Número de telefone local
Por exemplo, aqui está um número com base nos EUA na formatação local padrão: (415) 555–2671
Aqui está o mesmo número de telefone na formatação E.164: +14155552671
No Reino Unido e em muitos outros países internacionalmente, a discagem local pode exigir a adição de um '0' na frente do número do assinante. Com formatação E.164, este '0' geralmente deve ser removido.
Outro exemplo, aqui está um número com base no Reino Unido na formatação local padrão: 020 7183 8750
Aqui está o mesmo número de telefone na formatação E.164: +442071838750
O código do país é principalmente. Sem isso, não posso digitalizar o número de telefone e determinar o país. Assim, a ferramenta suporta apenas formatos E.164 e internacionais.
Mas espere .. e se houvesse uma biblioteca para analisar automaticamente as informações do número? Enquanto isso, procurando recursos sobre números de telefone, encontrei este repositório mágico do Google, que é uma biblioteca Java, C ++ e JavaScript para analisar, formatar e validar números de telefone internacionais. A biblioteca também existe em Go, PHP, Ruby, Rust e Python. Viva! Eu não tenho que fazer todo o trabalho sozinha.
Para identificar informações básicas, seleciono alguns sites de pesquisa que posso usar gratuitamente, mesmo que eu precise usar um “hack” para usá-los. Porque alguns sites permitem uma pesquisa inversa gratuitamente usando a página da Web, mas requer uma chave de API assim que você quiser usar a API deles. Por exemplo, posso enganar a chamada do Ajax para fazer uma chamada de API na minha ferramenta. Eu quero que minha ferramenta seja utilizável sem qualquer registro de API.
Identifique a operadora de forma simples porque cada operadora possui intervalos de numeração. Por exemplo, se sabemos que o número +33679368314 é da Orange France (transportadora francesa), é fácil entender que o intervalo de números + 3367936XXXX é de propriedade da Orange France. O Google, como muitos outros serviços, tem um banco de dados enorme desses intervalos de números associados às suas operadoras. No entanto, em alguns casos, as pessoas mudam de operadora, mas mantêm seu número de telefone para que as informações sobre o intervalo de números se tornem inválidas.
Usando o Open Source Intelligence e dados abertos
No caminho aprendendo sobre segurança, descobri meses atrás o Open Source Intelligence (OSINT). OSINT é a coleta de informações de fontes de dados abertas e publicamente disponíveis para uso em um contexto de inteligência.
Na comunidade de inteligência , o termo “aberto” refere-se a fontes abertas e publicamente disponíveis (em oposição a fontes secretas ou clandestinas). Não está relacionado a software de código aberto ou inteligência pública . - Wikipedia
O Open Source Intelligence (OSINT) assume três formas: Passivo, Semi-passivo e Ativo. Existem várias maneiras de lidar com informações em um contexto de inteligência. Especialmente quando se trata de pegadas. Eu vou praticar o Passive Information Gathering (ou Passive Reconnaissance), isso significa que não vou armazenar dados coletados e principalmente usar fontes de terceiros. Mas vou reunir informações de várias fontes e filtrar os resultados para encontrar o proprietário ou o ITSP.
Primeiro de tudo, quero que minha ferramenta OSINT verifique:
- Reputação do número de telefone (relatórios de fraude telefônica)
- Pegadas em sites de provedores de número temporário e VoIP
- Páginas de mídia social (facebook, twitter, linkedin, instagram) e resultados de listas telefônicas
Para encontrar documentos e páginas da Web relacionados ao número de telefone, eu uso solicitações do Google Dork . Eu faço uma lista de todos os provedores de números descartáveis que encontrei. Alguns deles expõem seus números e tudo isso é indexado pelos mecanismos de busca. Por exemplo, se eu solicitar ao Google uma página da web em um desses sites com o número incluído no conteúdo e encontrar um resultado, isso geralmente significa que o número faz parte do intervalo de numeração deles. Como meu reconhecimento OSINT é bastante básico, nunca considerarei um resultado como um sucesso.
Listando fontes de fraude de números de telefone
- scamcallfighters.com
- sinal-arnaques.com
Listando provedores de números descartáveis
- receive-sms-online.com
- receive-sms-now.com
- hs3x.com
- twilio.com
- freesmsverification.com
- freeonlinephone.org
- sms-receive.net
- smsreceivefree.com
- receive-a-sms.com
- receivefreesms.com
- freephonenum.com
- receive-smss.com
- receivetxt.com
- temp-mails.com
- receive-sms.com
- receivemsonline.net
- receivefreesms.com
- sms-receive.net
- pinger.com (=> textnow.com)
- receive-a-sms.com
- k7.net
- kall8.com
- faxaway.com
- receivemsonline.com
- receive-sms-online.info
- sellaite.com
- getfreesmsnumber.com
- smsreceiving.com
- smstibo.com
- catchsms.com
- freesmscode.com
- smsreceiveonline.com
- smslisten.com
- sms.sellaite.com
Negrito significa que eles não colocam seus números de telefone em seu site (portanto sem pegadas) ou parecem não existir mais.
Sim. Há muitos provedores de números descartáveis. Usando o mecanismo de pesquisa do Google, posso pesquisar pegadas especificando o nome de domínio e o número de telefone usando diferentes formatos.
site: ”domínio” intext: ”international_num” | "Local_num"
Há muitas fontes de dados abertas on-line que poderiam ter sido muito úteis para este projeto. Enquanto pesquisava por fontes de dados, encontrei um banco de dados JSON de país associado a seus códigos ISO e de discagem. Em seguida, encontrei um banco de dados de códigos de área para cada país. Infelizmente, isso não será usado desde que os phonenumbers da biblioteca do Google já verificam essas informações, bem como a operadora e o local.
Recolha de informação sobre indivíduos
No entanto, encontrar informações sobre os indivíduos é um pouco mais fácil do que o esperado. Existem muitas fontes de dados abertas (com API ou recurso de busca reversa) que me permitem pesquisar sobre um número de telefone. De acordo com a Intel Techniques, esse é o fluxo de trabalho médio usando as ferramentas de pesquisa de número de telefone:
Lista de informação de dono que recolhe fontes abertas
- Pessoas verdadeiras
- Pessoas Rápidas
- Verificação de antecedentes
- Pipl
- Spytox
- Makelia
- IvyCall
- PhoneSearch
- 411
- USPhone
- WP Plus
- Isso é
- Verdadeiro chamador
- Sync.me
- WhoCallsMe
- ZabaSearch
- DexKnows
- WeLeakInfo
- OK chamador
- SearchBug
- numinfo.net
Um dia alguém que eu não conhecia me enviou um email. Eu estava curioso, então eu digitei o endereço de e-mail dele no Google. Descobri que um perfil em numinfo.net estava associado ao seu endereço de e-mail e, a partir daqui, pude saber o seu número de telefone, localização (incluindo país, estado e cidade) seu nome e até seu endereço físico! Eu não sabia se as informações estavam corretas ou não, mas ainda assim. Para verificar, perguntei-lhe algumas perguntas sobre sua localização e adivinha o que… tudo combinava.
Os problemas
Neste ponto, podemos reunir muitas informações sobre quase todos os números de telefone no mundo e isso é incrível! Mas estou enfrentando dois grandes problemas ao criar minha ferramenta.
Primeiro, o Google lista negra o IP do cliente e solicita que você conclua um captcha após algumas solicitações. Quando você pratica solicitações personalizadas complexas, o Google solicita que você conclua o captcha. Depois de algumas investigações, descubro como o Google lida com detecção de captcha e bot.
Quando você pesquisa no Google usando solicitações personalizadas (Google Dorks), fica muito fácil na lista negra. Então o Google mostra uma página onde você tem que completar um captcha para continuar. Assim que o captcha for concluído, o Google criará um cookie chamado " GOOGLE_ABUSE_EXEMPTION”Que é usado para colocar seu navegador e endereço IP na lista de permissões por alguns minutos. Essa lista de permissões temporária é suficiente para permitir que você reúna muitas informações de várias fontes. Então eu decidi adicionar uma manipulação de usuário simples para ignorar essa detecção de bot. Primeiro, faço uma lista de agentes de usuários para tornar a solicitação o mais aleatória possível. Eu não usarei proxies desde que as listas negras do Google liberam proxies instantaneamente. Usarei exatamente os mesmos cabeçalhos que um usuário normal que usa um navegador e, é claro, esse cookie "GOOGLE_ABUSE_EXEMPTION". Claro, não posso gerar um novo token como o Google gera por hora e endereço IP. Então, vou tentar fazer solicitações e esperar até receber um erro 503, o que significa que eu fui colocado na lista negra. Em seguida, peço ao usuário que siga uma URL para concluir manualmente o captcha e copie o token da lista de desbloqueio para colá-lo na CLI. A ferramenta agora pode continuar digitalizando!
Segundo, os ITSPs não compartilham seus intervalos de números de telefone. No momento, é muito difícil reunir o número de telefone de todos os provedores do mundo, ou talvez este seja apenas outro nível do OSINT. Também os números de telefone mudam com muita frequência. É muito difícil encontrar os ITSPs usando apenas pegadas. Mas notei que alguns sites de pesquisa (como o 411.com) conseguiram recuperar o ITSP que possui o número.
Tornando a ferramenta “inteligente” o suficiente
No momento, minha ferramenta apenas verifica tudo usando todas as fontes. Mas como sabemos o país e o tipo de linha no início da verificação, não devemos usar fontes que forneçam resultados para outro país. Por exemplo, se eu coletar informações sobre um número francês (+33), é inútil procurar resultados em um banco de dados de números de telefone de fraudes dos EUA, não é? Além disso, meu reconhecimento do OSINT não deve retornar resultados inúteis, como catálogos telefônicos Anônimos, que tenham várias pegadas de números de telefone e escolha sabiamente qual deles eu retornarei ao usuário final. Então, a última coisa a fazer será fazer um rápido refatorador para limitar a quantidade de chamadas de API e usar apenas fontes úteis.
Finalmente, tenho que deixar o usuário final ter mais controle sobre os resultados. Às vezes, o número de telefone tem pegadas, mas é usado com uma formatação diferente. Isso é um problema porque, por exemplo, se procurarmos por “+15417543010” , não encontraremos páginas da Web que o escrevam dessa forma: “(541) 754–3010” . Portanto, a ferramenta usará uma formatação personalizada (opcional) fornecida pelo usuário para encontrar resultados mais precisos.
Vamos codificar!
Eu escolho ir com o Python. Usando algumas bibliotecas, como phonenumberspara analisar informações de números de telefone, solicitações para fazer chamadas de API, argparse para analisar parâmetros cli e outras bibliotecas relacionadas à formatação. O código está disponível neste repositório GitHub.
Conclusão
O OSINT é uma maneira muito eficaz de coletar informações e investigar. Especialmente usando fontes abertas, como os motores de busca, que tem uma enorme quantidade de fontes indexadas. Lembre-se, eu falei sobre a parte mais básica do OSINT, que é a pegada (ou reconhecimento passivo). Mas nós poderíamos fazer muito mais usando isso. Além disso, que o objetivo do OSINT se não automatizar tudo, mas automatizar a coleta de informações. Esta ferramenta pode não ser capaz de recuperar o seu nome ou endereço, digitalizando o seu número (felizmente!), De qualquer forma, este não é o propósito. O objetivo é fornecer uma maneira fácil de investigar e analisar informações de qualquer número de telefone.
Nós só usamos recursos livres, se você quiser ir mais longe no OSINT, tenha em mente que há muitos recursos premium que provavelmente já fizeram o trabalho para você. Eles geralmente têm uma coleta de informações muito valiosa, mas você terá que pagar por isso.
http://www.pentest-standard.org/index.php/Intelligence_Gathering
Comentários
Postar um comentário