◎ Miscellaneous : 기타 등등 > strings : : line 형식으로 된 주어진 Image와 File에서 해당 문자열을 찾을 수 있는 Process와 Virtual Address를 출력해 주는 명령어입니다. - 해당 명령의 입력은 Sysinternals의 Strings Utility 또는 유사한 Tool 들의 출력(offset:string)이며, 입력 Offset 은 File/Image의 시작 지점의 물리 Offset입니다. - Sysinternals 의 Strings는 Linux/MAC 에서 Wine을 이용하여 사용 가능하며, 이에 대한 출력은 File 형식으로 Volatility에게 Redirect 되어야 합니다. - GNU 의 Strings 명령어를 사용한다면 -td Option을 ..
◎ Malware and Rootkits : 맬웨어와 루트킷 분석 > malfind : 사용자 모드 형태로 은폐되어 있거나 인젝션 된 코드 또는 DLL 정보를 분석하는 명령어입니다. - VAD 태그와 페이지 권한들 같은 문자들을 기반으로 사용자 모드 메모리에 숨겨져 있거나 삽입되어 있는 코드가 DLLs를 찾아냅니다. - CreateRemoteThread -> LoadLibrary로 사용되는 프로세스에 삽입되는 DLLs은 탐지하지 않습니다. 이 기술로 삽입된 DLLs는 숨겨지지 않으며 dlllist에서 이것들을 확인할 수 있습니다. - malfind의 목적은 기본적인 메서드/도구들이 보지 못하는 것을 DLLs의 위치를 찾아내는 것입니다. malfind에 의해 인식되는 메모리 세그먼트의 압축된 복사 파일을 ..
◎ Crash Dumps, Hibernation and Conversion : 크래쉬 덤프, 하이버네이션 정보확인 및 파일변환 > crashinfo : Crash dump header 정보를 출력해주는 명령어입니다. # python vol.py -f image.vmem --profile=Win7SP1x64 crashinfo > hibinfo : Hibernation file 로 부터 정보를 출력해주는 명령어입니다. - Hibernation file 로 부터 Control Register 상태, file 생성시간, 상태, Hibernation 직전의 해당 Windows Version 과 같은 정보를 제공해주는 명령어입니다. # python vol.py -f image.vmem --profile=Win7SP..
◎ Registry : 단지 Registry data를 추출하는데 도움을 줍니다. > hivescan : Memory Dump로부터 CMHIVEs(Registry hives)의 Physical address를 찾아주는 명령어입니다. # python vol.py -f image.vmem --profile=Win7SP1x64 hivescan > hivelist : Memory Dump 로 부터 레지스터 하이브(Registry hives)의 가상 메모리 주소(Virtual address)와 Disk 상의 절대 경로를 알려주는 명령어입니다. - 만약 특정 하이브로부터 값을 표기하기 원한다면, 이 명령어를 실행시켜서 해당 되는 하이브 주소 값을 볼 수 있으며, 이 명령어를 통하여 Windows password를 ..
◎ Networking : 네트워크 정보 > connections : 활성화 상태의 네트워크 연결 정보를 나열합니다. (Windows XP, Windows 2003 Server 만 사용 가능) - 네트워크의 pslist와 비슷합니다. 오프셋은 기본적으로 _TCPT_OBJECT 가상 주소로 출력되지만 물리적인 주소를 얻고 싶다면 -P 명령어를 추가적으로 사용합니다. # python vol.py -f image.vmem --profile=Win7SP1x64 connections # python vol.py -f image.vmem --profile=Win7SP1x64 connections -P > connscan : Pool tag scanning을 통하여 connection 구조체를 찾는 명령어입니다.(W..
◎ Kernel Memory and Objects : 커널 메모리와 오브젝트 분석 > modules : System에 load된 kernel driver들을 보여주는 명령어입니다. - PSLoadedModuleList가 가리키는 LDR_DATA_TABLE_ENTRY를 통해 doubly-linked 형태로 동작하며 hidden/unlinked kernel driver는 출력해 주지 않습니다. - 기본적으로 Virtual address 로 출력하며, Physical address 를 보고 싶다면 -P Option 을 추가하면 됩니다. # python vol.py -f image.vmem --profile=Win7SP1x64 modules # python vol.py -f image.vmem --profile..
◎ Process Memory : 프로세스 메모리 분석 > memmap : 해당 Image에서 할당된 Memory 주소 Map을 보여주는 명령어입니다. - 정확히 어떤 페이지가 메모리 상주인지 상세한 프로세스 DTB(또는 대기상태나 시스템 프로세스에서 이 플러그인을 쓴다면 커널 DTB)를 보여줍니다. - 페이지의 가상주소, 페이지의 일치하는 물리적 오프셋, 그리고 페이지 사이즈를 보여줍니다. - 맵 정보는 근본적인 주소 공간의 get_available_addresses 방법을 사용해 플러그인으로써 발생됩니다. # python vol.py -f image.vmem --profile=Win7SP1x64 memmap -p 1111 > memdump : Process의 다양한 Memory Segment에서 모든..
◎ Processes and DLLs : 프로세스와 DLLs 분석 > pslist : PsActiveProcessHead가 가리키는 이중 연결 목록(doubly-linked list)을 살펴보고 오프셋, 프로세스 이름, ID, 부모 프로세스 ID(PPID), 쓰레드의 수, 핸들의 수, 프로세스 시작 시간과 종료 시간 등 실행 중인 프로세스 정보를 나열합니다. 다만 프로세스가 은닉되거나 연결이 끊어진 프로세스는 출력해주지 않습니다. - doubly-linked list : 노드와 노드가 양방향으로 연결되어 있어 양방향으로 탐색이 가능합니다. - Time은 Process의 시작 시간을 의미하며 Thds와 Hnds가 0이면 해당 Process는 활성화 상태가 아님을 뜻합니다 - System 과 smss.exe..
◎ Image Identification : 이미지 식별 > imageinfo : 생성한 메모리 덤프 파일의 운영체제와 하드웨어에 대한 프로파일(기본 정보)을 나열합니다. - PAE(Physical Address Extension, 물리주소확장) : 4GB 메모리 어드레싱 가능 여부 - DTB(Directory Table Base) : 가상주소를 물리 주소로 변환하기 위한 디렉터리 테이블의 주소 값 - KDBG(_KDDEBUGGER_DATA64) : 운영체제의 정보를 가지고 있는 구조체이며, Process 활성화 상태, Handle 오픈 여부, Kernel변수의 Memory 주소 등의 정보를 확인할 수 있습니다. - KDBG(_KDDEBUGGER_DATA64) : 운영체제의 정보를 가지고 있는 구조체이며..
1. profiles을 생성하기 위해 폴더 이동 # cd [volatility directory]/tools/linux 설치시 경로를 별도로 지정하지 않았다면 /usr/tools/linux를 확인해 보시기 바랍니다. 2. profiles를 생성하기 위해 make 명령어 실행 # make make를 진행하면 module.dwarf 파일과 system map file이 생성됩니다. system map file은 /boot 폴더에 생성되며 현재 커널버전과 동일하게 만들어집니다. ※ profiles 생성 전 확인 사항 # uname -a Linux localhost.localdomain 3.10.0-693.2.2.el7.x86_64 #1 SMP Tue Sep 12 22:26:13 UTC 2017 x86_64 x..