◎ 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..
◎ plugins 명령 및 profiles 확인 # python ./vol.py --info 또는 # volatility --info 위 명령을 사용하면 지원되는 plugins 명령 및 profiles을 볼 수 있습니다. Linux 및 MAC OSX 용 plugins에는 'linux_'및 'mac_'접두어가 붙습니다. 이 접두사가없는 plugins은 MS Windows 용으로 설계되었습니다. profiles은 볼라틸리티가 운영 시스템을 이해하는 데 사용하는 map입니다. MS Windows profiles은 볼라틸리티에 의해 기본으로 제공됩니다. 기본적으로 제공하지 않는 Linux 및 Mac OSX 용 profiles은 직접 만들어야합니다. [참조 URL] https://github.com/volatil..
침해 사고가 발생해 악성코드 감염이 의심되는 시스템에서 생성한 메모리 덤프 파일을 분석하기 위해서는 다음 같은 6단계의 절차를 이용하여 메모리 분석을 진행할 수 있습니다. 1) 운영체제 분석 - 어떠한 운영체제에서 생성한 Memory Dump인지 분석 2) 프로세스 분석 - 생성한 Memory Dump에서 실행 중이거나 은폐된 Process 및 그와 관련된 정보들을 분석 3) 네트워크 정보 - 생성한 Memory Dump에서 활성화되거나 은폐된 Network 및 그와 관련된 정보를 분석 4) DLL 및 쓰레드 분석 - 특정 Process에서 load한 DLL 정보나 Thread 정보들을 분석 5) String 분석 - 생성한 Memory Dump 전체 또는 Binary 형태로 추출한 Process 및 D..
1) Process와 Threads - 실행 중이거나 종료되었지만 Memory에 남아 있는 정보들 추출 2) Modules와 Libraries - 실행 중이거나 종료되었던 Process 관련 Modules와 Libraries 정보들 추출 3) Open Files와 Sockes - 실행 중이거나 종료되었던 파일들과 Network 연결 관련 Socket 정보들 추출 4) Various Data Structures - Memory에만 존재하는 다양한 Data의 구조 정보들 추출
[Debian 계열의 리눅스] ◎ 커널 헤더 패키지 설치 # apt-get install linux-headers ※ linux-headers 는 설치시 정확한 패키지명을 지정하라는 메세지가 발생하는데 "uname -r"을 통해 버전을 확인하고 설치를 하면 됩니다. ◎ 개발에 필요한 기본 라이브러리와 헤더파일 등을 가지고 있는 패키지 설치 # apt-get install build-essential ※ Debian 계열에서 make / compile 과 관련된 에러가 발생하면 build-essential 패키지를 설치해주면 됩니다. ◎ Dwarfdump 설치 # apt-get install dwarfdump dwartdump 를 설치합니다. [Redhat 계열의 리눅스] ◎ 커널 헤더 패키지 설치 # y..
볼라틸리티(Volatility)를 설치해서 정상적으로 사용하려면 다음 3가지가 선행되어야 합니다.1. 리눅스 프로파일 생성을 위한 유틸 설치2. 커널 헤더 패키지 설치3. 개발에 필요한 기본 라이브러리와 헤더파일 등을 가지고 있는 패키지 설치 해당 내용에 대해서 자세히 알아보겠습니다.[리눅스 프로파일 생성을 위한 유틸]볼라틸리티(Volatility)를 설치하면 생각보다 기본 프로파일(Profile) 이 적습니다. 때문에 Profile 을 만드는 작업이 필요하며 profile 을 만드는 유틸을 설치해야합니다.◎ Libdwarf And Dwarfdump 원래는 DWARF 2/3/4 Debug 포맷을 가지는 것에서 디버깅 정보를 뽑아내는 유틸인데 여기에서는 리눅스 프로파일 생성에 사용됩니다. ◎ libdwar..
볼라틸리티(Volatility)는 최초 2006년 컴퓨터 공학자이자 기업가인 아론 월터스(Aaron Walters)에 의해 메모리 포렌식(memory forensics)관련 FATKit 프로젝트에서 출발하여 볼라툴즈 프로젝트(Volatools Project)로 발전했습니다. 그 이후 2007년 아론 월터스에 의해 볼라틸리티 프레임워크(Volatility Framework)개발팀인 볼라틸 시스템즈(http://volatilesystems.blogspot.kr/)가 만들어지고 현재는 아론 월터스가 회장으로 있는 볼러틸리티 재단(Volatility Foundation)의 사고조사 및 멀웨어 분석을 위한 오픈소스(OpenSource) 소프트웨어로 자리잡았습니다. 플러그인(Plugin)을 자신이 직접 만들어 사용..