Daily CS) Registry

goldenGlow_21·2024년 12월 8일
0

Daily CS

목록 보기
14/50

Registry

database for system/software settings

오늘의 주제는 레지스트리이다. 어젠가.. 그제쯤 컴퓨터가 골고루 느려지며 버벅거려서 전반적인 정비를 했는데, 그 과정에서 여러 번 마주쳐 오늘의 조사 주제로 삼게 되었다.


1. 레지스트리의 개요

1.1 레지스트리란 무엇인가?

레지스트리는 Windows 운영 체제에서 시스템 구성과 애플리케이션 설정을 저장하고 관리하는 계층적 데이터베이스이다. 이 데이터베이스는 하드웨어 설정, 소프트웨어 구성, 사용자 프로파일 정보 등을 포함하며, 운영 체제와 프로그램이 올바르게 작동하도록 돕는다. 예를 들어, 네트워크 설정, 디스플레이 옵션, 사용자 계정 정보 등이 모두 레지스트리에 저장된다.

레지스트리는 키(Key)와 값(Value)로 구성되며, 키는 폴더처럼 데이터 그룹을 나타내고 값은 실제 데이터를 저장한다.

1.2 레지스트리의 역할과 중요성

레지스트리는 운영 체제와 애플리케이션 간의 설정 정보를 저장하고, 시스템 부팅 시 중요한 정보를 제공한다. 레지스트리의 주요 역할은 다음과 같다:

  • 시스템 설정 저장: 하드웨어 드라이버, 네트워크 설정, 전원 관리 등을 저장
  • 애플리케이션 구성 관리: 소프트웨어의 사용자 설정 및 환경을 기록
  • 사용자 프로파일 저장: 로그인 계정별 맞춤 설정을 저장

레지스트리가 손상되거나 잘못 수정되면 시스템이 비정상적으로 작동할 수 있으므로, 관리가 매우 중요하다.

1.3 레지스트리와 INI 파일의 차이점

Windows 3.x 시절에는 설정을 INI 파일에 저장했지만, Windows 95 이후 레지스트리로 대체되었다. 아마 지금은 볼 일 없겠지만... 공부 목적으로 차이점을 정리해보면 다음과 같다.

특징INI 파일레지스트리
구조텍스트 파일 기반의 단순 구조계층적 데이터베이스 구조
속도파일 I/O 기반으로 느림메모리 기반 접근으로 빠름
중앙 관리불가능 (각 설정 파일 별도 관리)모든 설정을 한 곳에서 중앙 관리 가능
보안암호화 및 권한 관리가 어렵다권한 및 접근 제어를 통한 보안 가능

2. 레지스트리의 구조

2.1 레지스트리의 주요 구성 요소 (Hive, Key, Value)

레지스트리는 Hive, Key, Value라는 세 가지 기본 구성 요소로 이루어진다. 각각의 구성 요소는 데이터를 계층적으로 정리하여 효율적으로 저장 및 검색할 수 있도록 돕는다.

  1. Hive
    Hive는 레지스트리의 최상위 논리적 단위로, 설정 정보와 데이터를 그룹화하여 저장한다. 각 Hive는 독립적으로 관리되며, 특정 목적을 위해 설계된 데이터 집합을 포함한다. 예를 들어, HKEY_LOCAL_MACHINE은 하드웨어와 시스템 관련 설정을 저장하고, HKEY_CURRENT_USER는 로그인한 사용자에 대한 설정 정보를 포함한다.

  2. Key
    Key는 Hive 내에서 폴더처럼 작동하며, 데이터를 계층적으로 조직한다. 키 이름은 해당 데이터의 성격을 설명하며, 하위 키(subkey)를 가질 수 있다. 예를 들어, HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ServicesSYSTEM 키 아래에 CurrentControlSetServices라는 하위 키가 있는 구조를 나타낸다.

  3. Value
    Value는 키에 저장된 실제 데이터로, 값 이름(name), 값 유형(type), 데이터(data)로 구성된다. 데이터는 문자열, 정수, 바이너리와 같은 다양한 유형으로 저장된다.

레지스트리 구성 예시

구성 요소설명예시
Hive최상위 데이터 그룹HKEY_LOCAL_MACHINE
Key특정 설정 그룹SYSTEM\CurrentControlSet\Services
Value실제 데이터DefaultGateway: 192.168.1.1 (REG_SZ)

2.2 레지스트리의 계층 구조 (HKEY_CLASSES_ROOT 등)

레지스트리는 논리적 계층 구조로 구성되어 있으며, 최상위에 다섯 개의 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

2.3 레지스트리 값의 유형 (REG_SZ, REG_DWORD 등)

레지스트리 값은 데이터를 저장하는 형식에 따라 다양한 유형으로 구분된다. 각 유형은 데이터의 성격에 따라 사용되며, 올바른 설정을 위해 해당 유형에 대한 이해가 필요하다.

  1. REG_SZ (String)
    문자열 데이터를 저장하며, 주로 경로, 파일 이름, 설정값 등을 저장하는 데 사용된다.
  • 예시: C:\Windows\System32
  1. REG_DWORD (Double Word)
    32비트 정수를 저장하며, 주로 설정 값이나 상태 플래그를 나타낸다.
  • 예시: 1 (활성화), 0 (비활성화)
  1. REG_BINARY
    이진 데이터를 저장하며, 주로 하드웨어 구성이나 시스템 수준 설정에 사용된다.
  • 예시: 0xAC 0x10 0xFF
  1. REG_MULTI_SZ
    여러 개의 문자열을 배열 형태로 저장한다. 다중 경로나 설정 목록을 저장하는 데 사용된다.
  • 예시:
Path1
Path2
Path3
  1. REG_EXPAND_SZ
    환경 변수를 포함한 문자열 데이터를 저장하며, 환경 변수는 실행 시 해석된다.
  • 예시: %SystemRoot%\System32

레지스트리 값 유형 비교표

값 유형설명예시 데이터
REG_SZ문자열C:\Program Files
REG_DWORD32비트 정수1, 0
REG_BINARY이진 데이터0xAC 0x10
REG_MULTI_SZ문자열 배열Path1\nPath2
REG_EXPAND_SZ환경 변수를 포함한 문자열%SystemRoot%\System32

3. 레지스트리의 활용

3.1 시스템 설정 관리

레지스트리는 시스템 설정을 중앙에서 관리하는 역할을 한다. 운영 체제는 하드웨어 구성, 드라이버 설정, 네트워크 연결 정보를 레지스트리에 저장하여 부팅 시 필요한 설정을 빠르게 불러온다.

주요 활용 예시

  1. 네트워크 어댑터 설정

네트워크 어댑터의 IP 주소, 서브넷 마스크, 기본 게이트웨이는 다음 레지스트리 키에 저장. 해당 키를 통해 네트워크 설정을 직접 변경할 수도 있다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  1. 전원 관리 설정

전원 옵션과 절전 모드 설정은 레지스트리에 기록되며, 시스템 환경에 맞게 조정할 수 있다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power
  1. 드라이버 관리

하드웨어 드라이버의 상태 정보와 경로는 HKEY_LOCAL_MACHINE\SYSTEM 아래에 저장되며, 시스템 부팅 시 드라이버를 로드할 수 있도록 지원한다.

3.2 소프트웨어 구성 및 설정 저장

레지스트리는 소프트웨어 설정을 저장하고 관리하는 데 중요한 역할을 한다. 애플리케이션은 설치 시 관련 정보를 레지스트리에 기록하며, 실행 중에도 사용자 설정 값을 동적으로 저장한다.

주요 소프트웨어 설정 예시

  1. 프로그램 설치 경로

프로그램이 설치된 디렉토리 경로는 다음 키에 저장. 여기에는 설치된 모든 프로그램의 정보(이름, 경로, 버전)가 포함되며, 프로그램 제거 시에도 참조!

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
  1. 소프트웨어 구성 데이터

특정 소프트웨어의 설정(예: 사용자 인터페이스 옵션, 기본 경로 설정 등)은 다음과 같이 저장.

HKEY_CURRENT_USER\Software\VendorName\SoftwareName
  1. 라이선스 키 저장

상용 소프트웨어는 라이선스 키를 레지스트리에 저장해 인증을 관리.

# 기본 브라우저 설정
HKEY_CLASSES_ROOT\http\shell\open\command

# 크롬으로 변경 시:
"C:\Program Files\Google\Chrome\Application\chrome.exe" "%1"

3.3 부팅 및 사용자 환경 설정

Windows 부팅 과정에서 레지스트리는 필수적인 역할을 한다. 시스템은 부팅 과정에서 레지스트리에 저장된 정보를 참조해 하드웨어를 초기화하고, 필수 프로세스를 실행한다.

부팅 과정에서의 레지스트리 활용

  1. 자동 실행 프로그램

Windows 시작 시 실행될 애플리케이션 목록은 다음 키에 저장된다. 여기에 항목을 추가하면 프로그램이 부팅 시 자동으로 실행된다!

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
  1. 서비스 초기화

부팅 시 로드해야 할 서비스와 드라이버 목록은 다음 키에 저장된다. 이 설정은 부팅 프로세스의 성능과 안정성에 직접적인 영향을 미친다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
  1. 사용자 로그인 환경 설정

로그인한 사용자 계정의 배경화면, 시작 메뉴, 바탕화면 아이콘 배치 정보는 다음 키에 저장된다. 사용자는 이 키를 수정하여 사용자 환경을 커스터마이징할 수 있다.

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바탕화면 배경, 화면 해상도 등 사용자 환경

으어 표 밀린다


4. 레지스트리 수정과 관리

4.1 레지스트리 편집기(Regedit) 사용법

Regedit는 Windows에서 레지스트리를 직접 확인하고 편집할 수 있는 기본 제공 도구다. 이 도구는 잘못된 사용으로 시스템에 문제를 일으킬 수 있으므로, 신중하게 사용하는 것이 중요하다.

Regedit 실행 방법:

  1. Win + R을 눌러 실행 창 열기
  2. regedit 입력 후 Enter
  3. 관리자 권한 확인 후 레지스트리 편집기가 실행된다

Regedit 기본 인터페이스:

  • 왼쪽 패널: 레지스트리의 계층 구조를 탐색할 수 있는 트리 구조
  • 오른쪽 패널: 선택된 키의 값을 표시

레지스트리 값 편집:

  1. 키(Key)를 선택하고 오른쪽 패널에서 편집하려는 값을 더블 클릭
  2. 값 데이터를 변경하고 "확인" 버튼을 클릭

새 값 추가:

  1. 원하는 키에서 마우스 오른쪽 클릭 → "새로 만들기"
  2. 데이터 유형 선택 (예: REG_SZ, REG_DWORD)
  3. 이름 및 데이터를 입력

예시: 기본 브라우저 변경

  1. HKEY_CLASSES_ROOT\http\shell\open\command로 이동
  2. 값을 다음과 같이 수정

"C:\Program Files\Google\Chrome\Application\chrome.exe" "%1"

4.2 레지스트리 백업과 복원

레지스트리 수정 전에는 데이터를 백업하는 것이 필수적이다. 백업은 손상된 레지스트리를 복구하거나 의도치 않은 변경 사항을 되돌리는 데 유용하다.

백업 방법

  1. Regedit 실행 → "파일 → 내보내기"
  2. 저장할 위치와 파일 이름을 지정한 후, 범위를 선택(전체 레지스트리 또는 특정 키)하고 "저장" 클릭
    • 파일 확장자는 .reg로 저장

복원 방법

  1. Regedit 실행 → "파일 → 가져오기"
  2. 저장된 .reg 파일을 선택하고 "열기"

커맨드라인을 통한 백업

Windows 커맨드라인에서도 레지스트리 백업이 가능하다.

reg export HKLM\SOFTWARE backup.reg

4.3 스크립트를 이용한 레지스트리 자동화

레지스트리를 수정하거나 배포 작업을 자동화하려면 .reg 파일을 활용할 수 있다. .reg 파일은 특정 레지스트리 키와 값을 추가하거나 삭제하는 명령을 포함한다.

.reg 파일 구조

  1. 첫 줄에 .reg 파일의 버전을 명시
Windows Registry Editor Version 5.00
  1. 변경하려는 레지스트리 경로와 데이터를 작성

.reg 파일 예시

  • 새 값 추가
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 파일 적용 방법

  1. .reg 파일을 더블 클릭하고 "예"를 클릭하여 레지스트리에 병합
  2. 명령어를 사용하여 적용

reg import example.reg

4.4 레지스트리 관리 시 유의사항 + 정리

  • 백업 필수: 잘못된 수정은 시스템 오류를 유발할 수 있으므로, 항상 백업 후 변경 작업을 진행한다.
  • 권한 확인: 중요한 키는 관리자 권한이 필요하며, 권한 없는 사용자는 수정할 수 없다.
  • 의심스러운 키 주의: 악성 소프트웨어는 레지스트리에 자신을 등록하여 자동 실행되거나 삭제를 방지하는 경우가 있다.

표로 요약하면

관리 작업도구/방법예시 명령어/경로
레지스트리 확인 및 편집Regeditregedit 실행 후 계층 구조 탐색
백업 및 복원Regedit/커맨드라인reg export HKLM\SOFTWARE backup.reg
자동화 작업.reg 파일 작성 및 병합reg import example.reg
특정 값 수정RegeditHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

5. 레지스트리와 보안

5.1 레지스트리 관련 보안 위협 (악성 코드, 권한 상승 등)

레지스트리는 Windows 운영 체제의 핵심 구성 요소로, 보안 위협의 주요 타겟이 되기도 한다. 악성 코드는 레지스트리를 통해 시스템에 자신을 영구적으로 등록하거나, 권한 상승을 시도할 수 있다.

주요 보안 위협

  • 자동 실행 등록

악성 프로그램은 부팅 시 실행되도록 다음 경로에 자신을 등록한다.

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

예를 들어, 이 경우 악성 소프트웨어가 아래와 같은 값을 추가할 수 있다

Name: MaliciousApp
Value: C:\Path\to\malware.exe
  • 권한 상승 공격:
    공격자는 레지스트리 키의 잘못된 권한 설정을 이용해 관리자 권한을 얻는다. 예를 들어, 시스템 서비스 키의 권한을 조작하여 관리자 권한으로 악성 코드를 실행할 수 있다.
  • 레지스트리 키 삭제 방지:
    일부 악성 코드는 자신을 보호하기 위해 키를 읽기 전용으로 설정하거나, 특정 도구를 사용하지 않으면 삭제할 수 없게 만든다.

5.2 레지스트리 보호를 위한 대책

레지스트리는 운영 체제와 밀접하게 연관되어 있어 보호 대책을 마련하는 것이 중요하다. 다음과 같은 방식을 통해 보안을 강화할 수 있다.

보호 대책

  1. 권한 관리

중요 레지스트리 키에 대해 관리자 전용 권한을 부여하고, 일반 사용자 계정에는 읽기 전용 권한을 설정한다. 참고로... Regedit에서 키를 선택하고 "권한" 옵션을 통해 설정 가능

  1. 정기적인 백업

레지스트리 변경으로 인한 문제를 방지하기 위해 주기적으로 레지스트리를 백업한다. Windows의 "시스템 복원" 기능을 활성화하면, 변경 사항이 발생했을 때 쉽게 복원할 수 있다.

  1. 악성 코드 방지

안티바이러스 소프트웨어를 설치하여 의심스러운 레지스트리 변경 시 경고를 받을 수 있다. 일부 보안 소프트웨어는 레지스트리 모니터링 기능을 제공한다.

  1. 레지스트리 변경 알림 도구 사용

Sysinternals의 Regmon 또는 Procmon과 같은 도구를 사용하여 레지스트리 변경 사항을 실시간으로 추적한다.

5.3 포렌식 분석에서의 레지스트리 활용

레지스트리는 디지털 포렌식에서 중요한 증거를 제공한다. 공격자는 시스템 설정을 조작하거나 사용자 활동을 숨기기 위해 레지스트리를 조작하는 경우가 많다. 이를 통해 사건의 단서를 파악하거나 활동을 복구할 수 있다.

포렌식 활용 예시

  1. USB 연결 기록

USB 장치가 연결된 기록은 다음 키에 저장된다. 여기에는 장치 ID와 연결 시간이 포함되어 있어, 외부 저장소 사용 여부를 확인할 수 있다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR
  1. 최근 실행된 프로그램 확인

사용자가 실행한 프로그램의 기록은 다음 경로에서 확인 가능하다.

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU
  1. 자동 실행 프로그램 분석

악성 소프트웨어나 의심스러운 프로그램이 자동 실행 목록에 등록되었는지 확인한다.

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
  1. 삭제된 파일의 흔적

사용자가 삭제한 파일의 메타데이터나 흔적은 레지스트리에 남을 수 있다.

표로 요약하면

위협 유형설명대책
자동 실행 등록악성 소프트웨어가 부팅 시 실행되도록 레지스트리에 등록.자동 실행 키를 주기적으로 점검 및 권한 관리.
권한 상승잘못된 키 권한을 이용하여 관리자 권한을 획득.중요 키에 대해 읽기 전용 권한 설정.
키 삭제 방지악성 소프트웨어가 키를 삭제 불가능하게 설정.Sysinternals 도구로 레지스트리 모니터링.
디지털 포렌식에서의 흔적 분석USB 연결 기록, 프로그램 실행 기록 등을 통해 사용자의 활동을 확인.Sysinternals와 같은 전문 분석 도구 사용.

6. 마무리

컴퓨터를 고치다가 조사하기로 정한 주제에서 굉장히 많은 것들을 배운 느낌이다. 특히 희망 진로 중 하나로 정해둔 포렌식 분야에서도 연관되어 사용된다는 점 때문인지, 일종의 내적 친밀감 같은 것도 느껴진다!

profile
안드로이드는 리눅스의 꿈을 꾸는가

0개의 댓글