ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 윈도우 포렌식 실전 (1) - 사용자 환경 분석 (윈도우 운영체제의 설치에 관한 정보 분석)
    포렌식 통합/윈도우 디지털 포렌식 완벽 활용서 2024. 7. 25. 01:05

    해당 책에 관한 제대로된 포스팅 시작이다.

    일단 이번 포스팅은 윈도우 운영체제의 설치가 이뤄졌을 경우에 남는 흔적에 대한 정보들을 찾아낸다.
    이번에 공부하면서 레지스트리와 하이브파일, 경로에 관한 정리를 해야겠다.

    0. 들어가기 앞서

    더보기

    앞서 살펴본 사용자명, 운영체제 제품명은 HKLM의 SOFTWARE 하이브 파일에서 찾아낼 수 있었다.
    HKLM은 시스템 전체에 적용되는 하드웨어와 소프트웨어의 설정 데이터를 저장하는데,
    이에 대한 경로는 Windows\System32\config 와 같다고 볼 수 있다.
    실제로 Windows\System32\config 경로에는 HKLM의 하이브 파일인
    SAM, SECURITY, SYSTEM, SOFTWARE 가 존재한다.
    이런식으로 하이브 파일들은 특정 드라이브 경로에 존재하게 되는데,
    이는 레지스트리의 경로에서 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist 의 키 값들과 짝지어져 경로명이 존재한다.

    이를 통해서 비교하여 확인해도 좋다.

    1. 제품명

    더보기

    Windows 운영체제의 제품명에 관한 정보는 레지스트리에 존재한다.
    물론 PC 속성을 통해서 확인할 수도 있지만, 동적 분석이 불가하거나, 가상화로 재현이 불가능한 경우
    디스크 브라우징을 통해서 알아내야하는 경우에 레지스트리를 통해서 알아낸다.

     

    일단 레지스트리 경로명은 HKLM\Software\Microsoft\WindowsNT\CurrentVersion 의 Product Name 키의 값이다.

    그리고 디스크 경로는 C:\Windows\System32\config 의 SOFTWARE 하이브 파일의 Microsoft\WindowsNT\CurrentVersion Product Name 키의 값이다.

    이 파일을 직접 Registry Viewer를 통해서 확인해보면 된다.
    왜인지는 모르겠으나, 파일탐색기로 복사하려면 System에서 사용 중이라서 안되고, 
    Registry Viewer로 직접 확인해보려면 파일이 뜨질 않는다.
    그러므로 FTK Imager로 해당 경로로 찾아가서 Export 해주어서 열어내면 된다.

    2. 등록된 소유자

    더보기

    앞의 방식과 유사하게 나타난다.
    Windows 운영체제를 처음 설치할 때 비정상적인 방법이 아닌 이상,
    해당 컴퓨터의 이름과 사용자명을 필히 기재하게 된다.

    레지스트리 경로명은 HKLM\Software\Microsoft\WindowsNT\CurrentVersion 의 RegisteredOwner 키의 값이다.

    다만 주의해야할 점은
    사용자 계정을 더 추가하더라도 처음의 생성한 사용자 계정 이름을 유지한다.

    디스크 경로는 C:\Windows\System32\config 의 SOFTWARE 하이브 파일의 Microsoft\WindowsNT\CurrentVersion RegisteredOwner 키의 값이다.

    사실상 앞의 운영체제 제품명과 세트로 같이 만나볼 수 있는 레지스트리 값이다.

    사용자명은 문서 파일의 메타정보와 연관성이 있다.
    한글 Office, MS Office 들은 Windows의 사용자가 파일을 생성하거나 수정하거나 여러 행동을 할 때
    해당 파일의 메타데이터에 지은이, 마지막 저장한 사람과 같은 Windows 사용자명을 기록하기 때문이다.

    3. 컴퓨터 이름

    더보기

    컴퓨터 이름이다.
    컴퓨터 이름은 레지스트리 경로와 드라이브 경로가 달라진다.

    레지스트리 경로명은 HKLM\System\ControlSet001\Service\Tcpip\Parameters 의 Hostname 키의 값이다.

    디스크 경로는 C:\Windows\System32\config 의 SYSTEM 하이브 파일의 ControlSet001\Service\Tcpip\Parameters 의 Hostname 키 값이다.

    컴퓨터명은 Windows 설치시의 사용자명이 바뀌지 않는 것과 다르게
    사용자가 컴퓨터명을 변경해준다면 그대로 적용되어서 레지스트리 값도 변경된다.
    만약 현재 컴퓨터명인 K 값을 Y로 바꾸게 된다면, 재부팅 후에 Y로 레지스트리 값이 바뀐다.

    조금 있다가 포스팅을 다 마친 후에 재부팅하여 바뀌었는지 확인해서 글을 마저 써보도록 하겠다.

    현재시각 12시50분 껏다켜보겠따.

     어라 NV Hostname만 바뀌었다.

    전체 장치 이름과 장치 이름이 구분되어있는듯하다.

    문제는 PC 이름 바꾸기가 비활성화 되었다는 것인데,
    이건 뭐 나중에 한번 알아봐야겠다...

    4. 윈도우 운영체제 설치 시각

    더보기

    앞의 제품명과 등록된 소유자와 비슷한 레지스트리 경로명을 사용한다.

    윈도우 운영체제 설치 시각이므로 물론 레지스트리 값은 바뀌지 않는다.

    레지스트리 경로명은 HKLM\Software\Microsoft\WindowsNT\CurrentVersion 의 InstallDate 키의 값이다.

    디스크 경로는 C:\Windows\System32\config 의 SOFTWARE 하이브 파일의 Microsoft\WindowsNT\CurrentVersion 의 InstallDate 키의 값이다.

    InstallDate 키의 값은 Hex 값으로 이루어져있고, 이는 Dcode를 통해서 설치 시각을 알아낼 수 있다.

    키 값은 0x669cca53인데, 해당 레지스트리 값은 Unix Seconds 기준으로 인코딩 되어있다.
    기준은 REG_DWORD 빅엔디안이다.
    시각은 2024-07-21 17:44:03 UTC +09:00 기준

    해당 레지스트리 값은 윈도우 업데이트가 대규모로 이뤄지는 경우에 해당 시각으로 변경되는 일이 발생할 수도 있다.

    그렇게되면 변경되기 이전의 기존의 설치된 시각은 

    HKLM\SYSTEM\Setup\Source OS 에 레지스트리 키에 기록된다.
    최근에 컴퓨터 포맷하고 Windows 새로 설치해서 이건 기록 확인이 안된다...
    레지스트리 경로가 나오지도 않았다.

    5. 볼륨 포맷 시각

    더보기

    대략적으로 Windows 파일 시스템은 NTFS와 FAT 2가지로 사용할 수 있다.
    하지만 대부분의 경우는 NTFS로 설정되어 있고,
    Windows OS가 설치된 볼륨은 NTFS를 사용한다.
    FAT32는 USB나 저장하기 위해 따로 사용하는 볼륨에 사용할 수 있다.

    그리고 운영체제 설치 시 디스크 포맷 -> 운영체제 설치 순으로 이뤄진다.

    그러면 볼륨 포맷 시각은 어떻게 확인할 수 있을까?

    디스크 포맷시에 파일시스템을 선별하고, 운영체제를 설치하게된다.
    그러므로 파일시스템에서 사용하는 FAT 파일이나, MFT 파일이 우선적으로 생성되고(MAC TIME이 기록된다.)
    이후에 운영체제가 설치된다.

    해당 포스팅은 NTFS 파일시스템을 기준으로 설명하겠다.

    NTFS는 MFT 파일을 만들어내므로, MFT의 생성시각을 통해서 운영체제 설치 시각을 추론할 수 있다.

    $MFT 파일의 생성시각은 2024-07-21 8:38:01 이다.
    현재 FTK Imager는 UTC 00:00 기준이므로, 한국시각으로 바꾸면

    2024-07-21 17:38:01 UTC +09:00 기준으로 앞에서 운영체제 설치 시각 2024-07-21 17:44:03 UTC +09:00 기준과 아주 긴밀하게 붙어있다.

    6. 마지막 종료 일시

    더보기

    마지막 종료 일시는 Windows를 종료한 시점을 말한다.

     

    레지스트리 경로명은 HKLM\System\ControlSet001\Control\Windows 의 Shutdown 키 값이다.
    이 레지스트리 값은 이전에 비트낭님 문제를 풀 때 내가 스스로 찾아내어 풀어내본적이 있다.
    https://wintersnowaaa.tistory.com/28

     

    디지털포렌식 2급 실기 (2022 모의 문제 풀이 - 1, 2-1번 문제) [FTK Imager]

    일단 시나리오부터 봐보자.제품 설계도면이 유출되었다.사내에서 공용으로 쓰는 인터넷망과 연결된 PC로 유출됨.그 중 2023년 상반기 제품 도면 파일이 유출일단 찾아낸 내용은1. 이메일을 통해

    wintersnowaaa.tistory.com

    2-1-4번 문제이다.

    디스크 경로는 C:\Windows\System32\config 의 SYSTEM 하이브 파일의 ControlSet001\Control\Windows 의 Shutdown 키 값이다.

    Dcode값으로 디코딩해보자.

    키 값은 0x7efaf176adddda01 인데, 해당 레지스트리 값은 Windows Filetime 기준으로 인코딩 되어있다.
    기준은 REG_BINARY 리틀엔디안이다.
    시각은 2024-07-24 18:40:05 UTC +09:00 기준이다.

    내가 아까 6시40분에 컴퓨터를 껐나...?

    6시41분에 로그인한 흔적이 있는 것을 보아하니

    이때 껏다켰나보다.

    이 레지스트리 값에 대해서 주의해야할 점은 비정상적인 방법으로 종료된 시점은 기록이 되지 않는다는 것이다.
    전원을 강제로 꺼버린다던가하는 상황이다.

    7. 마지막 로그아웃 일시

    더보기

    6번 마지막 종료 시점은 Windows가 종료된 시점이지만,

    마지막 로그아웃 일시는 사용자의 로그아웃된 시점이다.

    하지만 레지스트리를 통해서 알아내는 것으로는 마지막 로그아웃 일시를 정확하게 알 수는 없다.
    왜냐하면 책에서 나온 레지스트리 키 이름은 LastLoggedOnSAMUser 으로 마지막으로 로그온한 사용자의 데이터를 기록한 레지스트리를 뜻하기 때문이다.

    LastLoggedOnSAMUser 와 NTUSER.DAT를 동시에 사용해서 비교하여 추론한다.

    일단 LastLoggedOnSAMUser의 레지스트리 경로명은 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI 이다.

    LastLoggedOnUserSID 의 값이 R이고, 
    마지막 수정 시각이 2024-07-24 20:20:02 UTC +09:00 기준 이다.

    NTUSER.DAT는 C:\User에 위치해있다.

    마지막 수정 시각은 2024-07-24 18:40:03 UTC +09:00 기준이다.

    이런식으로 NTUSER.DAT가 더 앞서있고, 뒤에 LastLoggedOnSAMUser이 있다.
    그리고 6시 40분 3초가 수정시각인 NTUSER.DAT는 마지막 로그아웃 시점이라고 어느정도 추론이 가능하다.

    왜냐하면 앞선 내용에서 마지막 Windows 종료시점이 6시 40분 5초였기 때문이다.
    그리고 레지스트리 값이 더 나중에 수정된 이유는 내가 해당 사용자로 현재 사용 중이므로 메타데이터에 수정이 이뤄졌기 때문이라고 추측할 수 있다.

    이런 경우에는 마지막 로그아웃 일시를 이전에 NTUSER.DAT로 봄이 적절하고,
    마지막 로그온 일시를 LastLoggedOnSAMUser로 보는 것이 적절하다.

     

Designed by Tistory.