Plit00's Story

[Windows] - Access Token(1) 본문

Security/Forensic

[Windows] - Access Token(1)

plit00 2022. 5. 15. 14:34

Access Token

< 수업에서 진행했던 권한 상승기법 중 ACL과 Access Token에 대해 더 알아보기위해 쓴 글>

OS 권한 관리    
PC  User단위 오브젝트(acl)에 권한이 있냐 없냐  User기반 인증 체계 
Mobile App단위 사용자가 누군지 모르지만 app base인증 체계

PC

  • Linux 특정 오브젝트에 acl 걸어둠

Windows

  • Access Token 발급

Access Token Info

  • User’s Account SID
  • 유저가 구성원인 그룹의 SID
  • 현재 LogginSession을 식별하는 Logon SID
  • User 또는 User_Group이 보유한 privilege list
  • Owner SID
  • Primary Group SID
  • 사용자가 보안 설명자를 지정하지 않고 보안 개체를 생성할 때 시스템이 사용하는 *DACL

#DACL(임의 액세스 제어 목록)과 SACL(시스템 액세스 제어 목록)

*DACL(임의 액세스 제어 목록, ACL의 한종류) ACL(액세스 제어 목록) : ACE(액세스 제어 항목)의 목록 ACL의 각 ACE는 trustee를 식별하고 허용,거부 또는 액세스 권한을 지정

DACL은 보안 개체에 대한 액세스가 허용되거나 *trustee를 식별 *Truestee

class __Trustee
{
  string Domain;
  string Name;
  uint8  SID[];
  uint32 SidLength;
  string SidString;
  uint64 TIME_CREATED;
};

ACL은 위 구조를 사용하여 이름 Strings나 SID를 사용하여 구별 가능

ACE를 만드는 함수는 SID 버퍼를 할당하고 계정 이름에 해당하는 SID를 찾는 작업을 수행 *Trustee구조를 초기화하는 두 가지 함수 ⇒ BuildTrusteeWithSid, BuildTrusteeWithName

Trustee 초기화 함수 ⇒ BuildTrusteeWithObjectsAndSid, BuildTrusteeWithObjectsAndName


  • restrict Access Token을 따로 발급

CreateRestrictedToken 함수는 Token 제한이 가능하다.

  • Token에서 권한을 제거한다.
  • 보안 개체에 액세스 하는데 사용할 수 없도록 토큰의 SID에 block 특성을 적용
  • 보안 개체에 대한 액세스를 제한할 수 있는 제한 SID 목록을 지정

CreateProcessAsUser 함수에 대한 호출에서 제한된 Simple Token을 사용할 수 있다. CreateProcessAsUser 를 호출하는 프로세스에는 SE_ASSIGNPRIMARYTOKEN_NAME *권한이 있어야한다.

*권한 : LocalSystem 에서 실행되는 서비스나 시스템 코드에서 보유

CreateProcessAsUser 호출이 기본 Token의 제한된 버전을 지정하는 경우 권한 필요X

OpenProcessToken 함수를 사용하여 프로세스의 기본 Token에 대한 Handle을 검색 OpenThreadToken 함수를 사용하여 thread 의 Token에 대한 Handle을 검색

 

 


 

 

'Security > Forensic' 카테고리의 다른 글

[Mac OS] - Architecture  (1) 2023.02.06
[Windows Artifact] - Shortcut(.*LNK)  (0) 2023.02.05
[Windows] - LSASS Memory Dump  (0) 2022.05.15
[Windows] - Authentication Structure(lsass.exe)  (0) 2022.05.15
[Windows] - Access Token(2)  (0) 2022.05.15
Comments