Skip to content

morchidy/DNS-TXT-Threat-Intelligence

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DNS TXT Malware Detection with AI

Un système intelligent de détection de domaines malveillants basé sur l'analyse des enregistrements TXT DNS par apprentissage automatique


Contexte du projet

Ce projet représente le travail que j'ai effectué durant mon stage de 3 mois au Laboratoire d'Informatique de Grenoble (LIG). Il s'inscrit dans le cadre de recherches sur la sécurité des infrastructures DNS et l'application de l'apprentissage automatique à la détection de menaces cyber. Le rapport complet détaillant la méthodologie, les résultats et les analyses est disponible dans /docs/Rapport de stage final.pdf.

Propriété des données Les données utilisées dans ce projet (domaines, enregistrements DNS TXT, étiquettes, etc.) sont la propriété du Laboratoire d’Informatique de Grenoble (LIG). Le jeu de données complet n’est pas rendu public et n’est pas inclus dans ce dépôt. Seul un échantillon représentatif est fourni à des fins de démonstration et de reproductibilité.


Présentation Vidéo

Avant de plonger dans les détails techniques, nous vous recommandons de visionner cette présentation générée par NotebookLM qui explique les fondamentaux de la recherche DNS TXT et les enjeux de sécurité :

https://github.com/morchidy/DNSGuard-AI/releases/download/v1.0.0/DNS_txt_records_scientific_research.mp4

Cette vidéo est basée sur l'article scientifique "TXTing 101: Finding Security Issues in the Long Tail of DNS TXT Records" et couvre :

  • Qu'est-ce que le DNS et les enregistrements TXT
  • Pourquoi les enregistrements TXT sont cruciaux pour la sécurité
  • Comment les attaquants exploitent les records TXT à des fins malveillantes
  • Les motivations derrière cette recherche

Table des matières

  1. Vue d'ensemble
  2. Problématique et motivation
  3. Architecture du système
  4. Fonctionnalités principales
  5. Installation
  6. Utilisation
  7. Structure du projet
  8. Performance du modèle
  9. Documentation technique
  10. Contribution et licence

Vue d'ensemble

DNS TXT Malware Detection with AI est un système complet de détection de domaines malveillants qui analyse les enregistrements TXT DNS pour identifier automatiquement les menaces potentielles. Le système utilise un modèle de Machine Learning entraîné sur plus de 23 millions de domaines et atteint une précision de 92%.

Principe de fonctionnement

Le système repose sur l'hypothèse que les domaines malveillants et bénins présentent des signatures DNS TXT distinctes. En extrayant et en analysant ces enregistrements avec 134 expressions régulières, puis en les transformant en vecteurs de caractéristiques, un modèle d'arbre de décision peut prédire avec haute fiabilité si un domaine est malveillant ou bénin.

Pipeline en 4 étapes

1. Collecte DNS        → Récupération automatique des records TXT
2. Classification      → Application de 134 patterns regex
3. Vectorisation       → Transformation en vecteur 91 dimensions
4. Prédiction ML       → Classification par Decision Tree

Problématique et motivation

Contexte

Les enregistrements TXT DNS sont conçus pour stocker des informations textuelles arbitraires associées à un domaine. Ils sont largement utilisés pour :

  • Vérification de propriété de domaine (Google, Microsoft, etc.)
  • Configuration de sécurité email (SPF, DMARC, DKIM)
  • Validation de certificats SSL (ACME challenges)
  • Métadonnées de services (Stripe, Salesforce, Atlassian)

Le problème

Cependant, cette flexibilité fait également des enregistrements TXT une cible attractive pour les activités malveillantes :

  1. Command & Control (C2) - Canaux de communication cachés pour malwares
  2. Data exfiltration - Tunneling DNS pour extraire des données sensibles
  3. Domain Generation Algorithms (DGA) - Génération automatique de domaines malveillants
  4. Phishing infrastructure - Configuration DNS suspecte pour sites de phishing
  5. Cryptojacking - Distribution de scripts de minage via DNS

Notre approche

Contrairement aux méthodes traditionnelles qui se concentrent sur les noms de domaine ou les adresses IP, notre système analyse le contenu même des enregistrements TXT pour détecter des patterns malveillants. Cette approche permet de :

  • Détecter des menaces qui échapperaient aux listes noires traditionnelles
  • Identifier de nouveaux domaines malveillants avant leur référencement
  • Comprendre les configurations DNS typiques des infrastructures malveillantes
  • Fournir une décision exploitable en quelques secondes

Architecture du système

Schéma global

┌─────────────────────────────────────────────────────────────────────┐
│                        SYSTÈME DE DÉTECTION                         │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  ┌──────────────┐      ┌──────────────┐      ┌──────────────┐       │
│  │   Collecte   │ ───> │Classification│ ───> │Vectorisation │       │
│  │   DNS TXT    │      │  134 Regex   │      │  91 features │       │
│  └──────────────┘      └──────────────┘      └──────────────┘       │
│         │                      │                      │             │
│         │                      │                      │             │
│         v                      v                      v             │
│  ┌──────────────────────────────────────────────────────────┐       │
│  │              Modèle Decision Tree                        │       │
│  │         (23M+ domaines d'entraînement)                   │       │
│  │         Accuracy: 92% | AUC: 0.869                       │       │
│  └──────────────────────────────────────────────────────────┘       │
│                              │                                      │
│                              v                                      │
│  ┌──────────────────────────────────────────────────────────┐       │
│  │     Résultat: BENIGN ou MALICIOUS + Probabilités         │       │
│  └──────────────────────────────────────────────────────────┘       │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

Composants principaux

  1. Scripts de collecte DNS (scripts/)

    • txtfetcher.py - Collecte séquentielle
    • txtfetcher_mp.py - Collecte parallèle (multiprocessing)
    • domain_predictor.py - Prédicteur CLI interactif
  2. Moteur d'analyse (src/analysis/)

    • Classification par 134 expressions régulières
    • Enrichissement avec Bad Domain Archive (3.3M domaines)
    • Enrichissement avec Spamhaus DBL
  3. Pipeline Machine Learning (src/ml/)

    • Agrégation et vectorisation des données
    • Entraînement du modèle Decision Tree
    • Analyse ROC et optimisation du seuil
    • Modèle sauvegardé (92% accuracy)
  4. Interface graphique (src/gui/)

    • Application PyQt5 avec architecture MVC
    • 5 pages : Analyse simple, multiple, avancée, historique, à propos
    • Visualisations interactives (graphiques, tableaux)
  5. Framework de tests (tests/)

    • Tests du modèle ML (synthétiques + feature importance)
    • Tests de classification regex (8979 échantillons)
    • Rapports d'évaluation détaillés

Fonctionnalités principales

Interface graphique (GUI)

L'application PyQt5 offre une interface intuitive pour analyser les domaines :

Analyse de domaine unique

Interface d'analyse simple

Fonctionnalités :

  • Saisie et validation d'un nom de domaine
  • Affichage des enregistrements TXT récupérés
  • Classification de chaque TXT par catégorie
  • Prédiction ML avec classe et probabilités
  • Export des résultats

Analyse de domaines multiples

Interface d'analyse multiple

Fonctionnalités :

  • Analyse par batch (liste ou fichier)
  • Barre de progression en temps réel
  • Tableau de résultats avec tri et filtrage
  • Graphiques de distribution (benign/malicious)
  • Statistiques agrégées
  • Export CSV/JSON

Interface en ligne de commande (CLI)

Pour l'automatisation et l'intégration dans des scripts :

python scripts/domain_predictor.py example.com

Sortie formatée :

================================================================================
           DOMAIN REPUTATION PREDICTOR - CLI VERSION
================================================================================

RÉSULTATS POUR: example.com
--------------------------------------------------------------------------------

TXT RECORDS TROUVÉS (2):
   1. "v=spf1 include:_spf.google.com ~all"
      └─> Catégorie: SPF
   2. "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com"
      └─> Catégorie: DMARC

CLASSE PRÉDITE: BENIGN [OK]

STATISTIQUES PAR CATÉGORIE:
   - SPF: 1
   - DMARC: 1

PROBABILITÉS:
   benign       ########################################  98.5%
   malicious    #.......................................   1.5%

Temps d'exécution: 0.342 secondes
================================================================================

Collecte DNS massive

Pour analyser des millions de domaines :

# Collecte parallèle avec 8 workers
python scripts/txtfetcher_mp.py domains.txt output.csv --workers 8

# Classification par regex
python src/analysis/regex_classification/analyzer_mp.py output.csv classified.csv --workers 8

Installation

Prérequis

  • Python 3.8 ou supérieur
  • pip (gestionnaire de paquets Python)
  • Git (pour cloner le repository)
  • Connexion Internet (pour les requêtes DNS)

Étape 1 : Cloner le repository

git clone https://github.com/votre-username/DNS-txt-malware-detection-with-AI.git
cd DNS-txt-malware-detection-with-AI

Étape 2 : Créer un environnement virtuel (recommandé)

# Sur Linux/macOS
python3 -m venv venv
source venv/bin/activate

# Sur Windows
python -m venv venv
venv\Scripts\activate

Étape 3 : Installer les dépendances

pip install -r requirements.txt

Dépendances principales :

  • pandas>=1.5.0 - Manipulation de données
  • scikit-learn>=1.3.0 - Machine Learning
  • PyQt5>=5.15.0 - Interface graphique
  • dnspython>=2.3.0 - Requêtes DNS
  • matplotlib>=3.6.0 - Visualisations
  • tqdm>=4.64.0 - Barres de progression

Étape 4 : Vérifier l'installation

python test_paths.py

Sortie attendue :

Vérification des chemins...
[OK] Modèle trouvé: src/ml/ml_model/dt_model_config_fin.pkl
[OK] Features trouvées: src/ml/ml_model/dcf.csv
[OK] Module regex importé avec succès
[OK] 134 patterns regex chargés
Installation validée avec succès !

Utilisation

Lancer l'interface graphique

python src/gui/main.py

L'application se lance avec une fenêtre principale contenant 5 onglets :

  1. Analyse simple - Analyser un domaine unique
  2. Analyse multiple - Analyser plusieurs domaines en batch
  3. Analyse avancée - Options de configuration avancées
  4. Historique - Consulter les analyses précédentes
  5. À propos - Informations sur le projet

Utiliser le prédicteur CLI

Mode interactif

python scripts/domain_predictor.py

Le script vous demandera d'entrer le nom du domaine à analyser.

Mode direct

python scripts/domain_predictor.py google.com

Collecter des enregistrements TXT

Pour une petite liste de domaines (< 10 000)

python scripts/txtfetcher.py domains.txt output.csv

Pour une grande liste (millions de domaines)

python scripts/txtfetcher_mp.py domains.txt output.csv --workers 8

Arguments :

  • domains.txt - Fichier avec un domaine par ligne
  • output.csv - Fichier de sortie au format CSV
  • --workers N - Nombre de processus parallèles (défaut: 4)

Format de sortie :

Domain,TXT
google.com,"""v=spf1 include:_spf.google.com ~all"""
google.com,"""v=DMARC1; p=quarantine; rua=mailto:dmarc@google.com"""

Classifier avec les expressions régulières

python src/analysis/regex_classification/analyzer_mp.py input.csv output.csv --workers 8

Format de sortie enrichi :

Domain,TXT,Category,Label
google.com,"v=spf1...",Security,SPF
google.com,"v=DMARC1...",Security,DMARC

Exécuter les tests

Tous les tests

python tests/run_all_tests.py

Tests individuels

# Test du modèle ML
python tests/test_ml_model.py

# Test de classification regex
python tests/test_regex_classification.py

Sorties :

  • tests/output/ml_model_evaluation.txt - Rapport complet du modèle
  • tests/output/classification_results.csv - Résultats de classification

Structure du projet

DNS-txt-malware-detection-with-AI/
│
├── README.md                          # Ce fichier
├── requirements.txt                   # Dépendances Python
├── setup.py                           # Configuration d'installation
├── test_paths.py                      # Validation de l'installation
│
├── data/                              # Données brutes (non versionnées)
├── samples/                           # Échantillons pour tests
│   ├── txt_records_sample.csv         # 8979 enregistrements TXT
│   └── txt_records_sample.json        # Version JSON
│   └── raw_dataset_sample.csv         # Échantillon de jeu de données AVANT traitement
│   └── balanced_dataset_sample.csv    # Échantillon de jeu de données équilibré 10k (APRÈS feature engineering: 5 k bénins / 5 k malveillants),extrait d’un jeu de données plus large (23 M)
├── scripts/                           # Scripts utilitaires et CLI
│   ├── txtfetcher.py                  # Collecte DNS séquentielle
│   ├── txtfetcher_mp.py               # Collecte DNS parallèle
│   └── domain_predictor.py            # Prédicteur CLI
│
├── src/                               # Code source principal
│   ├── analysis/                      # Analyse et enrichissement
│   │   ├── regex_classification/      # 134 regex + classificateurs
│   │   ├── bad_domains_archive/       # Enrichissement BDA
│   │   └── spamhaus/                  # Enrichissement Spamhaus DBL
│   │
│   ├── ml/                            # Machine Learning
│   │   ├── ml_model/                  # Modèle + features
│   │   │   ├── dt_model_config_fin.pkl
│   │   │   └── dcf.csv
│   │   ├── train.py                   # Entraînement standard
│   │   ├── train_with_roc.py          # Entraînement avec ROC
│   │   ├── agreg2.py                  # Vectorisation
│   │   └── _class.py                  # Utilitaires
│   │
│   └── gui/                           # Interface graphique PyQt5
│       ├── main.py                    # Point d'entrée
│       ├── config/                    # Configuration
│       ├── models/                    # Logique métier (MVC)
│       ├── views/                     # Interfaces utilisateur
│       │   ├── main_window.py
│       │   └── pages/                 # 5 pages de l'application
│       ├── controllers/               # Contrôleurs (orchestration)
│       └── utils/                     # Utilitaires et styles
│
├── tests/                             # Tests et validation
│   ├── test_ml_model.py               # Tests du modèle ML
│   ├── test_regex_classification.py   # Tests des regex
│   ├── run_all_tests.py               # Lanceur de tests
│   ├── README.md                      # Documentation des tests
│   └── output/                        # Résultats des tests
│
└── docs/                              # Documentation technique
    ├── README.md                      # Index de la documentation
    ├── PROJECT_ARCHITECTURE.md        # Architecture complète
    ├── ML_MODEL_DOCUMENTATION.md      # Documentation du modèle ML
    ├── documentation_regex.pdf        # 134 regex documentées
    ├── images/                        # Captures d'écran
    │   ├── roc_curve.png
    │   ├── single_domain_window.png
    │   └── multiple_domains_window.png
    └── videos/                        # Démonstrations
        └── DNS_txt_records_scientific_research.mp4

Performance du modèle

Métriques globales

Le modèle Decision Tree a été entraîné sur 23,382,012 domaines (20M bénins + 3.3M malveillants) avec les performances suivantes :

                    MÉTRIQUES DE CLASSIFICATION

              precision    recall  f1-score   support

      benign       0.93      0.98      0.95   3435916
   malicious       0.69      0.40      0.51    418648

    accuracy                           0.92   3854564
   macro avg       0.81      0.69      0.73   3854564
weighted avg       0.90      0.92      0.91   3854564

AUC Score: 0.869

Interprétation des résultats

  • Accuracy globale : 92% - Le modèle classe correctement 92% des domaines
  • Précision benign : 93% - 93% des domaines classés comme bénins le sont réellement
  • Rappel benign : 98% - 98% des domaines bénins sont détectés
  • Précision malicious : 69% - 69% des domaines classés comme malveillants le sont réellement
  • Rappel malicious : 40% - 40% des domaines malveillants sont détectés (seuil par défaut 0.5)

Analyse ROC et seuil optimal

Courbe ROC

L'analyse ROC a identifié un seuil optimal de 0.1862 qui permet de :

  • Détecter 96% des domaines malveillants (vs 40% avec seuil 0.5)
  • Accepter 24% de faux positifs (compromis acceptable en cybersécurité)
  • AUC de 0.869 - Excellente capacité discriminative

Configuration recommandée selon le cas d'usage

Scénario Seuil Détection Faux positifs Usage
Blocage automatique 0.5 40% 5% Bloquer sans intervention humaine
Surveillance proactive 0.1862 96% 24% Alerter pour investigation
Détection maximale 0.05 99% 45% Recherche exhaustive de menaces

Top 5 features les plus importantes

Rang Feature Importance Description
1 SPF 61.9% Présence d'enregistrements SPF
2 DMARC 19.8% Présence d'enregistrements DMARC
3 Empty 16.8% Absence d'enregistrements TXT
4 Verification Keywords 1.4% Mots-clés de vérification
5 Pattern Keywords 0.07% Patterns de mots-clés suspects

Observation clé : Les 3 premières features (SPF, DMARC, Empty) représentent 98.5% de l'importance totale du modèle.


Documentation technique

Documents disponibles

  1. PROJECT_ARCHITECTURE.md (1218 lignes)

    • Architecture complète du système
    • Description détaillée de tous les modules et scripts
    • 5 pipelines documentés de bout en bout
    • Guide de navigation dans le code
  2. ML_MODEL_DOCUMENTATION.md (471 lignes)

    • Vue d'ensemble du modèle prédictif
    • Pipeline de traitement en 4 étapes
    • Préparation des données (23M+ domaines)
    • Entraînement et optimisation
    • Analyse ROC détaillée
    • Interprétation et limitations
  3. tests/README.md

    • Guide d'utilisation du framework de tests
    • Description des tests disponibles
    • Interprétation des résultats
  4. scripts/README.md

    • Documentation des scripts CLI
    • Exemples d'utilisation
    • Paramètres et options

Navigation rapide


Cas d'usage

1. Analyse de sécurité d'un domaine

Scenario : Un analyste de sécurité veut vérifier si un nouveau domaine suspect est malveillant.

Solution :

python scripts/domain_predictor.py suspicious-domain.com

Résultat : Décision en < 1 seconde avec justification.


2. Audit de sécurité d'une liste de domaines

Scenario : Une entreprise veut vérifier une liste de 10 000 domaines tiers.

Solution :

# Collecte DNS
python scripts/txtfetcher_mp.py domains.txt dns_data.csv --workers 8

# Classification
python src/analysis/regex_classification/analyzer_mp.py dns_data.csv classified.csv --workers 8

# Import dans GUI pour visualisation
python src/gui/main.py
# → Onglet "Analyse multiple" → Importer classified.csv

3. Recherche de menaces (Threat Hunting)

Scenario : Identifier des domaines malveillants dans des logs de trafic réseau.

Solution :

# Extraire les domaines uniques des logs
cat network_logs.txt | grep -oE '[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}' | sort -u > domains.txt

# Analyser avec le système
python scripts/txtfetcher_mp.py domains.txt results.csv --workers 16
python src/analysis/regex_classification/analyzer_mp.py results.csv analyzed.csv --workers 16

# Filtrer les malveillants
# (script personnalisé ou import GUI)

4. Intégration dans un SIEM

Scenario : Intégrer la détection dans une plateforme SIEM existante.

Solution :

# Exemple d'intégration Python
from scripts.domain_predictor import DomainPredictor

predictor = DomainPredictor()

# Analyser un domaine
pred, labels, txts, features = predictor.predict("example.com")

# Envoyer l'alerte si malveillant
if pred.lower() == "malicious":
    send_alert_to_siem({
        "domain": "example.com",
        "prediction": pred,
        "confidence": features,
        "txt_records": txts
    })

5. Recherche académique

Scenario : Étudier les configurations DNS des domaines malveillants vs bénins.

Solution :

  • Utiliser les scripts de collecte massive pour constituer un dataset
  • Analyser avec le système pour classification automatique
  • Exporter les résultats pour analyse statistique
  • Consulter ML_MODEL_DOCUMENTATION.md pour méthodologie

Limitations et considérations

Limitations techniques

  1. Dépendance à la qualité des sources de vérité

    • La classification repose sur Bad Domain Archive et Spamhaus DBL
    • Des domaines malveillants non référencés peuvent être classés comme bénins
  2. Évolution temporelle

    • Les pratiques malveillantes évoluent rapidement
    • Réentraînement périodique recommandé (tous les 3-6 mois)
  3. Simplification des données

    • Seule la présence/absence de catégories est comptabilisée
    • Le contenu exact des enregistrements n'est pas analysé en détail
  4. Biais vers la classe majoritaire

    • Le modèle tend à favoriser la classification "benign"
    • Ajuster le seuil selon le niveau de risque acceptable

Recommandations d'utilisation

  1. Utiliser comme outil d'aide à la décision, non comme vérité absolue
  2. Valider manuellement les cas critiques avant action définitive
  3. Combiner avec d'autres sources (WHOIS, réputation IP, contenu web)
  4. Monitorer les performances en production et ajuster les seuils
  5. Réentraîner régulièrement avec des données récentes

Considérations de performance

  • Requêtes DNS : Limitées par les timeouts et rate-limiting des serveurs DNS
  • Multiprocessing : Ajuster le nombre de workers selon les ressources disponibles
  • Mémoire : L'analyse de millions de domaines nécessite une gestion efficace de la RAM
  • Stockage : Les dumps DNS complets peuvent occuper plusieurs Go

Dépendances et technologies

Stack technique

Catégorie Technologies
Langage Python 3.8+
DNS dnspython 2.3+, tldextract 3.1+
Data Science pandas 1.5+, numpy 1.24+
Machine Learning scikit-learn 1.3+
Visualisation matplotlib 3.6+, seaborn 0.12+
Interface graphique PyQt5 5.15+
Utilitaires tqdm 4.64+, regex 2021.11+
Tests pytest 7.0+ (optionnel)

Architecture logicielle

  • MVC (Model-View-Controller) pour l'interface graphique
  • CLI (Command-Line Interface) pour les scripts
  • Multiprocessing pour la parallélisation
  • Pickle pour la sérialisation des modèles

Formats de données

  • CSV - Dumps DNS, résultats d'analyse
  • JSON - Exports et configuration
  • Pickle - Modèles ML, sets, dictionnaires
  • Markdown - Documentation

Roadmap et améliorations futures

Version 1.1 (Court terme)

  • Support des enregistrements DNS supplémentaires (A, AAAA, MX, NS)
  • Export des rapports en PDF
  • Interface web (Flask/Django)
  • API REST pour intégration externe

Version 2.0 (Moyen terme)

  • Modèles ML supplémentaires (Random Forest, XGBoost, Neural Networks)
  • Apprentissage en ligne (online learning)
  • Analyse temporelle (évolution des domaines dans le temps)
  • Clustering de domaines similaires

Version 3.0 (Long terme)

  • Analyse de contenu web complet (HTML, JS, CSS)
  • Corrélation avec d'autres sources (WHOIS, certificats SSL, contenu)
  • Système de réputation dynamique
  • Intégration avec MISP (Malware Information Sharing Platform)

Contribution et licence

Comment contribuer

Nous accueillons les contributions de la communauté ! Voici comment participer :

  1. Fork le repository
  2. Créer une branche pour votre fonctionnalité (git checkout -b feature/AmazingFeature)
  3. Commiter vos changements (git commit -m 'Add some AmazingFeature')
  4. Push vers la branche (git push origin feature/AmazingFeature)
  5. Ouvrir une Pull Request

Domaines de contribution

  • Amélioration du modèle ML (nouvelles features, algorithmes)
  • Ajout d'expressions régulières pour nouvelles catégories
  • Correction de bugs
  • Documentation
  • Tests
  • Traductions

Code de conduite

Nous suivons un code de conduite basé sur le respect mutuel et l'inclusivité. Tout comportement irrespectueux ou harcelant sera sanctionné.

Licence

Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.


Contact et support

Auteurs: Youssef MORCHID

Projet : DNS TXT Malware Detection with AI
Institution : Laboratoire d’Informatique de Grenoble (LIG)
Date : 2025

Support

  • Issues GitHub : Pour rapporter des bugs ou demander des fonctionnalités
  • Documentation : Consultez le dossier docs/ pour la documentation complète
  • Email : morchidy33@gmail.com

Références scientifiques

Ce projet s'inspire de recherches académiques sur la sécurité DNS :

  • "TXTing 101: Finding Security Issues in the Long Tail of DNS TXT Records"
  • "Analyzing the DNS Cache Poisoning Attack"
  • "Machine Learning for Malicious Domain Detection"

Remerciements

Ce projet n'aurait pas été possible sans :

  • Bad Domain Archive - Source de domaines malveillants (LIG)
  • Spamhaus DBL - Liste de domaines malveillants (LIG)
  • Public Suffix List - Liste de suffixes publics pour l'extraction de domaines
  • scikit-learn - Framework de Machine Learning
  • PyQt5 - Framework d'interface graphique
  • dnspython - Bibliothèque de requêtes DNS

Annexes

Glossaire

  • TXT Record : Enregistrement DNS contenant des informations textuelles arbitraires
  • SPF : Sender Policy Framework - Mécanisme de validation d'emails
  • DMARC : Domain-based Message Authentication, Reporting & Conformance
  • DKIM : DomainKeys Identified Mail - Signature cryptographique des emails
  • C2 : Command and Control - Infrastructure de contrôle de malwares
  • DGA : Domain Generation Algorithm - Algorithme de génération de domaines
  • AUC : Area Under Curve - Mesure de performance d'un modèle de classification
  • ROC : Receiver Operating Characteristic - Courbe d'analyse des performances

FAQ

Q: Le système fonctionne-t-il sans connexion Internet ?
R: Non, les requêtes DNS nécessitent une connexion Internet. Cependant, l'analyse de fichiers CSV pré-collectés peut se faire hors ligne.

Q: Puis-je utiliser ce système en production ?
R: Le système peut être utilisé en production comme outil d'aide à la décision, mais nous recommandons une validation humaine pour les décisions critiques.

Q: Combien de temps prend l'analyse d'un domaine ?
R: En moyenne 0.3-0.5 secondes par domaine (incluant la requête DNS).

Q: Le modèle peut-il être réentraîné ?
R: Oui, utilisez les scripts dans src/ml/ avec vos propres données.

Q: Les enregistrements TXT sont-ils suffisants pour détecter tous les malwares ?
R: Non, c'est un indicateur parmi d'autres. Combinez avec d'autres sources pour une analyse complète.


Développé avec passion pour améliorer la sécurité DNS

Dernière mise à jour : 1er novembre 2025

About

AI-powered malicious domain detection through DNS TXT record analysis. Trained on 23M+ domains with 92% accuracy using Decision Tree ML model.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors