O pacote npm DeviceDoor distribui um framework de phishing para código de dispositivo do Microsoft 365.

DeviceDoor: um pacote npm público que inclui um framework para phishing e envio de e-mails em massa a partir de códigos de dispositivos do Microsoft 365.

TL, DR

nolimit-agent é um pacote npm cujas versões publicadas — 1.0.299 através 1.0.307, lançados ao longo de quatro dias, de 26/06/2026 a 29/06/2026 — cada um contendo um estrutura completa para phishing e envio de e-mails em massa dentro de um diretório oculto e totalmente ofuscado. Em todas as versões, a entrada principal resolve para .ad/x0.js, um dos cerca de 86 arquivos em uma pasta com nome de arquivo oculto contendo aproximadamente 4,200 blocos de strings de arrays de javascript-obfuscator; o gancho de instalação e o layout de entrada são idênticos em toda a linha.

Por trás da cortina de fumaça, esconde-se um Fluxo de código de dispositivo OAuth do Microsoft 365 (Conecte-se[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode) que, uma vez aprovado o código, lê a caixa de entrada do Outlook da vítima e os itens enviados por meio da API do Microsoft Graph; um mecanismo de envio em massa de SMTP e SMS, alimentado por listas de destinatários fornecidas pela operadora; modelos de mensagens de falsificação de marca; construção de links de redirecionamento aberto; e reconhecimento via DNS sobre HTTPS, WHOIS e busca de código no GitHub. Sinalizadores de tráfego em tempo de execução para a infraestrutura da operadora em api[.]nolimitent[.]xyz:4100.

Afetado: qualquer pessoa que instale qualquer versão do pacote, e qualquer Caixa de correio do Microsoft 365 cujo proprietário aprova um código de dispositivo apresentado por meio dele. A versão mais recente, 1.0.307, é a tag mais recente atual e possui a mesma capacidade de caixa de correio de código de dispositivo — o código malicioso não está confinado a uma única versão anterior.

Gravidade: críticoEcossistema afetado: npmO primeiro indicador a ser procurado é o host. api[.]nolimitent[.]xyz.

O ataque: como funciona

Uma camada inofensiva sobre uma carga oculta.

A embalagem apresenta uma superfície comum. package.json declara um pós-instalação gancho - 

text postinstall: node scripts/postinstall.js 

— e na inspeção scripts/postinstall.js É inofensivo: instala um shim de comando do Windows e encerra. O comportamento não está no gancho. principal e caixa ambos os campos apontam para .anúncio/, um diretório cujo ponto inicial o mantém fora do comum ls saída, e cujo conteúdo é uniformemente ofuscado por máquina. O scanner estático contabilizou aproximadamente 4,293 trechos de carga útil codificada em toda a .anúncio/ conjunto de módulos; ofuscador de javascript é uma dependência de desenvolvimento declarada, que corresponde ao formato de rotação de array de strings dos arquivos agrupados.

A divisão é o primeiro sinal que vale a pena mencionar: o gancho de instalação que um revisor analisaria está limpo, enquanto o código operacional fica em um diretório distante, oculto e ofuscado, acessível apenas quando o ponto de entrada exportado do pacote é executado.

Acesso à caixa de correio do Microsoft 365 por código de dispositivo

O módulo .ad/x12.js Ela carrega a funcionalidade mais importante da estrutura. Ela impulsiona a concessão de autorização de dispositivo OAuth 2.0 do Microsoft 365:

text POST Conecte-se[.]microsoftonline[.]com/common/oauth2/v2.0/devicecode 

A concessão de código de dispositivo é um fluxo legítimo da Microsoft projetado para dispositivos com recursos de entrada limitados: um serviço solicita um código e o usuário digita esse código no dispositivo. microsoft.com/deviceConecte-seem um segundo dispositivo e aprova, e o serviço solicitante recebe tokens. Quando o serviço solicitante pertence a alguém diferente do proprietário da caixa de correio, a aprovação concede um token a esse terceiro. Uma vez obtido um token, O arquivo `.ad/x12.js` lê a caixa de correio diretamente através do Microsoft Graph:

text GET graph[.]microsoft[.]com/v1.0/me/mailFolders/inbox/messages?$top=250&$select=from GET graph[.]microsoft[.]com/v1.0/me/mailFolders/sentitems/messages?$top=250&$select=toRecipients 

O $select As projeções extraem endereços de remetentes da caixa de entrada e endereços de destinatários dos itens enviados — a matéria-prima para mapear os correspondentes de uma vítima. Trata-se de um acesso do tipo "adversário no meio" (Ai™) por consentimento, em vez de captura de senha: não há credencial para phishing no sentido clássico, apenas um código para obter aprovação.

Um mecanismo para envio de e-mails em massa e SMS com modelos de falsificação.

Ao redor do acesso à caixa de correio encontra-se um dispositivo de envio de correspondências. O pacote envia arquivos de dados editáveis ​​pelo operador — listas de remetentes (remetentes.txt, smtps.txt) e um arquivo de modelo (funções.txt) — cujos endereços fictícios funcionam como uma lista de candidatos a emprego para fins de personificação: segurança@apple.com, Conecte-se-verificação, serviço OAuth, faturamento e remetentes de notificações de conta em relação a um yourdomain.com substituto do operador. O lado do SMS carrega um telefoneebook e configuração do gateway. O programa de envio de e-mails itera sobre as listas de destinatários fornecidas pelo operador e envia através de servidores SMTP configurados.

Para que os links funcionem, .ad/xu.js e .ad/xq.js Criar URLs que explorem a ambiguidade na análise de URLs e o rastreamento de cliques. Os padrões de falsificação incorporam uma autoridade de aparência confiável antes de um @ Assim, o prefixo visível difere do host real:

text https://trusted[.]com@      https://trusted[.]com%40      https://trusted[.]com:80@ https://redirect[.]example[.]com/      https://track[.]example[.]com/click? 

A estrutura também captura ícones favoritos dos principais consumidores e enterprise provedores de e-mail — uma técnica comum para criar uma página de aviso ou página de destino convincente com a marca do provedor.

Reconhecimento de alvos e infraestrutura

Diversos módulos coletam contexto antes de enviar. .ad/x0.js resolve nomes via DNS sobre HTTPS (dns[.]google/resolver), .ad/xa.js consultas WHOIS (api[.]whois[.]vu), E .ad/x9.js executa a pesquisa de código do GitHub (api[.]github[.]com/search/code?q=) — um padrão consistente com a descoberta de configurações expostas de servidores de e-mail e credenciais SMTP para alimentar a lista de retransmissão. .ad/xs.js consulta o índice CDX da Wayback Machine.

Comando e controle

Em todo o conjunto obscurecido, .ad/x4.js refere-se ao ponto de extremidade do operador:

text http://api[.]nolimitent[.]xyz:4100 

O anfitrião compartilha o seu sem limite marca com o nome próprio da editora, e a : 4100 A porta é o canal de comunicação do framework. Este é o indicador mais confiável para os defensores: um pacote, uma estação de trabalho de desenvolvedor ou um agente de compilação alcançando api[.]nolimitent[.]xyz executou este código.

Indicadores de compromisso

Os indicadores abaixo são aqueles sobre os quais um defensor pode agir — buscar em um arquivo de bloqueio, bloquear um host ou pesquisar em logs de proxy e DNS. Os endpoints da Microsoft aparecem porque a estrutura os utiliza de forma abusiva; eles não são maliciosos em si e não devem ser bloqueados.

Indicador Formato Onde Ação do defensor
nolimit-agent (todas as versões 1.0.299–1.0.307) Pacote npm Procure por arquivos de bloqueio/logs de instalação no Grep
api[.]nolimitent[.]xyz (:4100) Host C2 .ad/x4.js Bloquear; pesquisar registros de DNS e proxy
.ad/ diretório oculto como destino principal/bin Estrutura package.json Sinal estático na revisão do registro
trusted[.]com@ / %40 / :80@ formulários de link Falsificação de URL .ad/xu.js, .ad/xq.js Inspeção de URL de e-mail/proxy
Concessão de código de dispositivo + Gráfico inbox/sentitems ler Comportamento .ad/x12.js Conecte-se no M365 + revisão de auditoria do Graph

Hashes de arquivos capturados na triagem:

  • pacote/.ad/x0.js — sha256 e4153bb614ee03ec456e6b5b41926385db6aae0e4f3e771d18e581571ad7ca2a

  • pacote/package.json — sha256 8618064f1f6146b4a8f0459aff9154dca1847e3936aa44f4d4cd37e127075644

Um sinal de locatário do Microsoft 365 que vale a pena investigar, independentemente deste pacote: Conecte-ses bem-sucedidos com código de dispositivo seguidos imediatamente por leituras do Graph de Pastas de e-mail/caixa de entrada e Pastas de e-mail/itens, especialmente a partir de uma sessão que o usuário não reconhece.

Atribuição e comportamento observado

O que é observável permanece separado de quem está por trás disso.

Fatos observáveis: o pacote é publicado sob o identificador agente sem limite com um endereço de Gmail não verificado e nenhum repositório de código-fonte vinculado; seu package.json descreve-o como um “remetente de e-mail avançado” e o etiqueta com o equipe vermelha palavra-chave; o código de tempo de execução está concentrado em um ambiente oculto e ofuscado .anúncio/ diretório cuja cadeia de ferramentas (ofuscador de javascript) é uma dependência declarada; e o host de chamada para casa api[.]nolimitent[.]xyz reutiliza o sem limite marca. Este é um pacote único com um ponto de referência de infraestrutura controlado pela operadora — não um conjunto de vários pacotes, e nenhuma sobreposição com uma campanha mencionada anteriormente foi identificada.

O equipe vermelha A palavra-chave não altera a classificação. Ferramentas legítimas de segurança ofensiva que oferecem capacidade de uso duplo fazem isso de forma transparente: código-fonte legível, alvos fornecidos pelo operador e nenhuma comunicação oculta com servidores externos. Este pacote inverte cada uma dessas propriedades — seu código operacional é ofuscado e oculto, e ele envia sinais para a infraestrutura fixa do operador em vez de para um alvo fornecido pelo usuário. O comportamento, e não o rótulo, determina o veredicto, que é malicioso.

A intenção não é declarada aqui. A postagem descreve o que o código faz — solicitar um código de dispositivo, ler uma caixa de correio via Graph, enviar e-mails em massa por meio de servidores de retransmissão configurados, enviar um sinal para um host fixo — e não explicita a motivação.

Dois efeitos no momento da instalação são importantes. Primeiro, qualquer desenvolvedor ou agente de CI que instale agente sem limite traz a estrutura para esse host e estabelece a chamada para o servidor. api[.]nolimitent[.]xyzEm segundo lugar, a funcionalidade de código de dispositivo amplia o alcance para além do host de instalação: uma caixa de correio do Microsoft 365 cujo proprietário é induzido a aprovar um código apresentado é lida diretamente pelo Graph, sem que nenhuma senha seja transmitida pela rede.

A tendência mais ampla é aquela que deve ser internalizada. O phishing de código de dispositivo (AiTM) passou de uma infraestrutura de phishing independente para um pacote em um registro público — distribuído por npm install em vez de por meio de um link enviado por e-mail. Empacotar o kit dessa forma troca o problema de hospedagem e entrega de links do operador de phishing pelo alcance de um registro, e oculta o código operacional por trás de um gancho de instalação limpa e um diretório ofuscado com nome de arquivo oculto que impede uma rápida inspeção manual.

Para defensores:

  • Revisão de registro e dependência. Trate um pacote cujo principal/caixa A estrutura oculta (com prefixo de ponto) de código próprio uniformemente ofuscado é considerada de alto risco, independentemente de o gancho de instalação parecer limpo. Minificação não é ofuscação — o critério de segurança é a assinatura do decodificador de array de strings, não o comprimento da linha.
  • Reforço de segurança do Microsoft 365. Restrinja o fluxo de autorização por código de dispositivo com Acesso Condicional onde não for operacionalmente necessário; concessões de código de dispositivo são um vetor conhecido de AiTM e raramente são necessárias para usuários interativos. Audite os Conecte-ses por código de dispositivo seguidos de enumeração imediata da caixa de correio do Graph.
  • Detecção de rede. Bloquear e alertar sobre api[.]nolimitent[.]xyz. Procure por ele nos logs de DNS e proxy de saída em toda a infraestrutura de desenvolvimento e compilação.
  • Detecção do caminho do e-mail. O usuário @ host Formulários de falsificação de URL (trusted[.]com@…) são detectáveis ​​no gateway de e-mail e no proxy; sinaliza links cujo componente de autoridade precede um @.

O pacote estava disponível no npm no momento da análise. Isso ocorre porque o framework oculto abrange toda a linha de versões publicadas e a versão atual. mais recente A tag (1.0.307) carrega a capacidade de código do dispositivo, a remoção do registro deve cobrir todas as versões, não apenas uma única versão anterior. 

sca-tools-software-composição-análise-ferramentas
Priorize, corrija e proteja seus riscos de software
Crie sua conta gratuita.
Nenhum cartão de crédito é necessário.

Proteja seu desenvolvimento e entrega de software

com o Suíte de Produtos da Xygeni