보안 식별자
1. 개요
보안 식별자(SID)는 윈도우 운영 체제에서 보안 주체를 고유하게 식별하는 데 사용되는 값이다. SID는 SID를 발급한 기관을 나타내는 식별자 권한 값, 주요 SID, 머신 SID, 서비스 SID 등으로 구성된다. 중복 SID 문제는 디스크 복제를 통해 윈도우 시스템 이미지를 배포할 때 발생할 수 있으며, 파일 접근 권한에 영향을 미칠 수 있다. 윈도우 운영체제에서는 중복 SID가 일반적으로 문제가 되지 않지만, SID를 감지하는 다른 프로그램에서는 보안 문제가 발생할 수 있다.
| 이름 | 보안 식별자 (Security Identifier, SID) |
|---|---|
| 종류 | 보안 주체 |
| 사용 | 윈도우 NT 계열 운영체제 |
| 설명 | 윈도우 NT 계열 운영체제에서 보안 주체를 식별하기 위해 사용되는 고유한 가변 길이 식별자 |
| 구조 | SID 구조는 다음과 같이 구성된다. |
|---|---|
| SID 구조 - 버전 | SID 구조의 버전 번호 (현재는 1) |
| SID 구조 - 식별자 권한 | SID의 최상위 권한을 나타내는 값 (일반적으로 NT AUTHORITY) |
| SID 구조 - 상대적 식별자 (RID) | 특정 권한 내에서 보안 주체를 식별하는 가변 길이의 상대적 식별자 배열 |
| 형식 | S-R-X-Y1-Y2-Yn |
| 형식 - S | SID를 나타내는 문자 |
| 형식 - R | 수정 수준 (Revision level) |
| 형식 - X | 식별자 권한 값 |
| 형식 - Y1-Y2-Yn | 하위 권한 또는 상대적 식별자 (RID) |
| 주요 SID - S-1-0 | Null Authority |
|---|---|
| 주요 SID - S-1-1 | World Authority |
| 주요 SID - S-1-2 | Local Authority |
| 주요 SID - S-1-3 | Creator Authority |
| 주요 SID - S-1-5 | NT Authority |
| 주요 SID - S-1-16 | Mandatory Label Authority |
| 주요 SID - S-1-17 | Ownership Authority |
| 주요 SID - S-1-18 | Authentication Authority |
| 주요 SID - S-1-19 | Impersonation Authority |
| 주요 SID - S-1-20 | Cloud Authority |
| 주요 SID - S-1-21 | Domain Authority |
| 잘 알려진 SID - S-1-5-10 | Self |
|---|---|
| 잘 알려진 SID - S-1-5-11 | Authenticated Users |
| 잘 알려진 SID - S-1-5-12 | Restricted Code |
| 잘 알려진 SID - S-1-5-13 | This Organization |
| 잘 알려진 SID - S-1-5-14 | Other Organization |
| 잘 알려진 SID - S-1-5-15 | Certificate Authority |
| 잘 알려진 SID - S-1-5-17 | IUSR |
| 잘 알려진 SID - S-1-5-18 | LocalSystem |
| 잘 알려진 SID - S-1-5-19 | Local Service |
| 잘 알려진 SID - S-1-5-20 | Network Service |
| 잘 알려진 SID - S-1-5-32-544 | Administrators |
| 잘 알려진 SID - S-1-5-32-545 | Users |
| 잘 알려진 SID - S-1-5-32-546 | Guests |
| 잘 알려진 SID - S-1-5-32-547 | Power Users |
| 잘 알려진 SID - S-1-5-32-548 | Account Operators |
| 잘 알려진 SID - S-1-5-32-549 | Server Operators |
| 잘 알려진 SID - S-1-5-32-550 | Print Operators |
| 잘 알려진 SID - S-1-5-32-551 | Backup Operators |
| 잘 알려진 SID - S-1-5-32-552 | Replicators |
| 잘 알려진 SID - S-1-5-64-10 | NTLM Authentication |
| 잘 알려진 SID - S-1-5-64-14 | SChannel Authentication |
| 잘 알려진 SID - S-1-5-64-21 | Digest Authentication |
| 잘 알려진 SID - S-1-113 | Local Account |
| 잘 알려진 SID - S-1-114 | Local Account and Member of Administrators Group |
| 보안 | SID는 시스템의 중요한 보안 요소이므로 안전하게 관리해야 함 |
|---|
-
윈도우 NT 아키텍처 -
WoW64
WoW64는 64비트 윈도우에서 32비트 응용 프로그램을 실행하기 위한 호환성 계층으로, 32비트 코드를 변환하고 시스템 자원을 관리하며 파일 시스템 리디렉션을 제공하지만, 완벽한 호환성을 보장하지 않고 성능 오버헤드 및 API 관련 문제점을 가질 수 있다. -
윈도우 NT 아키텍처 -
로컬 보안 인증 하위 시스템 서비스
-
고유 식별자 -
MAC 주소
MAC 주소는 네트워크 장치를 식별하는 고유한 48비트 식별자로, IEEE 802 MAC 주소로 알려져 있으며, 최근 스푸핑 악용 및 개인 정보 보호를 위한 랜덤화 기술이 논의되고 있다. -
고유 식별자 -
범용 상품 부호
범용 상품 부호(UPC)는 소매점에서 상품을 식별하기 위해 상품 포장에 인쇄되는 널리 사용되는 바코드의 일종으로, 12자리 숫자로 구성된 UPC-A를 포함한 다양한 변형이 존재한다. -
식별자 -
아카이벌 리소스 키
아카이벌 리소스 키(ARK)는 디지털, 물리적, 추상적 자원의 영구적인 식별을 위한 체계로, 분산된 웹 환경에서 관리 주체의 약속을 통해 객체의 보존과 접근성을 제공하며, ARK Alliance가 국제적인 사용을 장려하고 한국에서도 활용된다. -
식별자 -
바코드
2. SID 구조
SID는 "S-1-5-21-3623811015-3361044348-30300820-1013"와 같은 형태로 표현된다. 각 부분에 대한 자세한 설명은 #구성 요소 문단을 참고하라.
| S | 1 | 5 | 21-3623811015-3361044348-30300820 | 1013 |
|---|---|---|---|---|
| SID 문자열을 나타낸다. | SID 버전 번호이다. | 식별자 권한 값이다. | 도메인 및 로컬 컴퓨터 식별자이다. | 상대 ID (RID)이다. 기본값으로 생성되지 않은 그룹이나 사용자는 1,000 이상의 상대 ID 값을 가진다. |
사용할 수 있는 식별자 권한 값은 #식별자 권한 값 문단을 참고하라.
2.1. 구성 요소
SID는 "S-1-5-21-3623811015-3361044348-30300820-1013"와 같은 형태로 구성된다. 각 구성 요소는 다음과 같은 의미를 갖는다.
| 구성 요소 | 의미 |
|---|---|
| S | SID 문자열임을 나타낸다. |
| 1 | SID 버전 (현재는 1만 사용됨). |
| 5 | 식별자 권한 값 (Identifier Authority Value). |
| 21-3623811015-3361044348-30300820 | 도메인 또는 로컬 컴퓨터 식별자. |
| 1013 | 상대 ID (RID, Relative ID). 기본값으로 만들지 않은 그룹이나 사용자는 1,000 이상의 상대 ID값을 가진다. |
2.2. 식별자 권한 값
SID를 발급한 기관을 나타내는 식별자 권한 값은 다음과 같다.
| 값 | 설명 |
|---|---|
| 0 | 권한 없음(Null Authority) |
| 1 | 워드 권한(World Authority) |
| 2 | 로컬 권한(Local Authority) |
| 3 | 작성자 권한(Creator Authority) |
| 4 | 비고유 권한(Non-unique Authority) |
| 5 | NT 권한(NT Authority) |
| 9 | 리소스 관리자 권한(Resource Manager Authority) |
알려진 식별자 권한 값은 다음과 같다.
| 10진수 | 이름 | 표시 이름 | 최초 도입 | 참고 | 비고 |
|---|---|---|---|---|
| 0 | Null Authority | 예: "Nobody" (S-1-0-0) | ||
| 1 | World Authority | (표시되지 않음) | 예: "Everyone"과 같은 잘 알려진 그룹 (S-1-1-0) | |
| 2 | Local Authority | (표시되지 않음) | 예: "CONSOLE LOGON"과 같은 플래그 SID | |
| 3 | Creator Authority | |||
| 4 | Non-unique Authority | |||
| 5 | NT Authority | NT AUTHORITY\ | NT 보안 하위 시스템에서 관리. "BUILTIN" 및 모든 액티브 디렉터리 도메인과 같은 많은 하위 권한이 있다. | |
| 7 | Internet$ | Internet$\ | Windows 7 | |
| 9 | Resource Manager Authority | Windows Server 2003 | ||
| 11 | Microsoft Account Authority | MicrosoftAccount\ | Windows 8 | |
| 12 | Azure Active Directory | AzureAD\ | Windows 10 | |
| 15 | Capability SIDs | Windows 8, Windows Server 2012 | 모든 기능 SID는 S-1-15-3으로 시작. 설계상, 기능 SID는 친숙한 이름으로 확인되지 않음. 가장 일반적으로 사용되는 기능 SID는 다음과 같음. S-1-15-3-1024-1065365936-1281604716-3511738428-1654721687-432734479-3232135806-4053264122-3456934681 | |
| 16 | Mandatory Label\ | Windows Vista | 강제 무결성 제어의 일부로 사용 | |
| 18 | Asserted Identity |
기능 SID는 레지스트리 데이터에서 찾을 수 있으며, 설계상 친숙한 이름으로 확인되지 않는다. 레지스트리 데이터에서 SID를 찾지 못하면 알려진 기능 SID가 아니며, 일반적인 확인되지 않은 SID로 문제 해결을 할 수 있다. 타사 기능 SID일 가능성이 적으며, 이 경우 친숙한 이름으로 확인되지 않는다.
3. 주요 SID
SID는 "S-1-5-21-3623811015-3361044348-30300820-1013"와 같은 형태로 나타나며, 각 부분은 다음과 같은 의미를 가진다.
| S | 1 | 5 | 21-3623811015-3361044348-30300820 | 1013 |
|---|---|---|---|---|
| 이 문자열은 SID를 가리킨다. | SID 규격의 버전 번호. | 식별자 권한 값. | 도메인 및 로컬 컴퓨터 식별자 | 상대 ID (RID). 기본값으로 만들지 않은 그룹이나 사용자는 1,000 이상의 상대 ID값을 가진다. |
식별자 권한 값은 다음과 같다.
| 10진수 | 이름 | 표시 이름 | 참고 |
|---|---|---|---|
| 0 | Null Authority | 예: "Nobody" (S-1-0-0) | |
| 1 | World Authority | (표시되지 않음) | 예: "Everyone"과 같은 잘 알려진 그룹 (S-1-1-0) |
| 2 | Local Authority | (표시되지 않음) | 예: "CONSOLE LOGON"과 같은 플래그 SID |
| 3 | Creator Authority | ||
| 4 | Non-unique Authority | ||
| 5 | NT Authority | NT AUTHORITY\ | NT 보안 하위 시스템에서 관리. "BUILTIN" 및 모든 액티브 디렉터리 도메인과 같은 많은 하위 권한이 있다. |
| 7 | Internet$ | Internet$\ | |
| 9 | Resource Manager Authority | ||
| 11 | Microsoft Account Authority | MicrosoftAccount\ | |
| 12 | Azure Active Directory | AzureAD\ | |
| 15 | Capability SIDs | 모든 기능 SID는 S-1-15-3으로 시작. 설계상, 기능 SID는 친숙한 이름으로 확인되지 않음. | |
| 16 | Mandatory Label\ | 강제 무결성 제어의 일부로 사용 | |
| 18 | Asserted Identity |
3.1. Well-known SID
| SID | 설명 |
|---|---|
| S-1-1-0 | 모든 사용자 |
| S-1-5-14 | 원격 상호 로그온 접속 (Remote Interactive Logon) |
| S-1-5-18 | 로컬 시스템 (Local System) - 운영 체제가 사용하는 서비스 계정 |
| S-1-5-19 | NT 권한, 로컬 서비스 |
| S-1-5-20 | NT 권한, 네트워크 서비스 |
| S-1-5-29 | 네트워크 서비스 |
| S-1-5-domain-500 | 시스템 관리자를 위한 사용자 계정. 기본적으로 시스템 전반을 제어할 수 있는 유일한 사용자 계정이다. |
| S-1-5-domain-501 | 개인 계정이 없는 게스트 사용자 계정. 이 사용자 계정은 암호를 요구하지 않는다. 기본적으로 게스트 계정은 활성화되지 않는다. |
| S-1-5-domain-512 | 도메인 관리자(Domain Admins) - 소속된 사용자들이 도메인을 관리할 수 있는 전역 그룹. 기본적으로 도메인 관리자 그룹은 도메인 컨트롤러를 포함하여 도메인에 참가하는 모든 컴퓨터의 관리자 그룹 멤버이다. 도메인 관리자는 임의의 그룹 멤버가 만든 객체의 기본 소유자이다. |
| S-1-5-domain-513 | 도메인 사용자(Domain Users) |
| S-1-5-domain-514 | 도메인 게스트(Domain Guests) - 기본적으로 도메인 내장 게스트 계정, 곧 한 명의 멤버만을 가지는 전역 그룹이다. |
| S-1-6 | 사이트 서버 권한(Site Server Authority). |
| S-1-7 | 인터넷 사이트 권한(Internet Site Authority). |
| S-1-8 | 교환 권한(Exchange Authority). |
| S-1-9 | 리소스 관리자 권한(Resource Manager Authority). |
4. 머신 SID
머신 SID(S-1-5-21)는 컴퓨터를 고유하게 식별하는 데 사용된다. 이 SID는 `SECURITY` 레지스트리 하이브의 `SECURITY\SAM\Domains\Account`에 저장되며, `F`와 `V`라는 두 개의 값을 갖는다. `V` 값은 데이터 끝에 컴퓨터 SID가 포함된 바이너리 값(마지막 96비트)이다. 백업은 `SECURITY\Policy\PolAcDmS\@`에 있다.
NewSID는 컴퓨터에 대한 새로운 무작위 SID를 생성한다. 컴퓨터 SID를 구성하는 3개의 하위 권한 값 96비트를 대체하는 진정한 무작위 96비트 값을 생성한다. 머신 SID 하위 권한 형식은 도메인 SID에도 사용되는데, 이 경우 머신은 자체 로컬 도메인으로 간주된다.
머신 SID는 Start8과 같은 일부 무료 평가판 프로그램에서 평가판 재시작을 막기 위해 컴퓨터를 식별하는 데 사용되기도 한다.
4.1. 머신 SID 디코딩
머신 SID는 레지스트리에 원시 바이트 형태로 저장된다. 이를 더 일반적인 숫자 형태로 변환하려면 세 개의 리틀 엔디안 32비트 정수로 해석하고 십진수로 변환한 다음 하이픈으로 구분한다.
| 예시 | 2E,43,AC,40,C0,85,38,5D,07,E5,3B,2B |
|---|---|
| 1) 바이트를 3개의 섹션으로 나눈다: | 2E,43,AC,40 - C0,85,38,5D - 07,E5,3B,2B |
| 2) 각 섹션의 바이트 순서를 반대로 한다: | 40,AC,43,2E - 5D,38,85,C0 - 2B,3B,E5,07 |
| 3) 각 섹션을 십진수로 변환한다: | 1085031214 - 1563985344 - 725345543 |
| 4) 기계 SID 접두사를 추가한다: | S-1-5-21-1085031214-1563985344-725345543 |
5. 서비스 SID
서비스 SID는 서비스 격리 기능으로, 윈도우 비스타 및 윈도우 서버 2008에 도입된 보안 기능이다. "제한 없음" SID 유형 속성을 가진 모든 서비스는 서비스 호스트 프로세스의 액세스 토큰에 서비스별 SID가 추가된다. 서비스 SID는 서비스 계정을 생성해야 하는 관리 부담 없이 단일 서비스에 대한 권한을 관리할 수 있도록 해준다.
"dnscache" 서비스는 `NT SERVICE\dnscache` 또는 `S-1-5-80-859482183-879914841-863379149-1145462774-2388618682`로 참조할 수 있으며, 이 둘은 같은 의미를 가진다.
5.1. 서비스 SID 생성
각 서비스 SID는 서비스 이름을 기반으로 생성되며, `S-1-5-80-{SHA-1(서비스 이름)}` 형태를 가진다. 서비스 SID는 서비스 격리를 위해 윈도우 비스타 및 윈도우 서버 2008에 도입되었다.
`sc.exe` 명령어를 사용하여 이 특수 SID 값을 생성할 수 있다. 예를 들어 "dnscache" 서비스의 경우 다음과 같다.
```text
C:> sc showsid "dnscache"
NAME: dnscache
SERVICE SID: S-1-5-80-859482183-879914841-863379149-1145462774-2388618682
```
"dnscache" 서비스는 `NT SERVICE\dnscache` 또는 `S-1-5-80-859482183-879914841-863379149-1145462774-2388618682`로 참조할 수 있으며, 이는 같은 의미를 가진다. 서비스 SID는 서비스 이름에 의해서만 결정되므로, 주어진 서비스의 SID 값은 해당 서비스가 실행되는 모든 머신에서 항상 동일하다.
6. 중복 SID 문제
윈도우 NT/2000/XP 기반 시스템에서 디스크 복제를 통해 이미지를 배포하는 경우, 머신 SID가 중복될 수 있다. 이러한 중복 SID 문제는 마이크로소프트 윈도우 시스템에서는 일반적으로 문제가 되지 않지만, SID를 감지하는 다른 프로그램에서는 보안 문제가 발생할 수 있다.
6.1. 중복 SID의 영향
윈도우 NT/2000/XP를 실행하는 컴퓨터의 작업 그룹에서, 사용자가 공유 파일이나 이동식 저장 장치에 저장된 파일에 예기치 않게 접근할 수 있다. 이는 해당 파일에 접근 제어 목록을 설정하여 방지할 수 있으며, 유효한 권한은 사용자 SID에 의해 결정된다. 이 사용자 SID가 다른 컴퓨터에서 중복되는 경우, 동일한 SID를 가진 두 번째 컴퓨터의 사용자는 첫 번째 컴퓨터의 사용자가 보호한 파일에 접근할 수 있다. 이는 디스크 복제로 인해 컴퓨터 SID가 중복될 때 자주 발생하며, 불법 복제본에서 흔히 나타난다. 사용자 SID는 컴퓨터 SID와 순차적인 상대 ID를 기반으로 구축된다.
컴퓨터가 액티브 디렉터리 또는 NT 도메인과 같은 도메인에 가입하면 각 컴퓨터는 고유한 도메인 SID를 받는다. 이 SID는 컴퓨터 SID와 유사하며, 컴퓨터가 도메인에 진입할 때마다 다시 계산된다. 결과적으로, 로컬 사용자 계정을 사용하지 않는 경우, 컴퓨터가 도메인의 구성원일 때 중복 SID로 인한 심각한 문제는 일반적으로 발생하지 않는다. 로컬 사용자 계정을 사용하는 경우에는 위에서 설명한 것과 유사한 잠재적인 보안 문제가 있지만, 이 문제는 도메인 사용자가 아닌 로컬 사용자에 의해 보호되는 파일 및 리소스에 국한된다.
중복 SID는 일반적으로 마이크로소프트 윈도우 시스템에서는 문제가 되지 않지만, SID를 감지하는 다른 프로그램은 보안에 문제가 있을 수 있다.
6.2. 해결 방법
마이크로소프트는 이전에 Sysinternals의 일부로 마크 루시노비치의 "NewSID" 유틸리티를 제공하여 기계 SID를 변경할 수 있도록 했었다. 그러나 이 유틸리티는 2009년 11월 2일에 사용 중단되어 다운로드할 수 없게 되었다. 마크 루시노비치와 윈도우 보안 팀은 기계 SID가 네트워크 접근 제한에 사용되지 않기 때문에 중복 SID가 문제를 일으킬 수 있는 상황을 전혀 생각할 수 없었다고 설명했다.
현재 윈도우 운영 체제에서 디스크 복제를 지원하는 유일한 방법은 SysPrep을 사용하여 새로운 SID를 생성하는 것이다.