정보보안기사를 준비하면서 매일 공부한 내용을 정리해서 남겨보려 합니다. 오늘은 시스템 보안의 출발점이라 할 수 있는 윈도우 인증 구조를 다뤘습니다. 시험에서도 자주 나오는 개념이지만, 실무에서 로그 분석할 때도 바로 쓰이는 내용이라 확실히 짚고 넘어가는 게 좋겠더라고요.
윈도우 로그인, 그 뒤에서는 무슨 일이?
우리가 윈도우 컴퓨터를 켜고 아이디/비밀번호를 입력하는 그 짧은 순간, 뒤에서는 세 개의 핵심 서비스가 손발을 맞춰 움직입니다. 이 셋의 역할만 정확히 구분해도 인증 파트의 절반은 이해한 셈입니다.
| 서비스 | 하는 일 |
|---|---|
| LSA | 모든 로그인 요청을 받아 검증하고, 파일 등 시스템 자원에 대한 접근 권한을 검사한다. 계정명과 SID를 짝지어 관리하고, SRM이 만든 감사 로그도 기록한다. 사실상 윈도우 보안의 관제탑 역할. |
| SAM | 사용자·그룹 계정 정보를 담은 데이터베이스. 로그인 시 입력된 정보와 저장된 값을 비교해 인증 여부를 가른다. 계정, 그룹, 암호화된 비밀번호가 모두 이 안에 있다. |
| SRM | 인증이 끝난 사용자에게 SID를 부여하고, 이 SID를 근거로 특정 파일·폴더에 접근을 허용할지 판단한다. 판단 결과는 감사 메시지로 남긴다. |
정리하면 LSA가 창구, SAM이 신원 확인 대장, SRM이 출입증 발급 및 검사를 담당하는 그림입니다.
로컬 인증과 도메인 인증, 뭐가 다를까
같은 로그인이라도 “내 컴퓨터에만 로그인”하는 것과 “회사 도메인에 로그인”하는 것은 뒤에서 벌어지는 일이 다릅니다.
↓ 인증 정보 전달
LSA(NTLM) → SAM 조회
↓ 접근 토큰 발급
새 프로세스 시작
↓ 로컬/도메인 여부 판단(Kerberos)
내 PC의 LSA → 도메인 컨트롤러(DC) 문의
DC의 LSA(커버로스+액티브 디렉토리)가 응답
↓ 접근 토큰 발급
새 프로세스 시작
즉 로컬 인증은 “내 PC 안에서 다 끝나는” 구조이고, 도메인 인증은 커버로스 프로토콜을 통해 “도메인 컨트롤러에 물어보고 답을 받는” 구조라는 점이 핵심 차이입니다.
SAM 파일, 왜 이렇게 조심스럽게 다룰까
SAM 파일에는 계정과 암호화된 비밀번호 정보가 통째로 들어 있습니다(경로: C:\Windows\System32\config\SAM). 이 파일이 뚫리면 사실상 계정 전체가 뚫리는 셈이라, 실무에서는 다음 두 가지를 반드시 점검합니다.
- 접근 권한 최소화 — Administrators, SYSTEM 그룹 정도만 남기고 그 외 그룹/계정의 접근 권한은 제거
- 불필요한 계정 정리 — 안 쓰는 그룹·계정에 권한이 남아있지 않은지 주기적으로 확인
시스템 취약점 점검 항목에도 항상 들어가는 부분이라, 실제 서버 점검할 때도 이 폴더 권한부터 확인하는 습관을 들이면 좋을 것 같습니다.
SID, 계정마다 붙는 고유 번호
SID(Security Identifier)는 사용자·그룹마다 부여되는 고유 식별번호입니다. 로그인하면 이 SID가 담긴 접근 토큰이 만들어지고, 그 토큰이 이후 실행되는 모든 프로세스에 그대로 따라붙습니다. 구조를 뜯어보면 이렇게 생겼습니다.
| 구성 요소 | 의미 |
|---|---|
| S-1 | 윈도우 시스템임을 나타내는 고정값 |
| 5-21 | 도메인 컨트롤러 또는 단독(stand-alone) 시스템임을 의미 |
| 시스템 고유값 | 해당 컴퓨터만의 고유 식별자. 같은 PC에 윈도우를 다시 설치해도 값이 겹치지 않는다 |
| 계정 식별자(RID) | 500=관리자(Administrator), 501=게스트(Guest), 1000 이상=일반 사용자 |
참고로 이 정보는 윈도우 관리 명령 콘솔(WMIC)에서 wmic > useraccount list brief 명령으로 직접 확인할 수 있습니다.
Challenge-Response, 비밀번호를 그대로 보내지 않는 이유
아이디·비밀번호를 그냥 평문으로 보내는 방식은 중간에 가로채이면 그대로 노출됩니다. 그래서 윈도우는 Challenge-Response 방식을 씁니다. 순서는 이렇습니다.
2. 서버 : 랜덤한 Challenge 값 생성
3. 서버 → 사용자 : Challenge 값 전송
4. 사용자 : Challenge 값 + 내 비밀번호로 Response 값 계산
5. 사용자 → 서버 : Response 값 전송
6. 서버 : Response 값 검증
7. 서버 → 사용자 : 인증 성공/실패 통보
비밀번호 자체는 네트워크에 실리지 않고, “비밀번호로 계산한 결과값”만 오간다는 게 포인트입니다.
해시 알고리즘의 진화: LM → NTLM → NTLMv2
- LM 해시 — 윈도우 2000·XP 시절 기본 알고리즘. 구조적으로 취약해서 비스타 이후로는 기본적으로 사용하지 않는다.
- NTLM 해시 — LM 해시에 MD4 해시를 더한 형태.
- NTLMv2 해시 — 비스타 이후 기본 프로토콜. 이전 알고리즘과는 완전히 다른 방식으로 해시를 생성하며, 지금 기준으로도 크래킹이 쉽지 않다.
참고로 로컬 보안 정책의 “네트워크 보안: LAN Manager 인증 수준” 항목은 시스템 취약점 분석·평가 항목에도 나오는데, 실무에서는 “NTLMv2 응답만 보내기”로 설정하는 걸 권장합니다.
패스워드 크래킹, 공격 방식 4가지 비교
| 공격 방식 | 핵심 아이디어 |
|---|---|
| 사전 대입 공격 (Dictionary Attack) |
자주 쓰는 단어, 키보드 순서(qwer1234 등), 주민번호·이름 등을 사전 파일로 만들어 하나씩 대입 |
| 무차별 대입 공격 (Brute Force Attack) |
가능한 문자 범위를 정하고 그 안에서 만들 수 있는 모든 조합을 대입. 보통 사전 공격이 실패한 다음 시도 |
| 혼합 공격 (Hybrid Attack) |
사전 파일의 단어 뒤에 숫자·문자를 무작위로 붙여서 대입(예: gooday1004처럼 단어+숫자 조합을 노림) |
| 레인보우 테이블 (Rainbow Table) |
하나의 비밀번호에서 출발해 변이 함수로 여러 변형을 만들고, 각 변형의 해시를 체인으로 엮어 미리 만들어 둔 테이블. Reduction 함수 반복으로 해시값을 역추적해 비밀번호를 찾아낸다 |
오늘 정리 한 줄 요약
- 윈도우 인증은 LSA(검문) · SAM(신원 대장) · SRM(출입증 발급) 3단 구조로 돌아간다
- 로컬 인증은 내 PC 안에서, 도메인 인증은 커버로스로 DC에 확인받는 구조
- SAM 파일은 접근 권한을 Administrators/SYSTEM으로 최소화해야 하는 핵심 보호 대상
- SID는
S-1-5-21-고유값-RID구조, RID 500=관리자·501=게스트·1000 이상=일반 사용자 - 비밀번호는 평문으로 보내지 않고 Challenge-Response로 검증
- 해시는 LM → NTLM → NTLMv2 순으로 강화, 지금은 NTLMv2가 기본
- 크래킹 방식은 사전 대입 · 무차별 대입 · 혼합 · 레인보우 테이블 4가지가 핵심
※ 이 글은 개인 학습을 정리한 내용으로, 특정 교재나 강의의 표·그림을 그대로 옮긴 것이 아니라 제 나름대로 재구성한 내용입니다.
