Advertisement

header ads

Hablemos de smbghost(CVE-2020-0796)


Microsoft reveló una vulnerabilidad de protocolo smb v3.
Microsoft lanzó un parche.
Nomenclatura de vulnerabilidad: smbghost/deepblue ...




El protocolo Microsoft Server Message Block 3.1.1 (SMBv3) tiene una vulnerabilidad de ejecución remota de código en la forma en que maneja ciertas solicitudes. Puede ejecutar código en el servidor o cliente smb de destino.
Para aprovechar la vulnerabilidad contra el servidor, los atacantes no autenticados pueden enviar paquetes especialmente diseñados al servidor SMBv3 de destino; para explotar la vulnerabilidad contra el cliente, el atacante no autenticado deberá configurar un servidor SMBv3 malicioso e
incite a los usuarios a conectarse al servidor.
Rango de influencia:

Windows 10 versión 1903 para sistemas de 32 bits
Windows 10 versión 1903 para sistemas x64
Windows 10 versión 1903 para sistemas basados ​​en ARM64
Windows Server, Versión 1903 (instalación Server Core)
Windows 10 versión 1909 para sistemas de 32 bits
Windows 10 versión 1909 para sistemas x64
Windows 10 versión 1909 para sistemas basados ​​en ARM64
Windows Server, Versión 1909 (instalación Server Core)

Solo afecta a SMB v3.1.1, 1903 y 1909
Detección de vulnerabilidad:
No se ha encontrado ninguna EXP pública hasta el momento de la publicación.
Entorno win10  x64-1903 Professional Edition, apague el firewall, apague la actualización automática.

Herramientas para la auditora:
Versión de Python:

https://github.com/ollypwn/SMBGhost

Comprueba el dialecto SMB 3.1.1 y la capacidad de compresión a través de una solicitud de negociación.
---README.md


También podemos ver la solución al verlo por el trafico.



socket para enviar paquetes:

pkt = b'\x00\x00\x00\xc0\xfe[email protected]\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00$\x00\x08\x00\x01\x00\x00\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00x\x00\x00\x00\x02\x00\x00\x00\x02\x02\x10\x02"\x02$\x02\x00\x03\x02\x03\x10\x03\x11\x03\x00\x00\x00\x00\x01\x00&\x00\x00\x00\x00\x00\x01\x00 \x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\n\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00'
Juicio de retorno
if res[68:70] != b"\x11\x03" or res[70:72] != b"\x02\x00":
        print(f"{ip} Not vulnerable.")
    else:
        print(f"{ip} Vulnerable")
Sin embargo, después de parchar:
Entonces, después de aplicar el parche, el script también volverá vulnerable y causará falsos positivos.

Versión de Python con salida de estructura de datos: 

https://github.com/ioncodes/SMBGhost

Este script determina si SMBv3.1.1 y la compresión SMB están habilitadas, igual que 1) también informará falsamente.
 
sudo pip3 install hexdump
También juzgue estas dos posiciones:

version = struct.unpack("H", response[68:70])[0]
context = struct.unpack("H", response[70:72])[0]

if version != 0x0311:
    print(f"SMB version {hex(version)} was found which is not vulnerable!")
elif context != 2:
    print(f"Server answered with context {hex(context)} which indicates that the target may not have SMB compression enabled and is therefore not vulnerable!")
else:
print(f"SMB version {hex(version)} with context {hex(context)} was found which indicates SMBv3.1.1 is being used and SMB compression is enabled, therefore being vulnerable to CVE-2020-0796!")

Este es el siguiente script:

https://github.com/ClarotyICS/CVE2020-0796/blob/master/python_script/smbv3_compress.py

Versión exe:

http://dl.qianxin.com/skylar6/CVE-2020-0796-Scanner.zip

Son precisos!

Versión de PowerShell:

https://github.com/T13nn3s/CVE-2020-0796

Versión perl:

https://github.com/wneessen/SMBCompScan

 También use el socket para enviar paquetes, regrese para juzgar dos posiciones:


if(($byteArray[68] == 17 && $byteArray[70] == 2) || ($byteArray[70] == 2 && $byteArray[72] == 85)) {
        say 'vulnerable';
    }
    else {
        say 'not vulnerable';
    }

Versión nmap:

Llame al script de escaneo del protocolo smb de nmap para verificar si hay smbv3.11
 
nmap -p445 --script smb-protocols -Pn -n $1 | grep -P '\d+\.\d+\.\d+\.\d+|^\|.\s+3.11' | tr '\n' ' ' | replace 'Nmap scan report for' '@' | tr "@" "\n" | grep 3.11 | tr '|' ' ' | tr '_' ' ' | grep -oP '\d+\.\d+\.\d+\.\d+'

if [[ $? != 0 ]]; then
    echo "There's no SMB v3.11"
fi
También hay algunos scripts nse:
https://github.com/ClarotyICS/CVE2020-0796/tree/master/nse_script

https://github.com/cyberstruggle/DeltaGroup/blob/master/CVE-2020-0796/CVE-2020-0796.nse

https://github.com/pr4jwal/CVE-2020-0796/blob/master/cve-2020-0796.nse

Versión rules:


https://github.com/ClarotyICS/CVE2020-0796/tree/master/snort_rules

https://github.com/cve-2020-0796/cve-2020-0796/blob/master/snort_rule_smbv3.rules

Solución de reparación:
1] Configuración-Actualización y seguridad-Windows Update-Verificar actualizaciones o descargue directamente el parche correspondiente para instalar (KB4551762)

https://www.catalog.update.microsoft.com/Search.aspx?q=KB4551762

2】regedit HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters crea un DWORD llamado DisableCompression con un valor de 1, que prohíbe la compresión SMB.
 
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" DisableCompression -Type DWORD -Value 1 -Force
3] Bloquea el puerto 445.

NOTA: Después de ms17-010 y cve-2019-0708, hay otra vulnerabilidad RCE a nivel de gusano, ¡parchela lo antes posible!
"El archivo adjunto es srv2.sys y el archivo de tabla de símbolos"

Publicar un comentario

1 Comentarios

  1. deberias hacer un tutorial del uso del nuevo bettercap con los caplets y todo eso... saludos

    ResponderEliminar