विंडोज में पर्सिस्टेंस के लिए अन्वेषण
यह क्या है?
ट्रॉलर एक PowerShell स्क्रिप्ट है जो घटना प्रतिक्रियाकर्ताओं को विंडोज होस्ट पर समझौते के संभावित संकेतक खोजने में मदद करने के लिए डिज़ाइन की गई है, जो मुख्य रूप से निर्धारित कार्यों, सेवाओं, रजिस्ट्री संशोधनों, स्टार्टअप आइटम, बाइनरी संशोधनों और अधिक सहित पर्सिस्टेंस तंत्रों पर केंद्रित है।
वर्तमान में, ट्रॉलर MITRE और Atomic Red Team द्वारा विशेष रूप से बताई गई अधिकांश पर्सिस्टेंस तकनीकों का पता लगा सकता है, और नियमित रूप से और अधिक जांच जोड़ी जा रही है।
मुख्य विशेषताएं
- विंडोज ओएस को विभिन्न पर्सिस्टेंस तकनीकों के लिए स्कैन करना (नीचे सूचीबद्ध)
- MITRE तकनीक और जांच जंपस्टार्ट मेटाडेटा के साथ CSV आउटपुट
- विश्लेषण और उपचार मार्गदर्शन दस्तावेज़ीकरण (https://github.com/joeavanzato/Trawler/wiki/Analysis-and-Remediation-Guidance)
- प्रत्येक जांच के लिए गतिशील जोखिम असाइनमेंट
- शोर कम करने के लिए विंडोज 10/सर्वर 2012|2016|2019|2022 तक फैले सामान्य विंडोज कॉन्फ़िगरेशन के लिए अंतर्निहित अनुमति सूचियाँ
- रनटाइम पर गतिशील अनुमति-सूची के रूप में उपयोग के लिए 'गोल्डन' एंटरप्राइज़ इमेज (स्नैपशॉट) से पर्सिस्टेंस मेटाडेटा कैप्चर करना
- ड्राइव री-टार्गेटिंग के माध्यम से माउंटेड डिस्क इमेज का विश्लेषण करना
मैं इसका उपयोग कैसे करूं?
बस एक प्रशासनिक PowerShell/cmd प्रॉम्प्ट से trawler.ps1 डाउनलोड करें और चलाएं - कोई भी जांच कंसोल में प्रदर्शित होगी और वर्तमान कार्यशील निर्देशिका में CSV ('detections.csv') में लिखी जाएगी। उत्पन्न CSV में जांच नाम, स्रोत, जोखिम, मेटाडेटा और प्रासंगिक MITRE तकनीक शामिल होगी।
या एक प्रशासनिक PowerShell टर्मिनल से इस वन-लाइनर का उपयोग करें:
iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/joeavanzato/Trawler/main/trawler.ps1'))
कुछ जांचों में डिफ़ॉल्ट विंडोज कॉन्फ़िगरेशन (10/2016/2019/2022) से शोर हटाने में मदद करने के लिए अंतर्निहित अनुमति-सूचियाँ होती हैं - अपेक्षित निर्धारित कार्य, सेवाएँ, आदि। बेशक, हमलावरों के लिए सीधे इनका अपहरण करना और एक डिफ़ॉल्ट OS प्रक्रिया के रूप में विस्तार से भेस बदलना हमेशा संभव है - कुशल विरोधियों से निपटते समय कई प्रकार के विश्लेषण और जांच का उपयोग करने का ध्यान रखें।
यदि आपके पास अतिरिक्त जांचों के लिए उदाहरण या विचार हैं, तो कृपया प्रासंगिक तकनीकी विवरण/संदर्भों के साथ एक Issue या PR सबमिट करने में संकोच न करें - कोड-बेस अभी थोड़ा अव्यवस्थित है और समय के साथ साफ किया जाएगा।
इसके अतिरिक्त, यदि आप स्पष्ट झूठी सकारात्मकताओं की पहचान करते हैं, तो कृपया GitHub पर Issue या PR खोलकर मुझे बताएं! इसके स्पष्ट कारण गैर-मानक COM, सेवाएँ या कार्य होंगे।
CLI पैरामीटर
-scanoptions : Tab-through for possible detections and select a sub-set using comma-delimited terms (eg. .\trawler.ps1 -scanoptions Services,Processes) or skip to do all detections
-quiet : Suppress Detection output to console
-snapshot : Path to a previous trawler JSON output to use as an allow-list.
-outpath : Define a custom file-path for saving detection output to (defaults to "$PSScriptRoot\detections.csv")
-drivetarget : Define the variable for a mounted target drive (eg. .\trawler.ps1 -targetdrive "D:") - (defaults to local system)
-daysago : Define how many 'days back' we want to take into consideration for time-based detections (defaults to 45)
-hashmode : Define which hashing algorithm we want to use for supported detections - supports sha1, md5 or sha256 (defaults to sha1)
-evtx : Enable creation of Event Log Source and Writing of Detections to Application event log under Source=trawler with EID=9001 (default is disabled)
यह PersistenceSniper से क्या अलग करता है?
PersistenceSniper एक शानदार टूल है - मैंने पिछले समय में इसका भारी उपयोग किया है - लेकिन कुछ मुख्य बिंदु हैं जो इन उपयोगिताओं को अलग करते हैं
- trawler (वर्तमान में) एक स्थानीय उपयोगिता है - हालाँकि इसे एक लूप में लपेटना और दूरस्थ होस्ट पर निष्पादित करने के लिए WinRM/PowerShell सत्रों का उपयोग करना काफी सीधा होगा
- trawler विंडोज (10/2016/2019/2022) की डिफ़ॉल्ट कॉन्फ़िगरेशन से अपेक्षित जांचों को हटाने में मदद करने के लिए कई 'शोर' जांचों के लिए अनुमति-सूची लागू करता है, और इन्हें लगातार अपडेट किया जा रहा है (PS भी ऐसा करता है)
PersistenceSniper (अधिकांशतः) किसी भी प्रकार की अनुमति-सूची नहीं रखता है - इसलिए, सेवाओं, निर्धारित कार्यों, सामान्य COM DLL स्कैनिंग आदि जैसे आइटमों पर विचार करते समय अधिक शोर उत्पन्न होता है।
- trawler का आउटपुट सरल है - प्रत्येक जांच के लिए केवल नाम, जोखिम, स्रोत, MITRE तकनीक और मेटाडेटा प्रदान किए जाते हैं ताकि विश्लेषकों को उनके पर्सिस्टेंस शिकार प्रयासों में तेजी लाने में मदद मिल सके - यह एक दोधारी तलवार है।
- कई जांचों में 'संदिग्ध' कीवर्ड या पैटर्न का पता लगाने के लिए रीजेक्स का उपयोग किया जाता है, जिसमें स्कैन की गई फ़ाइल सामग्री, रजिस्ट्री मान आदि शामिल हैं। यह थोड़ा अधिक लचीलापन प्रदान करता है लेकिन संभावित रूप से उच्च झूठी-सकारात्मक दर भी देता है।
- trawler एक विश्लेषण मशीन पर माउंट किए गए डेड-बॉक्स की जांच करने के लिए 'ड्राइव-रीटार्गेटिंग' का समर्थन करता है।
कुल मिलाकर, ये उपकरण अत्यधिक समान हैं लेकिन समस्या को थोड़े अलग कोणों से देखते हैं - PersistenceSniper सभी जानकारी विश्लेषक को समीक्षा के लिए लौटाता है जबकि Trawler केवल उन परिणामों को लौटाने का प्रयास करता है जो संभावित प्रतिद्वंदी पर्सिस्टेंस तंत्र होने की संभावना रखते हैं। इस तरह, trawler के साथ झूठी-नकारात्मकता की संभावना है यदि कोई प्रतिद्वंदी किसी अनुमति-सूचीबद्ध आइटम की पूरी तरह से नकल करता है।
एक उदाहरण के रूप में - PersistenceSniper सभी 'गैर-सुरक्षित' Windows सेवाओं को वापस करेगा जबकि trawler केवल उन्हीं को वापस करेगा जो एक विशिष्ट जांच नियम से मेल खाते हैं, आदि।
अपने वातावरण में अनुकूलन
Trawler एक 'स्नैपशॉट' से अनुमति-सूची लोड करने का समर्थन करता है - इसके लिए दो चरणों की आवश्यकता है।
- अपने वातावरण में सर्वरों का प्रतिनिधित्व करने वाली "गोल्डन इमेज" पर '.\trawler.ps1 -snapshot' चलाएं - एक बार पूरा होने पर, मानक 'detections.csv' के अलावा 'snapshots.csv' नामक एक फ़ाइल उत्पन्न होगी।
- इस फ़ाइल का उपयोग अन्य होस्ट पर trawler चलाते समय इनपुट के रूप में किया जा सकता है और डेटा प्रत्येक उपयुक्त जांच के लिए एक अनुमति-सूची के रूप में गतिशील रूप से लोड किया जाएगा
- '.\trawler.ps1' -loadsnapshot "path\to\snapshot.csv"
बस इतना ही - सभी प्रासंगिक जांचें तब शोर को कम करने और बेस इमेज में होने वाले किसी भी संभावित परिवर्तन की पहचान करने के लिए स्नैपशॉट फ़ाइल से अनुमति-सूची के रूप में आकर्षित करेंगी।
(अधिकांश जाँचों के लिए अनुमति-सूची लागू की गई है लेकिन सभी के लिए नहीं - अभी भी सक्रिय रूप से लागू की जा रही है)
ड्राइव रीटार्गेटिंग
अक्सर एक जाँच के दौरान, विश्लेषक एक नई ड्राइव माउंट कर सकते हैं जो एक इमेज किए गए विंडोज डिवाइस का प्रतिनिधित्व करती है - Trawler अब '-drivetarget' पैरामीटर के उपयोग के माध्यम से इन माउंटेड ड्राइव को स्कैन करने का आंशिक रूप से समर्थन करता है।
रनटाइम पर, Trawler फ़ाइल-आधारित आर्टिफैक्ट की जाँच करने के लिए अस्थायी स्क्रिप्ट-स्तरीय चरों को रीटार्गेट करेगा और HKLM/HKU के अंतर्गत प्रासंगिक रजिस्ट्री हाइव (HKLM\SOFTWARE, HKLM\SYSTEM, NTUSER.DATs, USRCLASS.DATs) को लोड करने का प्रयास करेगा, जो 'ANALYSIS_' से उपसर्गित होंगे। Trawler स्क्रिप्ट पूर्ण होने पर इन अस्थायी रूप से लोड किए गए हाइव को अनलोड करने का भी प्रयास करेगा।
उदाहरण के तौर पर, यदि आपके पास 'F:\Test' जैसे स्थान पर एक इमेज माउंट है जिसमें NTFS फाइल सिस्टम है ('F:\Test\Windows', 'F:\Test\User', आदि), तो आप trawler को नीचे दिए अनुसार आमंत्रित कर सकते हैं;
.\trawler.ps1 -drivetarget "F:\Test"
कृपया ध्यान दें कि चूंकि trawler प्रश्न में ड्राइव से रजिस्ट्री हाइव फ़ाइलों को लोड करने का प्रयास करता है, एक लाइव रिमोट डिवाइस पर UNC पथ मैप करना काम नहीं करेगा क्योंकि सिस्टम लॉक के कारण वे फ़ाइलें सुलभ नहीं होंगी। मैं एक ऐसे दृष्टिकोण पर काम कर रहा हूं जो लाइव रिमोट डिवाइसों को संभालेगा, बने रहें।
ड्राइव रीटार्गेटिंग करते समय क्या निरीक्षण नहीं किया जाता है?
- चल रही प्रक्रियाएँ
- नेटवर्क कनेक्शन
- 'फैंटम' DLL
- WMI उपभोक्ता (इस पर काम चल रहा है)
- BITS जॉब (इस पर काम चल रहा है)
- प्रमाणपत्र पार्सिंग (इस पर काम चल रहा है)
अधिकांश अन्य जाँचें बढ़िया काम करेंगी क्योंकि वे पूरी तरह से रजिस्ट्री हाइव या फ़ाइल-आधारित आर्टिफैक्ट पढ़ने पर आधारित हैं (या ऐसा करने के लिए परिवर्तित की जा सकती हैं, जैसे कि अंतर्निहित कमांड-लेट्स का उपयोग करने के बजाय सीधे टास्क XML पढ़ना)।
ड्राइव-रीटार्गेटिंग करते समय जाँचों में किसी भी सीमा पर GitHub Wiki में अधिक विस्तार से चर्चा की जाएगी।
उदाहरण चित्र
क्या निरीक्षण किया जाता है?
- निर्धारित कार्य
- उपयोगकर्ता
- सेवाएँ
- चल रही प्रक्रियाएँ
- नेटवर्क कनेक्शन
- WMI इवेंट उपभोक्ता (कमांडलाइन/स्क्रिप्ट)
- स्टार्टअप आइटम खोज
- BITS जॉब खोज
- विंडोज एक्सेसिबिलिटी फीचर संशोधन
- PowerShell प्रोफ़ाइल अस्तित्व
- Office ट्रस्टेड डॉक्यूमेंट्स
- ट्रस्टेड स्थानों से Office ऐड-इन्स
- SilentProcessExit निगरानी
- Winlogon हेल्पर DLL अपहरण
- इमेज फ़ाइल निष्पादन विकल्प अपहरण
- RDP शैडोइंग
- दूरस्थ सत्रों के लिए UAC सेटिंग
- प्रिंट मॉनिटर DLL
- LSA सुरक्षा और प्रमाणीकरण पैकेज अपहरण
- समय प्रदाता DLL
- प्रिंट प्रोसेसर DLL
- बूट/लॉगऑन सक्रिय सेटअप
- उपयोगकर्ता आरंभीकरण लॉगऑन स्क्रिप्ट अपहरण
- स्क्रीनसेवर निष्पादनीय अपहरण
- Netsh DLL
- AppCert DLL
- AppInit DLL
- एप्लिकेशन शिमिंग
- COM ऑब्जेक्ट अपहरण
- LSA अधिसूचना अपहरण
- 'Office टेस्ट' उपयोग
- Office GlobalDotName उपयोग
- टर्मिनल सेवाएँ DLL अपहरण
- Autodial DLL अपहरण
- कमांड AutoRun प्रोसेसर दुरुपयोग
- Outlook OTM अपहरण
- ट्रस्ट प्रदाता अपहरण
- LNK लक्ष्य स्कैनिंग (संदिग्ध शब्द, एकाधिक एक्सटेंशन, एकाधिक EXE)
- चल रही प्रक्रिया में लोड किए गए 'फैंटम' विंडोज DLL नाम (जैसे, अहस्ताक्षरित WptsExtensions.dll)
- अहस्ताक्षरित EXE/DLL के लिए महत्वपूर्ण OS निर्देशिकाओं की स्कैनिंग
- अन-कोटेड सेवा पथ अपहरण
- PATH बाइनरी अपहरण
- सामान्य फ़ाइल एसोसिएशन अपहरण और संदिग्ध कीवर्ड
- संदिग्ध प्रमाणपत्र खोज
- GPO स्क्रिप्ट खोज/स्कैनिंग
- NLP विकास प्लेटफ़ॉर्म DLL ओवरराइड
- AeDebug/.NET/स्क्रिप्ट/प्रक्रिया/WER डीबग प्रतिस्थापन
- एक्सप्लोरर 'लोड'
- Windows Terminal startOnUserLogin अपहरण
- ऐप पथ बेमेल
- सेवा DLL/इमेजपथ बेमेल
- GPO एक्सटेंशन DLL
- संभावित COM अपहरण
- गैर-मानक LSA एक्सटेंशन
- DNSServerLevelPluginDll उपस्थिति
- एक्सप्लोरर\मायकंप्यूटर यूटिलिटी अपहरण
- टर्मिनल सेवाएँ आरंभिक प्रोग्राम जांच
- RDP स्टार्टअप प्रोग्राम
- माइक्रोसॉफ्ट टेलीमेट्री कमांड
- गैर-मानक AMSI प्रदाता
- इंटरनेट सेटिंग्स LUI त्रुटि DLL
- PeerDist\एक्सटेंशन DLL
- ErrorHandler.CMD जाँच
- अंतर्निहित डायग्नोस्टिक्स DLL
TODO
MITRE तकनीकों का मूल्यांकन किया गया
कृपया ध्यान दें कि इनमें से कुछ (बेशक) दूसरों की तुलना में अधिक पाई जाती हैं - उदाहरण के लिए, हम सभी संभावित रजिस्ट्री संशोधनों का पता नहीं लगा रहे हैं बल्कि केवल स्पष्ट परिवर्तनों के लिए कुछ कुंजियों का निरीक्षण कर रहे हैं और सामान्य MITRE तकनीक "रजिस्ट्री संशोधित करें" का उपयोग कर रहे हैं जहां कोई अन्य तकनीक लागू नहीं होती है। अन्य आइटमों जैसे COM अपहरण के लिए, हम प्रासंगिक रजिस्ट्री अनुभाग में सभी प्रविष्टियों का निरीक्षण कर रहे हैं, 'ज्ञात-अच्छे' पैटर्न के खिलाफ जांच कर रहे हैं और अज्ञात या बेमेल मानों को ऊपर ला रहे हैं, जिसके परिणामस्वरूप उस विशेष तकनीक के लिए बहुत अधिक पूर्ण जांच सतह प्राप्त होती है।
- T1037: बूट या लॉगऑन आरंभीकरण स्क्रिप्ट
- T1037.001: बूट या लॉगऑन आरंभीकरण स्क्रिप्ट: लॉगऑन स्क्रिप्ट (Windows)
- T1037.005: बूट या लॉगऑन आरंभीकरण स्क्रिप्ट: स्टार्टअप आइटम
- T1055.001: प्रक्रिया इंजेक्शन: डायनेमिक-लिंक लाइब्रेरी इंजेक्शन
- T1059: कमांड और स्क्रिप्टिंग इंटरप्रेटर
- T1071: एप्लिकेशन लेयर प्रोटोकॉल
- T1098: खाता हेरफेर
- T1112: रजिस्ट्री संशोधित करें
- T1053: निर्धारित कार्य/जॉब
- T1136: खाता बनाएं
- T1137.001: Office एप्लिकेशन Office टेम्पलेट मैक्रोज़
- T1137.002: Office एप्लिकेशन स्टार्टअप: Office टेस्ट
- T1137.006: Office एप्लिकेशन स्टार्टअप: ऐड-इन्स
- T1176: ब्राउज़र एक्सटेंशन
- T1197: BITS जॉब
- T1505.005: सर्वर सॉफ़्टवेयर घटक: टर्मिनल सेवाएँ DLL
- T1543.003: सिस्टम प्रक्रिया बनाएं या संशोधित करें: Windows सेवा
- T1546: इवेंट-ट्रिगर निष्पादन
- T1546.001: इवेंट-ट्रिगर निष्पादन: डिफ़ॉल्ट फ़ाइल एसोसिएशन बदलें
- T1546.002: इवेंट-ट्रिगर निष्पादन: स्क्रीनसेवर
- T1546.003: इवेंट-ट्रिगर निष्पादन: Windows प्रबंधन इंस्ट्रुमेंटेशन इवेंट सब्सक्रिप्शन
- T1546.007: इवेंट-ट्रिगर निष्पादन: Netsh हेल्पर DLL
- T1546.008: इवेंट-ट्रिगर निष्पादन: एक्सेसिबिलिटी फीचर्स
- T1546.009: इवेंट-ट्रिगर निष्पादन: AppCert DLL
- T1546.010: इवेंट-ट्रिगर निष्पादन: AppInit DLL
- T1546.011: इवेंट-ट्रिगर निष्पादन: एप्लिकेशन शिमिंग
- T1546.012: इवेंट-ट्रिगर निष्पादन: इमेज फ़ाइल निष्पादन विकल्प इंजेक्शन
- T1546.013: इवेंट-ट्रिगर निष्पादन: PowerShell प्रोफ़ाइल
- T1546.015: इवेंट-ट्रिगर निष्पादन: कंपोनेंट ऑब्जेक्ट मॉडल अपहरण
- T1547.002: बूट या लॉगऑन ऑटोस्टार्ट निष्पादन: प्रमाणीकरण पैकेज
- T1547.003: बूट या लॉगऑन ऑटोस्टार्ट निष्पादन: समय प्रदाता
- T1547.004: बूट या लॉगऑन ऑटोस्टार्ट निष्पादन: Winlogon हेल्पर DLL
- T1547.005: बूट या लॉगऑन ऑटोस्टार्ट निष्पादन: सुरक्षा समर्थन प्रदाता
- T1547.009: बूट या लॉगऑन ऑटोस्टार्ट निष्पादन: शॉर्टकट संशोधन
- T1547.012: बूट या लॉगऑन ऑटोस्टार्ट निष्पादन: प्रिंट प्रोसेसर
- T1547.014: बूट या लॉगऑन ऑटोस्टार्ट निष्पादन: सक्रिय सेटअप
- T1553: ट्रस्ट नियंत्रण को कमजोर करें
- T1553.004: ट्रस्ट नियंत्रण को कमजोर करें: रूट प्रमाणपत्र स्थापित करें
- T1556.002: प्रमाणीकरण प्रक्रिया संशोधित करें: पासवर्ड फ़िल्टर DLL
- T1564.006: आर्टिफैक्ट छुपाएं: वर्चुअल इंस्टेंस चलाएं
- T1574: निष्पादन प्रवाह का अपहरण
- T1574.007: निष्पादन प्रवाह का अपहरण: PATH पर्यावरण चर द्वारा पथ अवरोधन
- T1574.009: निष्पादन प्रवाह का अपहरण: अनकोटेड पथ द्वारा पथ अवरोधन
संदर्भ
यह उपकरण अद्भुत InfoSec समुदाय के बिना अस्तित्व में नहीं होता - मेरे द्वारा उपयोग किए गए सबसे उल्लेखनीय संदर्भ नीचे प्रदान किए गए हैं।
अधिक संदर्भ