Introduction
À l'ère du numérique, le volume de données généré par les appareils et les systèmes peut constituer à la fois un défi et une opportunité pour les praticiens de la sécurité. L'analyse d'une grande quantité de données pour obtenir des informations précieuses ou exploitables sur les tendances des cyberattaques nécessite des outils et des méthodologies précis.
Avant de vous lancer dans l'analyse des données, vous vous posez peut-être la question :
- Quelles sont les questions spécifiques auxquelles je souhaite répondre et est-ce que je dispose des données nécessaires ?
- Où se trouvent toutes les données pertinentes ?
- Comment puis-je avoir accès à ces données ?
- Après avoir accédé aux données, quelles sont les étapes à suivre pour les comprendre et les organiser ?
- Quels sont les outils les plus efficaces pour extraire, interpréter ou visualiser les données ?
- Dois-je analyser les données brutes immédiatement ou attendre qu'elles aient été traitées ?
- Plus important encore, quelles informations exploitables peuvent être tirées des données ?
Si ces questions vous interpellent, vous êtes sur la bonne voie. Bienvenue dans le monde de Google Cloud, où nous allons répondre à ces questions et vous guider dans le processus de création d'un rapport complet.
Notre approche comprendra plusieurs étapes dans l'ordre suivant :
L'exploration : Nous commençons par bien comprendre les données dont nous disposons. Cette phase consiste à identifier les informations potentielles que nous souhaitons découvrir et à vérifier la disponibilité des données nécessaires.
L'extraction : Ici, nous rassemblons les données nécessaires, en nous concentrant sur les informations les plus pertinentes et les plus récentes pour notre analyse.
Prétraitement et transformation : À ce stade, nous préparons les données pour l'analyse. Il s'agit de normaliser (nettoyer, organiser et structurer) les données afin de s'assurer qu'elles sont prêtes pour un traitement ultérieur.
Analyse des tendances : La majorité de nos découvertes et observations sur les menaces découlent de cet effort. Nous analysons les données traitées pour y déceler des modèles, des tendances et des anomalies. Des techniques telles que l'analyse de séries chronologiques et l'agrégation sont utilisées pour comprendre l'évolution des menaces dans le temps et pour mettre en évidence les cyberattaques importantes sur différentes plateformes.
Réduction : Au cours de cette étape, nous réduisons les données à leurs éléments les plus pertinents, en nous concentrant sur les aspects les plus significatifs et les plus intéressants.
Présentation : La dernière étape consiste à présenter nos résultats. En utilisant les outils de Google Workspace, nous visons à présenter nos idées de manière claire, concise et visuellement attrayante.
Conclusion : En réfléchissant à ce voyage, nous discuterons de l'importance d'avoir les bons outils d'analyse. Nous verrons comment Google Cloud Platform (GCP) offre un environnement idéal pour l'analyse des données relatives aux cybermenaces, en nous permettant de transformer des données brutes en informations utiles.
Exploration : Déterminer les données disponibles
Avant de se lancer dans des analyses sophistiquées, il est nécessaire de se préparer en comprenant le paysage des données que nous avons l'intention d'étudier.
Voici notre approche :
- Identifier les données disponibles : La première étape consiste à déterminer quelles sont les données accessibles. Il peut s'agir de phénomènes liés à des logiciels malveillants, d'anomalies au niveau des terminaux, de signaux liés à l'informatique en nuage, etc. Il est essentiel de confirmer la disponibilité de ces types de données.
- Localiser les magasins de données : Déterminer l'emplacement exact de nos données. Savoir où résident nos données - que ce soit dans des bases de données, des lacs de données ou d'autres solutions de stockage - permet de rationaliser le processus d'analyse qui s'ensuit.
- Accès aux données : Il est important de s'assurer que nous disposons des autorisations ou des références nécessaires pour accéder aux ensembles de données dont nous avons besoin. Dans le cas contraire, il est nécessaire de tenter d'identifier le propriétaire de la ressource et de lui demander l'accès.
- Comprendre le schéma des données : Il est essentiel de comprendre la structure de nos données. La connaissance du schéma permet de planifier efficacement le processus d'analyse.
- Évaluer la qualité des données : Comme pour toute analyse approfondie, l'évaluation de la qualité des données est cruciale. Nous vérifions si les données sont suffisamment segmentées et détaillées pour permettre une analyse significative des tendances.
Cette phase consiste à s'assurer que notre analyse repose sur des bases solides et réalistes. Pour un rapport tel que le Global Threat Report, nous nous appuyons sur des ensembles de données riches et pertinents tels que
- Données sur les signaux de l'informatique en nuage : Il s'agit de données provenant d'alertes globales de gestion des informations et des événements de sécurité (SIEM), en particulier sur les plateformes en nuage telles que AWS, GCP et Azure. Ces données proviennent souvent de règles de détection publiques.
- Données d'alerte sur les points finaux : Données collectées à partir des alertes globales d'Elastic Defend, incorporant une variété de règles de comportement des points d'extrémité publics.
- Données sur les logiciels malveillants : Il s'agit de données provenant d'alertes Elastic Defend globales, enrichies de MalwareScore et de règles YARA publiques.
Chaque ensemble de données est catégorisé et enrichi pour le contexte avec des cadres tels que MITRE ATT& CK, les détails d'Elastic Stack et les informations sur les clients. Les solutions de stockage de Google Cloud Platform, telles que BigQuery et Google Cloud Storage (GCS) buckets, fournissent une infrastructure robuste pour notre analyse.
Il est également important de fixer un seuil de "fraîcheur" des données, en excluant les données ne datant pas de plus de 365 jours pour un rapport annuel, afin de garantir la pertinence et l'exactitude des données.
Enfin, n'oubliez pas de choisir des données qui offrent une perspective impartiale. L'exclusion ou l'inclusion de données internes doit être une décision intentionnelle et stratégique basée sur leur pertinence pour votre visibilité.
En résumé, le choix des bons outils et des bons ensembles de données est fondamental pour créer une analyse complète et perspicace. Chaque choix contribue de manière unique à l'efficacité globale de l'analyse des données, garantissant que les informations finales sont à la fois précieuses et utiles.
Extraction : La première étape de l'analyse des données
Après avoir identifié et localisé les données nécessaires, l'étape suivante de notre parcours analytique consiste à extraire ces données de nos solutions de stockage. Cette phase est cruciale, car elle prépare le terrain pour l'analyse approfondie qui suit.
Outils et techniques d'extraction de données
Divers outils et langages de programmation peuvent être utilisés pour l'extraction de données, notamment Python, R, Go, Jupyter Notebooks et Looker Studio. Chaque outil offre des avantages uniques et le choix dépend des besoins spécifiques de votre analyse.
Dans nos efforts d'extraction de données, nous avons obtenu les meilleurs résultats en combinant BigQuery, Colab Notebooks, buckets et Google Workspace pour extraire les données requises. Les blocs-notes Colab, semblables aux blocs-notes Jupyter, fonctionnent dans l'environnement cloud de Google et s'intègrent parfaitement aux autres services cloud de Google.
BigQuery pour la mise à disposition et l'interrogation des données
Dans le processus d'analyse, une étape clé consiste à "stage" nos ensembles de données à l'aide de BigQuery. Cela implique l'utilisation de requêtes BigQuery pour créer et enregistrer des objets, les rendant ainsi réutilisables et partageables au sein de notre équipe. Pour ce faire, nous utilisons l'instruction CREATE TABLE, qui nous permet de combiner plusieurs ensembles de données, tels que les alertes sur le comportement des terminaux, les données sur les clients et les données sur les règles, en un seul ensemble de données complet.
Cet ensemble de données consolidé est ensuite stocké dans une table BigQuery spécialement conçue à cet effet - dans cet exemple, nous l'appellerons l'ensemble de données "Global Threat Report". Cette approche est appliquée de manière cohérente à différents types de données, y compris les signaux de l'informatique en nuage et les ensembles de données de logiciels malveillants.
La table de données nouvellement créée, par exemple, peut être nommée elastic.global_threat_report.ep_behavior_raw
. Cette convention de dénomination, définie par BigQuery, permet d'organiser et de localiser efficacement les ensembles de données, ce qui est crucial pour les étapes suivantes du processus d'extraction.
Un exemple de requête BigQuery utilisée dans ce processus pourrait ressembler à ceci :
CREATE TABLE elastic.global_threat_report.ep_behavior_raw AS
SELECT * FROM ...
Diagramme pour une requête BigQuery vers un tableau de données exporté
Nous utilisons également l'instruction EXPORT DATA dans BigQuery pour transférer des tables vers d'autres services GCP, comme l'exportation vers des buckets Google Cloud Storage (GCS) au format parquet.
EXPORT DATA
OPTIONS (
uri = 'gs://**/ep_behavior/*.parquet',
format = 'parquet',
overwrite = true
)
AS (
SELECT * FROM `project.global_threat_report.2023_pre_norm_ep_behavior`
)
Colab Notebooks pour le chargement d'ensembles de données échelonnés
Les carnets Colab jouent un rôle essentiel dans l'organisation de notre processus d'extraction de données. Ils facilitent l'accès et la gestion des scripts de données stockés sur des plateformes telles que GitHub et Google Drive.
Pour l'authentification et l'autorisation, nous utilisons les identifiants Google Workspace, ce qui simplifie l'accès à divers services Google Cloud, notamment BigQuery et Colab Notebooks. Voici un exemple de base de la manière dont l'authentification est gérée :
Schéma d'authentification et d'autorisation entre les services Google Cloud
Pour ceux qui ne connaissent pas Jupyter Notebooks ou les dataframes, il est utile de prendre le temps de se familiariser avec ces outils. Ils sont essentiels dans la boîte à outils de tout analyste de données, car ils permettent de gérer efficacement le code, d'analyser les données et de les structurer. La maîtrise de ces outils est la clé d'une analyse efficace des données.
Après avoir créé un carnet de notes dans Google Colab, nous sommes prêts à extraire nos tables personnalisées (telles que project.global_threat_report.ep_behavior_raw). de BigQuery. Ces données sont ensuite chargées dans Pandas Dataframes, une bibliothèque Python qui facilite la manipulation et l'analyse des données. Si le traitement de grands ensembles de données avec Python peut s'avérer difficile, Google Colab fournit des ressources informatiques virtuelles robustes. Si nécessaire, ces ressources peuvent être augmentées via Google Cloud Marketplace ou Google Cloud Console, ce qui permet de traiter efficacement des ensembles de données volumineux.
Bibliothèques Python essentielles pour l'analyse de données
Dans notre processus d'analyse des données, nous utilisons diverses bibliothèques Python, chacune ayant un objectif spécifique :
Bibliothèque | Description |
---|---|
date | Indispensable pour traiter toutes les opérations liées à la date et à l'heure dans vos données. Il vous permet de manipuler et de formater les informations relatives à la date et à l'heure à des fins d'analyse. |
google.auth | Gère l'authentification et les autorisations d'accès, garantissant ainsi un accès sécurisé aux services Google Cloud. C'est un élément clé pour contrôler qui peut accéder à vos données et à vos services. |
google.colab.auth | Fournit une authentification pour l'accès aux services Google Cloud dans les blocs-notes Google Colab, permettant une connexion sécurisée à vos ressources basées sur le cloud. |
google.cloud.bigquery | Un outil pour gérer les grands ensembles de données dans le service BigQuery de Google Cloud. Il permet de traiter et d'analyser efficacement des quantités massives de données. |
google.cloud.storage | Utilisé pour stocker et récupérer des données dans Google Cloud Storage. Il s'agit d'une solution idéale pour gérer divers fichiers de données dans le nuage. |
tache d'huile | Facilite l'interaction avec Google Spreadsheets, ce qui permet de manipuler et d'analyser facilement les données des feuilles de calcul. |
gspread.dataframe.set_with_dataframe | Synchronise les données entre les cadres de données Pandas et les feuilles de calcul Google, ce qui permet un transfert et une mise à jour transparents des données entre ces formats. |
matplotlib.pyplot.plt | Module de la bibliothèque Matplotlib permettant de créer des diagrammes et des graphiques. Il permet de visualiser les données sous forme de graphiques, ce qui facilite la compréhension des schémas et des tendances. |
pandas | Un outil fondamental pour la manipulation et l'analyse de données en Python. Il offre des structures de données et des opérations pour manipuler des tableaux numériques et des séries chronologiques. |
pandas.gbq.to_gbq | Permet le transfert des données des dataframes Pandas directement dans Google BigQuery, rationalisant ainsi le processus de transfert des données vers cette plateforme analytique basée sur le cloud. |
pyarrow.parquet.pq | Permet de stocker et d'extraire efficacement des données au format Parquet, un format de fichier de stockage en colonnes optimisé pour l'utilisation de grands ensembles de données. |
gorille de mer | Une bibliothèque de visualisation Python basée sur Matplotlib qui fournit une interface de haut niveau pour dessiner des graphiques statistiques attrayants et informatifs. |
Ensuite, nous nous authentifions auprès de BigQuery et recevons l'autorisation d'accéder à nos ensembles de données, comme indiqué précédemment. En utilisant les identifiants de Google Workspace, nous pouvons facilement accéder à BigQuery et à d'autres services de Google Cloud. Le processus implique généralement un simple extrait de code pour l'authentification :
from google.colab import auth
from google.cloud import bigquery
auth.authenticate_user()
project_id = "PROJECT_FROM_GCP"
client = bigquery.Client(project=project_id)
Une fois l'authentification terminée, nous pouvons accéder à nos données et les manipuler. L'intégration de Google Colab aux services Google Cloud simplifie ce processus, le rendant efficace et sécurisé.
Organiser les carnets Colab avant l'analyse
Lorsque vous travaillez avec des Notebooks Jupyter, il est préférable d'organiser votre notebook au préalable. Différentes étapes de traitement et de manipulation des données seront nécessaires, et le fait de rester organisé vous aidera à créer un processus complet et reproductible.
Dans nos carnets, nous utilisons les en-têtes Jupyter Notebook pour organiser le code de manière systématique. Cette structure permet de compartimenter clairement les données et de créer des sections pliables, ce qui est particulièrement utile lorsqu'il s'agit d'opérations de données complexes nécessitant plusieurs étapes. Cette organisation méthodique permet de naviguer efficacement dans le carnet, en veillant à ce que chaque étape du processus d'extraction et d'analyse des données soit facilement accessible et gérable.
En outre, si le flux de travail dans un carnet peut sembler linéaire, il est souvent plus dynamique. Les analystes de données sont souvent multitâches, passant d'une section à l'autre en fonction des données ou des résultats qu'ils rencontrent. En outre, les nouvelles connaissances acquises au cours d'une étape peuvent influencer le processus d'une autre étape, ce qui entraîne des allers-retours avant de terminer le carnet. |
Extraction de nos ensembles de données BigQuery dans des cadres de données
Après avoir établi la structure de notre notebook et réussi à nous authentifier auprès de BigQuery, notre prochaine étape consiste à récupérer les ensembles de données nécessaires. Ce processus jette les bases du reste du rapport, car les informations provenant de ces sources constitueront la base de notre analyse, tout comme la sélection des éléments clés nécessaires à une étude approfondie.
Voici un exemple de la manière dont nous pourrions récupérer des données à partir de BigQuery :
import datetime
current_year = datetime.datetime.now().year
reb_dataset_id = f'project.global_threat_report.{current_year}_raw_ep_behavior'
reb_table = client.list_rows(reb_dataset_id)
reb_df = reb_table.to_dataframe()
Cet extrait illustre un processus typique de recherche de données. Nous commençons par définir l'ensemble de données qui nous intéresse (avec le Global Threat Report, project.global_threat_report.ep_behavior_raw
pour l'année en cours). Ensuite, nous utilisons une requête BigQuery pour sélectionner les données de ce jeu de données et les charger dans un DataFrame Pandas. Ce DataFrame servira de base aux étapes suivantes de l'analyse des données.
Extrait de Colab Notebook pour l'extraction de données de BigQuery dans un cadre de données Pandas
Ce processus marque la fin de la phase d'extraction. Nous avons réussi à naviguer dans BigQuery pour sélectionner et récupérer les ensembles de données nécessaires et les charger dans nos carnets de notes dans des cadres de données. La phase d'extraction est cruciale, car elle consiste non seulement à collecter les données, mais aussi à jeter les bases d'une analyse plus approfondie. Il s'agit de la première étape d'un voyage de découverte plus vaste, menant à la phase de transformation, au cours de laquelle nous découvrirons des informations plus détaillées à partir des données.
En résumé, cette partie de notre voyage dans les données ne se limite pas à la collecte d'ensembles de données ; il s'agit de les préparer structurellement à l'analyse approfondie qui s'ensuivra. Cette approche méticuleuse de l'organisation et de l'exécution de la phase d'extraction prépare le terrain pour les connaissances transformatrices que nous souhaitons obtenir au cours des étapes suivantes de notre analyse des données.
Prétraitement et transformation : La phase critique de l'analyse des données
Le passage des données brutes aux informations exploitables implique une série d'étapes cruciales dans le traitement des données. Après avoir extrait les données, nous nous attachons à les affiner en vue de leur analyse. Les ensembles de données de cybersécurité comprennent souvent diverses formes de bruit, telles que des faux positifs et des anomalies, qui doivent être traitées pour garantir une analyse précise et pertinente.
Les étapes clés du prétraitement et de la transformation des données :
- Nettoyage des données : Cette étape consiste à remplir les valeurs NULL, à corriger les désalignements de données et à valider les types de données afin de garantir l'intégrité de l'ensemble de données.
- Enrichissement des données : Au cours de cette étape, un contexte supplémentaire est ajouté à l'ensemble de données. Par exemple, l'intégration de données tierces, comme la réputation de logiciels malveillants provenant de sources telles que VirusTotal, améliore la profondeur de l'analyse.
- Normalisation : Ce processus permet de normaliser les données afin de garantir leur cohérence, ce qui est particulièrement important pour des ensembles de données variés tels que les alertes de logiciels malveillants sur les terminaux.
- Détection des anomalies : L'identification et la rectification des valeurs aberrantes ou des faux positifs sont essentielles pour maintenir la précision de l'ensemble de données.
- Extraction de caractéristiques : Le processus d'identification des points de données significatifs et cohérents qui peuvent être extraits à des fins d'analyse.
L'art du nettoyage des données
Le nettoyage des données est une étape fondamentale dans la préparation des ensembles de données en vue d'une analyse approfondie, en particulier dans le domaine de la cybersécurité. Ce processus implique une série de contrôles techniques visant à garantir l'intégrité et la fiabilité des données. Voici les étapes spécifiques :
-
Mise en correspondance avec le cadre MITRE ATT&CK : Vérifiez que toutes les règles de détection et de réponse de l'ensemble de données sont correctement mises en correspondance avec les tactiques et techniques correspondantes du cadre MITRE ATT&CK. Ce contrôle comprend la recherche de valeurs NULL ou d'incohérences dans la manière dont les données s'alignent sur le cadre.
-
Validation du type de données : Confirmez que les types de données dans l'ensemble de données sont appropriés et cohérents. Par exemple, les horodateurs doivent être dans un format de date standardisé. Cette étape peut consister à convertir des chaînes de caractères en objets temporels ou à vérifier que les valeurs numériques sont dans le bon format.
-
L'exhaustivité des données essentielles : Veillez à ce qu'aucune information essentielle ne manque dans l'ensemble de données. Il s'agit notamment de vérifier la présence d'éléments essentiels tels que les hachages SHA256 ou les noms d'exécutables dans les journaux de comportement des terminaux. L'absence de ces données peut conduire à une analyse incomplète ou biaisée.
-
Normalisation des formats de données : Évaluer et mettre en œuvre la normalisation des formats de données dans l'ensemble des données afin de garantir l'uniformité. Il peut s'agir de normaliser les formats de texte, d'assurer une capitalisation cohérente ou de standardiser les représentations de la date et de l'heure.
-
Identification des entrées en double : Identifiez et supprimez les entrées en double en examinant les identifiants uniques tels que les ID d'agents XDR ou les ID de clusters. Ce processus peut impliquer l'utilisation de fonctions pour détecter et supprimer les doublons, garantissant ainsi l'unicité de chaque entrée de données.
-
Exclusion des données internes non pertinentes : Localisez et supprimez toutes les données internes qui auraient pu être incluses par inadvertance dans l'ensemble de données. Cette étape est cruciale pour éviter que des biais internes ou des informations non pertinentes n'affectent l'analyse.
Il est important de noter que le nettoyage des données est un effort continu tout au long de notre flux de travail. Au fur et à mesure que nous continuons à éplucher les couches de nos données et à les manipuler pour en tirer diverses informations, il est probable que nous identifions d'autres changements.
Utilisation de Pandas pour le nettoyage des données
La bibliothèque Pandas de Python offre plusieurs fonctionnalités particulièrement utiles pour le nettoyage des données dans le contexte de la cybersécurité. Voici quelques-unes de ces méthodes :
DataFrame.isnull()
ouDataFrame.notnull()
pour identifier les valeurs manquantes.DataFrame.drop_duplicates()
pour supprimer les lignes en double.- Méthodes de conversion des types de données telles que
pd.to_datetime()
pour la normalisation des formats d'horodatage. - Utilisation de l'indexation booléenne pour filtrer les données non pertinentes sur la base de critères spécifiques.
Une compréhension approfondie de l'ensemble des données est essentielle pour déterminer les bonnes méthodes de nettoyage. Il peut s'avérer nécessaire d'explorer l'ensemble des données au préalable afin d'identifier les domaines spécifiques nécessitant un nettoyage ou une transformation. Vous trouverez d'autres méthodes et flux de travail utiles dans ce blog Real Python.
Extraction et enrichissement des caractéristiques
L'extraction et l'enrichissement des caractéristiques sont des étapes essentielles de l'analyse des données, en particulier dans le contexte de la cybersécurité. Ces processus impliquent la transformation et l'enrichissement de l'ensemble de données afin d'en améliorer l'utilité pour l'analyse.
- Créer de nouvelles données à partir de données existantes : Il s'agit de modifier ou d'utiliser des données existantes pour ajouter des colonnes ou des lignes supplémentaires.
- Ajouter de nouvelles données provenant d'une tierce partie : Ici, nous utilisons les données existantes comme référence de requête pour les API RESTful tierces qui répondent avec des données supplémentaires que nous pouvons ajouter aux ensembles de données.
Extraction des caractéristiques
Prenons un exemple concret. Imaginons que nous disposions d'une multitude de signatures YARA accessibles au public, qu'Elastic partage avec sa communauté. Ces signatures déclenchent certaines alertes de logiciels malveillants dans notre ensemble de données. Une convention de dénomination cohérente a été observée sur la base du nom de la règle qui, bien entendu, apparaît dans les données brutes : OperationsSystem_MalwareCategory_MalwareFamily
. Ces noms peuvent être déconstruits pour fournir des informations plus spécifiques. Grâce à Pandas, nous pouvons découper les données de manière experte. Pour ceux qui préfèrent effectuer cette opération pendant la phase de mise à disposition du jeu de données avec BigQuery, la combinaison des clauses SPLIT et OFFSET peut donner des résultats similaires :
df[['OperatingSystem', 'MalwareCategory', 'MalwareFamily']] = df['yara_rule_name'].str.split('_', expand=True)
Extraction de caractéristiques avec nos données YARA
Il existe d'autres approches, méthodes et processus pour l'extraction de caractéristiques dans l'analyse de données. Nous vous recommandons de consulter les souhaits et les besoins de vos parties prenantes et d'explorer vos données pour vous aider à déterminer ce qui est nécessaire à l'extraction et comment.
Enrichissement des données
L'enrichissement des données permet d'améliorer la profondeur et le contexte des ensembles de données sur la cybersécurité. Une approche efficace consiste à intégrer des sources de données externes afin de fournir des perspectives supplémentaires sur les données existantes. Cela peut s'avérer particulièrement utile pour comprendre et interpréter les alertes en matière de cybersécurité.
Exemple d'enrichissement des données : Intégration des données de réputation de VirusTotal Une méthode courante d'enrichissement des données dans le domaine de la cybersécurité consiste à intégrer les scores de réputation de services externes de renseignement sur les menaces tels que VirusTotal (VT). Ce processus comprend généralement
- Récupération des données de réputation : À l'aide d'une clé API de VT, nous pouvons demander des données de réputation basées sur des identifiants uniques dans notre ensemble de données, tels que les hachages SHA256 des binaires.
import requests
def get_reputation(sha256, API_KEY, URL):
params = {'apikey': API_KEY, 'resource': sha256}
response = requests.get(URL, params=params)
json_response = response.json()
if json_response.get("response_code") == 1:
positives = json_response.get("positives", 0)
return classify_positives(positives)
else:
return "unknown"
Dans cette fonction, classify_positives
est une fonction personnalisée qui classe la réputation en fonction du nombre de moteurs antivirus qui ont signalé le fichier comme étant malveillant.
- Ajout de données de réputation à l'ensemble de données : Les données de réputation extraites de VirusTotal sont ensuite intégrées à l'ensemble de données existant. Pour ce faire, la fonction
get_reputation
est appliquée à chaque entrée pertinente du DataFrame.
df['reputation'] = df['sha256'].apply(lambda x: get_reputation(x, API_KEY, URL))
Ici, une nouvelle colonne nommée reputation
est ajoutée à la base de données, fournissant une couche supplémentaire d'informations sur chaque binaire en fonction de son taux de détection dans VirusTotal.
Cette méthode d'enrichissement des données n'est qu'une des nombreuses options disponibles pour améliorer les données sur les menaces de cybersécurité. En utilisant des fonctions d'aide robustes et en puisant dans des référentiels de données externes, les analystes peuvent enrichir considérablement leurs ensembles de données. Cet enrichissement permet une compréhension plus complète des données, ce qui conduit à une analyse plus informée et plus nuancée. Les techniques présentées ici font partie d'une gamme plus large de méthodes avancées de manipulation des données qui peuvent affiner l'analyse des données de cybersécurité.
Normalisation
La normalisation peut s'avérer nécessaire pour tirer le meilleur parti de vos données, en particulier lorsque vous traitez des ensembles de données variés dans le domaine de la cybersécurité, tels que les alertes de points d'extrémité et les notifications SIEM en nuage.
Comprendre la normalisation : La normalisation consiste essentiellement à ajuster des valeurs mesurées sur des échelles différentes à une échelle commune, à s'assurer qu'elles sont représentées de manière proportionnelle et à réduire la redondance. Dans le contexte de la cybersécurité, cela signifie représenter les événements ou les alertes d'une manière qui n'amplifie pas ou ne réduit pas involontairement leur importance.
Prenons l'exemple de notre ensemble de données sur les logiciels malveillants. Lorsque nous analysons des tendances, par exemple des infections basées sur des familles ou des catégories de logiciels malveillants, nous cherchons à obtenir une représentation précise. Cependant, une seule infection par un logiciel malveillant sur un terminal peut générer plusieurs alertes en fonction du système XDR (Extended Detection and Response). Si l'on n'y prend garde, cela pourrait fausser considérablement notre compréhension du paysage des menaces. Pour y remédier, nous considérons les agents Elastic, qui sont déployés dans le cadre de la solution XDR. Chaque point d'extrémité possède un agent unique, représentant une seule instance d'infection si un logiciel malveillant est détecté. Par conséquent, pour normaliser cet ensemble de données, nous devrions "aplatir" ou l'ajuster sur la base des identifiants uniques des agents. Cela signifie que, pour notre analyse, nous prendrons en compte le nombre d'identifiants uniques d'agents affectés par une famille ou une catégorie spécifique de logiciels malveillants plutôt que le nombre brut d'alertes.
Exemple de visualisation de la normalisation des alertes de logiciels malveillants par des agents uniques
Comme le montre l'image ci-dessus, si nous choisissons de ne pas normaliser les données sur les logiciels malveillants en vue de l'analyse des tendances, nos principaux résultats présenteront des informations inexactes. Cette inexactitude peut provenir d'une pléthore d'incohérences dans les données, telles que des règles génériques YARA, des opérations programmatiques qui ont été signalées à plusieurs reprises sur un seul point de terminaison, et bien d'autres encore.
Diversifier l'approche : En revanche, lorsque nous traitons des alertes relatives au comportement des terminaux ou des alertes liées au cloud (provenant de plateformes telles que AWS, GCP, Azure, Google Workspace et O365), notre approche de normalisation peut être différente. Ces ensembles de données peuvent avoir leurs propres nuances et ne pas nécessiter la même technique d'aplatissement "" que celle utilisée pour les alertes de logiciels malveillants.
Conceptualiser les options de normalisation : Rappelez-vous que l'objectif de la normalisation est de réduire la redondance de vos données. Veillez à ce que vos opérations soient aussi atomiques que possible, au cas où vous auriez besoin d'y revenir et de les modifier ultérieurement. Cela est particulièrement vrai lorsque vous effectuez à la fois une normalisation et une standardisation. Il est parfois difficile de les séparer et vous devrez peut-être faire des allers-retours entre les deux. Les analystes disposent d'un grand nombre d'options à cet égard. De l'échelle Min-Max, où les valeurs sont décalées et remises à l'échelle pour se situer entre 0 et 1, à la normalisation Z-score (ou standardisation), où les valeurs sont centrées autour de zéro et des écarts-types par rapport à la moyenne. Le choix de la technique dépend de la nature des données et des exigences spécifiques de l'analyse.
Par essence, la normalisation garantit que notre analyse de la cybersécurité repose sur des règles du jeu équitables, donnant aux parties prenantes une vision précise de l'environnement de la menace sans distorsions indues. Il s'agit d'une étape essentielle avant l'analyse des tendances.
Détection des anomalies : Affiner le processus d'analyse des données
Dans le domaine de l'analyse de la cybersécurité, il n'existe pas d'approche unique de la détection des anomalies. Le processus dépend fortement des caractéristiques spécifiques des données en question. L'objectif principal est d'identifier et de traiter les valeurs aberrantes susceptibles de fausser l'analyse. Cela nécessite une méthodologie dynamique et adaptable, où la compréhension des nuances de l'ensemble des données est cruciale.
La détection des anomalies dans le domaine de la cybersécurité implique l'exploration de diverses techniques et méthodologies, chacune adaptée à différents types d'irrégularités dans les données. La stratégie ne consiste pas à appliquer rigoureusement une seule méthode, mais plutôt à utiliser une compréhension approfondie des données pour sélectionner la technique la plus appropriée à chaque situation. L'accent est mis sur la flexibilité et l'adaptabilité, en veillant à ce que l'approche choisie fournisse les informations les plus claires et les plus précises sur les données.
Méthodes statistiques - L'épine dorsale de l'analyse :
L'analyse statistique est toujours une approche facultative de la détection des anomalies, en particulier pour les données de cybersécurité. En comprenant la distribution inhérente et les tendances centrales de nos données, nous pouvons mettre en évidence les valeurs qui s'écartent de la norme. Une méthode simple mais puissante, le score Z, permet d'évaluer la distance d'un point de données par rapport à la moyenne en termes d'écarts types.
import numpy as np
# Derive Z-scores for data points in a feature
z_scores = np.abs((df['mitre_technique'] - df['mitre_technique'].mean()) / df['mitre_technique'].std())
outliers = df[z_scores > 3] # Conventionally, a Z-score above 3 signals an outlier
Pourquoi cela est-il important ? Cette méthode nous permet d'évaluer quantitativement l'importance de l'écart d'un point de données. Ces valeurs aberrantes peuvent fortement fausser les mesures agrégées telles que la moyenne ou même influencer négativement la formation des modèles d'apprentissage automatique. N'oubliez pas que les valeurs aberrantes ne doivent pas toujours être supprimées ; tout est question de contexte ! Parfois, vous pouvez même rechercher spécifiquement les valeurs aberrantes.
Bibliothèque clé : Bien que nous ayons utilisé NumPy ci-dessus, SciPy peut également être utilisé pour des opérations statistiques complexes.
Agrégations et tris - démêler les couches :
Les données se présentent souvent sous forme de couches. En commençant par une vue d'ensemble et en plongeant progressivement dans les détails, nous pouvons localiser les incohérences ou les anomalies. Lorsque nous regroupons les données par catégories, comme la tactique MITRE ATT&CK, et que nous les approfondissons, nous découvrons progressivement les détails les plus fins et les anomalies potentielles, en passant de la technique à la logique des règles et au contexte de l'alerte.
# Aggregating by tactics first
tactic_agg = df.groupby('mitre_tactic').size().sort_values(ascending=False)
À partir de là, nous pouvons identifier les tactiques les plus courantes et choisir celle qui compte le plus grand nombre de participants. Nous filtrons ensuite nos données pour cette tactique afin d'identifier la technique la plus courante associée à la tactique la plus courante. Les techniques sont souvent plus spécifiques que les tactiques et apportent donc plus d'explications sur ce que nous pouvons observer. En suivant la même approche, nous pouvons ensuite filtrer cette technique spécifique, l'agréger par règle et examiner cette règle de détection pour plus de contexte. L'objectif est ici de trouver des règles "bruyantes" susceptibles de fausser notre ensemble de données et donc de supprimer les alertes correspondantes. Ce cycle peut être répété jusqu'à ce que les valeurs aberrantes soient éliminées et que les pourcentages semblent plus précis.
Pourquoi c'est important : Cette approche d'analyse à plusieurs niveaux permet de ne négliger aucune piste. En naviguant du général au particulier, nous éliminons systématiquement les incohérences.
Bibliothèque clé : Pandas reste le héros, équipé pour gérer les tâches de manipulation de données avec finesse.
Visualisation - La lentille de la clarté :
Parfois, l'œil humain, lorsqu'il est aidé par la bonne représentation visuelle, peut détecter intuitivement ce que les algorithmes les plus complexes pourraient manquer. Un diagramme en boîte, par exemple, montre non seulement la tendance centrale et la dispersion des données, mais marque également les valeurs aberrantes.
import seaborn as sns
import matplotlib.pyplot as plt
plt.figure(figsize=(12, 8))
sns.boxplot(x='Malware Family', y='Malware Score', data=df)
plt.title('Distribution of Malware Scores by Family')
plt.show()
Exemple de visualisation des scores de distribution des logiciels malveillants par famille à partir d'un ensemble de données.
Pourquoi c'est important : La visualisation transforme des données abstraites en informations tangibles. Il offre une perspective à la fois holistique et granulaire, en fonction des besoins.
Bibliothèque clé : Seaborn, construit sur Matplotlib, excelle à transformer les données en histoires visuelles.
Apprentissage automatique - La garde avancée :
Lorsque les méthodes traditionnelles ne suffisent pas, l'apprentissage automatique intervient, offrant une vision prédictive des anomalies. Si de nombreux algorithmes sont conçus pour classer des modèles connus, certains, comme les autoencodeurs de l'apprentissage profond, apprennent à recréer des données "normales", tout écart étant considéré comme une anomalie.
Pourquoi cela est-il important ? À mesure que la complexité des données augmente, les limites de ce qui constitue une anomalie deviennent plus floues. L'apprentissage automatique offre des solutions adaptatives qui évoluent avec les données.
Bibliothèques clés : Scikit-learn est un trésor de techniques d'apprentissage automatique classiques et conviviales, tandis que PyTorch apporte la puissance de l'apprentissage profond.
Le perfectionnement de la détection des anomalies dans l'analyse des données s'apparente à l'affinement d'une compétence complexe par la pratique et l'itération. Le processus implique souvent des essais et des erreurs, chaque itération permettant à l'analyste de mieux se familiariser avec l'ensemble des données. Cette compréhension progressive est essentielle pour garantir que l'analyse finale est à la fois solide et pertinente. Dans l'analyse des données, le parcours d'exploration et d'affinage est aussi précieux que le résultat final lui-même.
Avant de procéder à une analyse approfondie des tendances, il est très important de s'assurer que les données ont été soigneusement prétraitées et transformées. Tout comme la précision et la fiabilité sont essentielles dans toute tâche méticuleuse, elles le sont tout autant dans l'analyse des données. Les étapes de nettoyage, de normalisation, d'enrichissement et de suppression des anomalies constituent le fondement de l'obtention d'informations utiles. Sans ces préparatifs minutieux, l'analyse pourrait être légèrement inexacte ou très trompeuse. Ce n'est que lorsque les données sont correctement affinées et exemptes de distorsions qu'elles peuvent révéler leur véritable valeur, ce qui permet d'obtenir des informations fiables et exploitables dans le cadre de l'analyse des tendances.
Analyse des tendances : Révéler des schémas dans les données
Dans le domaine dynamique de la cybersécurité, où les acteurs de la menace font évoluer en permanence leurs tactiques, techniques et procédures (TTP), il est essentiel de garder une longueur d'avance sur les menaces émergentes. L'analyse des tendances est un outil essentiel à cet égard, car elle permet d'identifier et de comprendre les schémas et les comportements des cybermenaces au fil du temps.
En utilisant le cadre MITRE ATT&CK, les professionnels de la cybersécurité disposent d'une approche structurée et normalisée pour analyser et classer ces menaces en constante évolution. Ce cadre contribue à l'identification systématique de modèles dans les méthodes d'attaque, ce qui permet aux défenseurs d'anticiper les changements de comportement des adversaires et d'y répondre efficacement.
L'analyse des tendances, dans l'optique du cadre MITRE ATT&CK, transforme la télémétrie brute de la cybersécurité en renseignements exploitables. Il permet aux analystes de suivre l'évolution des stratégies d'attaque et d'adapter leurs mécanismes de défense en conséquence, assurant ainsi une position proactive dans la gestion de la cybersécurité.
Commençons par une vue d'ensemble : Agrégation et tri
Il est essentiel de commencer notre analyse par une vue d'ensemble. Cette perspective panoramique nous permet d'abord d'identifier les tactiques les plus générales en jeu avant de nous pencher sur les techniques les plus granulaires et les règles de détection sous-jacentes.
Principales tactiques : En regroupant nos données sur la base des tactiques MITRE ATT&CK, nous pouvons discerner les stratégies globales vers lesquelles les adversaires se tournent. Cela permet de dresser un tableau de leurs principaux objectifs, qu'il s'agisse de l'accès initial, de l'exécution ou de l'exfiltration.
top_tactics = df.groupby('mitre_tactic').size()
.sort_values(ascending=False)
Zoom sur les techniques : Une fois que nous avons identifié une tactique importante, nous pouvons concentrer notre attention sur les techniques liées à cette tactique. Cela révèle le modus operandi spécifique des adversaires.
chosen_tactic = 'Execution'
techniques_under_tactic = df[df['mitre_tactic'] == chosen_tactic]
top_techniques = techniques_under_tactic.groupby('mitre_technique').size()
.sort_values(ascending=False)
Règles de détection et logique : Après avoir mis l'accent sur une technique spécifique, il est temps d'aller plus loin et d'identifier les règles de détection qui ont déclenché les alertes. Cela permet non seulement de voir ce qui a été détecté, mais aussi, en examinant la logique de détection, de comprendre les comportements et les modèles précis qui ont été signalés.
chosen_technique = 'Scripting'
rules_for_technique = techniques_under_tactic[techniques_under_tactic['mitre_technique'] == chosen_technique]
top_rules = rules_for_technique
.groupby('detection_rule').size().sort_values(ascending=False)
Cette approche hiérarchique, en cascade, s'apparente à l'épluchage d'un oignon. Avec chaque couche, nous exposons des détails plus complexes, en affinant notre perspective et en affinant notre vision des choses.
Le pouvoir du temps : L'analyse des séries chronologiques
Dans le domaine de la cybersécurité, le temps n'est pas seulement une mesure, c'est un récit. Les horodatages, souvent négligés, sont des mines d'or d'informations. L'analyse des séries chronologiques nous permet de tracer des événements dans le temps, révélant des schémas, des pics ou des accalmies qui peuvent indiquer des campagnes adverses, des vagues d'attaques spécifiques ou des périodes d'inactivité.
Par exemple, la représentation graphique des alertes de logiciels malveillants au fil du temps peut révéler les heures d'ouverture d'un adversaire ou mettre en évidence une attaque synchronisée à vecteurs multiples :
import matplotlib.pyplot as plt
# Extract and plot endpoint alerts over time
df.set_index('timestamp')['endpoint_alert'].resample('D').count().plot()
plt.title('Endpoint Malware Alerts Over Time')
plt.xlabel('Time')
plt.ylabel('Alert Count')
plt.show()
L'analyse des séries chronologiques ne se contente pas de mettre en évidence "quand", mais permet souvent de comprendre "pourquoi" certains pics ou anomalies. Il permet d'établir une corrélation entre les événements externes (comme la publication d'un nouvel exploit) et les tendances des données internes.
Analyse de corrélation
Comprendre les relations entre différents ensembles de données peut apporter des informations précieuses. Par exemple, un pic dans un type d'alerte peut être corrélé à un autre type d'activité dans le système, mettant en lumière des campagnes d'attaques en plusieurs étapes ou des stratégies de détournement.
# Finding correlation between an increase in login attempts and data exfiltration activities
correlation_value = df['login_attempts'].corr(df['data_exfil_activity'])
Cette analyse, avec l'aide de pandas corr, peut aider à discerner si plusieurs activités apparemment isolées font partie d'une chaîne d'attaque coordonnée.
La corrélation n'a pas non plus besoin d'être basée sur des mesures. Lors de l'analyse des menaces, il est facile de trouver de la valeur et de nouvelles perspectives en comparant les anciens résultats aux nouveaux.
Apprentissage automatique & détection des anomalies
Compte tenu du volume important de données, l'analyse manuelle n'est plus possible. L'apprentissage automatique peut aider à identifier des modèles et des anomalies qui pourraient échapper à l'œil humain. Des algorithmes tels que Isolation Forest ou K-nearest neighbor(KNN) sont couramment utilisés pour repérer les écarts ou les grappes de données liées entre elles.
from sklearn.ensemble import IsolationForest
# Assuming 'feature_set' contains relevant metrics for analysis
clf = IsolationForest(contamination=0.05)
anomalies = clf.fit_predict(feature_set)
Dans ce cas, la variable "anomalies" signale les points de données qui s'écartent de la norme, ce qui aide les analystes à repérer rapidement les comportements inhabituels.
Modèles comportementaux & Analyse des données des points d'extrémité
L'analyse des données comportementales des terminaux collectées à partir des règles de détection nous permet de mettre au jour des schémas et des tendances globales qui peuvent être révélateurs de paysages de menaces plus larges, de cybercampagnes ou de l'évolution des TTP des attaquants.
Modèles de progression tactique : En surveillant la séquence des comportements détectés au fil du temps, nous pouvons repérer des schémas dans la manière dont les adversaires progressent dans leur chaîne d'attaque. Par exemple, s'il existe une tendance constante selon laquelle les techniques d'accès initial sont suivies d'une exécution puis d'un mouvement latéral, cela indique que l'attaquant utilise un schéma de jeu commun.
Analyse des tendances de la ligne de commande : Même au sein d'arguments de ligne de commande malveillants, certains modèles ou séquences peuvent émerger. La surveillance des arguments malveillants les plus fréquemment détectés peut donner des indications sur les outils ou les scripts d'attaque privilégiés.
Exemple :
# Most frequently detected malicious command lines
top_malicious_commands = df.groupby('malicious_command_line').size()
.sort_values(ascending=False).head(10)
Tendances en matière d'interaction des processus : Si les relations entre les processus parent-enfant peuvent être malveillantes, le repérage des tendances dans ces interactions peut indiquer l'existence de campagnes de logiciels malveillants à grande échelle ou de TTP d'attaquants. Par exemple, si un large sous-ensemble de points d'extrémité présente la même interaction inhabituelle de processus, cela peut suggérer une menace commune.
Modèles de comportement temporel : Comme pour d'autres types de données, l'aspect temporel des données comportementales des terminaux peut être instructif. L'analyse de la fréquence et de l'heure de certains comportements malveillants peut indiquer les heures d'activité des attaquants ou la durée de leurs campagnes.
Exemple :
# Analyzing frequency of a specific malicious behavior over time
monthly_data = df.pivot_table(index='timestamp', columns='tactic', values='count', aggfunc='sum').resample('M').sum()
ax = monthly_data[['execution', 'defense-evasion']].plot(kind='bar', stacked=False, figsize=(12,6))
plt.title("Frequency of 'execution' and 'defense-evasion' Tactics Over Time")
plt.ylabel("Count")
ax.set_xticklabels([x.strftime('%B-%Y') for x in monthly_data.index])
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
Note : Cette image est tirée d'un exemple de données et non du Global Threat Report.
En regroupant et en analysant les données comportementales des terminaux à un niveau macro, nous ne nous contentons pas d'identifier des menaces isolées, mais nous pouvons repérer des vagues, des tendances et des modèles émergents. Cette perspective plus large permet aux équipes de cybersécurité d'anticiper, de se préparer et de contrer plus efficacement les cybermenaces à grande échelle.
Bien qu'il s'agisse de quelques exemples de la manière de procéder à une analyse des tendances, il n'y a pas de bonne ou de mauvaise approche. Chaque analyste a ses propres préférences ou un ensemble de questions qu'il souhaite poser ou que les parties prenantes souhaitent poser. Voici quelques questions ou interrogations supplémentaires que les analystes peuvent se poser sur les données relatives à la cybersécurité lorsqu'ils procèdent à une analyse des tendances.
- Quelles sont les trois principales tactiques utilisées par les adversaires ce trimestre ?
- Quelles sont les règles de détection qui se déclenchent le plus, et y a-t-il un fil conducteur ?
- Existe-t-il des schémas temporels dans les alertes relatives aux points finaux, qui pourraient indiquer le fuseau horaire d'un adversaire ?
- Comment les alertes sur les nuages ont-elles évolué avec la migration d'un plus grand nombre de services vers les nuages ?
- Quelles sont les familles de logiciels malveillants les plus répandues et quelle pourrait en être la cause ?
- Les modèles de données suggèrent-ils une certaine saisonnalité, comme une augmentation des activités vers la fin de l'année ?
- Existe-t-il des corrélations entre les événements extérieurs et les pics d'activité cybernétique ?
- En quoi les données des jours de semaine diffèrent-elles de celles des week-ends en termes d'alertes et d'attaques ?
- Quels sont les actifs organisationnels les plus ciblés et leurs défenses sont-elles à jour ?
- Existe-t-il des signes de menaces internes ou de comportements inhabituels parmi les comptes à privilèges ?
L'analyse des tendances en matière de cybersécurité est un processus dynamique. Bien que nous ayons défini quelques techniques et questions fondamentales, il existe une myriade de façons d'aborder ce vaste domaine. Chaque analyste peut avoir ses préférences, ses outils et ses méthodologies, et c'est très bien ainsi. L'essentiel réside dans l'évolution et l'adaptation permanentes de notre approche, tout en étant conscient de l'évolution constante du paysage des menaces pour chaque écosystème exposé aux menaces.
Réduction : Rationalisation pour plus de clarté
Après avoir franchi les premières étapes de l'analyse des données, nous entrons dans la phase suivante : la réduction. Cette étape consiste à affiner et à concentrer nos données globales dans un format plus digeste et plus ciblé.
Récapitulation du voyage d'analyse jusqu'à présent :
- Extraction : La phase initiale a consisté à configurer notre environnement Google Cloud et à sélectionner des ensembles de données pertinents pour notre analyse.
- Prétraitement et transformation : À ce stade, les données ont été extraites, traitées et transformées dans nos carnets Colab, afin de les préparer à une analyse détaillée.
- Analyse des tendances : Cette phase a permis d'obtenir des informations approfondies sur les tactiques, les techniques et les logiciels malveillants utilisés dans le cadre des cyberattaques, ce qui constitue le cœur de notre analyse.
Si les données détaillées de nos carnets Colab sont exhaustives et instructives pour un analyste, elles peuvent s'avérer trop complexes pour un public plus large. Par conséquent, la phase de réduction se concentre sur la distillation de ces informations sous une forme plus concise et plus accessible. L'objectif est de rendre les résultats clairs et compréhensibles, afin qu'ils puissent être communiqués et utilisés efficacement par les différents services ou parties prenantes.
Sélectionner et agréger des points de données clés
Pour communiquer efficacement nos résultats, nous devons adapter la présentation aux besoins du public. Toutes les parties prenantes n'ont pas besoin de l'intégralité des données collectées ; beaucoup préfèrent une version résumée qui met en évidence les points les plus utiles. C'est là que la sélection et l'agrégation des données entrent en jeu, en se concentrant sur les éléments les plus importants et en les présentant dans un format accessible.
Voici un exemple d'utilisation de Pandas pour agréger et condenser un ensemble de données, en se concentrant sur les aspects clés du comportement des terminaux :
required_endpoint_behavior_cols = ['rule_name','host_os_type','tactic_name','technique_name']
reduced_behavior_df = df.groupby(required_endpoint_behavior_cols).size()
.reset_index(name='count')
.sort_values(by="count", ascending=False)
.reset_index(drop=True)
columns = {
'rule_name': 'Rule Name',
'host_os_type': 'Host OS Type',
'tactic_name': 'Tactic',
'technique_name': 'Technique',
'count': 'Alerts'
}
reduced_behavior_df = reduced_behavior_df.rename(columns=columns)
Un aspect remarquable de ce code et de ce processus est la flexibilité qu'il offre. Par exemple, nous pouvons regrouper nos données en fonction de différents points de données adaptés à nos besoins. Vous souhaitez identifier les tactiques les plus utilisées par les adversaires ? Groupe par la tactique MITRE ATT&CK. Vous souhaitez faire la lumière sur la dissimulation de binaires malveillants ? Revoir l'extraction pour ajouter des champs Elastic Common Schema (ECS) tels que le chemin d'accès au fichier, filtrer sur Defense Evasion et agréger pour révéler les chemins d'accès les plus courants. Cette approche nous permet de créer des ensembles de données qui sont à la fois instructifs et pas trop riches, adaptés aux parties prenantes qui souhaitent comprendre les origines de notre analyse.
Ce processus consiste à regrouper les données par catégories pertinentes telles que le nom de la règle, le type de système d'exploitation hôte et les tactiques et techniques MITRE ATT&CK, puis à compter les occurrences. Cette méthode permet d'identifier les modèles et les tendances les plus répandus dans les données.
Exemple de diagramme d'agrégation de données pour obtenir un ensemble de données réduit
Exportation de données réduites vers Google Sheets pour l'accessibilité
Les données réduites, désormais stockées en mémoire sous forme de cadre de données, sont prêtes à être exportées. Nous utilisons Google Sheets comme plateforme pour partager ces informations en raison de sa grande accessibilité et de son interface conviviale. Le processus d'exportation de données vers Google Sheets est simple et efficace, grâce à l'intégration avec les services Google Cloud.
Voici un exemple de la manière dont les données peuvent être téléchargées vers Google Sheets à l'aide de Python à partir de notre cahier Colab :
auth.authenticate_user()
credentials, project = google.auth.default()
gc = gspread.authorize(credentials)
workbook = gc.open_by_key("SHEET_ID")
behavior_sheet_name = 'NAME_OF_TARGET_SHEET'
endpoint_behavior_worksheet = workbook.worksheet(behavior_sheet_name)
set_with_dataframe(endpoint_behavior_worksheet, reduced_behavior_df)
Avec quelques lignes de code simples, nous avons transféré nos résultats d'analyse de données dans Google Sheets. Cette approche est largement utilisée en raison de son accessibilité et de sa facilité d'utilisation. Cependant, il existe de nombreuses autres méthodes de présentation des données, chacune adaptée à des besoins et à des publics différents. Par exemple, certains pourraient opter pour une plateforme comme Looker pour présenter les données traitées sous forme de tableau de bord plus dynamique. Cette méthode est particulièrement utile pour créer des présentations de données interactives et visuellement attrayantes. Il garantit que même les parties prenantes qui ne sont pas familières avec les aspects techniques de l'analyse des données, telles que celles qui travaillent avec Jupyter Notebooks, peuvent facilement comprendre les informations et en tirer de la valeur.
Ce processus rationalisé de réduction et de présentation des données peut être appliqué à différents types d'ensembles de données, tels que les alertes SIEM en nuage, les alertes de comportement des points d'extrémité ou les alertes de logiciels malveillants. L'objectif reste le même : simplifier et concentrer les données pour obtenir des informations claires et exploitables.
Présentation : Présenter les résultats
Après avoir méticuleusement affiné nos ensembles de données, nous nous concentrons maintenant sur l'étape finale : la présentation. Nous prenons nos ensembles de données, désormais bien organisés dans des plateformes telles que Google Sheets ou Looker, et les transformons dans un format à la fois informatif et attrayant.
Tableaux croisés dynamiques pour une analyse approfondie
Les tableaux croisés dynamiques permettent de créer une vue d'ensemble des résultats de l'analyse des tendances. Ces tableaux nous permettent d'afficher des données de manière multidimensionnelle, offrant un aperçu de divers aspects de la cybersécurité, tels que les tactiques prévalentes de MITRE ATT&CK, les techniques choisies et les familles de logiciels malveillants préférées.
Notre approche de la visualisation des données implique :
- Vue d'ensemble avec les tactiques de MITRE ATT&CK : En partant d'une perspective générale, nous utilisons des tableaux croisés dynamiques pour donner un aperçu des différentes tactiques employées dans les cybermenaces.
- Analyse détaillée : À partir de cette vue panoramique, nous approfondissons la question en créant des tableaux croisés dynamiques distincts pour chaque tactique populaire, puis en procédant à des analyses détaillées pour chaque technique et règle de détection spécifique.
Ce processus méthodique permet de découvrir les subtilités de la logique de détection et des alertes, en racontant efficacement l'histoire du paysage des cybermenaces.
Diagramme montrant l'entonnoir des agrégations dans les informations contextuelles du rapport
Accessibilité pour tous les publics : Nos présentations de données sont conçues pour répondre aux besoins d'un large éventail de publics, qu'il s'agisse de personnes ayant une connaissance approfondie de la science des données ou de personnes préférant une compréhension plus directe. L'écosystème Google Workspace facilite le partage de ces informations, en permettant aux tableaux croisés dynamiques, aux ensembles de données réduits et à d'autres éléments d'être facilement accessibles à toutes les personnes impliquées dans le processus d'élaboration du rapport.
Intégration de visualisations dans les rapports : Lorsque vous créez un rapport, par exemple dans Google Docs, l'intégration de graphiques et de tableaux provenant de Google Sheets est transparente. Cette intégration garantit que toute modification apportée aux ensembles de données ou aux tableaux croisés dynamiques est facilement mise à jour dans le rapport, ce qui maintient l'efficacité et la cohérence de la présentation.
Adapter la présentation au public : La présentation des données ne consiste pas seulement à transmettre des informations, mais aussi à le faire d'une manière visuellement attrayante et digeste. Pour un public plus technophile, un Colab Notebook interactif avec des graphiques et des fonctions dynamiques peut être idéal. En revanche, pour les équipes de marketing ou de conception, un tableau de bord bien conçu dans Looker peut être plus approprié. L'essentiel est de veiller à ce que la présentation soit claire, concise et visuellement attrayante, adaptée aux préférences et aux besoins spécifiques de l'auditoire.
Conclusion : Réflexion sur le parcours de l'analyse des données
En guise de conclusion, il est utile de réfléchir au chemin parcouru dans l'analyse des données relatives aux cybermenaces. Ce voyage s'est déroulé en plusieurs étapes clés, chacune d'entre elles contribuant de manière significative à notre vision finale.
Voyage dans l'écosystème Cloud de Google
Notre parcours nous a fait passer par plusieurs services Google Cloud, notamment GCP, GCE, Colab Notebooks et Google Workspace. Chacun d'entre eux a joué un rôle essentiel :
Exploration des données : Nous avons commencé par une série de questions liées à la cybernétique auxquelles nous voulions répondre et nous avons exploré les vastes ensembles de données dont nous disposions. Dans ce blog, nous nous sommes concentrés uniquement sur la télémétrie disponible dans BigQuery. Extraction des données : Nous avons commencé par extraire les données brutes, en utilisant BigQuery pour traiter efficacement de grands volumes de données. L'extraction s'est faite à la fois dans BigQuery et à partir de nos carnets Colab. Traitement des données : La puissance de Python et de la bibliothèque pandas a été mise à profit pour nettoyer, agréger et affiner ces données, à l'instar d'un chef cuisinier préparant habilement ses ingrédients. Analyse des tendances : Nous avons ensuite effectué une analyse des tendances sur nos ensembles de données réformés à l'aide de plusieurs méthodologies afin de recueillir des informations précieuses sur les tactiques, les techniques et les procédures de l'adversaire au fil du temps. Réduction : Sur la base de notre analyse des tendances, nous avons regroupé nos différents ensembles de données par points de données ciblés en vue d'une présentation aux parties prenantes et aux pairs. Transition vers la présentation : La facilité de passer de l'analyse des données à la présentation dans un navigateur web a mis en évidence l'agilité de nos outils, facilitant un flux de travail transparent.
Modularité et flexibilité du flux de travail
Un aspect essentiel de notre approche est la nature modulaire de notre flux de travail. Chaque phase, de l'extraction des données à la présentation, comportait des composants interchangeables dans l'écosystème Google Cloud, ce qui nous a permis d'adapter le processus à des besoins spécifiques :
Des outils polyvalents : Google Cloud Platform offre une gamme variée d'outils et d'options, permettant une flexibilité dans le stockage, l'analyse et la présentation des données. Chemin d'analyse personnalisé : En fonction des exigences spécifiques de notre analyse, nous pouvons adapter et choisir différents outils et méthodes, garantissant ainsi une approche sur mesure pour chaque ensemble de données. Authentification et autorisation : Nos entités étant hébergées dans l'écosystème Google Cloud, l'accès aux différents outils, sites, données et autres s'est fait sans problème, assurant une transition en douceur entre les services.
Orchestration et synchronisation des outils
La synergie entre nos compétences techniques et les outils choisis a été cruciale. Cette harmonisation a permis de garantir que le processus analytique était non seulement efficace pour ce projet, mais aussi de jeter les bases d'analyses futures plus efficaces et plus perspicaces. Les outils ont été utilisés pour renforcer nos capacités, en mettant l'accent sur l'obtention d'informations utiles plutôt que sur les complexités techniques.
En résumé, ce voyage à travers l'analyse des données a mis en évidence l'importance d'une approche bien pensée, de l'utilisation des bons outils et techniques, et de la capacité d'adaptation pour répondre aux exigences de l'analyse des données sur les cybermenaces. Le résultat final n'est pas seulement un ensemble de conclusions, mais une méthodologie affinée qui peut être appliquée à de futurs projets d'analyse de données dans le domaine en constante évolution de la cybersécurité.
Appel à l'action : Se lancer dans votre propre voyage d'analyse de données
Votre espace de travail analytique est prêt ! Quelles approches innovantes ou expériences avec Google Cloud ou d'autres plateformes d'analyse de données pouvez-vous apporter ? Le domaine de l'analyse des données est vaste et varié, et bien que chaque analyste apporte une touche unique, les méthodes et principes sous-jacents sont universels.
L'objectif n'est pas seulement d'exceller dans vos projets analytiques actuels, mais aussi d'améliorer et d'adapter continuellement vos techniques. Ce perfectionnement continu garantit que vos futurs efforts en matière d'analyse de données seront encore plus productifs, instructifs et percutants. Plongez dans le monde de l'analyse des données avec Google Cloud !
Nous vous invitons à nous faire part de vos commentaires et de votre engagement sur ce sujet ! Si vous préférez le faire, n'hésitez pas à nous engager dans le canal Slack public #security d'Elastic.