Есть вопрос по приватным нейспэйсам. Это те которые создаются через CreatePrivateNamespace. Формат {string}/{string} 1. Я не вижу их в WinObj, те я его создал и открыл и записал в объект, но вот не вижу. 2. Создаю в обычном процессе - все норм, но вот в EPM процессе не могу открыть в тоже время. В ACL вешаю доступ всем приложениям при создании. Заранее спасибо.
1. Нандл от CreatePrivateNamespace проверьте в LOCALKD, используя !handle и !obj. Где вы ищете их в WinObj (в каком директории?) 2. Что такое EPM процесс? Кроме записи ACL, есть правила PPL.
comrade, п2 - это Enhanced protected mode. Для примера эдге. что за ppl правила? хэндлы потыкаю thnx, не подумал так посмотреть
comrade, По итогу странный результат Код (Text): 32.kd> !handle eax f PROCESS ffffb78c5932d800 SessionId: 1 Cid: 1d5c Peb: 00ab8000 ParentCid: 11b8 DirBase: 4a782000 ObjectTable: ffffca8863652700 HandleCount: <Data Not Accessible> Image:---.exe Handle Error reading handle count. 01d8: Object: ffffca8870a05060 GrantedAccess: 000f000f (Protected) (Inherit) Entry: ffffca8862f22760 Object: ffffca8870a05060 Type: (ffffb78c55a5d9d0) Directory ObjectHeader: ffffca8870a05030 (new version) HandleCount: 1 PointerCount: 2 Hash Address Type Name ---- ------- ---- ---- 32.kd> dt nt!_OBJECT_HEADER ffffca8870a05030 +0x000 PointerCount : 0n2 +0x008 HandleCount : 0n1 +0x008 NextToFree : 0x00000000`00000001 Void +0x010 Lock : _EX_PUSH_LOCK +0x018 TypeIndex : 0x76 'v' +0x019 TraceFlags : 0 '' +0x019 DbgRefTrace : 0y0 +0x019 DbgTracePermanent : 0y0 +0x01a InfoMask : 0x8 '' +0x01b Flags : 0 '' +0x01b NewObject : 0y0 +0x01b KernelObject : 0y0 +0x01b KernelOnlyAccess : 0y0 +0x01b ExclusiveObject : 0y0 +0x01b PermanentObject : 0y0 +0x01b DefaultSecurityQuota : 0y0 +0x01b SingleHandleEntry : 0y0 +0x01b DeletedInline : 0y0 +0x01c Reserved : 0x6c006a +0x020 ObjectCreateInfo : 0xffffb78c`5831e100 _OBJECT_CREATE_INFORMATION +0x020 QuotaBlockCharged : 0xffffb78c`5831e100 Void +0x028 SecurityDescriptor : 0xffffca88`634aeacd Void +0x030 Body : _QUAD 2.kd> !sd 0xffffca88634aeacd 1100000001001c00: Unable to get MIN SID header 1100000001001c00: Unable to read in Owner in SD Собственно wtf в конце-то??? Это 10 Это смотрится хэндл при создании Код (Text): privateNamespace = ::CreatePrivateNamespaceA(desc, boundaryHandle, namePrivate);
EPM значит AppContainer. В контексте AppContainer'а, чтоб всем дать права, нужно добавить SID ALL APPCONTAINER PACKAGES (S-1-15-2-1). Для AppContainer'а, NULL DACL или Everyone (World SID) не достаточны. Последние три или четыре (не помню точно) бита OBJECT_HEADER.SecurityDescriptor пересекаются с чем то другим, так что нужно их обнулить перед передачи адреса команде !sid. В твоём примере, попробуй !sd 0xffffca88634aeac8 или !sd 0xffffca88634aeac0. Кроме проверок ACL/SD, проверяется если процесс protected или нет. Это вкратце.
comrade, Thnx я уже разобрался. ALL APPCONTAINER PACKAGES - для эдге недотстаочно в плане сидов. надо при создании из другого процесса надо дать сид именно аппконтейнера, который будет открывать. Для всех не проканает. Спасибо, что ответил. Я просто олень. Я в другом накололся)
Думаю уже знаешь, но если нет: в Edge более жёсткий AppContainer: https://twitter.com/tiraniddo/status/849041916301672448