當前位置:
首頁 > 新聞 > 滲透技巧——程序的降權啟動

滲透技巧——程序的降權啟動

0x00 前言

在滲透測試中,常常會遇到需要改變程序啟動許可權(分為提權和降權)的情況。

提權包含從普通用戶許可權到管理員許可權和從管理員許可權到system許可權,而滲透測試中的降權通常是指從system許可權降到普通用戶許可權(從管理員許可權降到普通用戶許可權比較簡單,方法很多),往往是為了操作當前用戶的文件內容(如捕獲桌面、操作註冊表等)

本文將會介紹具體的降權方法(從system許可權降到普通用戶許可權),理清其中的重點,並且開源一個小工具,用於判斷進程許可權

0x01 簡介

本文將要介紹以下內容:

為什麼要降權

從管理員許可權降到普通用戶許可權的方法

從system許可權降到普通用戶許可權的方法

利用SelectMyParent實現提權和降權

註:

測試系統: Win7

0x02 為什麼要降權

使用sytem許可權的進程可能會遇到以下問題:

1、無法獲得當前用戶的文件內容

例如無法捕獲用戶的屏幕

2、環境變數有差異

比如以下環境變數:

APPDATA

Temp

Tmp

USERDOMAIN

USERNAME

USERPROFILE

cmd下可通過echo查看環境變數,例如查看環境變數APPDATA的命令為:

echo %appdata%

system許可權下,查詢到的環境變數APPDATA為C:Windowssystem32configsystemprofileAppDataRoaming

管理員許可權下,查詢到的環境變數APPDATA為C:UsersaAppDataRoaming

如下圖

通過API SHGetSpecialFolderPath 獲取指定的系統路徑,如APPDATA,也能發現許可權不同導致的區別

c++代碼如下:

#include

#include

bool IsSystemPrivilegeCmp()

{

static bool isSystemPrivilege = false;

char *flag="C:Windows";

if (isSystemPrivilege)

{

return isSystemPrivilege;

}

char szPath[MAX_PATH] = ;

if (SHGetSpecialFolderPathA(NULL, szPath, CSIDL_APPDATA, TRUE))

{

printf("APPDATA Path:%sn",szPath);

if(memcmp(szPath,flag,strlen(flag))==0)

printf("[+]I m System Privilegen");

else

printf("[-]Not System Privilegen");

}

return isSystemPrivilege;

}

int main(int argc, CHAR* argv[])

{

IsSystemPrivilegeCmp();

return 0;

}

如下圖

註:

SHGetSpecialFolderPath支持查詢的系統路徑可在Shlobj.h中獲取

如下圖

3、註冊表有差異

對HKCU的部分註冊表操作會被重定向到HKEY_USERS.DEFAULT

如下圖

0x03 從管理員許可權降到普通用戶許可權的方法

1、runas

cmd:

runas /user:a calc.exe

接著輸入密碼:123456

calc.exe的許可權為用戶a的許可權

如下圖

缺點:

需要等待用戶手動輸入密碼,不夠自動化

但是可以藉助管道實現自動輸入密碼,需要藉助第三方工具Sanur,方法不具體介紹

2、第三方工具:lsrunas

下載地址:

cmd:

lsrunas.exe /user:a /password:123456 /domain: /command:"calc.exe" /runpath:c:

註:

/domain:參數為空表示為本機

從管理員許可權降權到普通用戶許可權,成功,如下圖

3、第三方工具:CPAU

下載地址可參考我的github:

https://github.com/3gstudent/From-System-authority-to-Medium-authority

cmd:

CPAU.exe -u a -p 123456 -ex "calc.exe" -lwp

註:

必須添加參數-lwp或-lwop,否則無法實現降權

從管理員許可權降權到普通用戶許可權,成功,如下圖

4、powershell

代碼如下:

$uname="a"

$pwd=ConvertTo-SecureString "123456" -AsPlainText –Force

$cred=New-Object System.Management.Automation.PSCredential($uname,$pwd)

Start-Process -FilePath "calc.exe" -Credential $cred

5、c++

使用API:

CreateProcessAsUser

CreateProcess

0x04 從system許可權降到普通用戶許可權的方法

註:

本次測試的system許可權通過漏洞獲取

1、runas

cmd:

runas /user:a calc.exe

接著輸入密碼:123456

成功降權,但啟動失敗,如下圖

2、第三方工具:lsrunas

cmd:

lsrunas.exe /user:a /password:123456 /domain: /command:"calc.exe" /runpath:c:

同上,成功降權,但啟動失敗

3、第三方工具:CPAU

cmd:

CPAU.exe -u a -p 123456 -ex "calc.exe" -lwp

CPAU不支持system許可權啟動,如下圖

4、powershell

同1,成功降權,但啟動失敗

5、c++

可以使用Didier Stevens的工具SelectMyParent

註:

該代碼尚未在github共享,所以我在我的github上傳了該代碼,並註明作者為Didier Stevens

代碼地址:

https://github.com/3gstudent/From-System-authority-to-Medium-authority/blob/master/SelectMyParent.cpp

SelectMyParent:

用來創建具有選定父進程的windows進程

例如:創建新進程calc.exe,使用SelectMyParent可以將新進程calc.exe設置為進程winlogon.exe的子進程

使用步驟:

1、獲取進程winlogon.exe的pid

在我的測試系統中,進程winlogon.exe的pid為504

2、啟動SelectMyParent

參數如下:

SelectMyParent.exe calc.exe 504

顯示calc.exe為winlogon.exe的子進程,如下圖

該方法主要可以用來提高進程的隱蔽性,欺騙用戶

特別的地方:

由於子進程會繼承父進程的許可權,並且winlogon.exe的許可權為system,那麼其子進程calc.exe的許可權也將會成為system

如下圖

也就是說,我們可以基於SelectMyParent實現以下提權和降權操作:

提權:從管理員許可權到system許可權

降權:從system許可權到admin許可權

降權:從system許可權到普通用戶許可權

操作步驟:

1、獲取進程pid

cmd下獲取進程pid的方法:

tasklist /v /fo list

可獲取每個進程對應的pid及許可權(用戶名的值表示),如下圖

為了方便測試,可以使用過濾將特定許可權的進程篩選出來,例如篩選NT AUTHORITYSYSTEM

命令如下:

tasklist /v /fo list /fi "USERNAME eq NT AUTHORITYSYSTEM"

如果是獲取普通用戶許可權的進程,篩選的USERNAME可設置為whoami的返回結果

2、使用SelectMyParent.exe

從管理員許可權到system許可權:

上文已經演示,不再重複介紹

從system許可權到admin許可權:

通過tasklist無法區分進程是否是管理員許可權還是普通用戶許可權

於是我通過c++寫了一個小工具,作用如下:

遍歷進程

判斷進程許可權,如果為管理員許可權,進行標記

代碼下載地址:

https://github.com/3gstudent/From-System-authority-to-Medium-authority/blob/master/Processauthority.cpp

工具使用如下圖

從system許可權到普通用戶許可權:

選取普通用戶許可權進程,pid為3864,創建的calc.exe許可權也會具有普通用戶許可權,如下圖

成功實現從system許可權到普通用戶許可權的降權

0x05 小結

本文對常用降權方法進行測試,結論是有些條件下降權方法會失效,通用的方式是使用SelectMyParent進行降權。

結合實際,開源了遍歷判斷進程許可權的小工具,用於提高效率。

本文為3gstugent原創稿件,授權嘶吼獨家發布,未經許可禁止轉載

點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

密碼管理器OneLogin遭遇黑客攻擊,企業客戶敏感數據已被泄漏
一場國際爭霸的黑客賽事
有了郵件防火牆你就安全了嗎?想法太單純了……
AssetHook:Android應用資源數據運行時編輯工具
美國國防部承包商使用亞馬遜伺服器,一不小心泄露了機密文件

TAG:嘶吼RoarTalk |

您可能感興趣

程序自動模式的「柔性程序」
利用「驅動人生」升級程序的惡意程序預警
發揮智能技術的無限潛力 商業應用程序中加入增強現實
這些小技巧,能有效提升程序員的效率
實用技巧與小程序
談程序的腐化
應用程序快速啟動工具
程序猿的進化
程序員必備技能之 Git 的體系結構與歷史
安卓應用程序滲透測試
喜推科技持續發力智能小程序,為企業決策賦能
能自動進行病毒宏基因組分類的應用程序!
案例分析:如何不利用驅動執行內核提權程序
移動應用程序的個性化實現方法
程序員穿運動褲會不會有損形象呢?
程序員漲薪必備技能
程序員的鄙視鏈
埃森哲互動將提供程序化服務,滲透廣告購買領域
「螺絲刀」揭開嚴重安全漏洞:多廠商驅動程序及固件現惡意軟體提權問題
線程,進程,程序的區別