Post

[Windows] 윈도우의 레지스트리란?

윈도우 레지스트리(Registry) 구조 및 핵심 개념 정리

[Windows] 윈도우의 레지스트리란?

Windows의 레지스트리 편집기 (regedit.exe)1


𝙸. 레지스트리 개요


Registry


  • 운영체제, 설치된 프로그램, 사용자 계정마다의 설정 값을 담아두는 중앙 저장소이다.(리눅스는 파일 시스템의 형태로 구현되어 있다.)

  • 예전 윈도우(3.1 이전)에서는 각 프로그램이 개별 INI 파일로 설정을 관리했는데, 이를 하나의 통합된 중앙 집중형 데이터베이스로 관리하기 위해 등장한 것이 레지스트리이다.

  • 레지스트리는 크게 루트키, 서브키의 분류로 분류되어있으며 3개의 루르키와 모든 서브키는 메모리에만 존재하고 실제 물리적인 데이터는 하이브에 저장되어 있다.


Hive


  • 서브키 아래의 트리 구조를 의미하며 레지스트리 정보를 저장하고 있는 물리적인 파일이다.

  • 대표적으로 `C:\Windows\System32\Config` 경로에 시스템 관련 하이브가, 각 사용자 폴더 안에 `NTUSER.DAT`라는 이름으로 사용자별 하이브가 저장된다.

  • 부팅 시 윈도우의 설정 관리자(CM, Configuration Manager)가 이 파일들을 읽어 메모리 상에 트리 형태의 자료구조로 로그/구성한다.


𝙸𝙸. 레지스트리의 구조


레지스트리 구조는 일반적인 폴더 트리와 거의 흡사한 형태로 데이터를 저장한다.

파일 시스템으로 비유하여 설명하자면 이렇게 비유 할 수 있다.

레지스트리 용어파일 시스템 비유설명
키(Key)폴더다른 키나 값을 담는 컨테이너
값(Value)파일실제 데이터를 갖는 항목 (이름 존재)
값 타입(Value Type)파일 확장자값 데이터가 저장된 형식 (타입)
값 데이터(Value Data)파일 내용값이 실제로 담고 있는 데이터

또한 레지스트리의 특징으로는 값 변경 시 즉시 운영체제와 응용 프로그램에 반영되어 별도 재부팅을 필요로 하지 않는 경우가 많으며, 일부 핵심 시스템 설정을 제외하곤 즉시 적용된다. 그렇기 때문에 더더욱 레지스트리 수정에는 신중을 가해야한다.


값 타입(Value Type)의 종류


값 타입(Value Type)의 종류2


𝙸𝙸𝙸. 보안관점에서의 레지스트리


레지스트리는 단순한 설정 정보 저장소를 넘어, 악성코드의 동작 방식이나 사용자 행위를 입증하는 결정적인 아티팩트(Artifact) 역할을 한다.

  • 지속성(Persistence) 메커니즘 분석
    • 악성코드가 재부팅 후에도 자동 실행되도록 등록하는 Run 키, 서비스(Services) 등록 정보, 스케줄러 설정 등을 확인할 수 있다.
  • 은닉 요소 탐지
    • 레지스트리 내부 값 데이터 영역에 악성 바이너리나 스크립트를 은닉하는 파일리스(Fileless) 공격 기법을 탐지할 수 있다.
  • 사용자 행위 추적
    • 최근 실행한 프로그램 목록, 네트워크 연결 이력, USB 등 외부 저장매체 연결 기록 등 사용자 활동 흔적이 보존되어 있다.
  • 시스템 변조 유무 검증
    • 보안 정책 해제, 방화벽 비활성화 등 시스템 환경 설정이 무단으로 변경되었는지 추적할 수 있다.

이렇듯 윈도우 시스템에서의 레지스트리는 침해사고 대응이나 포렌식 분석 등 보안 분석에서 중요한 요소이므로 해당 구조에 대해 학습해야만 한다. 다음 글에서는 레지스트리의 다양한 키(Key)에 대해서 알아보도록 하자.









Reference



  1. 출처: https://star7sss.tistory.com/985 ↩︎

  2. 출처: https://learn.microsoft.com/en-us/troubleshoot/windows-server/performance/windows-registry-advanced-users ↩︎

This post is licensed under CC BY 4.0 by the author.