RansomLook 是一款用于监控勒索软件组织与市场并提取其受害者的工具。
/doc请注意,强烈推荐使用 Ubuntu 24.04。
你需要安装 poetry 2.1.0。
curl -sSL https://install.python-poetry.org | python3 -
Valkey:Valkey 是一个开源(BSD)高性能键/值数据存储,支持缓存、消息队列等多种工作负载,并可作为主数据库。Valkey 既可以作为独立守护进程运行,也可以在集群中运行,并提供复制和高可用性选项。
注意:Valkey 应从源码安装,且仓库必须与你将要克隆 RansomLook 的目录相同。
为了编译和测试 Valkey,你需要一些软件包:
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 ..
按常规操作:
git clone https://github.com/RansomLook/RansomLook.git
此时,你应该位于包含 valkey 和 RansomLook 的目录中。
运行 ls valkey RansomLook 确认情况。如果看到 No such file or directory,则说明其中一个缺失,你需要修复安装。
目录树必须如下所示:
.
├── 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
在你克隆 RansomLook 的目录中运行:
cd RansomLook # if you're not already in the directory
poetry install
初始化 .env 文件:
echo RANSOMLOOK_HOME="`pwd`" >> .env
获取 Web 依赖(css、font、js)
poetry run tools/3rdparty.py
poetry run tools/generate_sri.py
请注意,这些依赖受版本限制,因为使用了 子资源完整性(SRI)(在 website/web/sri.txt 中设置)。
复制配置文件:
cp config/generic.json.sample config/generic.json
并根据你的需要对其进行配置。
运行以下命令以获取所需的 JavaScript 依赖并运行 RansomLook。
poetry run update --yes
使用默认配置,你可以通过 http://0.0.0.0:8000 访问 Web 界面。
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
使用默认配置,Web 界面可通过 http://127.0.0.1:8000 访问。
这些任务应通过 cron 进行调度(建议每 2 小时执行一次)。
# 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 不带参数时遵循自适应调度
(活跃/死亡/冻结间隔),并扫描所有到期项。若要绕过
调度并强制扫描:
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
当组在常规 DLS 流水线之外发布泄露(Telegram
发布、私有镜像、论坛帖子)时,手动将 magnet 或 .torrent 文件
附加到该组,以便 swarm 健康流水线能获取它:
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>
手动附加的 torrent 会与帖子关联的 torrent 合并,并在 下次 cron 运行时被扫描。
通过裸 magnet(无 ws=、最简 tr=)添加的 torrent 依赖
libtorrent 的 ut_metadata 扩展(BEP 9)从愿意提供数据的对等方获取 info dict。
在默认 45 秒扫描窗口内,此过程通常无法完成,
导致元数据行最终只有对等方,而没有名称/大小/文件/
tracker。torrent-health-backfill 会枚举这些不完整的行,并
使用更长的窗口(默认 300 秒)重新扫描它们:
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)
可以按需运行或由每日 cron 运行——候选列表会在 每次运行时重新计算,因此已填充的行会自动跳过。
两种互补的被动探测方式,无需运行完整的 libtorrent 扫描——非常适合每日刷新每个 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
结果会持久化在 torrent 详情页(/torrent-health/<ih>)上:
一个专门的 KPI 横幅用于显示 tracker 数据,以及每个
webseed URL 旁边的绿/红点。
示例 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