
.NET प्रक्रिया मॉनिटर जो मूल परत पर CLR को हुक करता है, मेमोरी से रिफ्लेक्टिव असेंबलियों को डंप करता है, और डिस्क बाइनरी की तुलना में AMSI/ETW अखंडता की जाँच करता है।
कल एक अपडेट आ रहा है, लाइसेंस बदल रहा हूँ और साथ ही डेटा चुराने वालों के खिलाफ कुछ नए मॉन्स्टर भी जोड़ रहा हूँ।
![]()
![]()
![]()
मैंने यह विंडोज टूल इसलिए बनाया क्योंकि मैं मैलवेयर सैंपल में jlaive फोर्क्स को देखते-देखते थक गया था, जिनमें उन्हें रनटाइम पर अलग करने के लिए कोई सार्वजनिक चीज़ नहीं थी।
संक्षेप में, यह एक .net प्रोसेस मॉनिटर है जो नेटिव लेयर पर clr को हुक करता है, रिफ्लेक्टिव असेंबली लोड को ट्रैक करता है, और स्वचालित रूप से मेमोरी से सीधे PEs को डंप करता है। यह मूल ऑन-डिस्क बाइनरी के विरुद्ध amsi और etw की अखंडता की भी जाँच करता है, साथ ही clr.dll स्ट्रिंग पैचिंग और डायरेक्ट LoadFromBuffer उपयोग जैसी बाइपास तकनीकों का पता लगाता है।
सैंपल कहाँ मिलेंगे? मैं https://tria.ge देखने की सलाह देता हूँ (विज्ञापन नहीं) और आप कोई भी सैंपल डाउनलोड कर सकते हैं जो आप चाहते हैं और फिर एक परिवार के आधार पर फ़िल्टर कर सकते हैं।
आप सोच रहे होंगे, नाम nemesis क्यों?
क्योंकि यह टूल के सटीक उद्देश्य को दर्शाता है। nemesis वह चीज़ है जो किसी प्रतिद्वंद्वी के लिए एक निरंतर चुनौती या पतन के रूप में खड़ी होती है, और यही इस प्रोजेक्ट के पीछे का विचार है।
ग्रीक मिथक में nemesis दैवीय प्रतिशोध की आत्मा थी, जो उन सभी को सजा देती थी जो बहुत अहंकारी हो जाते थे या सोचते थे कि वे अछूत हैं। मेरे विचार में यह उन मैलवेयर पर खरा उतरता है जो "fud" होने का दावा करते हैं।
मैं एक मैलवेयर विश्लेषक हूँ। यदि आप यह काम (मेरे लिए शौक) काफी समय तक करते हैं, तो आप एक ही लोडर चेन को बार-बार देखने लगते हैं, खासकर जब से jlaive (जिसे crybat भी कहा जाता है) ने धूम मचाई और हर स्क्रिप्ट किडी ने इसे फोर्क कर लिया।
पैटर्न बेवकूफी भरा सरल है लेकिन इससे निपटना बहुत कष्टप्रद है:
something.bat → obfuscated powershell → csharp stub → your actual payload
आप एक .bat पर डबल-क्लिक करते हैं जो शब्द सलाद जैसा दिखता है। cmd कबाड़ की दीवार के साथ powershell शुरू करता है। powershell एक .net स्टब (aes, gzip, base64) को डिक्रिप्ट/डीकंप्रेस करता है। वह स्टब amsi + etw को पैच करता है, असली exe/dll को मेमोरी में रिफ्लेक्टिवली लोड करता है, और आपका काम हो जाता है – कोई भी मैत्रीपूर्ण चीज़ कभी भी उपयोगी रूप में डिस्क पर नहीं आती।
यह मुझे परेशान करता था। इस विशिष्ट श्रृंखला से लड़ने के लिए कोई अच्छा सार्वजनिक टूल नहीं है – जहाँ .net पेलोड वास्तव में साकार होता है, प्रक्रिया स्वयं को खाने से पहले उसे डंप करना, इन स्टब्स द्वारा हमेशा किए जाने वाले amsi/etw पैच को पकड़ना। इसलिए मैंने nemesis बनाया।
कोई चांदी की गोली नहीं। आपके सैंडबॉक्स को बदलने वाला नहीं है। लेकिन यह आपको एक वास्तविक चीज़ देता है जिसे आप एक संदिग्ध .bat के खिलाफ एक परीक्षण बॉक्स पर चला सकते हैं और वास्तव में आर्टिफैक्ट निकाल सकते हैं।
लॉन्चर (Launcher.exe)
Nemesis.dll इंजेक्ट करता हैnemesis dll (Nemesis.dll)
nLoadImagenLoadFileAssemblyNative::LoadFromBuffer (nLoadImage से हल किया गया पैटर्न)%TEMP%\Nemesis_dumps में डंप करने के लिए कतारबद्ध करता हैamsi.dll / ntdll.dll एक्सपोर्ट्स की तुलना डिस्क पर मौजूद प्रतियों से करता है (AmsiScanBuffer / EtwEventWrite पर क्लासिक ret पैच को पकड़ता है).rdata स्ट्रिंग्स को भी देखती है (कुछ बाइपास उन्हें पैच करते हैं, इस पर एक शानदार vxug पेपर है जिसका शीर्षक है; 2024-11-21 - New AMSI Bypss Technique Modifying CLRDLL in Memory.pdf)%TEMP%\Nemesis.log में लॉग करता है। इसमें भी है ताकि कंसोल के अजीब व्यवहार से बचा जा सके :Dमूलतः: बैट चेन को चलने दें, पेलोड को वहाँ पकड़ें जहाँ क्रिप्टर इसे लोड करता है, और रास्ते में एवेज़न ट्रिक्स को लॉग करें।
आपको c++ डेस्कटॉप + masm (x64) के साथ visual studio 2022+ की आवश्यकता है।
Nemesis.slnx खोलें, Release | x64 चुनें, समाधान बनाएँ।
यह वास्तविक उपयोग का मामला है – इसे एक संदिग्ध bat पर इंगित करें और देखें कि क्या निकलता है:
cd x64\Release
.\Launcher.exe "C:\path\to\suspicious.bat"
-- के बाद अतिरिक्त आर्ग्स लक्ष्य को पास कर दिए जाते हैं:
.\Launcher.exe myapp.exe -- --some-flag
कस्टम dll पथ:
.\Launcher.exe --dll C:\path\Nemesis.dll myapp.exe
आर्टिफैक्ट:
%TEMP%\Nemesis.log%TEMP%\Nemesis_dumpsहै:
नहीं है:
LNK1104 के साथ रीबिल्ड विफल? किसी चीज़ में अभी भी nemesis.dll लोड है – लक्ष्य को मारें और रीबिल्ड करेंpwsh.exe vcpkg का शोर बिल्ड के दौरान हानिरहित है, इसे अनदेखा करेंयदि आप समझना चाहते हैं कि आप किससे लड़ रहे हैं:
nemesis का उपयोग करके आप इसे स्वीकार करते हैं। यह जैसा है वैसा प्रदान किया जाता है, बिना किसी वारंटी के — आप सभी जोखिम स्वीकार करते हैं।
आप पूरी तरह से कानूनी, अधिकृत उपयोग के लिए जिम्मेदार हैं (लैब VM, स्वामित्व वाले सिस्टम, स्पष्ट अनुमति)। कानून द्वारा अनुमत अधिकतम सीमा तक, लेखक और zypherion.tech उपयोग या दुरुपयोग से उत्पन्न किसी भी क्षति, हानि या कानूनी दावों के लिए सभी देयता से इनकार करते हैं। पूर्ण शर्तों के लिए LICENSE देखें।
गैर-वाणिज्यिक / व्यक्तिगत / अनुसंधान / शौक उपयोग → PolyForm Noncommercial 1.0.0
वाणिज्यिक उपयोग (इसे बेचना, भुगतान उत्पाद, SaaS, क्लाइंट कार्य, आदि) → आपको एक अलग लाइसेंस की आवश्यकता है। PolyForm Noncommercial इसे कवर नहीं करता है।
यदि आप वाणिज्यिक लाइसेंस चाहते हैं तो मुझसे संपर्क करें:
[[email protected] / @wd6g(discord) / telegram: @ZypherionTechnologies]
त्वरित नोट: मुझे compilemethod में देखना है और इसे ठीक करना है, अभी के लिए इसकी आवश्यकता नहीं है क्योंकि क्रिप्टर आमतौर पर इसका उपयोग बिल्कुल नहीं करते... क्योंकि उन्हें
asm.load(...)का उपयोग करना होता है। साथ ही मुझे याद आया, मुझे rdata str की जाँच करनी है क्योंकि मैंने इसका ठीक से परीक्षण नहीं किया है, दुर्भाग्य से... कृपया बेवकूफी भरे कोड के साथ PR न करें, आप n (Native) बैकएंड्स को सामान्य रूप से हुक नहीं कर सकते जैसे nLoadImage, आपको रजिस्टरों को संरक्षित करना होता है और यह बस बेकार है, इसीलिए हम asm का उपयोग करते हैं।
ENABLE_VIRTUAL_TERMINAL_PROCESSING