
Yet another Ransomware gang tracker
RansomLook est un outil permettant de surveiller les groupes et marchés de ransomwares et d'extraire leurs victimes.
/docNotez qu'il est fortement recommandé d'utiliser Ubuntu 24.04.
Vous devez avoir poetry 2.1.0 installé.
curl -sSL https://install.python-poetry.org | python3 -
Valkey : Valkey est un magasin de données clé/valeur hautes performances open source (BSD) qui prend en charge diverses charges de travail telles que les caches, les files de messages, et peut agir comme base de données principale. Valkey peut fonctionner en démon autonome ou en cluster, avec des options de réplication et de haute disponibilité.
REMARQUE : Valkey doit être installé à partir des sources, et le dépôt doit se trouver dans le même répertoire que celui dans lequel vous clonerez RansomLook.
Afin de compiler et tester Valkey, vous aurez besoin de quelques paquets :
sudo apt-get update
sudo apt install build-essential tcl
git clone https://github.com/valkey-io/valkey
cd valkey
git checkout 8.0
make
# Optionnellement, vous pouvez exécuter les tests :
make test
cd ..
Faites comme d'habitude :
git clone https://github.com/RansomLook/RansomLook.git
Et à ce stade, vous devez vous trouver dans un répertoire contenant valkey et RansomLook.
Assurez-vous que c'est le cas en exécutant ls valkey RansomLook. Si vous voyez No such file or directory,
l'un d'eux est manquant et vous devez corriger l'installation.
L'arborescence du répertoire doit ressembler à ceci :
.
├── valkey => valkey compilé
└── RansomLook => RansomLook pas encore installé
sudo apt install python3-dev
sudo apt install libnss3 libnspr4 libatk1.0-0 libatk-bridge2.0-0 libcups2 libxkbcommon0 libxdamage1 libgbm1 libpango-1.0-0 libcairo2 libatspi2.0-0 libxcomposite1 libxfixes3 libxrandr2 libasound2 libwayland-client0
sudo apt install libgtk-3-0 libpangocairo-1.0-0 libcairo-gobject2 libgdk-pixbuf2.0-0 libx11-xcb1 libxcursor1
sudo apt install tor ffmpeg
Depuis le répertoire dans lequel vous avez cloné RansomLook, exécutez :
cd RansomLook # si vous n'êtes pas déjà dans le répertoire
poetry install
Initialisez le fichier .env :
echo RANSOMLOOK_HOME="`pwd`" >> .env
Récupérez les dépendances web (css, police, js)
poetry run tools/3rdparty.py
poetry run tools/generate_sri.py
Sachez que celles-ci sont contraintes en version car SubResource Integrity (SRI) est utilisé (défini dans website/web/sri.txt).
Copiez le fichier de configuration :
cp config/generic.json.sample config/generic.json
Et configurez-le en fonction de vos besoins.
Exécutez la commande suivante pour récupérer les dépendances javascript requises et lancer RansomLook.
poetry run update --yes
Avec la configuration par défaut, vous pouvez accéder à l'interface web sur http://0.0.0.0:8000.
poetry run start # Démarrer le backend (Valkey) + le site web
poetry run stop # Arrêter le site web + le backend
poetry run shutdown # Arrêt gracieux de tous les services
poetry run start_website # Démarrer uniquement l'interface web (Gunicorn)
poetry run run_backend # Démarrer uniquement le backend Valkey
poetry run update --yes # Mise à jour du système, récupération des dépendances, contrôles d'intégrité
Avec la configuration par défaut, l'interface web est disponible à http://127.0.0.1:8000.
Ces opérations doivent être planifiées via cron (recommandé : toutes les 2 heures).
# Assurez-vous que Tor est d'abord en cours d'exécution
sudo systemctl enable --now tor
poetry run scrape # Scraper tous les sites de groupes/marchés (DB 0 + 3)
poetry run parse # Exécuter tous les analyseurs pour extraire les publications des données scrapées
poetry run screen # Prendre des captures d'écran des sites des groupes via Lacus/Playwright
poetry run notify # Envoyer des notifications par e-mail pour les nouvelles publications
poetry run notifyleak # Envoyer des notifications par e-mail pour les nouvelles fuites
poetry run breach # Scraper leak-lookup.com pour les nouvelles violations de données (DB 4)
poetry run cryptocur # Synchroniser les adresses de cryptomonnaies depuis ransomwhe.re (DB 7)
poetry run update_crypto_tx # Récupérer/mettre à jour les transactions via l'API Breadcrumbs One (DB 7)
poetry run rf # Récupérer les données du canal Recorded Future (DB 10)
poetry run notes # Importer/mettre à jour les notes de rançon depuis le dépôt ThreatLabz (DB 11)
poetry run torrent # Récupérer les informations torrent des groupes de ransomwares
poetry run torrent-health # Analyser les essaims BitTorrent pour chaque aimant suivi (DB 13)
poetry run torrent-health-backfill # Réanalyser les torrents sans nom / trackers (fenêtre DHT plus longue)
poetry run torrent-tracker-scrape # Scrape de trackers BEP-48 / BEP-15 (HTTP onion via Tor, HTTP clearnet, UDP)
poetry run torrent-webseed-check # HEAD sur chaque URL webseed BEP-19, marquer en ligne/hors ligne
poetry run enrich-ips # Enrichir les adresses IP des pairs observées via CIRCL (cache 7 jours)
poetry run torrent-health sans arguments respecte le calendrier adaptatif
(intervalles actif/mort/gelé) et analyse ce qui est dû. Pour contourner le
calendrier et forcer une analyse :
poetry run torrent-health --only <infohash> # un essaim spécifique
poetry run torrent-health --group "clop torrents" # tous les torrents d'un groupe
poetry run torrent-health --group clop --group akira # plusieurs groupes à la fois
poetry run torrent-health --magnet "magnet:?xt=urn:btih:…" # aimant ad hoc (non lié à un groupe)
poetry run torrent-health --scan-duration 120 # fenêtre d'observation DHT plus longue
Lorsqu'un groupe publie une fuite en dehors du pipeline DLS habituel (dépôts
Telegram, miroirs privés, publications sur des forums), attachez l'aimant ou
le fichier .torrent au groupe manuellement afin que le pipeline de santé des
essaims le prenne en compte :
poetry run tools/add_group_torrent.py --group clop --magnet "magnet:?xt=urn:btih:…"
poetry run tools/add_group_torrent.py --group akira --torrent /path/leak.torrent
poetry run tools/add_group_torrent.py --group clop --from-file magnets.txt
poetry run tools/add_group_torrent.py --remove <infohash>
Les torrents attachés manuellement sont fusionnés avec ceux liés aux publications et analysés lors de la prochaine exécution de cron.
Les torrents ajoutés à partir d'un aimant nu (sans ws=, tr= minimal)
dépendent de l'extension ut_metadata de libtorrent (BEP 9) pour récupérer le
dict info auprès d'un pair coopératif. Avec la fenêtre d'analyse par défaut de
45 s, cela ne se termine souvent pas et la ligne de métadonnées se retrouve
avec des pairs mais sans nom / taille / fichiers / trackers.
torrent-health-backfill énumère ces lignes incomplètes et les réanalyse avec
une fenêtre plus longue (300 s par défaut) :
poetry run torrent-health-backfill # torrents à pairs vivants, sans nom/trackers
poetry run torrent-health-backfill --dry-run # prévisualiser ce qui serait analysé
poetry run torrent-health-backfill --scan-duration 600 # essaims tenaces
poetry run torrent-health-backfill --max 50 # limiter par exécution
poetry run torrent-health-backfill --include-files # remplir aussi les listes de fichiers manquantes
poetry run torrent-health-backfill --all # inclure aussi les essaims morts (rarement utile)
Peut être exécuté à la demande ou via un cron quotidien — la liste des candidats est recalculée à chaque exécution, les lignes déjà remplies sont donc automatiquement ignorées.
Deux sondes passives complémentaires qui ne nécessitent pas d'exécuter une analyse libtorrent complète — parfaites pour un rafraîchissement quotidien du renseignement par essaim :
# Scrape BEP-48 (HTTP) + BEP-15 (UDP) — donne seeders / leechers / téléchargements totaux
poetry run torrent-tracker-scrape # HTTP onion uniquement (défaut)
poetry run torrent-tracker-scrape --clearnet-too # ajoute HTTP clearnet + UDP
poetry run torrent-tracker-scrape --limit 5 -v # sonde de vérification
# Vérification HEAD webseed BEP-19 — point vert/rouge par miroir sur la page de détail
poetry run torrent-webseed-check # passage complet, multithreadé
poetry run torrent-webseed-check --workers 32 -v # plus rapide, plus verbeux
poetry run torrent-webseed-check --onion-only # ignorer les miroirs clearnet
Les résultats sont conservés sur la page de détail du torrent (/torrent-health/<ih>):
un bandeau KPI dédié pour les chiffres des trackers et un point vert/rouge à côté
de chaque URL webseed.
Exemple de crontab (crontab -e) :
# Pipeline principal : scrape → parse → capture d'écran (toutes les 2 heures)
0 */2 * * * cd /path/to/RansomLook && poetry run scrape && poetry run parse && poetry run screen
# Notifications (récapitulatif quotidien du matin)
0 8 * * * cd /path/to/RansomLook && poetry run notify && poetry run notifyleak
# Enrichissement des données (quotidien)
0 4 * * * cd /path/to/RansomLook && poetry run breach
0 5 * * * cd /path/to/RansomLook && poetry run cryptocur && poetry run update_crypto_tx
0 6 * * * cd /path/to/RansomLook && poetry run rf && poetry run notes
# Santé des essaims torrent (toutes les 6 heures, adaptatif par essaim)
0 */6 * * * cd /path/to/RansomLook && flock -n /tmp/rl-torrent.lock poetry run torrent-health
# Scrape de trackers — passage unique couvrant HTTP onion, HTTP clearnet, UDP (toutes les 3 heures)
0 */3 * * * cd /path/to/RansomLook && poetry run torrent-tracker-scrape --clearnet-too
# Disponibilité des webseeds — carte des points verts/rouges de l'infrastructure miroir (toutes les 6 heures)
30 */6 * * * cd /path/to/RansomLook && poetry run torrent-webseed-check
# Remplissage quotidien des métadonnées — réanalyse des torrents sans nom / trackers
0 1 * * * cd /path/to/RansomLook && poetry run torrent-health-backfill
# Enrichissement IP CIRCL (quotidien, maintient la page d'administration instantanée)
30 3 * * * cd /path/to/RansomLook && flock -n /tmp/rl-enrich.lock poetry run enrich-ips
Nous recommandons d'utiliser l'interface d'administration, mais vous pouvez également utiliser la CLI :
poetry run add GROUPNAME URLTOCHECK DATABASE-NUMBER
DATABASE-NUMBER : 0 pour un groupe de ransomwares, 3 pour un marché/forumRansomLook/parsers/, le nom du groupe doit correspondre au nom du fichier .pytools/)# Importer toutes les bases de données (0=Groupes, 2=Publications, 3=Marchés, 4=Fuites, 5=Acteurs, 10=RF)
poetry run tools/import_from_instance.py --api-key "YOUR_API_KEY"
# Ou utiliser une variable d'environnement
export RANSOMLOOK_API_KEY="YOUR_API_KEY"
poetry run tools/import_from_instance.py
# Instance personnalisée + bases de données spécifiques uniquement
poetry run tools/import_from_instance.py --url https://my-instance/api --api-key "KEY" --db 0 2 5
Une clé API est requise (générez-en une dans Admin > API Keys sur l'instance distante).
poetry run tools/malpedia.py # Enrichir les métadonnées des groupes avec les descriptions Malpedia
poetry run tools/import_groups.py # Amorcer la base de données depuis data/groups.json + data/markets.json
poetry run tools/getpreviousscreen.py # Récupérer les captures d'écran archivées
poetry run tools/validate_config_files.py # Valider la structure de config/generic.json
poetry run tools/3rdparty.py # Télécharger les JS/CSS tiers (Plotly, etc.)
poetry run tools/generate_sri.py # Régénérer les hachages SRI pour les ressources statiques
python3 tools/crypto_export.py # Exporter les adresses crypto vers CSV
python3 tools/crypto_export.py --chain bitcoin -o btc.csv # Bitcoin uniquement
python3 tools/cryptostats.py # Afficher les compteurs d'adresses/transactions crypto par groupe
poetry run tools/seed_actors.py # Remplir des acteurs de menace d'exemple pour les tests
poetry run tools/seed_alert_keywords.py # Remplir des mots-clés d'alerte d'exemple pour les tests
poetry run tools/seed_audit_logs.py # Remplir des entrées de journal d'audit d'exemple pour les tests
RansomLook expose une API REST avec documentation Swagger interactive disponible à /doc.
La plupart des points de terminaison de lecture sont publics. Le point de terminaison export nécessite une clé API transmise via l'en-tête Authorization.
Les clés API sont gérées dans Admin > API Keys via l'interface web.
Export en masse de la base de données pour réimportation ou analyse hors ligne :
GET /api/export/<db>
Authorization: YOUR_API_KEY
Les entrées privées sont automatiquement filtrées des groupes (0), marchés (3) et acteurs (5).
Copyright (C) 2022-2026 Fafner [_KeyZee_]
Copyright (C) 2022-2026 Alexandre Dulaunoy
Copyright (C) 2023-2026 Tammy Harper
Copyright (C) 2026 Katya Kandratovich
Copyright (C) 2022-2026 CERT-AG - CERT AG
Ce programme est un logiciel libre : vous pouvez le redistribuer et/ou le modifier selon les termes de la GNU Affero General Public License telle que publiée par la Free Software Foundation, soit la version 3 de la Licence, soit (à votre choix) toute version ultérieure.
Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de QUALITÉ MARCHANDE ou d'ADÉQUATION À UN USAGE PARTICULIER. Voir la GNU Affero General Public License pour plus de détails.
Vous devriez avoir reçu une copie de la GNU Affero General Public License avec ce programme. Sinon, voir https://www.gnu.org/licenses/.
Tout le contenu fourni par ransomlook.io — y compris le site web, les réponses API et les ensembles de données — est mis à disposition sous la licence Creative Commons Attribution 4.0 International (CC BY 4.0).
Vous êtes libre de partager et d'adapter le matériel à toute fin, même commerciale, à condition de créditer correctement la source.
| Espace de noms | Chemin de base | Description |
|---|
| Stats | /api/stats, /api/hot, /api/search, /api/health, /api/compare | Statistiques de la plateforme, groupes tendance, recherche inter-entités, santé des miroirs, comparaison côte à côte |
| GenericAPI | /api/ | Groupes, marchés, publications, requêtes récentes/dernières/périodiques, export |
| Actors | /api/actors/ | Profils des acteurs de menace, relations (groupes, forums, pairs), statut recherché |
| Crypto | /api/crypto/ | Groupes de cryptomonnaies, portefeuilles par blockchain, transactions, statistiques, transactions récentes |
| Notes | /api/notes/ | Notes de rançon par groupe, notes récentes, détails des notes |
| Leaks | /api/leaks/ | Enregistrements de violations de données |
| RecordedFuture | /api/rf/ | Données du canal Recorded Future |
| DB | Contenu |
|---|
| 0 | Groupes (métadonnées et localisations des groupes de ransomwares) |
| 2 | Publications (publications de victimes sur tous les groupes) |
| 3 | Marchés (métadonnées et localisations des marchés / forums) |
| 4 | Fuites (enregistrements de violations de données) |
| 5 | Acteurs (profils des acteurs de menace et relations) |
| 10 | Recorded Future (données du canal RF) |