/* * http://sosal.tistory.com/ * made by so_Sal */ 침해 사고가 발생한 시스템에서 증거 확보 및 차후 분석을 위해서 디스크 이미지를 복사하려고 한다. 다음 조건을 만족하도록 dd 를 이용하여 백업을 수행하고 생성된 디스크 이미지 파일의 md5 체크섬을 계산하라. (백업 이미지는 자신의 홈디렉토리에서만 생성 가능하다.) <조건> 1. dd를 사용하여 바이트 단위로 복사 2. 복사 대상 파티션 : /home 3. 생성된 디스크 이미지 파일이름 : victim.data.dd |
해킹사고가 발생하였을시, 현재 컴퓨터 상태를 분석하기 위해 필히 복사를 해야한다.
포렌식 도중에 OS 환경이 바뀔 시, 증거자료로 사용할 수 없게되기 때문이다.
그럼 디스크 이미지를 복사하는 방법은? : 'dd 명령어'
문제와 직접적인 관련은 없지만, 일반적으로 이미지를 복사하기 전에
리눅스가 설치된 파티션의 시작 실린더 번호와 끝 실린더 번호를 기록해야한다. 'fdisk 명령어'
[root@sosal tmp]# fdisk
Usage: fdisk [-l] [-b SSZ] [-u] device
E.g.: fdisk /dev/hda (for the first IDE disk)
or: fdisk /dev/sdc (for the third SCSI disk)
or: fdisk /dev/eda (for the first PS/2 ESDI drive)
or: fdisk /dev/rd/c0d0 or: fdisk /dev/ida/c0d0 (for RAID devices)
fdisk -l /dev/hda > /tmp/partition-info.txt
// man page
-v 버전 정보를 보여주고 마친다.
-l 현재 시스템의 파티션 테이블을 나열하고 마친다. 계산되는 장 치 는
다 음과 같다. /dev/hda, /dev/hdb, /dev/sda, /dev/sdb, /dev/sdc,
/dev/sdd, /dev/sde, /dev/sdf, /dev/sdg, /dev/sdh
-s파티션
도스파티션이 아니면(가령, 파티션 ID가 10보다 크면), 그 파티션 의
크기가 출력된다. 이 값은 보통 mkfs(8) 풀그림에서 사용된다.
하드이미지의 파티션 정보를 보기
[root@sosal tmp]# fdisk -l /dev/hda
Disk /dev/hda: 40.0 GB, 40060403712 bytes
255 heads, 63 sectors/track, 4870 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 4870 39013852+ 8e Linux LVM
파티션의 크기 출력 ( -l 옵션에서도 다 확인이 가능한 내용)
[root@sosal tmp]# fdisk -s /dev/hda2
39013852
이렇게, 파티션정보를 확인했으며, dd 명령어를 이용하여, 하드디스크를 이미지로 복사해보자.
dd 명령어 옵션
// man page
if=file : 지정한 파일로부터 읽는다.
of=file : if='file' 에서 지정한 파일로부터 불러들인다.
ibs=size : 지정한 사이즈만큼 읽는다.
obs=size : 지정한 사이즈만큼 쓴다.
bs=size : 지정한 사이즈만큼 읽고 쓴다.
count=n : 입력블록의 ibs크기만큼 복사한다.
seek=blocks : 출력 시작에서 blocks 단위 만큼 ibs 크기를 건너띈다.
.. 이하 옵션에 대해서는 man 페이지 참조
하드디스크를 복사한다는 가정하에, df 명령어를 이용하여 한번더 하드디스크 디바이스를 확인해볼 수 있다.
[root@sosal tmp]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol00 36248264 5871268 28505944 18% /
/dev/hda1 101086 35241 60626 37% /boot
tmpfs 387516 0 387516 0% /dev/shm
dd if=/dev/hda1 of=/tmp/backup.image
: if=/dev/hda1 // hda1 로부터 읽어와서
: of=/tmp/backup.image // /tmp/backup.image라는 파일로 이미지 저장
[root@igrus tmp]# file ./backup.image
./backup.image: Linux rev 1.0 ext3 filesystem data (needs journal recovery)
그럼 이미지를 디바이스로 복구하기 위해선
dd if=/tmp/backup.image of=/dev/hda1
이렇게 거꾸로 써주면 된다.
위에서 작성한 파티션 정보를 'fdisk -l /dev/hda > /tmp/partition-info.txt'
이용하여, fdisk를 이용하여 똑같이 만들어줘야만 한다..
그럼 문제를 풀어보자.
df 명령어를 통해, 우리가 이미지를 복사하고자 하는 위치의 디스크 정보를 얻자.
우리가 복사하고자하는 곳은 /home 이므로,
if=/dev/dsk/c1t5d0s3 으로부터 파일을 읽어야 하며,
바이트단위로 복사하여야 하기 때문에 bs=1,
victim.data.dd 라는 이름으로 저장하라고 했기에,
of=./victim.data.dd 옵션을 준다.
dd bs=1 if=/dev/dsk/c1t1d0s6 of=./victim.data.dd 를 입력한다.
음... 한참 걸린다 ㅠ
'Major Study. > System hacking' 카테고리의 다른 글
시스템 보안 12. lp취약점 패치 (0) | 2011.01.19 |
---|---|
SMP2010 binary hacking6 풀이 (0) | 2010.11.24 |
디지털 포렌식 - 공개도구를 이용한 분석 (1) | 2010.11.23 |
시스템 보안 11.홈 디렉토리에 불필요한 파일 검출 문제 (0) | 2010.11.23 |
시스템 보안 10.패스워드 설정 문제 (5) | 2010.11.22 |