
Python으로 작성된 CaRT 라이브러리 구현으로, 파일의 (비)비활성화(un)inerting을 위한 도구입니다.
CaRT 파일 형식은 악성코드 및 관련 메타데이터를 저장/전송하는 데 사용됩니다. 악성코드를 실행할 수 없도록 무력화하고 암호화하여 안티바이러스 소프트웨어가 CaRT 파일을 악성코드로 탐지하지 못하게 합니다.
이제 STIX v2가 인코딩에 JSON을 사용하므로, STIX 보고서를 CaRT 형식으로 직접 번들링할 수 있습니다.
CaRT가 파일을 인코딩하면 파일과 동일한 접두사를 가진 *.cartmeta 파일에서 메타데이터를 추가합니다.
따라서 STIX 보고서를 .cartmeta 파일로 저장하면 결과 CaRT 파일에
전체 STIX 보고서가 포함됩니다.
예를 들어:
$ ls
file.exe - 인코딩할 파일
file.exe.cartmeta - file.exe의 STIX 보고서
$ cart file.exe
$ ls
file.exe - 인코딩할 파일
file.exe.cartmeta - file.exe의 STIX 보고서
file.exe.cart - file.exe와 해당 STIX 보고서를 모두 포함하는 CaRT 파일
CaRT에는 다음과 같은 필수 헤더가 있습니다.
4s h Q 16s Q
CART<VERSION><RESERVED><ARC4KEY><OPT_HEADER_LEN>
여기서 VERSION은 1이고 RESERVED는 0입니다. 대부분의 경우 파일을 복호화하는 데 사용되는 RC4 키는 필수 헤더에 저장되며 항상 동일한 값입니다(원주율(pi)의 처음 8자리를 두 번 사용한 값). 그러나 CaRT는 키를 재정의할 수 있는 옵션을 제공하며, 이 경우 필수 헤더에 널(null) 바이트가 저장됩니다. 파일을 unCaRT하려면 키를 알아야 합니다...
CaRT의 선택적 헤더는 JSON 직렬화된 헤더의 OPT_HEADER_LEN 바이트 RC4 blob입니다.
RC4(<JSON_SERIALIZED_OPTIONAL_HEADER>)
CaRT의 데이터 블록은 zlib 압축 후 RC4로 암호화된 블록입니다.
RC4(ZLIB(block encoded stream))
선택적 헤더와 마찬가지로 CaRT의 선택적 푸터는 JSON 직렬화된 푸터의 OPT_FOOTER_LEN 바이트 RC4 blob입니다.
RC4(<JSON_SERIALIZED_OPTIONAL_FOOTER>)
CaRT는 파일을 필수 푸터로 끝내며, 이 푸터를 통해 전체 파일을 읽지 않고도 푸터를 읽고 해시를 반환할 수 있습니다.
4s QQ Q
TRAC<RESERVED><OPT_FOOTER_LEN>
pip 패키지를 설치하면 CaRT 라이브러리와 CaRT CLI에 모두 액세스할 수 있습니다.
CaRT CLI의 옵션에는 다음과 같은 우선순위가 적용됩니다.
~/.cart/cart.cfg의 옵션으로 재정의됩니다.CaRT CLI에서 사용할 수 있는 옵션은 다음과 같습니다.
사용법: cart [options] file1 file2 ... fileN
CaRT 파일 형식은 악성코드 및 관련 메타데이터를 저장/전송하는 데 사용됩니다.
악성코드를 실행할 수 없도록 무력화하고 암호화하여 안티바이러스 소프트웨어가
CaRT 파일을 악성코드로 탐지하지 못하게 합니다.
positional arguments:
file
options:
-h, --help 도움말 메시지를 표시하고 종료합니다
-v, --version 프로그램 버전 번호를 표시하고 종료합니다
-d, --delete 작업이 성공하면 원본 파일을 삭제합니다
-f, --force 출력 파일이 이미 있으면 덮어씁니다
-i, --ignore 구성 파일의 RC4 키를 무시합니다
-j JSONMETA, --jsonmeta JSONMETA
헤더 메타데이터를 JSON blob으로 제공합니다
-k KEY, --key KEY 개인 RC4 키를 사용합니다 (base64 인코딩). unCaRT하려면 동일한 키를 제공해야 합니다.
-m, --meta CaRT를 추출할 때 메타데이터를 유지합니다
-n FILENAME, --name FILENAME
이 값을 메타데이터 파일 이름으로 사용합니다
-o OUTFILE, --outfile OUTFILE
출력 파일을 설정합니다
-s, --showmeta 파일 메타데이터만 표시합니다
CaRT는 파일을 CaRT 처리해야 하는지 unCaRT 처리해야 하는지 스스로 판단할 수 있습니다.
CaRT 처리되지 않은 파일을 CaRT하려면: cart file1
CaRT 처리된 파일을 unCaRT하려면: cart file1
동일한 명령입니다!
CaRT 구성 파일은 다음과 같습니다.
[global]
# rc4_key는 키의 base64 표현입니다
rc4_key: AvUzYXNkZg==
# keep_meta는 CLI의 -m과 동일합니다
keep_meta: True
# force는 CLI의 -f와 동일합니다
force: True
# default_header는 선택적 헤더에서 CaRT에 추가할 키/값 데이터 쌍입니다
[default_header]
poc: Your Name
poc_email: [email protected]
Rust 및 Java로 구현된 CaRT 버전도 있습니다. 아래에서 확인하세요.
CaRT 파일 형식은 악성코드 및 관련 메타데이터를 저장/전송하는 데 사용됩니다. 이 형식은 악성코드를 실행할 수 없도록 무력화하고 암호화하여 안티바이러스 소프트웨어가 CaRT 파일을 악성코드로 탐지하지 못하게 합니다.
이제 STIX v2가 인코딩에 JSON을 사용하므로, STIX 보고서를 CaRT 형식으로 직접 그룹화할 수 있습니다.
CaRT가 파일을 인코딩하면 파일과 동일한 접두사를 가진 *.cartmeta 파일에서 메타데이터를 추가합니다.
따라서 STIX 보고서를 .cartmeta 파일로 저장하면 결과 CaRT 파일에
전체 보고서가 포함됩니다.
예를 들어:
$ ls
file.exe - 인코딩할 파일
file.exe.cartmeta - file.exe의 STIX 보고서
$ cart file.exe
$ ls
file.exe - 인코딩할 파일
file.exe.cartmeta - file.exe의 STIX 보고서
file.exe.cart - file.exe와 해당 STIX 보고서를 모두 포함하는 CaRT 파일
CaRT에는 다음과 같은 필수 헤더가 있습니다.
4s h Q 16s Q
CART<VERSION><RESERVED><ARC4KEY><OPT_HEADER_LEN>
이 헤더에서 VERSION 값은 1이고 RESERVED 값은 0입니다. 대부분의 경우 파일을 해독하는 데 사용되는 RC4 키가 헤더에 저장되며 항상 동일한 값입니다(원주율(pi)의 처음 8자리를 두 번 사용한 값). 그러나 CaRT는 키를 대체하는 방법을 제공하며, 필수 헤더에 널(null) 바이트를 저장하는 방식입니다. 이 경우 CaRT 파일을 해독하려면 키를 알아야 합니다.
CaRT의 선택적 헤더는 JSON 직렬화된 헤더에서 가져온 OPT_HEADER_LEN 바이트 크기의 RC4 blob입니다.
RC4(<JSON_SERIALIZED_OPTIONAL_HEADER>)
CaRT의 데이터 블록은 먼저 zlib 데이터 압축을 적용한 다음 RC4로 암호화한 블록입니다.
RC4(ZLIB(block encoded stream))
선택적 헤더와 마찬가지로 CaRT의 선택적 푸터는 JSON 직렬화된 푸터에서 가져온 OPT_FOOTER_LEN 바이트 크기의 RC4 blob입니다.
RC4(<JSON_SERIALIZED_OPTIONAL_FOOTER>)
CaRT 파일은 필수 푸터로 끝나며, 이 푸터를 통해 전체 파일을 읽지 않고도 푸터를 읽고 해시를 반환할 수 있습니다.
4s QQ Q
TRAC<RESERVED><OPT_FOOTER_LEN>
pip 패키지 관리자를 설치하면 CaRT 라이브러리와 CaRT CLI에 액세스할 수 있습니다.
CaRT CLI의 옵션에는 다음과 같은 우선순위가 적용됩니다.
~/.cart/cart.cfg의 옵션으로 대체됩니다.CaRT CLI에서 사용할 수 있는 옵션은 다음과 같습니다.
사용법: cart [options] file1 file2 ... fileN
CaRT 파일 형식은 악성코드 및 관련 메타데이터를 저장/전송하는 데 사용됩니다.
악성코드를 실행할 수 없도록 무력화하고 암호화하여 안티바이러스 소프트웨어가
CaRT 파일을 악성코드로 탐지하지 못하게 합니다.
positional arguments:
file
options:
-h, --help 도움말 메시지를 표시하고 종료합니다
-v, --version 프로그램 버전 번호를 표시하고 종료합니다
-d, --delete 작업이 성공하면 원본 파일을 삭제합니다
-f, --force 출력 파일이 이미 있으면 덮어씁니다
-i, --ignore 구성 파일의 RC4 키를 무시합니다
-j JSONMETA, --jsonmeta JSONMETA
헤더 메타데이터를 JSON blob으로 제공합니다
-k KEY, --key KEY 개인 RC4 키를 사용합니다 (base64 인코딩). unCaRT하려면 동일한 키를 제공해야 합니다.
-m, --meta CaRT를 추출할 때 메타데이터를 유지합니다
-n FILENAME, --name FILENAME
이 값을 메타데이터 파일 이름으로 사용합니다
-o OUTFILE, --outfile OUTFILE
출력 파일을 설정합니다
-s, --showmeta 파일 메타데이터만 표시합니다
CaRT는 파일을 CaRT 처리해야 하는지 unCaRT 처리해야 하는지 스스로 판단할 수 있습니다.
CaRT 처리되지 않은 파일을 CaRT하려면: cart file1
CaRT 처리된 파일을 unCaRT하려면: cart file1
동일한 명령입니다!
CaRT 구성 파일은 다음과 같습니다.
[global]
# rc4_key는 키의 base64 표현입니다
rc4_key: AvUzYXNkZg==
# keep_meta는 CLI의 -m과 동일합니다
keep_meta: True
# force는 CLI의 -f와 동일합니다
force: True
# default_header는 CaRT 파일의 선택적 헤더에 추가할 키/값 데이터 쌍입니다
[default_header]
poc: Your Name
poc_email: [email protected]
Rust 및 Java로 구현된 버전이 있습니다. 다음 주소에서 확인할 수 있습니다.