Salfram: Entenda esse ataque
O Cisco Talos descobriu recentemente uma série de campanhas de e-mail utilizando links para documentos maliciosos hospedados em plataformas legítimas de compartilhamento de arquivos para espalhar malware.
Por Holger Unterbrink e Edmund Brumaghin .
RESUMO DA AMEAÇA
- As campanhas distribuíram vários payloads de malware, incluindo Gozi ISFB , ZLoader, SmokeLoader e AveMaria, entre outros.
- As campanhas em andamento estão distribuindo várias famílias de malware usando o mesmo crypter. Embora eficaz, esse mecanismo de criptografia contém uma falha fácil de detectar: a presença de um valor de string específico “Salfram” facilita o rastreamento ao longo do tempo.
- Binários ofuscados são completamente diferentes, tanto da perspectiva do gráfico de fluxo de execução quanto do binário.
- As técnicas usadas por este crypter podem confundir sistemas baseados em comportamento de API fracos e ferramentas de análise estática.
- Este crypter parece estar passando por um desenvolvimento ativo e melhorias ao longo do tempo.
SUMÁRIO EXECUTIVO
Nos últimos meses, a Cisco Talos viu invasores realizando campanhas contínuas de distribuição de malware por e-mail para distribuir várias cargas de malware. Essas campanhas de e-mail apresentam várias características notáveis que parecem projetadas para evitar a detecção e maximizar a eficácia dessas campanhas. O uso de formulários de contato baseados na web, plataformas de hospedagem legítimas e um crypter específico tornam a análise e a detecção mais difíceis. Todas as amostras de malware associadas a essas campanhas apresentam um cabeçalho DOS modificado contendo a string “Salfram”, tornando-os extremamente fáceis de rastrear ao longo do tempo. O crypter usado nessas campanhas está passando por um desenvolvimento ativo e melhorias para ofuscar o conteúdo de cargas de malware. Além disso, o crypter usa várias técnicas eficazes para dificultar a detecção e a análise da carga final do malware. Ele ofusca os binários de carga útil originais de uma forma que resulta em cargas que parecem completamente diferentes umas das outras depois de serem empacotadas usando o mesmo criptografador. É até muito trabalhoso comparar os binários compactados em um desmontador e determinar se o mesmo compactador foi usado.
CAMPANHAS DE DISTRIBUIÇÃO
As campanhas de distribuição de e-mail associadas a essas cargas de malware apresentam características projetadas para evitar a detecção e dificultar a análise e o rastreamento. Na maioria dos casos, o agente da ameaça estava iniciando comunicações por e-mail com vítimas em potencial usando os formulários de contato presentes no site da organização da vítima. Isso resulta em comunicações por email que parecem se originar de fontes legítimas que podem permitir que os adversários evitem alguns mecanismos de segurança de email.
Nas mensagens, o invasor finge ser o proprietário dos direitos autorais das imagens que o invasor afirma ter encontrado hospedadas no site da organização alvo sem sua permissão. O conteúdo do e-mail é um tanto personalizado, listando o domínio da organização alvo como o site que contém o conteúdo infrator e solicitando que acessem um hiperlink presente no e-mail. A Figura 1 é um exemplo de um dos e-mails associados a uma dessas campanhas.
A Figura 2 é outro exemplo desses e-mails, demonstrando como o conteúdo de mensagens individuais pode mudar com base no formulário de contato e na configuração do site da organização que está sendo direcionada.
Ao analisar os envios de formulários de contato maliciosos associados a essas campanhas, obtivemos informações sobre o sistema usado para enviar o conteúdo do formulário. Os envios de formulários de contato foram realizados por meio de servidores proxy usando um mecanismo automatizado, como script, para gerar e enviar os dados.
A maioria dos e-mails continha links para um arquivo malicioso hospedado no Google Drive. A estrutura do diretório e os valores dos parâmetros alternam frequentemente entre vários e-mails. A Figura 3 lista alguns exemplos desses URLs.
Novamente, o uso de uma plataforma web legítima para hospedar o conteúdo malicioso pode fornecer outra maneira para o invasor escapar de várias proteções que podem ser implantadas nos ambientes que eles têm como alvo. Quando a URL é acessada, a vítima recebe um arquivo malicioso, geralmente um documento do Microsoft Office semelhante ao da Figura 4.
Esses documentos contêm macros maliciosas que iniciam o processo de infecção e são responsáveis por recuperar uma carga maliciosa e executá-la para infectar o sistema. As cargas úteis entregues variam com o tempo. Nos últimos meses, observamos campanhas sendo usadas para entregar vários ladrões de informações, cavalos de tróia bancários e outros carregadores de malware, incluindo, mas não se limitando a Gozi ISFB , ZLoader, SmokeLoader , Oski, AveMaria e cargas úteis Cobalt Strike, entre outros.
Também descobrimos cadeias de infecção que entregam várias cargas úteis a uma única vítima como parte de um processo de infecção de vários estágios. Embora a entrega de carga útil contenha várias famílias de malware distintas, em todas as campanhas observadas, as cargas úteis de malware iniciais usaram o mesmo crypter, o que ofusca o conteúdo malicioso presente no executável binário e torna a análise mais difícil. Conforme mostrado na Figura 5, essas amostras podem ser observadas rapidamente, pois as amostras embaladas apresentam uma modificação específica no esboço do DOS:
A próxima seção descreve como essas técnicas foram implementadas e como analisar as amostras que podem ter sido ofuscadas usando esse crypter.
VISÃO GERAL TÉCNICA
As técnicas de ofuscação usadas por este empacotador não são triviais, então é surpreendente que todos os binários observados contivessem a string facilmente rastreável “Salfram” dentro do stub DOS. É necessária uma investigação mais aprofundada para determinar se o empacotador está modificando automaticamente o conteúdo do stub do DOS ou se isso está sendo feito pelo ator por trás das campanhas.
As amostras que analisamos têm carimbos de data / hora de compilador ou depuração que variam de abril de 2019 a agosto de 2020, mas a maioria das amostras é de janeiro de 2020 em diante. As campanhas anteriores são muito pequenas ou apenas testes. A estrutura binária de muitos dos exemplos é diferente, com diferenças que vão desde pequenas alterações até fluxos de execução de código que são completamente diferentes. No entanto, eles compartilham a mesma ou pelo menos uma lógica muito semelhante. É difícil dizer se essas mudanças se devem ao uso de diferentes recursos de ofuscação disponíveis no criptografador ou ao uso de diferentes versões do criptografador. Comparando as amostras que analisamos, acreditamos que é um pouco dos dois – o crypter é atualizado com frequência e mantido ativamente pelo autor do software.
A seção a seguir descreve um subconjunto das diferenças e semelhanças típicas que observamos ao analisar amostras usando este ofuscador.
A maioria dos exemplos começa com uma rotina de inicialização comum (security_init_cookie) e então pula para a função principal de desempacotamento. Esta função pode variar em amostras diferentes e até mesmo a inicialização parece diferente nas amostras mais recentes. As Figuras 6 a 8 mostram as funções de inicialização e desempacotamento em três exemplos diferentes.
Figura 6: Amostra 4bfd547775ba5892e66d2ff6a0c1de4365ab11b3_exe.bin (946d4d332a06b9af10da38beb3e8195054840b59a870a2f9027e6471f4869dc6) |
Figura 7: Amostra 9679f2690d31cee38e57f080656b8618ca474c65_exe.bin (9b28aa737bbfec90341c6a42e2d44f3308659e4fb9dd42d98a0b46cde7aaed63) |
Figura 8: Amostra 64800a2f85e12090eea5109e05d969a08ae9850a_exe.bin (0c09ea2d5722a2484804bf8c4f051d66d8a95d23c19e5d1277a55cafd80b67be) |
O que todos eles têm em comum é que eles colocam muitos valores relacionados à descompactação na pilha e inserem um grande número de chamadas API falsas entre eles. A Figura 6 mostra os argumentos sem sentido transferidos para GetModuleFilenameA. A Figura 9 mostra outro exemplo disso:
O outro recurso comum é que o crypter divide o código em muitos blocos básicos que são conectados por meio de saltos e instruções de retorno. A maioria são saltos incondicionais, mas também existem aqueles que usam condições que são sempre verdadeiras ou falsas – em outras palavras, o fluxo do código é sempre predefinido. Além disso, especialmente em locais como chamadas API não falsas, o código empurra o endereço do próximo bloco de código ou chamada API para a pilha e usa a instrução de retorno para saltar para ele. Isso resulta em um código espaguete difícil de decifrar. Além do código de desmontagem ofuscado, as chamadas API falsas também podem confundir sistemas de detecção baseados em comportamento fracos e / ou podem ser usadas para detectar certos sistemas baseados em emulação. Devido à quantidade de chamadas de API, não analisamos o último em detalhes.
A próxima camada de proteção vem com um monte de rotinas de automodificação. Depois de definir o cenário escondido dentro do código espaguete, a grande maioria das amostras executa uma rotina de automodificação via “call eax” (Figuras 10 e 11).
Figura 10: Amostra 4bfd547775ba5892e66d2ff6a0c1de4365ab11b3_exe.bin (946d4d332a06b9af10da38beb3e8195054840b59a870a2f9027e6471f4869dc6) |
Figura 11: Amostra 9679f2690d31cee38e57f080656b8618ca474c65_exe.bin (9b28aa737bbfec90341c6a42e2d44f3308659e4fb9dd42d98a0b46cde7aaed63) |
Novamente, conforme mostrado nas Figuras 12 e 13, o código em torno dessa chamada parece diferente em diferentes amostras e até mesmo as instruções usadas para decodificar os bytes que devem ser modificados são diferentes em diferentes amostras.
Figura 12: Amostra 4bfd547775ba5892e66d2ff6a0c1de4365ab11b3_exe.bin (946d4d332a06b9af10da38beb3e8195054840b59a870a2f9027e6471f4869dc6) instruções de decodificação |
Figura 13: Amostra 9679f2690d31cee38e57f080656b8618ca474c65_exe.bin (9b28aa737bbfec90341c6a42e2d44f3308659e4fb9dd42d98a0b46cde7aaed63) instruções de decodificação |
Rastrear as instruções em x64dbg (Figura 14) mostra as diferenças (Figura 15) no algoritmo de decodificação por amostra.
Olhando para os bytes decodificados, os primeiros 24 bytes são apenas lixo para esconder o início real da função. A função chamada posteriormente começa no deslocamento 24 e se parece com a Figura 16.
Ele resolve o endereço da chamada de API nativa ZWAllocateVirtualMemory no endereço 00415003 na Figura 11 e o executa por meio da instrução de retorno em 0041503D. Ele chama essa e outras funções semelhantes várias vezes enquanto descompacta a carga útil final. O número de vezes varia de acordo com a amostra que está sendo analisada. Ele preenche esses buffers alocados com funções auxiliares que são usadas para auto-modificações adicionais ou procedimentos de desempacotamento da carga útil. O último buffer alocado é finalmente preenchido com a carga de malware descompactada. O código usado para essas etapas varia entre os exemplos.
A amostra 9679f2690d31cee38e57f080656b8618ca474c65_exe.bin (9b28aa737bbfec90341c6a42e2d44f3308659e4fb9dd42d98a0b46cde7aaed63) está se adaptando e, em seguida, injetando a carga útil final em sua própria imagem PE.
Outras amostras simplesmente descompactam a carga útil para o buffer mencionado e pular para dentro dele (Figura 18), por exemplo, amostra b95fe75736d19887ae4e3516c5cd9c7fa7caf763a138794f9aaecdee8d37f0b0. No final, independentemente da versão de amostra, todos eles usam um “jmp edx” para passar o controle de execução para a carga útil (Figura 18 – primeira linha).
A última técnica a ser mencionada é observada principalmente em amostras mais antigas, mas é difícil dizer se isso é uma evolução do empacotador ou apenas um recurso adicional ativado durante a construção do binário compactado.
Uma olhada mais de perto na imagem PE nas Figuras 17 e 18 também mostra que as amostras possuem até segmentos diferentes. Em outras palavras, como mencionado anteriormente, a diversidade de amostras embaladas com este crypter é bastante alta.
Se você quiser ter uma idéia de todas as diferentes camadas e auto modificações que estão fornecendo dois scripts desempacotamento para as amostras 9679f2690d31cee38e57f080656b8618ca474c65_exe.bin (9b28aa737bbfec90341c6a42e2d44f3308659e4fb9dd42d98a0b46cde7aaed63) e 2d46c394a5c4722e7fccfd3bc92636b5a0b6fbec_exe.bin (b95fe75736d19887ae4e3516c5cd9c7fa7caf763a138794f9aaecdee8d37f0b0) no Apêndice deste post.
Use esses scripts apenas para os exemplos mencionados no cabeçalho do script. Tenha cuidado ao usá-los para outros exemplos lançados antes desta postagem do blog. Qualquer um que queira dissecar isso mais deve ser extremamente cuidadoso com os novos exemplos lançados após esta postagem do blog – é muito provável que os adversários modifiquem o empacotador. Lembre-se de que esses scripts não funcionam para todas as amostras. Recomenda-se uma única etapa nos scripts (TAB) para verificar se as diferentes etapas estão funcionando para a amostra que está sendo analisada.
O vídeo abaixo mostra o processo de descompactação da amostra 9679f2690d31cee38e57f080656b8618ca474c65_exe.bin (9b28aa737bbfec90341c6a42e2d44f3308659e4fb9dd42d98a0b46cde7aaed63), que é a amostra mais recente que vimos. O carimbo de data / hora do arquivo sugere que ele foi criado na segunda-feira, 24 de agosto de 2020.
CONCLUSÃO
As campanhas de distribuição de e-mail associadas a amostras construídas usando esse crypter apresentam várias características notáveis projetadas para evitar a detecção e tornar o rastreamento e a análise mais difíceis. O uso de formulários de contato baseados na web demonstra como os adversários podem tirar proveito de qualquer via de comunicação com funcionários internos para tentar infectar os sistemas organizacionais com malware. E a inclusão de plataformas de hospedagem legítimas torna mais difícil responder a essas campanhas – algumas organizações podem exigir acesso à mesma plataforma para fins comerciais legítimos. O crypter usado para ofuscar várias famílias de malware apresenta várias técnicas interessantes que são usadas para tornar a análise mais difícil. A lista diversificada de famílias de malware distribuídas por adversários cria uma variedade de riscos para as organizações que devem ser considerados pelos defensores responsáveis pela segurança dos ambientes corporativos. Essas campanhas e o refinamento dos TTPs usados provavelmente continuarão no futuro próximo.
COBERTURA
As maneiras como nossos clientes podem detectar e bloquear essa ameaça estão listadas abaixo.
A Proteção Avançada contra Malware ( AMP ) é ideal para evitar a execução do malware detalhado nesta postagem. Abaixo está uma captura de tela que mostra como o AMP pode proteger os clientes dessa ameaça. Experimente AMP gratuitamente aqui.
A varredura da Web do Cisco Cloud Web Security ( CWS ) ou do Web Security Appliance ( WSA ) evita o acesso a sites maliciosos e detecta o malware usado nesses ataques.
Dispositivos de segurança de rede, como Firewall de última geração ( NGFW ), Sistema de prevenção de intrusões de última geração ( NGIPS ) e Meraki MX podem detectar atividades maliciosas associadas a essa ameaça.
Rede de Ameaçasajuda a identificar binários maliciosos e criar proteção em todos os produtos Cisco Security.
Umbrella , nosso gateway seguro de Internet (SIG), bloqueia a conexão de usuários a domínios, IPs e URLs maliciosos, estejam eles dentro ou fora da rede corporativa.
Proteções adicionais com contexto para seu ambiente específico e dados de ameaças estão disponíveis no Firepower Management Center .
Os clientes do Conjunto de regras de assinante do Snort de código aberto podem se manter atualizados baixando o pacote de regras mais recente disponível para compra no Snort.org . Os seguintes SIDs foram lançados para detectar essa ameaça: 54920, 54921.
INDICADORES DE COMPROMISSO (IOCS)
Os seguintes indicadores de comprometimento (IOCs) foram observados como associados a ataques que utilizam este carregador de malware.
Hashes de arquivo (SHA256)
Os hashes a seguir são binários maliciosos observados como associados a ataques de malware que utilizam este carregador de malware.
00272dd639402fa76db43207d074fe52d4849e5d46008f786b944a789b09afc2
00a27bcfb0940ff100f8ae4dce0eb122014926bd0541799989303a48c9327934
010c432222ef81d02edb03bfea7e866c740d4ec2f181d6ccdaa8426cf8b390c4
01453cb1e75f9a3cc2fd490c028adfcdaf63fbb63216a79379a507697dbf325e
049c5f625953b02a7aba1c904a14851cdd998ea21ee1e604016f8ba37c952ed1
051c33755b7bb0beec230c1f2af5d7880203ad2d75804719429e8054e7fb2edb
06aa2c01416bce49d24834eedd47c2dd9dc75ae39053c72168c7cc1efdd76fcd
0a6df8d51b26c7bd3a7376f6118049f1c37a91ee0b2f1ada2b86c561d1170e1b
0b61ae1202d964bea67cea9d663c8530b11c1268bcea9439b949e669b3b3be7c
0c09ea2d5722a2484804bf8c4f051d66d8a95d23c19e5d1277a55cafd80b67be
0c8569e4304f46352b041dcb692f85c9e195130db2013d4f2216130603478035
0c8fb7da34371d8c87ac3d892ceee0ba6353f00ff72d87eeebb0066d32aede56
0d261d63162d4087a82d1f67012c781cc0aaa05fbe801566f9bffa8d23981736
0d6aad4b3fe886c7d24286d333094bed9eb2c6d5ee3f7afb7fabbd1538f440e2
0dd44c11dd1b2599b8afe1121a08be81eb4230c5f1bff335b521a74bf6baadcd
12eb2aebb455cda2819b9a1e3d18d4adcebe76ec0ee94e7676d6633965ea190f
13b155af2f1503def5c0cba197902e0669faf324ec039c80a332f66f8fa4578c
1478aec44d67217a18fb2b88e9db45b9c15c468f2498f56f09a5d1fef4eafb66
161dabd778b2d24a7cae425bc2349e3db840acf49222c6067359ec7a01d3e05e
16464a294fc276ea38e4f8aedd7fa6d1f426036d42b342bde27bdc63b5c6658c
1670b07e9f5ff620a7eb773f4119023c67911655fb43bd2872021d11d05c1b0f
1be04e51510b2aafb51598838b97124a73952c46b17d3d1c38254dd6d94e82a7
1d7680d04b5d5403b34205336ad9b9c993e6e091708da775c766e2ad5e8d8547
9b28aa737bbfec90341c6a42e2d44f3308659e4fb9dd42d98a0b46cde7aaed63
1df55177a6326406d491cd9b6d4951392e565dd13e597836684468de6fec52f1
1f5e08770d900bd0eb4f3377b05083d645e1ac9bb92f08146cd2a625363bc0c7
20013032b298d4632abacefea5b8a6b376746c21642a8f8a38e039fd237d3c47
201493f9e767eac36acc868f6903b574d5c9fcb78b30c5be4c1e3358e0f0026d
2026e97bd58d8848dbd55664417790d5ee804bc2fe86ad054cb6a304d2d39a6b
219594d5b634d5f95904376a1cbd8ecde93b8cdd6cfb785069e51e7eccc78baa
243b7b37f5544bbbbaf533f819d90b6702131fd09139d2d9d86a5a305f9ae63e
25b24d6e39aecc3bd23e8ad26b66f6aeb29777a6038e611263dac2c586726fe7
2b448e88df42c70da86e6df1a1c1cfe587fe9b8d5f075d3f6ae2572a7936af8f
30ed17e5c4c4891e495af85476f5928e4d4249ee1ce305de6735e56604af2922
32ff75054df9b2b9cefec2dcc9e4cb6cfb231bc7ad9be5a41e2d3fc37f15563b
34f383ad792bd93bc10079ee7f2a620402f35c25655eb7f2621f4b4a0a7c74b7
3685ce874b1abef3448d4c50ea0371e31a78afbae09287d3ff5d25953091659c
3733c5093677fb3d4d73c7850fe399cfbf5e327ef3e151e5e279c4a9622928c5
3f70f5fc0ef938508398fbdcda54f45cada78165fdd40d6ab95d7c2a59cadc6c
431a34f1ab6dec2c646b408b9b5ce091882244fde39498484fc0c73390d8f7f0
431d9d2618fb3fa040f17f106617a943a43933bd19bf5cc5e4a964aabaee5674
45763478ad7f43aa83ebaaea28bafaac6835bec45bf8c6948cf5dd454b6e30c7
468b1785ef8bb53970a37e5399ccda3d12854587a95967081281ba857f8d2c54
468eb27c31a7c90e3c6fc3a708dc5f78cfc5c0f8f3d76213919ca6d4e21950c1
471325daa2bc75f50856e93e9de088386556fc3ead653894d5c2a67f2a8b4975
47b6fae16a8c59bf1be620cb167e2673af2e0ffa92503fadf101b4bd47132ed5
4b3ff2b99ed45563241abdf5079986e2e895ff7a011a2530e6ab9da20fa14954
4eb476010c782e251800a7850be86b5b206ffbabe5f30bca76d20e68b13fafaa
526abd604aacfa30338c708974493d272d8ab09df53cd1db657c3666113fbca1
532e67f58bdc181f0df5428f72356c58a0bcfbd85b721564242983ac6e1e39bc
549eb886be64ac9d6d2817575f5d0d0f46c0c5602fedd29aa561ab3f05e3349e
5557fd15d615f360af1aefa6a7e2bed3382e26bdabb08d7e5a8f0f9387449f3a
56f9b54e1e16887d66b8b9b7ea71d610951c18662a132cf7c9900d67b9745e81
5757ebcb5b2227615a6d3a795beeff4745037313939426f9c7f8061568bbd55d
57c7f0bc7a487df329eb3e8b19debde9ce1821e250123227cdc2dfbdd8b1b766
5942b57d50e389ec7be01bd5b4007249e3755064fe156941dfbe310f7fa53a73
59fc347dac3dd1c78d62393589818b5417ca041d697d155040988b14562bc797
5b819852f844200d4d0b6ecc66451734c7421a98086d552e354709180d86d2d3
5b831fb067dfb53992bb8a346e4fc038de6441a94ad5a3932dc8bd64f80e56fc
5bc775300f1d06d0f92f53ec9bd8d6a919fb07101d91af05c5308063e832c34e
5eaf5d22f937189275b6fae1257fc682194ca768a91d7b5e897770ad008f7112
5f287d8b207645d9cfb47ff2aacb7ed2a6769fa14b1fe78c45a73efc73f0a84c
614dc6fb2ee570cc9d1782534a64a3ea2c0be9d213e806141bb28d23542f6c47
6297c5e9a01f95d14ab4928e69bbc0f7cc4113b08f782e5ea9f04b1d1814b74b
630c098ef8211c05e0e68008bcbed6e4402e580e9538817b56084dc301954426
64965473405235f37a721d9fecafb4ccb0ca038a3014538eba80cd9943beb1d7
6627f0ea1f8ac35ea8567a1677ed4c67e7429344a56a80a094706fcd6d063221
6b2e0ce03329ccb773cbc31f68ea9a74991cd0445f9e69df3c8e01ab6498d2d5
6ce892674ac5a9607abafaf1011210cf9cb8bec2dc683b8dbf3c71c5e75a47fd
6d3ff9a1f4745625b44f5361e4d8d78b38898d24eddaf328c2448a2bb377c99a
6f21364272988368a75692e2e30970ce18e625bd7b2bcb154353415b31816d4e
6fee95a3e283d9ad09a399e99b086ef70c3679eb8ad548161bdfababe3da68fb
725e1b82b882d693028f13e3a082a8a9f278b79ad5ade994ccc9414b4e46d32c
72a744dcfd609870d53a513083d89a75c41c87d178025821963a1353216d0090
72f7451a21dcf26ebba525994d312a06483ef3fda0ffcd6500e36b94dcf78681
7556a3160ba28ac50418bb9989de2f83a5dfc54376a43500d16db7c3c76c04d4
76776877cf663f9b3d5647b0efdf3e062cf41d7d4757371ed9ad4fc0d85d7179
77dd0d459a930c4e2692f935d775f9aa6560e26b19715ee61c20ce6bdbcc8200
7da2c8166c73f7f5cf4f8f07b3ad161fe7cac6aa87c6a2701cb7fdc74242dfa6
827fb4f521e8f22fb91ee61d921d3287bab18c9f01d333139e4124c989d34c76
8281d87c1343eed7d48c8d98043864ace2f0dade93628cbda7ebc2eb07c77dd7
87c04cc74ea6e8958bcbc6319f7c1f8293d63ce4a2e34a3c99ba296e55fd0ff4
88c23ddbc21c130588f88500c753138e1b03a55f4658ff199c247fd8ceee5bd3
890eacb1a49d606586eb585ee0738f55ac76fb3a175016ad627532425ee19dc8
8a237182974d55a414f91a6d657403fafc8b79685ff1a73562758b333aeea590
8be791cfaf6dbe2f1022406cbab97c3f53a084abd5b7e2ede043bd10de268352
915f41dbb8a500f22f5aa346a0b6eff9db5fb6149b936968476ad585694688c5
91f7787447cdaaec0f0feb10440bc2cb2c48ec8f3ce96a49719cbb9a20b3667d
91f9f150e8a010ac25cdfd1a5489dd87f5e4af1d1daf8d12710748fb49396f67
932b193e475a885c612b6610ad40177e65fc18eba76485e7da690cd4c9c5894a
942331c18f6435087cc15c1012f4b4c9c7265d6ffaef0650aadb6ce4064c5c3c
9444adaa9f6597a02f2e7f889b65db228c489658e0a81c28a3ac2d51f88b5e3c
946d4d332a06b9af10da38beb3e8195054840b59a870a2f9027e6471f4869dc6
98c59ba70665df6ff4bbabbad56b11ea24e1bb478fd0547a02dbfbacd6bbfdf4
99fe4effb3bd5d31a6c9b740f693460042e9b327b6e6d78aaa04d40762784c8f
9a6b7c1ebfe3ba98cbfc7d3cdd67fdb34dcf86b411eb7502c3e6d865084742b6
9c2eb5790e7874950db0e51764ba68bb4a0fa5be68b659717c73363883da0db7
9ff5246727eb8baf06d825830b061df21a7e7b8ecf0f4f584da3b886643f84ed
A2387ef5d3af113c8c902f478df1c2d7f7a7acf729873b13508c1f1915bf5000
A27f8297924f2318e1e4d2da534be65806198a6e9d53c905a79ed3f93f5c52a9
A2e7f64c3d584a25a35bdedec0d394033a2ebb54d3457e09ceea3a623c208491
A654dbed7f65e6e6b8830e42b137fd85ddce872dc29ca006e8f7653f0aadcac7
A66f6d5fe714527cc94af30695cbabc44dd2fc355bc8e917e77350f35b0c6852
A770fcb1791d4a1c1037921403f936fb699b4e86df500abc41cb7fa1d762e302
A7b83a87772511641557b1ace41c478ecf6f1be0e1585cf6ce170cbaab16d6bb
A8231bdd44d469fd1a30464e238d0efa7c257566f301dae2fd80bdc43893b5d2
Aa33731aa48e2ea6d1eaab7c425f9001182c0e73e0226eb01145d6b78d7cb9eb
Aaa7efb4c15a71baff014071a71aa08f17e71c433016b2a0f05caac5f35adbe5
Ab24760ec387919fc8d177510f39f36ac0ee011f8349faf63456e83aa0e50944
Ad2b0478c0c3c717f6dabb96a6e957ea000462a8f8792f1c73868f9e894e037a
Adce8f29cb6cbbc44f5566031370753da43ea431ad3aeb11a6fc2186d571c957
B1c6c7afedd5fdf67d7e9bbec952945e31c136785de3bc33313aede44f1696cf
B240ff47de5859d0428c980a30a36a787e141761e8d7c8b2db8ab2364d226a94
B29c4a567b439ef6072e41c38091c0f8d4d2bc0955d60062169f35e4a1cf9de4
B3cb381f114ec9c163335509a217bbe1c6baa8d2cf5655b5ff84fd8d0a28dc9a
B6a02bdf54b97688fda5137215e5237bd9df650bb052094dbc37947b59a93122
B71a38ed297eff72a77fbbefa8f326a0c752f0f4fb5d80d1bf8e393824e99223
B8e75cbb6e4c360fec71e12b85f3c5e4933e66a64928ff4d337ebe6a6cc9150f
B95349e88b1c800c3cb84bd3875aa556c7107900567b9cffb54047bafa364dc1
B95fe75736d19887ae4e3516c5cd9c7fa7caf763a138794f9aaecdee8d37f0b0
Ba5fa7cc1a918b866354f4a5d9d92ceb3965ff81eb96e1608f190bccf12d38e6
Bb33e0b91b1b38802b2bfd5654d3888dee17959c6f07d3ce67dbac278712a402
Bc275cd76478e4d3387740dd955d9b9b5b36f064656ecb1e1cea9b8649eec57d
Bc2c5e2692df4493a1bbc9364689f1b7c532964497512065d3693cae50214860
Bcf19173facde547cd07eb8495bd48e8eea67c4f2441d4239e883f264744de7e
C12c749cbb465484968bf99c46a51ce717620ddee2a5cd9b0168b104b604ba42
C1665f6717238ba405059e44533e1fb7ad35798bb3d8b6ebb29cf0428241d721
C50b34da0b0d1cc4728e4af9ae2c921df26ef71869bba0d5f9a24caa229529c9
C679503d8fe5e6b127af12142f8a3ae32e94ef0751337de67c9dcb4dea180987
C772f069931f2c0429bea0919fd7238de92618e6bea9e6581129656f6d86170c
Ca4214e15181e52923f713771455f5709e4baa13626cad85b735734cf66d36db
Ca9d4a7488644ce5fa20248e388291d60ca4a3bfe783acae4f02821618d1563f
Ccb8e17d3df37549a3dbdb31f3b5e03b8fbb3ddf9462cf962518c8e0312cdb56
Cda685d0e85b2f28c00d145da358edc3748357786455965af86a3b0b292051fd
Ce30c658a17cdced008ca04ea67f5ddb4c3c8d9042fe700ea89731c3d631628b
D175b76aae5c16a5870df88cadc1d147c78a4977cc8dd4b213224e031cbcb7fb
D3255ed380e290f4992701d1c10a3f65580b5e0aff384ab4308a8202d71f38a8
D3639a02c300ab5f1063c7000fc8fa9eda8b69ac98840e5e49e26ea578274c4d
D4d3cb3f7ffed9e1847a3b47a41d1da3c649374cd1d4772baaa95e62735ac3ca
D7bcc39c42e66f4d7ce42d49aadbd63ac541e39889dc72ee41d140c919a92d85
Da5d88c3090b95ab3bca96669880af7a39b7d8ce9a206ec1bb558086ccacff41
De5947af1ec1e205ed4c953359a8ca9b6a72dc4ffc81ce1048969553d440c265
Deb8e521c4509a83b61d96291efe3cdaf2379c953f0590433d98a0bbd6bc82ab
Df638bde1ffafcfb7a25fe30b631d549299f9502f23efc47fc5efaa118e96b97
E0b15c5b68a21db7a86f92689c5df63d343a52e3e7b09d19f3ffbf941b32c4d1
E0f5471baf3e0e4b3eb3711f89479a910fe68b75ad53070c58302821ddb84220
E38c9a5d62aec8a807336ef40668f82a9bf764a8102fe464ee7f82041e007bee
E5a6108aa4f8be08c8192590ab2b3231e9a33277ead76a0420557258220383be
E655f1afb49be062cded5683df9292ff4cd602ad5d6f648dddd8778af13c44e2
E6b30d246362081d7cb76a4d21584f6dbcff535812aed8e9675c17ca518c0242
Eafbd21a0f9f082fa2e94e010569d7fa8512d978087c2633d652b865b922465a
Ec1efcb050ec701c4a5895215e8a5ff9a89faf5b56976975de4e3846577841f0
Ee42a34b83f4c27c57ebfa79f78d4702cdf5c845443b929b9e9d3246409aacca
F1d43050a57365d41f2ec6ac3f73f1ddf9fa454c8b96aa5aa30749490b5a5fd4
F29484e8e60d1104bb60a504279909f7d4c5a68d77d794dcaed4758d95989a99
F38a38d97bd96a42e8c3f985f1e65daca97dce229b36c8c80c9229666826f325
F431b5b6dc04208fe9ffc89eafd94c92d1383857d17702240f14aa19f538b3aa
F6c96250359377ca85340b8c2c7253dd4f8fb5b1b8bf87d9fbce45ae40fe5417
F6ebd6f0fe20fe561d1cf5d6aea5201712a0eabf4624c863a5ab6d44b1f57755
Fc856c48ddb5be64f343a482faaece641542c06e9a52556c16a8a80f973347ad
Fd03a9145d89c102799e5719608a28da681c1289352eb1d40b557cc667ba2ad0
Fd95fc2bc6b3362454dc6a0f0aa03f8c481ece2442e544b4ea0d9b0f81cd8b8c
Fe0d4a9ac1d0e3a626b44357e4469f402b9dad3f020776ecf771da693a782d61
ff5fc5c5318fa051992c7c3408d203f306c13b5fcd9400f860f734ce47a3b676
Domínios
Os domínios a seguir foram observados durante várias partes do processo de infecção por malware.
123pcloud [.] Com
92g938uextmgvb7rllv8wcad [.] Biz
98iudjsandsas [.] Info
df1 [.] Kamalak [.] Em
aes [.] Um
amfibiyapolyakova [.] Com
api3 [.] Lamanak [.] Em
askyourspace [.] Com
banisdor .] top
banudarog [.] com
banusle [.] top
basa [.] nutarborg [.] com
bnxhbc25hwcv8b8afawhevzw [.] biz
calmstill [.] xyz
cheneer [.] org
choksaiiwkokskkall [.] info
cmck4vve1kokskki7
crocpiz9. ] ug
cromecho [.] com
cupersip [.] com
dailystepstowardsuccess [.] com
dasifosafjasfhasf [.] com
deliverynice[.]club
dksadjsahnfaskmsa[.]com
dksdjasi92iejdnfsa[.]info
dksjdsajdiei28uj2[.]info
dodontrami[.]com
drysetfirst[.]com
dsdjfhd9ddksaas[.]pro
dsdjfhdsufudhjas[.]com
dsdjfhdsufudhjas[.]pro
dsjdjsjdsadhasdas[.]com
dskdsajdsadasda[.]info
dskdsajdsahda[.]info
dskjdsadhsahjsas[.]info
dwajfjaiakdnsandks[.]com
dweandro[.]com
esplody[.]org
fastandstrongwolf[.]com
fdsjfjdsfjdsdsjajjs[.]com
fdsjfjdsfjdsjfdjsfh[.]com
fedex-tracking[.]press
findulz[.]com
fredoam[.]com
fslakdasjdnsasjsj[.]com
giridly[.]com
gstat[.]rayzacastillo[.]com
haponebitold[.]com
heclinggotof[.]com
idisaudhasdhasdj[.]com
idsakjfsanfaskj[.]com
iloveyoubaby1[.]pro
infinitydeveloperspes[.]info
informatioshopname[.]ru
ipnfbqg2raz3asn4j631ha453bbr4h[.]biz
islacangrejo[.]fun
j2888hennene[.]site
jdafiasfjsafahhfs[.]com
kasfajfsafhasfhaf[.]com
kdsidsiadsakfsas[.]com
line[.]largefamiliesonpurpose[.]com
line[.]lawnteam[.]org
line[.]monalisapizzeriasi[.]com
line[.]rllconsulting[.]com
line[.]zepcnc[.]com
link[.]paichecafe[.]com
link[.]philippeschellekens[.]com
manutobis[.]top
menosita[.]top
mesoplano[.]com
morenodorf[.]com
mifastubiv[.]ru
morentok[.]top
oajdasnndkdahm[.]com
odoncrol[.]com
oi2jidsdjsdd[.]info
opetileon[.]ru
orderrys[.]com
paiancil[.]com
petronasconn[.]ru
phanleb[.]com
pics[.]crystalridgedesigns[.]com
pleclep[.]com
procinul[.]com
redsobabtert[.]com
retordownty[.]com
rolhorabdidn[.]ru
rygotunren[.]ru
service[.]pandtelectric[.]com
shoolman[.]ca
siciliyaopartion[.]ru
sl9xa73g7u3eo07wt42n7f4vin5fzh[.]biz
smarteyecare[.]in
soletrobuse[.]ru
staycalm[.]club
stoutorder[.]xyz
sweleger[.]com
syndicationtwimg[.]site
telete[.]in
teoresp[.]com
toptopcoorp[.]info
toptopcop[.]info
twiitter[.]website
ukronet[.]ru
unverifiedintigoosjai[.]info
weksrubaz[.]ru
wp[.]quercus[.]palustris[.]dk
wunchilm[.]com
yamaha[.]ug
zonculet[.]com
Endereços IP
Os seguintes endereços IP foram observados como sendo a infraestrutura usada para entrega e comunicações de rede pós-comprometimento como parte dessas campanhas de malware.
109 [.] 248 [.] 11 [.] 134
109 [.] 94 [.] 209 [.] 7
139 [.] 60 [.] 161 [.] 58
141 [.] 255 [.] 166 [. ] 149
142 [.] 93 [.] 110 [.] 250
166 [.] 62 [.] 30 [.] 148
179 [.] 43 [.] 147 [.] 73
185 [.] 153 [.] 196 [.] 209
185 [.] 158 [.] 249 [.] 63
185 [.] 252 [.] 144 [.] 191
188 [.] 127 [.] 230 [.] 211
192 [.] 155 [. ] 111 [.] 215
193 [.] 38 [.] 55 [.] 23
193 [.] 38 [.] 55 [.] 92
194 [.] 67 [.] 78 [.] 65
195 [.] 123 [.] 209 [.] 4
195 [.] 123 [.] 214 [.] 163
195 [.] 140 [.] 164 [.] 58
195 [.] 201 [.] 225 [.] 248
31 [. ] 148 [.] 99 [.] 73
31[.]184[.]253[.]171
31[.]184[.]253[.]248
31[.]44[.]184[.]125
31[.]44[.]184[.]50
34[.]240[.]96[.]52
40[.]81[.]188[.]85
45[.]84[.]227[.]231
46[.]20[.]33[.]219
47[.]241[.]8[.]147
47[.]57[.]89[.]207
5[.]101[.]51[.]172
5[.]188[.]62[.]165
5[.]63[.]159[.]168
62[.]108[.]35[.]53
78[.]46[.]233[.]14
80[.]249[.]144[.]38
80[.]78[.]254[.]167
84[.]38[.]181[.]209
84[.]38[.]183[.]147
84[.]38[.]183[.]162
84[.]38[.]183[.]181
85[.]143[.]222[.]85
88[.]80[.]186[.]83
APÊNDICE
Scripts de X64dbg Desempacotar:
Script 1:
// Unpacker roteiro para a amostra 2d46c394a5c4722e7fccfd3bc92636b5a0b6fbec_exe.bin
// (b95fe75736d19887ae4e3516c5cd9c7fa7caf763a138794f9aaecdee8d37f0b0)
//
// Autor: Holger Unterbrink (twitter: hunterbr72)
//
// Este script deve mostrar a lógica do embalador, é não é um script de descompactação otimizado
//
// Carregar a amostra e ir para o ponto de entrada, em seguida, executar o script:
// (existem algumas condições de corrida, passo único (TAB) através do script)
//
//
// encontre a primeira chamada eax
TraceOverConditional ReadByte (cip) == FF && ReadByte (cip + 1) == D0
// código descompactado armazenado em [csp], deslocamento 24 no início do código, os primeiros 24 bytes são usados apenas para ofuscação
mov $ code, [csp] + 24
log “Código automodificado em: {0}”, $ code
StepOver
bp $ code
executar
// executar até retornar
TraceOverConditional dis.isret (cip)
// pausar
bc
StepInto
mov $ codeptr, [csp + 8]
bp cip
executar
// a partir daqui alguns exemplos são diferentes, alguns alocam mais buffers, outros menos
executar
executar
executar
mov $ codeptr, [csp + 8]
StepOver
StepOver
StepOver
StepInto
mov $ code, [$ codeptr]
bc
SetHardwareBreakpoint $ code, r, 1
log ” Carga útil final em: {0}”, $ code
run
bphc
// executar até jmp edx – carga útil descompactada OEP
TraceOverConditional ReadByte (cip) == FF && ReadByte (cip + 1) == E2
log “Despejar malware de carga útil em: {0 }”, $ code
ret
Script 2:
// roteiro Desembalagem para amostra 9679f2690d31cee38e57f080656b8618ca474c65_exe.bin
// (9b28aa737bbfec90341c6a42e2d44f3308659e4fb9dd42d98a0b46cde7aaed63)
//
// Autor: Holger Unterbrink (twitter: hunterbr72)
//
// Este script deve mostrar a lógica do embalador, não é um script de descompactação otimizado
//
// Carregue a amostra e vá para o ponto de entrada e execute o script:
// (há algumas condições de corrida,passo único (TAB) através do script)
//
//
// encontra a primeira chamada eax
TraceOverConditional ReadByte (cip) == FF && ReadByte (cip + 1) == D0
// código descompactado armazenado em [csp], deslocamento 24 início do código, primeiros 24 bytes são usados apenas para ofuscação
mov $ code, [csp] + 24
log “Código automodificado em: {0}”, $ code
StepOver
bp $ code
run
TraceOverConditional dis.isret (cip)
// pause
bc
StepInto
// definir ponto de interrupção em <ntdll.ZwAllocateVirtualMemory>
bp CIP
// save ptr a memória alocada
mov $ bufferptr, [CSP + 8]
StepOver
StepOver
StepOver
StepOver
mov $ code1, [$ bufferptr]
// mudança de Dump 1
dump $ code1
SetHardwareBreakpoint $ code1, r, 1
// demora um pouco, pressione a tecla apenas uma vez, aguarde,
execute
bphc
// Dump1 é preenchido
StepOver
StepOver
// descompactado e jmp para alocação de memória (ZwAllocateVirtualMemory) function
run
// break at ZwAllocateVirtualMemory, definir bp para alocar buffer
mov $ bufferptr, [csp + 8]
StepOver
StepOver
StepOver
StepOver
mov $ code2, [$ bufferptr]
// mudar para dump2
dump $ code2
SetHardwareBreakpoint $ code2, r, 1
execução
// quebrar em ZwAllocateVirtualMemory, definir bp para buffer alocado
mov $ bufferptr, [csp + 8]
StepOver
StepOver
StepOver
StepOver
mov $ code3, [$ bufferptr]
// mudar para dump3
dump $ code3
SetHardwareBreakpoint $ code3, r, 1
run
// Dump2 obter preenchido
StepOver
// você pode manter o code2 bp se quiser ver a decodificação do buffer
bphc
// reativar code3 bp
SetHardwareBreakpoint $ code3, r, 1
run
bphc
// código buffer3 é preenchido (1ª parte da carga decodificada)
TraceOverConditional dis.isret (cip)
TraceOverConditional dis.isret (cip)
TraceOverConditional dis.isret ( cip)
// primeira parte da carga útil PE desempacotada, consertando ainda mais o PE
StepOver
// ZwProtectVirtualMemory alterando 0019FF3C para ERW
TraceOverConditional dis.isret (cip)
// sobrescrever a imagem org PE na memória em 0x400000 Len 0x2B00
TraceOverConditional ReadByte (cip) == F3 && ReadByte (cip + 1) == AA
// fix org. Cabeçalho PE (primeiros 200Byte)
TraceOverConditional ReadByte (cip) == F3 && ReadByte (cip + 1) == A4
bc
StepOver
TraceOverConditional ReadByte (cip) == FF && ReadByte (cip + 1) == E2
// entrega o fluxo de controle para o
log de malware de carga útil “Payload OEP: {edx}”
Fonte: https://blog.talosintelligence.com/2020/09/salfram-robbing-place-without-removing.html?