
PoC de BYOVD que abusa del controlador DsArk64.sys firmado por WHQL para la terminación de procesos en ring-0 y lectura/escritura del kernel mediante IOCTLs cifrados y process hollowing.
DsArk64.sys se distribuye con 360 Total Security. Firmado por WHQL de Microsoft. LOLDrivers: magicsword-io/LOLDrivers#308. CVE: Solicitado (MITRE).
Terminación de procesos (ring 0)
0x80863008, entrada: PID en bruto de 4 bytesZwOpenProcess(ALL_ACCESS) + ZwTerminateProcess desde el kernelLectura de kernel
0x80863028, entrada cifrada con AES-128-CBCmemcpy(out, kernel_addr, n), máximo 512 bytesMmIsAddressValid()Escritura de kernel
0x80863028, mismo cifradomemcpy, máximo 32 bytesCifrado
.data62b456ec407f0a9a05911cb6f238a7fee59329b6d408e7fa557637e62c9eaa43[MD5(payload) 16B][payload]El driver verifica que el proceso llamador tenga una firma Authenticode de Qihoo antes de conceder acceso al dispositivo. Se omite mediante process hollowing:
360.cn (sin cuenta, sin CAPTCHA)CREATE_SUSPENDED)CreateRemoteThread; el shellcode llama a CreateFileW("\\.\DsArk")IoGetCurrentProcess(), ve el certificado de Qihoo, permite la aperturaDuplicateHandle del resultado de vuelta al proceso atacanteTerminateProcess del donanteEl WinMain del instalador nunca se ejecuta.
pycryptodome o cryptography (para las pruebas de IOCTL cifrado)8/8 superados:
HKLM\...\360FsFlt\daboot=1 creadasc create/start (firmado por WHQL, sin test-signing)0x80863000 respondió0x80863008 terminó notepad.exe0x80863020 alcanzó el handler0x80863028 verificó la criptografía (clave/IV AES correctos, MD5 aceptado)0xDEAD0000 fue rechazado| Archivo | SHA256 |
|---|---|
| dsark64.sys | cd3d1a2e119cbbb41ec0e7d7fb17bac106735d62b33ed3cde10087af1da89403 |
| DsArk64_win10.sys | 86127dbc92e2896319d1c9117b85e6db01ff001f3a85614d5ef9088d181b044a |
X: @weezerOSINT / Telegram: @weezer