KAPE (Kroll Artifact Parser And Extractor) - (4) tkape 구조의 이해와 활용
DFIR Programs/KAPE

KAPE (Kroll Artifact Parser And Extractor) - (4) tkape 구조의 이해와 활용

※ 본 포스팅은 PLAINBIT의 KAPE 문서, KAPE 공식 문서를 참고하여 작성하였습니다.


지난 포스팅들을 통해 KAPE와 KAPE의 Target, Module이 무엇인지에 대해 알아보았습니다.

Target 설정은 .tkape, Module 설정은 .mkape 파일을 생성하여 진행할 수 있습니다.

이번 포스팅에서는 .tkape, .mkape 파일의 구조에 대해 살펴보고 커스터마이징하는 방법을 알아보도록 하겠습니다.

 


 

8. .tkape

 

KAPE\Targets\

 

KAPE 설치 경로 폴더에서 Targets 폴더의 내부를 보면 위와 같은 폴더와 파일들이 있는 것을 확인할 수 있습니다.

Target의 항목 별로 폴더가 구성되어 있으며 폴더에 진입하면 .tkape 파일들을 확인할 수 있습니다.

Target은 주로 지정된 볼륨의 경로를 기반으로 KAPE가 사용할 매개변수를 정의하는데 사용됩니다.

Target은 항상 함께 그룹화할 수 있는 대상 특정 아티팩트에 대해 생성되어야 합니다. 예를 들어, 레지스트리, 파일시스템 및 브라우저 기록을 수집하는 단일 대상을 만드는 것을 권장하지 않습니다.

Target은 다른 Target이 처리한 것 또한 처리할 수가 있다고 하네요.

 

 

KAPE\Targets\Windows\$MFT.tkape

 

위 파일은 $MFT를 추출하기 위해 사용되는 $MFT.tkape 파일의 내용입니다.

다른 .tkape 파일들도 위와 비슷한 구조를 가지고 있으며 특정한 형태를 띄고 있는 것을 알 수 있습니다.

.tkape에 포함될 수 있는 필드에는 여러가지가 있는데 각 필드들은 다음과 같은 의미를 가지고 있습니다.

 

항목 설명 필수 여부
Description 수집할 파일에 대한 명확한 세부 정보 Y
Author 파일 작성자 (Name or E-mail) Y
Version 파일 버전, 대상이 추가될 경우 버전 또한 증가 Y
Id 이미 처리된 대상을 추적하는데 사용되는 GUID Y
RecreateDirectories True인 경우, 해당 파일의 경로와 같은 구조로 폴더 생성 Y
Name 파일의 친숙한 이름 Y
Category Target에 대한 일반 범주, ex) FileSystem, Registry, EventLogs Y
Path 수집할 파일의 경로(C:\로 시작해야 함), 와일드카드* 사용가능 Y
Recursive True인 경우, 해당 경로에서 재귀적으로 복사 N
FileMask FileMask가 설정된 경우 제공된 확장자와 일치하는 파일을 찾습니다. ex) \*.jpg, Foo*.txt N
SavaAsFileName 기존 파일명을 무시하고 설정 값으로 저장합니다. $SDS, $J와 같은 대체 데이터 스트림에 유용합니다. N
AlwaysAddToQueue True인 경우, 항상 복사 대기열에 추가됩니다. $LogFile과 같이 라이브 환경에서 보이지 않는 파일시스템 파일을 처리하는데 유용합니다. (실제로 존재할 경우) N
Comment 필요한 정보를 전달하기 위한 자유 형식 필드입니다. N
MinSize 포함할 파일의 최소 크기(byte)입니다. --debug 설정 시 드롭된 파일을 확인할 수 있습니다. N
MaxSize 포함할 파일의 최대 크기(byte)입니다. --debug 설정 시 드롭된 파일을 확인할 수 있습니다. N

 


 

9. .tkape 커스터마이징

 

Description: MyFileSystem
Author: Present4n6
Version: 1.0
Id: 2b3d01e2-0000-0000-0000-6cb6e2069001
RecreateDirectories: True
Targets:
    -
        Name: $MFT
        Category: FileSystem
        Path: C:\
        Recursive: true 
        FileMask: $MFT
        AlwaysAddToQueue: true

    -
        Name: $LogFile
        Category: FileSystem
        Path: C:\
        Recursive: true
        FileMask: $LogFile
        AlwaysAddToQueue: true

        
# Documentation
# present4n6.tistory.com

 

위 코드는 제가 임의로 작성한 .tkape 파일 내용입니다.

MyFileSystem이라는 새로운 tkape 파일을 작성하여 $MFT, $LogFile을 동시에 추출할 수 있도록 작성을 한 것입니다.

주의할 점으로는 들여쓰기를 할 때 Tab이 아니라 스페이스바로 간격을 맞춰주어야 KAPE가 인식을 합니다.

Id 값은 임의로 지정하여 고유한 값이기만 하면 됩니다.

 

 

KAPE - Target

 

KAPE를 실행하고 Target을 활성화한 뒤 생성한 tkape 파일명을 검색하면 위와 같이 목록에 있는 것을 확인할 수 있습니다.

유의할 점으로는 Github에 명시된 기존의 .tkape 파일이 아닌 사용자가 임의로 생성한 .tkape의 경우 !Local 폴더에 저장을 하도록 되어 있습니다.

 

 

MyFileSystem.tkape 동작 결과

 

MyFileSystem.tkape가 동작하면 설정 값대로 $LogFile, $MFT 파일이 추출된 것을 확인할 수 있습니다.

 


 

9-1. Compound Targets

 

Description: MyFileSystem2
Author: Present4n6
Version: 1.0
Id: 2b3d01e2-0000-0000-0000-6cb6e2069002
RecreateDirectories: True
Targets:
    -
        Name: $MFT
        Category: FileSystem
        Path: $MFT.tkape
    -
        Name: $LogFile
        Category: FileSystem
        Path: $LogFile.tkape

        
# Documentation
# present4n6.tistory.com

 

.tkape에서는 다른 tkape들을 실행할 수 있도록 구성할 수도 있습니다. 이를 KAPE 공식 문서에서는 Compound Targets라고 합니다.

위 코드는 $MFT.tkape, $LogFile.tkape 를 한 번에 실행하도록 작성한 MyFileSystem2.tkape 파일입니다.

 

 

MyFileSystem2.tkape 동작 결과

 

MyFileSystem2.kape 동작 시 MyFileSystem.tkape가 동작한 결과와 같은 결과물을 생성한 것을 확인할 수 있습니다.

 

 

.tkape 커스터마이징을 잘 활용한다면 특정한 경로에 파일들이 다수 포함되어 있다는 사실을 알고 있을 때, .tkape 코드를 작성하여 쉽게 추출할 수 있을 것으로 보입니다.

다음 포스팅에서는 Module 설정 파일인 .mkape의 구조와 활용 방법에 대해 살펴보도록 하겠습니다.