TI-2026-047A โ The Login Page That Watched Back
๐ The Short Version
- Sensitive LSN services sit behind Authelia, a login gate. It answers every path with a
200login page โ and records the real target in the?rd=parameter. - So a scanner hunting
/.envor database dumps hands over its entire target list โ and gets nothing back. - One Amazon IP enumerated 100
.envvariants in 62 seconds. - 47 scanners probe protected and unprotected hosts identically โ they never notice the wall.
- 1,820 IPs hit both the web and the SSH honeypot. One crowd, two windows.
- The single human the system flagged as a brute-forcer was a harmless false positive.
A 404 says "nothing here" and forgets. This login page says "nothing here" while writing down exactly what you asked for.
๐ช The Mechanism
An ordinary server answers a path-scan with a stream of 404s โ and discards every one.
Behind Authelia, the same scan plays out completely differently:
GET /.env to the Traefik ingress302 โ /?rd=โฆ%2F.env&rm=GET โ the real target is preserved200 login page โ the bot believes it found a live app?rd= value = the scanner's exact intentThe pipeline decodes every ?rd= back into the path the scanner wanted, then labels the source by behaviour:
scanner_fingerprint/credential_harvestโ reconnaissanceauth_probe/auth_bruteforceโ genuine login attempts
๐ฃ Specimen One โ the 62-second .env storm
On 25 June 2026, a single Amazon IP โ 18.118.155.138 (AS16509, AMAZON-02) โ went to work.
- 965 requests in 62 seconds (โ 36,572 paths/hour)
- 100 unique decoded targets, every one a
.envpermutation - Flagged by CrowdSec under
crowdsecurity/http-sensitive-files - Spoofed a Windows browser user-agent
This is not opportunism. It is a pre-compiled secret-file dictionary fired at machine speed โ the kind that ships inside off-the-shelf harvesters.
๐ญ Specimen Two โ the harvester in a browser costume
95.173.216.24 (AS60068, CDN77 / DataCamp Limited, GB) arrived labelled credential_harvest.
Its decoded ?rd= list was tighter and more telling โ /.env, then a sweep of database dumps:
Two details give it away:
- Its user-agent claims to be a desktop browser โ but the fingerprint leaks
python-httpx/0.28.1. - The same IP is present in the SSH honeypot. Not a web scanner or an SSH attacker โ both.
When the declared identity contradicts the behaviour, the contradiction is the evidence.
๐ท The Auth-Indifferent Cohort
Forty-seven IPs are confirmed multi_surface_scanner โ they hit protected and unprotected hosts with identical path sets.
The auth layer changes the status code they receive (a 200 login instead of a 404). It changes nothing about what they do. They run open-loop โ they never read the response โ which is exactly why the trap keeps working.
And the cohort is not obscure. It runs on the most reputable networks on the internet, beside names this program has documented before:
| IP | Network | Unprot. 404s | Authelia intercepts | Prior dossier |
|---|---|---|---|---|
18.118.155.138 | Amazon AS16509 | 6 | 538 | 046A / 046E |
3.144.156.150 | Amazon AS16509 | 308 | 244 | 046E |
34.129.126.223 | Google Cloud AS396982 | 13 | 147 | 046A |
146.70.194.252 | M247 Europe SRL | 48 | 18 | 023B / 036B |
82.102.18.188 | M247 Europe SRL | 10 | 27 | 023B / 036B |
139.28.219.70 | M247 Europe SRL | 9 | 9 | 023B / 036B |
208.84.100.55 | ADVIN Services LLC | 94 | 21 | 046E |
85.204.70.96 / .114 | Hydra Communications (GB) | 10 / 10 | 18 / 18 | โ |
85.115.209.52 | GODLIKE DIGITAL SOLUTIONS (RO) | 16 | 4 | 036C |
๐ The Census โ one population, two windows
Cross-referenced against the SSH honeypot and the published corpus (15,587 resolved crosslinks), the overlap is structural โ not coincidence:
| Relationship | Count | Meaning |
|---|---|---|
same_ip_web_and_ssh | 1,820 | Same IP attacks HTTP and SSH |
web_probe_matches_investigation | 217 | Web IPs matching prior-dossier infrastructure |
same_asn_web_and_ssh | 91 | Networks active on both surfaces |
multi_layer_blocked | 73 | Banned at L3 + L7 + honeypot + web |
multi_surface_scanner | 47 | Protected + unprotected, identical probes |
web_campaign_overlaps_investigation | 38 | Web campaigns overlapping investigations |
๐ง The Human in the Machine
Of fifteen confirmed Authelia auth events, almost all are auth_legitimate โ operator infrastructure and known residential logins.
Exactly one external address was labelled auth_bruteforce. It was a false positive.
The "attacker" is a real, trusted young person learning IT with no formal schooling. The failures were not an attack โ they were the ordinary friction of setting up OAuth and multi-factor authentication for the first time, which was hard enough.
The heuristic saw three failures and shouted brute-force. It had no way to see a kid trying to get his second factor to work. (Identity withheld โ TLP:WHITE.)
For every one genuine human at the login page, hundreds of bots arrive โ and the single human the machine accused was the one person there who meant no harm.
๐ฐ๏ธ The Global Baseline โ this is not local weather
Everything the trap recorded matches the documented state of the internet:
- EMERALDWHALE (Sysdig): scanned 500M+ IPs for exposed
.git/configand.envfiles; harvested 15,000+ cloud credentials. - Unit 42: a large-scale cloud-extortion campaign built entirely on credentials from public
.envfiles. - CVE-2017-9841 (PHPUnit RCE): nine years old, still 80,000+ exploit attempts in 30 days (VulnCheck) โ and the exact CrowdSec scenario that fired on cross-surface scanner
185.177.72.58(AS211590, BUCKLOG SARL, FR). - Verizon DBIR 2024: credentials compromised in 71% of basic web-app breaches. CrowdStrike 2024: cloud intrusions +75% YoY, shifting to identity-based attacks.
.env and see who answers.โ The Questions
Who is this?
Not one actor โ a population. Commodity scanners renting both reputable compute (Amazon, Google) and abuse-tolerant networks (M247, ADVIN, Hydra, GODLIKE).
Why did it attack?
Credential and secret harvesting. The lists โ .env, DB dumps, phpinfo โ want secrets, not access to this app.
Who does it claim to be?
Desktop browsers. The fingerprints say python-httpx and Go clients. The costume contradicts the body.
Whom is it related to?
Itself, on another port. 1,820 of these IPs are in the SSH honeypot; the probes resolve onto prior dossiers.
Where is the money?
Downstream โ stolen cloud keys resold or used for extortion. The scan is free; the payday is the credential.
What is the official anchor? [INST]
The hosts are fully anchored (ARIN/RIPE members, listed firms). The operators are not. That absence is the finding: a decentralised market renting anchored infrastructure, not one named APT.
What if it is more than it appears?
The trap's edge is that the adversary does not know it is one. Every bot that keeps firing at a login page it cannot read donates its full target dictionary โ free, in real time.
โ๏ธ Verdict
A login gate deployed only to keep unauthorised users out became the highest-fidelity reconnaissance sensor in the estate.
By answering every probe with 200 and preserving the target in ?rd=, it turns blind denial into a decoded record of attacker intent โ and proves, with counts, that most "login" traffic is automated secret-hunting by an auth-indifferent crowd that overlaps the SSH attackers and the actors of prior dossiers.
The cage is made of glass. From the inside it looks like a door; from the outside, everyone who rattles it is fully visible.
๐ Related
Series: ๐ช The Glass Cage ยท Letter: A ยท Classification: TLP:WHITE
Data sources: LSN web-threats database (Traefik + Authelia forward-auth) ยท SSH honeypot ยท CrowdSec L7 ยท MikroTik L3 ยท Qdrant entity crosslinks (15,587 edges) ยท OSINT library. External: Sysdig EMERALDWHALE ยท Unit 42 ยท The DFIR Report (Bissa, 2026) ยท VulnCheck (CVE-2017-9841) ยท Verizon DBIR 2024 ยท CrowdStrike GTR 2024.
Investigation: TI-2026-047A ยท 8 actors ยท 11 evidence ยท 9 findings ยท 10 connections ยท 14 infrastructure records