
Open-Source-Forensik-Framework zur Analyse von industriellen PLC-Metadaten und Projektdateien. Scannt nach verdächtigen Artefakten in ICS-Umgebungen, um Incident Response und manuelle Untersuchungen zu unterstützen.

Das Microsoft ICS Forensics Tools-Framework ist ein quelloffenes Forensik-Framework, das die Analyse von industriellen PLC-Metadaten und Projektdateien ermöglicht.
Das Framework bietet Ermittlern eine bequeme Möglichkeit, nach SPSen zu scannen und verdächtige Artefakte in ICS-Umgebungen zu identifizieren. Diese können für manuelle Überprüfungen, automatisierte Überwachungsaufgaben oder Incident-Response-Operationen zur Erkennung kompromittierter Geräte verwendet werden.
Als quelloffenes Tool ermöglicht ICS Forensics Tools den Ermittlern, die Ausgabe zu überprüfen und an ihre spezifischen Anforderungen anzupassen.
Diese Anweisungen helfen Ihnen, eine Kopie des Projekts auf Ihrem lokalen Rechner zu Entwicklungs- und Testzwecken zum Laufen zu bringen.
git clone https://github.com/microsoft/ics-forensics-tools.git
Installieren Sie die Python-Anforderungen
pip install -r requirements.txt
| Args | Beschreibung | Erforderlich / Optional |
|---|---|---|
-h, --help | zeigt diese Hilfemeldung an und beendet das Programm | Optional |
-s, --save-config | Konfigurationsdatei zur einfachen späteren Verwendung speichern | Optional |
-c, --config | Pfad zur Konfigurationsdatei, Standard ist config.json | Optional |
-o, --output-dir | Verzeichnis, in das generierte Dateien ausgegeben werden, Standard ist output | Optional |
-v, --verbose | Log-Ausgabe sowohl in eine Datei als auch auf die Konsole | Optional |
-p, --multiprocess | Im Multiprozess-Modus nach Anzahl der Plugins/Analysatoren ausführen | Optional |
| Args | Beschreibung | Erforderlich / Optional |
|---|---|---|
-h, --help | zeigt diese Hilfemeldung an und beendet das Programm | Optional |
--ip | Dateipfad, CIDR oder IP-Adressen-CSV (ip-Spalte erforderlich). Fügen Sie weitere Spalten für zusätzliche Informationen zu jeder IP hinzu (Benutzername, Passwort usw.) | Erforderlich |
--port | Portnummer | Optional |
--transport | tcp/udp | Optional |
--analyzer | Name des auszuführenden Analysators | Optional |
python driver.py -s -v PluginName --ip ips.csv
python driver.py -s -v PluginName --ip ips.csv --analyzer AnalyzerName
python driver.py -s -v -c config.json --multiprocess
from forensic.client.forensic_client import ForensicClient
from forensic.interfaces.plugin import PluginConfig
forensic = ForensicClient()
plugin = PluginConfig.from_json({
"name": "PluginName",
"port": 123,
"transport": "tcp",
"addresses": [{"ip": "192.168.1.0/24"}, {"ip": "10.10.10.10"}],
"parameters": {
},
"analyzers": []
})
forensic.scan([plugin])
Stellen Sie bei der lokalen Entwicklung sicher, dass der src-Ordner als "Sources root" markiert ist.
from pathlib import Path
from forensic.interfaces.plugin import PluginInterface, PluginConfig, PluginCLI
from forensic.common.constants.constants import Transport
class GeneralCLI(PluginCLI):
def __init__(self, folder_name):
super().__init__(folder_name)
self.name = "General"
self.description = "General Plugin Description"
self.port = 123
self.transport = Transport.TCP
def flags(self, parser):
self.base_flags(parser, self.port, self.transport)
parser.add_argument('--general', help='General additional argument', metavar="")
class General(PluginInterface):
def __init__(self, config: PluginConfig, output_dir: Path, verbose: bool):
super().__init__(config, output_dir, verbose)
def connect(self, address):
self.logger.info(f"{self.config.name} connect")
def export(self, extracted):
self.logger.info(f"{self.config.name} export")
__init__.py-Datei im plugins-Ordner importierenfrom pathlib import Path
from forensic.interfaces.analyzer import AnalyzerInterface, AnalyzerConfig