
Python, Redis 및 S3 기반 분산 악성코드 처리 프레임워크.
Python, Redis 및 S3 기반의 분산 맬웨어 처리 프레임워크.
Karton은 유연한 및 경량 맬웨어 분석 백엔드를 생성하기 위한 강력한 프레임워크입니다. 거의 노력 없이 맬웨어* 분석 시스템을 강력한 파이프라인에 연결하는 데 사용할 수 있습니다.
우리는 오랫동안 자동화 분야에 종사해 왔습니다. 점점 더 많은 위협을 처리하고 있으며, 사고에 대응하기 위해 모든 것을 자동화해야 합니다. 이 때문에 우리는 종종 duck duct tape와 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 모듈을 사용하여 맬웨어 샘플 및 분석에서 정적 구성을 추출합니다. 물고기가 아니라 낚싯대입니다 - 모듈 자체는 공유하지 않습니다. 그러나 자신만의 모듈을 작성하는 것은 쉽습니다!
파이프라인의 매우 중요한 부분입니다. Reporter는 분석 중에 생성된 모든 파일, 태그, 주석 및 기타 인텔을 MWDB에 제출합니다. 아직 MWDB를 사용하지 않거나 다른 백엔드를 선호하는 경우, 자신만의 reporter를 작성하는 것은 쉽습니다.
파이프라인의 모든 파일에 대해 Yara 규칙을 자동으로 실행하고 샘플에 적절히 태그를 지정합니다. 규칙은 포함되어 있지 않습니다 ;).
hex, base64 등과 같은 일반적인 방법으로 인코딩된 파일을 디코딩하는 Karton 시스템입니다. (얼마나 흔한지 믿기 어려울 것입니다).
컴파일된 AutoIt 실행 파일에서 포함된 AutoIt 스크립트와 리소스를 추출하는 AutoIt-Ripper의 작은 래퍼입니다.
게스트 OS에 에이전트가 필요 없는 DRAKVUF 엔진을 기반으로 하는 자동화된 블랙박스 맬웨어 분석 시스템입니다.
이러한 시스템을 사용하여 기본 맬웨어 분석 파이프라인을 형성하는 방법은 다음과 같습니다:
Qiling 프레임워크를 사용하여 UPX 및 기타 일반 패커의 압축을 푸는 모듈형 Karton 프레임워크 서비스입니다.
MalDuck을 위한 기능이 풍부한 모듈형 맬웨어 구성 추출 유틸리티
Karton 프레임워크용 Detect-It-Easy 분류기
Karton 프레임워크용 RetDec 언패커 모듈
모듈성을 고려한 맬웨어 유사성 플랫폼.
확장 가능한 Windows 드라이버 취약점 분석기 파이프라인.
