
악성코드 설정 및 페이로드 추출
샌드박스는 악성 파일을 격리된 환경에서 실행하여 동적 행동을 계측하고 포렌식 아티팩트를 수집하는 데 사용됩니다.
CAPE는 Cuckoo v1에서 파생되었으며 Windows 플랫폼에서 다음과 같은 핵심 기능을 제공합니다:
CAPE는 Cuckoo의 전통적인 샌드박스 출력을 여러 주요 추가 기능으로 보완합니다:
무료 데모 인스턴스가 온라인에 있어 누구나 사용할 수 있습니다:
https://capesandbox.com - 계정 활성화는 https://twitter.com/capesandbox를 방문하세요.
Cuckoo 샌드박스는 2010년 Google Summer of Code 프로젝트로 Honeynet Project 내에서 시작되었습니다. 원래 Claudio Guarnieri가 설계 및 개발했으며 첫 번째 베타 릴리스는 2011년에 발표되었습니다. 2014년 1월, Cuckoo v1.0이 출시되었습니다.
2015년은 중요한 해로, Cuckoo 역사에서 중요한 포크가 일어났습니다. 원래 모니터 및 API 후킹 방법의 개발이 주요 Cuckoo 프로젝트에서 중단되었습니다. Jurriaan Bremer가 만든 Linux 도구 체인을 통해 컴파일된 restructuredText 기반 시그니처 형식을 사용하는 대체 모니터로 교체되었습니다.
같은 시기에 Brad 'Spender' Spengler가 만든 Cuckoo-modified라는 포크는 64비트 지원 및 특히 Microsoft Visual Studio 컴파일러 도입을 포함한 중요한 개선 사항으로 원래 모니터 개발을 계속했습니다.
같은 해에 Context Information Security의 Kevin O'Reilly가 CAPE라는 동적 명령줄 설정 및 페이로드 추출 도구 개발을 시작했습니다. 이름은 'Config And Payload Extraction'의 약어로 만들어졌으며, 원래 연구는 Microsoft의 Detours 라이브러리가 제공하는 API 후크를 사용하여 언패킹된 악성코드 페이로드 및 설정을 캡처하는 데 중점을 두었습니다. 그러나 API 후크만으로는 임의의 악성코드에서 페이로드나 설정을 언패킹할 수 있을 만큼 충분한 성능과 정밀성을 제공하지 못한다는 것이 분명해졌습니다.
이러한 이유로 Microsoft 디버깅 인터페이스 사용을 피하면서 최대한 은밀하게 악성코드를 정밀하게 제어하고 계측할 수 있는 새로운 디버거 개념에 대한 연구가 시작되었습니다. 이 디버거는 API 후크와 결합하여 매우 강력한 기능을 제공하는 개념 증명 Detours 기반 명령줄 도구에 통합되었습니다.
초기 작업에서 Cuckoo-modified의 API 후킹 엔진으로 Microsoft Detours를 대체할 수 있다는 것이 입증되면서 CAPE 샌드박스에 대한 아이디어가 탄생했습니다. 디버거, 자동 언패킹, YARA 기반 분류 및 통합 설정 추출이 추가되어 2016년 9월 44con에서 CAPE 샌드박스가 처음으로 공개되었습니다: CAPE 버전 1.
2018년 여름, 프로젝트는 오랜 Cuckoo 기여자인 Andriy 'doomedraven' Brukhovetskyy의 막대한 기여가 시작되는 행운을 맞았습니다. 2019년에 그는 CAPE를 Python 3로 포팅하는 거대한 작업을 시작했으며, 그해 10월 CAPEv2가 출시되었습니다.
CAPE는 악성코드 및 운영 체제 기능의 발전에 맞춰 지속적으로 개발 및 개선되었습니다. 2021년에는 동적 YARA 스캔을 통해 폭파 중 CAPE의 디버거를 프로그래밍할 수 있는 기능이 추가되어 안티-샌드박스 기술에 대한 동적 우회를 생성할 수 있게 되었습니다. Windows 10이 기본 운영 체제가 되었으며, 기타 주요 추가 사항으로는 대화형 데스크톱, AMSI(악성코드 방지 검사 인터페이스) 페이로드 캡처, Microsoft Nirvana 기반 'syscall hooking', 디버거 기반 직접/간접 시스템 호출 대응 등이 있습니다.

CAPE에서는 세 가지 메커니즘을 통해 악성코드를 분류할 수 있습니다:

파싱은 CAPE 자체 프레임워크를 사용하여 수행할 수 있으며, 다음 프레임워크도 지원됩니다: RATDecoders, DC3-MWCP, MalDuck, 또는 MaCo
cape_utils.py에 의해 호출되는 진입점 def extract_config(data):을 가지며 복잡함이 없습니다.

CAPE는 언패킹된 페이로드 캡처를 위해 여러 악성코드 기술 또는 행동을 활용합니다:
이러한 행동은 추가 분석을 위해 인젝션, 추출 또는 압축 해제된 페이로드의 캡처로 이어집니다. 또한 CAPE는 각 프로세스에 대한 프로세스 덤프를 자동으로 생성하거나, DLL의 경우 메모리에 있는 DLL의 모듈 이미지를 생성합니다. 이는 간단한 패커로 패킹된 샘플의 경우 모듈 이미지 덤프가 완전히 언패킹되는 경우가 많기 때문에 유용합니다.
CAPE의 기본 '수동적' 언패킹 메커니즘 외에도 '능동적' 언패킹을 활성화할 수 있습니다. 이는 중단점을 사용하여 새로 할당되거나 보호된 메모리 영역에 쓰기를 감지하여 실행 전에 가능한 한 빨리 언패킹된 페이로드를 캡처합니다. 이는 웹 제출 체크박스를 통해 또는 unpacker=2 옵션을 지정하여 활성화되며, 폭파 품질에 영향을 줄 수 있으므로 기본적으로 비활성화되어 있습니다.
CAPE는 YARA 시그니처를 통해 특정 패커를 언패킹하도록 프로그래밍할 수 있습니다. 예를 들어, UPX 유형의 패커는 매우 일반적이며, CAPE에서는 이러한 패커가 언패킹된 페이로드를 수동적으로 캡처하더라도 기본 캡처는 언패킹된 페이로드가 실행을 시작한 후에 이루어집니다. 따라서 사용자 정의 YARA 시그니처를 통해 UPX 파생 패커를 동적으로 감지하고 최종 패커 명령어에 중단점을 설정하면 실행이 시작되기 전에 원래 진입점(OEP)에서 페이로드를 캡처할 수 있습니다.


dump-on-api 옵션을 사용하면 웹 인터페이스에서 지정할 수 있는 특정 API 함수(예: dump-on-api=DnsQuery_A)를 호출할 때 모듈을 덤프할 수 있습니다.
디버거를 통해 CAPE는 원래 기능을 넘어 계속 발전할 수 있었으며, 이제 동적 안티-회피 우회 기능을 포함합니다. 최신 악성코드는 가상화를 위한 타이밍 트랩이나 API 후크 탐지 등을 사용하여 샌드박스 내에서 분석을 회피하려고 시도하는 것이 일반적이므로, CAPE는 Yara 시그니처 내에서 디버거 동작을 결합하여 회피성 악성코드가 폭파될 때 감지하고 제어 흐름을 조작하여 샘플이 완전히 폭파되도록 하거나 회피 동작을 건너뛰도록 하는 동적 대응을 개발할 수 있습니다.

디버거에 대한 빠른 액세스는 제출 옵션 bp0에서 bp3까지 RVA 또는 VA 값을 받아 중단점을 설정하고, 그 후 count 및 depth 옵션(예: bp0=0x1234,depth=1,count=100)에 따라 짧은 명령어 추적이 출력됩니다.

모듈 진입점에 중단점을 설정하려면 주소 대신 ep를 사용합니다(예: bp0=ep). 또는 break-on-return을 사용하면 후크된 API의 반환 주소에 중단점을 설정할 수 있습니다(예: break-on-return=NtGetContextThread). 선택적 base-on-api 매개변수를 사용하면 API 호출로 RVA 중단점의 이미지 기준을 설정할 수 있습니다(예: base-on-api=NtReadFile,bp0=0x2345).

action0 - action3 옵션을 사용하면 중단점이 적중될 때 메모리 영역 덤프(예: action0=dumpebx) 또는 실행 제어 흐름 변경(예: action1=skip)과 같은 작업을 수행할 수 있습니다. CAPE`s 문서에는 이러한 작업에 대한 추가 예제가 포함되어 있습니다.
CAPE 모니터의 코드가 포함된 저장소는 별도로 존재합니다.
CAPE 커뮤니티에서 개발한 수백 개의 시그니처가 포함된 커뮤니티 저장소가 있습니다. 모든 새로운 커뮤니티 기능은 해당 저장소로 푸시되어야 합니다. 이후 개발자가 유지 관리할 수 있고 의지가 있다면 핵심으로 이동할 수 있습니다.
더 많은 악성코드 계열에 대한 새로운 시그니처, 파서 또는 우회를 만드는 데 도움을 주어 이 프로젝트에 기여해 주세요. 현재 많은 작업이 진행 중이니 계속 지켜봐 주세요.
@D00m3dR4v3n이 단독으로 CAPE를 Python 3로 포팅한 것에 대해 큰 감사를 드립니다.
Python3
루터만 루트로 실행해야 하며, 나머지는 cape 사용자로 실행해야 합니다. 루트로 실행하면 권한이 엉망이 됩니다.
conf 폴더 내의 모든 설정 파일을 읽으세요!kvm-qemu.sh 및 cape2.sh는 ssh 연결이 끊어질 경우 OS 문제를 방지하기 위해 tmux 세션에서 실행해야 합니다.<username>을 실제 패턴으로 바꾸세요.<WOOT>를 바꿔야 합니다!sudo ./kvm-qemu.sh all <username> 2>&1 | tee kvm-qemu.logsudo ./cape2.sh base 2>&1 | tee cape.logconf 폴더 내의 설정 파일을 수정하여 CAPE를 구성하세요.-h가 포함되어 있지만, 스크립트를 확인하여 __이해__하시기 바랍니다.git pullpython3 utils/community.py -waf 이해했는지 확인하려면 먼저 -h를 확인하세요.git add --all
git commit -m '[STASH]'
git pull --rebase origin master
# fix conflict (rebase) if needed
git reset HEAD~1
# make sure kevoreilly repo has been added as a remote (only needs to be done once)
git remote add kevoreilly https://github.com/kevoreilly/CAPEv2.git
# make sure all your changes are commited on the branch which you will be merging
git commit -a -m '<your commit message goes here>'
# fetch changes from kevoreilly repo
git fetch kevoreilly
# merge kevoreilly master branch into your current branch
git merge kevoreilly/master
# fix merge conflicts if needed
# push to your repo if desired
git push
작업에서 CAPEv2를 사용하는 경우 GitHub 메뉴의 '이 저장소 인용'에 지정된 대로 인용해 주세요.
pefile을 사용하는 경우가 그렇습니다.pefile 종속성을 제거하는 것입니다. Voila, 더 이상 고통이 없습니다.systemctl restart <service_name> 사용journalctl -u <service_name> 사용-h를 확인하세요. 디버그 모드(-d)로 서비스를 실행하는 것도 도움이 될 수 있습니다.