
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
class General(AnalyzerInterface):
def __init__(self, config: AnalyzerConfig, output_dir: Path, verbose: bool):
super().__init__(config, output_dir, verbose)
self.plugin_name = 'General'
self.create_output_dir(self.plugin_name)
def analyze(self):
pass
__init__.py-Datei im analyzers-Ordner importierenMicrosoft Defender for IoT ist eine agentenlose Netzwerkschicht-Sicherheitslösung, die es Organisationen ermöglicht, Geräte in ihren IoT/OT- und Industrial Control Systems (ICS)-Umgebungen kontinuierlich zu überwachen und zu entdecken, Bedrohungen zu erkennen und Schwachstellen zu verwalten, sowohl vor Ort als auch in Azure-verbundenen Umgebungen.
Section 52 unter MSRC blog
ICS-Vortrag über das Tool
Section 52 - Investigating Malicious Ladder Logic | Microsoft Defender for IoT Webinar - YouTube
Dieses Projekt heißt Beiträge und Vorschläge willkommen. Die meisten Beiträge erfordern, dass Sie einer Contributor License Agreement (CLA) zustimmen, die erklärt, dass Sie das Recht haben, uns die Rechte zur Nutzung Ihres Beitrags zu gewähren, und dies auch tun. Einzelheiten finden Sie unter https://cla.opensource.microsoft.com.
Wenn Sie einen Pull Request einreichen, wird ein CLA-Bot automatisch feststellen, ob Sie eine CLA bereitstellen müssen und den PR entsprechend kennzeichnen (z. B. Statusprüfung, Kommentar). Befolgen Sie einfach die Anweisungen des Bots. Sie müssen dies nur einmal für alle Repos tun, die unsere CLA verwenden.
Dieses Projekt hat den Microsoft Open Source Code of Conduct übernommen. Weitere Informationen finden Sie im Code of Conduct FAQ oder wenden Sie sich bei weiteren Fragen oder Anmerkungen an [email protected].
Dieses Projekt kann Marken oder Logos für Projekte, Produkte oder Dienstleistungen enthalten. Die autorisierte Nutzung von Microsoft- Marken oder Logos unterliegt und muss den Microsoft Trademark & Brand Guidelines folgen. Die Verwendung von Microsoft-Marken oder -Logos in modifizierten Versionen dieses Projekts darf keine Verwirrung stiften oder eine Microsoft-Sponsoring implizieren. Die Verwendung von Marken oder Logos Dritter unterliegt den Richtlinien dieser Dritten.
Copyright (c) 2018 Microsoft Corporation. Alle Rechte vorbehalten.
DIE SOFTWARE WIRD "WIE BESEHEN" ZUR VERFÜGUNG GESTELLT, OHNE JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNG, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND NICHTVERLETZUNG VON RECHTEN DRITTER. IN KEINEM FALL SIND DIE AUTOREN ODER COPYRIGHT-INHABER HAFTBAR FÜR JEGLICHE ANSPRÜCHE, SCHÄDEN ODER ANDERE HAFTUNG, OB AUS VERTRAG, UNERLAUBTER HANDLUNG ODER ANDERWEITIG, DIE SICH AUS, AUS ODER IM ZUSAMMENHANG MIT DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN GESCHÄFTEN IN DER SOFTWARE ERGEBEN.