查看: 10691|回复: 3

【转】NVIDIA Driver Helper Service栈溢出简单说明

[复制链接]
  • TA的每日心情

    2024-11-13 20:06
  • 签到天数: 1628 天

    [LV.Master]伴坛终老

    发表于 2013-1-3 21:39:47 | 显示全部楼层 |阅读模式
    最近传出NVIDIA显卡存在远程溢出漏洞,其实没有传说中那么严重,有很大的局限性。
    1、限于win7系统
    2、远程溢出需要系统账号才行
    以下转自看雪
    【转】NVIDIA Driver Helper Service栈溢出简单说明      
    -------------------------------------------------------------------------------- -
    详情见36x新闻,本来不想发出来的,不过看到36x的人又在放屁吓人.还是发出来吧.
    首先这个洞和nvidia的驱动没有一毛钱关系,不是内核级的漏洞.
    NVIDIA Driver Helper Service,是一个r3层的服务.
    程序是nvvsvc.exe(win7)或nvvsvc32.exe(xp) -
    这个程序启动后会创建一个命名管道\\pipe\nsvr,比较特别的是这个管道的dacl是空,也就是说everyone都可以访问.
    然后重要的是这个洞其实只针对win7 x64版有效.在win7 x32版上只能够做到infoleak.
    xp x32版下0x52命令不支持,同时老版本的xp版nvvsvc32.exe根本没建命名管道.所以也就没360x吹的那么凶,另外这个洞远程利用的情况下对于win7系统关闭了空连接共享所以必须要一个用户名密码(且密码不能为空).
    下面来看洞:win7 32位版nvvsvc

    1. loc_4035D8:             ; 取后面数据的长度
    2. lea     eax, [ebp-4022h]
    3. push    ebx             ; ebx=2000h
    4. push    eax
    5. mov     [ebp+nNumberOfBytesToWrite], ecx ; ecx=3h
    6. call    sub_43132C      ; 返回时如果5200后面是4000h个41h,那么eax=2000h
    7. pop     ecxSecurity. B+ E% A% p& k8 j
    8. lea     eax, [ebp+eax*2+var_4020] ; eax=ebp+4000h-4020h=ebp-20h
    9. pop     ecxT00LS' ~) @7 ]3 u. h
    10. mov     ecx, [eax]      ; [ebp-20]=00000000h,ecx=0
    11. add     eax, 8          ; eax=lea [ebp-18h]
    12. mov     [ebp+nNumberOfBytesToWrite], ecx
    13. mov     ecx, [eax-4]    ; eax=lea [ebp-1ch],[eax]中的值为00004078h
    14. push    eax             ; eax为地址,地址中的值是收到的数据中4078h后面的41 41 ..
    15. mov     [ebp+dwType], eax
    16. lea     eax, [ebp+nNumberOfBytesToWrite]
    17. push    eax             ; [eax]的值为0
    18. lea     eax, [ebp-4022h]
    19. mov     [ebp+lpData], ecx ; ecx=00004078h
    20. push    eax             ; eax为地址,地址中的值为41 00 41 00....
    21. cmp     dword_491550, edi ; edi=0
    22. jle     short loc_403632

    23. 然后在下面触发
    24. loc_40363D:
    25. mov     esi, [ebp+lpData]
    26. add     esp, 0Ch
    27. push    esi             ; 4078h,copy的长度
    28. push    [ebp+dwType]    ; 地址中的值是收到的数据中4078h后面的41 41 ..
    29. lea     eax, [ebp+Buffer] ; 地址中的值会发送回攻击者
    30. push    eax
    31. call    loc_430720      ; bug!!!
    32. add     esp, 0Ch
    33. mov     [ebp+nNumberOfBytesToWrite], esi
    34. jmp     loc_403900

    35. 最后再来看内存布局:
    36. ebp-8044h response buffer ---目的
    37. ------------------------------recivebuf
    38. ebp-4024h 52 00
    39. ebp-4022h 41 41
    40. ......... 41 41
    41. ebp-0024h 41 41
    42. ebp-0022h 00 00
    43. ebp-0020h 00 00 00 00
    44. ebp-001ch 20 00 00 00
    45. ebp-0018h 41 41 41 41
    46. ebp-0014h 41 41 41 41
    47. ebp-0010h 41 41 41 41
    48. ebp-000ch 41 41 41 41
    49. ebp-0008h 41 41 41 41
    50. -----------------------------recivebuf
    51. ebp-0004h cookie
    复制代码
    漏洞原理:有漏洞的nvvsvc会读recivebuf,判断头两字节是否为52h,如果是跳过52 00后面
    的字符串,然后读ebp-1c处的长度(没有任何效验),源为length的偏移往后ebp-18h,并把这些数据移到ebp-8044处的responsebuf,然后调用writefile把数据发给攻击者.如果length定义大点
    就会读出ebp-4h处的stack cookie并发给攻击者.
    由于32位版下局部变量的内存布局源地址在目的地址的高位,所以这个洞只能造成infoleak.
    64位的情况刚好相反,所以能够利用,具体可以见老外的exp不多说.

    注:
    让win7 32位版的nvvsvc在xp 32位版上运行要改exe的四个地方
    1www.t00ls.net4 p! r* J. O3 a6 |3 F7 s
    改引入表的reggetvaluew为regclosekey,因为xp下没这个函数
    程序入口getcommandlinea调用后改为
    1. jmp 00403988
    2. 3
    3. 8D 4D EC                lea     ecx, [ebp+ThreadId]
    4. 51                      push    ecx             ; lpThreadId
    5. 6A 04                   push    4               ; CREATE_SUSPENDED
    6. FF 75 F8                push    [ebp+hObject]   ; lpParameter
    7. 89 45 EC                mov     [ebp+ThreadId], eax
    8. 68 75 34 40 00          push    offset StartAddress ; lpStartAddress
    9. 50                      push    eax             ; dwStackSize
    10. 50                      push    eax             ; lpThreadAttributes
    11. FF 15 98 B0 46 00       call    ds:CreateThreadSecurity
    12. 89 45 F0                mov     [ebp+hThread], eax
    13. E8 F0 E8 FF FF          call    sub_402313      ; 这个call要注解掉
    14. loc_403632:
    15. lea     edi, [ebp+lpData]
    16. call    sub_4025D0      ; nop掉
    复制代码
    附件说明:
    nvvsvc32.rar是把win7 32位版的nvvsvc改了下让其可以在xp和win下运行不管你是否有nvidia的显卡.
    exp是改的老外的攻击程序,读32位版的cookie.(ps:老外还是很牛的)

    1. C:\Documents and Settings\mj0011\桌面\新建文件夹\ms0x-0xx\nvidia pipe>exp local ** Nvvsvc.exe Nsvr Pipe Exploit (Local/Domain) **
    2.                  [ () peterwintrsmith]
    3. - Win7 x64 DEP + ASLR + GS Bypass - Christmas 2012 -
    4.         Action 1 of 9:  - CONNECT
    5.         Action 2 of 9:  - CLIENT => SERVER
    6.                 Written 16416 (0x4020) characters to pipe
    7.         Action 3 of 9:   - SERVER => CLIENT
    8.                 Read 32 (0x20) characters from pipe
    9.         Action 4 of 9: Building exploit ...
    10.                  => Stack cookie 0xb5b04abd:
    11.         Action 5 of 9:  - CLIENT => SERVER*
    12.                 Written 16416 (0x4020) characters to pipe
    13.         Action 6 of 9:   - SERVER => CLIENT
    14.                 Read 16384 (0x4000) characters from pipe
    15.         Action 7 of 9:  - CLIENT => SERVER
    16.                 Written 16416 (0x4020) characters to pipe
    17.         Action 8 of 9:   - SERVER => CLIENT1 `/
    18. !! Error reading from pipe (at least, no data on pipe)
    复制代码
    回复

    使用道具 举报

    该用户从未签到

    发表于 2013-1-4 07:48:04 | 显示全部楼层
    这个洞有点深  看不太懂
    回复 支持 反对

    使用道具 举报

    头像被屏蔽

    该用户从未签到

    发表于 2013-1-7 07:59:48 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-1-12 09:19
  • 签到天数: 60 天

    [LV.6]常住居民II

    发表于 2015-12-8 11:15:20 | 显示全部楼层
    看不懂,但我还是要回帖
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    指导单位

    江苏省公安厅

    江苏省通信管理局

    浙江省台州刑侦支队

    DEFCON GROUP 86025

    旗下站点

    邮箱系统

    应急响应中心

    红盟安全

    联系我们

    官方QQ群:112851260

    官方邮箱:security#ihonker.org(#改成@)

    官方核心成员

    Archiver|手机版|小黑屋| ( 苏ICP备2021031567号 )

    GMT+8, 2024-11-23 00:54 , Processed in 0.020673 second(s), 13 queries , Gzip On, MemCache On.

    Powered by ihonker.com

    Copyright © 2015-现在.

  • 返回顶部