
透明ランサムウェア請求トラッカー 🥷🏼🧅🖥️
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 を使用してマークダウンで生成され、pages.github.com のおかげで docsifyjs/docsify によって配信されます
グラフや可視化は matplotlib/matplotlib の助けを借りて plotting.py で生成されます
投稿のインデックス作成は 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}
operation to execute
optional arguments:
-h, --help show this help message and exit
--name NAME provider name
--location LOCATION target web location (full 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 の下でライセンスされています