Pesquisadores da Darktrace identificaram uma amostra de malware autodenominada ZionSiphon, projetada para atacar sistemas de tratamento de água e dessalinização em Israel. A análise publicada em 16 de abril de 2026 revela que o código combina escalonamento de privilégios, persistência, propagação via USB e varredura em redes industriais, com capacidades específicas de sabotagem direcionadas a controles de cloro e pressão.
O aspecto mais notável da descoberta é que o malware não funciona corretamente devido a um bug nas funções que verificam se o endereço IP da vítima está dentro do intervalo atribuído a Israel. Esta falha de implementação impede que o código execute suas funções destrutivas, mesmo quando atinge alvos pretendidos.
Motivações políticas e alvos específicos
O ZionSiphon contém faixas de IP hardcoded geograficamente localizadas em Israel, incluindo os intervalos 2.52.0.0-2.55.255.255, 79.176.0.0-79.191.255.255 e 212.150.0.0-212.150.255.255. Duas strings codificadas em Base64 revelam as motivações do atacante. A primeira decodifica para: “Em apoio aos nossos irmãos no Irã, Palestina e Iêmen contra a agressão sionista. Eu sou ‘0xICS'”. A segunda revela a intenção de “Envenenando a população de Tel Aviv e Haifa”.
O malware lista strings associadas à infraestrutura hídrica israelense, incluindo Mekorot (a empresa nacional de água), além das usinas de dessalinização Sorek, Hadera, Ashdod e Palmachim, e a estação de tratamento de esgoto Shafdan.
Verificação de ambiente industrial e persistência
A função IsDamDesalinationPlant() verifica processos em execução com nomes como DesalPLC, ROController, ChlorineCtrl, ReverseOsmosis e WaterPLC. O código também procura diretórios específicos como “C:\Program Files\Desalination” e “C:\Program Files\Schneider Electric\Desal”, além de arquivos de configuração incluindo ChlorineControl.dat e SalinityControl.ini.
Para estabelecer persistência, o malware primeiro verifica se está sendo executado com privilégios administrativos. Caso contrário, utiliza PowerShell para relançar o executável com privilégios elevados. Em seguida, copia-se para o diretório LocalApplicationData com o nome svchost.exe como arquivo oculto e cria uma chave Run chamada SystemHealthCheck no registro do Windows.
Mecanismo de sabotagem em sistemas de controle
Quando o malware determina que está em um alvo válido, a função IncreaseChlorineLevel() verifica uma lista de arquivos de configuração associados a sistemas de dessalinização, osmose reversa e controle de cloro. Ao encontrar qualquer um desses arquivos, anexa um bloco de texto contendo parâmetros perigosos: Chlorine_Dose=10, Chlorine_Pump=ON, Chlorine_Flow=MAX, Chlorine_Valve=OPEN e RO_Pressure=80.
Esses valores representam tentativas de aumentar drasticamente os níveis de cloro e pressão nos sistemas de tratamento de água, o que poderia tornar a água imprópria para consumo ou danificar equipamentos industriais.
Descoberta de dispositivos OT e protocolos industriais
A função UZJctUZJctUZJct() implementa um mecanismo de descoberta de rede para dispositivos de tecnologia operacional (OT – sistemas de controle industrial). O malware obtém o endereço IPv4 local, reduz para o prefixo /24 e varre todos os hosts de 1 a 255. Para cada host, testa as portas 502 (protocolo Modbus usado em automação industrial), 20000 (protocolo DNP3 comum em utilities) e 102 (protocolo S7comm da Siemens).
Para conexões bem-sucedidas, o malware realiza validação de segundo estágio. Na porta Modbus, verifica se o primeiro byte da resposta está entre 1 e 255. Para DNP3, procura pelos bytes “05 64” no início da resposta. Para S7comm, verifica se o primeiro byte é “03”.
Implementação Modbus e tentativas de controle
A lógica mais desenvolvida é para o protocolo Modbus. O malware envia o comando “01 03 00 00 00 0A”, que solicita a leitura de 10 registros consecutivos. Ao analisar os valores retornados, procura por indicadores específicos: para Chlorine_Dose, busca valores entre 0 e 1000; para Turbine_Speed, valores acima de 100.
Se encontra um registro plausível, o código constrói uma escrita Modbus usando a função 6 (escrita de registro único) para definir o valor como 100. Caso não encontre registros correspondentes aos critérios, utiliza frames de escrita hardcoded previamente definidos no código.
Falhas críticas de implementação
Os pesquisadores identificaram múltiplas falhas que tornam o malware inoperante. Os ramos DNP3 e S7comm estão incompletos – o DNP3 retorna apenas a sequência “05 64 0A 0C 01 02”, muito curta para constituir um quadro DNP3 válido. O S7comm retorna “03 00 00 13 0E 00”, uma sequência de cinco bytes que não forma um comando S7 válido.
A falha mais crítica está na função de validação geográfica. A comparação entre o valor armazenado e o resultado da função EncryptDecrypt(“Israel”, 5) sempre falha, mesmo quando o IP está dentro das faixas israelenses especificadas. Quando a validação falha, o malware aciona SelfDestruct(), que remove a chave de persistência do registro, registra um log e cria um arquivo batch para deletar o próprio executável.
Avaliação técnica e implicações
A Darktrace avaliou que, embora muitas das capacidades individuais do ZionSiphon estejam alinhadas com padrões comuns de malware, a combinação de mensagens politicamente motivadas, segmentação de IP específica de Israel e foco explícito em processos de dessalinização o distingue de ameaças puramente oportunistas.
As falhas de implementação, incluindo a validação de país disfuncional e os componentes DNP3 e S7 incompletos, sugerem três possibilidades: esta é uma build de desenvolvimento vazada prematuramente, uma amostra implantada antes de estar pronta, ou foi intencionalmente desarmada para testes ou demonstração.
A descoberta ressalta a crescente ameaça a infraestruturas críticas de água, mesmo quando os atacantes demonstram competência técnica limitada. O fato de o malware conter código específico para manipular níveis de cloro e pressão em sistemas de dessalinização indica conhecimento do domínio e intenção clara de causar danos físicos através de cyber-ataques.