
Un módulo de PowerShell dedicado a la ingeniería inversa.
Desensambla código nativo y administrado.
Get-CSDisassemblyDesensambla una matriz de bytes utilizando el framework de desensamblado Capstone Engine.
Get-ILDisassemblyDesensambla una matriz de bytes MSIL sin procesar pasada desde un objeto MethodInfo de manera similar a Ildasm.
Herramientas útiles al realizar análisis de malware.
New-FunctionDelegateProporciona un envoltorio ejecutable para una función X86 o X86_64.
Invoke-LoadLibraryCarga una DLL en el proceso actual de PowerShell.
New-DllExportFunctionCrea un delegado envoltorio ejecutable alrededor de una función exportada no administrada.
Get-HostsFileAnaliza un archivo HOSTS.
New-HostsFileEntryReemplaza o agrega una entrada a un archivo HOSTS.
Remove-HostsFileEntryElimina una entrada o una serie de entradas de un archivo HOSTS.
Get-AssemblyStringsMuestra todas las cadenas de un ejecutable .NET.
Get-AssemblyResourcesExtrae recursos administrados de un ensamblado .NET.
Remove-AssemblySuppressIldasmAttributeElimina un atributo SuppressIldasmAttribute de un ensamblado .NET.
Get-AssemblyImplementedMethodsDevuelve todos los métodos en un ensamblado que están implementados en MSIL.
Inspeccionar y analizar la memoria de procesos.
Get-ProcessStringsMuestra todas las cadenas imprimibles de la memoria en modo usuario de un proceso.
Get-VirtualMemoryInfoUn envoltorio para kernel32!VirtualQueryEx.
Get-ProcessMemoryInfoRecupera información de memoria virtual para cada conjunto único de páginas en la memoria de usuario. Esta función es similar al comando !vadump de WinDbg.
Get-StructFromMemoryMarshaling de datos desde un bloque de memoria no administrado en un proceso arbitrario a un objeto administrado recién asignado del tipo especificado.
Analizar formatos de archivo y estructuras en memoria.
Get-PEUn analizador de PE en disco y en memoria, y un volcador de procesos.
Find-ProcessPEsEncuentra ejecutables portátiles en memoria independientemente de si fueron cargados de manera legítima.
Get-LibSymbolsMuestra información simbólica de archivos LIB de Windows.
Get-ObjDumpMuestra información sobre archivos de objeto (OBJ) de Windows.
Obtener y analizar información de bajo nivel del sistema operativo Windows.
Get-NtSystemInformationUna utilidad que llama y analiza la salida de la función ntdll!NtQuerySystemInformation. Esta utilidad se puede utilizar para consultar información interna del sistema operativo que normalmente no está visible para un usuario.
Get-PEBDevuelve el bloque de entorno de proceso (PEB) de un proceso.
Register-ProcessModuleTraceInicia un seguimiento de los módulos de proceso cargados.
Get-ProcessModuleTraceMuestra los módulos de proceso que se han cargado desde la llamada a Register-ProcessModuleTrace.
Unregister-ProcessModuleTraceDetiene el seguimiento de módulos de proceso en ejecución.
Get-SystemInfoUn envoltorio para kernel32!GetSystemInfo.
Funciones auxiliares varias.
Get-MemberUna función proxy utilizada para extender el cmdlet Get-Member incorporado. Agrega el parámetro '-Private' que permite mostrar miembros .NET no públicos.
Get-StringsExtrae cadenas de archivos tanto en Unicode como en ASCII. Este cmdlet replica la funcionalidad de strings.exe de Sysinternals.
ConvertTo-StringConvierte los bytes de un archivo en una cadena que tiene un mapeo 1 a 1 con los bytes originales del archivo. ConvertTo-String es útil para realizar expresiones regulares binarias.
Get-EntropyCalcula la entropía de un archivo o matriz de bytes.
Bibliotecas requeridas por algunas de las funciones de RE.
CapstoneEl enlace C# del motor de desensamblado Capstone.
De4dotUna potente biblioteca de desofuscación .NET y análisis de PE .NET.
PSReflectUn módulo utilizado para definir fácilmente enumeraciones, estructuras y funciones Win32 en memoria.
FormattersArchivos ps1xml utilizados para formatear la salida de varias funciones de PowerShellArsenal.
El módulo PowerShellArsenal y todos los scripts individuales están bajo la licencia BSD 3-Clause a menos que se indique explícitamente lo contrario.
Consulte la ayuda basada en comentarios en cada script individual para obtener información detallada de uso.
Para instalar este módulo, coloque toda la carpeta PowerShellArsenal en uno de sus directorios de módulos. Las rutas de módulos de PowerShell predeterminadas se enumeran en la variable de entorno $Env:PSModulePath.
La ruta de módulo predeterminada por usuario es: "$Env:HomeDrive$Env:HOMEPATH\Documents\WindowsPowerShell\Modules" La ruta de módulo predeterminada a nivel de equipo es: "$Env:windir\System32\WindowsPowerShell\v1.0\Modules"
Para usar el módulo, escriba Import-Module PowerShellArsenal
Para ver los comandos importados, escriba Get-Command -Module PowerShellArsenal
Si está ejecutando PowerShell v3 y desea eliminar la molesta advertencia '¿Realmente desea ejecutar scripts descargados de Internet?', una vez que haya colocado PowerShellArsenal en su ruta de módulos, ejecute la siguiente línea única:
$Env:PSModulePath.Split(';') | % { if ( Test-Path (Join-Path $_ PowerShellArsenal) ) {Get-ChildItem $_ -Recurse | Unblock-File} }
Para obtener ayuda sobre cada comando individual, Get-Help es su amigo.
Nota: Las herramientas contenidas en este módulo fueron diseñadas todas para que puedan ejecutarse individualmente. Incluirlas en un módulo simplemente favorece la portabilidad.
Para todos los colaboradores y futuros colaboradores de PowerShellArsenal, les pido que sigan esta guía de estilo al escribir sus scripts/módulos.
Evite Write-Host a toda costa. ¡Las funciones/cmdlets de PowerShell no son utilidades de línea de comandos! Las solicitudes de extracción que contengan código que use Write-Host no serán consideradas. En su lugar, debe generar objetos personalizados. Para obtener más información sobre la creación de objetos personalizados, lea estos artículos:
Si desea mostrar información de depuración relevante en la pantalla, use Write-Verbose. El usuario siempre puede agregar '-Verbose'.
Proporcione siempre ayuda descriptiva basada en comentarios para cada script. Además, asegúrese de incluir su nombre y una licencia BSD 3-Clause (a menos que existan circunstancias atenuantes que impidan la aplicación de la licencia BSD).
Asegúrese de que todas las funciones sigan la concordancia adecuada verbo-sustantivo de PowerShell. Use Get-Verb para listar los verbos predeterminados utilizados por PowerShell. Las excepciones a los verbos admitidos se considerarán caso por caso.
Prefiero que los nombres de las variables estén en mayúsculas y sean lo más descriptivos posible.
Proporcione un espaciado lógico entre su código. Sangre su código para hacerlo más legible.
Si se encuentra repitiendo código, escriba una función.