
Publié : 2 janvier 2025 | Scientific Reports
Auteurs : Hazem M. Kotb, Tarek Gaber, Salem AlJanah, Hossam M. Zawbaa, Mohammed Alkhathami, et al.
La cybersécurité demeure l’un des défis les plus cruciaux pour les entreprises modernes. Alors que les organisations ont longtemps investi dans des mesures périmétriques — pare-feu, systèmes de détection d’intrusion (IDS) — la montée des menaces internes a recentré l’attention sur la détection d’anomalies internes. Les menaces internes — qu’elles proviennent d’initiés malveillants, d’employés négligents ou d’utilisateurs compromis — représentent une part importante des incidents de sécurité. Par ailleurs, l’essor de l’intelligence artificielle générative (IA) a ajouté de nouvelles complexités : des systèmes automatisés peuvent désormais produire de faux profils utilisateurs très convaincants qui imitent un comportement légitime.
Dans cet article, nous présentons un nouveau modèle DS-IID (Deep Synthesis-Based Insider Intrusion Detection) qui répond de front à ces défis. Ce modèle identifie non seulement les initiés malveillants grâce à l’apprentissage profond, mais distingue également les profils authentiques des profils générés par l’IA. Nous décrirons les principes sous-jacents, détaillerons les aspects techniques, fournirons des extraits de code applicables sur le terrain et discuterons des performances obtenues sur le jeu de données CERT Insider Threat.
Les menaces internes émanent d’entités internes — employés, sous-traitants ou équipements de confiance — qui disposent d’un accès légitime aux ressources de l’organisation. Ces utilisateurs bénéficiant déjà de privilèges élevés, leur comportement anormal peut contourner les contre-mesures classiques, rendant leur détection difficile à l’aide des systèmes standards. De récentes études estiment que les menaces internes représentent jusqu’à 79 % des problèmes de cybersécurité.
L’arrivée des technologies d’IA générative complique encore la situation. Ces systèmes peuvent créer des données synthétiques réalistes imitant le comportement utilisateur légitime. En générant automatiquement de faux profils, les attaquants dissimulent leurs activités malveillantes derrière un vernis d’authenticité. Les IDS traditionnels peinent souvent à faire la différence entre activités réelles et synthétiques, ouvrant la voie à des failles potentielles.
Le modèle DS-IID combine la synthèse profonde de caractéristiques, la modélisation générative et l’apprentissage profond binaire pour détecter les menaces internes. Cette approche multifacette poursuit trois objectifs principaux :
Le DFS se trouve au cœur du modèle DS-IID. Contrairement à l’ingénierie manuelle de caractéristiques, le DFS permet l’extraction automatisée de profils détaillés à partir de données brutes. En synthétisant des caractéristiques complexes issues des journaux, de l’activité réseau et du comportement utilisateur, le modèle obtient une vision complète de chaque utilisateur :
Le modèle DS-IID intègre des modèles génératifs pour simuler de vrais profils utilisateurs. Cette simulation sert à évaluer la probabilité qu’un profil suspect ait été généré par IA. Parallèlement, un classificateur profond binaire — entraîné sur des données réelles et synthétiques — détermine si un profil est légitime ou malveillant. Cette double approche permet :
Le déséquilibre des données est courant en cybersécurité : les instances bénignes y surpassent largement les événements malveillants. Pour y remédier, DS-IID utilise un échantillonnage aléatoire pondéré « à la volée ». Durant l’entraînement, ce procédé ajuste dynamiquement l’échantillonnage, accordant aux événements rares (malveillants) un poids suffisant pour influencer l’apprentissage.
Résultat : de meilleurs taux de détection et un risque réduit de considérer un comportement normal comme anormal.
Le modèle DS-IID repose sur une architecture multi-couches combinant acquisition de données, DFS et classification.
Le modèle s’appuie sur des jeux publics tels que CERT. Les étapes :
Après pré-traitement, la synthèse profonde s’effectue :
Étape finale : entraîner un modèle binaire pour distinguer profils légitimes et malveillants.
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout
# Définition du modèle binaire DS-IID
def build_ds_iid_model(input_dim):
model = Sequential()
model.add(Dense(128, activation='relu', input_dim=input_dim))
model.add(Dropout(0.3))
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.3))
model.add(Dense(32, activation='relu'))
model.add(Dropout(0.3))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
return model
if __name__ == "__main__":
input_dimensions = 30 # Exemple de nombre de caractéristiques après DFS
model = build_ds_iid_model(input_dimensions)
model.summary()
#!/bin/bash
# Chemin du journal (ex. : /var/log/auth.log)
LOG_FILE="/var/log/auth.log"
# Motifs d’entrées suspectes : échecs d’authentification, activités inhabituelles, etc.
PATTERN="Failed password|Invalid user"
echo "Analyse des journaux à la recherche d'activités suspectes..."
grep -E "$PATTERN" "$LOG_FILE" > suspicious_activity.log
echo "Nombre d'entrées suspectes :"
wc -l suspicious_activity.log
echo "Premières 10 entrées suspectes :"
head -n 10 suspicious_activity.log
import pandas as pd
import numpy as np
from datetime import datetime
# Analyse d'un fichier journal et création d'un DataFrame structuré
def parse_log_file(log_file_path):
data = []
with open(log_file_path, 'r') as f:
for line in f:
parts = line.split()
timestamp_str = " ".join(parts[0:3])
try:
timestamp = datetime.strptime(timestamp_str, '%b %d %H:%M:%S')
except ValueError:
continue
log_entry = {
'timestamp': timestamp,
'hostname': parts[3],
'service': parts[4].split('[')[0],
'message': " ".join(parts[5:])
}
data.append(log_entry)
return pd.DataFrame(data)
# Synthèse profonde de caractéristiques
def generate_features(df):
feature_df = df.groupby('hostname').size().reset_index(name='suspicious_count')
df['hour'] = df['timestamp'].dt.hour
hourly_features = df.groupby(['hostname', 'hour']).size().unstack(fill_value=0)
feature_df = feature_df.merge(hourly_features, on='hostname', how='left')
return feature_df
if __name__ == "__main__":
log_df = parse_log_file('suspicious_activity.log')
features = generate_features(log_df)
print("Caractéristiques générées :")
print(features.head())
features.to_csv('user_features.csv', index=False)
Principaux résultats sur le jeu CERT :
Neuf métriques ont été utilisées : Kappa de Cohen, TPR, FPR, FAR, rappel, précision, F1, exactitude et AUC. Grâce à l’échantillonnage pondéré, la performance reste élevée malgré le déséquilibre des classes.
Contrairement aux IDS traditionnels fondés sur des règles manuelles ou le clustering non supervisé, DS-IID tire profit de la synthèse automatique de caractéristiques et de la gestion explicite des données synthétiques, obtenant un avantage substantiel.
Le modèle DS-IID marque une avancée majeure dans la détection des menaces internes, notamment face aux profils synthétiques produits par l’IA. Basé sur la synthèse profonde de caractéristiques et la classification binaire, il atteint 97 % d’exactitude et un AUC de 0,99 sur CERT, tout en gérant efficacement le déséquilibre des données.
En résumé :
L’intégration de DS-IID dans les infrastructures de cybersécurité constitue une voie prometteuse pour contrer des adversaires toujours plus sophistiqués. Bon codage et restez en sécurité !
Si vous avez trouvé ce contenu utile, imaginez ce que vous pourriez accomplir avec notre programme de formation élite complet de 47 semaines. Rejoignez plus de 1 200 étudiants qui ont transformé leur carrière grâce aux techniques de l'Unité 8200.