운영체제 별 파일 시스템 저널 읽기

Posted by : on

Category : forensic   learning


배경

파일 시스템은 각각 저널 시스템을 가지고 있어, 어떤 파일에 어떠한 접근을 했는지 등을 기록합니다.

운영체제별 파일 시스템 저널을 보는 방법에 대해 살펴보겠습니다.

요약

  • 윈도우 : fsutil usn readJournal C: csv
  • 윈도우 트랜젝션 로그 : FTK Imager$LogFile 확인
  • 리눅스 : debugfs -R 'logdump -a' /dev/sda1
  • 리눅스 데이터 저널링 : tune2fs로 설정 필요

문제 상황

데이터베이스 성능 개선중 커널 시스템의 저널링 파일 시스템에 대해 연구하게 되었습니다.

분석 과정

윈도우

USN (기록용 로그)

윈도우 Usn의 경우, fsutil usn을 통해 저널을 확인할 수 있습니다.

$UsnJrnl의 파일을 읽어 파싱하는 타 응용 프로그램과 동일한 데이터를 다루는 것으로 예상됩니다.

fsutil usn입력시 다음처럼 명령어들이 뜨는데, 이 중 사용 가능한 것은 readJournal입니다.

fsutil usn 실행 화면

- `fsutil usn readData`는 파일에 대한 로우 객체를 출력합니다.
- `fsutil usn queryJournal`은 드라이브의 로우 객체를 출력합니다.

fsutil usn readJournal을 칠 경우 fsutil usn readJournal <볼륨 경로 이름> [옵션]과 같은 설명서가 뜨는데, 옵션들은 다음과 같습니다.

  • csv : csv로 출력, 콘솔로 출력되므로 파이프라이닝 필요
  • wait : 해당 명령어를 친 이후에 작성되는 저널을 계속 표시
  • tail : 저널 표시 순서 반전

csv옵션을 통해 저널을 출력하고 나면 다음처럼 파일이 드랍됩니다.

fsutil journal 내용

해당 파일엔 N MB용량의 파일 수정 기록이 나오게 됩니다.

ntfs transaction (수정용 저널)

파일 수정용 저널의 경우 $LogFile에 기록됩니다. 해당 관련 내용은 자세하게 적혀있지 않아 참고 영역을 참조하시면 좋습니다.

관련 분석 툴로 NTFS Log Tracker, Windows Journal Parser, LogFileParser이 있다고 합니다. windows forensic yum_yum tistory을 참조해주세요.

$LogFile을 보기 위해 윈도우에서 기본적으로 제공되는 툴은 아직 찾지 못했으며, FTK Imager 혹은 Autospy를 사용해 파일을 구한 후, NTFS Log Tracker을 사용하겠습니다.

autospy logfile dump

ntfs log tracker

제대로 보이고 있습니다.

리눅스

리눅스의 경우, 원하는 경로가 어디에 마운트 되어있는지 확인 후 저널을 확인할 수 있습니다.

df, lsblk, blkid등의 명령어를 통해, 원하는 경로가 어디에 마운트되어있는지 확인합시다.

lsblk 내용

이후 debugfs /dev/sha2를 통해 드라이브를 연 후 logdump -S 혹은 logdump -O, logdump -a를 통해 저널 목록을 확인할 수 있습니다.

logdump -o 내용

logdump -a 내용

ext4에 대해 제대로 저널 표시되고 있습니다.

이후 logdump -a를 통해 확인된 FS blockblock_dump 1234... 등을 통해 어던 내용이 실제로 적혔는지 확인 가능합니다.

block_dump 내용

이외에도 ext관련 파일 시스템에 대한 여러 명령어가 있어서 man debugfs로 확인해보면 좋을 듯 합니다.

저널링 모드 및 데이터 저널

ext4는 세가지 저널링 모드가 있습니다.

  • journal - 데이터까지 기록되는 저널링 (성능이 느려짐)
  • journal_ordered - 데이터 제외, 메타데이터만 저널링(기본)
  • journal_writeback - writeback모드

어떤 모드가 적용되었는지는 dmesg | grep EXT4입력시 확인 가능하며, 다음과 같은 문구가 포함됩니다.

  • journal - ...with journalled data mode...
  • journal_ordered - ...with ordered data mode...
  • journal_writeback - ??

적용 및 수정은 다음처럼 할 수 있습니다.

tune2fs -O has_journal -o journal_data /dev/sda1

  • has_journal - 저널 사용, ^has_journal시 저널 미사용
  • journal_data - 데이터 저널링 사용, journal_data_orderedjournal_data_writeback 사용 가능, man tune2fs 참조
재부팅 필요

저널 로그에 데이터까지 제대로 기록되는 모습입니다.

작성한 내용은 abcdefttt\nlowpo입니다.
전용 분석 툴이 있지 않을까 싶습니다.

입력한 데이터가 기록된 모습

작성자의 글

  • 윈도우는 보기 편하게 해주는 반면 리눅스는 순정 상태의 저널 그대로를 보여주네요
  • 특정 파일에 대해 수정된 기록을 보려면 프로그래밍적으로 api로 구현하거나 해야 할 듯 합니다.
  • NTFS Log Tracker가 글 작성일로부터 2일 전에 업데이트가 됐네요, 정말 감사한 마음입니다.

참조


About 영원염원영웅
영원염원영웅

공부하는것을 좋아합니다.

Email : xhve00000@gmail.com

Website : http://eveheeero.com

Useful Links