3 回答

TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊
沒有支持的方法來完成此操作??梢砸匀魏翁貦?quán)級別讀取進(jìn)程列表。如果您希望甚至對Administrators都隱藏一個(gè)進(jìn)程,那么雙重支持。
為了使它起作用,您需要編寫一個(gè)內(nèi)核模式rootkit來攔截對NtQuerySystemInformation的調(diào)用,以使SystemProcessInformation信息類無法列出您的隱藏進(jìn)程。
安全地?cái)r截系統(tǒng)調(diào)用非常困難,并且64位Windows內(nèi)核竭盡全力防止這種情況的發(fā)生:嘗試修改syscall表會立即顯示藍(lán)屏。在那些平臺上這將非常困難
這是一個(gè)試圖做類似事情的Rootkit的例子(有幾個(gè)嚴(yán)重的問題)。

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊
如果要防止用戶從任務(wù)管理器中終止進(jìn)程,則可以僅在進(jìn)程上使用安全描述符來拒絕終止對所有人的訪問。從技術(shù)上講,管理員仍然可以通過擁有該進(jìn)程的所有權(quán)并重置DACL來終止該進(jìn)程,但是任務(wù)管理器中沒有界面可以執(zhí)行這些操作。Process Explorer可能有一個(gè)接口。
當(dāng)您的進(jìn)程開始時(shí),請使用SetKernelObjectSecurity和DACL_SECURITY_INFORMATION當(dāng)前進(jìn)程句柄。使用零個(gè)ACL設(shè)置DACL。這將拒絕所有人的所有訪問,包括那些試圖通過任務(wù)管理器結(jié)束您的過程的人。
這是一個(gè)示例,它也更改了流程的所有者:
SECURITY_DESCRIPTOR sd;
ACL dacl;
SID_IDENTIFIER_AUTHORITY ntauth = SECURITY_NT_AUTHORITY;
PSID owner;
assert(InitializeAcl(&dacl, sizeof dacl, ACL_REVISION));
assert(AllocateAndInitializeSid(&ntauth, 1, SECURITY_LOCAL_SYSTEM_RID, 0,0,0,0,0,0,0, &owner));
assert(InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION));
assert(SetSecurityDescriptorDacl(&sd, TRUE, &dacl, FALSE));
assert(SetSecurityDescriptorOwner(&sd, owner, FALSE));
assert(SetKernelObjectSecurity(GetCurrentProcess(), DACL_SECURITY_INFORMATION | OWNER_SECURITY_INFORMATION, &sd));
assert(FreeSid(owner) == NULL);
不幸的是,它似乎并不有效。我仍然可以關(guān)閉該過程(盡管不是受限用戶)。也許任務(wù)管理器正在獲得所有權(quán)或調(diào)用其他特權(quán)來終止進(jìn)程?我似乎還記得在以前的Windows版本(我正在測試2003)中可以使用的功能,但是我可能會誤會。
- 3 回答
- 0 關(guān)注
- 1455 瀏覽
添加回答
舉報(bào)