
o rastreador transparente de reivindicações de ransomware 🥷🏼🧅🖥️
o ransomwatch monitoriza os sites de extorsão utilizados por grupos de ransomware e apresenta um feed agregado de reivindicações
por favor, utilize o modelo de issue ao submeter novos grupos
o conteúdo em ransomwatch.telemetry.ltd, posts.json, groups.json, juntamente com os diretórios docs/ e source/, é gerado dinamicamente com base nas escolhas de alojamento de atores de ameaças do mundo real, quase em tempo real.
embora tenham sido tomadas medidas de sanitização, ao visualizar ou aceder ao ransomwatch reconhece que o faz por sua conta e risco
web:// ransomwatch.telemetry.ltd
json:// ransomwhat.telemetry.ltd/posts
json:// ransomwhat.telemetry.ltd/groups
groups.json contém hosts, nós, relays e mirrors para um grupo ou ator monitorizadoposts.json contém publicações extraídas, assinaladas pela hora da sua descoberta e pelo grupo responsáveleste é um repositório ativo que utiliza uma combinação de GitHub actions e um service container. visita, analisa e reporta sobre hosts monitorizados quase em tempo real, de forma autónoma
a obtenção de conteúdo é feita com psf/requests - se for necessário renderizar, são utilizados mozilla/geckodriver e seleniumhq/selenium.
O frontend é, em última análise, gerado com markdown, utilizando markdown.py e servido com docsifyjs/docsify graças a pages.github.com
os gráficos ou visualizações são gerados com plotting.py com a ajuda de matplotlib/matplotlib
a indexação de publicações é feita com uma mistura de grep, awk e sed dentro de parsers.py - é frágil e, como qualquer ̴̭́H̶̤̓T̸̙̅M̶͇̾L̷͑ͅ ̴̙̏p̸̡͆a̷̛̦r̵̬̿s̴̙͛ĩ̴̺n̸̔͜g̸̘̈, tem uma vida útil limitada.
o HTML renderizado para cada página pode ser visualizado no diretório source
uma versão achatada de groups.json com cada host como objeto próprio pode ser encontrada em assets/groups-kv.json. a estrutura é um array de objetos, cada um representando uma entidade/grupo distinta, com cada um contendo todas as propriedades (como name, captcha, parser, etc.) ao mesmo nível, incluindo possível repetição em elementos como profile e meta. algumas ferramentas de análise de dados funcionam com esta estrutura de forma mais fácil, exigindo menos transposição.
obter serviços ocultos requer um circuito tor! estabeleça um com;
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 / ************ \
-------------------- --------------------
publicações recentemente indexadas podem ser enviadas para o discord fornecendo uma variável DISCORD_WEBHOOK ao executar parse.
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"
}lockbit3curl -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
o ransomwatch é licenciado sob unlicense.org