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