detecting-modbus-protocol-anomalies
Permite ao agente detectar anomalias no tráfego industrial Modbus. Monitora códigos de função, validações de registro e padrões de comunicação para identificar atividades suspeitas.
O que ela faz
Esta ferramenta ajuda a encontrar atividades estranhas no tráfego de comunicação industrial Modbus. Ela verifica se os comandos usados são esperados e se os dados acessados estão dentro dos limites normais.
Quando usar
- ✓Ao configurar um sistema de segurança para redes industriais.
- ✓Ao investigar um problema ou atividade suspeita em uma linha de produção.
- ✓Ao criar um registro do comportamento normal da rede para comparação futura.
Exemplo do que pedir para a IA
“Verifique o tráfego Modbus em busca de comandos não autorizados ou acesso a dados incomuns.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
A ferramenta monitora os comandos (códigos de função) e os dados (registradores) trocados na rede. Ela compara o tráfego atual com um registro do que é considerado normal para detectar desvios.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill detecting-modbus-protocol-anomaliesOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/detecting-modbus-protocol-anomalies/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Detecção de Anomalias no Protocolo Modbus
Quando Usar
- Ao implantar detecção de intrusão específica para Modbus em um ambiente de OT (Tecnologia Operacional)
- Ao construir modelos de linha de base para padrões determinísticos de polling Modbus
- Ao investigar tráfego Modbus suspeito sinalizado por ferramentas de monitoramento de OT
- Ao implementar lista de permissões (allowlisting) de códigos de função em firewalls industriais
- Ao detectar comandos de escrita Modbus não autorizados que podem manipular setpoints de processo
Não usar para proteger comunicações Modbus de ponta a ponta (Modbus não possui segurança nativa; consulte implementing-network-segmentation-for-ot para controles baseados em firewall), para monitoramento de protocolos não Modbus (consulte detecting-anomalies-in-industrial-control-systems para multi-protocolo) ou para fuzzing ativo de implementações Modbus (consulte performing-plc-firmware-security-analysis).
Pré-requisitos
- Acesso SPAN/TAP de rede para monitorar tráfego Modbus/TCP (porta 502)
- Zeek (anteriormente Bro) com analisador de protocolo Modbus ou Suricata com conjuntos de regras de OT
- Python 3.9+ com scapy e pymodbus para análise personalizada
- Captura de linha de base de tráfego Modbus normal (mínimo de 1-2 semanas)
- Documentação de clientes Modbus autorizados, códigos de função e mapas de registradores
Fluxo de Trabalho
Etapa 1: Capturar e Analisar Tráfego Modbus
Implante monitoramento passivo para capturar todo o tráfego Modbus/TCP e analisá-lo em registros estruturados para análise.
#!/usr/bin/env python3
"""Sistema de Detecção de Anomalias no Protocolo Modbus.
Monitora o tráfego Modbus/TCP em busca de anomalias, incluindo
códigos de função não autorizados, acesso incomum a registradores,
desvios de tempo e dispositivos clientes maliciosos.
"""
import json
import struct
import sys
import time
from collections import defaultdict, deque
from dataclasses import dataclass, field
from datetime import datetime
from statistics import mean, stdev
try:
from scapy.all import sniff, rdpcap, IP, TCP
except ImportError:
print("Instale scapy: pip install scapy")
sys.exit(1)
MODBUS_FUNCTION_CODES = {
1: ("Read Coils", "read"),
2: ("Read Discrete Inputs", "read"),
3: ("Read Holding Registers", "read"),
4: ("Read Input Registers", "read"),
5: ("Write Single Coil", "write"),
6: ("Write Single Register", "write"),
7: ("Read Exception Status", "diagnostic"),
8: ("Diagnostics", "diagnostic"),
11: ("Get Comm Event Counter", "diagnostic"),
12: ("Get Comm Event Log", "diagnostic"),
15: ("Write Multiple Coils", "write"),
16: ("Write Multiple Registers", "write"),
17: ("Report Slave ID", "diagnostic"),
22: ("Mask Write Register", "write"),
23: ("Read/Write Multiple Registers", "read_write"),
43: ("Encapsulated Interface Transport", "diagnostic"),
}
@dataclass
class ModbusAnomaly:
timestamp: str
anomaly_type: str
severity: str
src_ip: str
dst_ip: str
unit_id: int
func_code: int
detail: str
mitre_technique: str = ""
@dataclass
class ModbusSession:
"""Rastreia o estado de uma sessão mestre-escravo Modbus."""
src_ip: str
dst_ip: str
func_codes_seen: dict = field(default_factory=lambda: defaultdict(int))
register_ranges: set = field(default_factory=set)
intervals: list = field(default_factory=lambda: deque(maxlen=500))
last_timestamp: float = 0
request_count: int = 0
write_count: int = 0
class ModbusAnomalyDetector:
"""Detecta anomalias no tráfego Modbus/TCP."""
def __init__(self):
self.sessions = {}
self.baseline_sessions = {}
self.anomalies = []
self.authorized_clients = set()
self.authorized_func_codes = {} # FCs permitidos por sessão
self.packet_count = 0
def set_authorized_clients(self, clients):
"""Define a lista de IPs de clientes Modbus autorizados."""
self.authorized_clients = set(clients)
def set_authorized_func_codes(self, session_key, func_codes):
"""Define os códigos de função permitidos para uma sessão específica."""
self.authorized_func_codes[session_key] = set(func_codes)
def load_baseline(self, baseline_file):
"""Carrega perfis de linha de base de análises de captura anteriores."""
with open(baseline_file) as f:
baseline = json.load(f)
for key, data in baseline.get("modbus_baselines", {}).items():
self.baseline_sessions[key] = data
self.authorized_func_codes[key] = set(data.get("allowed_function_codes", []))
print(f"[*] Carregados {len(self.baseline_sessions)} baselines Modbus")
def process_packet(self, pkt):
…
Perguntas frequentes
O que é Modbus?
Modbus é um protocolo de comunicação usado em sistemas industriais para que dispositivos como sensores e controladores conversem entre si.
O que são 'anomalias' neste contexto?
Anomalias são atividades que fogem do padrão normal, como o uso de comandos não permitidos ou o acesso a áreas de dados inesperadas, que podem indicar um problema ou um ataque.
Preciso de conhecimento técnico para usar isso?
É recomendado ter alguma familiaridade com redes industriais e o protocolo Modbus para interpretar os resultados, mas a ferramenta foi projetada para ser o mais clara possível.
Detalhes
Descrição original do autor
Detect anomalies in Modbus/TCP and Modbus RTU industrial traffic via function code monitoring, register range validation, timing analysis, and deep packet inspection, using Zeek's Modbus analyzer, Suricata IDS with OT rules, and Python Markov chain models of normal transaction sequences. Use for deploying Modbus IDS in OT environments, baselining polling patterns, investigating suspicious Modbus t
Popularidade
- Estrelas no GitHub
- 35 mil
- Posição no ranking
- #5688
- Licença
- Apache-2.0
- Atualizada em
- 31/08/2026
Comentários
- …
Mais skills deste repositório
abusing-dpapi-for-credential-access
Dá ao seu agente de IA instruções prontas para uma tarefa específica, para ele fazer melhor e mais rápido.
mukul975/Anthropic-Cybersecurity-Skills
abusing-shadow-credentials-for-privesc
Ensina seu agente de IA a escrever textos claros e bem estruturados.
mukul975/Anthropic-Cybersecurity-Skills
achieving-cmmc-level-2-compliance
Ajuda seu agente a preparar um ambiente para conformidade com CMMC Nível 2. Ele implementa requisitos de segurança e gerencia a documentação necessária.
mukul975/Anthropic-Cybersecurity-Skills
acquiring-disk-image-with-dd-and-dcfldd
Ajuda seu agente a criar cópias exatas de discos rígidos. Isso é útil para garantir que nenhuma informação seja perdida ou alterada durante investigações.
mukul975/Anthropic-Cybersecurity-Skills
Skills parecidas
agent-architecture-audit
Faz seu agente verificar se tudo está funcionando corretamente. Ele encontra e conserta problemas em sistemas de IA, garantindo que funcionem como esperado.
affaan-m/ECC
agent-eval
Ajuda seu agente a comparar diferentes ferramentas de programação de IA. Ele mede qual é mais rápido, barato e confiável para realizar tarefas específicas.
affaan-m/ECC
agent-harness-construction
Faz seu agente entender melhor como realizar tarefas. Ele otimiza as ferramentas e instruções que o agente usa para aumentar suas chances de sucesso.
affaan-m/ECC