Pular para o conteúdo
Skillpedia
Análise e planilhas35 mil · #6121

performing-plc-firmware-security-analysis

Ajuda seu agente a analisar firmwares de controladores lógicos programáveis (PLCs) em busca de falhas.

O que ela faz

Esta ferramenta analisa o software interno (firmware) de controladores lógicos programáveis (PLCs) para encontrar falhas de segurança. Ela procura por senhas escondidas, métodos inseguros de atualização e outras vulnerabilidades.

Quando usar

  • ✓Ao verificar a segurança de um PLC antes de usá-lo em locais importantes.
  • ✓Quando se suspeita que o software de um PLC foi alterado.
  • ✓Ao testar a segurança de novos tipos de PLCs em um laboratório.

Exemplo do que pedir para a IA

“Analise a segurança do firmware deste PLC Siemens S7.”

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

https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/performing-plc-firmware-security-analysis/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/performing-plc-firmware-security-analysis/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

A ferramenta extrai o software do PLC e o examina em busca de problemas conhecidos. Ela compara o software atual com uma versão confiável para ver se houve alguma alteração.

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 performing-plc-firmware-security-analysis

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/performing-plc-firmware-security-analysis/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Análise de Segurança de Firmware de CLPs

Quando Usar

  • Ao avaliar a segurança de CLPs como parte de uma avaliação de segurança de componentes IEC 62443 (IEC 62443-4-2)
  • Ao validar a integridade do firmware após uma suspeita de comprometimento ou ataque à cadeia de suprimentos
  • Ao avaliar a segurança de uma nova plataforma de CLP antes da implantação em infraestrutura crítica
  • Ao realizar pesquisa de vulnerabilidades em dispositivos de sistemas de controle industrial em um laboratório autorizado
  • Ao responder a um incidente onde adulteração da lógica ou firmware do CLP é suspeita

Não use em CLPs de produção ativos sem autorização explícita e controles de segurança implementados. A extração e análise de firmware devem ser realizadas em dispositivos de laboratório ou backups offline. Nunca faça upload de firmware de CLP para serviços de análise públicos. Consulte performing-ics-penetration-testing para procedimentos de teste ativo autorizados.

Pré-requisitos

  • Ambiente de laboratório isolado com o hardware do CLP alvo ou um ambiente emulado
  • Software de programação de CLP para a plataforma alvo (Siemens TIA Portal, Rockwell Studio 5000, Schneider EcoStruxure)
  • Ferramentas de extração de firmware (binwalk, firmware-mod-kit, depurador JTAG/SWD)
  • Ferramentas de análise estática (Ghidra, IDA Pro, Binary Ninja com suporte ARM/MIPS/PowerPC)
  • Compreensão da arquitetura de CLP (sistema operacional em tempo real, execução de lógica ladder, varredura de E/S)
  • Cópia de referência de firmware conhecido como bom para comparação de integridade

Fluxo de Trabalho

Etapa 1: Obter Firmware de CLP para Análise

Extraia ou obtenha o firmware do CLP por métodos autorizados. Isso pode ser feito baixando do fornecedor, extraindo de um dispositivo de laboratório ou obtendo de um backup de projeto.

#!/usr/bin/env python3
"""Aquisição e Verificação de Integridade de Firmware de CLP.

Suporta extração de firmware de arquivos de projeto, downloads de rede
e comparação de imagem binária com linhas de base conhecidas como boas.
"""

import hashlib
import json
import os
import struct
import sys
import zipfile
from datetime import datetime
from pathlib import Path


class PLCFirmwareAcquisition:
    """Lida com a aquisição de firmware de CLP de várias fontes."""

    def __init__(self, output_dir="firmware_analysis"):
        self.output_dir = Path(output_dir)
        self.output_dir.mkdir(exist_ok=True)
        self.manifest = {
            "acquisition_date": datetime.now().isoformat(),
            "firmware_samples": [],
        }

    def extract_from_siemens_project(self, project_path):
        """Extrai blocos de firmware/programa do projeto Siemens TIA Portal.

        Projetos TIA Portal (.ap16/.ap17) são arquivos ZIP contendo
        blocos de programa de CLP codificados em XML e configuração do sistema.
        """
        print(f"[*] Analisando projeto Siemens: {project_path}")
        results = {"platform": "Siemens", "blocks": []}

        if zipfile.is_zipfile(project_path):
            with zipfile.ZipFile(project_path, "r") as zf:
                for info in zf.infolist():
                    # Blocos de programa são armazenados como XML em caminhos específicos
                    if "ProgramBlocks" in info.filename or "SystemBlocks" in info.filename:
                        block_data = zf.read(info.filename)
                        block_hash = hashlib.sha256(block_data).hexdigest()

                        block_path = self.output_dir / info.filename.replace("/", "_")
                        block_path.write_bytes(block_data)

                        results["blocks"].append({
                            "name": info.filename,
                            "size": info.file_size,
                            "sha256": block_hash,
                            "extracted_to": str(block_path),
                        })
                        print(f"  [+] Extraído: {info.filename} ({info.file_size} bytes)")

        self.manifest["firmware_samples"].append(results)
        return results

    def extract_from_rockwell_project(self, acd_path):
        """Extrai dados do programa do arquivo Rockwell Studio 5000 ACD.

        Arquivos ACD contêm programa do controlador, tags e configuração.
        """
        print(f"[*] Analisando projeto Rockwell: {acd_path}")
        results = {"platform": "Rockwell/Allen-Bradley", "blocks": []}

        with open(acd_path, "rb") as f:
            header = f.read(256)
            # Arquivos ACD têm uma assinatura específica
            if b"RSLogix" in header or b"Studio 5000" in header:
                f.seek(0)
                full_data = f.read()
                file_hash = hashlib.sha256(full_data).hexdigest()


…
Perguntas frequentes

O que é um PLC?

Um Controlador Lógico Programável (PLC) é um computador industrial usado para controlar máquinas e processos em fábricas e outras instalações.

O que é firmware?

Firmware é o software básico que controla o hardware de um dispositivo, como um PLC. É como o sistema operacional de um computador.

Posso usar isso em um PLC que está funcionando?

Não, nunca use esta ferramenta em um PLC que está controlando um processo real sem permissão e cuidados especiais. A análise deve ser feita em equipamentos de laboratório ou cópias de segurança.

Detalhes

Descrição original do autor

This skill covers analyzing Programmable Logic Controller (PLC) firmware for security vulnerabilities including hardcoded credentials, insecure update mechanisms, backdoor functions, memory corruption flaws, and undocumented debug interfaces. It addresses firmware extraction from common PLC platforms (Siemens S7, Allen-Bradley, Schneider Modicon), static analysis of firmware images, dynamic analys

repo: mukul975/Anthropic-Cybersecurity-Skills

Popularidade

Estrelas no GitHub
35 mil
Posição no ranking
#6121
Licença
Apache-2.0
Atualizada em
31/08/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas