
एक्सपोर्ट एड्रेस टेबल सुरक्षा शमन का कार्यान्वयन, जैसे Export Address Filtering (EAF)
एक एक्सपोर्ट एड्रेस टेबल सुरक्षा शमन (mitigation) का कार्यान्वयन, जैसे Export Address Filtering (EAF)
इस प्रोजेक्ट में तीन बाइनरी शामिल हैं, जिन्हें संकलित करने पर EATGuard\bin\ में पाया जा सकता है। वे हैं:
EATGuardApplication.exe - "दुर्भावनापूर्ण" एप्लिकेशन जो EATGuardDll.dll को प्रोसेस में लोड करता है और फिर कुछ निष्पादन योग्य कोड (shellcode) चलाता है जो notepad.exe को निष्पादित करता है।EATGuardDll.dll - DLL जो यूज़र-मोड और कर्नेल-मोड के बीच एक "ब्रिज" प्रदान करता है। यह DLL एक Vectored Exception Handler (VEH) पंजीकृत करता है जो kernel32.dll Export Address Table (EAT) तक पहुँच का पता लगाने को EATGuardDriver.sys ड्राइवर को भेजता है। यह DLL kernel32.dll EAT पर एक गार्ड पेज आवंटित करता है जो EATGuardApplication.exe प्रोसेस स्पेस के भीतर EAT तक पहुँचने पर एक अपवाद (exception) उत्पन्न करता है। यह निष्पादन को पंजीकृत VEH की ओर मोड़ता है जो इन अपवादों को संसाधित करता है और विश्लेषण पूर्ण होने के बाद निष्पादन जारी रखने के लिए ज़िम्मेदार है।EATGuardDriver.sys - कर्नेल-मोड डिवाइस ड्राइवर जो kernel32.dll EAT तक पहुँच को सत्यापित करता है। वर्तमान में, एक POC के रूप में, यह जाँचता है कि kernel32.dll तक पहुँचने वाली मेमोरी डिस्क द्वारा समर्थित (backed by disk) है या नहीं।कृपया ध्यान दें कि EATGuardApplication.exe EATGuardDll.dll को EATGuardApplication.exe के सापेक्ष पथ (relative path) से लोड करता है। इसका मतलब है कि निष्पादन के समय .exe और .dll दोनों एक ही निर्देशिका में होने चाहिए। कृपया यह भी ध्यान दें कि इस प्रोजेक्ट को कर्नेल डिबगिंग सक्षम वाली मशीन पर न चलाएँ। यह समस्याएँ पैदा कर सकता है, क्योंकि EATGuardDll.dll निष्पादन जारी रखने के लिए सिंगल-स्टेप अपवाद का उपयोग करता है। यहाँ प्रोजेक्ट के उपयोग का एक उदाहरण है:
C:\Users\ANON\Desktop>sc create EATGUARD type= kernel binPath= C:\Users\ANON\Desktop\EATGuardDriver.sys
[SC] CreateService SUCCESS
C:\Users\ANON\Desktop>sc start EATGUARD
SERVICE_NAME: EATGUARD
TYPE : 1 KERNEL_DRIVER
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
PID : 0
FLAGS :
C:\Users\ANON\Desktop>EATGuardApplication.exe
[+] KERNEL32.dll EAT: 0x00007FFB1D83F898
[+] Number of functions in the KERNEL32.dll EAT: 1678
[+] EATGuard analysis complete!
[+] Target address: 0x24AA138005C
[>] IsRipRwxMemory: TRUE
[>] IsRipMappedSection: FALSE
[>] IsRipBackedByImage: FALSE
[>] HasPageProtectionChanged: FALSE
[>] RegionBaseAddress: 0x24AA1380000
[>] MemoryRegionSize: 0x1000
[>] MemoryCommtSize: 0x1000
[+] EATGuard analysis complete!
[+] Target address: 0x24AA138005F
[>] IsRipRwxMemory: TRUE
[>] IsRipMappedSection: FALSE
[>] IsRipBackedByImage: FALSE
[>] HasPageProtectionChanged: FALSE
[>] RegionBaseAddress: 0x24AA1380000
[>] MemoryRegionSize: 0x1000
[>] MemoryCommtSize: 0x1000
[+] EATGuard analysis complete!
[+] Target address: 0x24AA138008F
[>] IsRipRwxMemory: TRUE
[>] IsRipMappedSection: FALSE
[>] IsRipBackedByImage: FALSE
[>] HasPageProtectionChanged: FALSE
[>] RegionBaseAddress: 0x24AA1380000
[>] MemoryRegionSize: 0x1000
[>] MemoryCommtSize: 0x1000
[+] EATGuard analysis complete!
[+] Target address: 0x24AA138009B
[>] IsRipRwxMemory: TRUE
[>] IsRipMappedSection: FALSE
[>] IsRipBackedByImage: FALSE
[>] HasPageProtectionChanged: FALSE
[>] RegionBaseAddress: 0x24AA1380000
[>] MemoryRegionSize: 0x1000
[>] MemoryCommtSize: 0x1000
[+] EATGuard analysis complete!
[+] Target address: 0x24AA13800A2
[>] IsRipRwxMemory: TRUE
[>] IsRipMappedSection: FALSE
[>] IsRipBackedByImage: FALSE
[>] HasPageProtectionChanged: FALSE
[>] RegionBaseAddress: 0x24AA1380000
[>] MemoryRegionSize: 0x1000
[>] MemoryCommtSize: 0x1000
(...)TRUNCATED(...)
यह प्रोजेक्ट एक POC है जो Export Address Filtering की कार्यक्षमता की नकल करता है।