
EternalBlue सूट को C/C++ में फिर से बनाया गया है जिसमें शामिल हैं: MS17-010 Exploit, EternalBlue भेद्यता डिटेक्टर, DoublePulsar डिटेक्टर और DoublePulsar Shellcode और DLL अपलोडर
EternalBlue सूट को C/C++ में पुनर्निर्मित किया गया जिसमें शामिल हैं:



Recvbuff[18] से Recvbuff[22] तक के इन मानों को तब DoublePulsar XOR कुंजी कैलकुलेटर फ़ंक्शन के माध्यम से चलाया जाता है, जो एक unsigned इंटीजर XOR कुंजी उत्पन्न करता है जिसका उपयोग DoublePulsar पर अपलोड किए जाने वाले शेलकोड या DLL पेलोड को एन्क्रिप्ट करने के लिए किया जा सकता है। Windows 7 x64 बिट पर परीक्षण किया गया।
नमूना स्क्रीनशॉट:

FUZZBUNCH में मूल NSA बाइनरी से समान कुंजी

DoublePulsar_structure_ping.cpp - यह प्रोग्राम 4 SMB पैकेट भेजता है: 1 नेगोशिएशन, 1 सेशन सेटअप, 1 ट्री कनेक्ट और Trans2 SESSION_SETUP पैकेट। इसका doublepulsar_check.cpp से अंतर यह है कि यह Trans2 DoublePulsar PING पैकेट को एक संरचना का उपयोग करके उत्पन्न करता है, न कि हार्डकोडेड SMB हेक्स स्ट्रिंग जो मैंने Wannacry सैंपल से ली थी। एक और अंतर यह है कि यह प्रोग्राम TreeConnect पैकेट को गतिशील रूप से उत्पन्न करता है, न कि Wannacry सैंपल में मौजूद हार्डकोडेड का उपयोग करता है। इस प्रोग्राम में उत्पन्न पिंग पैकेट आपको बताएगा कि रिमोट मशीन पर DoublePulsar स्थापित है या नहीं।
DoublePulsar_structure_exec.cpp - यह प्रोग्राम 5 SMB पैकेट भेजता है: 1 SMB नेगोशिएशन, 1 सेशन सेटअप, 1 ट्री कनेक्ट, 1 Doublepulsar Trans2 SESSION_SETUP Ping पैकेट और 1 Doublepulsar Trans2 SESSION_SETUP Execution पैकेट। इसका Doublepulsar_UploadShellcode.cpp से अंतर यह है कि यह Trans2 DoublePulsar Execution पैकेट को एक संरचना का उपयोग करके उत्पन्न करता है, न कि हार्डकोडेड SMB हेक्स स्ट्रिंग जो मैंने Wannacry सैंपल से ली थी।
Doublepulsar_UploadDLL.cpp - यह प्रोग्राम DLL के लिए है। यह प्रोग्राम DLL डेटा के साथ SMB Trans2 पैकेट में 4 SMB पैकेट भेजता है: 1 नेगोशिएशन, 1 सेशन सेटअप, 1 ट्री कनेक्ट, 1 Ping Trans2 SESSION_SETUP अनुरोध और एक Execution Trans2 SESSION_SETUP पैकेट। Ping Trans2 SESSION_SETUP अनुरोध पैकेट Trans2 SESSION_SETUP प्रतिक्रिया पैकेट में SMB हस्ताक्षर प्राप्त करने के लिए भेजा जाता है। इस हस्ताक्षर को DoublePulsar XOR कुंजी कैलकुलेटर के माध्यम से संसाधित किया जाता है। प्रोग्राम तब एक DLL फ़ाइल पढ़ता है और इसे DLL चलाने के लिए 64 बिट कर्नेल और यूजरलैंड शेलकोड के साथ जोड़ता है और बफर को SMB हस्ताक्षर से गणना किए गए DoublePulsar XOR कुंजी से XOR करता है। मेमोरी आवंटित करके, Trans2 पैकेट को कॉपी करके, SMB लेन-देन के लिए आवश्यक मानों (UserID, TreeID, TotalDataCount, DataCount, ByteCount) को संपादित करके, फिर XOR किए गए डेटा (कर्नेल शेलकोड + DLL) को अंत में कॉपी करके और इसे 4096 बाइट्स के कुल पैकेट लंबाई में एक बार में DoublePulsar को भेजने के लिए लूप करके एक पैकेट उत्पन्न किया जाता है। कुल पैकेट लंबाई = 4178। 4096 XOR एन्क्रिप्टेड डेटा के लिए है। भविष्य के रिलीज़ में SMB और TRANSACTION2 संरचनाओं का उपयोग भी लागू किया जाएगा।
Doublepulsar_UploadShellcode.cpp - यह प्रोग्राम 5 SMB पैकेट भेजता है: 1 नेगोशिएशन, 1 सेशन सेटअप, 1 ट्री कनेक्ट, 1 Ping Trans2 SESSION_SETUP पैकेट और 1 execute Trans2 SESSION_SETUP पैकेट। Trans2 SESSION_SETUP अनुरोध पैकेट TRANS2 SESSION_SETUP प्रतिक्रिया पैकेट में SMB हस्ताक्षर प्राप्त करने के लिए भेजा जाता है। इस हस्ताक्षर को DoublePulsar XOR कुंजी कैलकुलेटर के माध्यम से संसाधित किया जाता है। प्रोग्राम तब एक बफर से कर्नेल शेलकोड और नमूना शेलकोड कॉपी करता है, यह बफर को SMB हस्ताक्षर से गणना किए गए DoublePulsar XOR कुंजी से XOR करता है। मेमोरी आवंटित करके, Trans2 exec पैकेट को कॉपी करके, SMB लेन-देन के लिए आवश्यक मानों (UserID, TreeID, TotalDataCount, DataCount, ByteCount) को संपादित करके, फिर SESSION_SETUP पैरामीटर्स और XOR किए गए शेलकोड डेटा के 4096 बाइट्स को अंत में कॉपी करके और इसे कुल पैकेट लंबाई 4178 बाइट्स में DoublePulsar को भेजने के लिए एक पैकेट उत्पन्न किया जाता है। कुल पैकेट लंबाई = 4178। NetBIOS लंबाई 4174 होगी क्योंकि NetBIOS हेडर आकार के लिए स्वयं की गणना नहीं करता है। इस पैकेट के 12 बाइट्स Doublepulsar SESSION_SETUP पैरामीटर्स के लिए हैं। 4096 XOR एन्क्रिप्टेड डेटा के लिए है। भविष्य के रिलीज़ में SMB और TRANSACTION2 संरचनाओं का उपयोग किया जाएगा।
