
घटना प्रतिक्रिया एवं डिजिटल फोरेंसिक्स डिबगिंग एक्सटेंशन
SwishDbgExt एक Microsoft WinDbg डिबगिंग एक्सटेंशन है जो Microsoft WinDbg द्वारा उपलब्ध कमांड्स के सेट का विस्तार करता है, साथ ही मौजूदा कमांड्स को ठीक और बेहतर बनाता है। यह एक्सटेंशन Matt Suiche (@msuiche) द्वारा विकसित किया गया है – अधिक सुविधाओं के लिए, योगदान देने या बग रिपोर्ट करने के लिए [email protected] पर संपर्क करने में संकोच न करें।
SwishDbgExt का उद्देश्य कर्नेल डेवलपर्स, समस्या निवारकों और सुरक्षा विशेषज्ञों के लिए डिबगिंग, घटना प्रतिक्रिया और मेमोरी फोरेंसिक कमांड्स की एक श्रृंखला के साथ जीवन को आसान बनाना है। क्योंकि SwishDbgExt एक WinDbg डिबगिंग एक्सटेंशन है, इसका मतलब है कि इसका उपयोग स्थानीय या रिमोट कर्नेल डिबगिंग सत्रों, Microsoft LiveKd द्वारा उत्पन्न लाइव सत्रों, साथ ही ब्लू स्क्रीन ऑफ डेथ पर उत्पन्न Microsoft क्रैश डंप या Comae DumpIt जैसी हाइब्रिड उपयोगिताओं पर किया जा सकता है।
अधिक जानकारी https://blog.comae.io/comae-2016-contest-swishdbgext-features-3c9a63c62209#.tnt1b9usx पर
आप या तो WinDbg एक्सटेंशन को संबंधित (x86 या x64) WinDbg फ़ोल्डर में कॉपी कर सकते हैं या इसे नीचे दिए गए !load कमांड का उपयोग करके मैन्युअल रूप से लोड कर सकते हैं। कृपया ध्यान दें कि लोड किए जाने वाले लक्ष्य dll के पूर्ण पथ में स्पेस या कोट्स नहीं हो सकते।
!load X:\FullPath\SwishDbgExt.dll
###उदाहरण:
kd> !load E:\projects\labs\SwishDbgExt\bin\x64\SwishDbgExt.dll;
SwishDbgExt v0.7.0 (Nov 2 2016) - Incident Response & Digital Forensics Debugging Extension
SwishDbgExt Copyright (C) 2016 Comae Technologies FZE - http://www.comae.io
SwishDbgExt Copyright (C) 2014-2016 Matthieu Suiche (@msuiche)
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
यदि आप अपने WinDbg टेम्पलेट को अधिक DML-अनुकूल टेम्पलेट के साथ अपडेट करना चाहते हैं, तो आप पैकेज में शामिल windbg_template.reg फ़ाइल को सीधे आयात कर सकते हैं।
उपलब्ध एक्सटेंशन कमांड्स के बारे में जानकारी प्रदर्शित करता है।
यह कमांड आपको सभी कमांड्स की सूची देगा यदि आप कोई तर्क निर्दिष्ट नहीं करते हैं, और यदि कोई मौजूदा कमांड तर्क के रूप में निर्दिष्ट किया जाता है तो उसके पैरामीटर की सूची देगा।
कॉलबैक फ़ंक्शन प्रदर्शित करें
उपयोग किए गए कोड केव की खोज करें
कंसोल कमांड का इतिहास प्रदर्शित करें
उपयोगकर्ता के क्रेडेंशियल प्रदर्शित करें (gentilwiki के mimikatz पर आधारित)
ड्राइवरों की सूची प्रदर्शित करें। !ms_drivers वर्तमान में लोड किए गए ड्राइवरों की सूची प्रदर्शित करेगा। इस उदाहरण में, इस कर्नेल-डंप में क्रैश के समय लोड किए गए कुछ ड्राइवर यहां दिए गए हैं: इस कमांड के साथ, हम किसी ड्राइवर के बारे में गहराई से IRP जानकारी भी देख सकते हैं: उपरोक्त छवि में हम e1cexpress.sys के IRP के अंदर ड्राइवर-विशिष्ट I/O स्टैक स्थान देख सकते हैं। यहां हम IRP_MJ_CREATE जैसे फ़ंक्शन कोड देख सकते हैं जो लक्ष्य डिवाइस ऑब्जेक्ट को खोलता है, यह दर्शाता है कि यह I/O संचालन के लिए मौजूद और उपलब्ध है।
डिस्क पर मेमोरी स्थान डंप करें
Ex क्यू किए गए वर्कर्स प्रदर्शित करें।
!exqueue Windows 8 पर ठीक से काम नहीं करता, इसलिए एक कार्यशील संस्करण लागू करने की आवश्यकता थी। मूल कमांड की तरह ही यह काम करने वाले थ्रेड्स की कतार प्रदर्शित करता है।
WinDbg में सेगमेंटेशन रीसेट करें ("16.kd>" ठीक करें)
GDT प्रदर्शित करें।
!ms_gdt ग्लोबल डिस्क्रिप्टर टेबल प्रदर्शित करता है। ध्यान दें कि x64 पर प्रत्येक सेलेक्टर फ्लैट है (0x0000000000000000 से 0xFFFFFFFFFFFFFFFF)। यह कमांड GDT के किसी भी संदिग्ध हुकिंग की जांच के लिए अतिरिक्त रूप से सहायक हो सकता है, क्योंकि x64 पर ऐसा करने का प्रयास बग चेक को कॉल करेगा। ऐसा इसलिए है क्योंकि x64 GDT की हुकिंग को प्रतिबंधित करता है।
रजिस्ट्री हाइव्स की सूची प्रदर्शित करें।
ms_hivelist रजिस्ट्री हाइव्स की एक सूची प्रदर्शित करता है।
हम सीधे एक हाइव (उदाहरण के लिए \Registry\Machine\Software) में देख सकते हैं कि इसकी उपकुंजियाँ, मान आदि क्या हैं:

IDT प्रदर्शित करें।
!ms_idt इंटरप्ट डिस्क्रिप्टर टेबल प्रदर्शित करता है। GDT की तरह ही, यदि IDT को x64 सिस्टम पर हुक किया गया है, तो यह बग चेक को कॉल करेगा। ऐसा इस तथ्य के कारण है कि Microsoft ने (प्रोग्रामेटिक रूप से) IDT को हुक करने की रोकथाम को लागू किया है, जो कर्नेल-मोड ड्राइवर के साथ होता है जो सामान्य रूप से IDT में कॉल को इंटरसेप्ट करेगा और फिर अपनी प्रोसेसिंग जोड़ेगा। यही कारण है कि उपरोक्त छवि में, जहां तक देखा जा सकता है, 'नहीं' है।
एक मेमोरी स्थान का विश्लेषण करें और मैलवेयर स्कोर इंडेक्स (MSI) लौटाएँ - (Frank Boldewin के काम पर आधारित)
मास्टर बूट रिकॉर्ड (MBR) स्कैन करें
नेटवर्क जानकारी प्रदर्शित करें (सॉकेट, कनेक्शन, ...)
ऑब्जेक्ट की सूची प्रदर्शित करें
प्रक्रियाओं की सूची प्रदर्शित करें।
!ms_process !process और !dml_proc का एक बेहतर संस्करण है।
नीचे ध्यान देने योग्य एक अच्छी बात यह है कि कमांड के साथ DML (डिबगर मार्कअप लैंग्वेज) का उपयोग किया जाता है। सभी रेखांकित कमांड वास्तव में कमांड के लिंक हैं।
उदाहरण के तौर पर नीचे, आप /vads /scan का आउटपुट देख सकते हैं, VAD (वर्चुअल एड्रेस डिस्क्रिप्टर) को स्कैन करने के लिए। आप देख सकते हैं कि एक कॉलम "मैलवेयर स्कोर इंडेक्स" देता है जो शेलकोड या हीप-स्प्रे का पता लगाने में उपयोगी हो सकता है।
नीचे स्क्रीनशॉट में, आप कई VAD में असामान्य रूप से उच्च स्कोर देख सकते हैं – हीप स्प्रे के उपयोग के कारण। बस स्कोर पर क्लिक करने से स्कैनिंग एल्गोरिथम चलेगा।
स्कैनिंग एल्गोरिथम Frank Boldewin के OfficeMalScanner उपयोगिता पर आधारित है।
और आपको जानकारी देता है कि शेलकोड कहाँ है:
/scan विकल्प का उपयोग निर्यात किए गए फ़ंक्शन पर भी किया जा सकता है ताकि पता चल सके कि EAT (एक्सपोर्ट एड्रेस टेबल) को पैच किया गया है या फ़ंक्शन का प्रोलॉग संशोधित किया गया है।
SSDT के लिए समान परीक्षण उपलब्ध हैं (!ms_ssdt)।
कुंजी नियंत्रण ब्लॉक पढ़ें
कुंजी नोड पढ़ें।
!reg WinDbg कमांड लंबे समय से कुछ बग के कारण निराशाजनक रहा है। यही कारण है कि SwishDbgExt में रजिस्ट्री डेटा तक पहुँच को यथासंभव सरल बनाने के लिए अपने स्वयं के रजिस्ट्री एक्सप्लोरर फ़ंक्शन हैं।
कुंजी मान पढ़ें
संदिग्ध NDIS हुक्स को स्कैन और प्रदर्शित करें
सेवाओं की सूची प्रदर्शित करें
सर्विस डिस्क्रिप्टर टेबल (SDT) फ़ंक्शन प्रदर्शित करें।
!ms_ssdt सिस्टम सर्विस डिस्पैच टेबल प्रदर्शित करता है। यह कमांड डायरेक्ट ऑब्जेक्ट मैनिपुलेशन (DKOM) के माध्यम से संदिग्ध रूटकिट हुक्स की जांच में अत्यंत सहायक है। यदि आप यहाँ कोई निम्न-स्तरीय रूटीन हुक देखते हैं (जैसे nt!NtEnumerateKey), तो यह संभावित रूटकिट संक्रमण के बारे में आपके विश्लेषण में सहायता कर सकता है।
स्टोर मैनेजर (ReadyBoost) से संबंधित जानकारी प्रदर्शित करें।
यह कमांड ऑपरेटिंग सिस्टम द्वारा उपयोग किए जाने वाले वर्तमान ReadyBoost (USB 3.0 की आवश्यकता है) कैश को सूचीबद्ध करने के साथ-साथ स्टोर मैनेजर द्वारा प्रबंधित मेमोरी पेजों के लॉग प्रदर्शित करने की अनुमति देता है। पैरामीटर: /cache
KTIMER की सूची प्रदर्शित करें।
!ms_timers KTIMER संरचना प्रदर्शित करता है, जो एक अपारदर्शी संरचना है जो विभिन्न टाइमर ऑब्जेक्ट्स का प्रतिनिधित्व और समाहित करती है। यह कमांड यह पता लगाने में सहायक हो सकता है कि किन ड्राइवरों ने कौन से टाइमर ऑब्जेक्ट बनाए, किन ड्राइवरों ने किन रूटीन को कॉल किया, आदि।
कैश्ड VACB की सूची प्रदर्शित करें
वर्बोज़ मोड चालू/बंद करें
निम्नलिखित Alex Ionescu द्वारा प्रकाशित शोध पर आधारित है और यहाँ उपलब्ध है: https://github.com/ionescu007/lxss/
यह सुविधा Windows 10+ O.S. पर एक वैकल्पिक सुविधा के रूप में उपलब्ध है जिसे निम्नलिखित PowerShell कमांड के माध्यम से स्थापित किया जा सकता है:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
आप Windows Subsystem for Linux के बारे में निम्नलिखित लिंक पर अधिक पढ़ सकते हैं:
Windows Subsystem for Linux Overview.
Instance 0xFFFFE704EEB8F010
GUID: {E29032FD-35D3-4C53-AB68-6BCEBDA7176F}
State: (1) [STARTED]
Creation Flags: 00000001
GlobalData: 0xFFFFF802ED4138A0
Root Handle: 80000834
Temp Handle: 80000838
Job Handle: 8000083c
Token: 80000818
Event Handle: 800008bc
Map Paths (0): 0xFFFFE704EF437920
VFS Context: 0xFFFFE704EEFC4710
Memory Flags: 0x2
Last PID: 35
Thread Groups: 3
Session 0xFFFFE704EDB79EC0
Instance: 0xFFFFE704EEB8F010
Console inode: 0x0
Foreground PID: -1
Process Group 0xFFFFE704EDB79AE0
Instance: 0xFFFFE704EEB8F010
Session: 0xFFFFE704EDB79EC0
Thread Group 0xFFFFE704EF4F8000
Binary Path: /init
Thread(s): 1
Owner Process Group: 0xFFFFE704EDB79AE0
Flags: 0x00000000
Main Thread: 0xFFFFE704EF5CC010
Arguments (006 bytes): 0x00007FFFC081D6E0
Process 0xFFFFE704EF2F1D70
Instance: 0xFFFFE704EEB8F010
NT Process Object: 0xFFFFAE05E84EF800
NT Process Handle: 0xFFFFFFFF80000F58
VDSO Address: 0x00007FFFC0849000
Stack Address: 0x00007FFFC001E000
Session 0xFFFFE704EF5DB830
Instance: 0xFFFFE704EEB8F010
Console inode: 0xFFFFE704EF32D7A0
Foreground PID: 2
Process Group 0xFFFFE704EF5EF970
Instance: 0xFFFFE704EEB8F010
Session: 0xFFFFE704EF5DB830
Thread Group 0xFFFFE704EF5EE000
Binary Path: /bin/bash
Thread(s): 1
Owner Process Group: 0xFFFFE704EF5EF970
Flags: 0x0000000C
Main Thread: 0xFFFFE704EF5F8010
Arguments (010 bytes): 0x00007FFFDF34E418
Process 0xFFFFE704EDEF6EC0
Instance: 0xFFFFE704EEB8F010
NT Process Object: 0xFFFFAE05E84E6800
NT Process Handle: 0xFFFFFFFF80000D9C
VDSO Address: 0x00007FFFDF883000
Stack Address: 0x00007FFFDEB4F000
Session 0xFFFFE704EF0A8ED0
Instance: 0xFFFFE704EEB8F010
Console inode: 0xFFFFE704EF06B9C0
Foreground PID: 19
Process Group 0xFFFFE704F059CBC0
Instance: 0xFFFFE704EEB8F010
Session: 0xFFFFE704EF0A8ED0
Thread Group 0xFFFFE704EDE51000
Binary Path: /bin/bash
Thread(s): 1
Owner Process Group: 0xFFFFE704F059CBC0
Flags: 0x0000000C
Main Thread: 0xFFFFE704EDC78090
Arguments (010 bytes): 0x00007FFFF78CFB78
Process 0xFFFFE704F06389B0
Instance: 0xFFFFE704EEB8F010
NT Process Object: 0xFFFFAE05E618D800
NT Process Handle: 0xFFFFFFFF80001650
VDSO Address: 0x00007FFFF7C99000
Stack Address: 0x00007FFFF70D0000
किसी प्रक्रिया की मेमोरी को yara नियमों से स्कैन करें।
किसी प्रक्रिया की मेमोरी स्कैन करें।
!ms_yarascan /pid 0x228 /yarafile /yarafile C:\Rules.yar
सभी प्रक्रियाओं की मेमोरी स्कैन करें।
!for_each_process "r? @$t0 = (nt!_EPROCESS *) @#Process; .process /r /p @$t0; !ms_yarascan /pid @@C++(@$t0->UniqueProcessId) /yarafile C:\\Rules.yar"
MsPEImageFile में Windows बाइनरी (PE) द्वारा उपयोग की जाने वाली सामान्य सामान्य जानकारी होती है और इसे तीन अलग-अलग क्लासेस में व्युत्पन्न किया गया है: