ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Windows 포렌식 개요 & Registry 개요
    Digital Forensics/inflearn 2023. 10. 11. 11:59

    개념 정리

    Windows Artifacts

     

    아티팩트 : 컴퓨터가 자동으로 생성해주는 개체들 중에서 특정한 format을 가진 것들

     

    • windows가 가지고 있는 특유의 기능들과 그 기능을 구현하는데 필요한 요소
    • windows의 사용자가 수행하는 활동에 대한 정보를 보유하고 있는 개체

     

    • 생성증거 : 프로세스, 시스템에서 자동으로 생성한 데이터(windows artifacts는 여기에 해당)
    • 보관증거 : 사람이 기록하여 작성한 데이터

     

     

    Windows의 수많은 Artifacts 중 일부

    • 레지스트리
    • $MFT, $Logfile, $UsnJrnl
    • LNK
    • JumpList
    • Recycle Bin(휴지통)
    • Prefetch & Cache(s)
    • Timeline
    • VSS
    • 웹브라우저 아티팩트
    • EventLogs

     

     

    Windows Artifacts를 공부할 때 가장 중요한 점

     

    1. 사용자의 행위에 따라 어디에 어떤 정보가 저장될까?
    2. 컴퓨터는 대체 어떻게 동작하는 걸까?

    → 사용자는 컴퓨터로 무슨 일을 했을까?(포렌식으로 해결 가능)

     

     

     

    Registry

     

    윈도우 운영체제와 응용 프로그램 운영에 필요한 정보를 담고 있는 계층형 데이터베이스

    • 운영체제 및 응용 프로그램의 설정 정보, 서비스의 중요 데이터 등 기록
    • 부팅 과정부터 로그인, 서비스 실행, 응용프로그램 실행, 사용자 행위 등 모든 활동에 관여

    윈도우 시스템의 모든 정보가 담겨 있음

    • 윈도우 시스템 분석의 필수 요소

     

     

    포렌식적으로 의미가 있는 Registry 몇가지

     

    • 시스템 표준 시간(TimeZone)
    • 시스템 정보(Systeminfo)
    • 사용자 계정 정보
    • 환경 변수 정보
    • 자동 실행 프로그램
    • 응용프로그램 실행 흔적
    • USB 연결 흔적
    • 접근한 폴더 정보

     

     

    Registry 조회

     

    regedit(레지스트리 편집기(윈도우 기본 프로그램)) 이용

    • 윈도우+R 누르고 regedit 치고 열기 또는 윈도우+S 누르고 레지스트리 편집기 관리자 권한 실행

     

    레지스트리 조회 및 편집 가능

    • regedit 열면 5개의 키가 나옴

     

     

    Registry 구조

     

    * key는 계층형 구조

     

     

     

    * 가장 많이 사용되는 것들 : HKCU, HKLM

     

    루트키 약어 설명
    HKEY_CLASSES_ROOT HKCR 파일 확장자 연결 정보, COM 객체 등록 정보
    HKEY_CURRENT_USER HKCU 현재 시스템에 로그인된 사용자의 프로파일 정보
    HKEY_LOCAL_MACHINE HKLM 시스템의 하드웨어, 소프트웨어 설정 및 기타 환경 정보
    HKEY_USERS HKU 시스템의 모든 사용자와 그룹에 관한 프로파일 정보
    HKEY_CURRENT_CONFIG HKCC 시스템이 시작할 때 사용되는 하드웨어 프로파일 정보

     

     

     

    실습 과정

    Windows Registry 동작 원리

     

    Registry - Timezone

    경로 : HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation

    • Bias를 통해 현재 컴퓨터의 timezone을 알 수 있다
    • 현재 컴퓨터의 설정은 UTC+9

     

     

    Registry - Systeminfo

    경로 : HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion

    • 현재 윈도우 버전, 설치 시간, ProductId 등 시스템과 관련된 정보들

     

    구글에 dcode download 5.5 미리 다운로드하기

     

     

     

    Registry - Autoruns(자동실행 프로그램)

    경로

    • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
    • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
    • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
    • HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
    • HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
    • HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx

     

     

    Registry - User Account

    경로 : HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\

    • S-1-5-18 : systemprofile
    • S-1-5-19 : LocalService
    • S-1-5-20 : NetworkService
    • S-1-5-21 : 사용자가 만든 계정(사용자의 SID라고도 부름, 맨 끝이 1000이상은 일반적인 user 권한, 500은 administrator)

     

    사용자의 최종 로그인 시간 예시(S-1-15-21 클릭)

    • LocalProfileLoadTimeHigh = 0x01d84236
    • LocalProfileLoadTimeLow = 0x5f0dff92

     

    → high값이랑 low값 합치면 0x01d842365f0dff92, 이 값을 dcode 도구에 복붙해서 시간 정보 확인 가능(format부분은 Hexadecimal(Big-Endian)으로 되어있는지 확인)

     

     

     

    Registry - Environment Variables

    시스템/사용자 환경변수 확인

     

    경로

    • 사용자 환경변수
    • HKU\{SID}\Environment

     

    경로

    • 시스템 환경변수
    • HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Envirionment

     

     

    Registry - Executable

    응용프로그램(exe) 실행에 따른 흔적

    • UserAssist : 최근에 실행한 프로그램 목록, 마지막 실행시간, 실행횟수
    • OpenSavePidIMRU : 열기 혹은 저장 기능으로 사용된 파일
    • LastVisitedPidIMRU : 열기 혹은 저장 기능을 사용한 응용 프로그램

     

    UserAssist : 최근에 실행한 프로그램 목록, 마지막 실행 시간, 실행 횟수

    경로 : HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist

    • {CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}\count : 실행파일 실행 기록
    • {F4E57C4B-2036-45F0-A9AB-443BCFE33D9F}\count : 바로가기 실행 기록

     

    OpenSavePidIMRU : 열기 혹은 저장 기능으로 사용된 파일

    경로 : HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSavePidIMRU

     

    LastVisitedPidIMRU : 열기 혹은 저장 기능을 사용한 응용 프로그램

    경로 :  HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedPidIMRU

     

     

     

    Registry - USB Connection

    USB 등 외부 저장매체 연결 흔적을 추적 가능

    • USB 제품명, 시리얼 번호, 최초 연결 시각, 마지막 연결 시각

     

    경로

    • 모든 USB : HKLM\SYSTEM\ControlSet001\Enum\USB
    • USB 저장장치 : HKLM\SYSTEM\ControlSet001\Enum\USB\USBSTOR
    • 마운트 디바이스 : HKLM\SYSTEM\MountedDevices

     

    시스템에 연결되었던 모든 USB 장치의 정보가 기록됨

    경로 : HKLM\SYSTEM\ControlSet001\Enum\USB

     

    VID와 PID 검색하면 USB 종류 알 수 있음

     

    시스템에 연결되었던 모든 USB 저장장치의 정보가 기록됨

    경로 : HKLM\SYSTEM\ControlSet001\Enum\USBSTOR

     

    시스템에 마운트되었던 장치의 리스트를 나타냄

    경로 : HKLM\SYSTEM\MountedDevices

     

     

     

    Registry - Shellbags

    사용자가 접근한 폴더 정보를 기록

    • 삭제된 폴더의 정보도 찾을 수 있음

     

    BagMRU : 폴더의 구조를 계층적 구조로 나타냄(Bag : 윈도우 사이즈, 위치 등 사용자의 환경설정을 저장)

     

    경로

    • HKCU\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags
    • HKCU\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\Shell\BagMRU
    • HKCU\SOFTWARE\Microsoft\Windows\Shell\Bags
    • HKCU\SOFTWARE\Microsoft\Windows\Shell\BagMRU

     

     

     

    Windows Registry 실습

     

    Registry Practice

     

    레지스트리 파일 추출
    FTK Imager 이용

     

    • [root]\Windows\Users\{USERNAME}\NTUSER.DAT
    • [root]\Windows\System32\config\DEFAULT
    • [root]\Windows\System32\config\SAM
    • [root]\Windows\System32\config\SECURITY
    • [root]\Windows\System32\config\SOFTWARE
    • [root]\Windows\System32\config\SYSTEM

     

    → 반드시 LOG1, LOG2 파일을 포함해서 추출

     

     

    바탕화면에 registry 폴더 생성 → 그 안에 폴더 raw랑 clean이랑 result 만들기 → FTK Imager 관리자 권한 실행 → File → Add Evidence Item → Logical Drive → 기본 경로 C 선택하고 finish → 위에 있는 경로들 탐색

     

    1번째 경로 : (LOG1, LOG2도 함께 수집) 파일들 선택해놓고 우클릭 export files → 바탕화면 아래 registry 아래 raw로 확인 → 추출 완료

     

    2번째~6번째 경로 : 각 이름의 파일들과 각각의 모든 LOG1, LOG2 같이 선택하고 우클릭 export files → 바탕화면 아래 registry 아래 raw로 가져오기

     

     

     

    분석 도구 다운로드

    REGA : http://forensic.korea.ac.kr/tools.html
    RLA : https://ericzimmerman.github.io/#!index.md
    Regripper : https://github.com/keydet89/RegRipper3.0

     

     

    REGA 실습

     

    고려대에서 만든 도구, 정보가 정확하지 않을 수 있고 많이 볼 수는 없지만, 쉽게 볼 수 있다는 장점, 심층분석하기 전에 이걸로 먼저 돌려봄

     

    REGA 다운로드 → 바탕화면 registry 폴더에 압축 풀기 → 폴더 열어서 rega.exe 실행(관리자 권한으로 실행됨) → 파일 → 레지스트리 파일 수집 → 현재 시스템 레지스트리 수집 → rega 폴더 아래에 raw 새 폴더 만들기 확인 → 자동 수집됨  → 나가서 확인하면 다 수집되어있지만, 로그파일 1,2가 안 남아서 정확하지 않을 수 있음, 확보 불가 → 다시 실행 → 파일 → 레지스트리 분석 → 표준시간대 설정 서울 → 레지스트리 분석 창에 사전 정보는 11, 22, 33 등으로 대충 입력 → 레지스트리 파일 입력의 폴더 선택해서 REGA 밑에 raw → 자동으로 다 들어가는거 확인하고 비할당 영역 분석에 체크 → 분석 시작 → 분석 완료 → 우측에 도구 상자 뜬거에서 윈도우 설치 정보, 사용자 계정 정보, 실행 명령(윈도우+R 기록), 검색 키워드 등등 쉽게 볼 수 있음

     

    →  REGA가 raw를 완벽하게 처리하지 못하는거랑 더 깊게 들어갔을 때 지원하지 않는 것들은 아래 RLA와 Regripper로 둘러보기

     

     

     

    RLA 실습

     

    dirty한 raw를 clean으로 바꿔주는 도구

    링크접속 Ctrl+F로 RLA 검색해서 앞에꺼 클릭 다운로드 → 바탕화면 registry 폴더 안에 압축 풀기 → 윈도우 터미널에서 registry 로 cd → ls → .\rla.exe → help나오는거 다 읽어보면 좋은데 그중 example 꼭 읽기 → 파일 탐색기 열어서 registry 안에 raw 들어가서 위에 절대경로 복붙 예시 → .\rla.exe -d "C:\Users\hunjison\Desktop\registry\raw" --out (clean경로 복붙 예시 C:\Users\hunjison\Desktop\registry\clean") → clean 아래에 로그가 다 병합되어져서 생김

     

     

     

    Regripper 실습

     

    좋은데 사용이 어려움

    git hub 링크에서 code의 download zip → 바탕화면 registry 폴더 아래에 압축 풀기 → regripper 생김 → CLI 버전도 있는데 GUI 버전이 해당 파일 내의 rr.exe 클릭 → hive file의 browse → clean안에 있는 파일들 하나씩 다 하기, 이름 기억 → 각각 report file의 browse → registry 아래 result에 기억한 이름 알아볼 수 있게 넣기(예시 NTUSER, SAM, SECURITY, COFTWARE, SYSTEM)  → 완료 후 ...Done 뜬거 하나하나가 각각의 플러그인이라고 불리는 기능들, '~와 관련된 걸 긁어서 넣었다'라는 뜻 → 다 돌아가면 notepad++ 열어서 result를 다 드래그해서 열기(데이터가 너무 많아서 구글에 regripper plugin 검색하면 고려대 위키피디아에서 설명해놓은 플러그인 목록 보고 원하는거 검색해서 사용하기) → 찾기 기능으로 usbstor 넣고 열린 파일에서 모두 찾기 → usb 스토리지라는 모듈, 즉, 플러그인이 돌아간 정보 볼 수 있음, FriendlyName은 usb의 이름, 설치시각, 마지막 꽃힌 시각, 제거 시각 등을 알 수 있음 → 찾기 기능으로 userassist 검색 열린 파일에서 모두 찾기 → 확장자 밑 바로가기 확장자, 앞선 실습에서 rot13 디코딩 했던거를 다 풀어서 보여주고 해석하지 못했던 접근시간 정보 등도 다 보여줌

     

     

     

     

    새로 알게 된 것

    저번주 메모리 포렌식에 이어 이번에는 윈도우 포렌식의 기초를 다질 수 있어서 유익했다. 이번에 배운 것이 윈도우 포렌식의 극히 일부분이라서 앞으로도 강의를 수강하며 최대한 많은 것을 얻어갈 수 있도록 해야겠다. 이론적인 것들을 포함해서 저번 실습 때 사용했던 FTK Imager뿐만 아니라, 새로운 분석 도구인 REGA, RLA, Regripper로 레지스트리 실습을 진행하는 방법을 알게 되었다. 윈도우 포렌식의 첫 강의라 이론 비중이 높았고 크게 어려운 부분없이 재밌게 듣고 실습했다.

     

     

     

     

     

    https://www.inflearn.com/course/%EA%B8%B0%EC%B4%88-%EB%94%94%EC%A7%80%ED%84%B8-%ED%8F%AC%EB%A0%8C%EC%8B%9D

     

    [무료] 기초부터 따라하는 디지털포렌식 - 인프런 | 강의

    기초부터 따라하는 디지털포렌식 강의입니다. 강의를 따라하다보면 "물 흐르듯, 자연스럽게" 실력이 늘어가는 강의를 추구합니다., 초보자 눈높이에 딱 맞춘, 원리를 이해하는 디지털포렌식 입

    www.inflearn.com

     

    본 글은 위의 인프런 강의를 듣고 작성하였습니다.

     

Designed by Tistory.