
Noch ein Ransomware-Banden-Tracker
RansomLook ist ein Tool zur Überwachung von Ransomware-Gruppen und -Märkten und zur Extraktion ihrer Opfer.
/docBeachten Sie, dass die Verwendung von Ubuntu 24.04 dringend empfohlen wird.
Sie benötigen eine installierte Version von poetry 2.1.0.
curl -sSL https://install.python-poetry.org | python3 -
Valkey: Valkey ist ein quelloffener (BSD) Hochleistungs-Key/Value-Datenspeicher, der eine Vielzahl von Workloads wie Caching und Nachrichtenwarteschlangen unterstützt und als primäre Datenbank fungieren kann. Valkey kann entweder als eigenständiger Daemon oder in einem Cluster betrieben werden, mit Optionen für Replikation und hohe Verfügbarkeit.
HINWEIS: Valkey sollte aus dem Quellcode installiert werden, und das Repository muss sich im selben Verzeichnis befinden wie das Verzeichnis, in das Sie RansomLook klonen werden.
Zum Kompilieren und Testen von Valkey benötigen Sie einige Pakete:
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
# Optionally, you can run the tests:
make test
cd ..
Wie gewohnt:
git clone https://github.com/RansomLook/RansomLook.git
An diesem Punkt sollten Sie sich in einem Verzeichnis befinden, das valkey und RansomLook enthält.
Vergewissern Sie sich, dass dies der Fall ist, indem Sie ls valkey RansomLook ausführen. Wenn Sie No such file or directory sehen, fehlt eines davon und Sie müssen die Installation korrigieren.
Die Verzeichnisstruktur muss wie folgt aussehen:
.
├── valkey => compiled valkey
└── RansomLook => not installed RansomLook yet
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
Führen Sie im Verzeichnis, in das Sie RansomLook geklont haben, Folgendes aus:
cd RansomLook # if you're not already in the directory
poetry install
Initialisieren Sie die .env-Datei:
echo RANSOMLOOK_HOME="`pwd`" >> .env
Web-Abhängigkeiten abrufen (css, font, js)
poetry run tools/3rdparty.py
poetry run tools/generate_sri.py
Beachten Sie, dass diese versionseingeschränkt sind, da SubResource Integrity (SRI) verwendet wird (festgelegt in website/web/sri.txt).
Kopieren Sie die Konfigurationsdatei:
cp config/generic.json.sample config/generic.json
Und konfigurieren Sie sie entsprechend Ihren Anforderungen.
Führen Sie den folgenden Befehl aus, um die erforderlichen JavaScript-Abhängigkeiten abzurufen und RansomLook zu starten.
poetry run update --yes
Mit der Standardkonfiguration können Sie über http://0.0.0.0:8000 auf die Weboberfläche zugreifen.
poetry run start # Start backend (Valkey) + website
poetry run stop # Stop website + backend
poetry run shutdown # Graceful shutdown of all services
poetry run start_website # Start only the web interface (Gunicorn)
poetry run run_backend # Start only the Valkey backend
poetry run update --yes # System update, fetch deps, integrity checks
Mit der Standardkonfiguration ist die Weboberfläche unter http://127.0.0.1:8000 verfügbar.
Diese sollten per Cron eingeplant werden (empfohlen: alle 2 Stunden).
# Make sure Tor is running first
sudo systemctl enable --now tor
poetry run scrape # Scrape all group/market sites (DB 0 + 3)
poetry run parse # Run all parsers to extract posts from scraped data
poetry run screen # Take screenshots of group sites via Lacus/Playwright
poetry run notify # Send email notifications for new posts
poetry run notifyleak # Send email notifications for new leaks
poetry run breach # Scrape leak-lookup.com for new data breaches (DB 4)
poetry run cryptocur # Sync cryptocurrency addresses from ransomwhe.re (DB 7)
poetry run update_crypto_tx # Fetch/update transactions via Breadcrumbs One API (DB 7)
poetry run rf # Fetch Recorded Future channel data (DB 10)
poetry run notes # Import/update ransom notes from ThreatLabz repo (DB 11)
poetry run torrent # Fetch torrent information from ransomware groups
poetry run torrent-health # Scan BitTorrent swarms for each tracked magnet (DB 13)
poetry run torrent-health-backfill # Rescan torrents missing name / trackers (longer DHT window)
poetry run torrent-tracker-scrape # BEP-48 / BEP-15 tracker scrape (HTTP onion via Tor, HTTP clearnet, UDP)
poetry run torrent-webseed-check # HEAD every BEP-19 webseed URL, mark online/offline
poetry run enrich-ips # Enrich observed peer IPs via CIRCL (cached 7 days)
poetry run torrent-health folgt ohne Argumente dem adaptiven Zeitplan (Intervalle für aktiv/tot/eingefroren) und scannt, was fällig ist. Um den Zeitplan zu umgehen und einen Scan zu erzwingen:
poetry run torrent-health --only <infohash> # one specific swarm
poetry run torrent-health --group "clop torrents" # every torrent of a group
poetry run torrent-health --group clop --group akira # multiple groups at once
poetry run torrent-health --magnet "magnet:?xt=urn:btih:…" # ad-hoc magnet (not stored against any group)
poetry run torrent-health --scan-duration 120 # longer DHT observation window
Wenn eine Gruppe ein Leck außerhalb der regulären DLS-Pipeline veröffentlicht (Telegram-Drops, private Mirror, Forenbeiträge), fügen Sie den Magnetlink oder die .torrent-Datei manuell zur Gruppe hinzu, damit die Swarm-Health-Pipeline sie aufnimmt:
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>
Manuell hinzugefügte Torrents werden mit den über Beiträge verknüpften zusammengeführt und beim nächsten Cron-Lauf gescannt.
Torrents, die aus einem bloßen Magnetlink hinzugefügt wurden (kein ws=, minimales tr=), verlassen sich auf die ut_metadata-Erweiterung von libtorrent (BEP 9), um das Info-Dict von einem bereitwilligen Peer abzurufen. Bei dem standardmäßigen Scan-Fenster von 45 s wird dies oft nicht abgeschlossen, und die Metazeile endet mit Peers, aber ohne Name / Größe / Dateien / Tracker. torrent-health-backfill listet diese unvollständigen Zeilen auf und scannt sie mit einem längeren Fenster erneut (Standard: 300 s):
poetry run torrent-health-backfill # live-peer torrents, missing name/trackers
poetry run torrent-health-backfill --dry-run # preview what would be scanned
poetry run torrent-health-backfill --scan-duration 600 # stubborn swarms
poetry run torrent-health-backfill --max 50 # cap per run
poetry run torrent-health-backfill --include-files # also fill missing file lists
poetry run torrent-health-backfill --all # include dead swarms too (rarely useful)
Kann bei Bedarf oder per täglichem Cron ausgeführt werden — die Kandidatenliste wird bei jedem Lauf neu berechnet, sodass bereits befüllte Zeilen automatisch übersprungen werden.
Zwei komplementäre passive Sonden, die keinen vollständigen libtorrent-Scan erfordern — perfekt für die tägliche Aktualisierung der Informationen pro Swarm:
# BEP-48 (HTTP) + BEP-15 (UDP) scrape — gives seeders / leechers / downloaded-all-time
poetry run torrent-tracker-scrape # onion HTTP only (default)
poetry run torrent-tracker-scrape --clearnet-too # adds clearnet HTTP + UDP
poetry run torrent-tracker-scrape --limit 5 -v # sanity probe
# BEP-19 webseed HEAD check — green/red dot per mirror on the detail page
poetry run torrent-webseed-check # full pass, threaded
poetry run torrent-webseed-check --workers 32 -v # faster, noisier
poetry run torrent-webseed-check --onion-only # skip clearnet mirrors
Die Ergebnisse werden auf der Torrent-Detailseite (/torrent-health/<ih>) gespeichert: ein eigenes KPI-Banner für die Tracker-Zahlen und ein grüner/roter Punkt neben jeder Webseed-URL.
Beispiel-Crontab (crontab -e):
# Core pipeline: scrape → parse → screenshot (every 2 hours)
0 */2 * * * cd /path/to/RansomLook && poetry run scrape && poetry run parse && poetry run screen
# Notifications (daily morning recap)
0 8 * * * cd /path/to/RansomLook && poetry run notify && poetry run notifyleak
# Data enrichment (daily)
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
# Torrent swarm health (every 6 hours, adaptive per-swarm)
0 */6 * * * cd /path/to/RansomLook && flock -n /tmp/rl-torrent.lock poetry run torrent-health
# Tracker scrape — single pass covering onion HTTP, clearnet HTTP, UDP (every 3 hours)
0 */3 * * * cd /path/to/RansomLook && poetry run torrent-tracker-scrape --clearnet-too
# Webseed liveness — green/red dot map of mirror infrastructure (every 6 hours)
30 */6 * * * cd /path/to/RansomLook && poetry run torrent-webseed-check
# Daily metadata backfill — rescan torrents still missing name / trackers
0 1 * * * cd /path/to/RansomLook && poetry run torrent-health-backfill
# CIRCL IP enrichment (daily, keeps the admin page instant)
30 3 * * * cd /path/to/RansomLook && flock -n /tmp/rl-enrich.lock poetry run enrich-ips
Wir empfehlen die Verwendung der Admin-GUI, aber Sie können auch die CLI verwenden:
poetry run add GROUPNAME URLTOCHECK DATABASE-NUMBER
DATABASE-NUMBER: 0 für Ransomware-Gruppe, 3 für Markt/ForumRansomLook/parsers/ ein Parser existiert, muss der Gruppenname mit dem .py-Dateinamen übereinstimmentools/)# Import all databases (0=Groups, 2=Posts, 3=Markets, 4=Leaks, 5=Actors, 10=RF)
poetry run tools/import_from_instance.py --api-key "YOUR_API_KEY"
# Or use an environment variable
export RANSOMLOOK_API_KEY="YOUR_API_KEY"
poetry run tools/import_from_instance.py
# Custom instance + specific databases only
poetry run tools/import_from_instance.py --url https://my-instance/api --api-key "KEY" --db 0 2 5
Ein API-Schlüssel ist erforderlich (erzeugen Sie einen unter Admin > API Keys auf der entfernten Instanz).
poetry run tools/malpedia.py # Enrich group metadata with Malpedia descriptions
poetry run tools/import_groups.py # Seed DB from data/groups.json + data/markets.json
poetry run tools/getpreviousscreen.py # Retrieve archived screenshots
poetry run tools/validate_config_files.py # Validate config/generic.json structure
poetry run tools/3rdparty.py # Download third-party JS/CSS (Plotly, etc.)
poetry run tools/generate_sri.py # Regenerate SRI hashes for static assets
python3 tools/crypto_export.py # Export crypto addresses to CSV
python3 tools/crypto_export.py --chain bitcoin -o btc.csv # Bitcoin only
python3 tools/cryptostats.py # Display per-group crypto address/tx counts
poetry run tools/seed_actors.py # Populate sample threat actors for testing
poetry run tools/seed_alert_keywords.py # Populate sample alert keywords for testing
poetry run tools/seed_audit_logs.py # Populate sample audit log entries for testing
RansomLook stellt eine REST-API mit interaktiver Swagger-Dokumentation zur Verfügung, die unter /doc verfügbar ist.
Die meisten Lese-Endpunkte sind öffentlich. Der export-Endpunkt erfordert einen API-Schlüssel, der über den Authorization-Header übergeben wird.
API-Schlüssel werden über die Weboberfläche unter Admin > API Keys verwaltet.
Massendatenbank-Export für den Reimport oder die Offline-Analyse:
GET /api/export/<db>
Authorization: YOUR_API_KEY
Private Einträge werden automatisch aus Gruppen (0), Märkten (3) und Akteuren (5) herausgefiltert.
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
Dieses Programm ist freie Software: Sie können es unter den Bedingungen der GNU Affero General Public License, wie sie von der Free Software Foundation veröffentlicht wurde, entweder in Version 3 der Lizenz oder (nach Ihrer Wahl) in jeder späteren Version weitergeben und/oder modifizieren.
Dieses Programm wird in der Hoffnung weitergegeben, dass es nützlich sein wird, aber OHNE JEGLICHE GEWÄHRLEISTUNG; ohne die stillschweigende Garantie der MARKTGÄNGIGKEIT oder der EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Weitere Einzelheiten finden Sie in der GNU Affero General Public License.
Sie sollten zusammen mit diesem Programm eine Kopie der GNU Affero General Public License erhalten haben. Wenn nicht, siehe https://www.gnu.org/licenses/.
Alle Inhalte, die von ransomlook.io bereitgestellt werden — einschließlich Website, API-Antworten und Datensätze — werden unter der Lizenz Creative Commons Attribution 4.0 International (CC BY 4.0) bereitgestellt.
Sie können das Material für jeden Zweck teilen und anpassen, auch kommerziell, sofern eine angemessene Namensnennung erfolgt.
| Namespace | Basispfad | Beschreibung |
|---|
| Stats | /api/stats, /api/hot, /api/search, /api/health, /api/compare | Plattformstatistiken, Trending-Gruppen, entitätsübergreifende Suche, Mirror-Gesundheit, Side-by-Side-Vergleich |
| GenericAPI | /api/ | Gruppen, Märkte, Beiträge, Abfragen für recent/last/period, Export |
| Actors | /api/actors/ | Profile von Bedrohungsakteuren, Beziehungen (Gruppen, Foren, Peers), Fahndungsstatus |
| Crypto | /api/crypto/ | Kryptowährungs-Gruppen, Wallets nach Blockchain, Transaktionen, Statistiken, aktuelle Transaktionen |
| Notes | /api/notes/ | Ransom-Notes nach Gruppe, aktuelle Notes, Notizdetails |
| Leaks | /api/leaks/ | Datensätze zu Datenschutzverletzungen |
| RecordedFuture | /api/rf/ | Recorded-Future-Kanaldaten |
| DB | Inhalt |
|---|
| 0 | Gruppen (Metadaten und Standorte von Ransomware-Gruppen) |
| 2 | Beiträge (Opferbeiträge aller Gruppen) |
| 3 | Märkte (Markt-/Forum-Metadaten und -Standorte) |
| 4 | Lecks (Datensätze zu Datenschutzverletzungen) |
| 5 | Akteure (Profile und Beziehungen von Bedrohungsakteuren) |
| 10 | Recorded Future (RF-Kanaldaten) |