database for system/software settings
오늘의 주제는 레지스트리이다. 어젠가.. 그제쯤 컴퓨터가 골고루 느려지며 버벅거려서 전반적인 정비를 했는데, 그 과정에서 여러 번 마주쳐 오늘의 조사 주제로 삼게 되었다.
레지스트리는 Windows 운영 체제에서 시스템 구성과 애플리케이션 설정을 저장하고 관리하는 계층적 데이터베이스이다. 이 데이터베이스는 하드웨어 설정, 소프트웨어 구성, 사용자 프로파일 정보 등을 포함하며, 운영 체제와 프로그램이 올바르게 작동하도록 돕는다. 예를 들어, 네트워크 설정, 디스플레이 옵션, 사용자 계정 정보 등이 모두 레지스트리에 저장된다.
레지스트리는 키(Key)와 값(Value)로 구성되며, 키는 폴더처럼 데이터 그룹을 나타내고 값은 실제 데이터를 저장한다.
레지스트리는 운영 체제와 애플리케이션 간의 설정 정보를 저장하고, 시스템 부팅 시 중요한 정보를 제공한다. 레지스트리의 주요 역할은 다음과 같다:
레지스트리가 손상되거나 잘못 수정되면 시스템이 비정상적으로 작동할 수 있으므로, 관리가 매우 중요하다.
Windows 3.x 시절에는 설정을 INI 파일에 저장했지만, Windows 95 이후 레지스트리로 대체되었다. 아마 지금은 볼 일 없겠지만... 공부 목적으로 차이점을 정리해보면 다음과 같다.
특징 | INI 파일 | 레지스트리 |
---|---|---|
구조 | 텍스트 파일 기반의 단순 구조 | 계층적 데이터베이스 구조 |
속도 | 파일 I/O 기반으로 느림 | 메모리 기반 접근으로 빠름 |
중앙 관리 | 불가능 (각 설정 파일 별도 관리) | 모든 설정을 한 곳에서 중앙 관리 가능 |
보안 | 암호화 및 권한 관리가 어렵다 | 권한 및 접근 제어를 통한 보안 가능 |
레지스트리는 Hive, Key, Value라는 세 가지 기본 구성 요소로 이루어진다. 각각의 구성 요소는 데이터를 계층적으로 정리하여 효율적으로 저장 및 검색할 수 있도록 돕는다.
Hive
Hive는 레지스트리의 최상위 논리적 단위로, 설정 정보와 데이터를 그룹화하여 저장한다. 각 Hive는 독립적으로 관리되며, 특정 목적을 위해 설계된 데이터 집합을 포함한다. 예를 들어, HKEY_LOCAL_MACHINE
은 하드웨어와 시스템 관련 설정을 저장하고, HKEY_CURRENT_USER
는 로그인한 사용자에 대한 설정 정보를 포함한다.
Key
Key는 Hive 내에서 폴더처럼 작동하며, 데이터를 계층적으로 조직한다. 키 이름은 해당 데이터의 성격을 설명하며, 하위 키(subkey)를 가질 수 있다. 예를 들어, HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
는 SYSTEM
키 아래에 CurrentControlSet
과 Services
라는 하위 키가 있는 구조를 나타낸다.
Value
Value는 키에 저장된 실제 데이터로, 값 이름(name), 값 유형(type), 데이터(data)로 구성된다. 데이터는 문자열, 정수, 바이너리와 같은 다양한 유형으로 저장된다.
구성 요소 | 설명 | 예시 |
---|---|---|
Hive | 최상위 데이터 그룹 | HKEY_LOCAL_MACHINE |
Key | 특정 설정 그룹 | SYSTEM\CurrentControlSet\Services |
Value | 실제 데이터 | DefaultGateway: 192.168.1.1 (REG_SZ) |
레지스트리는 논리적 계층 구조로 구성되어 있으며, 최상위에 다섯 개의 Hive가 존재한다. 각 Hive는 특정 유형의 데이터를 저장하며, Windows 시스템의 동작과 설정을 관리한다.
HKEY_CLASSES_ROOT (HKCR)
파일 확장자와 관련된 설정을 저장한다. 예를 들어, .txt
파일을 더블 클릭하면 메모장이 실행되는 설정은 이 Hive에 저장된다.
예시
.txt → Default: txtfile
txtfile → Default: Notepad
HKEY_CURRENT_USER (HKCU)
현재 로그인한 사용자에 대한 설정 정보를 저장한다. 바탕화면 배경, 마우스 감도, 화면 해상도 등이 이 Hive에 포함된다.
HKEY_LOCAL_MACHINE (HKLM)
시스템 전체에서 적용되는 하드웨어와 소프트웨어 설정을 저장한다. 네트워크 어댑터, 드라이버 설정, 설치된 프로그램 정보 등이 이곳에 기록된다.
HKEY_USERS (HKU)
모든 사용자 계정에 대한 정보를 포함한다. 개별 사용자 계정의 설정은 하위 키로 저장된다.
HKEY_CURRENT_CONFIG (HKCC)
하드웨어 프로파일에 대한 정보를 저장한다. 주로 디스플레이 설정이나 프린터 구성과 같은 하드웨어 관련 설정을 포함한다.
HKEY_LOCAL_MACHINE
└── SYSTEM
└── CurrentControlSet
└── Services
└── Tcpip
└── Parameters
└── DefaultGateway: 192.168.1.1
레지스트리 값은 데이터를 저장하는 형식에 따라 다양한 유형으로 구분된다. 각 유형은 데이터의 성격에 따라 사용되며, 올바른 설정을 위해 해당 유형에 대한 이해가 필요하다.
C:\Windows\System32
1
(활성화), 0
(비활성화)0xAC 0x10 0xFF
Path1
Path2
Path3
%SystemRoot%\System32
값 유형 | 설명 | 예시 데이터 |
---|---|---|
REG_SZ | 문자열 | C:\Program Files |
REG_DWORD | 32비트 정수 | 1 , 0 |
REG_BINARY | 이진 데이터 | 0xAC 0x10 |
REG_MULTI_SZ | 문자열 배열 | Path1\nPath2 |
REG_EXPAND_SZ | 환경 변수를 포함한 문자열 | %SystemRoot%\System32 |
레지스트리는 시스템 설정을 중앙에서 관리하는 역할을 한다. 운영 체제는 하드웨어 구성, 드라이버 설정, 네트워크 연결 정보를 레지스트리에 저장하여 부팅 시 필요한 설정을 빠르게 불러온다.
네트워크 어댑터의 IP 주소, 서브넷 마스크, 기본 게이트웨이는 다음 레지스트리 키에 저장. 해당 키를 통해 네트워크 설정을 직접 변경할 수도 있다.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
전원 옵션과 절전 모드 설정은 레지스트리에 기록되며, 시스템 환경에 맞게 조정할 수 있다.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power
하드웨어 드라이버의 상태 정보와 경로는 HKEY_LOCAL_MACHINE\SYSTEM
아래에 저장되며, 시스템 부팅 시 드라이버를 로드할 수 있도록 지원한다.
레지스트리는 소프트웨어 설정을 저장하고 관리하는 데 중요한 역할을 한다. 애플리케이션은 설치 시 관련 정보를 레지스트리에 기록하며, 실행 중에도 사용자 설정 값을 동적으로 저장한다.
프로그램이 설치된 디렉토리 경로는 다음 키에 저장. 여기에는 설치된 모든 프로그램의 정보(이름, 경로, 버전)가 포함되며, 프로그램 제거 시에도 참조!
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
특정 소프트웨어의 설정(예: 사용자 인터페이스 옵션, 기본 경로 설정 등)은 다음과 같이 저장.
HKEY_CURRENT_USER\Software\VendorName\SoftwareName
상용 소프트웨어는 라이선스 키를 레지스트리에 저장해 인증을 관리.
# 기본 브라우저 설정
HKEY_CLASSES_ROOT\http\shell\open\command
# 크롬으로 변경 시:
"C:\Program Files\Google\Chrome\Application\chrome.exe" "%1"
Windows 부팅 과정에서 레지스트리는 필수적인 역할을 한다. 시스템은 부팅 과정에서 레지스트리에 저장된 정보를 참조해 하드웨어를 초기화하고, 필수 프로세스를 실행한다.
Windows 시작 시 실행될 애플리케이션 목록은 다음 키에 저장된다. 여기에 항목을 추가하면 프로그램이 부팅 시 자동으로 실행된다!
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
부팅 시 로드해야 할 서비스와 드라이버 목록은 다음 키에 저장된다. 이 설정은 부팅 프로세스의 성능과 안정성에 직접적인 영향을 미친다.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
로그인한 사용자 계정의 배경화면, 시작 메뉴, 바탕화면 아이콘 배치 정보는 다음 키에 저장된다. 사용자는 이 키를 수정하여 사용자 환경을 커스터마이징할 수 있다.
HKEY_CURRENT_USER\Control Panel\Desktop
활용 영역 | 저장 위치 | 설명 |
---|---|---|
네트워크 설정 | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip | 네트워크 어댑터 및 IP 주소 정보 |
프로그램 설치 정보 | HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion | 설치된 프로그램의 경로 및 버전 정보 |
자동 실행 프로그램 | HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run | 부팅 시 자동 실행할 프로그램 목록 |
사용자 환경 설정 | HKEY_CURRENT_USER\Control Panel\Desktop | 바탕화면 배경, 화면 해상도 등 사용자 환경 |
으어 표 밀린다
Regedit는 Windows에서 레지스트리를 직접 확인하고 편집할 수 있는 기본 제공 도구다. 이 도구는 잘못된 사용으로 시스템에 문제를 일으킬 수 있으므로, 신중하게 사용하는 것이 중요하다.
Win + R
을 눌러 실행 창 열기regedit
입력 후 EnterHKEY_CLASSES_ROOT\http\shell\open\command
로 이동"C:\Program Files\Google\Chrome\Application\chrome.exe" "%1"
레지스트리 수정 전에는 데이터를 백업하는 것이 필수적이다. 백업은 손상된 레지스트리를 복구하거나 의도치 않은 변경 사항을 되돌리는 데 유용하다.
.reg
로 저장.reg
파일을 선택하고 "열기"Windows 커맨드라인에서도 레지스트리 백업이 가능하다.
reg export HKLM\SOFTWARE backup.reg
레지스트리를 수정하거나 배포 작업을 자동화하려면 .reg 파일을 활용할 수 있다. .reg
파일은 특정 레지스트리 키와 값을 추가하거나 삭제하는 명령을 포함한다.
.reg
파일의 버전을 명시Windows Registry Editor Version 5.00
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Example]
"ExampleValue"="Hello, Registry"
Windows Registry Editor Version 5.00
[-HKEY_LOCAL_MACHINE\SOFTWARE\Example]
reg import example.reg
관리 작업 | 도구/방법 | 예시 명령어/경로 |
---|---|---|
레지스트리 확인 및 편집 | Regedit | regedit 실행 후 계층 구조 탐색 |
백업 및 복원 | Regedit/커맨드라인 | reg export HKLM\SOFTWARE backup.reg |
자동화 작업 | .reg 파일 작성 및 병합 | reg import example.reg |
특정 값 수정 | Regedit | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services |
레지스트리는 Windows 운영 체제의 핵심 구성 요소로, 보안 위협의 주요 타겟이 되기도 한다. 악성 코드는 레지스트리를 통해 시스템에 자신을 영구적으로 등록하거나, 권한 상승을 시도할 수 있다.
악성 프로그램은 부팅 시 실행되도록 다음 경로에 자신을 등록한다.
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
예를 들어, 이 경우 악성 소프트웨어가 아래와 같은 값을 추가할 수 있다
Name: MaliciousApp
Value: C:\Path\to\malware.exe
레지스트리는 운영 체제와 밀접하게 연관되어 있어 보호 대책을 마련하는 것이 중요하다. 다음과 같은 방식을 통해 보안을 강화할 수 있다.
중요 레지스트리 키에 대해 관리자 전용 권한을 부여하고, 일반 사용자 계정에는 읽기 전용 권한을 설정한다. 참고로... Regedit에서 키를 선택하고 "권한" 옵션을 통해 설정 가능
레지스트리 변경으로 인한 문제를 방지하기 위해 주기적으로 레지스트리를 백업한다. Windows의 "시스템 복원" 기능을 활성화하면, 변경 사항이 발생했을 때 쉽게 복원할 수 있다.
안티바이러스 소프트웨어를 설치하여 의심스러운 레지스트리 변경 시 경고를 받을 수 있다. 일부 보안 소프트웨어는 레지스트리 모니터링 기능을 제공한다.
Sysinternals의 Regmon 또는 Procmon과 같은 도구를 사용하여 레지스트리 변경 사항을 실시간으로 추적한다.
레지스트리는 디지털 포렌식에서 중요한 증거를 제공한다. 공격자는 시스템 설정을 조작하거나 사용자 활동을 숨기기 위해 레지스트리를 조작하는 경우가 많다. 이를 통해 사건의 단서를 파악하거나 활동을 복구할 수 있다.
USB 장치가 연결된 기록은 다음 키에 저장된다. 여기에는 장치 ID와 연결 시간이 포함되어 있어, 외부 저장소 사용 여부를 확인할 수 있다.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR
사용자가 실행한 프로그램의 기록은 다음 경로에서 확인 가능하다.
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU
악성 소프트웨어나 의심스러운 프로그램이 자동 실행 목록에 등록되었는지 확인한다.
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
사용자가 삭제한 파일의 메타데이터나 흔적은 레지스트리에 남을 수 있다.
위협 유형 | 설명 | 대책 |
---|---|---|
자동 실행 등록 | 악성 소프트웨어가 부팅 시 실행되도록 레지스트리에 등록. | 자동 실행 키를 주기적으로 점검 및 권한 관리. |
권한 상승 | 잘못된 키 권한을 이용하여 관리자 권한을 획득. | 중요 키에 대해 읽기 전용 권한 설정. |
키 삭제 방지 | 악성 소프트웨어가 키를 삭제 불가능하게 설정. | Sysinternals 도구로 레지스트리 모니터링. |
디지털 포렌식에서의 흔적 분석 | USB 연결 기록, 프로그램 실행 기록 등을 통해 사용자의 활동을 확인. | Sysinternals와 같은 전문 분석 도구 사용. |
컴퓨터를 고치다가 조사하기로 정한 주제에서 굉장히 많은 것들을 배운 느낌이다. 특히 희망 진로 중 하나로 정해둔 포렌식 분야에서도 연관되어 사용된다는 점 때문인지, 일종의 내적 친밀감 같은 것도 느껴진다!