PromleeBlog
sitemap
aboutMe

posting thumbnail
정보보안기사 - 1.5 윈도우 인증(LSA)과 파일 시스템(NTFS)
Windows Authentication LSA and NTFS File System - InfoSec Engineer 1.5

📅

들어가기 전에 🔗

지난 1.4편까지는 리눅스 시스템에 대해 깊이 있게 다루었습니다.
오늘부터는 전 세계에서 가장 많이 사용되는 운영체제인
윈도우
(Windows)의 보안 세계로 들어갑니다.

윈도우는 리눅스처럼 모든 것이 파일로 투명하게 공개되어 있지 않습니다.
화려한 그래픽 인터페이스 뒤에서 복잡한 인증 절차가 수행되고, 파일 시스템 안에는 눈에 보이지 않는 숨겨진 방이 존재합니다.
오늘은 윈도우가 어떻게 "누구인지" 확인하는지(인증 구조), 그리고 데이터를 어떻게 저장하는지(NTFS) 그 내부 구조를 파헤쳐 보겠습니다.

윈도우 인증 아키텍처 🔗

사용자가 윈도우 로그인 화면에서 아이디와 비밀번호를 입력하고 바탕화면이 나오기까지, 내부에서는 여러 컴포넌트가 바쁘게 움직입니다.
이 흐름을 이해하는 것이 윈도우 보안의 첫걸음입니다.

인증 프로세스 5단계 🔗

윈도우 인증은 다음과 같은 순서로 이루어집니다.
  1. Winlogon
    로그인 화면을 띄우고 사용자의 입력을 받는 역할을 합니다. 사용자가
    SAS
    (Secure Attention Sequence, Ctrl+Alt+Del) 키를 누르면 활성화됩니다.
  2. GINA
    (구버전) /
    Credential Provider
    (신버전)
    사용자가 입력한 계정 정보(ID/PW)를 받아 안전하게 시스템 내부로 전달하는 인터페이스입니다.
  3. LSA (Local Security Authority)
    [핵심]
    윈도우 보안의 사령관입니다.
    전달받은 계정 정보를 검증하고, 인증이 성공하면
    액세스 토큰
    (Access Token)을 발급합니다. 보안 감사 로그(Audit Log)를 남기는 역할도 수행합니다.
  4. SAM (Security Account Manager)
    [핵심]
    사용자 계정과 비밀번호 해시값이 저장된 데이터베이스입니다.
    LSA
    는 입력된 비밀번호와
    SAM
    에 저장된 비밀번호가 일치하는지 대조합니다.
  5. SRM (Security Reference Monitor)
    인증된 사용자가 특정 파일이나 폴더에 접근하려고 할 때, 접근 권한(ACL)이 있는지 확인하고 허용 여부를 결정합니다.
윈도우 인증 흐름도
윈도우 인증 흐름도

SAM 파일의 중요성 🔗

SAM
파일은 리눅스의 /etc/shadow와 같은 역할을 합니다.
이 파일은 매우 중요하므로 윈도우가 실행 중일 때는 운영체제(커널)가 파일을 잠그고 있어 복사하거나 열어볼 수 없습니다.
SAM 파일 경로
C:\Windows\System32\config\SAM

NTFS 파일 시스템의 특징 🔗

윈도우 98 시절에 쓰던
FAT32
파일 시스템은 보안 기능이 전혀 없었습니다.
현재 윈도우가 사용하는
NTFS
(New Technology File System)는 보안과 안정성을 대폭 강화했습니다.

NTFS vs FAT32 비교 🔗


ADS (Alternate Data Stream) 🔗

NTFS
에는
ADS
라는 아주 독특하고 위험한 기능이 있습니다.
원래는 파일의 아이콘 정보나 맥(Mac) OS와의 호환성을 위해 만들어진 기능이지만, 현재는
악성코드를 숨기는 은신처
로 악용됩니다.

ADS의 개념 🔗

일반적인 파일은 하나의 데이터 스트림(내용)만 가집니다.
하지만
ADS
를 사용하면
하나의 파일 이름 뒤에 숨겨진 또 다른 공간
을 만들 수 있습니다.
탐색기에서는 원본 파일만 보이고, 숨겨진 데이터는 보이지도 않고 용량에도 포함되지 않습니다.

[실습] ADS를 이용한 데이터 은닉 🔗

명령 프롬프트(CMD)를 사용하여 ADS를 직접 만들어 보겠습니다.
Command Prompt
:: 1. 정상적인 텍스트 파일 생성
echo Hello Windows > normal.txt
 
:: 2. normal.txt 뒤에 'hidden.txt'라는 숨겨진 방을 만들고 비밀 데이터 저장
echo This is Secret Data > normal.txt:hidden.txt
 
:: 3. 파일 목록 확인 (숨겨진 파일은 보이지 않음)
dir normal.txt
위 명령어를 실행하고 dir을 해보면 normal.txt의 용량이나 이름에는 아무런 변화가 없습니다.
하지만 숨겨진 데이터는 분명히 존재합니다.
은닉된 데이터
은닉된 데이터

[실습] 숨겨진 ADS 데이터 확인 🔗

숨겨진 데이터를 읽으려면 more 명령어를 사용해야 합니다.
Command Prompt
:: 숨겨진 데이터 읽기
more < normal.txt:hidden.txt
[보안 점검]
시스템에 숨겨진 ADS 파일이 있는지 확인하려면 dir 명령어에 /r 옵션을 주어야 합니다.
Command Prompt
:: /r 옵션: ADS 스트림까지 모두 표시
dir /r
실행 결과 예시
실행 결과 예시
결과를 보면 normal.txt 뒤에 :hidden.txt:$DATA라는 숨겨진 스트림이 붙어있는 것을 확인할 수 있습니다.
공격자는 이 공간에 exe 실행 파일을 숨겨놓고 몰래 실행하기도 합니다.

윈도우 부팅 순서 (Boot Process) 🔗

시스템 보안에서는 악성코드가 언제 실행되는지 파악하기 위해 부팅 순서를 이해하는 것이 중요합니다.
윈도우 10/11 기준의 부팅 과정은 다음과 같습니다.
  1. POST (Power On Self Test)
    전원이 켜지면 하드웨어 이상 유무를 검사합니다.
  2. BIOS / UEFI
    부팅 가능한 장치(HDD, SSD)를 찾아 제어권을 넘깁니다.
  3. Windows Boot Manager (bootmgr)
    부팅 설정 데이터(
    BCD
    )를 읽어 운영체제를 선택합니다.
  4. Windows OS Loader (winload.exe)
    핵심 커널(
    ntoskrnl.exe
    )과 하드웨어 추상화 계층(
    hal.dll
    )을 메모리에 로드합니다.
  5. Kernel Initialization
    커널이 초기화되고 장치 드라이버들을 로드합니다.
  6. Session Manager (smss.exe)
    사용자 세션을 생성하고 윈도우 시스템의 핵심 프로세스들을 실행합니다.
  7. Winlogon (winlogon.exe)
    로그인 화면을 표시하고 사용자 인증을 준비합니다. (
    LSA
    실행)

결론 🔗

이번 시간에는 윈도우 시스템의 보안 기반인 인증 구조와 파일 시스템에 대해 알아보았습니다.
다음 시간에는
1.6 버퍼 오버플로우(BOF) 원리와 메모리 보호 기법
에 대해 다룹니다.
프로그램의 메모리 구조(스택, 힙)를 이해하고, 입력값 검증 없이 데이터를 복사할 때 시스템이 어떻게 장악당하는지 그 위험한 원리를 파헤쳐 보겠습니다.

참고 🔗