레지스트리(Registry)
* 윈도우 운영체제 보안
: 레지스터리 키 종류, 레지스터리 공격, 레지스터리 보안, 리지스터리 분석
윈도우 레지스트리
- 운영체제의 설정과 선택항목을 담고 있는 데이터베이스. - 모든 HW, SW, 등에 대한 정보와 설정 정보가 들어 있다.
- 이전 윈도우에서는 프로그램마다 구성 설정 정보가 INI파일에 저장되었다. 하지만 설정 파일이 곳곳에 퍼져 있어서 해당 파일을 찾기 어러움 등의 이유로 레지스트리가 도입이 되었다.
[ 레지스터리 키 종류 ]
- Master Key : 윈도우 부팅시 하이브 파일에서 직접 읽어 들여 구성되는 키
1) HKLM(HKEY_LOCAL_MACHINE)
2) HKU(HKEY_USER)
- Deriverd Key : Master Key로부터 값을 가져와 재 구성하는 키
1) HKCU(HKEY_CURRENT_USER)
2) HKCC(HKEY_CURRENT_CONFIG)
3) HKCR(HKEY_CLASSES_ROOT)
Master Key
1) HKEY_LOCAL_MACHINE (HKLM)
하드웨어와 드라이버 설정사항에 대한 정보가 저장되어있다. HIVE 파일 위치: C:\Windows\System32\config\
HKLM$HARDWARE: 부팅 시 감지된 하드웨어와 드라이버 정보가 저장된다. (휘발성으로 존재)
HKLM$SAM: 사용자, 도메인 정보를 저장되고 시스템 계정만 접근이 가능하다.
HKLM$SECURITY: 시스템 범위의 보안 정책과 사용자 권리 할당 정보가 저장된다.
HKLM$SOFTWARE: 시스템 범위의 소프트웨어 목록과 그 환경 설정 정보 (이름, 경로)가 저장된다.
HKLM$SYSTEM: 부팅될 때 필요한 시스템 범위의 환경설정 정보(서비스 목록)가 저장된다.
2) HKEY_USER (HKU)
시스템에 있는 모든 계정과 그룹에 대한 정보가 저장된다.
모든 계정의 프로파일이 있다는 것을 제외하고 서브키가 HKCU와 동일하다. 각 사용자의 설정 정보는 NTUSER.dat 파일에 저장. HIVE 파일 위치 :
%userprofile%\ntuser.dat
Deriverd Key
1) HKEY_CURRENT_USER (HKCU)
현재 시스템에 로그인하고 있는 사용자정보가 저장된다.
2) HKEY_CLASSES_ROOT (HKCR)
- 시스템에 등록된파일 확장자와 그것을 열 때 사용할 에플리케이션에 대한 맵핑정보, COM(Component Object Model)오브젝트 등록정보를 저장된다.
3) HKEY_COURENT_CONFIG (HKCC)
- 시스템이 시작할때 사용하는 하드웨어 프로파일 정보를 저장하고 있다.
- HKLM의 서브로 존재하고 실행시간에 수집한 정보가 저장된다.
[ 레지스터리 구조 ]
- 키, 값 구조
키 : 폴더와 비슷하다
값 : 키 안에 들어있는 이름/자료
레지스트리 값 종류 목록
- 레지스터리 값 종류 목록
0 REG_NONE : 종류 없음
1 REG_SZ : 문자열 값
2 REG_EXPAND_SZ : 확장할 수 있는 문자열 값. 환경 변수를 포함할 수 있다.
3 REG_BINARY : 이진값 (임의의 데이터)
4 REG_DWORD/REG_DWORD_LITTLE_ENDIAN : DWORD 값 (32 비트) 정수 (0 ~ 4,294,967,295 [232 – 1]) (리틀 엔디언)
5 REG_DWORD_BIG_ENDIAN : DWORD 값 (32 비트) 정수 (0 ~ 4,294,967,295 [232 – 1]) (빅 엔디언)
6 REG_LINK : 심볼 링크 (유니코드)
7 REG_MULTI_SZ : 다중 문자열 값 (고유한 문자열의 배열)
8 REG_RESOURCE_LIST : 리소스 목록 (플러그 앤 플레이 하드웨어 열거 및 구성에 쓰임)
9 REG_FULL_RESOURCE_DESCRIPTOR : 리소스 서술자 (플러그 앤 플레이 하드웨어 열거 및 구성에 쓰임)
10 REG_RESOURCE_REQUIREMENTS_LIST : 리소스 요구 목록 (플러그 앤 플레이 하드웨어 열거 및 구성에 쓰임)
11 REG_QWORD/REG_QWORD_LITTLE_ENDIAN : QWORD 값 (64 비트 정수), 빅/리틀 엔디언 또는 정의되지 않음 (윈도우 2000에 도입)
[ 레지스트리 보호 ]
1) 레지스트리 접근 제한 (UAC에 의해 관리)
2) 현재 레지스트리 상태 저장 (snapshot)
3) 레지스트리 키 디스크에 복사 (.reg 파일로 저장)
[ 레지스트리 공격 ]
악성 코드 감염시 파일 생성 혹은 레지스트리 변경이 일어난다.
1) 부팅 시 악성 코드 실행
: 시스템 재부팅 시 HKLM과 HKCU 레지스트리 값을 변경시킨다.
- 개별 사용자 지속용: HKCU\Software\Microsoft\CurrentVersion\Run
- 개별 사용자 일회성: HKCU\Software\Microsoft\CurrentVersion\RunOnce
- 전체 사용자 지속: HKLM\Software\Microsoft\CurrentVersion\Run
- 전체 사용자 일회성: HKCU\Software\Microsoft\CurrentVersion\RunOnce
2) 특정 확장자 실행 시 악성코드 실행
- 확장자 정보를 저장하고 있는 HKCR 레지스트리 값을 변경시킨다.
[ 보안상 레지스트리 ]
위의 경우처럼 레지스트리가 공격에 이용될 수 있는 상황이 발생하기도 하지만, 레지스트리를 분석(PC 사용자의 사용 환경, 공격자가 생성/가공/전송한 데이터) 할 수 있다면 역으로 추적하여 정보 유출의 정황이나 근거를 파악할 수 있다.
* 레지스트에서 확인할 수 있는 정보
1) SYSTEM 하위 키 : TimeZone, Storage Devices
HKLM$SYSTEM: 부팅될 때 필요한 시스템 범위의 환경설정 정보(서비스 목록)가 저장된다.
1. TimeZone : 시스템 표준 시간
증거의 시간 조작 여부 확인 가능
- 경로 : SYSTEM\CurrentControlSet\Control\TimeZoneInformation
2. Storage Devices : 저장매체 저장 정보
저장매체가 연결되면 저장되는 정보 일부가 USBSTOR에 저장(연결된 모든 제품정보, 장치ID, 시리얼번호, 설치시간, 마지막사용시간 등)
- 경로 : SYSTEM\ControlSet00x\Enum\USBSTOR
2) SOFTWARE 하위 키 : Autorun location
HKLM$SOFTWARE: 시스템 범위의 소프트웨어 목록과 그 환경 설정 정보 (이름, 경로)가 저장된다.
1. Autorun location : 자동실행 목록 위치
윈도우가 부팅될 때 자동으로 실행되는 프로그램의 목록이다.
3) NTUSER.DAT 파일 : MRU (Most Recently Used)
MRU(Most Recently Used)는 사용자가 수행한 가장 최근에 실행한 작업-문서/명령
1. MRU (최근 실행 작업)
* RecentDocs (최근 실행 파일)
: 윈도우 탐색기를 통해 최근에 실행되었거나 열린 파일 목록을 기록
* runMRU(최근 실행 명령어) : 실행 창에 입력한 명령
2. UserAssist (파일 실행 흔적)
UserAssist는 시스템에서 실행되었던 프로그램의 목록, 실행 횟수, 마지막 실행시간 등의 정보를 가지고 있다.
4) SAM : 사용자 계정정보, 그룹정보
SAM(보안계정 관리자)은 사용자의 비밀번호를 저장하는 윈도우시스템에서 사용하는 데이터베이스 파일이다.
- 위치: HKLM\SAM
1) 사용자 계정 정보
: Username, Full Name, User Commet, Account Type(default, admin, user), Account Created, Password hint, Last Login Date, Pwd Reset Date, Pwd Fail Date, Login Count
2) 그룹 정보
: Group Name, LastWrite, Group Comment, Users (SID)
그룹 정보의 경우 SID정보와 매칭하여 사용자 정보를 파악할 수 있다. (SID = 윈도우 운영체제의 보안 사용자 및 보안 그룹을 식별하는 고유 값이다.)
[ 참조 ]
1. 위키피디아, 레지스트리
ko.wikipedia.org/wiki/%EC%9C%88%EB%8F%84%EC%9A%B0_%EB%A0%88%EC%A7%80%EC%8A%A4%ED%8A%B8%EB%A6%AC
2. 이글루시큐리티, 윈도우 레지스트리 분석을 이용한 침해사고 분석
http://www.igloosec.co.kr/BLOG_윈도우%20레지스트리%20분석을%20이용한%20침해사고%20분석%20기법?searchItem=&searchWord=&bbsCateId=1&gotoPage=1