티스토리 뷰
윈도우 레지스트리(Registry)
: 마이크로소프트 윈도우 운영체제에서 운영체제 및 응용 프로그램 등에 필요한 정보를 저장하고 관리하기 위한 계층형 데이터베이스
- 계층형데이터베이스 = 데이터의 관계를 트리구조로 정의
- Key, Value (,Data Type, Data)
: 윈도우 부팅 시 로그인, 서비스 실행, 응용 프로그램 실행, 사용자의 행위에 관한 모든 활동에 참여하고 그 정보를 기록, 관리함
: 레지스트리 관리 프로그램(regedit.exe)을 이용해 레지스트리 정보 확인 및 수정 가능
루트 키(Root Key)
: 윈도우 레지스트리 키 중 가장 상위레벨에 있는 레지스트리 키
- HKEY_CLASSES_ROOT
[ 파일의 각 확장자에 대한 정보 | 파일과 프로그램간의 연결 정보 | OLE 객체 정보 ]
- HKEY_LOCAL_MACHINE
[ (사용자에 관계 없이) 시스템에 적용되는 하드웨어와 소프트웨어(소프트웨어 설치 드라이버 설정) 정보. ]
- HKEY_USERS
[ 윈도우 사용자의 설정 정보 ]
- HKEY_CURRENT_CONFIG
[ HKLM의 서브로 존재하는 정보. 실행시간동안 수집한 정보 | 디스플레이 설정과 프린트 설정에 관한 정보 ]
HKEY_LOCAL_MACHINE은 하드웨어 설정과 모든 사용자가 같이 쓰는 설정을 담고 있는 레지스트리이고, HKEY_USERS는 윈도우 사용자의 설정을 담고 있다.
각 하이브는 \SOFTWARE와 \SYSTEM 두 개의 동일한 서브키를 가지고 있고 하는 역할도 비슷하다. HKEY_USERS 밑에 윈도우 계정의 SID 이름을 가진 서브키는 HKEY_CURRENT_USER 와 같다. 즉, HKEY_USERS 쪽 키는 원본이고 HKEY_CURRENT_USER 는 링크라고 이해할 수 있다.
다만, HKEY_CURRENT_USER 는 단순한 링크와는 차이가 있는데
HKCU는 HKEY_LOCAL_MACHINE과 HKEY_USERS 의 사용자 SID 키의 OR 조합이다.
그리고 만약 HKLM와 HCU 양 쪽에 같은 이름의 키가 있을 경우
윈도우는 HKEY_USERS 쪽 키를 먼저 조회한다.
이 조회에서 NAME_NOT_FOUND 에러가 발생하면 HKEY_LOCAL_MACHINE의 키를 조회한다.
[ 출처 : HyacinthWiki _ 윈도우 레지스트리 ]
윈도우 시작 프로그램 레지스트리 키
: 공격자는 악성코드를 감염시킨 후 악성코드가 계속 실행되도록 하기 위해 시작 프로그램에 등록을 시도함
( 시작 프로그램은 시작 프로그램 등록 기능과 윈도우 서비스 등록 모두를 의미 )
: 이 때, 악성코드를 여러 개로 나누어 은닉하는 형태를 가질 수 있음
: 시작 프로그램에 등록된 백신 프로그램을 삭제해 백신 프로그램이 기동되지 않도록 함
: autoruns 프로그램으로 간단하게 확인할 수 있음
" {HKLM|HKCU} \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ {Run|RunOnce|RunServices|..} "
- Run : 매번 시작될 때마다 실행
[ HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run ]
[ HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run ]
- RunOnce : 한 번만 실행
[ HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce ]
[ HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce ]
- RunServices : 서비승 대한 시작 프로그램
[ HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices ]
[ HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce ]
[ HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices ]
[ HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce ]
최근에 실행한 명령어 레지스트리 키
: RunMRU (Most Recently Used)
[ HKCU\{USER}\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU ]