
Malware/IOC 수집 및 처리 엔진
_ ___ _
/\/\ __ _| | / _ (_)_ __ ___
/ \ / _` | |/ /_)/ | '_ \ / _ \
/ /\/\ \ (_| | / ___/| | |_) | __/
\/ \/\__,_|_\/ |_| .__/ \___|
|_|
MalPipe는 모듈식 멀웨어(및 지표) 수집 및 처리 프레임워크입니다. 여러 피드에서 멀웨어, 도메인, URL 및 IP 주소를 가져오고, 수집된 데이터를 강화한 후 결과를 내보내도록 설계되었습니다.
현재 다음 피드가 지원됩니다:
이 지침은 개발 및 테스트 목적으로 로컬 머신에서 프로젝트를 복사하여 실행하는 방법을 안내합니다. 실제 시스템에 프로젝트를 배포하는 방법에 대한 참고 사항은 배포 항목을 참조하세요.
MalPipe 배포에는 필요한 Python 라이브러리를 설치하고 다양한 모듈을 구성해야 합니다.
Python 종속성은 다음을 실행하여 설치할 수 있습니다:
pip install -r requirements.txt
시작하는 데 필요한 설정이 포함된 config_example.json에 예제 구성이 제공됩니다. 이 파일에는 각 피드/프로세서/내보내기 도구에 필요한 설정이 포함된 JSON 객체가 있습니다. 피드 설정에 대한 설명은 아래와 같습니다:
...
"feeds": {
...
"MalShare": {
"ENABLED" : true,
"API_KEY" : "00000000000000000000000000000000000000000000000000000000000",
"EXPORTERS" : ["DetailsPrinter", "JSONLog"],
"PROCESSORS" : ["YaraScan", "DNSResolver"]
},
...
일부 피드는 매일 업데이트되므로 피드는 예약형과 활성형 두 가지 형태로 제공됩니다. 이러한 피드가 실행되어야 하는 시점에 대한 설정은 구성 외부의 개별 모듈에 정의됩니다.
프로세서는 수집된 데이터를 강화/표준화하는 데 사용됩니다. 예를 들어 VirusTotal의 데이터는 수집된 각 파일에 대한 yara 결과를 포함하는 반면 MalShare는 그렇지 않습니다. PROCESSORS 키에 YaraScan을 추가하면 파일을 스캔하여 이 데이터도 포함시킬 수 있습니다.
모듈 설정 예시는 아래와 같습니다:
...
"processors": {
...
"YaraScan": {
"ENABLED" : false,
"RULES_PATH": "/yara_rules/Malware.yara"
},
...
현재 다음 프로세서가 구현되었습니다:
ASNLookupDNSResolverFileTypeRDNSYaraScan마지막 구성 요소는 내보내기 도구로, 데이터가 전달되는 위치를 제어합니다. 이를 사용하여 수집된 데이터를 멀웨어 저장소, SIEM, JSON 로그 파일로 내보내거나 사용자에게 출력할 수 있습니다.
...
"exporters": {
...
"JSONLog": {
"ENABLED" : true,
"PRETTY" : true,
"LOG_PATH": "./temp/"
},
...
현재 다음 내보내기 도구가 구현되었습니다:
DetailsPrinterGenericWebStorageJSONLogLocalFileStorage설정 후 MalPipe는 다음을 사용하여 실행할 수 있습니다:
python malpipe.py
MalPipe의 모듈은 유형별로 malpipe/에 위치합니다:
새 모듈 생성은 쉽습니다.
MalPipe 모듈은 Python 클래스로 정의됩니다. 다음은 모듈 헤더 예시입니다:
class ModuleName(Processor):
def __init__(self):
md = ProcessorDescription(
module_name="ModuleName",
description="Description",
authors=["Author Name"],
version="VersionNumber"
)
Processor.__init__(self, md)
self.types = ['ipaddresses']
self.parse_settings()
설정은 구성을 가져와서 클래스 변수로 설정할 수 있으며, 아래와 같습니다:
from malpipe.config import CONFIG
...
self.yara_rule_path = CONFIG['processors'][self.get_module_name()]['RULES_PATH']
각 프로세서는 피드에 의해 호출되는 run 함수를 가져야 합니다.
모듈 생성 후 설정은 config.json의 processors, feeds 또는 exporters 키 아래에 추가되어야 합니다. 새 모듈이 프로세서 또는 내보내기 도구인 경우 관련 피드에도 추가해야 합니다. 예시는 아래와 같습니다:
...
"processors": {
...
"SuperNewModule": {
"ENABLED" : true,
"DOCOOLSTUFF": true
},
...
"feeds": {
...
"0DayMalwareFeed": {
"ENABLED" : true,
"EXPORTERS" : ["DetailsPrinter", "JSONLog"],
"PROCESSORS" : ["SuperNewModule"]
}
...
문제가 있으면 이슈를 생성하거나 풀 리퀘스트를 시작하여 보고해 주세요. 추가 모듈이나 기능을 원하시면 이슈를 열어주시기 바랍니다.
이 프로젝트에 참여한 기여자 목록도 확인하세요.
이 프로젝트는 GNU General Public License v3.0에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE.md 파일을 참조하세요.