
정적 및 동적 분석 도구로, 악성 코드, 의심스러운 바이너리, 개인정보 침해를 탐지합니다.
설치 - 사용법 - 동적 분석 - YARA 규칙 - CI/CD
문서: English | Tiếng Việt
악성 코드, 의심스러운 바이너리 및 개인정보 침해를 탐지하기 위한 정적 및 동적 분석 도구입니다. 소스 코드, 컴파일된 실행 파일(.exe, .dll, .elf), macOS 번들(.app, .dmg, .pkg), 모바일 앱(.apk, .ipa) 및 애플리케이션 패키지를 YARA 규칙, Docker 샌드박스 기반 행동 분석, MobSF 모바일 분석, 페이로드 난독화 해제 및 다중 형식 보고서(JSON, HTML, SARIF)로 분석합니다.
pip install malware-check
pipx install malware-check
git clone https://github.com/momenbasel/malware-check.git
cd malware-check
pip install -e ".[dev]"
이로써 핵심 CLI가 설치됩니다. 바이너리 분석 (pefile/lief), AI 기반 파일 감지 (magika), YARA 스캐닝 (yara-python)은 선택적 추가 기능입니다.
# 코어 + 바이너리 분석 + AI 파일 감지 + YARA
pip install malware-check[full]
# 또는 필요한 것만 설치
pip install malware-check[binary]
pip install malware-check[detect]
pip install malware-check[yara]
# 또는 수동으로 추가 기능 설치
pip install pefile lief magika yara-python
pip install malware-check[detect]
설치된 경우, malware-check는 Magika를 사용하여 크로스 플랫폼 파일 식별을 개선하고, file_type 메타데이터를 풍부하게 하며, 확장자가 없거나 위장된 파일을 파일 이름 대신 콘텐츠를 기반으로 올바른 분석기로 라우팅합니다.
# Docker 필요 - https://docs.docker.com/get-docker/
# 샌드박스 이미지 빌드 (일회성 설정)
malware-check build-sandbox
malware-check info
info 명령은 Magika 기반 파일 감지가 사용 가능한지 보여줍니다.
Claude Code 스킬로 설치하여 Claude가 파일을 분석할 수 있도록 합니다:
# GitHub에서 스킬 설치
npx skills install momenbasel/malware-check --skill malware-check
# 또는 수동: skill/SKILL.md를 스킬 디렉토리에 복사
cp -r skill/ ~/.claude/skills/malware-check/
그런 다음 Claude Code에서 "이 파일을 악성코드 검사해줘" 또는 "이 바이너리는 안전한가요?"라고 말하면 Claude가 자동으로 malware-check를 사용합니다.
CLI 도구도 설치해야 합니다:
pip install malware-check pefile lief yara-python
도구를 설치하고 Codex 에이전트 지침에 추가하세요:
# 1. CLI 설치
pip install malware-check pefile lief yara-python
# 2. Codex 지침에 추가 (codex.md 또는 시스템 프롬프트)
echo '파일 악성코드 분석에는 `malware-check scan <path> --verbose`를 사용하세요.' >> AGENTS.md
# 3. 또는 Codex 스킬로 설치
cp -r skill/ .codex/skills/malware-check/
도구 사용 또는 사용자 지정 지침을 지원하는 모든 AI 코딩 에이전트의 경우:
# 1. 설치
pip install malware-check
# 2. 에이전트 지침에 추가:
# "코드/바이너리 악성코드 검사를 요청받으면 다음을 사용하세요: malware-check scan <target> --verbose"
# "보고서: malware-check scan <target> --format html -o report.html"
# "CI/CD: malware-check scan <target> --format sarif -o report.sarif --exit-code"
malware-check scan suspicious_file.py
# malware-check[detect]가 설치된 경우 최상의 결과
malware-check scan suspicious_payload --verbose
malware-check scan /path/to/project --verbose
# 먼저 샌드박스 빌드 (일회성)
malware-check build-sandbox
# 행동 분석으로 스캔
malware-check scan malware.exe --dynamic
malware-check scan /Applications/SuspiciousApp.app --dynamic --verbose
# JSON 보고서
malware-check scan target/ --format json -o report.json
# HTML 대시보드
malware-check scan target/ --format html -o report.html
# CI/CD용 SARIF
malware-check scan target/ --format sarif -o results.sarif
# 발견 시 0이 아닌 코드로 종료 (CI 게이트용)
malware-check scan . --format sarif -o results.sarif --exit-code
malware-check info
name: 보안 스캔
on: [push, pull_request]
jobs:
malware-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Python 설정
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: malware-check 설치
run: pip install malware-check
- name: 스캔 실행
run: malware-check scan . --format sarif -o results.sarif --exit-code
- name: SARIF 업로드
if: always()
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
malware-check/
├── src/malware_check/
│ ├── cli.py # Click CLI 진입점
│ ├── scanner.py # 오케스트레이터 + 선택적 Magika 기반 파일 감지
│ ├── models.py # Finding, FileAnalysis, ScanResult 데이터 모델
│ ├── analyzers/
│ │ ├── code.py # 소스 코드 패턴 매칭 (40개 이상 규칙)
│ │ ├── binary.py # PE/Mach-O/ELF 분석
│ │ ├── privacy.py # PII, 추적, 권한
│ │ ├── yara_engine.py # YARA 규칙 컴파일 및 스캐닝
│ │ └── dynamic.py # Docker 샌드박스 행동 분석
│ └── reporters/
│ ├── console_reporter.py # 리치 터미널 출력
│ ├── json_reporter.py # JSON 내보내기
│ ├── html_reporter.py # HTML 대시보드 (Jinja2)
│ └── sarif_reporter.py # CI/CD용 SARIF 2.1.0
├── rules/yara/ # 번들 YARA 규칙
├── tests/ # pytest 테스트 스위트
└── pyproject.toml # 프로젝트 메타데이터
사용자 정의 규칙을 임의의 디렉토리에 추가하고 --yara-rules로 전달하세요:
malware-check scan target/ --yara-rules /path/to/my/rules/
규칙은 심각도, 카테고리, 신뢰도, CWE 및 MITRE ATT&CK 매핑을 위한 메타데이터 필드를 지원합니다:
rule My_Custom_Rule {
meta:
description = "사용자 정의 악성코드 패턴 탐지"
severity = "critical"
category = "backdoor"
confidence = "0.90"
mitre = "T1059"
cwe = "CWE-94"
recommendation = "악성 코드 제거"
strings:
$pattern = "suspicious_string"
condition:
$pattern
}
Docker 샌드박스는 완전한 격리와 함께 행동 분석을 제공합니다:
모니터링되는 동작:
# 클론 및 개발 종속성 설치
git clone https://github.com/momenbasel/malware-check.git
cd malware-check
pip install -e ".[dev]"
# 선택 사항: 개발 중 Magika, YARA 및 바이너리 추가 기능 포함
pip install -e ".[dev,full]"
# 테스트 실행
pytest
# 린트
ruff check src/ tests/
MIT 라이선스 - 자세한 내용은 LICENSE를 참조하세요.
| 카테고리 | 탐지 예시 |
|---|
| 리버스 셸 | Python socket+subprocess, bash /dev/tcp, netcat, PowerShell TCPClient, socat |
| 백도어 | 웹 셸 (PHP/JSP/ASP.NET), 명령어 인젝션 (Python/JS/Java/Ruby/Go/C), 바인드 셸, 숨겨진 라우트, 원격 코드 로딩, 사용자 생성, SSTI, 안전하지 않은 역직렬화 |
| 난독화 | Base64+eval 체인, 문자 코드 구축, 16진수 페이로드, 동적 임포트 |
| 암호화폐 채굴기 | Stratum 풀 연결, 채굴 API, 지갑 주소 (BTC/ETH/XMR) |
| 랜섬웨어 | 파일 암호화 탐색, 랜섬 메시지, 암호화+이름 변경 패턴 |
| 자격 증명 탈취 | 하드코딩된 비밀, 클립보드 탈취, 환경 변수 수집, 브라우저 자격 증명 파일 |
| 공급망 | 의심스러운 npm/pip 설치 훅, 의존성 혼동, 사용자 정의 레지스트리 |
| 지속성 | Cron/schtasks 생성, 레지스트리 Run 키, LaunchAgent/Daemon, SUID 조작 |
| 권한 상승 | SUID 비트 조작, setuid(0), chown root |
| 분석 회피 | 디버거 탐지, VM 탐지, TLS 콜백, ptrace 사용 |
| 키로거 | GetAsyncKeyState, SetWindowsHookEx, pynput, CGEventTapCreate |
| 개인정보 | 추적 SDK (40개 이상), PII 필드 (주민등록번호, 신용카드, 생체인식, 건강), 침습적 권한, 기기 지문 인식 |
| 바이너리 지표 | 패킹된 바이너리 (UPX, 높은 엔트로피), RWX 섹션, 의심스러운 임포트, 서명되지 않음/변조됨 |
| 보호 | 구현 |
|---|
| 네트워크 격리 | --network none (기본값) |
| 메모리 제한 | 512MB |
| CPU 제한 | 1코어 |
| 프로세스 제한 | 100 PID |
| 읽기 전용 FS | /tmp 및 /evidence용 tmpfs와 함께 --read-only 사용 |
| 기능 | 모두 해제 (--cap-drop=ALL) |
| 권한 상승 | 차단 (--security-opt=no-new-privileges) |
| 타임아웃 | 설정 가능 (기본값 30초) |
| 기술 | ID | 탐지 |
|---|
| 명령 및 스크립팅 인터프리터 | T1059 | 리버스 셸, eval/exec 패턴 |
| 서버 소프트웨어 구성 요소: 웹 셸 | T1505.003 | PHP/JSP/ASP 웹 셸 |
| 난독화된 파일 또는 정보 | T1027 | Base64, 문자 코드, 16진수 인코딩 |
| 리소스 하이재킹 | T1496 | 암호화폐 채굴 풀 및 도구 |
| 영향에 대한 데이터 암호화 | T1486 | 랜섬웨어 파일 암호화 |
| 입력 캡처: 키로깅 | T1056.001 | 키보드 훅 및 로거 |
| 예약된 작업/잡 | T1053 | Cron, schtasks, LaunchAgent |
| 부팅 또는 로그온 자동 시작 | T1547 | 레지스트리 Run 키 |
| 프로세스 인젝션 | T1055 | VirtualAllocEx + WriteProcessMemory |
| 비밀번호 저장소에서 자격 증명 | T1555 | 브라우저 자격 증명 파일 접근 |
| 권한 상승 제어 남용 | T1548 | SUID 비트 조작 |
| 디버거 회피 | T1622 | 안티디버그 API 호출 |
| 공급망 손상 | T1195 | 악성 설치 훅 |