Communitygithub.com

Analyse médico-légale de navigateur avec Hindsight

Analysez les bases de données des navigateurs Chromium avec Hindsight pour extraire et corréler l'historique de navigation, les téléchargements, les cookies, le contenu en cache, les données de saisie automatique, les mots de passe enregistrés et les extensions de Chrome, Edge, Brave, Opera et Vivaldi dans une chronologie unifiée (sortie XLSX, JSON ou SQLite). Utilisez-le lors de réponses à incidents, d'enquêtes sur les menaces internes ou d'affaires pénales où vous devez reconstruire l'activité d'un utilisateur.

Qu'est-ce que Analyse médico-légale de navigateur avec Hindsight ?

Hindsight est un outil open source d’analyse médico-légale de navigateur, conçu pour analyser les artefacts de Google Chrome et d’autres navigateurs basés sur Chromium (Microsoft Edge, Brave, Opera, Vivaldi). Il extrait et corrèle des données provenant de plusieurs fichiers de base de données du navigateur pour créer une chronologie unifiée de l’activité Web. Hindsight peut analyser les URLs, l’historique des téléchargements, les enregistrements de cache, les favoris, les données de saisie automatique, les mots de passe enregistrés, les préférences, les extensions, les cookies HTTP, le stockage local (cookies HTML5), les données de connexion et les informations de session/onglet. L’outil produit des chronologies chronologiques dans plusieurs formats de sortie (XLSX, JSON, SQLite), permettant aux enquêteurs de reconstruire l’activité Web d’un utilisateur pour la réponse aux incidents, les enquêtes sur les menaces internes et les affaires pénales. Il prend en charge les systèmes d’exploitation Windows, macOS et Linux, et peut être utilisé en ligne de commande ou via une interface Web.

Compatible avec~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/mukul975/Anthropic-Cybersecurity-Skills/tree/main/skills/analyzing-browser-forensics-with-hindsight

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait Analyse médico-légale de navigateur avec Hindsight ?

Présentation

Hindsight est un outil open source d’analyse médico-légale de navigateur conçu pour analyser les artefacts de Google Chrome et d’autres navigateurs basés sur Chromium (Microsoft Edge, Brave, Opera, Vivaldi). Il extrait et corrèle des données provenant de plusieurs fichiers de base de données du navigateur pour créer une chronologie unifiée de l’activité Web. Hindsight peut analyser les URLs, l’historique des téléchargements, les enregistrements de cache, les favoris, les données de saisie automatique, les mots de passe enregistrés, les préférences, les extensions de navigateur, les cookies HTTP, le stockage local (cookies HTML5), les données de connexion et les informations de session/onglet. L’outil produit des chronologies chronologiques dans plusieurs formats de sortie (XLSX, JSON, SQLite) qui permettent aux enquêteurs de reconstruire l’activité Web d’un utilisateur pour la réponse aux incidents, les enquêtes sur les menaces internes et les affaires pénales.

Quand l’utiliser

  • Lors d’enquêtes sur des incidents de sécurité nécessitant une analyse médico-légale de navigateur avec Hindsight
  • Lors de l’élaboration de règles de détection ou de requêtes de chasse aux menaces pour ce domaine
  • Lorsque les analystes SOC ont besoin de procédures structurées pour ce type d’analyse
  • Lors de la validation de la couverture de la surveillance de sécurité pour les techniques d’attaque associées

Prérequis

  • Python 3.8+ avec Hindsight installé (pip install pyhindsight)
  • Accès aux répertoires de profil du navigateur à partir d’une image médico-légale
  • Données de profil du navigateur (non chiffrées avec le chiffrement au niveau du système d’exploitation)
  • Timeline Explorer ou application de tableur pour l’analyse

Emplacements des profils de navigateur

NavigateurChemin du profil Windows
Chrome%LOCALAPPDATA%\Google\Chrome\User Data\Default\
Edge%LOCALAPPDATA%\Microsoft\Edge\User Data\Default\
Brave%LOCALAPPDATA%\BraveSoftware\Brave-Browser\User Data\Default\
Opera%APPDATA%\Opera Software\Opera Stable\
Vivaldi%LOCALAPPDATA%\Vivaldi\User Data\Default\
Chrome (macOS)~/Library/Application Support/Google/Chrome/Default/
Chrome (Linux)~/.config/google-chrome/Default/

Principaux fichiers d’artefacts

FichierContenu
HistoryVisites d’URL, téléchargements, recherches par mots-clés
CookiesCookies HTTP avec domaine, date d’expiration, valeurs
Web DataEntrées de saisie automatique, cartes de crédit enregistrées
Login DataNoms d’utilisateur/mots de passe enregistrés (chiffrés)
BookmarksArborescence de favoris JSON
PreferencesConfiguration du navigateur et extensions
Local Storage/Stockage local HTML5 par domaine
Session Storage/Stockage spécifique à la session par domaine
Network Action PredictorURLs précédemment tapées
ShortcutsRaccourcis et prédictions de la barre d’adresse
Top SitesSites fréquemment visités

Exécution de Hindsight

Ligne de commande

# Analyse de base d’un profil Chrome
hindsight.exe -i "C:\Evidence\Users\suspect\AppData\Local\Google\Chrome\User Data\Default" -o C:\Output\chrome_analysis

# Spécifier le type de navigateur
hindsight.exe -i "/chemin/vers/profil" -o /output/analysis -b Chrome

# Format de sortie JSON
hindsight.exe -i "C:\Evidence\Chrome\Default" -o C:\Output\chrome --format jsonl

# Avec analyse du cache (plus lent mais plus complet)
hindsight.exe -i "C:\Evidence\Chrome\Default" -o C:\Output\chrome --cache

Interface Web

# Démarrer l’interface Web Hindsight
hindsight_gui.exe
# Accéder à http://localhost:8080
# Télécharger ou pointer vers le répertoire du profil du navigateur
# Configurer le format de sortie et les options d’analyse
# Générer et télécharger le rapport

Détails de l’analyse des artefacts

Historique des URLs et visites

-- Schéma de la base de données Chrome History (tables clés)
-- table urls : id, url, title, visit_count, typed_count, last_visit_time
-- table visits : id, url, visit_time, from_visit, transition, segment_id

-- Les horodatages sont au format Chrome/WebKit : microsecondes depuis 1601-01-01
-- Conversion : datetime((visit_time/1000000)-11644473600, 'unixepoch')

Historique des téléchargements

-- table downloads : id, current_path, target_path, start_time, end_time,
--   received_bytes, total_bytes, state, danger_type, interrupt_reason,
--   url, referrer, tab_url, mime_type, original_mime_type

Analyse des cookies

-- table cookies : creation_utc, host_key, name, value, encrypted_value,
--   path, expires_utc, is_secure, is_httponly, last_access_utc,
--   has_expires, is_persistent, priority, samesite

Script d’analyse Python

import sqlite3
import os
import json
import sys
from datetime import datetime, timedelta


CHROME_EPOCH = datetime(1601, 1, 1)


def chrome_time_to_datetime(chrome_ts: int):
    """Convertir un horodatage Chrome en datetime."""
    if chrome_ts == 0:
        return None
    try:
        return CHROME_EPOCH + timedelta(microseconds=chrome_ts)
    except (OverflowError, OSError):
        return None


def analyze_chrome_history(profile_path: str, output_dir: str) -> dict:
    """Analyser la base de données Chrome History pour des preuves médico-légales."""
    history_db = os.path.join(profile_path, "History")
    if not os.path.exists(history_db):
        return {"error": "Base de données History introuvable"}

    os.makedirs(output_dir, exist_ok=True)
    conn = sqlite3.connect(f"file:{history_db}?mode=ro", uri=True)

    # Visites d’URL avec horodatages
    cursor = conn.cursor()
    cursor.execute("""
        SELECT u.url, u.title, v.visit_time, u.visit_count,
               v.transition & 0xFF as transition_type
        FROM visits v JOIN urls u ON v.url = u.id
        ORDER BY v.visit_time DESC LIMIT 5000
    """)
    visits = [{
        "url": r[0], "title": r[1],
        "visit_time": str(chrome_time_to_datetime(r[2])),
        "total_visits": r[3], "transition": r[4]
    } for r in cursor.fetchall()]

    # Téléchargements
    cursor.execute("""
        SELECT target_path, tab_url, start_time, end_time,
               received_bytes, total_bytes, mime_type, state
        FROM downloads ORDER BY start_time DESC LIMIT 1000
    """)
    downloads = [{
        "path": r[0], "source_url": r[1],
        "start_time": str(chrome_time_to_datetime(r[2])),
        "end_time": str(chrome_time_to_datetime(r[3])),
        "received_bytes": r[4], "total_bytes": r[5],
        "mime_type": r[6], "state": r[7]
    } for r in cursor.fetchall()]

    # Recherches par mots-clés
    cursor.execute("""
        SELECT k.term, u.url, k.url_id
        FROM keyword_search_terms k JOIN urls u ON k.url_id = u.id
        ORDER BY u.last_visit_time DESC LIMIT 1000
    """)
    searches = [{"term": r[0], "url": r[1]} for r in cursor.fetchall()]

    conn.close()

    report = {
        "analysis_timestamp": datetime.now().isoformat(),
        "profile_path": profile_path,
        "total_visits": len(visits),
        "total_downloads": len(downloads),
        "total_searches": len(searches),
        "visits": visits,
        "downloads": downloads,
        "searches": searches
    }

    report_path = os.path.join(output_dir, "browser_forensics.json")
    with open(report_path, "w") as f:
        json.dump(report, f, indent=2)

    return report


def main():
    if len(sys.argv) < 3:
        print("Usage: python process.py <chrome_profile_path> <output_dir>")
        sys.exit(1)
    analyze_chrome_history(sys.argv[1], sys.argv[2])


if __name__ == "__main__":
    main()

Références

Exemple de sortie

$ python hindsight.py -i /evidence/chrome-profile -o /analysis/hindsight_output

Hindsight v2024.01 - Analyse médico-légale de navigateur Chrome/Chromium
================================================================

Profil : /evidence/chrome-profile (Chrome 120.0.6099.130)
OS : Windows 10

[+] Analyse de la base de données History...
    Enregistrements d'URL :          12,456
    Enregistrements de téléchargements : 234
    Termes de recherche :            567

[+] Analyse de la base de données Cookies...
    Enregistrements de cookies :       8,923
    Cookies chiffrés :                 6,712

[+] Analyse des données Web (Saisie automatique)...
    Entrées de saisie automatique :   1,234
    Entrées de carte de crédit :      2 (chiffrées)

[+] Analyse des données de connexion...
    Identifiants enregistrés :        45 (chiffrés)

[+] Analyse des favoris...
    Entrées de favoris :              189

--- Historique de navigation (10 dernières entrées) ---
Horodatage (UTC)        | URL                                          | Titre                        | Nombre de visites
2024-01-15 14:32:05.123  | https://mail.corporate.com/inbox             | Courrier professionnel        | 45
2024-01-15 14:33:12.456  | https://drive.google.com/file/d/1aBcDe...    | Rapport_financier_Q4.xlsx     | 1
2024-01-15 14:35:44.789  | https://mega.nz/folder/xYz123               | MEGA - Cloud sécurisé         | 3
2024-01-15 14:36:01.234  | https://mega.nz/folder/xYz123#upload        | MEGA - Téléversement          | 8
2024-01-15 14:42:15.567  | https://pastebin.com/raw/kL9mN2pQ           | Pastebin (brut)               | 1
2024-01-15 15:01:33.890  | https://192.168.1.50:8443/admin              | Panneau d'administration      | 12
2024-01-15 15:15:22.111  | https://transfer.sh/upload                  | transfer.sh                   | 2
2024-01-15 15:30:45.222  | https://vpn-gateway.corporate.com            | Connexion VPN                 | 5
2024-01-15 16:00:00.333  | https://whatismyipaddress.com                 | Quelle est mon IP             | 1
2024-01-15 16:05:12.444  | https://protonmail.com/inbox                 | ProtonMail                    | 3

--- Téléchargements (suspects) ---
Horodatage (UTC)        | Nom du fichier              | Source URL                               | Taille
2024-01-15 14:33:15.000  | Q4_Financial_Report.xlsm   | https://phish-domain.com/docs/report     | 245 Ko
2024-01-15 14:34:02.000  | update_client.exe          | https://cdn.evil-updates.com/client.exe  | 1.2 Mo

--- Cookies (jetons de session) ---
Domaine                | Nom              | Expiration        | Sécurisé | HttpOnly
.corporate.com           | SESSION_ID        | 2024-01-16 14:32   | Oui    | Oui
.mega.nz                 | session           | Session           | Oui    | Oui
.protonmail.com          | AUTH-TOKEN        | 2024-02-15 00:00   | Oui    | Oui

Rapport enregistré dans : /analysis/hindsight_output/Hindsight_Report.xlsx

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

abusing-dpapi-for-credential-access

Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys) online or offline using SharpDPAPI, SharpChrome, Mimikatz, or Impacket

abusing-shadow-credentials-for-privesc

Take over Active Directory accounts by writing attacker-controlled public keys to msDS-KeyCredentialLink (Shadow Credentials) with pyWhisker, Whisker, or Certipy, then authenticate via PKINIT to recover the target

achieving-cmmc-level-2-compliance

>-

acquiring-disk-image-with-dd-and-dcfldd

Create forensically sound bit-for-bit disk images with dd or dcfldd on a Linux forensic workstation, preserving evidence integrity through hash verification (MD5/SHA) during acquisition. Use when imaging a suspect drive, USB device, or memory card for investigation, preserving volatile disk evidence during incident response, or producing a verified copy for legal or law-enforcement proceedings before any destructive analysis.

analyzing-active-directory-acl-abuse

Detect dangerous ACL misconfigurations in Active Directory using ldap3

analyzing-android-malware-with-apktool

Perform static analysis of Android APK malware using apktool for resource decompilation, jadx for Java source recovery, and androguard for manifest inspection, dangerous permission-combination detection, and identification of obfuscated code, dynamic code loading, and reflection-based API calls. Use to statically triage a suspicious APK without executing it or to build mobile malware detection rules.

analyzing-api-gateway-access-logs

Parses API Gateway access logs (AWS API Gateway, Kong, Nginx) to detect

analyzing-apt-group-with-mitre-navigator

Query ATT&CK data with attackcti, mitreattack-python, and stix2, then build MITRE ATT&CK Navigator layers and multi-layer heatmap overlays mapping one or more APT groups

analyzing-azure-activity-logs-for-threats

Queries Azure Monitor activity logs and sign-in logs via azure-monitor-query

analyzing-bootkit-and-rootkit-samples

Analyzes bootkit and advanced rootkit malware infecting the Master

analyzing-campaign-attribution-evidence

Systematically evaluate cyber-campaign evidence to attribute an operation to a threat actor, using the Diamond Model and Analysis of Competing Hypotheses (ACH) to weigh infrastructure overlaps, TTP consistency, malware code similarity, and timing/language artifacts into confidence-weighted attribution assessments. Use when an incident investigation needs a defensible attribution confidence level.

analyzing-certificate-transparency-for-phishing

Monitor Certificate Transparency logs using crt.sh and Certstream to

analyzing-cloud-storage-access-patterns

Detect abnormal access in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics for after-hours bulk downloads, new-IP access, and API-call spikes (e.g. GetObject) via statistical baselines and time-series anomaly detection. Use when investigating suspected cloud data exfiltration or building related detection rules.

analyzing-cobalt-strike-beacon-configuration

Extract and analyze Cobalt Strike beacon configuration from PE files

analyzing-cobaltstrike-malleable-c2-profiles

Parse and analyze Cobalt Strike Malleable C2 profiles with dissect.cobaltstrike (profiles and beacon-payload configs) and pyMalleableC2 (AST parsing) to extract HTTP/DNS transforms, URIs, headers, sleep/jitter, and injection behavior, then generate network detection signatures. Use when reverse-engineering a captured malleable profile or building detections against Cobalt Strike Beacon traffic.

analyzing-command-and-control-communication

Analyzes malware C2 communication over HTTP, HTTPS, DNS, and custom

analyzing-cyber-kill-chain

Analyzes intrusion activity against the Lockheed Martin Cyber Kill Chain

analyzing-disk-image-with-autopsy

Perform comprehensive forensic analysis of raw (dd), E01, or AFF disk images with Autopsy and The Sleuth Kit, recovering deleted files, examining metadata and embedded artifacts, keyword searching, and building investigation timelines with visual reports. Use for structured analysis of a forensic disk image or when stakeholders need visual reports from evidence.

analyzing-dns-logs-for-exfiltration

Analyzes DNS query logs to detect data exfiltration via DNS tunneling,

analyzing-docker-container-forensics

Investigate compromised Docker containers by analyzing images, layers,

Skills associés