
विंडोज मेमोरी-फोरेंसिक और खतरे की खोज करने वाला उपकरण जो लाइव प्रोसेस मेमोरी को दुर्भावनापूर्ण पैटर्न, इंजेक्शन तकनीकों और रिफ्लेक्टिवली लोडेड .NET असेंबलियों के लिए स्कैन करता है, और गलत सकारात्मक को कम करने के लिए बहु-स्तरीय विश्वास मॉडल का उपयोग करता है।

संस्करण : 0.9 (स्थिर रिलीज़)
Aether एक विंडोज मेमोरी-फोरेंसिक और खतरा-शिकार उपकरण है जो लाइव प्रक्रिया मेमोरी को स्कैन करता है दुर्भावनापूर्ण पैटर्न, इंजेक्शन तकनीक, इम्प्लांट सिग्नेचर, रिफ्लेक्टिवली लोडेड .NET असेंबली का पता लगाने के लिए। यह एक बहु-परत विश्वास मॉडल के साथ काम करता है जो झूठी सकारात्मक दर को नाटकीय रूप से कम करता है और दुर्भावनापूर्ण व्यवहार का शिकार करता है। Aether में हॉलोइंग, APC, थ्रेड हाईजैकिंग तकनीकों का पता लगाने की अच्छी क्षमता है। सुरक्षा विश्लेषक इसका उपयोग संदिग्ध क्षेत्रों को स्कैन करने, शिकार करने और स्नैपशॉट लेने के लिए कर सकते हैं ताकि ऑफ़लाइन विश्लेषण किया जा सके।
दस्तावेज़: https://0xsp.com/docs/aether-getting-started/
शोध लेख:
Aether की मुख्य विशेषताओं के लिए त्वरित स्पष्टीकरण, आप अधिक जानकारी के लिए पूर्ण तकनीकी ब्लॉगपोस्ट पढ़ सकते हैं:
"msxsl:script" 6D 00 73 00 78 00 ... बन जाता है)rules/ में नए सिग्नेचर ड्रॉप करेंMEM_PRIVATE क्षेत्रों में PE हैडर का पता लगाना — रिफ्लेक्टिवली लोडेड .NET असेंबली (MZ + PE + BSJB मेटाडेटा) को फ़्लैग करता हैAether कच्चे वर्किंग-सेट सिग्नल के ऊपर पाँच फ़िल्टर को लेयर करता है ताकि एक निष्कर्ष को रिपोर्ट करने से पहले कई सहमत संकेतकों की आवश्यकता हो, FP फ़िल्टरिंग के साथ:
| लेयर | फ़िल्टर | उद्देश्य |
|---|---|---|
| L1 | संरचनात्मक | केवल निष्पादन योग्य IMAGE उप-क्षेत्रों पर विचार किया जाता है (.data / .rdata COW शोर को समाप्त करता है) |
| L2 | मात्रात्मक | private_pages गिनती और private_ratio द्वारा ग्रेड करें (निम्न / मध्यम / उच्च) |
| L3 | पुष्टि | केवल तभी प्रचारित करें जब कोई स्वतंत्र संकेत उसी आवंटन आधार पर सहमत हो — सिग्नेचर हिट, missing_peb_entry, private_rwx, हुक प्रोलॉग, या ऑन-डिस्क डिफ़ |
| L4 | CLR-जागरूक | ngen / R2R / टियरड-JIT लक्ष्यों (*.ni.dll, mscor*, clr*, coreclr, system.private.corelib*) के लिए प्रति-मॉड्यूल दमन, CLR लोड होने पर ब्लैंकेट-स्किपिंग के बजाय |
| L5 | ऑन-डिस्क डिफ़ | CreateFileMappingW(SEC_IMAGE_NO_EXECUTE) के साथ मॉड्यूल फ़ाइल मैप करें; प्रत्येक निजी निष्पादन योग्य पृष्ठ के पहले 16 बाइट्स की तुलना डिस्क पर समान RVA से करें। कोई भी विचलन एक वास्तविक-संशोधन IOC है |
अन्य संरचनात्मक जाँचें:
MEM_IMAGE आवंटन जो PEB मॉड्यूल सूची में नहीं हैं (DLL हॉलोइंग / मॉड्यूल स्टॉम्पिंग)K32QueryWorkingSetEx के माध्यम से, बैचित एक सिस्कॉल प्रति क्षेत्र के बजाय प्रति 4 KB पृष्ठ एक के बजाय (≈ 50-100× तेज़ नैव लूप से)MEM_PRIVATE + PAGE_EXECUTE_* (यह FP परिणाम उत्पन्न कर सकता है) आवंटन (शेलकोड, JIT स्प्रे, डायनामिक कोड स्टब आवंटन) को फ़्लैग करता हैE9 ?? ?? ?? ?? — JMP rel32FF 25 ?? ?? ?? ?? — JMP [rip+disp32]68 ?? ?? ?? ?? C3 — PUSH imm32 ; RET48 B8 ?? ?? ?? ?? ?? ?? ?? ?? FF E0 — MOV RAX, imm64 ; JMP RAX49 BB ?? ?? ?? ?? ?? ?? ?? ?? 41 FF E3 — Detours-शैली MOV R11, imm64 ; JMP R11Cor_Private_IPCBlock_v4_<PID> और v2 Cor_Private_IPCBlock_<PID> (पुरातन .NET 2/3 / mscorwks) के लिए सेक्शन-ऑब्जेक्ट प्रोब, ताकि पुराने रनटाइम चलाने वाले शोरगुल वाले ऐप-पूल गलत वर्गीकृत न होंAether थ्रेड्स को सख्त वर्गीकरण और L1–L5 निष्कर्षों के साथ क्रॉस-कोरिलेशन के साथ जाँचता है। लक्ष्य प्रक्रिया में प्रत्येक बनाए गए थ्रेड के लिए, Aether NtQueryInformationThread के माध्यम से इसका Win32StartAddress पढ़ता है और, जब पहुँच अनुमति देती है, तो GetThreadContext / Wow64GetThreadContext के माध्यम से लाइव Rip / Eip भी पढ़ता है।
प्रत्येक पता फिर निम्न तालिका के अनुसार ग्रेड किया जाता है, अधिक विवरण के लिए ब्लॉगपोस्ट पढ़ें:
| फैसला | गंभीरता | शर्त |
|---|---|---|
TSAV_SHELLCODE_PRIVATE | CRITICAL | पता एक MEM_PRIVATE + PAGE_EXECUTE_* क्षेत्र में रहता है — क्लासिक CreateRemoteThread शेलकोड |
TSAV_SUSPENDED_RIP | CRITICAL | निलंबित थ्रेड का Rip Win32StartAddress से असहमत है और एक संदिग्ध क्षेत्र में हल करता है — Win32StartAddress स्पूफिंग (EarlyBird / APC चाल) और SetThreadContext हाईजैक पकड़ता है |
TSAV_HOLLOWED_HOST | HIGH | पता एक MEM_IMAGE आवंटन के अंदर है जो PEB मॉड्यूल सूची में नहीं है (DLL हॉलोइंग / मॉड्यूल स्टॉम्पिंग) |
TSAV_MODIFIED_HOST | HIGH | पता एक MEM_IMAGE आवंटन के अंदर है जिसे L1–L5 पाइपलाइन पहले से MODIFIED_CODE_*, MISSING_PEB, PRIVATE_RWX, DISK_MEM_DIFF, या HOOK_PROLOGUE के रूप में फ़्लैग कर चुकी है |
TSAV_STAGED_PRIVATE_RW | HIGH | MEM_PRIVATE + PAGE_READWRITE — पूर्व-VirtualProtect शेलकोड स्टेजिंग |
TSAV_MAPPED_NONPE | MEDIUM | MEM_MAPPED (पेजफ़ाइल-समर्थित सेक्शन) बिना PE हैडर के — sRDI / पेजफ़ाइल रिफ्लेक्टिव लोडर |
TSAV_SPOOF_TRAMPOLINE | MEDIUM | पता एक निषिद्ध ट्रैम्पोलिन से मेल खाता है (LoadLibraryA/W/ExA/W, WinExec, CreateProcessA/W, VirtualAlloc[Ex], RtlExitUserThread, RtlExitUserProcess, NtTerminateProcess, ShellExecuteA/W) |
यह मूल जाँच "क्या start_address किसी मॉड्यूल में है" से अधिक मजबूत क्या बनाता है:
VirtualQueryEx क्रॉस-चेक — प्रत्येक पते को एक एकल O(1) कॉल में Type / Protect / AllocationBase के लिए क्वेरी किया जाता है, मॉड्यूल सूची पर रैखिक स्कैन के बजायTSAV_MODIFIED_HOST हो जाती हैWin32StartAddress NtSetInformationThread के माध्यम से प्रक्रिया-लिखने योग्य है और स्पूफ करने योग्य फ़ील्ड है; निलंबित थ्रेड का लाइव Rip वह है जिसे लोडर आसानी से पुनर्लिखित नहीं कर सकता। हम दोनों की तुलना करते हैं और किसी भी असहमति को फ़्लैग करते हैं जो संदिग्ध क्षेत्र में हल करता हैWow64GetThreadContext पर स्विच करता है और 64-बिट प्रक्रिया के अंदर 32-बिट थ्रेड के लिए Eip पढ़ता हैQUERY_INFORMATION | GET_CONTEXT → QUERY_INFORMATION → QUERY_LIMITED_INFORMATION पर फॉलबैक करता है, ताकि आंशिक-पहुँच परिदृश्य भी उपयोगी वर्गीकरण उत्पन्न करेंरनटाइम API रिज़ॉल्यूशन एक ऐसी तकनीक है जिसका उपयोग मैलवेयर द्वारा अक्सर किया जाता है। Aether का पता लगाने का तंत्र हीप में मान्य मॉड्यूल पतों और पॉइंटर्स के लिए स्कैन करके और नीचे वर्णित फ़िल्टरिंग मानदंडों के साथ परिणामों को सहसंबंधित करके इस व्यवहार की पहचान करता है:
प्रत्येक फ़िल्टर वास्तविक-विश्व टेलीमेट्री में देखे गए एक विशिष्ट FP वर्ग को मारता है: