VBA RunPE
Descrição
Uma implementação simples, porém eficaz, da técnica RunPE no VBA. Este código pode ser usado para executar executáveis da memória do Word ou Excel. É compatível com as versões de 32 e 64 bits do Microsoft Office 2010 e superior.

Uso 1 – arquivo PE no disco
- No
Exploitprocedimento no final do código, defina o caminho do arquivo que você deseja executar.
strSrcFile = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
/! \ Se você estiver usando uma versão de 32 bits do Microsoft Office em um SO de 64 bits, deverá especificar binários de 32 bits.
strSrcFile = "C:\Windows\SysWOW64\cmd.exe"
strSrcFile = "C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe"
- Especifique os argumentos da linha de comandos (opcional).
strArguments = "-exec Bypass"
Isso será usado para formar uma linha de comando equivalente a:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -exec Bypass
- (Opcional) Ative Exibir > Janela imediata (
Ctrl+G) para verificar a execução e os logs de erros. - Execute a
Exploitmacro!
Uso 2 – PE incorporado
- Use
pe2vba.pypara converter um arquivo PE em VBA. Dessa forma, ele pode ser incorporado diretamente na macro.
user@host:~/Tools/VBA-RunPE$ ./pe2vba.py meterpreter.exe
[+] Created file 'meterpreter.exe.vba'.
Substitua o código a seguirO script Python converte o PE em VBA e aplica o modelo RunPE automaticamente (não é necessário copiar / colar manualmente).RunPE.vbapelo conteúdo do.vbaarquivo que foi gerado na etapa anterior.
' ================================================================================
' ~~~ EMBEDDED PE ~~~
' ================================================================================
' CODE GENRATED BY PE2VBA
' ===== BEGIN PE2VBA =====
Private Function PE() As String
Dim strPE As String
strPE = ""
PE = strPE
End Function
' ===== END PE2VBA =====
- (Opcional) Ative Exibir > Janela imediata (
Ctrl+G) para verificar a execução e os logs de erros. - Execute a
Exploitmacro!
/! \ Ao usar um PE incorporado, a macro alterna automaticamente para esse modo porque o PE()método retornará uma seqüência de caracteres não vazia.
Testes
Este código foi testado nas seguintes plataformas:
- Windows 7 Pro 32 bits + Office 2010 32 bits
- Windows 7 Pro 64 bits + Office 2016 32 bits
- Windows 2008 R2 64 bits + Office 2010 64 bits
- Windows 10 Pro 64 bits + Office 2016 64 bits

