
Python, Redis 및 S3 기반 분산 악성코드 처리 프레임워크.
Python, Redis 및 S3 기반의 분산형 악성코드 처리 프레임워크입니다.
Karton은 유연하고 경량인 악성코드 분석 백엔드를 만들기 위한 견고한 프레임워크입니다. 매우 적은 노력으로 악성코드* 분석 시스템을 견고한 파이프라인으로 연결하는 데 사용할 수 있습니다.
우리는 오랫동안 자동화 분야에서 일해 왔습니다. 점점 더 많은 위협에 대처해야 하고, 사고에 뒤처지지 않기 위해 모든 것을 자동화해야 합니다. 이로 인해 우리는 종종 오리 덕트 테이프와 WD-40으로 붙여 놓은 많은 스크립트를 만들게 됩니다. 이러한 스크립트는 분석가가 급한 와중에 작성하며, 취약하고 보기 흉하지만 — 작동하고, 저장하고, 추가 처리하고, 다른 시스템으로 보내거나 다른 조직과 공유해야 하는 정보를 생산합니다.
우리는 PoC 스크립트를 분석 파이프라인에 쉽게 삽입할 방법이 필요했습니다. 또한 실행 모니터링, 로깅 중앙화, 견고성 향상, 개발 관성 감소를 원했습니다... 바로 이 목적을 위해 Karton을 만들었습니다.
* Karton은 악성코드 분석을 염두에 두고 설계되었지만, 모든 마이크로서비스 지향 프로젝트에서 잘 작동합니다.
설치는 단일 pip install 명령만큼이나 간단합니다:
pip3 install karton-core
전체 백엔드 환경을 설정하려면 S3 호환 스토리지와 Redis도 필요합니다. 자세한 내용은 문서를 참조하세요.
karton을 사용하려면 Karton을 상속하는 클래스를 제공해야 합니다.
from karton.core import Karton, Task, Resource
class GenericUnpacker(Karton):
"""
Performs sample unpacking
"""
identity = "karton.generic-unpacker"
filters = [
{
"type": "sample",
"kind": "runnable",
"platform": "win32"
}
]
def process(self, task: Task) -> None:
# Get sample object
packed_sample = task.get_resource("sample")
# Log with self.log
self.log.info(f"Hi {packed_sample.name}, let me analyze you!")
...
# Send our results for further processing or reporting
task = Task(
{
"type": "sample",
"kind": "raw"
},
payload={
"parent": packed_sample,
"sample": Resource(filename, unpacked)
},
)
self.send_task(task)
if __name__ == "__main__":
GenericUnpacker.main()
이 패키지는 "karton"이라는 명령줄 유틸리티도 제공합니다. 간단한 관리 작업에 사용할 수 있습니다(완전한 관리 도구로 설계되지는 않았습니다).
$ karton configure # create a new configuration file
$ karton list -s # list current binds
karton name version karton
------------------------------------------------------------------------
karton.yaramatcher 1.2.0 5.3.0
karton.autoit-ripper 1.2.1 5.3.3
karton.mwdb-reporter 1.3.0 5.3.2
$ karton logs # start streaming all system logs
$ karton delete karton.something # remove unused bind (will be GCed by system during the next operation)
일부 Karton 시스템은 범용적이며 모든 사람에게 유용합니다. 우리는 이를 커뮤니티와 공유하기로 했습니다.
이 저장소입니다. 시스템 내에서 작업을 디스패치하는 주요 서비스인 karton.system 서비스를 포함합니다. 또한 다른 시스템에서 라이브러리로 사용되는 karton.core 모듈도 포함합니다.
작업 및 큐 관리와 모니터링을 위한 작은 Flask 대시보드입니다.
"라우터"입니다. 샘플/파일을 인식하고 파일 형식에 따라 다양한 작업 유형을 생성합니다. 덕분에 다른 시스템은 특정 형식의 작업(예: zip 아카이브만)만 수신할 수 있습니다.
범용 아카이브 언패커입니다. 시스템에 업로드된 아카이브가 추출되고, 모든 파일이 개별적으로 처리됩니다.
악성코드 추출기입니다. Yara 규칙과 Python 모듈을 사용하여 악성코드 샘플과 분석에서 정적 구성을 추출합니다. 이는 낚싯대이지 물고기가 아닙니다 — 모듈 자체는 공유하지 않습니다. 하지만 직접 작성하기는 쉽습니다!
파이프라인의 매우 중요한 부분입니다. 리포터는 분석 중 생성된 모든 파일, 태그, 댓글 및 기타 정보를 MWDB에 제출합니다. 아직 MWDB를 사용하지 않거나 다른 백엔드를 선호한다면, 자체 리포터를 작성하기 쉽습니다.
파이프라인의 모든 파일에 Yara 규칙을 자동으로 실행하고 샘플에 적절히 태그를 지정합니다. 규칙은 포함되지 않습니다 ;).
hex, base64 등과 같은 일반적인 방법으로 인코딩된 파일을 디코딩하는 Karton 시스템입니다. (얼마나 흔한지 믿지 못할 것입니다).
컴파일된 AutoIt 실행 파일에서 내장된 AutoIt 스크립트와 리소스를 추출하는 AutoIt-Ripper 주변의 작은 래퍼입니다.
DRAKVUF 엔진을 기반으로 한 자동화된 블랙박스 악성코드 분석 시스템으로, 게스트 OS에 에이전트가 필요하지 않습니다.
다음은 이러한 시스템을 사용하여 기본 악성코드 분석 파이프라인을 구성하는 방법입니다:
Qiling Framework를 사용하여 UPX 및 기타 일반적인 패커를 언패킹하는 모듈식 Karton Framework 서비스입니다.
MalDuck을 위한 기능이 풍부한 모듈식 악성코드 구성 추출 유틸리티
Karton 프레임워크용 Detect-It-Easy 분류기
Karton 프레임워크용 RetDec 언패커 모듈
모듈성을 염두에 둔 악성코드 유사도 플랫폼입니다.
확장 가능한 Windows 드라이버 취약점 분석 파이프라인입니다.
