
Cadre forensique open-source pour analyser les métadonnées et les fichiers de projet des automates programmables industriels (PLC). Analyse les artefacts suspects dans les environnements ICS pour faciliter la réponse aux incidents et l'investigation manuelle.

Le framework Microsoft ICS Forensics Tools est un framework médico-légal open source qui permet l'analyse des métadonnées et des fichiers projet des API industriels.
Le framework offre aux enquêteurs un moyen pratique de scanner les API et d'identifier tout artefact suspect dans les environnements ICS, pouvant être utilisé pour une vérification manuelle, des tâches de surveillance automatisée ou des opérations de réponse aux incidents afin de détecter des appareils compromis.
En tant qu'outil open source, ICS Forensics Tools permet aux enquêteurs de revoir la sortie et de la personnaliser selon leurs besoins spécifiques.
Ces instructions vous permettront d'obtenir une copie du projet et de l'exécuter sur votre machine locale à des fins de développement et de test.
git clone https://github.com/microsoft/ics-forensics-tools.git
Installer les dépendances Python
pip install -r requirements.txt
| Args | Description | Requis / Optionnel |
|---|---|---|
-h, --help | afficher ce message d'aide et quitter | Optionnel |
-s, --save-config | Enregistrer le fichier de config pour une utilisation future facile | Optionnel |
-c, --config | Chemin du fichier de config, par défaut config.json | Optionnel |
-o, --output-dir | Répertoire de sortie des fichiers générés, par défaut output | Optionnel |
-v, --verbose | Journaliser la sortie dans un fichier ainsi que dans la console | Optionnel |
-p, --multiprocess | Exécuter en mode multiprocessus selon le nombre de plugins/analyseurs | Optionnel |
| Args | Description | Requis / Optionnel |
|---|---|---|
-h, --help | afficher ce message d'aide et quitter | Optionnel |
--ip | Chemin du fichier d'adresses, CIDR ou adresses IP au format CSV (colonne ip requise). ajoutez plus de colonnes pour des informations supplémentaires sur chaque ip (username, pass, etc...) | Requis |
--port | Numéro du port | Optionnel |
--transport | tcp/udp | Optionnel |
--analyzer | Nom de l'analyseur à exécuter | Optionnel |
python driver.py -s -v NomDuPlugin --ip ips.csv
python driver.py -s -v NomDuPlugin --ip ips.csv --analyzer NomAnalyseur
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])
Lors du développement en local, assurez-vous de marquer le dossier src comme « Sources root »
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 sous le dossier pluginsfrom 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