
静的および動的解析ツール:悪意のあるコード、不審なバイナリ、プライバシー侵害を検出
インストール - 使い方 - 動的解析 - 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によるバイナリ解析、magikaによるAI搭載ファイル検出、yara-pythonによるYARAスキャンはオプションの拡張機能です。
# コア + バイナリ解析 + 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
# 発見事項がある場合に非ゼロコードで終了 (CIゲート用)
malware-check scan . --format sarif -o results.sarif --exit-code
malware-check info
name: Security Scan
on: [push, pull_request]
jobs:
malware-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install malware-check
run: pip install malware-check
- name: Run scan
run: malware-check scan . --format sarif -o results.sarif --exit-code
- name: Upload 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 # Richターミナル出力
│ ├── 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フィールド (SSN, クレジットカード, 生体情報, 健康情報), 不正なパーミッション, デバイスフィンガープリンティング |
| バイナリ指標 | パック済みバイナリ (UPX, 高エントロピー), RWXセクション, 不審なインポート, 未署名/改変コード |
| 保護 | 実装 |
|---|
| ネットワーク分離 | --network none (デフォルト) |
| メモリ制限 | 512MB |
| CPU制限 | 1コア |
| プロセス制限 | 100 PID |
| 読み取り専用ファイルシステム | --read-only (tmpfs for /tmp and /evidence) |
| ケーパビリティ | すべて削除 (--cap-drop=ALL) |
| 権限昇格 | ブロック (--security-opt=no-new-privileges) |
| タイムアウト | 設定可能 (デフォルト30秒) |
| テクニック | ID | 検出 |
|---|
| コマンドおよびスクリプティングインタープリター | T1059 | リバースシェル、eval/execパターン |
| サーバーソフトウェアコンポーネント:Web Shell | T1505.003 | PHP/JSP/ASP Webシェル |
| 難読化されたファイルまたは情報 | T1027 | Base64、文字コード、16進エンコーディング |
| リソースハイジャック | T1496 | 暗号通貨マイニングプールとツール |
| 影響のためのデータ暗号化 | T1486 | ランサムウェアファイル暗号化 |
| 入力キャプチャ:キーロギング | T1056.001 | キーボードフックとロガー |
| スケジュールタスク/ジョブ | T1053 | Cron、schtasks、LaunchAgent |
| 起動またはログオン自動起動 | T1547 | レジストリRunキー |
| プロセスインジェクション | T1055 | VirtualAllocEx + WriteProcessMemory |
| パスワードストアからの認証情報 | T1555 | ブラウザ認証情報ファイルアクセス |
| 昇格制御の悪用 | T1548 | SUIDビット操作 |
| デバッガ回避 | T1622 | アンチデバッグAPI呼び出し |
| サプライチェーン侵害 | T1195 | 悪意のあるインストールフック |