Roughly 5.8 terabytes left the Landesnetz in five days of August. That is the sound of about 100 megabits per second of sensitive data being sucked out of Berlin. That transfer rate alone is a story, given the Copperhead history of German broadband. The dump went unmeasured. The victim learned its size from the attackers’ index, three weeks after the CERT found the intrusion.
The click.

Attackers landed in a Microsoft product and tricked the user to run a Microsoft-signed binary, using a technique Microsoft had documented in March, and, in the pattern BSI describes, moved the data into Microsoft’s cloud.
This intrusion chain is documented and exactly what properly funded security teams are trained on. Microsoft Threat Intelligence published the tooling on 28 August under the name TerminalFix. The BSI advisory BITS-B 2026-287419-1032 of 4 September, TLP:CLEAR, criticality 2 of 4, reports an August compromise of an unnamed “staatliche Institution” matching that chain, and the BSI’s Mastodon post the same afternoon places the advisory beside its work on the Berlin incident. Tagesspiegel’s reconstruction supplies the victim perspective: just one employee of the transport administration clicked just one link in a phishing email.
Initial access came by drive-by compromise (T1189): a compromised site overlays a fake Cloudflare Turnstile and writes PowerShell to the clipboard. Execution by user (T1204.002, T1059.001): the page instructs Win+X, I, Ctrl+V, Enter, opening Windows Terminal and running the paste. Defence evasion by DLL sideloading (T1574.002): a signed Microsoft binary, LockScreenContentServer.exe, loads a forged dui70.dll from C:\ProgramData. Second stage by steganography (T1027.003): payloads reassembled from PNG pixel data. Persistence by Run key and hourly scheduled task (T1547.001, T1053.005). Discovery by nltest, net group “domain admins”, ADSI queries and a ping sweep of servers named for backup, database and gateway roles (T1482, T1069.002, T1087.002, T1018). Command and control by a Python reverse tunnel over TLS WebSocket to gitnow[.]dev:443 (T1572), launched through pythonw.exe to suppress any console window.
BSI gives us the rest of it, beyond Microsoft’s sample: staging of attacker cloud storage and exfiltration with azcopy (T1567.002), an attempted ransomware deployment (T1486), and the loader itself, LoremIpsumLoader or AxolotLoader, attributed to Vice Spider, the operator of Rhysida.
Dwell time is so far isn’t being discussed. The exfiltration is dated 7 to 12 August; the reconnaissance and tunnel that preceded it are undated in public sources. Detection came on 13 August from an availability ticket, a domain controller fault reported by a third Senate administration, which the ITDZ CERT traced into the two affected houses. Containment followed on 14 August. Reconnection on 23 August. Extortion demand on 28 August. Credential rotation was ordered on 1 September, nineteen days after discovery. Publication on 4 September at 15:35, with a second package containing credentials overnight into 6 September.
The failure to properly fund detection and response, causing failure to scope the breach, is now on the parliamentary record.
On 7 September Digitalstaatssekretär Florian Hauer told the Innenausschuss that until Friday 15:35 the Senate’s knowledge of what had left was the index the attackers had posted, and that the Senate had put the stolen records at a maximum of 215,000 on that basis. The first release ran to about 755,000 files by the LKA’s count, the Saturday night package to a further 550,000 to 560,000; the leak site listing, as reported, comes to 1.44 million. Downloading 6TB from Tor takes days, at least. Triage will be AI-assisted to rank files by risk; Hauer told the committee every file will still be checked individually, so the ranking decides only which of the weeks come first. Hauer’s classification finding so far: everything found carries VS-NfD, the lowest of four levels, and the files that looked at first glance like Militärischer Abschirmdienst material turned out to be parking permits.
To be fair, simple violations by travelers in Berlin, especially riding without a valid BVG ticket, can get fairly militant.
The same afternoon, in the Digitalisierungsausschuss, Baustaatssekretär Alexander Slotty said the question of how and where the attack began remained open, and he was as curious as everyone else. That statement came three days after the BSI advisory and its Mastodon toot. Slotty’s reassurance was that only one percent of the data on the Bauverwaltung’s servers had left, and that systems in both houses remain unencrypted. One percent, by his own figure, runs to over a million files. Being unencrypted matches BSI’s description of a ransomware deployment that was attempted and stopped short of encryption.
From the high-level, the message is that very little of the attack should have worked. Zero vulnerabilities were used. Every stage runs on Windows operations, and that means telemetry that Windows or its default security tools provide a properly funded security team. Microsoft’s own mitigation section is a list of switches. Each attack step below is listed with the control that stops it and the log event.
| Stage | Observed behaviour | Native control | Telemetry |
|---|---|---|---|
| Execution | User pastes multi-stage command into Windows Terminal | Terminal multi-line paste warning, enabled by default; AppLocker or WDAC rule denying PowerShell to standard users; Constrained Language Mode | PowerShell script block logging, Event 4104 |
| Sideloading | LockScreenContentServer.exe runs from C:\ProgramData and loads dui70.dll from the same directory | Defender ASR rule blocking executables failing prevalence or age criteria | Image load from outside C:\Windows\SystemApps; Defender for Endpoint “unexpected DLL” alert; Sysmon Event 7 |
| Persistence | HKCU Run key plus scheduled task every 60 minutes | Task creation restricted by policy | Security Event 4698; Sysmon Event 13 |
| Discovery | nltest /domain_trusts, net group “domain admins” /domain, ADSI user enumeration, ping sweep | Tiered administration; trust enumeration belongs to tier-0 accounts alone | Process creation Event 4688 with command line; Defender “Possible hands-on-keyboard pre-ransom activity” |
| C2 | pythonw.exe from C:\ProgramData with client.py –server gitnow.dev, TLS with certificate verification disabled | Egress allow-list on the government proxy; block unapproved interpreters | Proxy log: WebSocket upgrade to a .dev domain from a workstation |
| Exfiltration | azcopy to attacker-controlled Azure storage, terabytes over days | Egress allow-list; DLP on cloud storage endpoints | NetFlow volume baseline; proxy bytes-out per host |
The detection in three of those rows is decades old.
Decades.
The discovery row is the oldest pre-ransomware signature in the field. A workstation running nltest /domain_trusts and net group “domain admins” /domain is a sure sign an operator has already decided the box is worth more than its data and is measuring the domain for ransom. Sigma rules for these commands have existed since the Ryuk era. Microsoft’s own detection name for the pattern is “Possible hands-on-keyboard pre-ransom activity”.
Berlin politicians cut the funds for classic tooling that raises an alarm. The American firm CrowdStrike arrived after the fact, per Tagesspiegel, as someone’s idea of a German government response, and the district of Lichtenberg has refused to let it onto its servers at all. Hauer called that refusal to rush German data onto an American cloud grossly negligent; Slotty threatened to cut the district from every Fachverfahren of both houses. Four weeks into the response, the Land is negotiating forcing Americans into endpoint visibility with its own districts. Talk about some real incompetence. Clownstrike is like if someone said Coors now would be served instead of German beer at the Senate.
The exfiltration is just old math. 5.8 terabytes across five days is a sustained flow visible on any egress link graph. BSI describes that pattern as attacker-provisioned cloud storage, Azure as the example, filled with azcopy. When a hyperscaler is the target, the proxy allow-list does the job: a Senate workstation writing to a non-approved storage account is an anomaly any properly funded security team alerts on faster than a wasp finds an applesaft in August. A DLP policy on blob endpoints alerts on the first gigabyte. NetFlow shows a bump by the second day. Tagesspiegel’s sources say outflow monitoring is non-existent.
The identity row is documented the most by Tagesspiegel. The Senate administrations ran like it’s 2006, without mandatory password managers or two-factor authentication. The attackers found files named Passwort.txt and a spreadsheet named Zugangsdaten inside the data they took. Once the tunnel was up, the reconnaissance results and those files could expand the attack surface. The affected houses were island networks, kept outside the ITDZ because their systems fell short of its technical minimum standard, and described internally as unreachable for that reason. The domain controller fault that triggered discovery was in a third house. Whatever trust relationship connected them, nltest found it before the CERT did.
The execution row is interesting because it’s unsettled. Windows Terminal warns on multi-line paste by default, and Microsoft lists that warning among its mitigations. Whether the Berlin lure was a single line, or whether the warning was dismissed, hasn’t been explained so far. Either way the control existed, unlike the other areas.
The prior art is so basic it hurts. Microsoft disclosed the Win+X, I variant on 5 March 2026 for a campaign observed in February. BSI’s advisory notes the captcha JavaScript on several hundred websites in historical data.
The lure was five months old when it reached the Landesnetz. The technique it belongs to is older than that. So is the governance: heise reports that the Land’s Leitlinie Informationssicherheit and its IKT-Sicherheit description last saw revision in 2017, and that the CDO post is held part-time by a Staatssekretär whose main brief is federal and European affairs. Hauer told the committee that further checks would most probably expose structural deficits dating back years, and that fixing them would cost money the Landeshaushalt has yet to provide.
A response timeline in incident terms brings us back to the point of this post: detection by an operations ticket rather than a security alert; containment within 24 hours of the ticket; public statements on 19 and 24 August that sensitive data had stayed put, made while the inventory of the outflow was incomplete; credential rotation nineteen days after discovery; exfiltration scope learned from the leak site on day 22; entry vector reported unknown to the affected house on day 25, three days after the federal office published it. Rhysida’s own statistics, as reported by BSI’s commercial provider, are a 92 percent publication rate and an eleven-day average from listing to leak. Berlin was published in seven.
The table shows every control as a policy setting, a default, or a log that already ships with the platform Berlin runs. Berlin left them unset. The 2025 budget passed by the CDU-SPD coalition cut Landes-IT and E-Government, and the Linke’s digitalisation spokesman warned in November 2024 that savings on intrusion detection would gut the Landesnetz’s island security model. The 2026/2027 double budget cut a further 50 million from digitalisation, and two thirds of Senate administrations and Landesbehörden still run their own IT security outside the ITDZ. The attackers walked into operations where the coalition had already removed the alarm. The Land Berlin should hold that coalition accountable, and hold the AfD to its own record of demanding surveillance of everything while funding the security of nothing.

