휘발성
이것은 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 제공업체에서 실행할 수 있는 명령 변동성입니다.
프로그램:
이름
휘발성 - 고급 메모리 포렌식 프레임워크
개요
휘발성 [option]
휘발성 -f [영상] --프로필=[프로필] [플러그인]
기술
Volatility Framework는 다음을 추출하기 위한 완전히 공개된 도구 모음입니다.
휘발성 메모리(RAM) 샘플의 디지털 아티팩트. 법의학 분석에 유용합니다.
추출 기술은 시스템과 완전히 독립적으로 수행됩니다.
조사되었지만 시스템의 런타임 상태에 대한 전례 없는 가시성을 제공합니다.
Volatility는 MS Windows, Linux 및 MAC OSX의 여러 버전을 지원합니다.
MS 윈도우:
· 32비트 Windows XP 서비스 팩 2 및 3
· 32비트 Windows 2003 Server 서비스 팩 0, 1, 2
· 32비트 Windows Vista 서비스 팩 0, 1, 2
· 32비트 Windows 2008 Server 서비스 팩 1, 2(SP0 없음)
· 32비트 Windows 7 서비스 팩 0, 1
· 32비트 Windows 8, 8.1 및 8.1 업데이트 1
· 32비트 Windows 10(초기 지원)
· 64비트 Windows XP 서비스 팩 1 및 2(SP0 없음)
· 64비트 Windows 2003 Server 서비스 팩 1 및 2(SP0 없음)
· 64비트 Windows Vista 서비스 팩 0, 1, 2
· 64비트 Windows 2008 Server 서비스 팩 1 및 2(SP0 없음)
· 64비트 Windows 2008 R2 서버 서비스 팩 0 및 1
· 64비트 Windows 7 서비스 팩 0 및 1
· 64비트 Windows 8, 8.1 및 8.1 업데이트 1
· 64비트 Windows Server 2012 및 2012 R2
· 64비트 Windows 10(초기 지원)
Linux :
· 32비트 Linux 커널 2.6.11 ~ 4.2.3
· 64비트 Linux 커널 2.6.11 ~ 4.2.3
· OpenSuSE, Ubuntu, Debian, CentOS, Fedora, Mandriva 등
맥 OS X:
· 32비트 10.5.x Leopard(64비트 10.5만 지원되는 Server임)
· 32비트 10.6.x Snow Leopard
· 64비트 10.6.x Snow Leopard
· 32비트 10.7.x Lion
· 64비트 10.7.x Lion
· 64비트 10.8.x Mountain Lion(32비트 버전 없음)
· 64비트 10.9.x Mavericks(32비트 버전 없음)
· 64비트 10.10.x Yosemite(32비트 버전 없음)
· 64비트 10.11.x El Capitan(32비트 버전 없음)
지원되는 메모리 형식은 다음과 같습니다.
· 원시 선형 샘플(dd)
· 최대 절전 모드 파일
· 크래시 덤프 파일
· VirtualBox ELF64 코어 덤프
· VMware 저장 상태 및 스냅샷 파일
· EWF 형식(E01)
· LiME(리눅스 메모리 추출기) 형식
· 마하오 파일 형식
· QEMU 가상 머신 덤프
· 파이어와이어
· HPAK(FDPro)
지원되는 주소 공간(RAM 유형)은 다음과 같습니다.
· AMD64PagedMemory - 표준 AMD 64비트 주소 공간
· ArmAddressSpace - ARM 프로세서용 주소 공간
· FileAddressSpace - 직접 파일 AS입니다.
· HPAKAddressSpace - 이 AS는 HPAK 형식을 지원합니다.
· IA32PagedMemoryPae - 이 클래스는 IA-32 PAE 페이징 주소 공간을 구현합니다.
책임이 있다
· IA32PagedMemory - 표준 IA-32 페이징 주소 공간
· LimeAddressSpace - Lime용 주소 공간
· MachOAddressSpace - atc-ny 메모리를 지원하기 위한 mach-o 파일의 주소 공간
리더
· OSXPmemELF - 이 AS는 VirtualBox ELF64 코어 덤프 형식을 지원합니다.
· QemuCoreDumpElf - 이 AS는 Qemu ELF32 및 ELF64 코어 덤프 형식을 지원합니다.
· VirtualBoxCoreDumpElf64 - 이 AS는 VirtualBox ELF64 코어 덤프 형식을 지원합니다.
· VMWareAddressSpace - 이 AS는 VMSS(VMware 스냅샷) 및 저장된 상태를 지원합니다.
(VMSS) 파일
· VMWareMetaAddressSpace - 이 AS는 VMSN/VMSS와 함께 VMEM 형식을 지원합니다.
메타 데이터
· WindowsCrashDumpSpace32 - 이 AS는 Windows 크래시 덤프 형식을 지원합니다.
· WindowsCrashDumpSpace64BitMap - 이 AS는 Windows BitMap 크래시 덤프를 지원합니다.
체재
· WindowsCrashDumpSpace64 - 이 AS는 Windows 크래시 덤프 형식을 지원합니다.
· WindowsHiberFileSpace32 - Windows용 최대 절전 모드 주소 공간입니다.
최대 절전 모드 파일
테스트를 위한 예제 메모리 이미지가 있습니다.
https://github.com/volatilityfoundation/휘발성/wiki/메모리 샘플.
옵션
-시간, --도움
사용 가능한 모든 옵션과 해당 기본값을 나열합니다. 기본값은 다음에서 설정할 수 있습니다.
구성 파일(/etc/volatilityrc).
--conf-파일=/root/.volatilityrc
사용자 기반 구성 파일.
-NS, -디버그
디버그 변동성.
--plugins=플러그인
추가 플러그인 사용할 디렉토리(콜론으로 구분).
--정보 등록된 모든 개체에 대한 정보를 인쇄합니다.
--cache-directory=/root/.cache/휘발성
캐시 파일이 저장되는 디렉토리입니다.
--은닉처
캐싱을 사용합니다.
--tz=TZ
pytz(설치된 경우) 또는 tzset을 사용하여 타임스탬프 표시를 위한 시간대 설정
-f 파일 이름, --파일이름=파일이름
열 때 사용할 파일 이름 영상.
--프로필=WinXPSP2x86
로드할 프로필의 이름(사용 --정보 지원되는 프로필 목록을 보려면).
-l 위치, --위치=LOCATION
주소 공간을 로드할 URN 위치입니다.
-w, --쓰다
쓰기 지원을 활성화합니다.
--dtb=DTB
DTB 주소.
--shift=쉬프트
Mac KASLR 시프트 주소.
--출력=텍스트
이 형식으로 출력합니다.
--출력 파일=OUTPUT_FILE
이 파일에 출력을 씁니다.
-V, --말 수가 많은
자세한 정보.
-g 산업은행, --kdbg=KDBG
특정 KDBG 가상 주소를 지정하십시오. 64비트 Windows 8 이상의 경우
KdCopyDataBlock의 주소.
--힘
의심되는 프로필을 강제로 사용합니다.
-k KPC, --kpcr=KPCR
특정 KPCR 주소를 지정하십시오.
--쿠키=쿠키
nt!ObHeaderCookie의 주소를 지정하십시오(Windows 10에만 유효).
PLUGINS 및 프로필
지원되는 플러그인 '$ 명령을 사용하면 명령 및 프로필을 볼 수 있습니다.
휘발성 --정보'. Linux 및 MAC OSX 허용 플러그인에는 'linux_'가 있습니다.
및 'mac_' 접두사. 이러한 접두사가 없는 플러그인은 MS Windows용으로 설계되었습니다.
프로필은 운영 체제를 이해하기 위해 Volatility에서 사용하는 맵입니다. 허용된 MS
Windows 프로필은 Volatility에서 제공합니다.
Linux 및 MAC OSX용 프로필을 직접 생성해야 합니다. 이를 위해 데비안 시스템에서 다음을 읽으십시오.
에서 제공하는 README.Debian 파일 휘발성-도구 패키지.
MS Windows에서 OS 유형을 확인하기 위해 다음을 사용할 수 있습니다.
$ 변동성 -f 이미지 정보
or
$ 변동성 -f kdbgscan
환경 변수
GNU/Linux 또는 OS X 시스템에서 다음 변수를 설정할 수 있습니다.
· VOLATILITY_PROFILE - 기본값으로 사용할 프로필을 지정합니다.
불필요한 '--프로필' option.
· VOLATILITY_LOCATION - 경로를 지정합니다. 영상. 따라서 변동성 명령
'를 통해 파일 이름이 필요하지 않습니다.-f' option.
· VOLATILITY_KDBG - KDBG 주소를 지정합니다. 자세한 내용은 추가 절차를 참조하십시오.
세부.
기타 플러그인 플래그는 이러한 방식으로 활용될 수 있습니다(예: KPCR, DTB 또는 PLUGINS). 언제
변수를 내보내려면 플래그 이름 앞에 VOLATILITY_ 접두사를 붙이면 됩니다(예:
VOLATILITY_KPCR). 그렇지 않으면 플래그 이름을 추가할 때 플래그 이름이 동일하게 유지됩니다.
구성 파일.
이름에 공백 이상이 있는 경로가 있는 경우 공백을 %20으로 바꿔야 합니다.
대신(예: LOCATION=file:///tmp/my%20image.img).
예:
$ 내보내기 VOLATILITY_PROFILE=Win7SP0x86
$ 내보내기 VOLATILITY_LOCATION=file:///tmp/myimage.img
$ 내보내기 VOLATILITY_KDBG=0x82944c28
구성 파일
구성 파일은 일반적으로 현재 디렉토리에 있는 'volatilityrc' 또는
'~/.휘발성rc' 사용자의 홈 디렉토리 또는 사용자가 지정한 경로에서 --conf-
파일 option. 파일 내용의 예는 다음과 같습니다.
[태만]
프로필=Win7SP0x86
위치=file:///tmp/myimage.img
KDBG=0x82944c28
기타 플러그인 플래그는 이러한 방식으로 활용될 수 있습니다(예: KPCR, DTB 또는 PLUGINS). 언제
변수를 내보내려면 플래그 이름 앞에 VOLATILITY_ 접두사를 붙이면 됩니다(예:
VOLATILITY_KPCR). 그렇지 않으면 플래그 이름을 추가할 때 플래그 이름이 동일하게 유지됩니다.
구성 파일.
이름에 공백 이상이 있는 경로가 있는 경우 공백을 %20으로 바꿔야 합니다.
대신(예: LOCATION=file:///tmp/my%20image.img).
EXTRA 절차
시간대 설정
메모리에서 추출된 타임스탬프는 시스템 로컬 시간 또는 세계 표준시일 수 있습니다.
좌표(UTC). UTC에 있는 경우 Volatility는 한 번에 표시하도록 지시할 수 있습니다.
분석가가 선택한 영역. 시간대를 선택하려면 표준 시간대 중 하나를 사용하세요.
이름(예: America/Sao_Paulo, Europe/London, US/Eastern 또는 대부분의 Olson 시간대)
--tz=TIMEZONE 플래그.
Volatility는 설치된 경우 pytz를 사용하려고 시도하고 그렇지 않은 경우 tzset을 사용합니다.
시간대를 지정해도 시스템 현지 시간이 표시되는 방식에는 영향을 미치지 않습니다. 만약에
UTC 기반으로 알고 있는 시간을 확인했다면 문제 추적기에 문제로 제출하십시오.
기본적으로 _EPROCESS CreateTime 및 ExitTime 타임스탬프는 UTC입니다.
DTB 설정
DTB(Directory Table Base)는 Volatility가 가상 주소를 물리적 주소로 변환하는 데 사용하는 것입니다.
구애. 기본적으로 커널 DTB가 사용됩니다(유휴/시스템 프로세스에서). 사용하고 싶다면
데이터에 액세스할 때 다른 프로세스의 DTB에서 --dtb=ADDRESS에 주소를 제공합니다.
KDBG 주소 설정(Windows 전용 option)
하드 코딩된 서명 "KDBG" 및
일련의 건전성 검사. 이러한 서명은 운영 체제가 작동하는 데 중요하지 않습니다.
따라서 맬웨어는 에 의존하는 도구를 제거하기 위해 덮어쓸 수 있습니다.
서명. 또한 경우에 따라 하나 이상의 '_KDDEBUGGER_DATA64'(
예를 들어 주요 OS 업데이트를 적용하고 재부팅하지 않는 경우), 이는 혼란을 야기하고
다른 문제 중에서 잘못된 프로세스 및 모듈 목록. 주소를 알면
'_KDDEBUGGER_DATA64'를 추가하면 --kdbg=ADDRESS로 지정할 수 있으며 이는 자동화된
스캔. 자세한 내용은 kdbgscan 플러그인을 참조하세요.
KPCR 주소 설정(Windows 전용 option)
시스템의 각 CPU에 대해 하나의 KPCR(Kernel Processor Control Region)이 있습니다. 약간의 변동성
플러그인은 프로세서별 정보를 표시합니다. 따라서 특정 CPU에 대한 데이터를 표시하려면
예를 들어 CPU 3 대신 CPU 1의 경우 --kpcr=ADDRESS를 사용하여 해당 CPU의 KPCR 주소를 전달할 수 있습니다.
모든 CPU에 대한 KPCR을 찾으려면 kpcrscan 플러그인을 참조하십시오. 또한 Volatility 2.2부터 시작하여,
idt 및 gdt와 같은 많은 플러그인은 KPCR 목록을 자동으로 반복합니다.
쓰기 지원 활성화
Volatility의 쓰기 지원은 주의해서 사용해야 합니다. 따라서 실제로 활성화하려면 다음을 수행해야 합니다.
명령줄에 --write를 입력할 뿐만 아니라 다음과 같은 질문에 대한 응답으로 '비밀번호'를 입력해야 합니다.
라는 메시지가 표시됩니다. 대부분의 경우 쓰기 지원을 사용하고 싶지 않을 것입니다.
메모리 덤프의 데이터 손상 또는 수정. 그러나 이것을 만드는 특별한 경우가 있습니다.
정말 흥미로운 기능. 예를 들어, 다음을 통해 특정 맬웨어의 라이브 시스템을 정리할 수 있습니다.
파이어와이어를 통해 RAM에 쓰기
winlogon DLL.
추가 지정 플러그인 디렉토리
Volatility의 플러그인 아키텍처는 한 번에 여러 디렉토리에서 플러그인 파일을 로드할 수 있습니다. 에서
변동성 소스 코드, 대부분의 플러그인은 변동성/플러그인에 있습니다. 그러나 다른
제XNUMX자 개발자의 기여를 위해 예약된 디렉토리(휘발성/기여도), 또는
단순히 기본적으로 활성화되지 않은 약하게 지원되는 플러그인. 이 플러그인에 액세스하려면
명령줄에 --plugins=contrib/plugins를 입력합니다. 또한 별도의 디렉토리를 생성할 수 있습니다.
코어에서 파일을 추가/제거/수정할 필요 없이 관리할 수 있는 자체 플러그인
변동성 디렉토리.
배송 시 요청 사항:
* Debian 시스템에서 contrib/plugins 디렉토리는 /usr/share/volatility/contrib/plugins에 있습니다.
* __init__.py 파일(비어 있을 수 있음)이 있는 한 하위 디렉토리도 탐색됩니다.
그들 안에.
* --plugins에 대한 매개변수는 다음과 같은 플러그인을 포함하는 zip 파일일 수도 있습니다.
--plugins=myplugins.zip으로. 플러그인이 로드되는 방식으로 인해 외부 플러그인 디렉토리
또는 zip 파일은 플러그인별 인수(파일 이름 포함) 앞에 지정해야 합니다.
플러그인). 예시:
$ 변동성 --plugins=contrib/plugins -f XPSP3x86.vmem 예제
출력 형식 선택
기본적으로 플러그인은 표준 출력에 텍스트 렌더러를 사용합니다. 파일로 리디렉션하려면
물론 콘솔의 리디렉션(예: > out.txt)을 사용하거나 --output-file=out.txt를 사용할 수 있습니다.
--output=FORMAT을 선택할 수도 있는 이유는 플러그인이 출력을 HTML로 렌더링할 수도 있기 때문입니다.
JSON, SQL 또는 선택한 모든 것. 그러나 이러한 대체 출력 형식을 가진 플러그인이 없습니다.
사용을 위해 미리 구성되어 있으므로 render_html, render_json, render_sql,
--output=HTML을 사용하기 전에 각 플러그인에 각각.
플러그인 특정 옵션
많은 플러그인은 전역 옵션과 독립적인 자체 인수를 허용합니다. 보기 위해
사용 가능한 옵션 목록을 보려면 명령줄에 플러그인 이름과 -h/--help를 모두 입력하십시오.
$ 변동성 dlllist -h
디버그 모드
Volatility에서 예상대로 무언가가 발생하지 않으면 -d/--debug를 사용하여 명령을 실행해 보십시오.
이렇게 하면 디버그 메시지를 표준 오류로 인쇄할 수 있습니다. 사용에서와 같이 더 많은 디버그 수준으로
pdb 디버거), 명령에 -d -d -d를 추가합니다.
변동성을 라이브러리로 사용
Volatility를 라이브러리로 사용하는 것은 가능하지만 (이를 더 잘 지원할 계획이 있습니다.
미래). 현재 Python 스크립트에서 Volatility를 가져오기 위해 다음 예제 코드를 사용할 수 있습니다.
$ 파이썬
>>> conf로 변동성.conf 가져오기
>>> 변동성.레지스트리를 레지스트리로 가져오기
>>> 레지스트리.PluginImporter()
>>> 구성 = conf.ConfObject()
>>> 변동성.commands를 명령으로 가져오기
>>> 변동성.addrspace를 addrspace로 가져오기
>>> registry.register_global_options(구성, 명령.명령)
>>> registry.register_global_options(구성, addrspace.BaseAddressSpace)
>>> config.parse_options()
>>> config.PROFILE="WinXPSP2x86"
>>> config.LOCATION = "file:///media/memory/private/image.dmp"
>>> Volatile.plugins.taskmod를 taskmod로 가져오기
>>> p = taskmods.PSList(구성)
>>> p.calculate()의 프로세스:
... 인쇄 과정
사용 예
사용 가능한 모든 플러그인, 프로필, 스캐너 검사 및 주소 공간을 보려면:
$ 변동성 --정보
MS Windows 8 SP0에서 발견된 모든 활성 프로세스를 나열하려면 영상:
$ 변동성 -f win8.raw --profile=Win8SP0x86 pslist
MS Windows 8 SP0에서 발견된 모든 활성 프로세스를 나열하려면 영상, 시간대 사용:
$ 변동성 -f win8.raw --profile=Win8SP0x86 pslist --tz=America/Sao_Paulo
Linux 3.2.63에서 커널 bnuffer를 표시하려면 영상:
$ 변동성 -f mem.dd --profile=Linux_3_2_63_x64 linux_dmesg
노트
이 맨페이지는 변동성에 대한 몇 가지 테스트와 몇 가지 공식 문서를 기반으로 했습니다. 을위한
기타 정보 및 자습서는 다음을 참조하십시오.
· http://www.volatilityfoundation.org
· https://github.com/volatilityfoundation/휘발성/위키
onworks.net 서비스를 사용하여 온라인에서 변동성 사용
