Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
PowerShellArmoury — Un arsenal de PowerShell para chicos y chicas de seguridad. | Kitploit
Herramientas/GitHubGitHub/cfalta/powershellarmoury
Herramientas de Cifrado/DescifradoGeneración de PayloadsScripting y AutomatizaciónPruebas de PenetraciónUtilidades y FrameworksRed TeamingArchived
GitHubcfalta/powershellarmoury

PowerShellArmoury

Un arsenal de PowerShell para chicos y chicas de seguridad.

Ver Repositorio
470693hace 2 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

[!IMPORTANT]
Este repositorio ahora está archivado. Aunque fue un viaje divertido, creo que PSArmoury ha superado su utilidad.


PowerShellArmoury

PowerShell Armoury está diseñado para pentesters, miembros de equipos de "inserte-color-aquí" y todos aquellos que utilizan una variedad de herramientas de PowerShell durante sus compromisos. Permite descargar y almacenar todos tus scripts favoritos de PowerShell en un único archivo ofuscado.

No tienes que preocuparte por actualizar Rubeus, PowerView, ... manualmente. Solo crea un archivo de configuración una vez o usa el predeterminado incluido con la herramienta. De ahora en adelante, solo tienes que ejecutar "New-PSArmoury" antes de dirigirte al próximo compromiso.

Además, PSArmoury ofusca tu código y viene con un bypass de AMSI incluido. El diseño modular debería facilitarte cambiar el código de evasión u ofuscación en caso de que haya una detección.



Estructura general

La versión actual de PSArmoury favorece un diseño modular.

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

El código se divide en un script generador principal llamado New-PSArmoury.ps1, que es el que ejecutas. El código para evasión, ofuscación y desofuscación se almacena en archivos .ps1 separados en el directorio modules. Estos archivos separados son invocados por el script principal y deberían facilitarte cambiar funciones específicas (como un bypass de AMSI).

Además del directorio modules, también está el directorio utilities. Aquí encontrarás scripts independientes que pueden ser útiles en escenarios específicos.

El directorio modules

La ruta predeterminada del directorio modules es .\modules, donde el punto se refiere al directorio de trabajo actual de tu shell. Puedes cambiar la ruta del directorio modules usando el argumento -ModulesDirectory de New-PSArmoury. Sin embargo, los nombres de los archivos de script en sí están codificados en el script principal y siempre se espera que sean:

  • evasion.ps1
  • obfuscation.ps1

Echemos un vistazo más de cerca a estos dos.

evasion.ps1

Este script debe contener el código destinado a evadir lo que sea que pretendas evadir. Por defecto, contiene un conocido bypass de AMSI (gracias amsi.fail). Ten en cuenta que:

  • el código aquí se ejecuta ANTES que todo lo demás (por ejemplo, desofuscación)
  • ¡no hay ABSOLUTAMENTE NINGÚN TIPO DE VALIDACIÓN! Todo lo que pongas aquí se canalizará a IEX tal cual.

obfuscation.ps1

Este script debe contener el código utilizado para ofuscación y desofuscación. El obfuscation.ps1 predeterminado utiliza cifrado RC2. Ejemplos listos para usar:

  • TEMPLATE_obfuscation_RC2.ps1 --> este es el predeterminado
  • TEMPLATE_obfuscation_byte_convert.ps1
  • TEMPLATE_obfuscation_empty.ps1

Ten en cuenta que TEMPLATE_obfuscation_empty.ps1 realmente no hace nada en absoluto y sirve como plantilla para que construyas tu propia función.

Si quieres usar alguno de ellos, simplemente renómbralo a "obfuscation.ps1" y elimina el archivo predeterminado.

Si deseas crear una versión personalizada, ten en cuenta lo siguiente con respecto a la ofuscación:

  • El nombre de la función DEBE ser siempre "Get-PSArmouryObfuscation" con un único parámetro de cadena llamado "Code" porque eso es lo que el script principal llamará en cualquier elemento que quieras poner en el armory.
  • La función DEBERÍA devolver la versión ofuscada del código nuevamente como un único valor de cadena. El código principal de los scripts ejecuta un bucle adicional de codificación/decodificación base64 para asegurarse de que también podemos manejar otras cosas que le lances, pero sería más fácil si pudieras simplemente convertirlo en una cadena ;-)
  • La función de desofuscación correspondiente DEBE entender lo que sea que devuelvas aquí. El script principal solo está pasando resultados --> aquí no ocurre magia

Y asegúrate de recordar estas cosas en términos de desofuscación:

  • El nombre de la función DEBE ser siempre Get-PSArmouryDeObfuscation sin parámetros, ya que itera sobre una variable global fija.
  • La función DEBE devolver la versión desofuscada del código nuevamente como un único valor de cadena, lista para ejecutar. Simplemente estamos canalizando todo lo que devuelves a IEX, así que el resto depende de ti.

El directorio utilities

El directorio utilities contiene scripts independientes útiles.

  • ConvertTo-Powershell.ps1
    • Convierte una aplicación de consola en C# a un script de PowerShell. Para más detalles, consulta la publicación del blog correspondiente.
  • Invoke-Shuffle.ps1
    • Un script de ofuscación simple que convierte una sola línea de código en múltiples variables que contienen partes de la cadena original, que luego se fusionan e invocan durante la ejecución.

Referencia de configuración

El archivo de configuración debe ser un json válido que consista en un solo array con uno o más objetos, donde cada objeto se interpreta como una única fuente de script. Cada objeto tiene los siguientes atributos

Name (Mandatory)

Un nombre de tu elección para identificar el script incluido en este objeto. Está pensado como referencia para ti mismo.

URL (Mandatory)

La ubicación para obtener el contenido del script. Puede ser una URL a un recurso web (https://) o una ruta local (C:) o un recurso de red (\...). La URL se introduce en Net.Webclient o en Get-Item de PowerShell respectivamente. Así que básicamente cualquier formato que uno de esos dos pueda manejar por defecto debería funcionar.

Type (Mandatory)

Esto da una pista sobre la ubicación del script al creador del armory. Hay tres tipos válidos:

  • GitHub
    • Solicitará credenciales para que podamos autenticarnos contra la API de GitHub. También intentará distinguir entre una URL "raw" que apunta directamente a un archivo o una URL que apunta a un repositorio. Si la URL apunta a un repositorio, el script buscará automáticamente todos los archivos de PowerShell en ese repositorio y los incluirá. Como "https://github.com/cfalta/PoshRandom"
  • WebDownloadSimple
    • Significa un archivo que se puede descargar sin autenticación ni nada usando una solicitud HTTP GET. Como "http://mywebserver.com/file.ps1"
  • LocalFile
    • Un archivo en disco como "C:\temp\test.ps1". Si la ruta apunta a un directorio, se incluirán todos los archivos (de forma recursiva) con la extensión ".ps1".

FileInclusionFilter (Optional)

Solo se interpretará en un objeto de tipo "GitHub". Se comparará con el operador de comparación "like" de PowerShell contra el nombre completo del archivo, así que ten en cuenta que debes incluir los comodines tú mismo. No olvides incluir un asterisco (*) si quieres coincidir con parte de un nombre de archivo. "*.ps1" significa todos los archivos que terminan en ".ps1", pero ".ps1" solo significa ".ps1".

FileExclusionFilter (Optional)

Como el InclusionFilter pero obviamente al revés. La exclusión tiene prioridad.

Argumentos

Consulta la ayuda incorporada de PowerShell (man -full New-PSArmoury) para más detalles.

-Path

La ruta a tu nuevo archivo armory. El valor predeterminado es ".\MyArmoury.ps1"

-FromFile

Carga tus scripts de PowerShell directamente desde una carpeta o archivo local y no tienes que proporcionar un archivo de configuración.

-Config

La ruta a tu archivo de configuración JSON. Echa un vistazo al ejemplo que viene con este script para ideas.

-ModulesDirectory

La ruta al directorio modules. El valor predeterminado es ".\modules". Si se usa ModulesDirectory, entonces los parámetros EvasionPath y ObfuscationPath no se pueden usar.

-EvasionPath

La ruta al script de evasión. Si se usan EvasionPath y ObfuscationPath, entonces el parámetro ModulesDirectory no se puede usar.

-ObfuscationPath

La ruta al script de ofuscación. Si se usan EvasionPath y ObfuscationPath, entonces el parámetro ModulesDirectory no se puede usar.

-ValidateOnly

Usa esto junto con "-Config" para permitir que el script valide la sintaxis básica de tu archivo de configuración JSON sin ejecutarlo.

-GithubCredentials

Pasa el nombre de usuario de GitHub y el token de acceso como un objeto de credencial para que el script no lo solicite. Útil si creas un armory repetidamente para pruebas.

Úsalo así:

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

Token de acceso de GitHub

Debes proporcionar un nombre de usuario de GitHub válido así como un token de acceso personal, para que el script pueda usar correctamente la API de GitHub. No uses nombre de usuario/contraseña ya que esto no funcionará de todos modos si tienes MFA habilitado (y deberías habilitar MFA). Además, acceder a la API con nombre de usuario/contraseña básico está obsoleto.

Sigue esta guía para crear un token de acceso personal.

Ten en cuenta: el único permiso que necesitamos en el token de acceso es public_repo en la sección repo.

Esto se debe a que solo necesitas el token para que GitHub no nos bloquee si analizas repositorios más grandes (como PowerSploit) en busca de archivos .ps1 para incluir.

Ejemplos de uso

Ejemplo 1 - Todo predeterminado

Si deseas crear un armory con la configuración predeterminada (nota: esto no ofuscará en absoluto además de la codificación base64), entonces simplemente ejecuta lo siguiente.

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

Esto creará un archivo .ps1 llamado "MyArmoury.ps1" en el directorio de trabajo actual usando

  • la configuración predeterminada ".\PSArmoury.json"
  • el bypass de AMSI predeterminado ubicado en ".\modules\evasion.ps1"
  • la ofuscación/desofuscación predeterminada (base64) ubicada en ".\modules\obfuscation.ps1" y ".\modules\deobfuscation.ps1" respectivamente.

Puedes cargar el armory en tu sesión actual usando

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

Cargar tu armory invoca los siguientes pasos:

  • Invoca el código de evasión
  • Entrega el control a la función de desofuscación que a su vez debería
  • Recorrer cada elemento ofuscado y
    • desofuscar
    • canalizar a IEX

Después de eso, todo el código de PowerShell que pusiste en el armory estará disponible. Simplemente invoca los cmdlets como de costumbre, así:

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

Si sucede que no recuerdas lo que pusiste dentro del armory, simplemente cárgalo y llama al inventario :-)

root@kitploit:~
Get-PSArmoury

Ejemplo 2 - Usar la técnica de ofuscación byte-convert/json-format que viene con PSArmoury y un archivo de configuración diferente

Inicia New-PSArmoury con los parámetros -EvasionPath y -ObfuscationPath de la siguiente manera:

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

Ejemplo 3 - Crear un armory desde una carpeta local que contiene scripts de PowerShell

Nota: en este caso, se agregarán todos los archivos .ps1 en la carpeta ya que enviamos una ruta de carpeta. Si enviamos la ruta a un solo archivo, entonces solo se procesará ese archivo.

root@kitploit:~
New-PSArmoury -FromFile C:\myscriptfolder
Descargar herramienta