Am 20.01.2026 um 18:03 UTC begann unser System, uns auf ein neues npm-Paket namens flockiali. Innerhalb von 26 Minuten veröffentlichte der Angreifer vier Versionen. Zwei Tage später starteten sie eine Veröffentlichungswelle: opresc, prndn, oprnm, und operni. Als wir genauer hinschauten, hatten wir eine hochgradig gezielte Spear-Phishing-Kampagne aufgedeckt, die Mitarbeiter von Industrie- und Energieunternehmen in ganz Europa, dem Nahen Osten und den Vereinigten Staaten traf.
Und der Übertragungsmechanismus? npm + jsDelivr. Denn warum sollte man seine eigene Phishing-Infrastruktur hosten, wenn man sich kostenlos an einem fremden CDN bedienen kann?
Was wir gefunden haben
Die Pakete enthalten eine einzelne JavaScript-Datei, die beim Laden die Webseite vollständig durch ein Phishing-Kit ersetzt. Aber das Interessante daran ist: Jede Version zielt auf eine bestimmte Person ab.
Wir fanden fünf Ziele in fünf Unternehmen:
flockialiv1.2.5 zielt auf jemanden bei CQFD Composites, einem französischen Verbundwerkstoffherstellerflockialiv1.2.6 zielt auf jemanden bei Ingeteam, einem spanischen Windturbinenherstelleroprescv1.0.0 zielt auf jemanden bei Emagine, einem EV-Ladeunternehmen aus den VAEprndnundoprnmbeide zielen auf dieselbe Person bei Amixon GmbH, einem deutschen Unternehmen für Industriemischeroperniv1.2.7 zielt auf jemanden bei CMC America, einem US-amerikanischen Hersteller von Backanlagen
Der Angreifer geht nicht nach dem Gießkannenprinzip vor. Sie veröffentlichen neue Pakete für jedes Ziel. Und wenn ein Ziel besonders interessant ist, veröffentlichen sie mehrere Pakete mit unterschiedlichen Übertragungspfaden.
Der Angriffsablauf
Hier ist, was passiert, wenn ein Opfer den Phishing-Link öffnet.
Die Seite lädt und zeigt eine gefälschte „Micro-Share“-Dateifreigabe-Oberfläche:
📁 Micro-Share
sichere Dateifreigabe
Sicher freigegebene Dokumente, bitte verifizieren Sie Ihre E-Mail und fahren Sie fort.
Die folgenden Dokumente wurden sicher mit [victim]@ingeteam.com geteilt
📄 Specification.pdf
- RFQ.pdf
- Project descriptions.pdf
- Endbestimmung der Ausrüstung.pdf
[ Herunterladen ]
Die Dokumente sind ingenieurwissenschaftlich ausgerichtet: RFQs, Projektspezifikationen, CAD-Dateien. Genau das, was man von jemandem in einem Industrieunternehmen erwarten würde.
Wenn das Opfer auf „Download“ klickt, wechselt die Seite zu einem Anmeldebildschirm im Microsoft-Design:
⊞ Microsoft
Anmelden
⚠ Authentifizierung erforderlich. Klicken Sie auf „Weiter“, um sich anzumelden und den Download fortzusetzen.
┌────────────────────────────────────────┐
│ [victim]@ingeteam.com │ (schreibgeschützt)
└────────────────────────────────────────┘
Kein Konto? Erstellen Sie eines
Sie können nicht auf Ihr Konto zugreifen?
[ Weiter ]
Die E-Mail-Adresse des Opfers ist bereits ausgefüllt und als schreibgeschützt markiert. Wenn sie auf „Weiter“ klicken, werden sie zum Server für die Zugangsdaten-Erfassung weitergeleitet:
window.location.href = "https://login.siemensergy[.]icu/DIVzTaSF";Ja, siemensergy[.]icu. Das ist ein Typosquat von Siemens Energy. Der Angreifer hat offensichtlich seine Hausaufgaben gemacht, mit wem seine Ziele Geschäfte machen.
Anti-Bot-Tricks
Das Phishing-Kit macht keine halben Sachen. Es enthält mehrere Techniken, um eine automatisierte Analyse zu vermeiden.
Es prüft auf WebDriver (navigator.webdriver), leere Plugin-Listen und Bildschirmabmessungen von Null. Es filtert User-Agents, die übereinstimmen mit /bot|crawl|spider|headless|HeadlessChrome/i. Es enthält Honeypot-Formularfelder, die, wenn sie von Bots ausgefüllt werden, den Kill Switch auslösen. Und der Download-Button bleibt deaktiviert, bis die Seite Mausbewegungen oder Touch-Ereignisse erkennt. Keine Interaktion, kein Phishing.
v1.2.5 geht noch weiter mit einem überraschend ausgeklügelten Mausbewegungsanalysator:
isLegitimateTrajectory() {
if (this.mouseTrail.length < 20) return false;
const t = this.mouseTrail.slice(-10);
const variance = t.reduce((acc, p) =>
acc + Math.pow(p.x - t[0].x, 2), 0) / 10;
return variance > 100;
}
Dies berechnet die Varianz der letzten 10 Mauspositionen. Wenn sich Ihr Cursor verdächtig geradlinig bewegt hat (wie es ein Bot tun würde), bleibt die Varianz gering und der Button wird nie aktiviert. Echte Menschen zappeln.
Jemand hat sich wirklich Mühe mit diesem Phishing-Kit gegeben.
Fünf Pakete, fünf Ziele, zwei Vorlagen
Die Payload-Versionen zielen nicht nur auf verschiedene Personen ab. Sie verwenden zwei unterschiedliche Phishing-Kit-Designs.
Der v1.2.5 Payload (die auf CQFD Composites abzielt) verwendet die Marke „MicroSecure Pro“ mit einem violetten Farbverlauf und der Schriftart Inter. Sie zeigt CAD-Dateien und Engineering-Deliverables als Köder, verfügt über den ausgeklügelten Mausbewegungsanalysator und sendet Zugangsdaten an oprsys.deno[.]dev.
Der Rest (v1.2.6, opresc, prndn, oprnm, operni) verwenden ein saubereres „Micro-Share“-Design mit weißem Hintergrund und Segoe UI. Sie zeigen RFQs und Projektspezifikationen, verwenden grundlegende Interaktionsprüfungen und senden Zugangsdaten an die Siemens Energy Typosquats.
Der v1.2.5 Kit ist auffälliger mit Animationen und Farbverlauf-Hintergründen. Die neueren Kits sind minimalistischer und ähneln eher dem tatsächlichen Aussehen von Microsoft. Vielleicht hat der Angreifer A/B-Tests durchgeführt und festgestellt, dass einfachere Designs besser konvertieren. Oder sie iterieren einfach nur.
Die CMC America Payload (operni) enthält maßgeschneiderte Dokument-Lures für die Lebensmittelindustrie: „Produktspezifikationen und Inhaltsstoffdetails“, „Produktionskapazitätsziele und Betriebsparameter“. Der Angreifer passt seinen Köder an.
Interessant ist die Wahl des C2. Alle jüngsten Ziele werden an Siemens Energy Typosquats gesendet. Das ist nicht zufällig. Ingeteam stellt Windturbinen her. Emagine entwickelt EV-Ladeinfrastruktur. Amixon und CMC America stellen industrielle Mischanlagen her (Amixon arbeitet sogar mit Batteriematerialien). Alle agieren in Märkten, in denen Siemens Energy ein wichtiger Akteur ist. Der Angreifer hat die Geschäftsbeziehungen seiner Ziele recherchiert.
Beachten Sie die subtile Entwicklung: siemensergy[.]icu (ohne Bindestrich) wurde zu siemens-energy[.]icu (mit Bindestrich). Die zweite Variante ist näher an der echten siemens-energy[.]com Domain. Wir haben über DNS bestätigt, dass die Domain ohne Bindestrich keinerlei Einträge hat. Der Angreifer hat sie aufgegeben.
Die Infrastruktur erzählt eine Geschichte
Hier wird es interessant. Wir haben Zertifikatstransparenz-Logs verwendet, um zu sehen, wann die C2-Infrastruktur eingerichtet wurde. Das erste SSL-Zertifikat für *.siemens-energy[.]icu wurde am 24. Oktober 2025 ausgestellt. Danach gab es Verlängerungen am 14., 16. und 17. Januar. Die npm-Kampagne begann am 20. Januar.
Der Angreifer registrierte die Domain und erhielt SSL-Zertifikate drei Monate bevor die npm-Pakete auftauchten. Lassen Sie das auf sich wirken. Das ist nicht opportunistisch. Jemand hat diese Operation geplant, im Oktober 2025 die Infrastruktur eingerichtet und dann gewartet.
Der C2-Server (163.123.236[.]118) wird von RackGenius gehostet, einem kleinen Hosting-Provider in Muskegon, Michigan. Die ältere v1.2.5 Payload verwendet oprsys.deno[.]dev, die auf die Google Cloud-Infrastruktur (Deno Deploy) auflöst. Kostenloses serverloses Hosting für Phishing. Klassisch. Wir haben das Deno-Team über diese Kampagne informiert, als wir sie beobachteten, und sie haben sie sehr schnell entfernt.
Warum npm + jsDelivr?
Die package.json erzählt die Geschichte:
{
"keywords": ["jsdelivr", "cdn", "template"],
"main": "resp/template.min.js"
}
jsDelivr spiegelt npm-Pakete automatisch. Veröffentlichen Sie auf npm, erhalten Sie sofortiges CDN-Hosting unter cdn.jsdelivr[.]net/npm/flockiali@1.2.6/resp/template.min.js. Keine Server zu warten, kein Hosting zu bezahlen, und das Opfer sieht eine legitim aussehende CDN-URL anstelle einer verdächtigen Phishing-Domain.
Die Zeitachse
20. Januar (vier Versionen in 26 Minuten):
- 18:03 UTC:
flockialiv1.2.3 (leerer Platzhalter) - 18:10 UTC:
flockialiv1.2.4 (Metadaten-Update) - 18:15 UTC:
flockialiv1.2.5 (CQFD Composites Ziel) - 18:29 UTC:
flockialiv1.2.6 (Ingeteam Ziel)
22. Januar (fünf weitere Pakete):
- 09:52 UTC:
oprescv1.0.0 (Emagine Ziel) - 12:29 UTC:
prndnv1.0.0 (Amixon Ziel) - 12:49 UTC:
oprnmv1.0.0 (erneut Amixon) - 13:11 UTC:
operniv1.2.6 (fehlerhaft, leer) - 13:16 UTC:
operniv1.2.7 (CMC America Ziel)
Der Angreifer hat eine Zielliste und arbeitet diese ab. Der Amixon-Mitarbeiter erhielt zwei Pakete im Abstand von 20 Minuten (etwas übertrieben, oder?). Das CMC America-Paket enthielt einen Tippfehler (reps/ anstatt resp/) und eine fehlerhafte erste Version. Ups. Dieser Angreifer agiert schnell und macht Fehler.
Was sollten Sie tun?
Wenn Sie bei einem der angegriffenen Unternehmen sind, prüfen Sie, ob jemand Links zu jsDelivr-URLs erhalten oder etwas im Zusammenhang mit der Dokumentenfreigabe „Micro-Share“ angeklickt hat.
E-Mail-Protokolle nach Links durchsuchen, die enthalten cdn.jsdelivr[.]net/npm/flockiali, cdn.jsdelivr[.]net/npm/opresc, cdn.jsdelivr[.]net/npm/prndn, cdn.jsdelivr[.]net/npm/oprnm, oder cdn.jsdelivr[.]net/npm/operni. Blockieren Sie die IOC-Domains an Ihrem Perimeter. Falls Anmeldeinformationen eingegeben wurden, ändern Sie diese sofort.
Indikatoren für Kompromittierung
C2-Domains:
login.siemens-energy[.]icu(163.123.236[.]118, RackGenius)login.siemensergy[.]icu(aufgegeben, kein DNS)oprsys.deno[.]dev(34.120.54[.]55, Deno Deploy)
Phishing-URLs:
https://login.siemensergy[.]icu/DIVzTaSFhttps://login.siemens-energy[.]icu/DIVzTaSF
jsDelivr-URLs:
hxxps://cdn.jsdelivr[.]net/npm/flockiali@1.2.6/resp/template.min.jshxxps://cdn.jsdelivr[.]net/npm/flockiali@1.2.5/resp/template.min.jshxxps://cdn.jsdelivr[.]net/npm/opresc@1.0.0/resp/template.min.jshxxps://cdn.jsdelivr[.]net/npm/prndn@1.0.0/template.min.jshxxps://cdn.jsdelivr[.]net/npm/oprnm@1.0.0/resp/template.min.jshxxps://cdn.jsdelivr[.]net/npm/operni@1.2.7/reps/template.min.js
Pakete:
flockiali(1.2.3-1.2.6)opresc(1.0.0)prndn(1.0.0)oprnm(1.0.0)operni(1.2.6-1.2.7)
Payload-Hashes (SHA256):
3ceb182fb32a8fb0f0fcf056d6ab8de1cf6e789053f1aadc98ba315ae9a96f0c– flockiali 1.2.6fdb6c79a8d01b528698c53ebd5030f875242e6af93f6ae799dee7f66b452bf3e– flockiali 1.2.54631584783d84758ae58bc717b08ac67d99dee30985db18b9d2b08df8721348e– opresc211f88a55e8fe9254f75c358c42bb7e78e014b862de7ea6e8b80ed1f78d13add– prndn/oprnm7d7f795ac1fcb5623731a50999f518877fd423a5a98219d0f495c488564a1554– operni 1.2.7

