Forensic 60

Cridex malware 분석

안녕하세요. 메모리 포렌식을 깊게 공부하기 위해서 분석 파일을 찾다가 해당 사이트에서 샘플 파일들을 찾았습니다. https://github.com/volatilityfoundation/volatility/wiki/Memory-Samples 그 중 하나인 Cridex malware를 분석할 것입니다. Cridex malware란? 사용자의 금융 기록에 액세스하기 위해 감염된 시스템에서 인터넷 뱅킹 및 개인 정보를 훔칠 수 있는 악성코드입니다. Cridex는 감염된 시스템에 백도어를 생성하여 악성 웹사이트를 여는 것과 같은 작업을 수행할 뿐만 아니라 추가 맬웨어를 다운로드 및 실행할 수 있으며, 이 기능을 통해 금융 웹 사이트를 방문하여 로그인을 할 때, 감염된 시스템에서 사용자의 은행 정보를 캡처 합니다...

2주차 과제 A

A과제 : Volatility 플러그인들을 정리하고, 사용법을 실습해보기(실습은 Cridex 분석으로 하겠습니다 하지만 모든 플러그인에 대해서는 다루지 않을 것이며, 몇몇 분석에 필요한 플러그인만 다루도록 하겠습니다.) 먼저, 메모리 포렌식에 대해서 정의를 해보겠습니다. 메모리 포렌식이란 컴퓨터 구조의 하드웨어에서 주 기억장치인 RAM에 남아있는 데이터 흔적을 분석하는 기법입니다. 우리가 FTK Imager같은 툴로 Memory Capture를 실습했을 때, 나왔던 mem파일이 RAM의 데이터를 덤프한 파일입니다. RAM은 휘발성이 강한데도 불구하고 프로세스 정보, 네트워크 연결 정보, 악성코드 파일 정보, 시스템 관련 데이터 구조, 사용자 활동 정보 등 고유의 정보들이 남아 있습니다. 그 이유는 컴퓨터..

1주차 과제

A과제 : 디스크 덤프, 디스크(이미지) 마운트, 메모리 덤프 실습 실습 진행을 위해서 사용한 프로그램 입니다. VHD만들기 [디스크 관리] - [동작] - [VHD 만들기] 를 한 다음 다음과 같이 입력 해주시면 됩니다. 실습을 진행할 가상 디스크는 512MB짜리로 mbr 파티션 스타일로 포맷을 하였고, NTFS 파일 시스템으로 진행을 했습니다. 먼저, 준비한 파일들은 다음과 같습니다. 3장의 jpg 파일을 준비 하였고, 파일을 삭제 하도록 하겠습니다. [디스크 덤프] 디스크를 덤프하기 위해서는 FTK Imager를 실행한 후 다음과 같이 따라 하시면 됩니다. [File] - [Add Evidence Item] - [Physical Drive] - [덤프할 디스크] 저 같은 경우는 PHYSICALDRI..

반도체를 이용한 저장매체

저번 시간에 컴퓨터의 구성 요소에 대해서 배웠습니다. 간략하게 다시 짚어보면 다음과 같습니다. 컴퓨터의 구성요소는 "보조기억장치, 주기억장치, 입력 장치, 출력 장치, 중앙처리장치(CPU)"로 나뉘어져 있습니다. 보조기억장치 : 물리적인 디스크가 연결되어 있는 기억장치 주기억장치 : 물리적인 디스크가 아니라 컴퓨터 내부에서 CPU가 처리하면서 내용을 저장하고 있는 기억장치 입력장치 : 사용자가 컴퓨터를 사용할 때, 전기 신호를 전달함으로써 데이터를 전달해주는 것 (키보드, 마우스) 출력장치 : 입력장치를 통해 신호를 주면, 그 데이터를 사람이 이해하는 형태로 변환해주는 것 (프린터, 모니터) 중앙처리장치(CPU) : 컴퓨터 내부에서 데이터를 제어, 연산 해주는 장치 (ALU, CU) 오늘은 반도체를 이용..

FAT32(File Allocation Table) File System Structure

저번 시간에는 FAT16의 구조를 분석해봤습니다. 여기서 중간중간 FAT16의 내용이 나올텐데, 모르겠으면 여기를 참고해주시길 바라겠습니다. https://lemonpoo22.tistory.com/41 이번 시간에는 FAT32에 대해서 알아 보겠습니다. FAT32는 FAT16보다 복잡한 파일 구조를 띄고 있습니다. 다음 그림은 FAT32의 구조입니다.FAT12와 16은 Reserved Area영역의 크기가 1섹터로 고정적이지만, FAT32는 32섹터로 구성되어 있습니다. 그리고 FAT32의 Reserved Area의 32섹터중에서 0, 6은 Boot Sector, 1, 7은 FSINFO, 2,8은 Boot Strap입니다. 실습환경을 구축해, 분석을 진행하기 전 저는 2GB의 가상 하드를 FAT32로 포..

FAT16(File Allocation Table) File System Structure

오늘은 FAT File System에 대해 배워보겠습니다. FAT File System은 FAT12, FAT16, FAT32과 같이 총 3가지의 파일 시스템으로 나누어 집니다. 원래 FAT12부터 배워야 하지만 이번에 배워볼 FAT12나 FAT16은 크게 차이가 나지 않고 클러스터를 표현하는 FAT Entry의 비트 수가 12개와 16개인 점을 제외한다면 동일하기 때문에 FAT16 파일 시스템만 공부를 하게 된다면 FAT12는 공부하지 않아도 이해 하실 수 있을것입니다. 그럼 본론으로 들어가겠습니다. 먼저 FAT16의 구조를 보면서 설명하겠습니다. 위의 그림을 보면 FAT16 File System의 구조는 4가지의 영역으로 나뉘어 져 있지만 Data Area를 세부적으로 나누면 이런식으로 표현이 됩니다...

GPT(GUID Partition Table) Structure

GPT를 설명하기에 앞서, GPT의 하위 버전이라고 할 수 있는 MBR에 대해서 간략하게 설명을 드리겠습니다.MBR이란? MBR은 물리적인 저장 매체 영역 중 0번섹터에 위치하고 있는 512Byte영역입니다. 모든 저장 장치에서 가장 처음에 존재하는 구조이며, 32bit를 사용하여 용량의 제한이 2TB입니다. Boot Code(446Byte), Partition Table Entey(16 * 4 = 64Byte), Signature(2Byte)의 구조를 가지고 있습니다.본론으로 가겠습니다. GPT 파티션은 MBR 파티션 테이블의 파티션 용량에 제약 및 보완된 파티션 방식을 위해서 만들어 진 영역입니다. 위에서 말씀드렸다 시피 MBR 파티션은 32bit 체제를 사용하여 최대 2TB만큼 크기를 가지는데, G..

MBR 확장 파티션(Extended Partition)

지난 시간에 MBR구조에 대해서 배웠는데, MBR구조는 총 4개의 Partition Table Entry가 존재한다고 했습니다. 모르겠으면 다음 링크를 참고하셔서 MBR에 대해서 배워오셔야 이해가 될겁니다!! https://lemonpoo22.tistory.com/23 이번 글에서는 MBR에서 사용되는 확장 파티션에 대한 설명과 분석 방법을 설명하겠습니다. MBR영역에서 파티션 테이블은 4개까지 표현이 됩니다. 하지만 4개 이상의 파티션 정보를 표현하기 위해 확장 파티션이라는 개념을 도입을 하였습니다. 기존에 표현이 되는 4개의 파티션 엔트리에 대해서는 "주 파티션" 이라 하고, 이후 4개 이상의 파티션을 정의 하기 위해서는 "확장 파티션" 을 사용합니다. 마지막의 파티션 엔트리가 바로 확장 파티션 엔트..

파일 카빙(Carving)

이번 파일 카빙에 대해서 배워보겠습니다. 파일 카빙이란 메타 데이터가 아닌 파일 자체의 바이너리 데이터(signature, header)를 이용해서 디스크의 비할당 영역에서 파일을 복구하는 방식입니다. 주의해야 할 점은 파일이 디스크에 연속적으로 할당되었는지, 비연속적으로 할당 되었는지 알아야합니다. *연속 할당 임의의 한 파일이 디스크 내에 선형적으로 연속된 블록을 할당합니다. 장점은 연속하는 논리적 블록들이 물리적으로 인접해 있기 때문에 빠르게 엑세스가 가능하고, 디렉토리가 단순히 시작 블록 주소와 파일의 길이만 알고 있으면 디렉토리 구현의 단순화가 가능합니다. 단점은 새로운 파일을 생성할 때 필요한 공간을 미리 명시를 해주어야 하며, 연속된 공간이 확보되지 않으면 생성이 불가능합니다. 일정 파일이 ..

해쉬 함수 (Hash Function)

저번 시간에는 데이터 인코딩에 대해서 배웠습니다. 데이터 인코딩을 간략하게 설명하자면 "숫자, 문자, 시간 등 데이터는 원본 그대로 형태의 모습으로 저장될 수도 있는 반면, 다양한 인코딩 알고리즘(Base58, Base64)에 따라 특수한 형태의 데이터로 변환" 되는것을 말합니다. 이번에는 해쉬 함수에 대해서 배워 보겠습니다. 다뤄볼 내용은 MD5, SHA256, SHA512입니다. 해쉬 함수(Hash Function) 해쉬 함수란, 임의의 길이의 데이터를 고정된 길이의 데이터로 계산해 주는 함수입니다. 해쉬 함수의 특징으로는 일방향성을 띄고있고, 변환된 해쉬 값으로 원래의 입력값을 알아내는 것은 거의 불가능합니다. 주로 일방향 해시함수는 "데이터의 무결성" 을 확인하는 방법으로 사용합니다. 일반적으로 ..