솔라리스에서는 메모리 덤프를 위해 dumpadm, savecore 와 같은 명령을 제공하고 있으며 코어 덤프 형태로 덤프 이미지를 생성합니다.
1. 덤프 설정
메모리 덤프를하기에 앞서 dumpadm 명령을 통해 현재 덤프와 관련된 설정 확인 및 수정이 가능합니다.
-주요 옵션
옵션 |
|
설명 |
-c |
contents |
덤프할 내용을 설정한다. -kernel : 커널 페이지 -curproc : 커널 페이지 + 최근 실행된 프로세스 페이지 -all : 모든 페이지 |
-d |
device |
덤프에 사용할 장치를 설정한다. |
-n |
no |
savecore 사용을 비활성화 한다. |
-y |
expert |
savecore 사용을 활성화 한다. |
# dumpadm
덤프 컨텐트: 커널페이지
덤프 장치: /dev/dsk/c0d1s1(스왑)
Savecore 디렉토리: /var/crash/unknown
Savecore 사용: 예
Save compressed: 켜기 |
기존적으로 덤프 장치는 스왑 영역이 설정되어있는데 스왑 영역 크기가 작은 경우 모든 메모리 페이지를 덤프하려고 시도하면 아래와 같이 용량 부족 에러가 발생합니다.
# dumpadm -c all dumpadm: 덤프 장치 /dev/dsk/c0d1s1이(가) 너무 작아서 시스템 덤프를 보관할 수 없습니다. 덤프 크기 782004224바이트, 장치 크기 551093760바이트 |
따라서 좀 더 사이즈가 큰 장치로 변경해주어야 하는데 해당 장치는 다음과 같은 조건을 만족해야 합니다.
-해당 장치는 시스템에 의해 사용되고 있지 않아야 합니다. (유휴 장치) -덤프 크기보다 장치 크기가 커야합니다. |
※ 주의 : Backup slice 영역을 덤프 장치로 지정할 경우 boot 영역을 포함한 디스크 영역들을 덮어써 데이터가 파괴되기 때문에 주의가 요구됩니다.
2. 덤프 생성
덤프 설정이 완료되면 savecore 명령을 통해 쉽게 덤프가 가능합니다.
-주요 옵션
옵션 |
|
설명 |
-L |
Live |
Live 시스템을 덤프한다. |
-f |
dumpfile |
vmdump.* 파일의 압축을 해제하여 vmcore.* unix.* 파일을 생성한다. |
# savecore -L /mnt/dump savecore: Saving compressed system crash dump in /mnt/dump/vmdump.0 |
coredump의 분석은 mdb를 이용하여 진행됩니다.
vmdump.* 파일은 unix.*, vmcore.* 두 파일을 압축한 파일이기 때문에 savecore의 -vf 옵션을 이용해 압축을 해제해주어야 mdb에서 정상적으로 인식이 가능합니다.
압축을 해제한 뒤 mdb의 인자로 해당 dump 번호를 입력해주면 됩니다.
# ls bounds vmdump.0 # savecore -vf vmdump.0 savecore: System dump time: Fri Oct 5 23:30:33 2012 savecore: saving system crash dump in /var/crash/unknown/{unix,vmcore}.0 Constructing namelist /var/crash/unknown/unix.0 Constructing corefile /var/crash/unknown/vmcore.0 1:28 100% done: 383887 of 383887 pages saved 7527 (1%) zero pages were not written 1:28 dump decompress is done # ls bounds unix.0 vmcore.0 vmdump.0 # mdb 0 mdb: failed to read panicbuf and panic_reg -- current register set will be unavailable Loading modules: [ unix krtld genunix specfs dtrace uppc pcplusmp cpu.generic ufs sockfs ip hook neti sctp arp usba uhci fcp fctl nca lofs audiosup md mpt cpc random crypto zfs fcip logindmux ptm sppp nfs ipc ] > |
mdb는 수 많은 명령을 제공해주는데 유용하게 사용 가능한 명령은 아래와 같습니다.
명령 | 설명 |
::status | dump 파일의 간략한 정보를 출력해줍니다. |
::netstat | 네트워크 정보를 출력해줍니다. |
::ps | 프로세스 정보를 출력해줍니다. |
::ptree | 프로세스 트리를 출력해줍니다. |
[address]::pmep | 해당 프로세스의 프로세스 맵을 출력해줍니다. |
::fsinfo | 마운트된 파일시스템 정보를 출력해줍니다. |
::dcmds | 사용가능한 dcmd 목록을 출력해줍니다. |
::help [command name] | 명령 사용법을 출력해줍니다. |
'보안 > 포렌식' 카테고리의 다른 글
AIX 메모리 덤프 생성 & 분석 (0) | 2013.01.07 |
---|---|
Volafunx (FreeBSD 메모리 분석툴) 테스트 결과 (0) | 2012.12.28 |
Volatility Linux Profile 생성 (1) | 2012.09.17 |
Windows 메모리 덤프 생성 및 분석 (0) | 2012.08.08 |
Windows 레지스트리 분석 (0) | 2012.07.31 |