Open Source Intelligence Gathering 201
Encontro de Inteligência em Código Aberto 201 (Abrangendo 12 técnicas adicionais)
==================================================== ========================
_Este post é o segundo de uma série de posts técnicos sobre os quais estamos escrevendo: Reunião do ** Open Source Intelligence ** (** OSINT **) _._
_ Recomendamos que você siga a série em uma sequência._
1. [Open Source Intelligence Gathering 101] (https://blog.appsecco.com/open-source-intelligence-gathering-101-d2861d4429e3)
2. ** Você está lendo isso **
3. Mais por vir
Existem vários tipos de dados que podem ser categorizados como dados OSINT, mas todos esses dados não têm importância do ponto de vista do testador de penetração. Como testador de penetração, estamos mais ou menos interessados nas informações que se enquadram nas seguintes categorias:
1. Informações que aumentarão a superfície de ataque (domínios, bloqueios de rede etc.)
2. Credenciais (endereços de email, nomes de usuário, senhas, chaves de API etc.)
3. Informações confidenciais (detalhes do cliente, relatórios financeiros etc.)
4. Detalhes da infraestrutura (pilha de tecnologia, equipamento de hardware usado etc.)
> Open Source Intelligence (OSINT) são dados coletados de fontes publicamente disponíveis.
### 12 técnicas adicionais para executar OSINT
1.Os certificados SSL / TLS possuem uma grande quantidade de informações importantes durante as avaliações de segurança.
> _Um certificado SSL / TLS geralmente contém nomes de domínio, subdomínios e endereços de email. Isso os torna um tesouro de informações para os atacantes.
A transparência do certificado (CT) é um projeto no qual uma autoridade de certificação (CA) deve publicar todos os certificados SSL / TLS emitidos em um log público. Quase todas as principais autoridades de certificação registram todos os certificados SSL / TLS emitidos em um registro de CT. Esses logs estão disponíveis [publicamente] (https://www.certificate-transparency.org/known-logs) e qualquer pessoa pode ver esses logs. Escrevemos um script para extrair subdomínios de certificados SSL / TLS encontrados nos logs do CT para um determinado domínio. Você pode encontrar o script aqui –
[** appsecco / enumeração da arte do subdomínio **
_Este repositório contém todo o material suplementar para o livro “A arte da enumeração de subdomínios”… _git.io] (https://git.io/fAGW0 “https://git.io/fAGW0”)[)(https : //git.io/fAGW0)
! [] (https://cdn-images-1.medium.com/max/1600/1*cCNRAHNHmw7RDY37F1Ivqw.png)
Extraindo subdomínios de certificados SSL / TLS listados nos logs do CT
SSLScrape é uma ferramenta que aceitará um netblock (CIDR) como entrada, consulta cada endereço IP para obter certificados SSL / TLS e extrai nomes de host de certificados SSL retornados. A ferramenta está disponível aqui –
[** cheetz / sslScrape **
_SSLScrape | Uma ferramenta de varredura para rastrear nomes de host de certificados SSL. – cheetz / sslScrape_github.com] (https://github.com/cheetz/sslScrape “https://github.com/cheetz/sslScrape”)”>(https://github.com/cheetz/sslScrape)
“ “
sudo python sslScrape.py TARGET_CIDR
“ “
! [] (https://cdn-images-1.medium.com/max/1600/1*dOF94BIsWhPmnHpjIW0pGA.png)
sslScrape extraindo nomes de host de certificados SSL / TLS retornados por hosts IPv4
2.O serviço WHOIS é geralmente usado durante um teste de penetração para consultar informações relacionadas a usuários registrados de um recurso da Internet, como um nome de domínio ou um endereço IP (bloco). A enumeração WHOIS é especialmente eficaz contra organizações-alvo que possuem grande presença na Internet.
> Alguns servidores WHOIS públicos suportam consultas avançadas que podemos usar para reunir uma ampla variedade de informações em uma organização de destino.
Vejamos algumas consultas avançadas do WHOIS para coletar informações –
* Podemos consultar o [servidor ARIN WHOIS] (https://www.arin.net/resources/services/whois_guide.html) para retornar todas as entradas que possuem endereço de email de um determinado nome de domínio, que neste caso é _icann. org._ Estamos extraindo apenas os endereços de email dos resultados.
“ “
whois -h whois.arin.net “e @ icann.org” | grep -E -o “\ b [a-zA-Z0-9 .-] + @ [a-zA-Z0-9 .-] + \. [a-zA-Z0-9 .-] + \ b” | uniq
“ “
! [] (https://cdn-images-1.medium.com/max/1600/1*oYGnT18lLtml0WUfGpACpA.png)
Extraindo endereços de email do WHOIS consultando entradas que contêm o endereço de email de um domínio específico
* Podemos consultar o [servidor RADB WHOIS] (http://www.radb.net/support/query1.php) para retornar todos os netblocks que pertencem a um número de sistema autônomo (ASN)
“ “
whois -h whois.radb.net – ‘-i origem AS111111’ | grep -Eo “([0-9.] +) {4} / [0-9] +” | uniq
“ “
! [] (https://cdn-images-1.medium.com/max/1600/1*iXy-zyHi-VGtx80ysAD93w.png)
Listando todos os netblocks em um ASN usando uma consulta no servidor RADB WHOIS
* Podemos consultar o servidor ARIN WHOIS para retornar todos os clientes POC, ASN, organizações e usuários finais para uma determinada palavra-chave.
“ “
whois -h whois.arin.net “z wikimedia”
“ “
! [] (https://cdn-images-1.medium.com/max/1600/1*TZfmfe-ollv3vcG-62S1dw.png)
Descobrir informações sobre uma organização usando o serviço WHOIS
3. Encontrar números do [Sistema Autônomo (AS)] (https://www.iana.org/assignments/as-numbers) nos ajudará a identificar os bloqueios de rede pertencentes a uma organização que, por sua vez, podem levar à descoberta de serviços em execução no
* Existem ferramentas para encontrar ASN para um determinado endereço IP
“ “
curl -s http://ip-api.com/json/IP_ADDRESS | jq -r .as
“ “
Podemos usar o serviço WHOIS ou scripts NSE para identificar todos os bloqueios de rede que pertencem ao número ASN.
“ “
nmap –script target-asn –script-args target-asn.asn = 15169
“ “
! [] (https://cdn-images-1.medium.com/max/1600/1*z6W4_GxLJsya69L9cusFXg.png)
Localizando netblocks que pertencem a um ASN usando o script NSE de destinos-asn
4. O uso do armazenamento em nuvem tornou-se comum, especialmente serviços de armazenamento de objetos / blocos como Amazon S3, DigitalOcean Spaces e Azure Blob Storage. Nos últimos dois anos, houve [violações de dados de alto perfil] (https://github.com/nagwww/s3-leaks) que ocorreram devido a buckets S3 configurados incorretamente.
> Em nossa experiência, vimos pessoas armazenando todo tipo de dados em serviços de terceiros com pouca segurança, desde suas credenciais em arquivos de texto simples até fotos de seus animais de estimação.
Existem ferramentas como [Slurp] (https://github.com/yamakira/slurp), [AWSBucketDump] (https://github.com/jordanpotti/AWSBucketDump) e [Spaces Finder] (https://github.com / appsecco / spaces-finder) para procurar instâncias de armazenamento de objetos acessíveis ao público específicas do serviço. Ferramentas como Slurp e [Bucket Stream] (https://github.com/eth0izzle/bucket-stream) combinam dados de log de Transparência de certificados com descoberta baseada em permutação para identificar buckets S3 acessíveis ao público.
! [] (https://cdn-images-1.medium.com/max/1600/1*j6REBngZ8C__74cjXbXLgw.png)
Slurp descobrindo os buckets do Amazon s3 usando palavras-chave e varredura de permutação
! [] (https://cdn-images-1.medium.com/max/1600/1*FJqT0uGHb8OfN0rzT1Bn_A.png)
Slurp descobrindo buckets do Amazon s3 usando dados de log de CT e varredura de permutação
5.Wayback Machine é um enorme arquivo digital da World Wide Web e outras informações na Internet. O Wayback Machine também contém os instantâneos históricos dos sites. [Wayback CDX Server API] (https://archive.org/help/wayback_api.php) facilita a pesquisa nos arquivos. [waybackurls] (https://github.com/tomnomnom/waybackurls/) é uma ferramenta interessante para pesquisar dados relacionados a um site de interesse.
> A pesquisa no arquivo Wayback Machine é bastante útil na identificação de subdomínios para um determinado domínio, diretórios confidenciais, arquivos confidenciais e parâmetros em um aplicativo.
“ “
acesse github.com/tomnomnom/waybackurls
waybackurls icann.org
“ “
! [] (https://cdn-images-1.medium.com/max/1600/1*ByofojY2taaQgpvoHiOdZw.png)
“waybackurls” extraindo URLs que pertencem a um domínio listado no arquivo Way back machine
6. [Common Crawl] (http://commoncrawl.org/) é um projeto que cria e mantém um repositório de dados de rastreamento da web que podem ser acessados e analisados por qualquer pessoa. O rastreamento comum contém instantâneos históricos dos sites, juntamente com metadados sobre o site e os serviços que o fornecem. Podemos usar a [Common Crawl API] (https://index.commoncrawl.org/) para pesquisar seus dados indexados de rastreamento em busca de sites de interesse. [cc.py] (https://github.com/si9int/cc.py) é uma pequena ferramenta interessante para pesquisar dados de rastreamento para sites de interesse.
“ “
python cc.py -o cc_archive_results_icann.org icann.org
“ “
! [] (https://cdn-images-1.medium.com/max/1600/1*4X5LLtM8Y9w7VZnv6oUHGw.png)
“cc.py” extraindo URLs que pertencem a um domínio listado no arquivo de rastreamento comum
7. [Censys] (https://censys.io/) é uma plataforma que agrega enormes dados de varredura em toda a Internet e fornece uma interface para pesquisar nos conjuntos de dados. O Censys categoriza os conjuntos de dados em três tipos – hosts IPv4, sites e certificados SSL / TLS. A Censys tem um grande tesouro de informações a par de [Shodan] (http://shodan.io), se soubermos o que procurar e como procurá-lo.
[O Censys possui uma API] (https://censys.io/api) que podemos usar para executar consultas nos conjuntos de dados. Escrevemos um script Python que se conecta à API Censys, consulta certificados SSL / TLS para um determinado domínio e extrai sudomains e endereços de email que pertencem ao domínio. O script está disponível aqui –
[** yamakira / censys-enumeration **
_ Um script para extrair subdomínios / e-mails para um determinado domínio usando o conjunto de dados do certificado SSL / TLS no Censys… _github.com] (https://github.com/yamakira/censys-enumeration “https://github.com/yamakira/censys -enumeration “) [] (https://github.com/yamakira/censys-enumeration)
! [] (https://cdn-images-1.medium.com/max/1600/1*lDZBfwWjghMgjrVv9t1rhQ.png)
“censys-enumeration” extraindo subdomínios e endereços de email usando a API Censys
! [] (https://cdn-images-1.medium.com/max/1600/1*EIZuxVhmLNL8MXewJ0zRbA.png)
Subdomínios e endereços de email extraídos por “censys-enumeration” usando a API Censys
8. O projeto Censys coleta certificados SSL / TLS de várias fontes. Uma das técnicas usadas é analisar todas as máquinas no espaço de endereço IPv4 público na porta 443 e agregar os certificados SSL / TLS que eles retornam. O Censys fornece uma maneira de correlacionar o certificado SSL / TLS reunido com hosts IPv4 que forneceram o certificado.
> Usando a correlação entre os certificados SSL / TLS e o host IPv4 que forneceu o certificado, é possível expor os servidores de origem de um domínio protegido por serviços como o Cloudflare.
O CloudFlair é uma ferramenta que faz um ótimo trabalho em expor servidores de origem de um domínio usando o Censys. A ferramenta está disponível aqui –
[** christophetd / CloudFlair **
_Encontre servidores de origem de sites atrás do CloudFlare usando dados de varredura em toda a Internet da Censys. … _Github.com] (https://github.com/christophetd/CloudFlair “https://github.com/christophetd/CloudFlair”)[)(https://github.com/christophetd/CloudFlair)
! [] (https://cdn-images-1.medium.com/max/1600/1*2lNGZe1j-yPY5kby5yT0Gw.png)
“Cloud Flair” identificando os endereços IP do servidor de origem para medium.com
9. Os repositórios de código-fonte são um tesouro de informações durante as avaliações de segurança. O código fonte pode revelar muitas informações, desde credenciais, possíveis vulnerabilidades a detalhes de infraestrutura, etc. O GitHub é uma plataforma de colaboração e controle de versão extremamente popular, que você deve observar. Gitlab e Bitbucket também são serviços populares, onde você pode encontrar o código fonte de uma organização de destino.
Ferramentas como o [GitHubCloner] (https://github.com/mazen160/GithubCloner) são muito úteis para automatizar o processo de clonagem de todos os repositórios em uma conta do Github.
“ “
$ python githubcloner.py – organização -o / tmp / output
“ “
[** mazen160 / GithubCloner **
_ Um script que clona os repositórios de usuários e organizações do Github. – mazen160 / GithubCloner_github.com] (https://github.com/mazen160/GithubCloner “https://github.com/mazen160/GithubCloner”)[*(https://github.com/mazen160/GithubCloner)
Existem várias ferramentas que automatizam o processo de localização de segredos em repositórios de código-fonte como um [Gitrob] (https://github.com/dxa4481/truffleHog), [truffleHog] (https://github.com/dxa4481/truffleHog) , [git-all-secrets] (https://github.com/anshumanbh/git-all-secrets) etc.
10. [_Forward DNS_ dataset] (https://opendata.rapid7.com/sonar.fdns_v2/) é publicado como parte do [projeto Open Data do Rapid7] (https://opendata.rapid7.com/). Esses dados são um conjunto de respostas às solicitações de DNS para todos os nomes DNS de encaminhamento conhecidos pelo Project Sonar do Rapid7. O formato dos dados é um arquivo JSON compactado com gzip. Podemos analisar o conjunto de dados para encontrar subdomínios para um determinado domínio. O conjunto de dados é enorme (20 + GB compactado, 300 + GB não compactado). Nos últimos tempos, o conjunto de dados foi dividido em vários arquivos com base no tipo de registros DNS que os dados contêm.
! [] (https://cdn-images-1.medium.com/max/1600/1*bV2B51GoRdiMSv0Yb28HEA.png)
Extraindo domínios / subdomínios do conjunto de dados FDNS
11. A Política de Segurança de Conteúdo (CSP) define o cabeçalho HTTP da `Política de Segurança de Conteúdo`, que nos permite criar uma lista de desbloqueio de fontes de conteúdo confiável e instrui o navegador a executar ou renderizar apenas recursos dessas fontes
O cabeçalho Content-Security-Policy listará várias fontes (domínios) que podem ser do nosso interesse como atacantes. Escrevemos um script simples para analisar e resolver os nomes de domínio listados em um cabeçalho CSP. O script está disponível aqui –
[** yamakira / domínios-da-csp **
_ Um script para extrair nomes de domínio dos cabeçalhos da Política de Segurança de Conteúdo (CSP) – yamakira / domains-from-csp_github.com] (https://github.com/yamakira/domains-from-csp “https://github.com/ yamakira / domains-from-csp “) [] (https://github.com/yamakira/domains-from-csp)
! [] (https://cdn-images-1.medium.com/max/1600/1*olkJf6qPuSn9VDLEPTaivQ.png)
12. Um registro Sender Policy Framework (SPF) e é usado para indicar ao recebimento de trocas de correio quais hosts estão autorizados a enviar correio para um determinado domínio
Simplificando, um registro SPF lista todos os hosts autorizados a enviar emails em nome de um domínio. Às vezes, os registros SPF vazam blocos de rede internos e nomes de domínio.
Serviços como [Security Trails] (http://securitytrails.com) fornecem instantâneos históricos dos registros DNS. Podemos dar uma olhada nos registros SPF históricos para descobrir blocos de rede internos e nomes de domínio para um determinado domínio que estão listados no registro SPF.
! [] (https://cdn-images-1.medium.com/max/1600/1*p8L72lfNQaAtbKFKBqLmIw.png)
Registros históricos do SPF para icann.org exibidos por [Security Trails] (http://securitytrails.com)
Escrevemos um script rápido que extrai netblocks e domínios do registro SPF para um determinado domínio. O script também pode retornar detalhes do ASN para cada ativo quando executado com a opção _ \ – a_. O script está disponível aqui –
[** yamakira / assets-from-spf **
_Um script Python para analisar blocos de rede e nomes de domínio do registro SPF – yamakira / assets-from-spf_github.com] (https://github.com/yamakira/assets-from-spf “https://github.com/yamakira /assets-from-spf”)[)(https://github.com/yamakira/assets-from-spf)
“ “
python assets_from_spf.py icann.org -a | jq.
“ “
! [] (https://cdn-images-1.medium.com/max/1600/1*fkWAcHMa6gJHjiANNjOQxA.gif)
Conclusão
Neste artigo, examinamos várias técnicas OSINT que usamos diariamente em nossas avaliações de segurança. Embora este artigo seja extenso, não pretende ser exaustivo. O cenário OSINT está sempre mudando e não existe um tamanho único. Fizemos um esforço para cobrir técnicas que melhorarão a cobertura durante a fase de reconhecimento de um teste de penetração.
Isso nos leva ao final deste post. Se existem técnicas que você usa com freqüência que lhe deram resultados interessantes e se você gostaria de compartilhá-las, deixe um comentário.
Até a próxima, hackers felizes !!
### Referências
* [https://blog.appsecco.com/open-source-intelligence-gathering-101-d2861d4429e3ingerie(https://blog.appsecco.com/open-source-intelligence-gathering-101-d2861d4429e3)
* [https://blog.appsecco.com/certificate-transparency-part-3-the-dark-side-9d401809b025,95(https://blog.appsecco.com/certificate-transparency-part-3-the-dark -side-9d401809b025)
* [https://blog.appsecco.com/a-penetration-testers-guide-to-sub-domain-enumeration-7d842d5570f6orgeous(https://blog.appsecco.com/a-penetration-testers-guide-to -sub-domain-enumeration-7d842d5570f6)
* [https://www.certificate-transparency.org] (https://www.certificate-transparency.org)
* [https://www.arin.net/resources/services/whois\_guide.htmlingerie(https://www.arin.net/resources/services/whois_guide.html)
* [https://index.commoncrawl.org/}(https://index.commoncrawl.org/)
* [https://www.upguard.com/breaches/cloud-leak-accenture ♡(https://www.upguard.com/breaches/cloud-leak-accenture)
* [https://www.0xpatrik.com/censys-guide/ingerie(https://www.0xpatrik.com/censys-guide/)
* [https://www.0xpatrik.com/osint-domains/unette(https://www.0xpatrik.com/osint-domains/)
* [https://opendata.rapid7.com/sonar.fdns\_v2/}(https://opendata.rapid7.com/sonar.fdns_v2/)