2002-02-20 20:16:49 +00:00
|
|
|
#ifndef __NTOSKRNL_INCLUDE_INTERNAL_SE_H
|
|
|
|
#define __NTOSKRNL_INCLUDE_INTERNAL_SE_H
|
|
|
|
|
|
|
|
extern POBJECT_TYPE SepTokenObjectType;
|
|
|
|
|
|
|
|
/* SID Authorities */
|
|
|
|
extern SID_IDENTIFIER_AUTHORITY SeNullSidAuthority;
|
|
|
|
extern SID_IDENTIFIER_AUTHORITY SeWorldSidAuthority;
|
|
|
|
extern SID_IDENTIFIER_AUTHORITY SeLocalSidAuthority;
|
|
|
|
extern SID_IDENTIFIER_AUTHORITY SeCreatorSidAuthority;
|
|
|
|
extern SID_IDENTIFIER_AUTHORITY SeNtSidAuthority;
|
|
|
|
|
|
|
|
/* SIDs */
|
|
|
|
extern PSID SeNullSid;
|
|
|
|
extern PSID SeWorldSid;
|
|
|
|
extern PSID SeLocalSid;
|
|
|
|
extern PSID SeCreatorOwnerSid;
|
|
|
|
extern PSID SeCreatorGroupSid;
|
|
|
|
extern PSID SeCreatorOwnerServerSid;
|
|
|
|
extern PSID SeCreatorGroupServerSid;
|
|
|
|
extern PSID SeNtAuthoritySid;
|
|
|
|
extern PSID SeDialupSid;
|
|
|
|
extern PSID SeNetworkSid;
|
|
|
|
extern PSID SeBatchSid;
|
|
|
|
extern PSID SeInteractiveSid;
|
|
|
|
extern PSID SeServiceSid;
|
|
|
|
extern PSID SeAnonymousLogonSid;
|
|
|
|
extern PSID SePrincipalSelfSid;
|
|
|
|
extern PSID SeLocalSystemSid;
|
|
|
|
extern PSID SeAuthenticatedUserSid;
|
|
|
|
extern PSID SeRestrictedCodeSid;
|
|
|
|
extern PSID SeAliasAdminsSid;
|
|
|
|
extern PSID SeAliasUsersSid;
|
|
|
|
extern PSID SeAliasGuestsSid;
|
|
|
|
extern PSID SeAliasPowerUsersSid;
|
|
|
|
extern PSID SeAliasAccountOpsSid;
|
|
|
|
extern PSID SeAliasSystemOpsSid;
|
|
|
|
extern PSID SeAliasPrintOpsSid;
|
|
|
|
extern PSID SeAliasBackupOpsSid;
|
2005-08-01 09:05:20 +00:00
|
|
|
extern PSID SeAuthenticatedUsersSid;
|
|
|
|
extern PSID SeRestrictedSid;
|
|
|
|
extern PSID SeAnonymousLogonSid;
|
2002-02-20 20:16:49 +00:00
|
|
|
|
|
|
|
/* Privileges */
|
|
|
|
extern LUID SeCreateTokenPrivilege;
|
|
|
|
extern LUID SeAssignPrimaryTokenPrivilege;
|
|
|
|
extern LUID SeLockMemoryPrivilege;
|
|
|
|
extern LUID SeIncreaseQuotaPrivilege;
|
|
|
|
extern LUID SeUnsolicitedInputPrivilege;
|
|
|
|
extern LUID SeTcbPrivilege;
|
|
|
|
extern LUID SeSecurityPrivilege;
|
|
|
|
extern LUID SeTakeOwnershipPrivilege;
|
|
|
|
extern LUID SeLoadDriverPrivilege;
|
|
|
|
extern LUID SeCreatePagefilePrivilege;
|
|
|
|
extern LUID SeIncreaseBasePriorityPrivilege;
|
|
|
|
extern LUID SeSystemProfilePrivilege;
|
|
|
|
extern LUID SeSystemtimePrivilege;
|
|
|
|
extern LUID SeProfileSingleProcessPrivilege;
|
|
|
|
extern LUID SeCreatePermanentPrivilege;
|
|
|
|
extern LUID SeBackupPrivilege;
|
|
|
|
extern LUID SeRestorePrivilege;
|
|
|
|
extern LUID SeShutdownPrivilege;
|
|
|
|
extern LUID SeDebugPrivilege;
|
|
|
|
extern LUID SeAuditPrivilege;
|
|
|
|
extern LUID SeSystemEnvironmentPrivilege;
|
|
|
|
extern LUID SeChangeNotifyPrivilege;
|
|
|
|
extern LUID SeRemoteShutdownPrivilege;
|
2005-08-01 09:05:20 +00:00
|
|
|
extern LUID SeUndockPrivilege;
|
|
|
|
extern LUID SeSyncAgentPrivilege;
|
|
|
|
extern LUID SeEnableDelegationPrivilege;
|
2002-02-20 20:16:49 +00:00
|
|
|
|
|
|
|
/* DACLs */
|
|
|
|
extern PACL SePublicDefaultUnrestrictedDacl;
|
|
|
|
extern PACL SePublicOpenDacl;
|
|
|
|
extern PACL SePublicOpenUnrestrictedDacl;
|
|
|
|
extern PACL SeUnrestrictedDacl;
|
|
|
|
|
2003-02-15 22:29:45 +00:00
|
|
|
/* SDs */
|
|
|
|
extern PSECURITY_DESCRIPTOR SePublicDefaultSd;
|
|
|
|
extern PSECURITY_DESCRIPTOR SePublicDefaultUnrestrictedSd;
|
|
|
|
extern PSECURITY_DESCRIPTOR SePublicOpenSd;
|
|
|
|
extern PSECURITY_DESCRIPTOR SePublicOpenUnrestrictedSd;
|
|
|
|
extern PSECURITY_DESCRIPTOR SeSystemDefaultSd;
|
|
|
|
extern PSECURITY_DESCRIPTOR SeUnrestrictedSd;
|
|
|
|
|
2002-02-20 20:16:49 +00:00
|
|
|
/* Functions */
|
2005-09-13 23:28:21 +00:00
|
|
|
BOOLEAN
|
|
|
|
NTAPI
|
2006-10-02 15:52:58 +00:00
|
|
|
SeInit(VOID);
|
2005-09-13 23:28:21 +00:00
|
|
|
|
|
|
|
BOOLEAN
|
|
|
|
NTAPI
|
|
|
|
SeInitSRM(VOID);
|
2002-02-20 20:16:49 +00:00
|
|
|
|
2005-09-13 23:28:21 +00:00
|
|
|
VOID
|
|
|
|
NTAPI
|
|
|
|
SepInitLuid(VOID);
|
2002-02-20 20:16:49 +00:00
|
|
|
|
2005-09-13 23:28:21 +00:00
|
|
|
VOID
|
|
|
|
NTAPI
|
|
|
|
SepInitPrivileges(VOID);
|
2005-05-06 22:54:40 +00:00
|
|
|
|
2005-09-13 23:28:21 +00:00
|
|
|
BOOLEAN
|
|
|
|
NTAPI
|
|
|
|
SepInitSecurityIDs(VOID);
|
2004-12-10 16:50:38 +00:00
|
|
|
|
2005-09-13 23:28:21 +00:00
|
|
|
BOOLEAN
|
|
|
|
NTAPI
|
|
|
|
SepInitDACLs(VOID);
|
2002-06-04 13:44:06 +00:00
|
|
|
|
2005-09-13 23:28:21 +00:00
|
|
|
BOOLEAN
|
|
|
|
NTAPI
|
|
|
|
SepInitSDs(VOID);
|
2002-02-20 20:16:49 +00:00
|
|
|
|
2005-09-13 23:28:21 +00:00
|
|
|
VOID
|
|
|
|
NTAPI
|
|
|
|
SeDeassignPrimaryToken(struct _EPROCESS *Process);
|
|
|
|
|
2006-07-11 19:45:16 +00:00
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
SeSubProcessToken(
|
|
|
|
IN PTOKEN Parent,
|
|
|
|
OUT PTOKEN *Token,
|
|
|
|
IN BOOLEAN InUse,
|
|
|
|
IN ULONG SessionId
|
|
|
|
);
|
|
|
|
|
2006-07-27 00:22:36 +00:00
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
SeInitializeProcessAuditName(
|
|
|
|
IN PFILE_OBJECT FileObject,
|
|
|
|
IN BOOLEAN DoAudit,
|
|
|
|
OUT POBJECT_NAME_INFORMATION *AuditInfo
|
|
|
|
);
|
|
|
|
|
2006-07-23 08:20:57 +00:00
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
SeCreateAccessStateEx(
|
|
|
|
IN PETHREAD Thread,
|
|
|
|
IN PEPROCESS Process,
|
|
|
|
IN OUT PACCESS_STATE AccessState,
|
|
|
|
IN PAUX_DATA AuxData,
|
|
|
|
IN ACCESS_MASK Access,
|
|
|
|
IN PGENERIC_MAPPING GenericMapping
|
|
|
|
);
|
|
|
|
|
2006-07-22 16:03:12 +00:00
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
SeIsTokenChild(
|
|
|
|
IN PTOKEN Token,
|
|
|
|
OUT PBOOLEAN IsChild
|
|
|
|
);
|
|
|
|
|
2005-09-13 23:28:21 +00:00
|
|
|
NTSTATUS
|
2006-09-06 12:19:00 +00:00
|
|
|
NTAPI
|
2005-09-13 23:28:21 +00:00
|
|
|
SepCreateImpersonationTokenDacl(
|
|
|
|
PTOKEN Token,
|
|
|
|
PTOKEN PrimaryToken,
|
|
|
|
PACL *Dacl
|
|
|
|
);
|
|
|
|
|
|
|
|
VOID
|
|
|
|
NTAPI
|
|
|
|
SepInitializeTokenImplementation(VOID);
|
|
|
|
|
|
|
|
PTOKEN
|
2006-09-06 12:19:00 +00:00
|
|
|
NTAPI
|
2005-09-13 23:28:21 +00:00
|
|
|
SepCreateSystemProcessToken(VOID);
|
|
|
|
|
2006-07-09 18:54:13 +00:00
|
|
|
BOOLEAN
|
|
|
|
NTAPI
|
|
|
|
SeDetailedAuditingWithToken(IN PTOKEN Token);
|
|
|
|
|
|
|
|
VOID
|
|
|
|
NTAPI
|
|
|
|
SeAuditProcessExit(IN PEPROCESS Process);
|
|
|
|
|
2006-07-23 08:20:57 +00:00
|
|
|
VOID
|
|
|
|
NTAPI
|
|
|
|
SeAuditProcessCreate(IN PEPROCESS Process);
|
|
|
|
|
2005-09-13 23:28:21 +00:00
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
SeExchangePrimaryToken(
|
|
|
|
struct _EPROCESS* Process,
|
|
|
|
PACCESS_TOKEN NewToken,
|
|
|
|
PACCESS_TOKEN* OldTokenP
|
|
|
|
);
|
2002-02-20 20:16:49 +00:00
|
|
|
|
2006-07-23 08:20:57 +00:00
|
|
|
VOID
|
|
|
|
NTAPI
|
|
|
|
SeCaptureSubjectContextEx(
|
|
|
|
IN PETHREAD Thread,
|
|
|
|
IN PEPROCESS Process,
|
|
|
|
OUT PSECURITY_SUBJECT_CONTEXT SubjectContext
|
|
|
|
);
|
|
|
|
|
2003-05-31 11:10:30 +00:00
|
|
|
NTSTATUS
|
2005-09-13 23:28:21 +00:00
|
|
|
NTAPI
|
|
|
|
SeCaptureLuidAndAttributesArray(
|
|
|
|
PLUID_AND_ATTRIBUTES Src,
|
|
|
|
ULONG PrivilegeCount,
|
|
|
|
KPROCESSOR_MODE PreviousMode,
|
|
|
|
PLUID_AND_ATTRIBUTES AllocatedMem,
|
|
|
|
ULONG AllocatedLength,
|
|
|
|
POOL_TYPE PoolType,
|
2006-01-22 22:46:23 +00:00
|
|
|
BOOLEAN CaptureIfKernel,
|
2005-09-13 23:28:21 +00:00
|
|
|
PLUID_AND_ATTRIBUTES* Dest,
|
|
|
|
PULONG Length
|
|
|
|
);
|
2003-05-31 11:10:30 +00:00
|
|
|
|
|
|
|
VOID
|
2005-09-13 23:28:21 +00:00
|
|
|
NTAPI
|
|
|
|
SeReleaseLuidAndAttributesArray(
|
|
|
|
PLUID_AND_ATTRIBUTES Privilege,
|
|
|
|
KPROCESSOR_MODE PreviousMode,
|
2006-01-22 22:46:23 +00:00
|
|
|
BOOLEAN CaptureIfKernel
|
2005-09-13 23:28:21 +00:00
|
|
|
);
|
2002-02-20 20:16:49 +00:00
|
|
|
|
2004-07-14 14:25:31 +00:00
|
|
|
BOOLEAN
|
2005-09-13 23:28:21 +00:00
|
|
|
NTAPI
|
|
|
|
SepPrivilegeCheck(
|
|
|
|
PTOKEN Token,
|
|
|
|
PLUID_AND_ATTRIBUTES Privileges,
|
|
|
|
ULONG PrivilegeCount,
|
|
|
|
ULONG PrivilegeControl,
|
|
|
|
KPROCESSOR_MODE PreviousMode
|
|
|
|
);
|
2004-07-14 14:25:31 +00:00
|
|
|
|
2005-04-18 00:42:31 +00:00
|
|
|
NTSTATUS
|
2006-09-06 12:19:00 +00:00
|
|
|
NTAPI
|
2005-09-13 23:28:21 +00:00
|
|
|
SepDuplicateToken(
|
|
|
|
PTOKEN Token,
|
|
|
|
POBJECT_ATTRIBUTES ObjectAttributes,
|
|
|
|
BOOLEAN EffectiveOnly,
|
|
|
|
TOKEN_TYPE TokenType,
|
|
|
|
SECURITY_IMPERSONATION_LEVEL Level,
|
|
|
|
KPROCESSOR_MODE PreviousMode,
|
|
|
|
PTOKEN* NewAccessToken
|
|
|
|
);
|
2005-05-09 01:38:29 +00:00
|
|
|
|
2005-03-12 22:16:02 +00:00
|
|
|
NTSTATUS
|
2005-09-13 23:28:21 +00:00
|
|
|
NTAPI
|
|
|
|
SepCaptureSecurityQualityOfService(
|
|
|
|
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
|
|
|
|
IN KPROCESSOR_MODE AccessMode,
|
|
|
|
IN POOL_TYPE PoolType,
|
|
|
|
IN BOOLEAN CaptureIfKernel,
|
|
|
|
OUT PSECURITY_QUALITY_OF_SERVICE *CapturedSecurityQualityOfService,
|
|
|
|
OUT PBOOLEAN Present
|
|
|
|
);
|
2005-03-12 22:16:02 +00:00
|
|
|
|
|
|
|
VOID
|
2005-09-13 23:28:21 +00:00
|
|
|
NTAPI
|
|
|
|
SepReleaseSecurityQualityOfService(
|
|
|
|
IN PSECURITY_QUALITY_OF_SERVICE CapturedSecurityQualityOfService OPTIONAL,
|
|
|
|
IN KPROCESSOR_MODE AccessMode,
|
|
|
|
IN BOOLEAN CaptureIfKernel
|
|
|
|
);
|
2005-03-12 22:16:02 +00:00
|
|
|
|
|
|
|
NTSTATUS
|
2005-09-13 23:28:21 +00:00
|
|
|
NTAPI
|
|
|
|
SepCaptureSid(
|
|
|
|
IN PSID InputSid,
|
|
|
|
IN KPROCESSOR_MODE AccessMode,
|
|
|
|
IN POOL_TYPE PoolType,
|
|
|
|
IN BOOLEAN CaptureIfKernel,
|
|
|
|
OUT PSID *CapturedSid
|
|
|
|
);
|
2005-03-12 22:16:02 +00:00
|
|
|
|
|
|
|
VOID
|
2005-09-13 23:28:21 +00:00
|
|
|
NTAPI
|
|
|
|
SepReleaseSid(
|
|
|
|
IN PSID CapturedSid,
|
|
|
|
IN KPROCESSOR_MODE AccessMode,
|
|
|
|
IN BOOLEAN CaptureIfKernel
|
|
|
|
);
|
2005-03-12 22:16:02 +00:00
|
|
|
|
|
|
|
NTSTATUS
|
2005-09-13 23:28:21 +00:00
|
|
|
NTAPI
|
|
|
|
SepCaptureAcl(
|
|
|
|
IN PACL InputAcl,
|
|
|
|
IN KPROCESSOR_MODE AccessMode,
|
|
|
|
IN POOL_TYPE PoolType,
|
|
|
|
IN BOOLEAN CaptureIfKernel,
|
|
|
|
OUT PACL *CapturedAcl
|
|
|
|
);
|
2005-03-12 22:16:02 +00:00
|
|
|
|
|
|
|
VOID
|
2005-09-13 23:28:21 +00:00
|
|
|
NTAPI
|
|
|
|
SepReleaseAcl(
|
|
|
|
IN PACL CapturedAcl,
|
|
|
|
IN KPROCESSOR_MODE AccessMode,
|
|
|
|
IN BOOLEAN CaptureIfKernel
|
|
|
|
);
|
2005-03-12 22:16:02 +00:00
|
|
|
|
2005-08-07 18:38:37 +00:00
|
|
|
NTSTATUS
|
2006-09-06 12:19:00 +00:00
|
|
|
NTAPI
|
2005-09-13 23:28:21 +00:00
|
|
|
SeDefaultObjectMethod(
|
|
|
|
PVOID Object,
|
|
|
|
SECURITY_OPERATION_CODE OperationType,
|
2006-12-29 22:17:29 +00:00
|
|
|
PSECURITY_INFORMATION SecurityInformation,
|
2005-09-13 23:28:21 +00:00
|
|
|
PSECURITY_DESCRIPTOR NewSecurityDescriptor,
|
|
|
|
PULONG ReturnLength,
|
|
|
|
PSECURITY_DESCRIPTOR *OldSecurityDescriptor,
|
|
|
|
POOL_TYPE PoolType,
|
|
|
|
PGENERIC_MAPPING GenericMapping
|
|
|
|
);
|
2005-08-07 18:38:37 +00:00
|
|
|
|
2006-07-05 20:08:08 +00:00
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
SeSetWorldSecurityDescriptor(
|
|
|
|
SECURITY_INFORMATION SecurityInformation,
|
2006-07-05 20:36:56 +00:00
|
|
|
PISECURITY_DESCRIPTOR SecurityDescriptor,
|
2006-07-05 20:08:08 +00:00
|
|
|
PULONG BufferLength
|
|
|
|
);
|
|
|
|
|
2005-03-12 22:16:02 +00:00
|
|
|
#define SepAcquireTokenLockExclusive(Token) \
|
|
|
|
do { \
|
|
|
|
KeEnterCriticalRegion(); \
|
|
|
|
ExAcquireResourceExclusive(((PTOKEN)Token)->TokenLock, TRUE); \
|
|
|
|
while(0)
|
|
|
|
|
|
|
|
#define SepAcquireTokenLockShared(Token) \
|
|
|
|
do { \
|
|
|
|
KeEnterCriticalRegion(); \
|
|
|
|
ExAcquireResourceShared(((PTOKEN)Token)->TokenLock, TRUE); \
|
|
|
|
while(0)
|
|
|
|
|
|
|
|
#define SepReleaseTokenLock(Token) \
|
|
|
|
do { \
|
|
|
|
ExReleaseResource(((PTOKEN)Token)->TokenLock); \
|
|
|
|
KeLeaveCriticalRegion(); \
|
|
|
|
while(0)
|
2002-02-20 20:16:49 +00:00
|
|
|
|
2006-09-06 12:19:00 +00:00
|
|
|
VOID NTAPI
|
2005-12-30 01:41:02 +00:00
|
|
|
SeQuerySecurityAccessMask(IN SECURITY_INFORMATION SecurityInformation,
|
|
|
|
OUT PACCESS_MASK DesiredAccess);
|
|
|
|
|
2006-09-06 12:19:00 +00:00
|
|
|
VOID NTAPI
|
2005-12-30 01:41:02 +00:00
|
|
|
SeSetSecurityAccessMask(IN SECURITY_INFORMATION SecurityInformation,
|
|
|
|
OUT PACCESS_MASK DesiredAccess);
|
|
|
|
|
2002-02-20 20:16:49 +00:00
|
|
|
#endif /* __NTOSKRNL_INCLUDE_INTERNAL_SE_H */
|
|
|
|
|
2002-05-05 14:57:45 +00:00
|
|
|
/* EOF */
|