마스터포유(Master4U)
Monday, 17 of January
 

제목: 리눅스 ext3 파일시스템에서의 파일복구 (debugfs, sleuthkit, foremost)
분류: 리눅스
이름: 관리자 * http://www.master4u.net


등록일: 2017-01-27 17:52
조회수: 3444
 
리눅스 ext3 파일시스템에서의 파일복구 (debugfs, sleuthkit, foremost)

http://livemedia-soft.com/4589

“리눅스 ext3 파일시스템에서 삭제된 파일은 복구 할 수 없다.” 라고
알고 계신 분들도 있지만 자료를 찾아보니 복구 가능하군요.

ext2 파일시스템은 간단하게 debugfs(ext2/ext3 file system debugger)툴로 복구할수 있었으나,
예) debugfs: dump /home/invain/linux-2.6.20.tar.gz

ext3 파일시스템에서는 Journaling Transaction Filesystem 구조로 인해
IBM에서 만든 sleuthkit 도구를 활용하여 블록정보를 얻어 계산하여 foremost 라는 툴로 복구 가능합니다.

먼저 필요한 유틸리티를 yum(YellowDog Update Manager; 윰이라 부릅니다.)으로 설치합니다.
root# yum install foremost

sleuthkit 은 yum을 통한 설치가 지원되지 않으므로, 아래와 같이 소스코드를 직접 컴파일하여 설치합니다.
http://www.sleuthkit.org/sleuthkit/desc.php

root# wget http://jaist.dl.sourceforge.net/sourceforge/sleuthkit/sleuthkit-3.0.1.tar.gz
root# tar xvfz sleuthkit-3.0.1.tar.gz
root# cd sleuthkit-3.0.1
root# ./configure --prefix=/usr ; make ; make install


복구하기

먼저 지워진 파일의 파티션 확인후
1) debugfs 툴로 복구할 파일의 블록정보 얻기
root# debugfs /dev/sdb2
debugfs: cd /home/user/ (지워진 파일의 경로로 이동)
debugfs: ls -d (지워진 파일의 목록출력)
5113273 (12) . 5079050 (4084) .. 2050 (508)
5113275 (28) 032612_0759_22.png 5113276 (28) 032612_0759_1.png
5113277 (28) 032612_0759_10.png 5113278 (28) 033012_0538_31.jpg
5113279 (36) 040312_0631_iDESKCMS64.png
5113398 (12) 2012
0 (28) 033012_0538_19.jpg 5113407 (28) 032612_0759_47.png
5113408 (36) 040312_0631_iDESKCMS62.png 5113409 (28) 033012_0538_49.jpg
5113410 (36) 040312_0631_iDESKCMS10.png 5113411 (28) 032612_0759_61.png
0 (36) 040312_0631_iDESKCMS8.png
5113413 (36) 040312_0631_iDESKCMS19.png 0 (28) 032612_0759_54.png
0 (36) 040312_0631_iDESKCMS42.png 0 (68) 032612_0759_66.png
0 (964) PIC780.png 1900545 (944) mobile-c.png
5113301 (28) 032612_0759_58.png 5113326 (92) 040312_0631_iDESKCMS25.png
5113286 (28) 032612_0759_31.png 5113384 (28) 032612_0759_5.png
5111959 (232) mobile-c100-100×150.gif 5113382 (80) 033012_0538_40.jpg
5113290 (52) 032612_0759_8.png
..이하 목록 생략
*저의 경우 파일번호가 5113398 인 2012 라는 폴더를 통채로 복구할거임.


2) imap 명령으로 BG 구하기 (block group; 파일 5113398의 블록그룹)
debugfs: imap 5113398
Inode 5113398 is part of block group 156
located at block 8323112, offset 0×0280
*파일번호 5113398의 블록그룹은 156


3) stats 명령으로 BPG 구하기 (Blocks per group; 그룹당 해당하는 블록넘버)
debugfs: stats
Filesystem volume name: /
Last mounted on:
Filesystem UUID: 9789df92-6ede-47f3-8a81-38dad297edc5
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 32768
Inode blocks per group: 1024
Filesystem created: Mon May 7 20:56:22 2012
Last mount time: Tue Jul 3 09:25:01 2012
Last write time: Tue Jul 3 09:25:01 2012
–More–
*그룹당 블록넘버는 32768



4) 지워진 파일의 블록범위 계산하기(범의를 계산해야 하는 이유는 아래의 참고자료 설명)
BG = 156
BPG = 32768

공식
(BG 곱하기 BPG) ~ ( (BG + 1) 곱하기 BPG -1)
대입하여 아래처럼 계산
156 x 32768 ~ 157 x 32767

계산된 블록범위 결과
5111808 ~ 5144419


5) 계산된 블록범위를 sleuthkit 으로 ‘block.dat’ 이름으로 덤프뜨기
root# blkls /dev/sda2 5111808-5144419 block.dat


6) foremost 툴로 복구시도
root# foremost -dv -t png -o ./ -i ../block.dat (반드시 빈 디렉토리에서 덤프파일 경로확인)
*주의! foremost 부주의한 사용시 파일시스템이 손상될수 있습니다.
root# foremost -dv -t png -o ./ -i ../block.dat
foremost: /usr/local/etc/foremost.conf: No such file or directory
Foremost version 1.5.7 by Jesse Kornblum, Kris Kendall, and Nick Mikus
Audit File
Foremost started at Fri Aug 17 18:03:03 2012
Invocation: foremost -dv -t png -o ./ -i ../block.dat
Output directory: /root/re/test
Configuration file: /usr/local/etc/foremost.conf
Processing: ../block.dat
|——————————————————————
File: ../block.dat
Start: Fri Aug 17 18:03:03 2012
Length: 13 MB (14573568 bytes)
Num Name (bs=512) Size File Offset Comment
0: 00000096.png 1 KB 49152 (983 x 11)
1: 00002064.png 169 B 1056768 (626 x 24)
2: 00002072.png 170 B 1060864 (625 x 24)
3: 00002080.png 13 KB 1064960 (210 x 59)
4: 00002112.png 53 KB 1081344 (IND BLK bs:=4096) (472 x 225)
5: 00002232.png 136 B 1142784 (192 x 39)
6: 00002240.png 81 KB 1146880 (IND BLK bs:=4096) (406 x 240)
7: 00002416.png 134 B 1236992 (123 x 46)
8: 00002424.png 401 B 1241088 (106 x 44)
9: 00002432.png 131 B 1245184 (156 x 18)
10: 00002440.png 151 B 1249280 (700 x 23)
….생략
Finish: Fri Aug 17 18:03:04 2012
81 FILES EXTRACTED
png:= 81
——————————————————————
Foremost finished at Fri Aug 17 18:03:04 2012
* rm -rf 로 지운 2012라는 폴더안의 81개의 .png 이미지 파일 복구됨.

root# ls
audit.txt (복구된 파일목록 로그) png(디렉토리 생김)

root# cd png
root# ls
00000096.png 00002456.png 00004704.png 00005040.png 00007216.png 00008592.png 00008688.png
00002064.png 00002960.png 00004760.png 00005048.png 00007224.png 00008600.png 00009488.png
00002072.png 00002968.png 00004768.png 00005056.png 00007232.png 00008608.png 00009568.png
00002080.png 00002976.png 00004776.png 00005064.png 00007240.png 00008616.png 00009648.png
00002112.png 00003848.png 00004784.png 00005688.png 00007248.png 00008624.png 00009728.png
00002232.png 00004080.png 00004960.png 00006192.png 00007256.png 00008632.png 00025328.png
00002240.png 00004280.png 00004968.png 00006552.png 00007264.png 00008640.png 00027288.png
00002416.png 00004288.png 00005000.png 00006968.png 00007272.png 00008648.png 00028336.png
00002424.png 00004296.png 00005008.png 00006976.png 00007888.png 00008656.png 00028376.png
00002432.png 00004304.png 00005016.png 00006984.png 00007896.png 00008664.png
00002440.png 00004464.png 00005024.png 00006992.png 00008256.png 00008672.png
00002448.png 00004584.png 00005032.png 00007000.png 00008584.png 00008680.png
파일이름이 바뀌었지만 대부분의 파일복구 확인!

*여러 파일들 한꺼번에 복구할때 (파일종류;확장자 마다 offset이 다름.)
root# foremost -dv -t png, jpg, gif, pdf, doc -o ./ -i ../block.dat

       
△ 이전글: 인텔 CPU 취약점(Meltdown & Spectre) 상세분석
▽ 다음글: Linux Kernel 버전 확인
Copyright 1999-2019 Zeroboard / skin by enFree