Conheça a Ferramenta PowerShell-Suite



PowerShell-Suite
Existem excelentes ferramentas e recursos on-line para realizar a maioria das tarefas no PowerShell , às vezes, no entanto, é necessário rotear uma utilidade para um propósito específico ou para preencher uma lacuna ontológica. Esta é uma coleção de utilitários do PowerShell que eu coloquei tanto para diversão como porque eu tinha uma aplicação estreita em mente.
Como tal, a milhagem que você tira deles pode variar, mas sinta-se livre para publicar problemas ou garfo e se adaptar!
API do Windows
Alguns recursos para consultar no acesso da API do Windows a partir do PowerShell:
Download
git clone https://github.com/FuzzySecurity/PowerShell-Suite.git
Este projeto inclui:
  • Invoke-RunasFuncionalmente equivalente ao Windows "runas.exe", usando Advapi32 :: CreateProcessWithLogonW.
  • Invoke-NetSessionEnumUse Netapi32 :: NetSessionEnum para enumerar sessões ativas em máquinas unidas por domínio.
  • Invoke-CreateProcess
    Use Kernel32 :: CreateProcess para alcançar um controle fino sobre a criação de processo do PowerShell.
  • Detectar-Depurar
    Mostra uma série de técnicas para detectar a presença de depuradores de Kernel / User-Mode do PowerShell.
  • Get-Handles
    Use NtQuerySystemInformation :: SystemHandleInformation para obter uma lista de identificadores abertos no processo especificado, funciona em x32 / x64.
  • Get-TokenPrivs
    Abra um identificador para um processo e use Advapi32 :: GetTokenInformation para listar os privilégios associados ao token do processo.
  • Get-Exports
    Get-Exports, obtém exportações de DLL e, opcionalmente, fornece saída de wrapper C ++ (idêntico a ExportsToC ++, mas sem necessidade de VS e um binário compilado). Para fazer isso, ele lê bytes DLL na memória e, em seguida, analisa-os (sem LoadLibraryEx). Por isso, você pode analisar x32 / x64 DLL independentemente da bitness do PowerShell.
  • Get-SystemModuleInformation
    Use NtQuerySystemInformation :: SystemModuleInformation para obter uma lista de módulos carregados, seu endereço base e tamanho (x32 / x64).
  • Expor-NetAPI
    Uma ferramenta bruta para expor as classes de API do .NET para o PowerShell através da reflexão. Isso inclui classes privadas internas, como Microsoft.Win32.UnsafeNativeMethods.
  • Get-ProcessMiniDump
    Crie o despejo do processo usando Dbghelp :: MiniDumpWriteDump.
  • Get-SystemProcessInformation
    Use NtQuerySystemInformation :: SystemProcessInformation para obter uma lista detalhada de processos e propriedades do processo. Na próxima inspeção, você verá que muitos monitores de processos, como o Sysinternals Process Explorer ou Process Hacker, usam essa classe de informações (além de SystemPerformanceInformation, SystemProcessorPerformanceInformation e SystemProcessorCycleTimeInformation).
  • Start-Eidolon

    Esta é uma prova de conceito para o doppelgänging, que foi recentemente apresentado pela enSilo na BlackHat EU. Em termos simples, esse processo envolve a criação de uma transação NTFS a partir de um arquivo no disco (qualquer arquivo fará). Em seguida, substituímos o arquivo na memória, criamos uma seção do arquivo modificado e iniciamos um processo com base nessa seção. Posteriormente, revertem a transação, deixando o arquivo original inalterado, mas acabamos com um processo que parece ser apoiado pelo arquivo original. Para uma descrição completa, reveja a referência no script.
  • Stage-RemoteDll
    Stage-RemoteDll é uma pequena função para demonstrar várias técnicas de injeção de Dll (NtCreateThreadEx / QueueUserAPC / SetThreadContext / SetWindowsHookEx) em arquiteturas de 32 e 64 bits. Embora tenha feito alguma validação e limpeza de entrada, este é principalmente o código POC. Observe também que essas técnicas podem ser facilmente reutilizadas para executar diretamente shellcode no processo remoto.
  • Export-LNKPwn
    Crie arquivos LNK para explorar CVE-2017-8464 também conhecido como LNK round 3;))!
    Atualmente, é recomendável que você crie o lnk localmente e mova-o para o sistema de destino devido às dependências .Net e PowerShell. Consulte a sinopse da função para obter mais detalhes.
  • UAC-TokenMagic
    Com base no post de James Forshaw em três partes na UAC, ligado abaixo e possivelmente uma técnica usada pela CIA!
    Essencialmente, nós duplicamos o token de um processo elevado, baixamos o nível de integridade obrigatório, usamos isso para criar um novo token restrito, representamo-lo e usamos o serviço Secondary Logon para gerar um novo processo com High IL. Como jogar esconde-esconde com tokens! ;))
    Esta técnica, mesmo, ignora a configuração AlwaysNotify, desde que você a forneça com um PID para um processo elevado.
    Metas: 7,8,8,1,10,10RS1,10RS2
  • Bypass-UAC
    O Bypass-UAC fornece uma estrutura para executar bypass UAC com base em chamadas de método de objeto COM IFileOperation auto elevating. Esta não é uma nova técnica, tradicionalmente, isso é conseguido injetando uma DLL em "explorer.exe". Isso não é desejável porque injetar no explorador pode desencadear alertas de segurança e trabalhar com DLLs não gerenciadas para um fluxo de trabalho inflexível.
    Para contornar isso, o Bypass-UAC implementa uma função que reescreve o PEB do PowerShell para dar-lhe a aparência de "explorer.exe". Isso fornece o mesmo efeito porque os objetos COM dependem exclusivamente da API de status de processo do Windows (PSAPI) que lê o processo PEB.
  • Masquerade-PEB
    Masquerade-PEB usa NtQueryInformationProcess para obter uma alça do PEB do powershell. A partir daí, substitui uma série de estruturas UNICODE_STRING na memória para conferir poderes à aparência de um processo diferente. Especificamente, a função irá substituir o "ImagePathName" e a "CommandLine" do powershell em _RTL_USER_PROCESS_PARAMETERS e o "FullDllName" e "BaseDllName" na lista vinculada _LDR_DATA_TABLE_ENTRY.
    Isso pode ser útil porque enganaria todos os fluxos de trabalho do Windows que dependem exclusivamente da API do Status do Processo para verificar a identidade do processo.
  • Invoke-SMBShell
    Shell POC usando pipes nomeados (System.IO.Pipes) como um canal C2. O tráfego SMB é criptografado usando AES CBC (código do Empire), a chave / pipe são gerados aleatoriamente pelo servidor no arranque.
  • Conjure-LSASS
    Use o SeDebugPrivilege para duplicar o token de acesso LSASS e representá-lo no tópico de chamada. Se SeDebugPrivilege estiver desativado, a função irá reativá-lo.
  • Invoke-MS16-032
    Implementação do MSS16-032 do PowerShell. A exploração destina-se a todos os sistemas operacionais vulneráveis ​​que suportam o PowerShell v2 +. O crédito para a descoberta do bug e a lógica para explorá-lo vão para James Forshaw (@tiraniddo).
    Metas:
    • Win7-Win10 e 2k8-2k12 <== 32/64 bit!
    • Testado no x32 Win7, x64 Win8, x64 2k12R2
  • Subvert-PE
    Injetar shellcode em uma imagem PE, mantendo a funcionalidade PE.
    Para obter informações adicionais, consulte:
  • Get-LimitChildItem
    Envoltório de profundidade limitada para Get-ChildItem com funcionalidade básica de filtro.
  • Get-CRC32
    Um invólucro simples para a função RtlComputeCrc32 indocumentada.
  • corrida-Execução
    Usa o mecanismo Capstone para desmontar recursivamente um PE (x32 / x64) do seu ponto de entrada, efetivamente "após" o fluxo de execução. São observadas as seguintes regras:
    • Os jmp são tomados se caírem no espaço de endereço PE
    • As chamadas são tomadas se elas caírem no espaço de endereço PE
    • ret e são tirados e use o endereço de retorno armazenado pelas instruções de chamada
    • chamadas indirectas / jmp não são tomadas
    • Jmp condicional não são tomadas
    • chamadas / jmp's que fazem referência a um registro não são tomadas
    Há muitos casos de borda aqui que podem tornar a desmontagem não confiável. Como regra geral, quanto mais endereços você desmontar, menos confiável será a saída. A tabela de chamadas pode ser usada como uma referência para avaliar a veracidade da saída.
    Uma vez que a desmontagem é estática, o funcionamento de uma matriz de bytes, os PE x32 / x64 podem ser desmontados, independentemente da bitness do PowerShell.
  • Calcular-Hash
    Script compatível com PowerShell v2 para calcular os hashes dos arquivos. Eu rapidamente scriptei isso porque o Get-FileHash está disponível apenas em v4 +.
  • Check-VTFile
    Envie SHA256 hash de um arquivo para o Virus Total e obtenha o relatório de verificação se o hash for conhecido. Isso exige que você obtenha uma chave gratuita da API VirusTotal. Mais uma vez, muitos projetos melhores lá fora para isso, mas não compatíveis com PowerShell v2.

Comentários