Behavioral crypto mining detector and killer for Linux servers. Zero dependencies. MIT licensed.
  • Python 97.6%
  • Shell 2%
  • Dockerfile 0.4%
Find a file
2026-06-06 01:53:01 +00:00
webapp feat: threat intel API, node system, api-docs, access page 2026-06-06 00:32:13 +00:00
.gitignore chore: clean up repo artifacts 2026-06-06 01:53:01 +00:00
crypto_annihilator.py feat: SHA256 plugin verification, bump v2.1.1 2026-06-05 07:12:17 +00:00
LICENSE fix: Layer 4 detection, f-string compat, SHA verify, unit tests 2026-06-05 06:51:33 +00:00
node-setup.sh feat: threat intel API, node system, api-docs, access page 2026-06-06 00:32:13 +00:00
README.md Add README 2026-06-05 05:28:44 +00:00
scannersend_network.py Initial release: CryptoAnnihilator v2.1.0 2026-06-05 05:27:52 +00:00
scannersend_update.py Initial release: CryptoAnnihilator v2.1.0 2026-06-05 05:27:52 +00:00
stratum_killer.py Initial release: CryptoAnnihilator v2.1.0 2026-06-05 05:27:52 +00:00
test_crypto_annihilator.py fix: Layer 4 detection, f-string compat, SHA verify, unit tests 2026-06-05 06:51:33 +00:00

CryptoAnnihilator

Behavioral crypto mining detector and killer for Linux servers.

Zero pip dependencies. Single file. MIT licensed. Works against known, unknown, custom-compiled, and obfuscated miners.

sudo python3 crypto_annihilator.py --kill --daemon

Why this works when ClamAV doesn't

ClamAV recognizes virus DNA. Attackers just change the DNA.
CryptoAnnihilator recognizes sick behavior. You can't mine without it.

Detection Layers

Layer Method What it catches
1 Protocol Stratum TCP pattern matching (mining.subscribe, mining.submit, etc.)
2 Behavior Sustained high CPU + active outbound connections
3 Knowledge 47 known mining pool domains — DNS block + iptables rules
4 Fingerprint Connection behavioral fingerprinting — catches throttled/evasive miners
5 Artifacts Wallet address extraction from process cmdline, environ, and config files

Quick Start

# Scan once, report only (dry run):
sudo python3 crypto_annihilator.py

# Scan and kill detected miners:
sudo python3 crypto_annihilator.py --kill

# Run as persistent daemon:
sudo python3 crypto_annihilator.py --kill --daemon

# Install as systemd service (survives restarts):
sudo python3 crypto_annihilator.py --install

# Full hardening — install + 5-layer persistence + firewall + DNS block:
sudo python3 crypto_annihilator.py --install --fortify --install-firewall --install-dns-block

Optional Plugins

Both plugins are opt-in and independent of the base tool.

ScannerSend Network Plugin (scannersend_network.py)

Reports detected miner wallet addresses to the ScannerSend Network.

  • Reports: wallet address, pool host, process name, detection layer
  • Never reports: your IP, hostname, system info, usernames, file paths
  • Tier 2 (opt-in): contributor tracking via anonymous hash
sudo python3 crypto_annihilator.py --install-network

Auto-Update Plugin (scannersend_update.py)

Checks scannersend.org for new versions and applies updates. Verifies SHA256 before replacing anything.

sudo python3 crypto_annihilator.py --install-updater

Design Philosophy

Consent first. Scan-only by default. Nothing is killed without --kill. Nothing persists without --install. Every destructive action requires an explicit flag.

Leave no trace. Zero telemetry in the base tool. --uninstall removes everything cleanly.

Behavior over signatures. A miner renamed to kworker still pins CPU and connects to pools. That is what we watch.

The Origin

We built this after getting hit. Twice. The second time, we found the miner had installed itself as a systemd service with Restart=always — we killed the process but it came back automatically. We missed the persistence layer.

So we built a tool that fights the same way. Full story: scannersend.org/about

Resources

Requirements

  • Linux (tested Ubuntu 20.04+, Debian 11+)
  • Python 3.6+
  • Root (sudo) for kill, install, and firewall operations
  • Zero pip installs — stdlib only

License

MIT — scannersend.org/source

By Rav-n-Vicscannersend.org