Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
PowerShellArmoury — Um arsenal do PowerShell para caras e moças da segurança | Kitploit
Ferramentas/GitHubGitHub/cfalta/powershellarmoury
Ferramentas de Criptografia/DescriptografiaGeração de PayloadsScripting e AutomaçãoTestes de PenetraçãoUtilitários e FrameworksRed TeamingArchived
GitHubcfalta/powershellarmoury

PowerShellArmoury

Um arsenal do PowerShell para caras e moças da segurança

Ver Repositório
47069há 2 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

[!IMPORTANT]
Este repositório agora está arquivado. Embora tenha sido uma jornada divertida, acho que o PSArmoury já não é mais útil.


PowerShellArmoury

O PowerShell Armoury foi criado para pentesters, membros de "equipes-de-inserir-cor-aqui" e todos os demais que utilizam uma variedade de ferramentas PowerShell durante seus engajamentos. Ele permite baixar e armazenar todos os seus scripts PowerShell favoritos em um único arquivo ofuscado.

Você não precisa se preocupar em atualizar Rubeus, PowerView, ... manualmente. Basta criar um arquivo de configuração uma vez ou usar o padrão incluído na ferramenta. A partir de agora, você só precisa executar "New-PSArmoury" antes de partir para o próximo engajamento. Além disso, o PSArmoury ofusca seu código e vem com um bypass AMSI incluído. O design modular deve facilitar a alteração do código de evasão ou ofuscação caso haja detecção sobre ele.



Estrutura geral

A versão atual do PSArmoury favorece um design modular.

root@kitploit:~
 New-PSArmoury.ps1
 PSArmoury.json
 utilities
    ConvertTo-Powershell.ps1
    Invoke-Shuffle.ps1
 modules
    evasion.ps1
    obfuscation.ps1

O código é dividido em um script gerador principal chamado New-PSArmoury.ps1, que é o que você executa. O código para evasão, ofuscação e desofuscação é armazenado em arquivos .ps1 separados no diretório modules. Esses arquivos separados são invocados pelo script principal e devem facilitar a alteração de funções específicas (como um bypass AMSI). Além do diretório modules, existe também o diretório utilities. Aqui você encontrará scripts independentes que podem ser úteis em cenários específicos.

O diretório modules

O caminho padrão do diretório de módulos é .\modules, onde o ponto se refere ao diretório de trabalho atual do seu shell. Você pode alterar o caminho do diretório de módulos usando o argumento -ModulesDirectory do New-PSArmoury. No entanto, os nomes dos próprios arquivos de script estão codificados no script principal e são sempre esperados como:

  • evasion.ps1
  • obfuscation.ps1

Vamos dar uma olhada mais de perto nesses dois.

evasion.ps1

Este script deve conter o código destinado a contornar o que quer que você pretenda contornar. Por padrão, ele contém um bypass AMSI bem conhecido (obrigado amsi.fail). Observe que:

  • o código aqui é executado ANTES de tudo o mais (ex.: desofuscação)
  • NÃO HÁ NENHUM TIPO DE VALIDAÇÃO! Tudo que você colocar aqui será passado para o IEX como está.

obfuscation.ps1

Este script deve conter o código usado para ofuscação e desofuscação. O obfuscation.ps1 padrão usa criptografia RC2. Exemplos prontos para uso:

  • TEMPLATE_obfuscation_RC2.ps1 --> este é o padrão
  • TEMPLATE_obfuscation_byte_convert.ps1
  • TEMPLATE_obfuscation_empty.ps1

Observe que o TEMPLATE_obfuscation_empty.ps1 realmente não faz nada e serve como modelo para você construir sua própria função.

Se você quiser usar um deles, basta renomeá-lo para "obfuscation.ps1" e excluir o arquivo padrão.

Se você quiser criar uma versão personalizada, tenha em mente o seguinte sobre ofuscação:

  • O nome da função DEVE ser sempre "Get-PSArmouryObfuscation" com um único parâmetro de string chamado "Code", porque é assim que o script principal chamará qualquer item que você queira colocar no arsenal.
  • A função DEVE retornar a versão ofuscada do código novamente como um único valor de string. O código principal dos scripts executa um loop adicional de codificação/decodificação base64 para garantir que possamos lidar também com outras coisas que você jogar nele, mas seria mais fácil se você pudesse apenas torná-lo uma string ;-)
  • A função de desofuscação correspondente DEVE entender o que você retornar aqui. O script principal apenas passa os resultados --> não acontece mágica aqui

E lembre-se destas coisas em termos de desofuscação:

  • O nome da função DEVE ser sempre Get-PSArmouryDeObfuscation sem parâmetros, pois ela itera sobre uma variável global fixa.
  • A função DEVE retornar a versão desofuscada do código novamente como um único valor de string, pronta para execução. Estamos apenas passando tudo que você retorna para o IEX, então o resto é com você.

O diretório utilities

O diretório utilities contém scripts independentes úteis.

  • ConvertTo-Powershell.ps1
    • Converte um aplicativo de console C# em um script PowerShell. Para mais detalhes, veja a postagem de blog correspondente.
  • Invoke-Shuffle.ps1
    • Um script simples de ofuscação que converte uma única linha de código em múltiplas variáveis contendo partes da string original, que são então mescladas e invocadas durante a execução.

Referência de configuração

O arquivo de configuração precisa ser um JSON válido que consiste em um único array com um ou mais objetos, onde cada objeto é interpretado como uma única fonte de script. Cada objeto possui os seguintes atributos

Name (Obrigatório)

Um nome de sua escolha para identificar o script incluído neste objeto. Isso serve apenas como referência para você.

URL (Obrigatório)

A localização para obter o conteúdo do script. Pode ser uma URL para um recurso web (https://) ou um caminho local (C:) ou um recurso de rede (\...). A URL é enviada para Net.Webclient ou Get-Item do PowerShell, respectivamente. Portanto, basicamente qualquer formato que um desses dois possa manipular por padrão deve funcionar.

Type (Obrigatório)

Isso dá uma dica sobre a localização do script para o criador do arsenal. Existem três tipos válidos:

  • GitHub
    • Solicitará credenciais para que possamos autenticar na API do GitHub. Também tentará distinguir entre uma URL "raw" que aponta diretamente para um arquivo ou uma URL que aponta para um repositório. Se a URL apontar para um repositório, o script procurará automaticamente todos os arquivos PowerShell nesse repositório e os incluirá. Como "https://github.com/cfalta/PoshRandom"
  • WebDownloadSimple
    • Significa um arquivo que pode ser baixado sem autenticação ou outras coisas usando um HTTP GET. Como "http://mywebserver.com/file.ps1"
  • LocalFile
    • Um arquivo no disco como "C:\temp\test.ps1". Se o caminho apontar para um diretório, todos os arquivos (recursivamente) com a extensão ".ps1" serão incluídos.

FileInclusionFilter (Opcional)

Será interpretado apenas em um objeto do tipo "GitHub". Será comparado com o operador de comparação "like" do PowerShell em relação ao nome completo do arquivo, então lembre-se de que você precisa incluir os curingas você mesmo. Não se esqueça de incluir um asterisco () se quiser corresponder a parte de um nome de arquivo. ".ps1" significa todos os arquivos que terminam com ".ps1", mas ".ps1" significa apenas ".ps1".

Você não precisa incluir um filtro, mas se o fizer, terá que usá-lo. Um InclusionFilter vazio significa nenhum arquivo.

FileExclusionFilter (Opcional)

Como o InclusionFilter, mas obviamente ao contrário. A exclusão tem precedência.

Argumentos

Consulte a ajuda inline do PowerShell (man -full New-PSArmoury) para mais detalhes.

-Path

O caminho para o seu novo arquivo arsenal. O padrão é ".\MyArmoury.ps1"

-FromFile

Carregue seus scripts PowerShell diretamente de uma pasta ou arquivo local e você não precisa fornecer um arquivo de configuração.

-Config

O caminho para o seu arquivo de configuração JSON. Dê uma olhada no exemplo que acompanha este script para ideias.

-ModulesDirectory

O caminho para o diretório de módulos. O padrão é ".\modules". Se ModulesDirectory for usado, os parâmetros EvasionPath e ObfuscationPath não podem ser usados.

-EvasionPath

O caminho para o script de evasão. Se EvasionPath e ObfuscationPath forem usados, o parâmetro ModulesDirectory não pode ser usado.

-ObfuscationPath

O caminho para o script de ofuscação. Se EvasionPath e ObfuscationPath forem usados, o parâmetro ModulesDirectory não pode ser usado.

-ValidateOnly

Use isto junto com "-Config" para que o script valide a sintaxe básica do seu arquivo de configuração JSON sem executá-lo.

-GithubCredentials

Passe o nome de usuário e token de acesso do GitHub como um objeto de credencial para que o script não solicite. Útil se você criar um arsenal repetidamente para testes.

Use assim:

root@kitploit:~
$c = get-credential
New-PSArmoury -GithubCredentials $c

Token de acesso do GitHub

Você deve fornecer um nome de usuário válido do GitHub, bem como um token de acesso pessoal, para que o script possa usar adequadamente a API do GitHub. Não use nome de usuário/senha, pois isso não funcionará de qualquer forma se você tiver MFA ativado (e você deve ativar o MFA). Além disso, acessar a API com nome de usuário/senha básico está obsoleto.

Siga este guia para criar um token de acesso pessoal.

Observe: a única permissão que precisamos no token de acesso é public_repo na seção repo.

Isso porque você só precisa do token para que o GitHub não nos bloqueie se você analisar repositórios maiores (como PowerSploit) em busca de arquivos .ps1 para incluir.

Exemplo de uso

Exemplo 1 – Tudo padrão

Se você deseja criar um arsenal com configurações padrão (observe: isso não ofuscará nada além da codificação base64), execute o seguinte.

root@kitploit:~
. .\New-PSArmoury.ps1
New-PSArmoury

Isso criará um arquivo .ps1 chamado "MyArmoury.ps1" no diretório de trabalho atual usando

  • a configuração padrão ".\PSArmoury.json"
  • o bypass AMSI padrão encontrado em ".\modules\evasion.ps1"
  • a ofuscação/desofuscação padrão (base64) encontrada em ".\modules\obfuscation.ps1" e ".\modules\deobfuscation.ps1", respectivamente.

Você pode carregar o arsenal em sua sessão atual usando

root@kitploit:~
cat -raw .\MyArmoury.ps1 | iex

Carregar seu arsenal invoca as seguintes etapas:

  • Invocar código de evasão
  • Entregar o controle para a função de desofuscação, que por sua vez deve
  • Percorrer cada item ofuscado e
    • desofuscar
    • canalizar para IEX

Depois disso, todo o código PowerShell que você colocou no arsenal estará disponível. Basta invocar os cmdlets como de costume, assim

root@kitploit:~
Invoke-Rubeus -Command "kerberoast /stats"
Get-DomainGroupMember -Identity "Domain Admins" -Recurse

Se acontecer de você não se lembrar do que colocou dentro do arsenal, basta carregá-lo e chamar o inventário :-)

root@kitploit:~
Get-PSArmoury

Exemplo 2 – Usar a técnica de ofuscação byte-convert/json-format que acompanha o PSArmoury e um arquivo de configuração diferente

Inicie o New-PSArmoury com os parâmetros -EvasionPath e -ObfuscationPath assim:

root@kitploit:~
New-PSArmoury -Config C:\myarmouryconfig.json -ObfuscationPath .\modules\TEMPLATE_obfuscation_byte_convert.ps1 -EvasionPath .\modules\evasion.ps1

Exemplo 3 – Criar um arsenal a partir de uma pasta local contendo scripts PowerShell

Observação: neste caso, todos os arquivos .ps1 na pasta serão adicionados, pois enviamos um caminho de pasta. Se enviarmos o caminho para um único arquivo, apenas esse arquivo será processado.

root@kitploit:~
New-PSArmoury -FromFile C:\myscriptfolder
Baixar ferramenta