ransomwatch 追踪勒索软件组织使用的勒索网站,并汇总呈现所有勒索声明
提交新组织时,请使用 issue 模板
ransomwatch.telemetry.ltd、posts.json、groups.json 以及 docs/ 和 source/ 目录中的内容,是基于真实世界威胁行为者的托管选择,以近乎实时的方式动态生成的。
尽管已采取净化措施,但通过查看或访问 ransomwatch,即表示您承认自行承担相关风险
web:// ransomwatch.telemetry.ltd
json:// ransomwhat.telemetry.ltd/posts
json:// ransomwhat.telemetry.ltd/groups
groups.json 包含被追踪组织或行为者的主机、节点、中继和镜像posts.json 包含提取的帖子,并记录其发现时间和所属组织这是一个实时仓库,利用 GitHub Actions 和服务容器的组合。它以自包含的方式近乎实时地访问、解析和报告受监控的主机
内容抓取使用 psf/requests - 如果需要渲染,则使用 mozilla/geckodriver 和 seleniumhq/selenium。
前端最终使用 markdown.py 以 Markdown 生成,并通过 docsifyjs/docsify 提供服务,感谢 pages.github.com
图表或可视化使用 plotting.py 生成,借助 matplotlib/matplotlib
帖子索引在 parsers.py 中混合使用 grep、awk 和 sed 完成 - 它很脆弱,并且像任何 ̴̭́H̶̤̓T̸̙̅M̶͇̾L̷͑ͅ ̴̙̏p̸̡͆a̷̛̦r̵̬̿s̴̙͛ĩ̴̺n̸̔͜g̸̘̈ 一样,生命周期有限。
每个页面的渲染 HTML 可在 source 目录中查看
将 groups.json 扁平化、每个主机作为独立对象的版本可在 assets/groups-kv.json 找到。其结构为对象数组,每个对象代表一个独立的实体/组织,所有属性(如 name、captcha、parser 等)均在同一层级,包括 profile 和 meta 等元素的潜在重复。某些数据分析工具使用此结构时更简便,无需大量转置操作。
抓取隐藏服务需要 Tor 电路!请通过以下方式建立:
docker run -p9050:9050 ghcr.io/joshhighet/torsocc:latest
usage: ransomwatch.py [-h] [--name NAME] [--location LOCATION] {add,scrape,parse,markdown}
positional arguments:
{add,scrape,parse,markdown}
要执行的操作
optional arguments:
-h, --help 显示此帮助信息并退出
--name NAME 提供商名称
--location LOCATION 目标网络位置(完整 URI)
_______________ |*\_/*|________
| ___________ | ||_/-\_|______ |
| | | | | | | |
| | 0 0 | | | | 0 0 | |
| | - | | | | - | |
| | \___/ | | | | \___/ | |
| |___ ___| | | |___________| |
|_____|\_/|_____| |_______________|
_|__|/ \|_|_.............💔.............._|________|_
/ ********** \ / ********** \
/ ************ \ 👀 🦅 ransomwatch / ************ \
-------------------- --------------------
新索引的帖子可以通过在运行 parse 时提供 DISCORD_WEBHOOK 变量发送到 Discord。
DISCORD_WEBHOOK=https://discord.com/api/webhooks/xxxxx/xxx ./ransomwatch.py parse
erDiagram
groups_json ||--|{ group : contains
group {
string name "group name"
boolean captcha "captcha status"
boolean parser "parser status"
boolean javascript_render "javascript status"
string meta "freeform text"
string url "notable articles and references"
}
group ||--|{ locations : has
locations {
string fqdn "fully qualified domain name"
string title "page title"
int version "hidden service version"
string slug "full URI"
boolean available "availability status"
datetime updated "timestamp of last update"
datetime lastscrape "timestamp of last scrape"
boolean enabled "status"
}
group ||--|{ post : references
post {
string post_title "post title"
string group_name "associated group name"
datetime discovered "timestamp of discovery"
}lockbit3 的最后 10 条声明curl -sL ransomwhat.telemetry.ltd/posts \
| jq -r '.[] | select(.group_name == "lockbit3") | .post_title' \
| tail -n 10
curl -sL ransomwhat.telemetry.ltd/groups \
| jq -r '.[] | .locations[] | select(.available == true) | .slug'
curl -sL ransomwhat.telemetry.ltd/groups \
| jq -r '.[] | select(.name == "lockbit3")'
curl -sL ransomwhat.telemetry.ltd/posts \
| jq -r '.[] | [.group_name, .post_title] | @tsv' \
| sed 's/ /_/g' | column -t | tail -n 20
ransomwatch 根据 unlicense.org 进行许可