Markets
BTC— —
ETH— —
SOL— —
XRP— —
BNB— —
ADA— —
DOGE— —
MCap— —
BTC— —
ETH— —
SOL— —
XRP— —
BNB— —
ADA— —
DOGE— —
MCap— —
Tech

CrowdStrike Killed Sality by Filling Its Peer Lists With Sinkholes

The 2003-vintage botnet spent its final eight years swapping copied bitcoin and ether addresses for the operator's own, and took about $150,000 doing it. There was never a command server to seize.

By Sarah Blake··4 min read
CrowdStrike Killed Sality by Filling Its Peer Lists With Sinkholes

Key Points

  • The 2003-vintage botnet spent its final eight years swapping copied bitcoin and ether addresses for the operator's own, and took about $150,000 doing it.
  • There was never a command server to seize.

CrowdStrike's Counter Adversary Operations team severed the Sality botnet from its operator on 31 August, ending a criminal enterprise that had run continuously since 2003. More than 15,000 infected machines were cut off. For the last eight years almost all of them had been doing one job: watching the clipboard for a bitcoin or ethereum address.

The payload responsible, which CrowdStrike calls EggJagger, is about as crude as an attack gets, and that is precisely why it kept working. Wallet addresses are long strings of characters nobody types by hand, so people copy and paste them. EggJagger sat on the infected machine, watched the clipboard, and when something resembling a bitcoin or ether address appeared it substituted an address belonging to the operator. The victim pasted, glanced at nothing, and sent the money to a stranger. Nothing warned them. Nothing could be undone.

Eight years of that brought in at least 12.1 million rubles, about $150,000, on CrowdStrike's estimate. Most of it was never moved. The unspent holdings peaked at roughly 147 million rubles in January 2025 as crypto prices rose, nominally around $1.35 million, though CrowdStrike puts the real purchasing power nearer $4 million in a Western capital. Spread over eight years that is an unremarkable salary. It is also close to pure profit, because Sality cost its operator almost nothing to run.

Sality survived for two reasons, and neither is sophistication. It was a polymorphic file infector before it was a botnet, attaching itself to executables and travelling on network shares and removable drives. No phishing campaign, no exploit kit. Infections regenerated without the operator lifting a finger. Two separate peer-to-peer networks, versions 3 and 4, ran on the same codebase under the same actor with incompatible protocols and different cryptographic keys, and both were live until this week.

Advertisement

728×90

There was also no server to seize. Infected machines spoke directly to one another, and every 40 minutes each bot checked whether the peers it knew about were still answering. Peers that replied gained reputation; peers that went quiet were eventually purged. Law enforcement can raid a data centre. It cannot raid a protocol.

What it can do is join. Sality bots never verified who was on the network. Any publicly reachable machine that answered the handshake correctly was accepted as a legitimate peer, with no authentication, no cryptographic identity and no allowlist. Availability was the only requirement. An active defender who speaks the protocol is indistinguishable from an infected PC.

CrowdStrike used that to invert the network's own maintenance cycle. Its team invalidated legitimate super peer entries during peer verification, progressively emptying each bot's address list, then inserted its own sinkholes into the gap. Super peers went first, because they carry the traffic. Machines sitting behind firewalls or network address translation were handled passively: when they called a sinkhole during a routine check, their peer lists were purged and they stayed isolated. It is the same class of technique used against GameOver Zeus in 2014 and Kelihos in 2017.

The operator cannot answer this. A conventional botnet would push a protocol update from its command server; Sality has no command server, and its spreading mechanism makes an update self-defeating. A new variant would have to compete with the existing strain for the same host files, splitting the botnet rather than upgrading it. The behaviour those 15,000 machines exhibit today is the behaviour they exhibited twenty years ago, and every weakness in it is permanent.

The operation ran alongside the US Department of Justice, the FBI, the Defense Criminal Investigative Service and the Shadowserver Foundation, with Europol, Eurojust and police forces in Bulgaria, Hungary and Romania. Those agencies seized the web addresses hosting Sality's payloads, so bots still carrying download instructions had nothing left to fetch. The Justice Department said the operation was based in Russia.

Sality's operator occasionally pointed the network at his own grievances. In February 2022, one day after Russia's full-scale invasion of Ukraine, Sality distributed a payload aimed at kharkovforum.com, a Ukrainian web forum hosting a live thread on the assault on Kharkiv. In September 2023 it hit AvanChange, a Russian cryptocurrency exchange, with a payload compiled seconds before it was uploaded. CrowdStrike reads that second one as an impulsive reaction to a personal dispute. Twenty years of resilient infrastructure, aimed at a customer service complaint.

For anyone holding coins, the practical defence is unglamorous. Check the first and last characters of an address after you paste it, every time. Hardware wallets narrow the problem without solving it, because the address is chosen on the computer before the device ever sees it, and Ledger spent August fixing an Ethereum app that could display one transaction while signing another. Attacks on ordinary crypto users rarely require cleverness. Trezor customers found that out when a Metabase bug at the company's shipping partner exposed 13,689 buyers.

Crypto has been the default monetisation for commodity malware for the better part of a decade; IBM was already documenting the pivot from ransomware to cryptojacking in 2018. Sality's operator picked the version that required no compute and no negotiation with the victim. The disruption stops new payloads reaching infected machines, but it does not clean them: everything already installed is still running. Any computer sending UDP traffic to 188.166.101.148 is still infected.

MiningPool content is intended for information and educational purposes only and does not constitute financial, investment, or legal advice.

Advertisement

728×90

Related Stories

Google Tested the Assumption Behind Bitcoin's 500,000-Qubit Estimate
Tech

Magic state cultivation cut errors about 40-fold on Google's Willow processor, the first hardware run of a step that existing qubit counts for breaking Bitcoin's cryptography had taken on trust. The same paper puts an RSA-2048 break a million times beyond the quality achieved.

·MiningPool Staff
An OpenAI Model Checked 362 Public Test Keys to Fund Its Deployment
Tech

OpenAI's October 15 report says the model needed fees for a Sepolia deployment, derived private keys from recovery phrases published in developer documentation, and spent from the first account it found holding enough. Its closing report did not mention where the funding came from.

·MiningPool Staff
Babylon Asked Aave to Take Native Bitcoin as V4 Collateral
Markets

The request for comment would add two new Spokes to Aave V4, one for borrowing stablecoins against bitcoin held in Babylon's vaults and one for settling liquidations. Risk parameters are not in the paper, and Aave DAO would take the first $500,000 of annual revenue from the market before sharing any with Babylon.

·MiningPool Staff
Starknet's Vote on Leaving Ethereum Decides Only Whether to Study It
Tech

The near-unanimous early tally rests on 293 votes with no quorum to clear, and a yes authorizes research rather than a transition. StarkWare's stated reason is that Starknet's bridge to Ethereum and its data availability layer follow Ethereum's upgrade timeline rather than its own.

·MiningPool Staff
Solana Will Hand Consensus to Alpenglow on October 21
Tech

Anza set the switch for epoch 1064, which the Solana Foundation puts at about 15:00 UTC, with TowerBFT running for the first 5,000 slots and the handoff at slot 459,653,000. Firedancer and Frankendancer are not supported during the migration.

·MiningPool Staff

Stay informed

Verifiable crypto journalism, delivered to your inbox.

Weekday mornings. No hype. No financial advice. Just what happened and why it matters.

No spam. Unsubscribe anytime. Read our privacy policy.