libintrovirt v0.57.4
IntroVirt introspection library
Loading...
Searching...
No Matches
TOKEN.hh
Go to the documentation of this file.
1/*
2 * Copyright 2021 Assured Information Security, Inc.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16#pragma once
17
18#include "OBJECT.hh"
19
21
22#include <cstdint>
23#include <memory>
24#include <vector>
25
26namespace introvirt {
27namespace windows {
28namespace nt {
29
68
69class TOKEN : public OBJECT {
70 public:
71 virtual std::vector<std::shared_ptr<SID_AND_ATTRIBUTES>> Groups() = 0;
72 virtual std::vector<std::shared_ptr<const SID_AND_ATTRIBUTES>> Groups() const = 0;
73
74 virtual const SID* User() const = 0;
75 virtual const SID* PrimaryGroup() const = 0;
76
77 virtual uint64_t PrivilegesPresent() const = 0;
78 virtual void PrivilegesPresent(uint64_t Privileges) = 0;
79
80 virtual uint64_t PrivilegesEnabled() const = 0;
81 virtual void PrivilegesEnabled(uint64_t Privileges) = 0;
82
83 virtual uint32_t SessionId() const = 0;
84 virtual void SessionId(uint32_t SessionId) = 0;
85
86 virtual uint32_t DynamicCharged() const = 0;
87 virtual void DynamicCharged(uint32_t DynamicCharged) = 0;
88
89 virtual uint32_t DynamicAvailable() const = 0;
90 virtual void DynamicAvailable(uint32_t DynamicAvailable) = 0;
91
92 virtual uint32_t DefaultOwnerIndex() const = 0;
93 virtual void DefaultOwnerIndex(uint32_t DefaultOwnerIndex) = 0;
94
95 virtual uint32_t TokenType() const = 0;
96 virtual void TokenType(uint32_t TokenType) = 0;
97
98 virtual uint32_t ImpersonationLevel() const = 0;
99 virtual void ImpersonationLevel(uint32_t ImpersonationLevel) = 0;
100
101 virtual uint32_t TokenFlags() const = 0;
102 virtual void TokenFlags(uint32_t TokenFlags) = 0;
103
104 virtual bool TokenInUse() const = 0;
105 virtual void TokenInUse(bool TokenInUse) = 0;
106
107 virtual uint32_t IntegrityLevelIndex() const = 0;
108 virtual void IntegrityLevelIndex(uint32_t IntegrityLevelIndex) = 0;
109
110 virtual uint32_t MandatoryPolicy() const = 0;
111 virtual void MandatoryPolicy(uint32_t MandatoryPolicy) = 0;
112
113 virtual SID* User() = 0;
114 virtual SID* PrimaryGroup() = 0;
115
117 virtual const SEP_LOGON_SESSION_REFERENCES* LogonSession() const = 0;
118
119 static std::shared_ptr<TOKEN> make_shared(const NtKernel& kernel, const guest_ptr<void>& ptr);
120
121 static std::shared_ptr<TOKEN> make_shared(const NtKernel& kernel,
122 std::unique_ptr<OBJECT_HEADER>&& object_header);
123
124 virtual ~TOKEN() = default;
125};
126
127} /* namespace nt */
128} /* namespace windows */
129} /* namespace introvirt */
Definition guest_ptr.hh:88
Abstraction for the Windows NT kernel.
Definition NtKernel.hh:37
Base class for all kernel objects.
Definition OBJECT.hh:30
virtual guest_ptr< void > ptr() const =0
Definition SEP_LOGON_SESSION_REFERENCES.hh:28
Definition SID.hh:35
Definition TOKEN.hh:69
virtual void TokenInUse(bool TokenInUse)=0
virtual void TokenFlags(uint32_t TokenFlags)=0
virtual void MandatoryPolicy(uint32_t MandatoryPolicy)=0
virtual uint32_t IntegrityLevelIndex() const =0
virtual const SEP_LOGON_SESSION_REFERENCES * LogonSession() const =0
virtual uint32_t ImpersonationLevel() const =0
virtual uint32_t DynamicCharged() const =0
virtual void IntegrityLevelIndex(uint32_t IntegrityLevelIndex)=0
virtual const SID * PrimaryGroup() const =0
virtual uint32_t DynamicAvailable() const =0
virtual SID * PrimaryGroup()=0
virtual void PrivilegesPresent(uint64_t Privileges)=0
virtual void PrivilegesEnabled(uint64_t Privileges)=0
virtual void SessionId(uint32_t SessionId)=0
virtual void DefaultOwnerIndex(uint32_t DefaultOwnerIndex)=0
virtual void TokenType(uint32_t TokenType)=0
virtual uint32_t TokenFlags() const =0
virtual void DynamicCharged(uint32_t DynamicCharged)=0
static std::shared_ptr< TOKEN > make_shared(const NtKernel &kernel, const guest_ptr< void > &ptr)
virtual void DynamicAvailable(uint32_t DynamicAvailable)=0
virtual void ImpersonationLevel(uint32_t ImpersonationLevel)=0
virtual uint32_t MandatoryPolicy() const =0
virtual uint32_t TokenType() const =0
virtual bool TokenInUse() const =0
virtual std::vector< std::shared_ptr< const SID_AND_ATTRIBUTES > > Groups() const =0
virtual uint64_t PrivilegesEnabled() const =0
virtual std::vector< std::shared_ptr< SID_AND_ATTRIBUTES > > Groups()=0
virtual const SID * User() const =0
virtual uint64_t PrivilegesPresent() const =0
virtual uint32_t DefaultOwnerIndex() const =0
virtual SEP_LOGON_SESSION_REFERENCES * LogonSession()=0
virtual uint32_t SessionId() const =0
static std::shared_ptr< TOKEN > make_shared(const NtKernel &kernel, std::unique_ptr< OBJECT_HEADER > &&object_header)
SePrivilege
Definition TOKEN.hh:30
@ SeSystemtimePrivilege
Definition TOKEN.hh:42
@ SeIncreaseWorkingSetPrivilege
Definition TOKEN.hh:63
@ SeUnsolicitedInputPrivilege
Definition TOKEN.hh:31
@ SeLockMemoryPrivilege
Definition TOKEN.hh:34
@ SeDebugPrivilege
Definition TOKEN.hh:50
@ SeCreatePagefilePrivilege
Definition TOKEN.hh:45
@ SeCreateTokenPrivilege
Definition TOKEN.hh:32
@ SeBackupPrivilege
Definition TOKEN.hh:47
@ SeTakeOwnershipPrivilege
Definition TOKEN.hh:39
@ SeMachineAccountPrivilege
Definition TOKEN.hh:36
@ SeRelabelPrivilege
Definition TOKEN.hh:62
@ SeProfileSingleProcessPrivilege
Definition TOKEN.hh:43
@ SeCreateSymbolicLinkPrivilege
Definition TOKEN.hh:65
@ SeTimeZonePrivilege
Definition TOKEN.hh:64
@ SeRestorePrivilege
Definition TOKEN.hh:48
@ SeDelegateSessionUserImpersonatePrivilege
Definition TOKEN.hh:66
@ SeChangeNotifyPrivilege
Definition TOKEN.hh:53
@ SeTrustedCredManAccessPrivilege
Definition TOKEN.hh:61
@ SeAuditPrivilege
Definition TOKEN.hh:51
@ SeManageVolumePrivilege
Definition TOKEN.hh:58
@ SeIncreaseQuotaPrivilege
Definition TOKEN.hh:35
@ SeTcbPrivilege
Definition TOKEN.hh:37
@ SeSystemEnvironmentPrivilege
Definition TOKEN.hh:52
@ SeImpersonatePrivilege
Definition TOKEN.hh:59
@ SeShutdownPrivilege
Definition TOKEN.hh:49
@ SeLoadDriverPrivilege
Definition TOKEN.hh:40
@ SeUndockPrivilege
Definition TOKEN.hh:55
@ SeSyncAgentPrivilege
Definition TOKEN.hh:56
@ SeCreatePermanentPrivilege
Definition TOKEN.hh:46
@ SeSecurityPrivilege
Definition TOKEN.hh:38
@ SeRemoteShutdownPrivilege
Definition TOKEN.hh:54
@ SeEnableDelegationPrivilege
Definition TOKEN.hh:57
@ SeSystemProfilePrivilege
Definition TOKEN.hh:41
@ SeAssignPrimaryTokenPrivilege
Definition TOKEN.hh:33
@ SeCreateGlobalPrivilege
Definition TOKEN.hh:60
@ SeIncreaseBasePriorityPrivilege
Definition TOKEN.hh:44
Core IntroVirt classes.
Definition Cr0.hh:20