Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
ThreatHunting-Keywords — Awesome list de mots-clés et d'artefacts pour les sessions de Threat Hunting | Kitploit
Outils/GitHubGitHub/mthcht/threathunting-keywords
Outils DéfensifsCriminalistique NumériqueRenseignement sur les MenacesRéponse aux IncidentsRessources OrganiséesAnalyse de Journaux
GitHubmthcht/threathunting-keywords

ThreatHunting-Keywords

Awesome list de mots-clés et d'artefacts pour les sessions de Threat Hunting

Voir le dépôt
66977il y a 1 anVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Site web

ThreatHunting-Keywords

🎯 Liste de mots-clés pour les sessions de ThreatHunting

image

Table des matières

  • Qu'est-ce que le Threat Hunting ?
    • Avantages du Threat Hunting
    • Relier le Threat Hunting aux services essentiels
    • Niveau de maturité de la détection
    • Checklist de Threat Hunting - Domaines clés à cibler pour la collecte de renseignements
    • Exemple de méthodologie de Threat Hunting ciblée
  • Fichiers
  • ThreatHunting-Keywords pour la blueteam
  • ThreatHunting-Keywords pour la redteam
  • Contenu du fichier Threat Hunting Keywords
  • Utiliser la liste pour chasser avec Splunk
    • journaux bruts
    • champs spécifiques
    • vitesse
    • exemple de tableau de bord
    • Splunk4DFIR
    • Avec ELK c'est différent
    • Autres listes impressionnantes pour la détection
  • Chasser sans SIEM
    • Chasse optimisée DFIR
    • Règles YARA
  • Site Web
  • Faux positifs attendus
  • Règles SIGMA
  • Contribuer

Qu'est-ce que le Threat Hunting ?

image

Le threat hunting est une approche proactive et itérative visant à détecter les activités malveillantes au sein du réseau ou des systèmes d'une organisation qui ont pu contourner les mesures de sécurité automatisées. Contrairement aux investigations réactives déclenchées par des alertes de sécurité, le threat hunting repose sur des vérifications pilotées par la threat intelligence (TI) et sur des hypothèses issues d'une analyse systématique et opportuniste. Ces hypothèses 💡 aident les chasseurs à découvrir des menaces inconnues, des menaces potentielles ou des menaces connues qui ont pu échapper aux détections de sécurité, ainsi que des vulnérabilités ou des indicateurs de compromission (IoCs) que les systèmes automatisés pourraient manquer ou exclure. Le processus vise également à identifier les signes précurseurs d'alertes/tableaux de bord et à améliorer les flux de travail SOC/triage, tout en contribuant à la gestion de l'inventaire des actifs shadow IT et en remontant les événements de faible/moyenne fiabilité nécessitant une enquête plus approfondie. L'objectif principal est d'identifier les tactiques, techniques et procédures (TTP) utilisées par les acteurs de la menace, renforçant ainsi la capacité de l'organisation à détecter et à atténuer préventivement les attaques potentielles.

Avantages du Threat Hunting :

  • 🔍 Identifier les lacunes de visibilité
    • Détecte les zones où la surveillance et la détection sont insuffisantes, comblant les angles morts du réseau ou des systèmes pour atténuer les menaces cachées.
  • 🛠️ Combler les lacunes de détection
    • Recherche proactive d'anomalies, de signes précurseurs et de TTP qui peuvent ne pas déclencher d'alertes
  • ⚙️ Améliorer l'efficacité du SOC
    • Intègre les enseignements du threat hunting dans les flux de travail du SOC pour découvrir des événements que les détections statiques pourraient manquer. En réduisant les faux positifs et en remontant les événements négligés, cela permet aux analystes du SOC de se concentrer sur les menaces critiques et d'affiner la logique de détection pour une utilisation future.
  • 🚀 Améliorer la détection des menaces et favoriser l'amélioration continue
    • Identifie les menaces avancées, inconnues ou cachées qui contournent les systèmes de détection automatisés et réinjecte des données précieuses dans les processus du SOC, améliorant ainsi les outils, la formation et les futures capacités de détection
  • 🛡️ Réduire la surface d'attaque
    • Découvre les systèmes, applications et shadow IT non gérés ou non autorisés au sein du réseau, permettant aux organisations de combler les angles morts de sécurité et de réduire l'exposition aux menaces potentielles.

Relier le Threat Hunting aux services essentiels

image

Cycle de vie du Threat Hunting dans les opérations du SOC

Ma suggestion de processus pour organiser des sessions de threat hunting partiellement automatisées afin de maintenir des règles de détection de haute qualité au sein d'un SOC

SOC_Process_Threat_Hunting_to_detection

Niveau de maturité de la détection

image Les équipes SOC se concentrent sur le déploiement de détections à haute fiabilité à tous les niveaux de la pyramide de maturité de la détection, ciblant les menaces connues avec un minimum de faux positifs. Le threat hunting complète cette approche en traitant les menaces inconnues, les TTP avancées et les anomalies sujettes à des taux de faux positifs élevés, comblant les lacunes et améliorant la couverture de détection au-delà des capacités standard du SOC.

Checklist de Threat Hunting - Domaines clés à cibler pour la collecte de renseignements

image

Exemple de méthodologie de Threat Hunting ciblée

image

Idéalement, chaque session de threat hunting devrait avoir des objectifs clairs. Cet organigramme fournit une approche structurée pour guider votre processus, de la préparation et de l'investigation jusqu'aux recommandations exploitables.


🎯 Liste de mots-clés pour les sessions de ThreatHunting

Fichiers

  • ThreatHunting-Keywords
  • Mots-clés des outils greyware
  • Mots-clés des outils offensifs
  • Mots-clés des signatures de fournisseurs
  • Outils individuels (un fichier csv par outil)
  • Tous les mots-clés uniquement
  • Tous les mots-clés regex uniquement
  • Tous les mots-clés regex uniquement (meilleures performances)
  • Script Powershell pour chasser dans les fichiers
  • Règles YARA
  • Règles SIGMA

Pour la blueteam :

Les listes ThreatHunting-Keywords peuvent être précieuses pour les Threat Hunters, les équipes SOC et CERT pour l'analyse statique sur SIEM, car elles aident à identifier les acteurs de la menace (ou les redteamers 😆) utilisant des configurations par défaut d'outils d'exploitation renommés dans les journaux. Elle diffère des flux d'IOC par sa pertinence durable : les mots-clés ici n'ont pas de « date d'expiration » et peuvent détecter des menaces des années après leur inclusion. Ils sont flexibles, acceptent les correspondances avec jokers (wildcards) et sans sensibilité à la casse, et se concentrent uniquement sur les mots-clés par défaut.

Conçue principalement pour le Threat Hunting, cette liste peut être utile dans des scénarios complexes. Que vous ayez accès à un SIEM que vous ne gérez pas, avec des données non analysées, ou que vous fassiez partie d'une équipe SOC disposant d'un SIEM bien géré, les exemples fournis ici peuvent accélérer le processus de détection d'activités malveillantes sans avoir besoin d'analyser quoi que ce soit. Si vos journaux sont déjà analysés, cette liste peut être utilisée pour faire correspondre des champs dans vos données, pouvant potentiellement se transformer en règle de détection basée sur la catégorie de type de mot-clé que vous sélectionnez, à condition que le taux de faux positifs soit suffisamment bas.

⚠️ Tout ne peut pas être ajouté à cette liste, nous ne faisons pas ici de détections de comportements complexes, uniquement des détections simples de mots-clés dans les champs ou les journaux bruts, visant à détecter les configurations par défaut

⚠️ Beaucoup d'outils de la liste disposent de règles de détection dédiées, corrélant les événements avec des seuils et des relations de processus uniques... nous ne couvrirons pas ici toutes les détections possibles pour un outil, uniquement les détections par mots-clés

Si vous faites partie d'un centre d'opérations de sécurité (SOC) et que vous gérez des centaines de règles de détection qui reposent uniquement sur de simples détections par mots-clés sans corrélation de champs ou d'événements, envisagez de repenser votre approche. À mon avis, celles-ci ne devraient pas constituer des règles de détection individuelles. Elles seraient peut-être mieux adaptées à une liste consolidée comme celle-ci, bien que la mise en œuvre puisse être plus difficile si vous n'utilisez pas une plateforme comme Splunk.

Cette approche encourage la création de règles de haute qualité et pertinentes tout en gardant vos simples détections par mots-clés dans les champs organisées et gérables en un seul endroit. Le résultat final ? Une règle de détection complète qui les couvre toutes. Cela rationalise votre processus et optimise vos capacités de détection.

Pour les équipes de réponse aux incidents, vous pouvez utiliser cette liste lors de votre investigation sur les journaux bruts ou les fichiers pour identifier rapidement les outils d'exploitation connus avec les règles YARA Règles YARA, un script powershell ou en ingérant rapidement vos journaux dans Splunk avec Splunk4DFIR

Pour la redteam :

Pour échapper à la détection par simple mot-clé, il est essentiel de recompiler et de renommer toutes les chaînes personnalisées, les noms de classes ou de fonctions, les noms de variables, les noms d'arguments, les noms d'exécutables, les user-agents par défaut, les certificats, ou toute autre chaîne qui pourrait potentiellement être associée aux outils que vous utilisez durant votre opération. Utilisez les noms les plus courants pour tout afin de vous fondre dans le trafic normal. Les scripts situés ici peuvent vous aider à en identifier certains.

Cependant, si vous développez des « red team tools » publics, envisagez d'aider la blue team en utilisant des noms distincts. Utilisez une configuration par défaut avec un port exotique, des certificats personnalisés, des user-agents uniques, des noms de fonctions et des arguments spécifiques qui ne sont pas courants. Cela aide à créer une signature claire pouvant être utilisée pour de simples détections par mots-clés, afin que la blueteam puisse au moins détecter facilement les script kiddies.

Contenu du fichier Threat Hunting Keywords :

  • En-tête : keyword,metadata_keyword_type,metadata_tool,metadata_description,metadata_tool_techniques,metadata_tool_tactics,metadata_malwares_name,metadata_groups_name,metadata_category,metadata_link,metadata_enable_endpoint_detection,metadata_enable_proxy_detection,metadata_tags,metadata_comment,metadata_severity_score,metadata_popularity_score,metadata_github_stars,metadata_github_forks,metadata_github_created_at,metadata_github_updated_at

  • keyword : Les entrées de cette colonne représentent des mots-clés non sensibles à la casse utilisés pour le Threat Hunting. Ces mots-clés sont flexibles, permettant l'utilisation de jokers (wildcards) pour élargir ou affiner vos paramètres de recherche selon vos besoins.

  • metadata_keyword_regex : Les entrées de cette colonne représentent le motif regex de détection pour le mot-clé. Ces motifs sont affinés pour offrir des capacités de détection précises, adaptées à une utilisation avec YARA, ripgrep ou des outils de détection similaires.

  • metadata_keyword_type : Type des mots-clés. Actuellement, il existe trois types :

Utiliser la liste pour chasser avec Splunk :

  • téléversez la liste threathunting-keywords.csv sur Splunk

  • créez une définition de lookup nommée threathunting-keywords pour le lookup threathunting-keywords.csv

    • dans les options avancées, ajoutez le type de correspondance WILDCARD(keyword) et assurez-vous que Case sensitive match n'est pas coché

    image

transforms.conf``` [threathunting-keywords] batch_index_query = 0 case_sensitive_match = 0 filename = threathunting-keywords.csv match_type = WILDCARD(keyword)

root@kitploit:~
- nous pouvons maintenant utiliser notre définition de lookup pour chasser 🏹
- :warning: si les recherches de la section suivante ne semblent pas fonctionner, cela peut être dû aux paramètres de limitation des ressources de splunk, surtout si vous exécutez splunk avec la configuration par défaut. Pour commencer, vous devrez peut-être envisager d'augmenter la valeur de `max_memtable_bytes` dans la section `[lookup]`.

## Exemples de cas d'utilisation avec `threathunting-keywords` :
![image](https://assets.kitploit.com/production/public/readmes/48741/204eb8e71d12257660c7166cb5f050747877e1968d7ff1f21812967d64355ca0.png)



### Chasser tous les mots-clés dans les logs bruts 😱```
`myendpointslogs` 
| lookup threathunting-keywords keyword as _raw OUTPUT keyword as keyword_detection metadata_keyword_type metadata_tool metadata_description metadata_tool_techniques metadata_tool_tactics metadata_malwares_name metadata_groups_name metadata_category	metadata_link	metadata_enable_endpoint_detection metadata_enable_proxy_detection metadata_comment
| search metadata_description!="" AND metadata_enable_endpoint_detection=1
| stats count earliest(_time) as firsttime latest(_time) as lasttime values(_raw) as raw by metadata_keyword_type keyword_detection index sourcetype 
| convert ctime(*time)

Envoyez le job en arrière-plan et conservez l'ID du job.

image

  • myendpointslogs est une macro qui recherchera tous vos logs d'endpoints, qu'il s'agisse des logs Windows, de la télémétrie EDR, de sysmon, d'auditd, des sessions bastion, des logs d'exécution PowerShell ou de tout autre log qui surveille l'activité des processus ou des fichiers. (si vous n'utilisez pas de macro, vous pouvez remplacer la macro par votre index, tag ou datamodel)
    • J'ai intentionnellement intégré une macro dans les exemples pour montrer que l'exploration initiale peut être effectuée avec n'importe quelle méthode adaptée à vos besoins, que ce soit un modèle de données, tstats, des tags, index/sourcetype. Bien que tstats associé à un datamodel soit souvent la voie la plus rapide, filtrez avec la commande TERM() pour les recherches spécifiques avant le |lookup si nécessaire
  • | lookup c'est très important, pour les grosses lookups comme celle-ci, utilisez toujours |lookup au lieu de |inputlookup ; |lookup utilisera la lookup poussée sur les indexeurs lorsque le bundle est répliqué, tandis que |inputlookup enverra aux indexeurs la recherche avec tout le contenu de la lookup à chaque fois. En utilisant |lookup, on gagne énormément en performances (cette recherche s'exécutera pendant des heures sur de grands environnements, donc il vaut mieux optimiser notre recherche).
  • ... keyword as _raw OUTPUT keyword as keyword_detection c'est la partie où nous allons mettre en correspondance le champ nommé avec le champ de notre lookup ; dans Splunk, est le log brut sans aucun parsing (notre cas d'usage). Lorsqu'un mot-clé correspond, le champ affichera le mot-clé de la lookup qui a correspondu sur le champ () ici.

Filtrer le résultat``` | loadjob 1684146257.1495958 | search NOT (keyword_detection IN ("fixme","fixme","fixme")) NOT (metadata_keyword_type IN ("fixme","fixme")) NOT (raw IN ("fixme","fixme","fixme"))

root@kitploit:~
Excluez les mots-clés requis, le texte brut ou les types de mots-clés.
si nous décidons d'exclure le type `greyware tool keyword` (mots-clés d'outils légitimes abusés par les attaquants) parce que cet environnement a trop de résultats pour ce type d'outils, nous avons deux options :

- Filtrer au début de notre recherche initiale```
`myendpointslogs` 
| lookup threathunting-keywords keyword as _raw OUTPUT keyword as keyword_detection metadata_keyword_type metadata_tool metadata_description metadata_tool_techniques metadata_tool_tactics metadata_malwares_name metadata_groups_name metadata_category	metadata_link	metadata_enable_endpoint_detection metadata_enable_proxy_detection metadata_comment
| search metadata_description!="" metadata_keyword_type="offensive tool keyword" metadata_enable_endpoint_detection=1
| stats count earliest(_time) as firsttime latest(_time) as lasttime values(_raw) as raw by metadata_keyword_type keyword_detection index sourcetype 
| convert ctime(*time)

J'ai ajouté un metadata_keyword_type="offensive tool keyword" pour ne cibler que les outils offensifs dont je suis sûr qu'ils sont utilisés par des acteurs malveillants

  • Ou filtrer après notre recherche initiale (pour gagner beaucoup de temps) :``` | loadjob 1684146257.1495958 | search metadata_keyword_type="offensive tool keyword"
root@kitploit:~
Donc, c'était notre cas d'utilisation pour rechercher dans les logs bruts des journaux de points de terminaison ; si nous voulons rechercher les mots-clés pour les journaux réseau (tout ce qui peut journaliser une requête ou une URL), nous changeons simplement cela en :```
`mynetworklogs` 
| lookup threathunting-keywords keyword as _raw OUTPUT keyword as keyword_detection metadata_keyword_type metadata_tool metadata_description metadata_tool_techniques metadata_tool_tactics metadata_malwares_name metadata_groups_name metadata_category	metadata_link	metadata_enable_endpoint_detection metadata_enable_proxy_detection metadata_comment
| search metadata_description!="" AND metadata_enable_proxy_detection=1
| stats count earliest(_time) as firsttime latest(_time) as lasttime values(_raw) as raw by metadata_keyword_type keyword_detection index sourcetype 
| convert ctime(*time)

Maintenant c'est la même chose que la première recherche mais j'ai changé la source de données pour mynetworklogs et ajouté metadata_enable_proxy_detection=1 pour correspondre aux mots-clés pertinents pour les logs réseau (il vaut mieux avoir des logs proxy et DNS pour cela)


Chassez les mots-clés dans d'autres champs 🙂 (url,process,commandline,query...) :

Correspondance uniquement sur le champ url :```

mynetworklogs url=* | lookup threathunting-keywords keyword as url OUTPUT keyword as keyword_detection metadata_keyword_type metadata_tool metadata_description metadata_tool_techniques metadata_tool_tactics metadata_malwares_name metadata_groups_name metadata_category metadata_link metadata_enable_endpoint_detection metadata_enable_proxy_detection metadata_comment | search metadata_description!="" AND metadata_enable_proxy_detection=1 | stats count earliest(_time) as firsttime latest(_time) as lasttime values(url) as url by src_ip metadata_keyword_type keyword_detection index sourcetype | convert ctime(*time)

root@kitploit:~
#### Correspondance uniquement sur le champ de requête :```
`mynetworklogs` query=*
| lookup threathunting-keywords keyword as query OUTPUT keyword as keyword_detection metadata_keyword_type metadata_tool metadata_description metadata_tool_techniques metadata_tool_tactics metadata_malwares_name metadata_groups_name metadata_category	metadata_link	metadata_enable_endpoint_detection metadata_enable_proxy_detection metadata_comment
| search metadata_description!="" AND metadata_enable_proxy_detection=1
| stats count earliest(_time) as firsttime latest(_time) as lasttime values(query) as query by src_ip metadata_keyword_type keyword_detection index sourcetype 
| convert ctime(*time)

Correspondance sur plusieurs champs à la fois, exemple pour les journaux d'endpoint:```

myendpointslogs | eval myfields=mvappend(service, process, process_command, parent_process, parent_process_command, grand_parent_process, grand_parent_process_command, file_path, file_name) | lookup threathunting-keywords keyword as myfields OUTPUT keyword as keyword_detection metadata_keyword_type metadata_tool metadata_description metadata_tool_techniques metadata_tool_tactics metadata_malwares_name metadata_groups_name metadata_category metadata_link metadata_enable_endpoint_detection metadata_enable_proxy_detection metadata_comment | search metadata_description!="" AND metadata_enable_endpoint_detection=1 | stats count earliest(_time) as firsttime latest(_time) as lasttime values(process) values(service) values(process_command) values(file_name) values(file_path) values(parent_process) values(parent_process_command) values(grand_parent_process) values(grand_parent_process_command) by metadata_keyword_type keyword_detection index sourcetype | convert ctime(*time)

root@kitploit:~
#### Speed:

If the speed is a concern or you're planning to implement this as a scheduled detection rule, you might want to consider splitting the lookup into diffent lookups by choosing the metadata_keyword_type or metadata_tool column you want to use.

Note that filtering using the search command after the `|lookup` doesn't expedite the search process. If you want to concentrate on a specific portion of the lookup without dividing it, you should use the `|inputlookup` command along with the where clause. While this method may consume more CPU resources, it generally results in faster execution. For more details, check out the Splunk documentation on inputlookup: https://docs.splunk.com/Documentation/Splunk/latest/SearchReference/Inputlookup

#### Avec ELK :

Si vous travaillez avec la pile Elastic, il y a beaucoup de restrictions pour les listes (vous ne pouvez pas utiliser de caractères spéciaux, d'espaces...), vous avez 3 options :
- Utiliser une autre liste disponible ici dans le même dépôt https://github.com/mthcht/ThreatHunting-Keywords/tree/main/elk (ce n'est pas une extraction directe de threathunting-keywords.csv, c'est modifié pour ELK et non mis à jour)
- Utiliser les règles Sigma « hunting », directement extraites de ce projet https://github.com/mthcht/ThreatHunting-Keywords-sigma-rules avec pysigma pour la conversion
- Utiliser certaines de mes listes comme liste d'IOC avec des requêtes wildcard https://www.elastic.co/guide/en/elasticsearch/reference/8.15/query-dsl-wildcard-query.html#wildcard-top-level-params
 
### Exemple de tableau de bord
![image](https://assets.kitploit.com/production/public/readmes/48741/df177e7f2584b823c311a2b223eed8b237d8a72c05d0afb9d6b6f350e42ccda0.png)

### Splunk4DFIR
Autre exemple d'utilisation des fichiers csv du projet avec Splunk pour chasser dans les artefacts et journaux DFIR : https://github.com/mf1d3l/Splunk4DFIR
![image](https://assets.kitploit.com/production/public/readmes/48741/73d54c5b146c34685ebac4ed7ed2a9da11a3f90e6ae9ac0a4b17118d7895cbe3.png)

### Autres listes géniales pour la détection
Je conserve certains artefacts pertinents dans des listes séparées ; ces listes sont plus précises et peuvent être utilisées dans les règles de détection. Elles sont disponibles dans ce [dépôt GitHub](https://github.com/mthcht/awesome-lists/tree/main/Lists)
vous y trouverez :

Ma feuille de collecte de renseignements pour planifier des sessions de Threat Hunting

![intelligence gathering sheet](https://assets.kitploit.com/production/public/readmes/48741/498b188eaebabe5a7077300eeff16daee903ed30d0b1797b82c208a54ba1424d.png)


- 📋 Listes : https://github.com/mthcht/awesome-lists/tree/main/Lists
- 🕵️‍♂️ Guides de Threat Hunting : https://mthcht.medium.com/list/threat-hunting-708624e9266f
- 🚰 Tuyaux nommés suspects : [suspicious_named_pipe_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/suspicious_named_pipe_list.csv)
- 🌐 TLD suspects (mis à jour automatiquement) : [[suspicious_TLDs]](https://github.com/mthcht/awesome-lists/tree/main/Lists/TLDs)
- 🌐 ASN suspects (mis à jour automatiquement) : [[suspicious ASNs]](https://github.com/mthcht/awesome-lists/tree/main/Lists/ASNs)
- 🔧 Services Windows suspects : [suspicious_windows_services_names_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/suspicious_windows_services_names_list.csv)
- ⏲️ Tâches Windows suspectes : [suspicious_windows_tasks_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/suspicious_windows_tasks_list.csv)
- 🚪 Ports de destination suspects : [suspicious_ports_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/suspicious_ports_list.csv)
- 🛡️ Règles de pare-feu suspectes : [suspicious_windows_firewall_rules_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/suspicious_windows_firewall_rules_list.csv)
- 🆔 User-Agents suspects : [suspicious_http_user_agents_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/suspicious_http_user_agents_list.csv)
- 📇 Identifiants USB suspects : [suspicious_usb_ids_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/suspicious_usb_ids_list.csv)
- 🔢 Adresses MAC suspectes : [suspicious_mac_address_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/suspicious_mac_address_list.csv)
- 📛 Noms d'hôte suspects : [suspicious_hostnames_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/suspicious_hostnames_list.csv)
- 🧮 Métadonnées des exécutables : [executables_metadata_informations_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/Windows%20Metadata/executables_metadata_informations_list.csv)
- 🕸️ Liste des serveurs DNS over HTTPS : [dns_over_https_servers_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/dns_over_https_servers_list.csv)
- 📚 Hijacklibs (mis à jour automatiquement) : [hijacklibs_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/Hijacklibs/hijacklibs_list.csv)
- 🌐 Listes des nœuds TOR (mis à jour automatiquement) : https://github.com/mthcht/awesome-lists/tree/main/Lists/TOR
- 🛠️ Liste LOLDriver (mis à jour automatiquement) : [loldrivers_only_hashes_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/Drivers/loldrivers_only_hashes_list.csv)
- 🛠️ Liste des bootloaders malveillants (mis à jour automatiquement) : [malicious_bootloaders_only_hashes_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/Drivers/malicious_bootloaders_only_hashes_list.csv)
- 📜 Liste des certificats SSL malveillants (mise à jour automatiquement) : [ssl_certificates_malicious_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/SSL%20CERTS/ssl_certificates_malicious_list.csv)
- 🖥️ Détection RMM : https://github.com/mthcht/awesome-lists/tree/main/Lists/RMM
- 👤🔑 Rôles et groupes importants pour AD/EntraID/AWS : [[permissions]](https://github.com/mthcht/awesome-lists/tree/main/Lists/permissions)
- 💻🔒 Extensions de fichiers connues des ransomwares : [ransomware_extensions_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/ransomware_extensions_list.csv)
- 💻🔒 Noms de fichiers connus des notes de rançon des ransomwares : [ransomware_notes_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/ransomware_notes_list.csv)
- 📝 Règles ASR Windows : [windows_asr_rules.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/windows_asr_rules.csv)
- 🌐 Listes DNSTWIST (mises à jour automatiquement) : [DNSTWIST Default Domains + script](https://github.com/mthcht/awesome-lists/tree/main/Lists/DNSTWIST)
- 🌍 Listes d'adresses IP VPN (mises à jour automatiquement) : 
  - 🛡️ NordVPN : [nordvpn_ips_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/VPN/NordVPN/nordvpn_ips_list.csv)
  - 🛡️ ProtonVPN : [protonvpn_ip_list.csv](https://github.com/mthcht/awesome-lists/blob/main/Lists/VPN/ProtonVPN/protonvpn_ip_list.csv)
- 🏢 Listes de plages d'adresses IP d'entreprises (mises à jour automatiquement) : [Default Lists + script](https://github.com/mthcht/awesome-lists/tree/main/Lists/Ranges_IP_Address_Company_List/bgp.he.net)
- 🔗 Autres listes de corrélation : https://github.com/mthcht/awesome-lists/tree/main/Lists/Others
- 📋 Listes que je dois terminer : https://github.com/mthcht/awesome-lists/tree/main/todo

Consultez ces [Guides](https://github.com/mthcht/awesome-lists/tree/main/Lists#how-to-use-the-lists) pour utiliser certaines des listes : 
  - [Recherches sur les services Windows](https://detect.fyi/threat-hunting-suspicious-windows-service-names-2f0dceea204c)
  - [Recherches sur les User-Agents](https://mthcht.medium.com/threat-hunting-suspicious-user-agents-3dd764470bd0)
  - [Recherches sur DNS Over HTTPS](https://mthcht.medium.com/detecting-dns-over-https-30fddb55ac78)
  - [Recherches sur les TLD suspects](https://mthcht.medium.com/threat-hunting-suspicious-tlds-a742c2adbf58)
  - [Recherches sur HijackLibs](https://mthcht.medium.com/detect-dll-hijacking-techniques-from-hijacklibs-with-splunk-c760d2e0656f)
  - [Recherches sur le phishing et DNSTWIST](https://detect.fyi/detecting-phishing-attempts-with-dnstwist-37c426b3bbb8)
  - [Recherches sur les extensions de navigateur](https://mthcht.medium.com/detecting-browser-extensions-installations-e0ac2b45c46b)
  - [C2 se cachant en pleine vue](https://mthcht.medium.com/c2-hiding-in-plain-sight-7a83963b9344)
  - [Artefacts de HTML Smuggling](https://mthcht.medium.com/detecting-html-smuggling-phishing-attempts-15af824e60e4)
  - [Recherches sur PSEXEC et outils similaires](https://mthcht.medium.com/detecting-psexec-and-similar-tools-c812bf3dca6c)
  - [Détection de Time Slipping](https://mthcht.medium.com/event-log-manipulations-1-time-slipping-55bf95631c40)
  - [Tuyaux nommés suspects](https://medium.com/detect-fyi/threat-hunting-suspicious-named-pipes-a4206e8a4bc8)
 
... plus [ici](https://github.com/mthcht/awesome-lists/tree/main/Lists#how-to-use-the-lists) 

## Chasse DFIR de mots-clés dans les fichiers (sans SIEM)
Après avoir effectué un examen approfondi de divers outils, j'ai découvert que [ripgrep](https://github.com/BurntSushi/ripgrep) surpasse nettement ses concurrents lorsqu'il s'agit de faire correspondre rapidement une vaste liste de motifs regex à chaque ligne d'un grand fichier journal ou même de plusieurs fichiers simultanément. Il s'est avéré être la solution la plus efficace pour traiter des quantités massives de données, offrant une vitesse et une flexibilité inégalées.

### Chasser le mal dans les fichiers journaux avec **Ripgrep** et la liste 'only_keywords_regex.txt'
#### `rg.exe -f .\only_keywords_regex.txt .\EvtxECmd_Output.csv --multiline --ignore-case`
- .\only_keywords_regex.txt sert de fichier source pour les mots-clés de threat hunting, transformés en motifs regex pour une correspondance précise. Ces motifs proviennent du fichier threathunting-keywords.csv, qui a subi un processus de conversion pour une compatibilité optimale avec les opérations regex.
- .\EvtxECmd_Output.csv représente le fichier cible dans lequel la recherche sera effectuée. Dans ce contexte, il s'agit d'un fichier .csv d'un journal d'événements Windows, produit en exportant les journaux evtx. Cependant, la flexibilité de ripgrep vous permet de le remplacer par n'importe quel fichier de votre choix pour des opérations de recherche détaillées.
- L'option --multiline permet à ripgrep de gérer et de faire correspondre efficacement les motifs s'étendant sur plusieurs lignes, élargissant considérablement la portée de la recherche.
Vous obtiendrez les lignes correspondantes de cette manière avec le numéro de ligne (mais sans le mot-clé correspondant)

![image](https://assets.kitploit.com/production/public/readmes/48741/d205ae3caf99906a03818c202e8811b669948e2f68b88cc137cba8cf0e43b69f.png)

![image](https://assets.kitploit.com/production/public/readmes/48741/e1b213fc63e1ec2914e0f1eb3263d17aa960eb50672fd18986a0f75d50e9c379.png)

#### Meilleure option pour les très gros fichiers (sur Windows) :
[DFIR_hunt_in_file.ps1](https://github.com/mthcht/ThreatHunting-Keywords/blob/main/DFIR_hunt_in_file.ps1)

`powershell -ep Bypass -File .\DFIR_hunt_in_file.ps1 -patternFile "only_keywords_regex.txt" -targetFile "C:\Users\mthcht\collection\20230406154410_EvtxECmd_Output.csv" -rgPath "C:\Users\mthcht\Downloads\ripgrep-13.0.0-x86_64-pc-windows-msvc\ripgrep-13.0.0-x86_64-pc-windows-msvc\rg.exe"`
- `-targetFile` : spécifie le fichier dans lequel rechercher (dans l'exemple, des journaux extraits par DFIR-ORC)
- `-patternFile` : le fichier contenant les motifs regex `only_keywords_regex.txt`
- `-rgPath` : le chemin de l'exécutable ripgrep

contenu du script PowerShell (inclus dans le dépôt) :```powershell
param (
    [Parameter(Mandatory=$true)]
    [string]$patternFile,
    [Parameter(Mandatory=$true)]
    [string]$targetFile,
    [Parameter(Mandatory=$true)]
    [string]$rgPath
)

Start-Transcript -Path "$PSScriptRoot\result_search.log" -Append -Force -Verbose

$totalLines = (Get-Content $patternFile | Measure-Object -Line).Lines
$currentLine = 0
Get-Content $patternFile | ForEach-Object {
    $currentLine++
    Write-Host "Searching for pattern $currentLine of $totalLines : $_"  
    & $rgPath --multiline --ignore-case $_ $targetFile | Write-Output 
}

Stop-Transcript -Verbose

Le résultat de la recherche sera dans result_search.log dans le même répertoire que le script.

image

Meilleure option pour les fichiers très volumineux (sous Linux) :

todo

Chassez le mal dans les fichiers uniquement avec PowerShell et la liste 'only_keywords.txt ' (plus lent non recommandé)

Dans PowerShell, c'est beaucoup plus lent, mais si vous voulez quand même procéder ainsi, vous pouvez utiliser le script ci-dessous ; il vous indiquera le numéro de ligne correspondant et le mot-clé associé :

powershell.exe -ep Bypass -File .\hunt_keywords_windows.ps1 -k .\only_keywords.txt -f .\EvtxECmd_Output.csv

```powershell param( [Parameter(Mandatory=$true)] [string]$file,
root@kitploit:~
[Parameter(Mandatory=$true)]
[string]$kw

)

$Keywords = Get-Content $kw $result = @()

foreach ($Keyword in $Keywords) { $SearchTerm = $Keyword.Replace("", ".") $SearchTerm = [Regex]::Escape($SearchTerm).Replace(".*", ".*")

root@kitploit:~
$reader = New-Object System.IO.StreamReader($file)
$lineNumber = 0
while (($line = $reader.ReadLine()) -ne $null) {
    $lineNumber++
    if ($line -match $SearchTerm) {
        $result += New-Object PSObject -Property @{
            'Keyword' = $Keyword
            'LineNumber' = $lineNumber
            'Line' = $line
        }
    }
}
$reader.Close()

}

$result | Out-GridView Read-Host -Prompt "Press Enter to exit"

root@kitploit:~
</details>

### Règles YARA
![image](https://assets.kitploit.com/production/public/readmes/48741/e1355c1b331e4e617189507532d5fc1045ae7eb085259c2e6a3c51338b88fcf2.png)

Tous les modèles de détection de ce projet sont automatiquement exportés vers des règles yara dans [ThreatHunting-Keywords-yara-rules](https://github.com/mthcht/ThreatHunting-Keywords-yara-rules)

Quelques exemples de chasse avec les règles yara :
![2023-10-20 20_23_59-(1) mthcht on X_ _The #ThreatHunting Keywords project is slowly progressing, alm](https://assets.kitploit.com/production/public/readmes/48741/be09b835bf23d364e39cd4538a510d9f6f8d249396b3e8440cb1ce6e5f63ce82.png)
 
![2023-10-20 20_14_17-C__Users_Public_Pictures](https://assets.kitploit.com/production/public/readmes/48741/ad815de74d8983987eb38e1a7e63f1540216ff50163da319e82e0219c01dbd5a.png)

![2023-10-21 11_14_15-Editing ThreatHunting-Keywords-yara-rules_README md at main · mthcht_ThreatHunti](https://assets.kitploit.com/production/public/readmes/48741/6fa65b15d788cfe2790498294078225e7f4c004c193b69ed56acfca51ba6829c.png)
![2023-10-21 11_12_44-](https://assets.kitploit.com/production/public/readmes/48741/8b235e92d44bf445d7f47edd27b161a0d6cfbd58e5158386993541d53da31942.png)

## Tableau de données rapide pour rechercher un mot-clé 
https://mthcht.github.io/ThreatHunting-Keywords/
![image](https://assets.kitploit.com/production/public/readmes/48741/477608f39dee047778948ef170316f7d59e2fb0e2437b53e39e7de6900ecb900.png)

## Faux positifs

Contribuez et ajoutez vos faux positifs à la [liste](https://github.com/mthcht/ThreatHunting-Keywords/blob/main/_false_positives/false_positives_offensive_keywords.md) des faux positifs attendus

## Règles SIGMA

Consultez la table de correspondance traduite en [règles SIGMA](https://github.com/mthcht/ThreatHunting-Keywords-sigma-rules), je la mets généralement à jour en même temps :) 

![image](https://assets.kitploit.com/production/public/readmes/48741/298b4f42a0702b8a14376577a5fc2c670aa7a8246f9ee41cad9b39d573df0432.png)

## Mappage des techniques MITRE ATT&CK

avec l'addon splunk https://splunkbase.splunk.com/app/5742
![image](https://assets.kitploit.com/production/public/readmes/48741/6605c5297f2d2536e18f593e2a3f5ec02ed5e66adbe4970247a3eccba0cbe31d.png)

Couverture pour 2242 outils (mise à jour le 2024/08/30) :
![image](https://assets.kitploit.com/production/public/readmes/48741/eafcd79072b45d2a583d286d9d03084c01dba1de233c7b77f208f6c379081d84.png)


recherche splunk :

<details>```
| inputlookup threathunting-keywords.csv
| stats count by metadata_tool metadata_tool_techniques
| makemv delim=" - " metadata_tool_techniques
| mvexpand metadata_tool_techniques
| stats count by metadata_tool_techniques

Matrice des outils

Tableaux de bord Splunk (ce n'est qu'un exemple ; une grande variété de filtres peut être appliquée à l'aide des champs disponibles dans le fichier) :

Groupes d'acteurs de menace par outils dans ce projet

exemple de tableau de bord XML Splunk :

``` tools matrix tools_matrix tool categories metadata_category metadata_category | inputlookup threathunting-keywords.csv | stats count by metadata_category | fields - count -24h@h now all metadata_category IN ( ) * " " , groups name ALL metadata_groups_name IN ( ) * " " , metadata_groups_name metadata_groups_name | inputlookup threathunting-keywords.csv | stats count by metadata_groups_name | fields - count | eval metadata_groups_name = split(metadata_groups_name, " - ") | mvexpand metadata_groups_name | dedup metadata_groups_name -24h@h now | inputlookup threathunting-keywords.csv | search metadata_groups_name!=N/A $category$ | stats count as detection_patterns by metadata_groups_name metadata_tool | eval metadata_groups_name = split(metadata_groups_name, " - ") | mvexpand metadata_groups_name | search $groups$ -24h@h now none 728 progressbar categorical #3fc77a #d93f3c 6 false true true false true false true ```

image

image

image

🤝 Contribuer

Les contributions, les problèmes et les demandes de fonctionnalités sont les bienvenus !

Si vous souhaitez que j'ajoute un outil à la liste, créez une issue avec ce modèle :


Nom de l'outil :

``

Veuillez fournir le nom de l'outil.

Site web officiel ou lien vers le code source :

``

Fournissez un lien vers le site web officiel de l'outil ou son dépôt de code source (GitHub, GitLab, etc.). Si une documentation est disponible, veuillez l'inclure.

Description de l'outil :

``

Décrivez l'objectif, les fonctionnalités et les caractéristiques notables de l'outil. Si vous n'êtes pas sûr, laissez ce champ vide et j'examinerai l'outil plus en détail.

Utilisation connue par des acteurs malveillants (le cas échéant) :

``

Si vous disposez d'informations sur un usage connu ou potentiel de cet outil par des acteurs malveillants, veuillez les partager ici.

Classification de l'outil :

Veuillez choisir la catégorie la plus appropriée pour l'outil :

  • Offensif (Principalement utilisé par des attaquants, pas légitime pour un usage général)
  • Greyware (Outil légitime souvent abusé par des acteurs malveillants)
  • Signatures/mots-clés génériques (Signatures ou termes courants associés aux malwares détectés par les produits de sécurité)

Proposez des modifications à la liste via une PR (fournissez des retours sur les faux positifs, un échantillon de journaux si possible), si un mot-clé génère trop de faux positifs dans trop d'environnements, nous pouvons le supprimer)

Je déciderai si un outil mérite d'être ajouté à la liste. Les outils largement utilisés et reconnus par la communauté ont plus de chances d'être inclus que les outils obscurs ou récents.

Télécharger l’outil
  • 🛠️ offensive tool keyword : Ces mots-clés concernent des outils offensifs ou présentent une forte probabilité d'intention malveillante. Il est essentiel que ces termes soient pertinents et fiables pour détecter les menaces potentielles (faible taux de faux positifs)
  • 🛠️ greyware tool keyword : Les mots-clés de cette catégorie correspondent à des outils « légitimes » qui sont abusés par des acteurs malveillants. Comme ces outils ont également des usages légitimes, le potentiel de faux positifs est intrinsèquement plus élevé. Il est important d'interpréter ces résultats en sachant que toutes les détections ne signifient pas nécessairement une activité malveillante
  • 🛠️ signature keyword : Ces mots-clés peuvent ne pas être directement associés à des outils, mais peuvent inclure des noms de signatures de produits de sécurité, des chaînes spécifiques ou des mots importants dans la détection des menaces.
  • metadata_tool : Nom de l'outil que nous voulons détecter

  • metadata_description : description de l'outil que nous voulons détecter

  • metadata_tool_techniques : Techniques MITRE liées à l'outil que nous voulons détecter

  • metadata_tool_tactics : Tactiques MITRE liées à l'outil que nous voulons détecter

  • metadata_malwares_name : Noms des variantes de malwares qui utilisent l'outil en question

  • metadata_groups_name : Noms des groupes d'acteurs de la menace associés à l'outil

  • metadata_category : Nom de catégorie global de l'outil. Cela peut changer ultérieurement et les suggestions sont les bienvenues.

  • metadata_link : lien vers l'outil (code source, articles, échantillons, blog...)

  • metadata_enable_endpoint_detection : Champ indiquant si le mot-clé peut être utilisé efficacement dans les recherches sur les journaux des endpoints. Cela inclut, sans s'y limiter, les journaux d'événements Windows, l'EDR, les journaux PowerShell, auditd, les sessions bastion, Sysmon ou toute source de données contenant des champs d'activité de processus et de fichiers.

    • Si vous pouvez rechercher le mot-clé dans les journaux des endpoints, la valeur est 1 (activé).
    • Si le mot-clé n'est pas pertinent pour les journaux des endpoints, la valeur est 0 (désactivé).
  • metadata_enable_proxy_detection : Champ indiquant l'applicabilité du mot-clé pour les recherches dans les journaux réseau (Proxy, journaux DNS ou toute donnée avec des requêtes et des URL provenant du réseau interne)

    • Si vous pouvez rechercher le mot-clé dans les journaux d'activité réseau, la valeur est 1 (activé).
    • Si le mot-clé n'est pas pertinent pour les journaux d'activité réseau, la valeur est 0 (désactivé).
  • metadata_popularity_score : score de 1 à 10 (popularité faible à élevée)

  • metadata_severity_score : score de 1 à 10 (gravité faible à élevée)

  • metadata_tags : balises pour identifier des artefacts spécifiques, plusieurs balises peuvent être associées à un mot-clé. Lorsque certains artefacts spécifiques ne peuvent pas être ajoutés aux listes sans plus de contexte de détection, ils sont ajoutés dans mes autres listes impressionnantes pour la détection

  • metadata_comment : Ce champ peut contenir un commentaire utile ajouté pour le mot-clé.

  • metadata_github_stars : Nombre d'étoiles sur le projet github (si l'outil est sur github, sinon la valeur est N/A). Ceci est utilisé pour calculer le score de popularité

  • metadata_github_forks : Nombre de forks sur le projet github (si l'outil est sur github, sinon la valeur est N/A). Peut être utilisé pour les statistiques de tableau de bord des outils les plus utilisés

  • metadata_github_created_at : Date de création du projet github (si l'outil est sur github, sinon la valeur est N/A). Peut être utilisé pour les statistiques de tableau de bord

  • metadata_github_updated_at : Date de dernière mise à jour du projet github (si l'outil est sur github, sinon la valeur est N/A). Peut être utilisé pour suivre les mises à jour importantes des outils offensifs et ajuster les détections par mots-clés

  • _raw
    keyword
    _raw
    keyword_detection
    _raw
  • | search metadata_description!="" AND metadata_enable_endpoint_detection=1 nous nous concentrons uniquement sur les logs d'endpoints ici, donc nous ajoutons metadata_enable_endpoint_detection=1 pour ne correspondre qu'aux mots-clés pertinents pour les logs d'endpoints et metadata_description!="" pour n'avoir que les mots-clés correspondus.
  • | stats count earliest(_time) as firsttime latest(_time) as lasttime values(_raw) as raw by metadata_keyword_type keyword_detection index sourcetype ici j'ai fait un filtre rapide sans tous les champs de la lookup pour l'exemple (mais vous pouvez aussi les ajouter si vous voulez avoir plus de possibilités d'exclusions), cela nous permet d'avoir facilement une idée de quel mot-clé correspond beaucoup, afin de pouvoir exclure facilement la catégorie ou l'outil s'il y a trop de faux positifs !
  • Quand ma recherche est terminée, comment puis-je analyser les résultats ? Vous aurez les logs bruts classés par mots-clés et types de mots-clés ; en utilisant |loadjob myjobid, nous pouvons désormais manipuler la sortie avec les logs pertinents sans rechercher à nouveau dans tous les logs.
  • and use this splunk visualization: https://splunkbase.splunk.com/app/5742

    image image