Sua vez, gráfico: como não encontramos um bom gráfico de rede e criamos o nosso

Sua vez, gráfico: como não encontramos um bom gráfico de rede e criamos o nosso

Investigando casos relacionados a phishing, botnets, transações fraudulentas e grupos de hackers criminosos, os especialistas da Group-IB utilizam a análise gráfica há muitos anos para identificar vários tipos de conexões. Em diferentes casos, existem seus próprios conjuntos de dados, seus algoritmos de detecção de conexões e interfaces adaptadas para tarefas específicas. Todas essas ferramentas foram desenvolvidas internamente pela Group-IB e estavam disponíveis apenas para nossos funcionários.

A análise gráfica da infraestrutura de rede (grafo de rede) foi a primeira ferramenta interna que incorporamos em todos os produtos públicos da empresa. Antes de criar nosso grafo de rede, analisamos muitas soluções semelhantes no mercado e não encontramos nenhum produto que atendesse nossas necessidades. Neste artigo, vamos contar como criamos o grafo de rede, como o utilizamos e quais dificuldades enfrentamos.

Dmitry Volkov, CTO da Group-IB e chefe da divisão de ciberinteligência

O que o grafo de rede da Group-IB pode fazer?

Investigações

Desde a fundação da Group-IB em 2003 até hoje, a identificação, desanonimização e responsabilização de cibercriminosos têm sido a nossa principal prioridade. Nenhuma investigação de ataque cibernético se completa sem a análise da infraestrutura de rede dos atacantes. No início da nossa trajetória, este era um trabalho bastante meticuloso de 'mão na massa' para buscar conexões que poderiam ajudar na identificação dos criminosos: informações sobre nomes de domínio, endereços IP, impressões digitais de servidores, etc.

A maioria dos atacantes tenta agir de forma anônima na internet. No entanto, como todas as pessoas, eles cometem erros. A principal tarefa dessa análise é encontrar projetos "brancos" ou "cinzas" históricos dos criminosos que têm intersecções com a infraestrutura maliciosa utilizada no incidente atual que estamos investigando. Se conseguirmos descobrir projetos "brancos", geralmente se torna uma tarefa trivial encontrar o atacante. No caso dos "cinzas", a busca leva mais tempo e esforço, pois seus proprietários tentam anonimizar ou esconder os dados de registro, mas as chances ainda são bastante altas. Geralmente, no início de sua atividade criminosa, os atacantes prestam menos atenção à própria segurança e cometem mais erros; por isso, quanto mais fundo conseguirmos mergulhar na história, maiores as chances de uma investigação bem-sucedida. É por isso que um gráfico de rede com uma boa história é um elemento crucial nessa investigação. Em termos simples, quanto mais dados históricos uma empresa possui, melhor é seu gráfico. Suponha que uma história de 5 anos possa ajudar a resolver, digamos, 1-2 dos 10 crimes, enquanto uma história de 15 anos oferece chances de resolver todos os dez.

Detecção de phishing e fraude

Sempre que recebemos um link suspeito para sites de phishing, fraudulentos ou piratas, automaticamente construímos um gráfico de recursos de rede relacionados e verificamos todos os hosts encontrados para conteúdo semelhante. Isso permite encontrar tanto antigos sites de phishing que estavam ativos, mas eram desconhecidos, quanto novos, que foram preparados para futuros ataques, mas ainda não estão em uso. Um exemplo simples, que ocorre com bastante frequência: encontramos um site de phishing em um servidor que possui apenas 5 sites. Ao verificar cada um deles, encontramos conteúdo de phishing nos outros sites também, o que significa que podemos bloquear 5 em vez de 1.

Busca de backends

Esse processo é necessário para determinar onde realmente está o servidor malicioso.
99% de lojas de cartões, fóruns de hackers, numerosos recursos de phishing e outros servidores maliciosos se escondem tanto atrás de seus próprios proxies quanto de proxies de serviços legítimos, como a Cloudflare. O conhecimento sobre o backend real é muito importante para investigações: o provedor de hospedagem se torna conhecido, permitindo a apreensão do servidor e a possibilidade de estabelecer conexões com outros projetos maliciosos.

Por exemplo, você tem um site de phishing para coletar dados de cartões de crédito, que resolve para o IP 11.11.11.11, e o endereço da loja de cartões, que resolve para o IP 22.22.22.22. Durante a análise, pode-se descobrir que tanto o site de phishing quanto a loja de cartões compartilham o mesmo IP de backend, por exemplo, 33.33.33.33. Esse conhecimento permite estabelecer uma conexão entre os ataques de phishing e a loja de cartões, na qual, possivelmente, os dados dos cartões de crédito estão sendo vendidos.

Correlação de eventos

Quando você tem duas detecções diferentes (digamos, em um IDS) com diferentes malwares e diferentes servidores para controlar os ataques, você as considerará como dois eventos independentes. Mas se houver uma boa conexão entre as infraestruturas maliciosas, ficará claro que não se trata de ataques diferentes, mas de etapas de um único ataque mais complexo e multifacetado. E se um dos eventos já estiver associado a um determinado grupo de atacantes, o segundo também pode ser atribuído ao mesmo grupo. Claro, o processo de atribuição é muito mais complexo, então trate este texto como um exemplo simplificado.

Enriquecimento de indicadores

Não vamos dedicar muito tempo a isso, pois é o cenário mais comum de uso de grafos em cibersegurança: você fornece um indicador como entrada e recebe um array de indicadores relacionados como saída.

Identificação de padrões

A identificação de padrões é necessária para uma caça eficaz. Os grafos permitem não apenas encontrar elementos relacionados, mas também identificar propriedades comuns que pertencem a um determinado grupo de hackers. Conhecer tais características únicas permite reconhecer a infraestrutura dos atacantes ainda na fase de preparação e sem evidências que confirmem o ataque, como e-mails de phishing ou programas maliciosos.

Por que criamos nosso grafo de rede?

Reitero que avaliamos soluções de diferentes fornecedores antes de concluir que precisaríamos desenvolver nossa própria ferramenta, capaz de realizar o que nenhum produto existente consegue. Sua criação levou vários anos, durante os quais fizemos mudanças significativas. Mas, apesar do longo período de desenvolvimento, ainda não encontramos um único equivalente que atendesse às nossas necessidades. Com o nosso produto, conseguimos resolver praticamente todos os problemas que identificamos nas atuais redes de grafos. Abaixo, analisaremos esses problemas detalhadamente:

O problema
Solução

Ausência de um fornecedor com diferentes coleções de dados: domínios, DNS passivo, SSL passivo, registros DNS, portas abertas, serviços em execução nas portas, arquivos que interagem com nomes de domínio e endereços IP. Explicação. Normalmente, os fornecedores oferecem tipos de dados separados e, para montar um panorama completo, é necessário comprar assinaturas de todos eles. Mas, mesmo assim, nem sempre é possível obter todos os dados: alguns fornecedores de SSL passivo fornecem dados apenas sobre certificados emitidos por CA confiáveis, e a cobertura de certificados autoassinados é extremamente baixa. Outros fornecem dados sobre certificados autoassinados, mas os coletam apenas de portas padrão.
Nós reunimos todas as coleções mencionadas acima. Por exemplo, para coletar dados sobre certificados SSL, desenvolvemos nosso próprio serviço, que captura informações tanto de CAs confiáveis quanto por meio da varredura de todo o espaço IPv4. Os certificados foram coletados não apenas de IPs, mas de todos os domínios e subdomínios em nossa base: se você possui o domínio example.com e seu subdomínio www.exemplo.com e todos eles resolvem para o IP 1.1.1.1, ao tentar obter o certificado SSL na porta 443 pelo IP, domínio e seu subdomínio, você pode obter três resultados diferentes. Para coletar dados sobre portas abertas e serviços em execução, foi necessário criar nosso próprio sistema de varredura distribuído, porque outros serviços normalmente têm os endereços IP de seus servidores de varredura em "listas negras". Nossos servidores de varredura também acabam em "listas negras", mas o resultado da detecção dos serviços que precisamos é superior ao de quem apenas varre o maior número possível de portas e vende acesso a esses dados.

A ausência de acesso a todo o banco de registros históricos. Explicação. Todo fornecedor decente possui um bom histórico acumulado, mas, por razões naturais, não conseguimos obter acesso a todos os dados históricos como clientes. Ou seja, é possível obter todo o histórico de um registro específico, como um domínio ou endereço IP, mas não é possível ver o histórico completo — e sem isso, não conseguimos ter uma visão total.
Para coletar o maior número possível de registros históricos sobre domínios, adquirimos diferentes bancos de dados, extraímos informações de muitos recursos abertos que continham esse histórico (felizmente, havia muitos), e firmamos acordos com registradores de nomes de domínio. Todas as atualizações em nossas próprias coleções, é claro, são mantidas com um histórico completo de mudanças.

Todas as soluções existentes permitem construir um gráfico manualmente. Explicação. Suponha que você comprou várias assinaturas de todos os possíveis fornecedores de dados (geralmente chamados de 'enriquecedores'). Quando você precisa construir um gráfico, você 'manualmente' dá o comando para completar a conexão a partir do elemento desejado, depois, dos novos elementos gerados, escolhe os necessários e dá o comando para construir as conexões a partir deles e assim por diante. Nesse caso, a responsabilidade pela qualidade da construção do gráfico recai totalmente sobre o ser humano.
Fizemos a construção automática de gráficos. Ou seja, se você precisa montar um gráfico, as conexões a partir do primeiro elemento são construídas automaticamente, assim como de todos os subsequentes. O especialista apenas indica a profundidade necessária para a construção do gráfico. O próprio processo de construção automática de gráficos é simples, mas outros fornecedores não o implementam porque gera uma quantidade enorme de resultados irrelevantes e essa desvantagem também tivemos que considerar (veja abaixo).

Um número excessivo de resultados irrelevantes é um problema comum em gráficos de componentes de rede. Explicação. Por exemplo, um "domínio ruim" (que participou de um ataque) está vinculado a um servidor que, nos últimos 10 anos, tem 500 outros domínios associados. Ao adicionar manualmente ou construir automaticamente um gráfico, todos esses 500 domínios também devem aparecer no gráfico, mesmo que não tenham relação com o ataque. Ou, por exemplo, você está verificando um indicador IP de um relatório de um fornecedor de segurança. Normalmente, esses relatórios são lançados com um atraso significativo e muitas vezes cobrem um ano ou mais. É provável que, no momento em que você lê o relatório, o servidor com esse endereço IP já tenha sido alugado para outras pessoas com outras associações, e a construção do gráfico resultará novamente em resultados irrelevantes.
Treinamos o sistema para detectar elementos irrelevantes com a mesma lógica que nossos especialistas utilizavam manualmente. Por exemplo, você verifica o domínio ruim example.com, que agora resolve para o IP 11.11.11.11, enquanto um mês atrás era o IP 22.22.22.22. Com o IP 11.11.11.11, além do domínio example.com, está também example.ru, enquanto o IP 22.22.22.22 está associado a 25 mil outros domínios. O sistema, assim como um humano, entende que 11.11.11.11 é provavelmente um servidor dedicado e, dado que o domínio example.ru é similar ao example.com, é muito provável que eles estejam relacionados e devem constar no gráfico; já o IP 22.22.22.22 pertence a um hosting compartilhado, portanto, é desnecessário incluir todos os seus domínios no gráfico, a menos que haja outras conexões indicando que algum desses 25 mil domínios também precise ser destacado (por exemplo, example.net). Antes que o sistema entenda que as associações devem ser rompidas e que parte dos elementos não deve ser exibida no gráfico, ele considera muitas propriedades dos elementos e dos clusters aos quais esses elementos estão vinculados, assim como a força das conexões atuais. Por exemplo, se tivermos um pequeno cluster no gráfico (50 elementos) que inclui um domínio ruim e outro grande cluster (5 mil elementos) e ambos os clusters estiverem conectados por uma associação (linha) com muito pouca força (peso), essa conexão será rompida e os elementos do grande cluster serão removidos. Mas se houver muitas associações entre os clusters pequeno e grande e sua força for gradualmente aumentando, nesse caso, a conexão não será rompida e os elementos necessários de ambos os clusters permanecerão no gráfico.

O intervalo de posse do servidor e do domínio não é considerado. Explicação. O período de registro de "domínios ruins" acaba eventualmente, e eles são novamente adquiridos para fins maliciosos ou legítimos. Mesmo em provedores de hospedagem bulletproof, servidores são alugados para diversos hackers, portanto, é crítico saber e considerar o intervalo em que determinado domínio/servidor esteve sob o controle de um único proprietário. Frequentemente nos deparamos com a situação em que o servidor com IP 11.11.11.11 está agora sendo usado como C&C para bots bancários, enquanto há apenas 2 meses era controlado por ransomware. Se estabelecer uma conexão sem considerar os intervalos de posse, parecerá que há uma ligação entre os proprietários da rede de bots bancários e os extorsionistas, embora na realidade essa conexão não exista. Em nosso trabalho, esse erro é crítico.
Ensinamos o sistema a identificar intervalos de posse. Para domínios, isso é relativamente simples, já que no whois frequentemente estão indicadas as datas de início e de término do registro e, quando há um histórico completo de alterações no whois, determinar os intervalos é fácil. Mesmo quando o prazo de registro de um domínio não expirou, mas a gestão foi transferida para outros proprietários, isso também pode ser rastreado. Para certificados SSL, essa problemática não existe, pois é emitido uma única vez, não é renovado e não é transferido. Mas em certificados autoassinados, não é possível confiar nas datas especificadas no prazo de validade do certificado, pois é possível gerar um certificado SSL hoje e indicar uma data de início de validade de 2010. A parte mais difícil é determinar os intervalos de posse para servidores, pois as datas e as durações de locação estão disponíveis apenas para os provedores de hospedagem. Para determinar o período de posse do servidor, começamos a utilizar os resultados da varredura de portas e da criação de impressões digitais dos serviços em execução nas portas. Com essas informações, podemos afirmar com precisão quando o proprietário do servidor mudou.

Poucas conexões. Explicação. Atualmente, não é um problema até mesmo obter gratuitamente uma lista de domínios para os quais um determinado endereço de e-mail está indicado no whois ou descobrir todos os domínios vinculados a um determinado endereço IP. Mas, quando se trata de hackers que fazem o possível para serem difíceis de rastrear, são necessários "truques" adicionais para encontrar novas propriedades e estabelecer novas conexões.
Investimos muito tempo pesquisando como extrair dados que não estão disponíveis por meios convencionais. Não podemos descrever aqui como isso funciona por razões óbvias, mas em certas circunstâncias, hackers cometem erros ao registrar domínios ou alugar e configurar servidores, o que permite descobrir endereços de e-mail, pseudônimos de hackers e endereços de backend. Quanto mais conexões você extrai, mais preciso posso construir gráficos.

Como funciona nosso gráfico

Para começar a usar o gráfico de rede, você deve inserir um domínio, endereço IP, e-mail ou impressão digital do certificado SSL na barra de pesquisa. Existem três condições que o analista pode gerenciar: tempo, profundidade dos passos e limpeza.

Sua vez, gráfico: como não encontramos um bom gráfico de rede e criamos o nosso

Tempo

Tempo – data ou intervalo em que o item pesquisado foi usado para fins maliciosos. Se esse parâmetro não for especificado, o sistema irá determinar o último intervalo de posse desse recurso. Por exemplo, em 11 de julho, a empresa Eset publicou um relatório sobre como Buhtrap utiliza um exploit zero-day para ciberespionagem. No final do relatório, existem 6 indicadores. Um deles, secure-telemetry[.]net, foi registrado novamente em 16 de julho. Portanto, se você construir um gráfico após 16 de julho, obterá resultados irrelevantes. Mas se especificar que esse domínio foi usado antes dessa data, entrarão no gráfico 126 novos domínios e 69 endereços IP que não estão mencionados no relatório da Eset:

  • ukrfreshnews[.]com
  • unian-search[.]com
  • vesti-world[.]info
  • runewsmeta[.]com
  • foxnewsmeta[.]biz
  • sobesednik-meta[.]info
  • rian-ua[.]net
  • e outras.

Além dos indicadores de rede, encontramos imediatamente relações com arquivos maliciosos que tiveram conexões com essa infraestrutura e tags que nos indicam que foram utilizados Meterpreter e AZORult.

O mais impressionante é que você obtém esse resultado em um segundo e já não precisa gastar dias analisando dados. Sem dúvida, essa abordagem às vezes reduz drasticamente o tempo de investigações, o que muitas vezes é crítico.

Sua vez, gráfico: como não encontramos um bom gráfico de rede e criamos o nosso

Número de passos ou profundidade da recursão com a qual o gráfico será construído

Por padrão, a profundidade é 3. Isso significa que todas as entidades diretamente relacionadas ao item pesquisado serão encontradas, e novas conexões serão estabelecidas para cada um desses novos elementos até que novos elementos sejam formados a partir dos elementos do passo anterior.

Vamos pegar um exemplo não relacionado a APT e exploits de 0-day. Recentemente, no Habr, foi descrito um caso interessante de fraude relacionado a criptomoedas. O relatório menciona o domínio — themcx[.]co, usado pelos golpistas para hospedar o site supostamente de troca Miner Coin Exchange e phone-lookup[.]xyz, para atrair tráfego.

Da descrição, fica claro que o esquema requer uma infraestrutura bastante grande para atrair tráfego para os recursos fraudulentos. Decidimos olhar para essa infraestrutura, construindo um gráfico em 4 etapas. No final, obtivemos um gráfico com 230 domínios e 39 endereços IP. Em seguida, dividimos os domínios em 2 categorias: aqueles que se parecem com serviços de criptomoedas e aqueles destinados a gerar tráfego através de serviços de verificação de telefones:

Relacionados a criptomoedas
Relacionados a serviços de verificação de telefones

coinkeeper[.]cc
caller-record[.]site.

mcxwallet[.]co
phone-records[.]space

btcnoise[.]com
fone-uncover[.]xyz

cryptominer[.]watch
number-uncover[.]info

Sua vez, gráfico: como não encontramos um bom gráfico de rede e criamos o nosso

Limpeza

Por padrão, a opção "Limpeza do gráfico" está ativada e todos os elementos irrelevantes serão removidos do gráfico. A propósito, essa opção foi usada em todos os exemplos anteriores. Antevejo a pergunta natural: como fazer para que algo importante não seja removido? Respondo: para os analistas que gostam de construir gráficos manualmente, a limpeza automatizada pode ser desativada e o número de passos definido como 1. Em seguida, o analista poderá complementar o gráfico com os elementos que lhe interessam e remover os elementos irrelevantes em relação à tarefa proposta.

Já no gráfico, o analista tem acesso ao histórico de alterações whois, DNS, assim como às portas abertas e aos serviços executados nelas.

Sua vez, gráfico: como não encontramos um bom gráfico de rede e criamos o nosso

Phishing financeiro

Investigamos as ações de um grupo APT que, durante vários anos, conduziu ataques de phishing contra clientes de vários bancos em diferentes regiões. Uma característica marcante deste grupo era o registro de domínios muito semelhantes aos nomes de bancos reais, e a maioria dos sites de phishing tinha o mesmo design, com as únicas diferenças sendo os nomes dos bancos e seus logotipos.

Sua vez, gráfico: como não encontramos um bom gráfico de rede e criamos o nosso
Neste caso, a análise gráfica automatizada nos ajudou muito. Pegando um de seus domínios — lloydsbnk-uk[.]com, nós construímos, em poucos segundos, um gráfico com profundidade de 3 passos, que revelou mais de 250 domínios maliciosos utilizados por esse grupo desde 2015 e que continuam em uso. Alguns desses domínios já foram adquiridos por bancos, mas pelos registros históricos, é evidente que anteriormente estavam registrados pelos atacantes.

Para visualização, a imagem mostra um gráfico com profundidade de 2 passos.

Vale ressaltar que, já em 2019, os atacantes mudaram um pouco sua tática e começaram a registrar não apenas domínios bancários para hospedagem de web phishing, mas também domínios de várias empresas de consultoria para enviar e-mails de phishing. Por exemplo, os domínios swift-department.com, saudconsultancy.com, vbgrigoryanpartners.com.

Sua vez, gráfico: como não encontramos um bom gráfico de rede e criamos o nosso

Cobalt gang

Em dezembro de 2018, o grupo hacker Cobalt, especializado em ataques direcionados a bancos, realizou um envio em nome do Banco Nacional do Cazaquistão.

Sua vez, gráfico: como não encontramos um bom gráfico de rede e criamos o nosso
Nos e-mails, havia links para hXXps://nationalbank.bz/Doc/Prikaz.doc. O documento baixado continha um macro que executava o PowerShell, que tentaria baixar e executar um arquivo de hXXp://wateroilclub.com/file/dwm.exe em %Temp%einmrmdmy.exe. O arquivo %Temp%einmrmdmy.exe, também conhecido como dwm.exe — é um stager do CobInt, configurado para interagir com o servidor hXXp://admvmsopp.com/rilruietguadvtoefmuy.

Imagine que você não tem a capacidade de receber esses e-mails de phishing e realizar uma análise completa dos arquivos maliciosos. O gráfico do domínio malicioso nationalbank[.]bz mostra imediatamente as conexões com outros domínios maliciosos, atribui isso ao grupo e mostra quais arquivos foram utilizados no ataque.

Sua vez, gráfico: como não encontramos um bom gráfico de rede e criamos o nosso
Vamos pegar deste gráfico o endereço IP 46.173.219[.]152 e construir um gráfico com uma passagem sem limpar. Ele está associado a 40 domínios, por exemplo, bl0ckchain[.]ug
paypal.co.uk.qlg6[.]pw
cryptoelips[.]com

Judging by the domain names, it seems that they are used in fraudulent schemes, but the cleaning algorithm understood that they are unrelated to this attack and did not include them on the graph, which greatly simplifies the process of analysis and attribution.

Sua vez, gráfico: como não encontramos um bom gráfico de rede e criamos o nosso
If we rebuild the graph for nationalbank[.]bz but disable the cleaning algorithm, it will include more than 500 elements, most of which have no relation to either the Cobalt group or their attacks. An example of how such a graph looks is shown below:

Sua vez, gráfico: como não encontramos um bom gráfico de rede e criamos o nosso

Conclusão

Após anos de ajustes finos, testes em investigações reais, pesquisa de ameaças e caça a atacantes, conseguimos não apenas criar uma ferramenta única, mas também mudar a percepção dos especialistas dentro da empresa. Inicialmente, os especialistas técnicos desejavam controle total sobre o processo de construção do grafo. Convencê-los de que a construção automática do grafo poderia fazer isso melhor do que uma pessoa com anos de experiência foi extremamente difícil. O tempo e as múltiplas verificações “manuais” dos resultados fornecidos pelo grafo foram decisivos. Agora, nossos especialistas não apenas confiam no sistema, mas também utilizam os resultados obtidos em seu trabalho diário. Esta tecnologia opera dentro de cada um de nossos sistemas e permite identificar melhor ameaças de qualquer tipo. A interface para análise manual do grafo está embutida em todos os produtos da Group-IB e amplia significativamente as capacidades de caça ao cibercrime. Isso é confirmado pelos depoimentos de analistas de nossos clientes. E nós, por nossa vez, continuamos a enriquecer o grafo com dados e a trabalhar em novos algoritmos que utilizam inteligência artificial para um grafo de rede mais preciso.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster