'레지스트리'에 해당되는 글 1건

  1. [정리] 레지스트리 분석 - 1

[정리] 레지스트리 분석 - 1

레지스트리에는 시스템과 애플리케이션 및 사용자의 환경설정 정보 및 각종 프로파일링 정보가 저장되어 있다. 레지스트리 정보는 hive 파일에 담겨있고, 부팅 시 configuration manager가 이 hive 파일을 읽어들여 메모리 상에서 레지스트리를 구성한다. 때문에 레지스트리 분석은 hive 파일을 통해 수행해야 한다.


[그림 1] 레지스트리 편집기


레지스트리는 [그림 1]의 레지스트리 편집기를 이용해 확인, 분석, 편집이 가능하며 KEY와 VALUE로 구성되어 있다. 레지스트리 Value는 Value name과 Value Data로 이루어진 구조체이며 Value Type은 Value Data의 타입을 나타낸다. 주로 문자열, 바이너리, DWORD 등이 사용된다. 

[그림 2] 루트 키


레지스트리는 운영체제 별로 조금씩 다르지만 대표적으로 [그림 2]의 루트키가 존재한다. 각 루트키와 서브키에 저장되는 정보는 아래와 같다. (주요 서브키만..)


HKEY_CLASSES_ROOT : 파일 확장자 연결정보와 COM 객체 정보 등록

HKEY_CURRENT_USER : 현재 로그인된 사용자의 프로파일 정보 

HKEY_LOCAL_MACHINE : 시스템의 하드웨어, 소프트웨어 설정 및 기타 환경정보

SAM : 계정 정보 및 접속기록 

SECURITY : 시스템 보안 정책 및 권한 정보

SOFTWARE : 시스템에 설치된 모든 Application에 대한 정보

SYSTEM : 시스템과 관련된 모든 설정정보

HARDWARE : 시스템 하드웨어 정보 (휘발성)

HKEY_USERS : 시스템의 모든 사용자와 그룹에 관한 프로파일 정보

HKEY_CURRENT_CONFIG : 하드웨어 프로파일 정보


[그림 3] Master/Derived KEY


이러한 레지스트리는 Master Key와 Derived Key로 구분된다. Master Key는 Hive파일에서 값을 읽어들여 구성되는 레지스트리 키이며 Derived Key는 Master Key로부터 값을 가져와 재구성하는 레지스트리 키이다. 때문에 하드디스크에 저장되어 있는 Hive 파일과는 달리 Derived Key는 메모리 상에서만 존재하게 된다. Hive의 위치는 [그림 4]와 같다.


[그림 4] Hive 위치


Hive 파일이 저장된 Windows\System32\config 경로에는 RegBack 폴더가 존재한다. 이 폴더는 Windows 7 부터 생겨난 RegIdleBackup 스케쥴러에 의해 자동으로 백업된 Hive가 저장되는 폴더이다. RegIdleBackup 스케쥴러 설정 정보는 작업 스케쥴러 - Microsoft - Windows - Registry 에서 확인이 가능하다. 


[그림 5] RegIdleBackup 스케쥴러에 따른 백업


또, 비스타 이후부터 Volume Shadow Copy를 이용해 레지르스트리 복원이 가능하게 되었다. VSS는 파일시스템이 쓰기작업을 수행 중에도 볼륨 백업이 가능할 수 있도록 고안된 프레임워크로서 torn write 문제를 해결 하게 되었다. 다만 VSS는 [그림 6]과 같이 볼륨의 전체를 백업하는 것이 아닌 변경된 부분의 이전 부분만 백업하는 방식을 사용한다.


[그림 6] VSS 백업 개념

 

일반적인 방법으로 추출이 불가능한 Hive 파일을 sleuthkit과 FGET을 이용해 추출하도록 하겠다. 우선 sleuthkit의 fls를 이용해 Hive가 저장된 경로로 이동하여야 하는데 아래 [그림 7]과 [그림 8]의 반복을 통해 Windows\System32\config로 이동한다.


[그림 7] fls 명령


[그림 8] windows ID


[그림 7]의 명령으로 C드라이브의 Windows ID를 확인한 후, 해당 Windows ID를 이용해 또 다시 검색한다. 


[그림 9] Windows ID 검색


[그림 10] findstr


검색된 내용이 많을 시에는 [그림 10]처럼 findstr을 이용하면 수월하게 원하는 내용을 찾을 수 있다. 


[그림 11] SAM 파일 ID


먼 길을 돌아 SAM 파일의 ID를 알아내었고, 이제 icat을 이용해 SAM 파일을 추출해야한다.


[그림 12] icat을 이용한 SAM파일 추출


[그림 13] SAM 파일 추출결과


[그림 13]과 같이 성공적으로 SAM 파일이 추출되었다. FGET을 이용한 방법은 훨씬 간단한데, 단순히 인풋 경로와 아웃풋 경로만을 입력하면 된다. 


[그림 14] FGET usage


[그림 15] FGET을 통한 SAM 추출


[그림 15]와 같이 SUCCESS 문구가 출력되며 SAM 파일이 추출된 것을 확인 할 수 있다.


[그림 16] FGET SAM 파일 추출결과


Hive 파일 분석은 다음 포스팅에..