
Rogue Assembly Hunter एक उपयोगिता है जो चल रही प्रक्रियाओं में 'दिलचस्प' .NET CLR मॉड्यूल खोजने के लिए है।
__________ _____ . .
_____ \ ____ ____ __ __ ____ / _ \ ______ ______ ____ _ | | | ..
| // _ \ / __| | _/ __ \ / /\ \ / // __// __ \ / | __ | |< | |
| | ( <> ) // > | /\ / / | \ \ _ \ /| Y Y \ _\ \ |_ |
|| /_/_ /|/ _ > _| /____ >____ >___ >|| / /____/ |
/ // / / / / / / / /
___ ___ __
/ | \ __ __ / | ___________
/ ~ \ | / \ __/ __ _ __
\ Y / | / | \ | \ /| | /
_| /|/|| /| _ >|
/ / /
Rogue Assembly Hunter चालू प्रक्रियाओं में 'दिलचस्प' .NET CLR मॉड्यूल खोजने के लिए एक उपयोगिता है।
.NET एक बहुत शक्तिशाली और सक्षम विकास प्लेटफ़ॉर्म और रनटाइम फ्रेमवर्क है जो .NET प्रबंधित अनुप्रयोगों के निर्माण और चलाने के लिए है। पिछले कुछ वर्षों में, रेड टीम्स (और उनके जैसे) द्वारा .NET को अपनाया गया है ताकि आक्रामक अभियानों का समर्थन करने के लिए ट्रेडक्राफ्ट को इंस्ट्रूमेंट किया जा सके। विशेष रूप से, आक्रामक PowerShell से .NET की ओर बदलाव कई लोगों के लिए एक तार्किक छलांग थी, क्योंकि PowerShell v5+ में बढ़ी हुई ऑप्टिक्स और अवसरवादी दृश्यता मौजूद थी। इस प्रकार, .NET आक्रामक टूलिंग और ट्रेडक्राफ्ट का उपयोग होस्ट-आधारित रक्षात्मक क्षमताओं को बायपास करने, एप्लिकेशन नियंत्रण को बायपास करने और दुर्भावनापूर्ण कोड (PowerShell जैसा) बनाने/स्टेज करने/वितरित करने/निष्पादित करने में सफलतापूर्वक किया गया है।
रोकथाम के दृष्टिकोण से, Microsoft .NET इंस्ट्रूमेंटेड खतरों का मुकाबला करने और समग्र .NET हमले की सतह को कम करने के लिए और अधिक कर रहा है। उदाहरण के लिए, Microsoft ने .NET Framework 4.8 में AMSI निरीक्षण क्षमताएँ जोड़ी हैं, और WDAC/WLDP तंत्र काफी प्रभावी हैं। पहचान/प्रतिक्रिया के दृष्टिकोण से, .NET पारिस्थितिकी तंत्र में आगे की दृश्यता और अंतर्दृष्टि हमेशा .NET-केंद्रित खतरों से निपटने के नए तरीके खोजने के लिए फायदेमंद होती है।
2017 में, Joe Desimone (@dez_) ने एक शानदार लेख लिखा था जिसका शीर्षक था Hunting For In-Memory .NET Attacks। आज भी प्रासंगिक, यह लेख आधुनिक .NET आक्रमण वैक्टर के साथ-साथ पहचान के लिए ऑन-डिमांड और इवेंट-आधारित तकनीकों की रूपरेखा प्रस्तुत करता है। लेख के साथ, Joe ने एक उपकरण (Get-ClrReflection) जारी किया जो सक्रिय रूप से इन-मेमोरी .NET CLR मॉड्यूल्स का पता लगाता है (और पुनर्प्राप्त करता है) जिनमें उचित डिस्क संदर्भ का अभाव है। Joe के काम से प्रेरित होकर और CLRMD रनटाइम डायग्नोस्टिक्स लाइब्रेरी (+ बाद में mscordacwks.dll की डेटा एक्सेस क्षमताओं) की अंतर्दृष्टि क्षमताओं का लाभ उठाते हुए, Rogue Assembly Hunter को निम्नलिखित के लिए बनाया गया था:
[*] पैरामीटर:
--mode=<.> : अनिवार्य | विश्लेषण मोड चुनें। विकल्पों में sweep, process, और watch शामिल हैं।
--hunt=<.> : वैकल्पिक | दिलचस्प CLR मॉड्यूल खोजने के लिए हंट स्कैन प्रकार चुनें। all (डिफ़ॉल्ट), memory-only, unusual-dir,
sig-status, imposter-file, या list निर्दिष्ट करें।
--export=<.> : वैकल्पिक, प्रायोगिक | इन-मेमोरी हंट स्कैन और इम्पोस्टर-फ़ाइल हंट स्कैन के लिए लोड किए गए CLR मॉड्यूल निर्यात करने के लिए फ़ाइल पथ निर्दिष्ट करें
(जैसे --hunt=memory-only/imposter-file/all)।
--pid=<.> : वैकल्पिक | PID द्वारा लक्षित प्रक्रिया निर्दिष्ट करें। का उपयोग --mode=process पैरामीटर/मान के साथ किया जाना चाहिए।
--checks=<.> : वैकल्पिक | स्कैन चक्रों के लिए मान निर्दिष्ट करें। यह स्कैन के दौरान रेस कंडीशन मिस को कम करने में मदद कर सकता है लेकिन परिणाम आउटपुट को दोहरा भी सकता है।
डिफ़ॉल्ट मान 1 है।
--sleep=<.> : वैकल्पिक | नींद सेकंड के लिए मान निर्दिष्ट करें। यह जाँच चक्र में देरी करके स्कैन के दौरान रेस कंडीशन मिस को कम करने में मदद कर सकता है।
डिफ़ॉल्ट मान 0 सेकंड है।
--debug : वैकल्पिक | अपवाद जानकारी प्रदर्शित करें (जैसे प्रक्रिया कनेक्ट त्रुटियाँ)।
--nobanner : वैकल्पिक | प्रदर्शन बैनर को दबाएँ। PowerShell स्क्रिप्ट या उन उपयोग मामलों के लिए उपयोगी जो ऑटोमेशन का लाभ उठाते हैं।
--suppress : वैकल्पिक | --mode=sweep या --mode=watch के दौरान RogueAssemblyHunter प्रक्रिया को स्कैन न करें।
--help : वैकल्पिक | यह सहायता दिखाएँ। यह किसी भी अन्य cmdline पैरामीटर को ओवरराइड करेगा और एप्लिकेशन को बाहर निकाल देगा। *यह बिना पैरामीटर के डिफ़ॉल्ट है।
[*] मोड (--mode=)
- sweep : सभी प्रक्रियाओं को स्कैन/पुनरावृत्त करें (नोट: केवल समान आर्किटेक्चर/'बिटनेस' की प्रक्रियाओं को सफलतापूर्वक स्कैन किया जाएगा। x86/x64/आदि के लिए चलाने के लिए संकलित करें)।
- process : एकल प्रक्रिया को स्कैन करें। --pid=<PID> के साथ उपयोग करें।
- watch : नई प्रक्रियाएँ बनने पर स्कैन करें। --checks और --sleep के साथ स्कैन विशेषताएँ समायोजित करें। (नोट: यह प्रायोगिक है। रेस कंडीशन की संभावना है।)
[*] हंट (--hunt=)
- all : डिफ़ॉल्ट मान। सभी हंट विकल्पों के साथ विश्लेषण करें ('list' को छोड़कर)।
- memory-only : मेमोरी हंट। उन CLR मॉड्यूल का विश्लेषण करें जो डिस्क द्वारा समर्थित नहीं हैं।
- unusual-dir : असामान्य निर्देशिका हंट। 'सामान्य' निर्देशिकाओं के बाहर लोड किए गए CLR मॉड्यूल का विश्लेषण करें।
अनुकूलित करने के लिए '_huntUnusualDirectoryFilter' संपादित करें।
- sig-status : फ़ाइल हस्ताक्षर हंट। असामान्य हस्ताक्षर स्थिति वाले CLR मॉड्यूल का विश्लेषण करें (जैसे अहस्ताक्षरित)। नोट: यह प्रायोगिक है। गलत सकारात्मक संभव हैं।
अनुकूलित करने के लिए '_huntSigExclusionsFilter' संपादित करें।
- imposter-file : अप्रत्याशित CLR मॉड्यूल हंट। संदिग्ध डिस्क फ़ाइल बैकिंग वाले CLR मॉड्यूल का विश्लेषण करें। प्रायोगिक।
- list : सभी CLR मॉड्यूल के माध्यम से पुनरावृति करें और तदनुसार सूचीबद्ध करें।
[*] उदाहरण उपयोग
- उदाहरण 1 : प्रक्रियाओं को स्कैन करें और सुलभ 64-बिट प्रक्रियाओं के लिए सभी हंट चलाएँ ('list' को छोड़कर) -
RogueAssemblyHunter_x64.exe --mode=sweep
- उदाहरण 2 : प्रक्रियाओं को स्कैन करें, सुलभ 32-बिट प्रबंधित प्रक्रियाओं में सभी CLR मॉड्यूल सूचीबद्ध करें, और त्रुटि जानकारी दिखाएँ -
RogueAssemblyHunter_x86.exe --mode=sweep --hunt=list --debug
- उदाहरण 3 : नई प्रक्रियाओं के लिए देखें, सभी CLR मॉड्यूल स्कैन करें (यदि प्रबंधित और 64-बिट), RogueAssemblyHunter प्रक्रिया को स्कैन न करें, और 3 सेकंड के अंतराल के साथ 2 जाँच करें -
RogueAssemblyHunter_x64.exe --mode=watch --suppress --checks=2 --sleep=3
- उदाहरण 4 : PID द्वारा एकल प्रक्रिया स्कैन करें, केवल इन-मेमोरी CLR मॉड्यूल परिणाम सूचीबद्ध करें, और CLR मॉड्यूल को निर्दिष्ट पथ पर निर्यात करें -
RogueAssemblyHunter_x86.exe --mode=process --pid=4650 --hunt=memory-only --export=c:\evilassemblies\
- उदाहरण 5 : प्रक्रियाओं को स्कैन करें, सुलभ 64-बिट प्रक्रियाओं के लिए केवल इन-मेमोरी CLR मॉड्यूल परिणाम सूचीबद्ध करें, RogueAssemblyHunter प्रक्रिया को स्कैन न करें, और शीर्षक बैनर न दिखाएँ -
RogueAssemblyHunter_x64.exe --mode=sweep --hunt=memory-only --suppress --nobanner
सुविधा के लिए, \Release फ़ोल्डर में दो संकलित बाइनरी (RogueAssemblyHunter_x64.exe और RogueAssemblyHunter_x86.exe) के साथ एक PowerShell स्क्रिप्ट शामिल की गई है। अपने उपयोग मामलों (जैसे परिनियोजन, एम्बेडिंग, जाँच, नींद, आदि) में फिट होने के लिए संशोधित करने के लिए स्वतंत्र महसूस करें।
उदाहरण उपयोग:
स्वीप मोड में Invoke-RogueAssemblyHunter चलाएँ और सभी हंट विकल्पों की जाँच करें
cd c:\path\to\RogueAssemblyHunter
import-module .\Invoke-RogueAssemblyHunter.ps1
Invoke-RogueAssemblyHunter
वॉच मोड में Invoke-RogueAssemblyHunter चलाएँ और सभी हंट विकल्पों की जाँच करें
cd c:\path\to\RogueAssemblyHunter
import-module .\Invoke-RogueAssemblyHunter.ps1
Invoke-RogueAssemblyHunter -ScanMode watch
SHA256 हैश:
e804711a8b6469f1b13b388de47dfa6dde1c85279d365db7b6e19e1644990fa6 Invoke-RogueAssemblyHunter.ps1
cc985d918e566671aa209142abc55bd798ca6c1a18730b785ac8c18d489736c3 RogueAssemblyHunter_x64.exe
ae3aead43871e263cd8465d5356c4daaae0635714321f872c931ec825008287a RogueAssemblyHunter_x86.exe