Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
how_to_become_a_malware_analyst — Guide organisé pour devenir analyste en malware, couvrant les connaissances essentielles, l'ingénierie inverse, les outils d'analyse et l'apprentissage assisté par LLM avec des exercices pratiques et des ressources. | Kitploit
Outils/GitHubGitHub/pinksawtooth/how_to_become_a_malware_analyst
Criminalistique MémoireRétro-ingénierieAnalyse de MalwareCriminalistique NumériqueCTFAnalyse de BinairesApprentissage et ÉducationRessources OrganiséesParcours et Cours

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Labs et Pratique
GitHubpinksawtooth/how_to_become_a_malware_analyst

how_to_become_a_malware_analyst

Guide organisé pour devenir analyste en malware, couvrant les connaissances essentielles, l'ingénierie inverse, les outils d'analyse et l'apprentissage assisté par LLM avec des exercices pratiques et des ressources.

Voir le dépôt
279638il y a 3 joursVérifié par Kitploit

Méthodes d'apprentissage pour devenir analyste de malware (work-in-progress)

Ceci est l'opinion personnelle de @PINKSAWTOOTH et ce n'est peut-être pas forcément la meilleure méthode pour vous. J'espère que vous pourrez vous en servir comme exemple de méthode d'apprentissage.

Avant de lire ceci, l'analyste de malware que je respecte, @hasherezade, a résumé dans un blog comment commencer l'apprentissage de l'analyse de malware. Il y aura probablement des parties redondantes, mais je vous recommande d'y jeter un coup d'œil. De plus, comme les blogs ci-dessous sont principalement des sources en anglais, je souhaite présenter autant que possible des sources centrées sur le japonais.

  • https://hshrzd.wordpress.com/how-to-start/

[!NOTE]

Ajout 2026 : Apprentissage de l'analyse de malware à l'ère des LLM

À l'époque où j'ai commencé à écrire cette page, les LLM et les AI Agent n'étaient pas utilisables quotidiennement comme aujourd'hui. En 2026, si vous étudiez l'analyse de malware ou le reverse engineering, je vous recommande d'utiliser activement les LLM en plus des livres et des ressources en ligne. Ils sont particulièrement utiles pour la création de programmes d'apprentissage, l'explication de code et d'assembleur, l'analyse, la création de scripts d'analyse, l'organisation des résultats d'analyse, etc.

D'un autre côté, les situations où les LLM surpassent les humains dans de nombreuses techniques d'analyse se multiplient. Cependant, cela ne signifie pas pour autant que les connaissances fondamentales soient devenues inutiles. Pour comprendre les sorties des LLM et vérifier soi-même leurs fondements et leur exactitude, il est important de posséder des connaissances spécialisées (même si le jour où ce travail perdra son sens est peut-être proche...). Dans cet article, nous partons du principe d'utiliser les LLM non pas comme un « dispositif qui donne des réponses », mais comme un « enseignant avec qui apprendre, un assistant lors de l'analyse ».

Connaissances préalables à l'analyse de malware

Tout d'abord, j'explique brièvement les connaissances préalables à l'analyse de malware. Avant d'apprendre l'analyse de malware, des connaissances minimales en informatique (science informatique) sont nécessaires.

  • Architecture des ordinateurs
  • Réseaux informatiques
  • Systèmes d'exploitation
  • Langages de programmation
  • Structures de données et algorithmes
  • etc...

Pour ces éléments, il suffit de comprendre le contenu enseigné dans les universités ou les écoles spécialisées. (En consultant les syllabus en ligne de certaines universités, vous pourrez découvrir des contenus plus concrets.) Dans cet article, la manière d'apprendre les langages de programmation et l'informatique sort du cadre, mais voici les ressources recommandées.

  • コンピュータはなぜ動くのか 知っておきたいハードウエア&ソフトウエアの基礎知識
  • プログラムはなぜ動くのか 第3版 知っておきたいプログラミングの基礎知識
  • インテル® 64および IA-32 アーキテクチャのソフトウェア開発者向けマニュアル (最新)
  • IA-32 インテル® アーキテクチャー・ソフトウェア・デベロッパーズ・マニュアル、上巻: 基本アーキテクチャー (日本語:古い)
  • IA-32 インテル® アーキテクチャー・ソフトウェア・デベロッパーズ・マニュアル、中巻 A: 命令セット・リファレンス A-M(日本語:古い)
  • IA-32 インテル® アーキテクチャー・ソフトウェア・デベロッパーズ・マニュアル、中巻 B: 命令セット・リファレンス N-Z(日本語:古い)
  • IA-32 インテル® アーキテクチャー・ソフトウェア・デベロッパーズ・マニュアル、下巻: システム・プログラミング・ガイド(日本語:古い)
  • マスタリングTCP/IP 入門編(第6版)
  • CS50x
  • CS50.jp

Connaissances nécessaires à l'analyse de malware

Je divise les connaissances nécessaires à l'analyse de malware en cinq grandes catégories.

  • Connaissances sur les techniques d'analyse de malware, le comportement des malwares, et l'implémentation et les méthodes de réalisation des techniques d'exploitation
  • Connaissances sur le développement de programmes cibles du reverse engineering
  • Connaissances sur le reverse engineering
  • Connaissances sur les outils d'analyse
  • Connaissances sur les LLM et l'automatisation de l'analyse

Connaissances sur les techniques d'analyse de malware, le comportement des malwares, et l'implémentation et les méthodes de réalisation des techniques d'exploitation

Tout d'abord, il est nécessaire d'apprendre ce qu'est un malware et en quoi consiste le travail d'analyse de malware. Je présente les ressources et livres recommandés pour apprendre l'analyse de malware en général.

  • セキュリティ・キャンプ全国大会2015でのマルウエア分析講義
    • Il s'agit d'un cours d'analyse de malware donné lors du Security Camp National Convention 2015 par M. Nakatsuru (@you0708).
  • 初めてのマルウェア解析
    • Un livre qui couvre en japonais les bases jusqu'aux contenus avancés de l'analyse de malware en général.
  • リバースエンジニアリングツールGhidra実践ガイド
    • Un livre dont je suis l'un des auteurs, permettant d'apprendre l'implémentation des malwares à travers l'analyse statique avec Ghidra.
  • リバースエンジニアリング入門 @IT連載
    • Un article expliquant l'analyse de shellcode par MM. Kawakotani, Aoki et Iwamura de Nippon Telegraph and Telephone Corporation.
  • アナライジング・マルウェア
    • Publié en 2010, le contenu est devenu obsolète, mais c'est un livre rare qui aborde l'analyse de malware avec la contrainte de ne pas lire l'assembleur.
  • MWS Cup
    • Un concours de techniques d'analyse de malware organisé par le comité d'organisation MWS sous l'égide du groupe d'étude Computer Security (CSEC) de l'IPSJ. Les problèmes passés et leurs corrigés sont publiés et constituent une référence utile.
  • CS6038/CS5138 Malware Analysis, UC
    • Supports de cours d'analyse de malware de l'University of Cincinnati. Le contenu est mis à jour chaque année et des échantillons pour les exercices sont distribués, ce qui est recommandé. Publié gratuitement.
  • Practical Malware Analysis
    • Un livre en anglais expliquant en détail l'analyse de malware en général. Les échantillons et les corrigés sont publiés, ce qui permet d'apprendre en faisant les exercices.
  • malware_training_vol1 by hasherezade
    • Supports de formation à l'analyse de malware par @hasherezade. WIP, mais des échantillons pour les exercices sont distribués, ce qui est recommandé.
  • Malware Analysis - CSCI 4976

Les formations en ligne d'analyse de malware sont également recommandées.

  • The Beginner Malware Analysis Course
    • Formation d'introduction à l'analyse de malware par @0verfl0w
  • From Zero to Hero
  • Formation pratique à l'analyse de malware par @0verfl0w et @vk_intel
  • Zero2Automated
  • Formation avancée à l'analyse de malware par @0verfl0w et @vk_intel
  • OpenSecurityTraining2
    • Supports de cours gratuits permettant d'apprendre l'assembleur x86/x64, le reverse engineering, les structures internes de Windows, etc. Des exercices sont également prévus.

Je présente des pages qui résument le comportement des malwares et les techniques d'exploitation.

  • Malware Behavior Catalog (MBC)
    • Un catalogue spécialisé dans l'analyse de malware, systématisant les objectifs (Objective), les comportements (Behavior) et les caractéristiques au niveau du code des malwares. En le mettant en correspondance avec ATT&CK, les comportements importants pour l'analyse de malware y sont organisés.
  • capa-rules
    • Un ensemble de règles utilisées par capa pour identifier les fonctionnalités. En lisant les règles, on peut apprendre sous quelles caractéristiques binaires apparaissent les fonctionnalités et techniques représentatives des malwares.
  • MITRE ATT&CK
    • Les méthodes, techniques et procédures d'attaque y sont définies comme un framework, ce qui est utile pour apprendre non seulement l'analyse de malware mais aussi les cyberattaques en général.
  • ired.team
    • Présentation des techniques utilisées par les pentesters, les red teams et les attaquants, ainsi que de leur implémentation
  • malpedia
    • Les rapports d'analyse sont regroupés par famille de malware.
  • Ten process injection techniques: A technical survey of common and trending process injection techniques
    • Présentation des techniques d'injection de code
  • Code Injection demos by hasherezade
    • Implémentation des techniques d'injection de code
  • Evasion techniques by cpr
    • Résumé des techniques d'évasion de l'analyse des malwares
  • Al-Khaser
    • Outil OSS et code source implémentant des fonctionnalités anti-analyse des malwares

Les blogs et rapports traitant des informations sur les menaces et de l'analyse de malware publiés quotidiennement constituent également d'importantes sources d'information. Il est pratique de configurer des notifications de mise à jour via un lecteur RSS, etc. Il existe aussi des sites qui les regroupent, que vous pouvez utiliser.

  • AlienVault - Open Threat Exchange
  • Vx Underground - Malware Analysis

Parmi ceux-ci, je présente ceux qui traitent en japonais d'analyses détaillées de malwares.

  • Japan Security Analyst Conference
  • JPCERTコーディネーションセンター公式ブログ
  • LACレポート by 石川 芳浩氏
  • 標的型攻撃の実態と対策アプローチ by マクニカネットワークス(最新記事をリンク)
  • NTT Security Japan Technical blog
  • MBSD Blog
  • fortinetブログ 脅威リサーチ
  • Unit42ブログ
  • トレンドマイクロ セキュリティブログ

Par ailleurs, la lecture des règles YARA permet d'apprendre les caractéristiques des malwares.

  • コミュニティのYARAルール
  • Neo23x0のYARAルール
  • CAPEv2のYARAルール​
  • ESETのYARAルール​
  • JPCERTのYARAルール​
  • awesome-yara

Connaissances sur le développement de programmes cibles du reverse engineering

Le reverse engineering ne représente qu'une partie de l'analyse de malware, mais c'est un passage obligé pour devenir analyste de malware. Il est difficile d'identifier l'intégralité des fonctionnalités d'un malware ou les algorithmes utilisés uniquement par l'analyse dynamique à l'aide d'un sandbox ou d'outils (à l'exception du débogage manuel).

Pour pratiquer le reverse engineering, il est nécessaire de comprendre le code source d'origine. (En supposant l'environnement Windows courant dans l'analyse de malware) Faire de l'analyse de malware sans expérience de la programmation avec l'API Windows serait un détour.

Microsoft publie la documentation officielle et des exemples pour l'API Windows. ※Attention, certaines parties peuvent s'afficher de manière incorrecte lorsqu'elles sont traduites en japonais

  • Windows API - Microsoft Learn
  • Windows classic samples

Les livres suivants sont recommandés pour apprendre le fonctionnement du système d'exploitation Windows.

  • インサイドWindows 第7版 上
    • Permet d'apprendre les bases des structures internes de Windows : architecture système, processus, threads, gestion de la mémoire, I/O, etc.
  • インサイドWindows 第7版 下
    • Traite des mécanismes système, de la virtualisation, du diagnostic et du traçage, du système de fichiers, du processus de démarrage, etc.
  • Windowsセキュリティインターナル
    • Permet d'apprendre l'authentification, l'autorisation, l'audit et les mécanismes de sécurité du noyau de Windows, avec des expérimentations via PowerShell.

Connaître aussi les langages et runtimes autres que C/C++

Le C/C++ reste aujourd'hui très important pour apprendre le reverse engineering des malwares Windows, et je le recommande comme premier langage à apprendre. D'un autre côté, les cibles d'analyse réelles ne se limitent pas au C/C++. En 2026, il est utile de connaître au moins les caractéristiques des binaires et runtimes suivants.

  • C / C++ : code natif, API Windows, CRT, optimisations du compilateur
  • .NET : CLR, CIL/MSIL, métadonnées, obfuscation
  • Go : runtime Go, goroutine, informations de chaînes et de types, structure binaire propre à Go
  • Rust : gestion panic/unwind, name mangling, bibliothèque standard, génération de code par génériques et optimisations
  • Python : exécutables empaquetés avec PyInstaller etc., bytecode Python

Il n'est pas nécessaire d'apprendre en profondeur tous les langages dès le début. Gardez à l'esprit que lorsque le langage de développement ou le runtime change, les connaissances nécessaires changent également.

Connaissances sur le reverse engineering

Une fois que vous avez acquis les compétences en programmation dans le langage et l'environnement cibles de l'analyse, étudiez le reverse engineering. Lors de l'analyse de fichiers PE Windows courants dans l'analyse de malware, commencez par faire du reverse engineering sur un programme d'introduction en C ou C++. Comme étape suivante, analysez un fichier PE utilisant l'API Win que vous avez compilé vous-même (dont le code source existe). Même avec le même code source, en changeant le projet choisi ou les options de compilation et d'édition de liens, et en observant les changements qui apparaissent dans l'exécutable, vous acquerrez considérablement de compétences en reverse engineering.

Méthode d'apprentissage recommandée en 2026 : faire créer des programmes d'entraînement par un LLM

Auparavant, je recommandais de chercher des exemples Microsoft ou du code sur GitHub et d'apprendre en les modifiant. Cette méthode reste efficace aujourd'hui, mais en 2026, faire créer par un LLM ou un Coding Agent un petit programme adapté à son objectif d'apprentissage est également très efficace.

Par exemple, commencez par faire générer un petit programme d'environ 10 à 50 lignes.```text CreateFileWとWriteFileを使ってテキストファイルを作成する、 できるだけ小さなWindows Cプログラムを作ってください。 リバースエンジニアリングの教材に使いたいので、 処理を複雑にせず、各Windows APIを使う理由も説明してください。

root@kitploit:~
生成されたコードを、Microsoft Learnのドキュメントと照らし合わせながら内容を確認し、自分でコンパイルします。
その後、GhidraやIDAなどで自分がコンパイルしたバイナリを解析し、元のソースコードと逆アセンブル・デコンパイル結果を比較します。

以下のループで勉強します。```text
LLMに小さなコードを作らせる
        ↓
ソースコードを読む・APIを調べる
        ↓
自分でビルドする
        ↓
Ghidraなどで解析する
        ↓
元のソースコードと比較する
        ↓
分からない部分だけLLMに質問する
        ↓
別の条件で再ビルドして比較する

Par exemple, il peut être utile de comparer les éléments suivants pour le code source d'un même traitement.

  • Debug / Release
  • Sans optimisation / Avec optimisation (-O0 / -O2, sous MSVC /Od / /O2, etc.)
  • x86 / x64
  • Avec symboles / Sans symboles
  • Différents compilateurs tels que MSVC / Clang / GCC
  • Différents langages tels que C / C++ / Rust / Go

Analyser un binaire en connaissant le code source d'origine constitue un excellent entraînement pour apprendre le reverse engineering.

Pour affiner davantage vos compétences en reverse engineering, il est recommandé de résoudre des épreuves de Rev en CTF ou des Crackme. Les problèmes portant sur des fichiers PE ou destinés aux analystes de malware sont particulièrement recommandés.

  • The Flare On Challenge
    • Un CTF axé sur les techniques d'analyse de malware, organisé par l'équipe FLARE de Mandiant (Google).
  • Beginner Malware Reversing Challenges by MalwareTech
    • Exercices d'analyse de malware pour débutants proposés par MalwareTech
  • reversing.kr
    • Site de distribution de CrackMe, majoritairement au format PE
  • crackmes.one
    • Site de publication de CrackMe

De plus, dans le reverse engineering de malware, il est fréquent de devoir faire du reverse engineering sur le traitement d'algorithmes cryptographiques ; il est donc recommandé d'apprendre les bases de la cryptographie. Une fois l'algorithme compris, lisez le code source d'implémentations open source d'algorithmes cryptographiques publiées sur GitHub ou ailleurs, et essayez de les reverse engineerer vous-même.

  • Introduction à la cryptographie, 3e édition
  • OpenSSL Project
  • Network Security Services
  • Crypto++ Library
  • wolfSSL

Connaissances sur les outils d'analyse

Dans le cadre de l'analyse de malware, l'utilisation de meilleurs outils ou la maîtrise de ces outils peut faciliter l'analyse. De plus, même avec des connaissances variées, l'analyse passe en pratique par des outils, il est donc nécessaire de comprendre comment les utiliser.

Pour la gestion de l'installation et de la mise à jour des outils d'analyse, FLARE-VM, publié par Mandiant, est pratique sous Windows. Il permet d'installer en une fois les outils nécessaires à l'analyse de malware et au reverse engineering.

Sous Linux, REMnux est disponible. Celui-ci regroupe également les outils nécessaires à l'analyse de malware, et vous pouvez consulter la liste des outils inclus.

FLARE-VM et REMnux permettent tous deux de construire facilement un environnement d'analyse de malware, et sont donc recommandés même pour une première création d'environnement d'analyse. En consultant les outils inclus dans chacun et en les essayant concrètement, vous pourrez apprendre quels types d'outils d'analyse existent et dans quelles situations les utiliser.

Il est également utile d'essayer les outils présentés dans les liens suivants.

  • awesome-reversing
  • Awesome Malware Analysis
  • Awesome Ghidra

Apprentissage et analyse à l'aide de LLM et d'agents de codage

Utiliser un LLM comme professeur

L'une des utilisations pratiques d'un LLM est de s'en servir comme professeur à qui l'on peut poser des questions sur le champ pour ce que l'on ne comprend pas. Avant l'apparition des LLM, il fallait rechercher soi-même ce que l'on ne comprenait pas et en assimiler le contenu. En particulier pour les débutants, il était souvent difficile de savoir quoi rechercher en premier lieu, ce qui constituait un obstacle à l'apprentissage. Aujourd'hui, un LLM doté de connaissances de haut niveau explique patiemment autant de fois que nécessaire, en s'adaptant à votre niveau de compréhension. Si vous ne comprenez pas, vous pouvez simplement reposer la question, et vous pouvez aussi demander « explique plus simplement », « donne un exemple concret », « vérifie si ma compréhension est correcte », etc. Je pense que nous vivons une époque formidable où, avec de la motivation, on peut apprendre en posant autant de questions que l'on veut sur ce que l'on ne comprend pas.

Par exemple, concernant les résultats de désassemblage ou de décompilation, vous pouvez poser les questions suivantes.```text この関数の役割と、そう判断できる理由を教えてください。

root@kitploit:~
## インストール

### 前提条件

- Python 3.8以上
- pip

### インストール手順

1. リポジトリをクローンします:

```bash
git clone https://github.com/yourusername/kitploit-tool.git
cd kitploit-tool
  1. 依存関係をインストールします:
root@kitploit:~
pip install -r requirements.txt
  1. ツールをインストールします:
root@kitploit:~
pip install .

Dockerを使用する場合

root@kitploit:~
docker build -t kitploit-tool .
docker run -it kitploit-tool --help

使用方法

基本的な使い方

root@kitploit:~
kitploit-tool --target example.com

オプション

オプション説明
-t, --targetスキャン対象のターゲットを指定します
-o, --output出力ファイルを指定します
-v, --verbose詳細な出力を有効にします

使用例

root@kitploit:~
# 単一ターゲットのスキャン
kitploit-tool -t 192.168.1.1

# 出力ファイルを指定してスキャン
kitploit-tool -t example.com -o results.txt

# 詳細モードでスキャン
kitploit-tool -t example.com -v

設定

設定ファイルは ~/.config/kitploit-tool/config.yaml に配置されます。

root@kitploit:~
timeout: 30
threads: 10
verbose: false
output_format: json

環境変数

変数名説明
KITPLOIT_TIMEOUTタイムアウト値を秒単位で設定します
KITPLOIT_THREADS使用するスレッド数を設定します
KITPLOIT_DEBUGデバッグモードを有効にします

出力形式

ツールは以下の形式で出力をサポートしています:

  • JSON: 構造化されたデータ出力
  • CSV: 表形式のデータ出力
  • XML: マークアップ形式のデータ出力
  • テキスト: プレーンテキスト出力

JSON出力の例

root@kitploit:~
{
  "target": "example.com",
  "status": "success",
  "findings": [
    {
      "type": "vulnerability",
      "severity": "high",
      "description": "SQLインジェクションの脆弱性が検出されました"
    }
  ]
}

トラブルシューティング

よくある問題

問題: ツールが起動しない

解決策: Pythonのバージョンが3.8以上であることを確認してください。

root@kitploit:~
python --version

問題: 依存関係のインストールに失敗する

解決策: pipを最新バージョンにアップグレードしてください。

root@kitploit:~
pip install --upgrade pip

問題: 権限エラーが発生する

解決策: 適切な権限で実行するか、sudoを使用してください。

root@kitploit:~
sudo kitploit-tool -t example.com

貢献

貢献を歓迎します!以下の手順に従ってください:

  1. リポジトリをフォークします
  2. 機能ブランチを作成します (git checkout -b feature/amazing-feature)
  3. 変更をコミットします (git commit -m 'Add amazing feature')
  4. ブランチにプッシュします (git push origin feature/amazing-feature)
  5. プルリクエストを作成します

ライセンス

このプロジェクトはMITライセンスの下でライセンスされています。詳細については LICENSE ファイルを参照してください。

免責事項

このツールは教育および倫理的なテスト目的のみを意図しています。許可なくシステムをスキャンまたは攻撃するためにこのツールを使用することは違法です。ユーザーは自分の行動に対して全責任を負います。```text このデコンパイル結果から変数の型を推定したいです。 型を判断するために、どの命令、API、参照先を確認すべきですか?

root@kitploit:~
## 検出ルールのカスタマイズ

`config/detection_rules.yaml` を編集して、検出ルールをカスタマイズできます。

```yaml
rules:
  - name: "AWS Access Key"
    pattern: "AKIA[0-9A-Z]{16}"
    severity: "critical"
    description: "AWS Access Key IDが検出されました"
    enabled: true

  - name: "Slack Token"
    pattern: "xox[baprs]-[0-9a-zA-Z]{10,48}"
    severity: "high"
    description: "Slackトークンが検出されました"
    enabled: true

  - name: "Generic API Key"
    pattern: "(?i)(api[_-]?key|apikey)[\"']?\\s*[:=]\\s*[\"']?([a-zA-Z0-9_\\-]{16,})"
    severity: "medium"
    description: "汎用APIキーが検出されました"
    enabled: true

ルールパラメータ

カスタムルールの追加

root@kitploit:~
rules:
  - name: "Custom Internal Token"
    pattern: "INTERNAL_[A-Z0-9]{32}"
    severity: "high"
    description: "社内トークンが検出されました"
    enabled: true

除外設定

特定のファイルやディレクトリをスキャン対象から除外できます。

除外パターンの設定

config/exclude_patterns.yaml:

root@kitploit:~
exclude:
  paths:
    - "node_modules/**"
    - "vendor/**"
    - ".git/**"
    - "*.min.js"
    - "*.min.css"
    - "test/fixtures/**"

  extensions:
    - ".png"
    - ".jpg"
    - ".gif"
    - ".svg"
    - ".ico"
    - ".woff"
    - ".woff2"
    - ".ttf"
    - ".eot"

  files:
    - "package-lock.json"
    - "yarn.lock"
    - "Gemfile.lock"
    - "poetry.lock"

インライン除外

コード内でインラインコメントを使用して、特定の行をスキャン対象から除外できます。

root@kitploit:~
# gitleaks:allow
API_KEY = "test_key_for_development"

# secret-scan:ignore-next-line
password = "dummy_password"
root@kitploit:~
// gitleaks:allow
const apiKey = "test_key";

// secret-scan:ignore-next-line
const password = "dummy_password";

除外の優先順位

  1. インライン除外コメント(最優先)
  2. ファイル単位の除外
  3. ディレクトリ単位の除外
  4. 拡張子による除外

出力形式

JSON形式

root@kitploit:~
secret-scan scan --format json --output results.json
root@kitploit:~
{
  "scan_info": {
    "target": "./src",
    "start_time": "2024-01-15T10:30:00Z",
    "end_time": "2024-01-15T10:30:15Z",
    "duration_seconds": 15,
    "files_scanned": 1250,
    "rules_count": 45
  },
  "findings": [
    {
      "rule_name": "AWS Access Key",
      "severity": "critical",
      "file": "src/config/aws.py",
      "line": 42,
      "column": 15,
      "match": "AKIA***************",
      "context": "aws_access_key = \"AKIA***************\"",
      "commit": "abc123def456",
      "author": "[email protected]"
    }
  ],
  "summary": {
    "total_findings": 1,
    "critical": 1,
    "high": 0,
    "medium": 0,
    "low": 0
  }
}

SARIF形式

root@kitploit:~
secret-scan scan --format sarif --output results.sarif

SARIF形式は、GitHub Code Scanningやその他のセキュリティツールとの統合に適しています。

CSV形式

root@kitploit:~
secret-scan scan --format csv --output results.csv
root@kitploit:~
rule_name,severity,file,line,column,match
AWS Access Key,critical,src/config/aws.py,42,15,AKIA***************

テキスト形式(デフォルト)

root@kitploit:~
secret-scan scan --format text
root@kitploit:~
[CRITICAL] AWS Access Key
  File: src/config/aws.py:42:15
  Match: AKIA***************
  Description: AWS Access Key IDが検出されました

Summary:
  Total: 1
  Critical: 1
  High: 0
  Medium: 0
  Low: 0

CI/CD統合

GitHub Actions

root@kitploit:~
name: Secret Scan

on:
  push:
    branches: [main, develop]
  pull_request:
    branches: [main]

jobs:
  secret-scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Run Secret Scan
        run: |
          secret-scan scan --format sarif --output results.sarif

      - name: Upload SARIF
        uses: github/codeql-action/upload-sarif@v3
        with:
          sarif_file: results.sarif

GitLab CI

root@kitploit:~
secret-scan:
  stage: test
  script:
    - secret-scan scan --format json --output results.json
  artifacts:
    reports:
      secret_detection: results.json
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
    - if: $CI_COMMIT_BRANCH == "main"

Jenkins

root@kitploit:~
pipeline {
    agent any
    stages {
        stage('Secret Scan') {
            steps {
                sh 'secret-scan scan --format json --output results.json'
            }
        }
    }
    post {
        always {
            archiveArtifacts artifacts: 'results.json', fingerprint: true
        }
    }
}

pre-commitフック

.pre-commit-config.yaml:

root@kitploit:~
repos:
  - repo: https://github.com/example/secret-scan
    rev: v1.0.0
    hooks:
      - id: secret-scan
        args: ['--staged']

ベースライン管理

ベースラインを使用すると、既存の検出結果を記録し、新規の検出結果のみを報告できます。

ベースラインの作成

root@kitploit:~
secret-scan baseline create --output baseline.json

ベースラインを使用したスキャン

root@kitploit:~
secret-scan scan --baseline baseline.json

ベースラインの更新

root@kitploit:~
secret-scan baseline update --baseline baseline.json

ベースラインの比較

root@kitploit:~
secret-scan baseline diff --baseline baseline.json --current results.json

パフォーマンスチューニング

並列処理

root@kitploit:~
secret-scan scan --workers 8

メモリ制限

root@kitploit:~
secret-scan scan --max-memory 2048

タイムアウト設定

root@kitploit:~
secret-scan scan --timeout 300

増分スキャン

root@kitploit:~
secret-scan scan --incremental --since "2024-01-01"

キャッシュの使用

root@kitploit:~
secret-scan scan --cache-dir .secret-scan-cache

トラブルシューティング

スキャンが遅い場合

  1. 除外パターンを見直す
  2. 並列処理のワーカー数を増やす
  3. 増分スキャンを有効にする
  4. キャッシュを活用する
root@kitploit:~
secret-scan scan --workers 16 --incremental --cache-dir .cache

誤検出が多い場合

  1. 検出ルールのパターンを調整する
  2. 除外設定を追加する
  3. 重要度のしきい値を設定する
root@kitploit:~
secret-scan scan --min-severity high

メモリ不足エラー

root@kitploit:~
secret-scan scan --max-memory 4096 --batch-size 100

デバッグモード

root@kitploit:~
secret-scan scan --debug --verbose

ログの確認

root@kitploit:~
secret-scan scan --log-file scan.log --log-level debug
``````text
このWindows API呼び出しの前後で使われている構造体について説明してください。
各フィールドを確認するためにGhidra上でどこを見るべきかも教えてください。

検出ルール

ルール1: コマンドインジェクションの検出

root@kitploit:~
id: cmd-injection-001
name: "コマンドインジェクション攻撃"
description: "シェルコマンドの実行を試行する攻撃を検出"
severity: critical
enabled: true
tags: ["injection", "rce", "shell"]

match:
  any:
    - field: "command"
      regex: "(;|&&|\\|\\||`|\\$\\()"
    - field: "command"
      contains: ["/bin/sh", "/bin/bash", "cmd.exe", "powershell"]
    - field: "command"
      regex: "(wget|curl|nc|netcat|ncat)\\s+"

actions:
  - type: block
  - type: alert
    priority: high
  - type: log
    level: error

ルール2: パストラバーサルの検出

root@kitploit:~
id: path-traversal-001
name: "パストラバーサル攻撃"
description: "ディレクトリトラバーサル攻撃を検出"
severity: high
enabled: true
tags: ["path-traversal", "lfi"]

match:
  any:
    - field: "path"
      regex: "(\\.\\./|\\.\\.\\\\)"
    - field: "path"
      contains: ["/etc/passwd", "/etc/shadow", "C:\\Windows\\System32"]
    - field: "path"
      regex: "(%2e%2e%2f|%2e%2e/|\\.\\.%2f)"

actions:
  - type: block
  - type: alert
    priority: high
  - type: log
    level: warning

ルール3: SQLインジェクションの検出

root@kitploit:~
id: sql-injection-001
name: "SQLインジェクション攻撃"
description: "SQLインジェクション攻撃を検出"
severity: critical
enabled: true
tags: ["sql-injection", "database"]

match:
  any:
    - field: "query"
      regex: "(?i)(union\\s+select|select\\s+.*\\s+from|insert\\s+into|delete\\s+from|drop\\s+table)"
    - field: "query"
      regex: "(?i)(or\\s+1\\s*=\\s*1|and\\s+1\\s*=\\s*1|'\\s+or\\s+')"
    - field: "query"
      contains: ["--", "/*", "*/", "xp_cmdshell", "information_schema"]

actions:
  - type: block
  - type: alert
    priority: critical
  - type: log
    level: error

ルール4: XSS攻撃の検出

root@kitploit:~
id: xss-001
name: "XSS攻撃"
description: "クロスサイトスクリプティング攻撃を検出"
severity: high
enabled: true
tags: ["xss", "injection"]

match:
  any:
    - field: "input"
      regex: "(?i)(<script|javascript:|onerror\\s*=|onload\\s*=)"
    - field: "input"
      contains: ["alert('XSS')</script>"
    expected:
      matched: true
      actions: ["sanitize", "alert", "log"]

テストの実行

root@kitploit:~
# すべてのテストを実行
shield test rules

# 特定のルールをテスト
shield test rules --rule cmd-injection-001

# テスト結果を詳細表示
shield test rules --verbose

# テスト結果をJSON形式で出力
shield test rules --format json

# テスト結果をファイルに保存
shield test rules --output test-results.json

テスト結果の確認

root@kitploit:~
# テスト結果の表示
shield test results

# 失敗したテストのみ表示
shield test results --failed

# テストカバレッジの表示
shield test coverage

# テストレポートの生成
shield test report --format html --output test-report.html

ルールのデプロイ

ルールの検証

root@kitploit:~
# ルールファイルの検証
shield rules validate rules/

# 特定のルールファイルの検証
shield rules validate rules/custom-rule.yaml

# 厳格な検証モード
shield rules validate rules/ --strict

# 検証結果をJSON形式で出力
shield rules validate rules/ --format json

ルールのデプロイ

root@kitploit:~
# すべてのルールをデプロイ
shield rules deploy rules/

# 特定のルールをデプロイ
shield rules deploy rules/custom-rule.yaml

# ドライランモード
shield rules deploy rules/ --dry-run

# 強制デプロイ
shield rules deploy rules/ --force

# デプロイの確認
shield rules deploy rules/ --confirm

ルールのロールバック

root@kitploit:~
# 前のバージョンにロールバック
shield rules rollback

# 特定のバージョンにロールバック
shield rules rollback --version 1.2.3

# ロールバックの確認
shield rules rollback --confirm

# ロールバック履歴の表示
shield rules rollback --history

ルールのバージョン管理

root@kitploit:~
# ルールのバージョン一覧
shield rules versions

# 特定のルールのバージョン履歴
shield rules versions --rule cmd-injection-001

# バージョン間の差分
shield rules diff --from 1.2.3 --to 1.2.4

# 特定のバージョンのエクスポート
shield rules export --version 1.2.3 --output rules-v1.2.3.yaml

ルールの管理

ルールの一覧表示

root@kitploit:~
# すべてのルールを一覧表示
shield rules list

# 有効なルールのみ表示
shield rules list --enabled

# 無効なルールのみ表示
shield rules list --disabled

# 特定のタグのルールを表示
shield rules list --tag injection

# 特定の重要度のルールを表示
shield rules list --severity critical

# JSON形式で出力
shield rules list --format json

# YAML形式で出力
shield rules list --format yaml

ルールの有効化/無効化

root@kitploit:~
# ルールを有効化
shield rules enable cmd-injection-001

# ルールを無効化
shield rules disable cmd-injection-001

# 複数のルールを有効化
shield rules enable cmd-injection-001 path-traversal-001

# すべてのルールを有効化
shield rules enable --all

# すべてのルールを無効化
shield rules disable --all

ルールの削除

root@kitploit:~
# 特定のルールを削除
shield rules delete cmd-injection-001

# 複数のルールを削除
shield rules delete cmd-injection-001 path-traversal-001

# すべてのカスタムルールを削除
shield rules delete --custom

# 削除の確認
shield rules delete cmd-injection-001 --confirm

ルールのエクスポート/インポート

root@kitploit:~
# すべてのルールをエクスポート
shield rules export --output rules.yaml

# 特定のルールをエクスポート
shield rules export --rule cmd-injection-001 --output rule.yaml

# JSON形式でエクスポート
shield rules export --format json --output rules.json

# ルールをインポート
shield rules import rules.yaml

# ルールをインポート(上書き)
shield rules import rules.yaml --overwrite

# ルールをインポート(マージ)
shield rules import rules.yaml --merge

ルールの監視

ルールの統計

root@kitploit:~
# ルールの統計を表示
shield rules stats

# 特定のルールの統計
shield rules stats --rule cmd-injection-001

# 期間を指定
shield rules stats --period 24h

# JSON形式で出力
shield rules stats --format json

ルールのパフォーマンス

root@kitploit:~
# ルールのパフォーマンスを表示
shield rules performance

# 特定のルールのパフォーマンス
shield rules performance --rule cmd-injection-001

# パフォーマンスの詳細
shield rules performance --verbose

# パフォーマンスの履歴
shield rules performance --history

ルールのアラート

root@kitploit:~
# ルールのアラートを表示
shield rules alerts

# 特定のルールのアラート
shield rules alerts --rule cmd-injection-001

# 特定の重要度のアラート
shield rules alerts --severity critical

# 期間を指定
shield rules alerts --period 24h

# JSON形式で出力
shield rules alerts --format json

ルールのログ

root@kitploit:~
# ルールのログを表示
shield rules logs

# 特定のルールのログ
shield rules logs --rule cmd-injection-001

# ログレベルを指定
shield rules logs --level error

# 期間を指定
shield rules logs --period 24h

# ログをファイルに保存
shield rules logs --output rules.log

ルールのベストプラクティス

1. ルールの命名規則

root@kitploit:~
# 良い例
id: cmd-injection-001
name: "コマンドインジェクション攻撃"

# 悪い例
id: rule1
name: "ルール1"

2. ルールの説明

root@kitploit:~
# 良い例
description: "シェルコマンドの実行を試行する攻撃を検出。セミコロン、パイプ、バッククォートなどのシェルメタ文字を検出します。"

# 悪い例
description: "攻撃を検出"

3. ルールの重要度

root@kitploit:~
# 重要度の適切な設定
severity: critical  # リモートコード実行、SQLインジェクション
severity: high      # XSS、パストラバーサル、ブルートフォース
severity: medium    # スキャン、レート制限
severity: low       # 情報収集、時間帯制限

4. ルールのテスト

root@kitploit:~
# テストケースを必ず作成
test_cases:
  - name: "正常系のテスト"
    input:
      command: "ls -la"
    expected:
      matched: false

  - name: "異常系のテスト"
    input:
      command: "ls; cat /etc/passwd"
    expected:
      matched: true

5. ルールのパフォーマンス

root@kitploit:~
# 効率的な正規表現を使用
# 良い例
regex: "^/admin"

# 悪い例
regex: ".*/admin.*"

6. ルールの保守性

root@kitploit:~
# タグを活用
tags: ["injection", "rce", "shell", "critical"]

# コメントを追加
# このルールはシェルコマンドの実行を検出します
id: cmd-injection-001

7. ルールのバージョン管理

root@kitploit:~
# ルールをGitで管理
git add rules/
git commit -m "Add command injection rule"
git push origin main

8. ルールのドキュメント化

root@kitploit:~
# ルールにドキュメントを追加
id: cmd-injection-001
name: "コマンドインジェクション攻撃"
description: |
  シェルコマンドの実行を試行する攻撃を検出します。

  検出対象:
  - シェルメタ文字(;, &&, ||, `, $())
  - シェルコマンド(/bin/sh, /bin/bash, cmd.exe, powershell)
  - ダウンロードコマンド(wget, curl, nc, netcat, ncat)

  参考:
  - CWE-78: OS Command Injection
  - OWASP Top 10: A03:2021 - Injection

9. ルールのレビュー

root@kitploit:~
# ルールのレビュー
shield rules review rules/

# 特定のルールのレビュー
shield rules review rules/custom-rule.yaml

# レビュー結果をJSON形式で出力
shield rules review rules/ --format json

10. ルールの共有

root@kitploit:~
# ルールをエクスポートして共有
shield rules export --output shared-rules.yaml

# ルールをインポート
shield rules import shared-rules.yaml

# ルールをGitHubで共有
git clone https://github.com/example/shield-rules.git

ルールのトラブルシューティング

ルールが機能しない

root@kitploit:~
# ルールが有効か確認
shield rules list --rule cmd-injection-001

# ルールの構文を確認
shield rules validate rules/custom-rule.yaml

# ルールのテストを実行
shield test rules --rule cmd-injection-001

# ルールのログを確認
shield rules logs --rule cmd-injection-001

ルールが誤検出する

root@kitploit:~
# 誤検出のログを確認
shield rules logs --rule cmd-injection-001 --level warning

# ルールの条件を調整
# 除外条件を追加
match:
  all:
    - field: "command"
      regex: "(;|&&|\\|\\||`|\\$\\()"
  none:
    - field: "command"
      contains: ["ls -la", "git status"]

# ルールを無効化
shield rules disable cmd-injection-001

ルールのパフォーマンスが低下する

root@kitploit:~
# パフォーマンスを確認
shield rules performance --rule cmd-injection-001

# 正規表現を最適化
# 悪い例
regex: ".*(cmd|exec|system).*"

# 良い例
regex: "^(cmd|exec|system)"

# ルールを分割
# 複雑なルールを複数のシンプルなルールに分割

ルールの競合

root@kitploit:~
# ルールの競合を確認
shield rules conflicts

# 特定のルールの競合
shield rules conflicts --rule cmd-injection-001

# 競合を解決
shield rules resolve --rule cmd-injection-001 --priority high

まとめ

Shieldは、強力なルールエンジンを提供し、カスタムルールの作成、テスト、デプロイ、管理を可能にします。

主な機能

  • ルールの作成: YAML形式で簡単にルールを作成
  • ルールのテスト: テストケースを作成してルールを検証
  • ルールのデプロイ: ルールを簡単にデプロイ
  • ルールの管理: ルールの一覧表示、有効化/無効化、削除
  • ルールの監視: ルールの統計、パフォーマンス、アラート、ログ
  • ルールのベストプラクティス: ルールの命名規則、説明、重要度、テスト、パフォーマンス、保守性

使用例

root@kitploit:~
# ルールの作成
cat > rules/custom-rule.yaml << EOF
id: custom-rule-001
name: "カスタムルール"
description: "カスタムルールの説明"
severity: medium
enabled: true
tags: ["custom"]

match:
  any:
    - field: "field_name"
      equals: "value"

actions:
  - type: alert
    priority: medium
EOF

# ルールの検証
shield rules validate rules/custom-rule.yaml

# ルールのテスト
shield test rules --rule custom-rule-001

# ルールのデプロイ
shield rules deploy rules/custom-rule.yaml

# ルールの確認
shield rules list --rule custom-rule-001

Shieldのルールエンジンを使用することで、セキュリティ要件に合わせたカスタムルールを作成し、効果的にセキュリティを強化できます。```text このアセンブリを1命令ずつ説明するのではなく、 まずbasic blockごとの役割を整理して、私が自分で処理を推定できるようにヒントをください。

root@kitploit:~
## 検出ルール

| ルール | 説明 |
|------|------|
| `aws_access_key` | AWS アクセスキー ID |
| `aws_secret_key` | AWS シークレットアクセスキー |
| `github_token` | GitHub トークン |
| `github_pat` | GitHub パーソナルアクセストークン |
| `google_api_key` | Google API キー |
| `slack_token` | Slack トークン |
| `slack_webhook` | Slack Webhook URL |
| `private_key` | 秘密鍵 |
| `jwt` | JSON Web Token |
| `password` | パスワード |
| `api_key` | 汎用 API キー |
| `secret` | 汎用シークレット |
| `token` | 汎用トークン |
| `connection_string` | 接続文字列 |
| `database_url` | データベース URL |
| `redis_url` | Redis URL |
| `mongodb_uri` | MongoDB URI |
| `stripe_key` | Stripe キー |
| `twilio_key` | Twilio キー |
| `sendgrid_key` | SendGrid キー |
| `npm_token` | npm トークン |
| `pypi_token` | PyPI トークン |
| `docker_config` | Docker 設定 |
| `kubernetes_config` | Kubernetes 設定 |
| `ssh_key` | SSH 鍵 |
| `pgp_key` | PGP 鍵 |
| `oauth_token` | OAuth トークン |
| `bearer_token` | Bearer トークン |
| `basic_auth` | Basic 認証 |
| `credit_card` | クレジットカード番号 |
| `ssn` | 社会保障番号 |
| `phone_number` | 電話番号 |
| `email_address` | メールアドレス |
| `ip_address` | IP アドレス |
| `url_with_credentials` | 認証情報を含む URL |

## 設定

### 環境変数

| 変数 | 説明 | デフォルト |
|------|------|----------|
| `SCAN_PATH` | スキャンするパス | `.` |
| `SCAN_DEPTH` | スキャンする深さ | `10` |
| `EXCLUDE_PATHS` | 除外するパス | `node_modules,.git,vendor` |
| `EXCLUDE_EXTENSIONS` | 除外する拡張子 | `.jpg,.png,.gif,.pdf` |
| `MAX_FILE_SIZE` | 最大ファイルサイズ | `10485760` |
| `MIN_ENTROPY` | 最小エントロピー | `3.5` |
| `OUTPUT_FORMAT` | 出力形式 | `text` |
| `OUTPUT_FILE` | 出力ファイル | `-` |
| `VERBOSE` | 詳細出力 | `false` |
| `QUIET` | 静かな出力 | `false` |
| `NO_COLOR` | 色なし | `false` |
| `FOLLOW_SYMLINKS` | シンボリックリンクをたどる | `false` |
| `INCLUDE_HIDDEN` | 隠しファイルを含める | `true` |
| `CASE_SENSITIVE` | 大文字と小文字を区別する | `false` |
| `REGEX_PATTERN` | 正規表現パターン | `-` |
| `ENTROPY_THRESHOLD` | エントロピーしきい値 | `4.0` |
| `CONCURRENCY` | 並行処理数 | `10` |
| `TIMEOUT` | タイムアウト | `30` |
| `RETRY_COUNT` | リトライ回数 | `3` |
| `LOG_LEVEL` | ログレベル | `info` |
| `LOG_FILE` | ログファイル | `-` |
| `CONFIG_FILE` | 設定ファイル | `-` |
| `CACHE_DIR` | キャッシュディレクトリ | `-` |
| `TEMP_DIR` | 一時ディレクトリ | `-` |
| `USER_AGENT` | ユーザーエージェント | `-` |
| `PROXY` | プロキシ | `-` |
| `NO_PROXY` | プロキシなし | `-` |
| `SSL_VERIFY` | SSL 検証 | `true` |
| `CA_BUNDLE` | CA バンドル | `-` |
| `CLIENT_CERT` | クライアント証明書 | `-` |
| `CLIENT_KEY` | クライアント鍵 | `-` |
| `AWS_PROFILE` | AWS プロファイル | `-` |
| `AWS_REGION` | AWS リージョン | `-` |
| `AWS_ACCESS_KEY_ID` | AWS アクセスキー ID | `-` |
| `AWS_SECRET_ACCESS_KEY` | AWS シークレットアクセスキー | `-` |
| `AWS_SESSION_TOKEN` | AWS セッショントークン | `-` |
| `GITHUB_TOKEN` | GitHub トークン | `-` |
| `GITLAB_TOKEN` | GitLab トークン | `-` |
| `BITBUCKET_TOKEN` | Bitbucket トークン | `-` |
| `SLACK_TOKEN` | Slack トークン | `-` |
| `DISCORD_TOKEN` | Discord トークン | `-` |
| `TELEGRAM_TOKEN` | Telegram トークン | `-` |
| `TWILIO_ACCOUNT_SID` | Twilio アカウント SID | `-` |
| `TWILIO_AUTH_TOKEN` | Twilio 認証トークン | `-` |
| `SENDGRID_API_KEY` | SendGrid API キー | `-` |
| `STRIPE_API_KEY` | Stripe API キー | `-` |
| `STRIPE_SECRET_KEY` | Stripe シークレットキー | `-` |
| `PAYPAL_CLIENT_ID` | PayPal クライアント ID | `-` |
| `PAYPAL_CLIENT_SECRET` | PayPal クライアントシークレット | `-` |
| `GOOGLE_API_KEY` | Google API キー | `-` |
| `GOOGLE_CLIENT_ID` | Google クライアント ID | `-` |
| `GOOGLE_CLIENT_SECRET` | Google クライアントシークレット | `-` |
| `FACEBOOK_APP_ID` | Facebook アプリ ID | `-` |
| `FACEBOOK_APP_SECRET` | Facebook アプリシークレット | `-` |
| `TWITTER_API_KEY` | Twitter API キー | `-` |
| `TWITTER_API_SECRET` | Twitter API シークレット | `-` |
| `TWITTER_ACCESS_TOKEN` | Twitter アクセストークン | `-` |
| `TWITTER_ACCESS_SECRET` | Twitter アクセスシークレット | `-` |
| `LINKEDIN_CLIENT_ID` | LinkedIn クライアント ID | `-` |
| `LINKEDIN_CLIENT_SECRET` | LinkedIn クライアントシークレット | `-` |
| `DOCKER_USERNAME` | Docker ユーザー名 | `-` |
| `DOCKER_PASSWORD` | Docker パスワード | `-` |
| `DOCKER_REGISTRY` | Docker レジストリ | `-` |
| `KUBECONFIG` | Kubernetes 設定 | `-` |
| `HELM_HOME` | Helm ホーム | `-` |
| `TERRAFORM_TOKEN` | Terraform トークン | `-` |
| `VAULT_TOKEN` | Vault トークン | `-` |
| `VAULT_ADDR` | Vault アドレス | `-` |
| `CONSUL_HTTP_TOKEN` | Consul HTTP トークン | `-` |
| `NOMAD_TOKEN` | Nomad トークン | `-` |
| `DATABASE_URL` | データベース URL | `-` |
| `REDIS_URL` | Redis URL | `-` |
| `MONGODB_URI` | MongoDB URI | `-` |
| `POSTGRES_URL` | PostgreSQL URL | `-` |
| `MYSQL_URL` | MySQL URL | `-` |
| `MSSQL_URL` | MSSQL URL | `-` |
| `ORACLE_URL` | Oracle URL | `-` |
| `SQLITE_PATH` | SQLite パス | `-` |
| `ELASTICSEARCH_URL` | Elasticsearch URL | `-` |
| `KAFKA_BROKERS` | Kafka ブローカー | `-` |
| `RABBITMQ_URL` | RabbitMQ URL | `-` |
| `NATS_URL` | NATS URL | `-` |
| `MQTT_BROKER` | MQTT ブローカー | `-` |
| `SENTRY_DSN` | Sentry DSN | `-` |
| `DATADOG_API_KEY` | Datadog API キー | `-` |
| `NEW_RELIC_LICENSE_KEY` | New Relic ライセンスキー | `-` |
| `PAGERDUTY_API_KEY` | PagerDuty API キー | `-` |
| `OPSGENIE_API_KEY` | Opsgenie API キー | `-` |
| `SLACK_WEBHOOK_URL` | Slack Webhook URL | `-` |
| `DISCORD_WEBHOOK_URL` | Discord Webhook URL | `-` |
| `TEAMS_WEBHOOK_URL` | Teams Webhook URL | `-` |
| `GENERIC_WEBHOOK_URL` | 汎用 Webhook URL | `-` |
| `JWT_SECRET` | JWT シークレット | `-` |
| `SESSION_SECRET` | セッションシークレット | `-` |
| `COOKIE_SECRET` | Cookie シークレット | `-` |
| `CSRF_SECRET` | CSRF シークレット | `-` |
| `ENCRYPTION_KEY` | 暗号化キー | `-` |
| `SIGNING_KEY` | 署名キー | `-` |
| `PRIVATE_KEY` | 秘密鍵 | `-` |
| `PUBLIC_KEY` | 公開鍵 | `-` |
| `CERTIFICATE` | 証明書 | `-` |
| `SSH_PRIVATE_KEY` | SSH 秘密鍵 | `-` |
| `SSH_PUBLIC_KEY` | SSH 公開鍵 | `-` |
| `PGP_PRIVATE_KEY` | PGP 秘密鍵 | `-` |
| `PGP_PUBLIC_KEY` | PGP 公開鍵 | `-` |
| `GPG_KEY` | GPG 鍵 | `-` |
| `NPM_TOKEN` | npm トークン | `-` |
| `PYPI_TOKEN` | PyPI トークン | `-` |
| `RUBYGEMS_API_KEY` | RubyGems API キー | `-` |
| `MAVEN_TOKEN` | Maven トークン | `-` |
| `GRADLE_TOKEN` | Gradle トークン | `-` |
| `NUGET_API_KEY` | NuGet API キー | `-` |
| `CARGO_TOKEN` | Cargo トークン | `-` |
| `GOOGLE_APPLICATION_CREDENTIALS` | Google アプリケーション認証情報 | `-` |
| `AZURE_CLIENT_ID` | Azure クライアント ID | `-` |
| `AZURE_CLIENT_SECRET` | Azure クライアントシークレット | `-` |
| `AZURE_TENANT_ID` | Azure テナント ID | `-` |
| `AZURE_SUBSCRIPTION_ID` | Azure サブスクリプション ID | `-` |
| `GCP_PROJECT_ID` | GCP プロジェクト ID | `-` |
| `GCP_SERVICE_ACCOUNT` | GCP サービスアカウント | `-` |
| `AWS_ACCOUNT_ID` | AWS アカウント ID | `-` |
| `AWS_ROLE_ARN` | AWS ロール ARN | `-` |
| `AWS_LAMBDA_FUNCTION` | AWS Lambda 関数 | `-` |
| `AWS_S3_BUCKET` | AWS S3 バケット | `-` |
| `AWS_DYNAMODB_TABLE` | AWS DynamoDB テーブル | `-` |
| `AWS_SQS_QUEUE` | AWS SQS キュー | `-` |
| `AWS_SNS_TOPIC` | AWS SNS トピック | `-` |
| `AWS_KINESIS_STREAM` | AWS Kinesis ストリーム | `-` |
| `AWS_CLOUDWATCH_LOG_GROUP` | AWS CloudWatch ロググループ | `-` |
| `AWS_SECRETS_MANAGER_SECRET` | AWS Secrets Manager シークレット | `-` |
| `AWS_SSM_PARAMETER` | AWS SSM パラメータ | `-` |
| `AWS_KMS_KEY` | AWS KMS キー | `-` |
| `AWS_IAM_ROLE` | AWS IAM ロール | `-` |
| `AWS_IAM_USER` | AWS IAM ユーザー | `-` |
| `AWS_IAM_POLICY` | AWS IAM ポリシー | `-` |
| `AWS_IAM_GROUP` | AWS IAM グループ | `-` |
| `AWS_IAM_ACCESS_KEY` | AWS IAM アクセスキー | `-` |
| `AWS_IAM_SECRET_KEY` | AWS IAM シークレットキー | `-` |
| `AWS_IAM_SESSION_TOKEN` | AWS IAM セッショントークン | `-` |
| `AWS_IAM_MFA_DEVICE` | AWS IAM MFA デバイス | `-` |
| `AWS_IAM_VIRTUAL_MFA` | AWS IAM 仮想 MFA | `-` |
| `AWS_IAM_PASSWORD_POLICY` | AWS IAM パスワードポリシー | `-` |
| `AWS_IAM_ACCOUNT_PASSWORD_POLICY` | AWS IAM アカウントパスワードポリシー | `-` |
| `AWS_IAM_ACCOUNT_ALIAS` | AWS IAM アカウントエイリアス | `-` |
| `AWS_IAM_ACCOUNT_SUMMARY` | AWS IAM アカウントサマリー | `-` |
| `AWS_IAM_CREDENTIAL_REPORT` | AWS IAM 認証情報レポート | `-` |
| `AWS_IAM_ACCESS_ADVISOR` | AWS IAM Access Advisor | `-` |
| `AWS_IAM_LAST_ACCESSED` | AWS IAM 最終アクセス | `-` |
| `AWS_IAM_SERVICE_LAST_ACCESSED` | AWS IAM サービス最終アクセス | `-` |
| `AWS_IAM_POLICY_SIMULATOR` | AWS IAM ポリシーシミュレーター | `-` |
| `AWS_IAM_ACCESS_ANALYZER` | AWS IAM Access Analyzer | `-` |
| `AWS_IAM_ORGANIZATIONS` | AWS IAM Organizations | `-` |
| `AWS_IAM_SSO` | AWS IAM SSO | `-` |
| `AWS_IAM_IDENTITY_CENTER` | AWS IAM Identity Center | `-` |
| `AWS_IAM_ROLES_ANYWHERE` | AWS IAM Roles Anywhere | `-` |
| `AWS_IAM_OUTBOUND_IDENTITY_FEDERATION` | AWS IAM アウトバウンド ID フェデレーション | `-` |
| `AWS_IAM_INBOUND_IDENTITY_FEDERATION` | AWS IAM インバウンド ID フェデレーション | `-` |
| `AWS_IAM_WEB_IDENTITY` | AWS IAM Web ID | `-` |
| `AWS_IAM_SAML` | AWS IAM SAML | `-` |
| `AWS_IAM_OIDC` | AWS IAM OIDC | `-` |
| `AWS_IAM_COGNITO` | AWS IAM Cognito | `-` |
| `AWS_IAM_COGNITO_USER_POOL` | AWS IAM Cognito ユーザープール | `-` |
| `AWS_IAM_COGNITO_IDENTITY_POOL` | AWS IAM Cognito ID プール | `-` |
| `AWS_IAM_COGNITO_CLIENT` | AWS IAM Cognito クライアント | `-` |
| `AWS_IAM_COGNITO_DOMAIN` | AWS IAM Cognito ドメイン | `-` |
| `AWS_IAM_COGNITO_RESOURCE_SERVER` | AWS IAM Cognito リソースサーバー | `-` |
| `AWS_IAM_COGNITO_USER` | AWS IAM Cognito ユーザー | `-` |
| `AWS_IAM_COGNITO_GROUP` | AWS IAM Cognito グループ | `-` |
| `AWS_IAM_COGNITO_ROLE` | AWS IAM Cognito ロール | `-` |
| `AWS_IAM_COGNITO_POLICY` | AWS IAM Cognito ポリシー | `-` |
| `AWS_IAM_COGNITO_ATTRIBUTE` | AWS IAM Cognito 属性 | `-` |
| `AWS_IAM_COGNITO_MFA` | AWS IAM Cognito MFA | `-` |
| `AWS_IAM_COGNITO_PASSWORD_POLICY` | AWS IAM Cognito パスワードポリシー | `-` |
| `AWS_IAM_COGNITO_ACCOUNT_RECOVERY` | AWS IAM Cognito アカウント復旧 | `-` |
| `AWS_IAM_COGNITO_EMAIL` | AWS IAM Cognito メール | `-` |
| `AWS_IAM_COGNITO_SMS` | AWS IAM Cognito SMS | `-` |
| `AWS_IAM_COGNITO_LAMBDA` | AWS IAM Cognito Lambda | `-` |
| `AWS_IAM_COGNITO_TRIGGER` | AWS IAM Cognito トリガー | `-` |
| `AWS_IAM_COGNITO_UI` | AWS IAM Cognito UI | `-` |
| `AWS_IAM_COGNITO_HOSTED_UI` | AWS IAM Cognito ホスト UI | `-` |
| `AWS_IAM_COGNITO_CUSTOM_UI` | AWS IAM Cognito カスタム UI | `-` |
| `AWS_IAM_COGNITO_FEDERATION` | AWS IAM Cognito フェデレーション | `-` |
| `AWS_IAM_COGNITO_IDENTITY_PROVIDER` | AWS IAM Cognito ID プロバイダー | `-` |
| `AWS_IAM_COGNITO_SAML_PROVIDER` | AWS IAM Cognito SAML プロバイダー | `-` |
| `AWS_IAM_COGNITO_OIDC_PROVIDER` | AWS IAM Cognito OIDC プロバイダー | `-` |
| `AWS_IAM_COGNITO_SOCIAL_PROVIDER` | AWS IAM Cognito ソーシャルプロバイダー | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT` | AWS IAM Cognito アプリクライアント | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_SECRET` | AWS IAM Cognito アプリクライアントシークレット | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_SETTINGS` | AWS IAM Cognito アプリクライアント設定 | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH` | AWS IAM Cognito アプリクライアント OAuth | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_FLOWS` | AWS IAM Cognito アプリクライアント OAuth フロー | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_SCOPES` | AWS IAM Cognito アプリクライアント OAuth スコープ | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_CALLBACK` | AWS IAM Cognito アプリクライアント OAuth コールバック | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_LOGOUT` | AWS IAM Cognito アプリクライアント OAuth ログアウト | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_GRANT` | AWS IAM Cognito アプリクライアント OAuth グラント | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_RESPONSE` | AWS IAM Cognito アプリクライアント OAuth レスポンス | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_TOKEN` | AWS IAM Cognito アプリクライアント OAuth トークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_REFRESH` | AWS IAM Cognito アプリクライアント OAuth リフレッシュ | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_ID_TOKEN` | AWS IAM Cognito アプリクライアント OAuth ID トークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_ACCESS_TOKEN` | AWS IAM Cognito アプリクライアント OAuth アクセストークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_REFRESH_TOKEN` | AWS IAM Cognito アプリクライアント OAuth リフレッシュトークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE` | AWS IAM Cognito アプリクライアント OAuth デバイス | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE` | AWS IAM Cognito アプリクライアント OAuth デバイスコード | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_SECRET` | AWS IAM Cognito アプリクライアント OAuth デバイスシークレット | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイストークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_REFRESH` | AWS IAM Cognito アプリクライアント OAuth デバイスリフレッシュ | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_ID_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイス ID トークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_ACCESS_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスアクセストークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_REFRESH_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスリフレッシュトークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_SECRET` | AWS IAM Cognito アプリクライアント OAuth デバイスコードシークレット | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスコードトークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_REFRESH` | AWS IAM Cognito アプリクライアント OAuth デバイスコードリフレッシュ | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_ID_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスコード ID トークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_ACCESS_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスコードアクセストークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_REFRESH_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスコードリフレッシュトークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_SECRET_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスコードシークレットトークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_SECRET_REFRESH` | AWS IAM Cognito アプリクライアント OAuth デバイスコードシークレットリフレッシュ | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_SECRET_ID_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスコードシークレット ID トークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_SECRET_ACCESS_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスコードシークレットアクセストークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_SECRET_REFRESH_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスコードシークレットリフレッシュトークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_SECRET_TOKEN_REFRESH` | AWS IAM Cognito アプリクライアント OAuth デバイスコードシークレットトークンリフレッシュ | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_SECRET_TOKEN_ID_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスコードシークレットトークン ID トークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_SECRET_TOKEN_ACCESS_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスコードシークレットトークンアクセストークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_SECRET_TOKEN_REFRESH_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスコードシークレットトークンリフレッシュトークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_SECRET_TOKEN_REFRESH_TOKEN_ID_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスコードシークレットトークンリフレッシュトークン ID トークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_SECRET_TOKEN_REFRESH_TOKEN_ACCESS_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスコードシークレットトークンリフレッシュトークンアクセストークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_SECRET_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスコードシークレットトークンリフレッシュトークンリフレッシュトークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_SECRET_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_ID_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスコードシークレットトークンリフレッシュトークンリフレッシュトークン ID トークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_SECRET_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_ACCESS_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスコードシークレットトークンリフレッシュトークンリフレッシュトークンアクセストークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_SECRET_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスコードシークレットトークンリフレッシュトークンリフレッシュトークンリフレッシュトークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_SECRET_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_ID_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスコードシークレットトークンリフレッシュトークンリフレッシュトークンリフレッシュトークン ID トークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_SECRET_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_ACCESS_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスコードシークレットトークンリフレッシュトークンリフレッシュトークンリフレッシュトークンアクセストークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_SECRET_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスコードシークレットトークンリフレッシュトークンリフレッシュトークンリフレッシュトークンリフレッシュトークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_SECRET_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_ID_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスコードシークレットトークンリフレッシュトークンリフレッシュトークンリフレッシュトークンリフレッシュトークン ID トークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_SECRET_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_ACCESS_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスコードシークレットトークンリフレッシュトークンリフレッシュトークンリフレッシュトークンリフレッシュトークンアクセストークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_SECRET_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスコードシークレットトークンリフレッシュトークンリフレッシュトークンリフレッシュトークンリフレッシュトークンリフレッシュトークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_SECRET_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_ID_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスコードシークレットトークンリフレッシュトークンリフレッシュトークンリフレッシュトークンリフレッシュトークンリフレッシュトークン ID トークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_SECRET_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_ACCESS_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスコードシークレットトークンリフレッシュトークンリフレッシュトークンリフレッシュトークンリフレッシュトークンリフレッシュトークンアクセストークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_SECRET_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスコードシークレットトークンリフレッシュトークンリフレッシュトークンリフレッシュトークンリフレッシュトークンリフレッシュトークンリフレッシュトークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_SECRET_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_ID_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスコードシークレットトークンリフレッシュトークンリフレッシュトークンリフレッシュトークンリフレッシュトークンリフレッシュトークンリフレッシュトークン ID トークン | `-` |
| `AWS_IAM_COGNITO_APP_CLIENT_OAUTH_DEVICE_CODE_SECRET_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_REFRESH_TOKEN_ACCESS_TOKEN` | AWS IAM Cognito アプリクライアント OAuth デバイスコードシークレットトークンリフレッシュトークンリフレッシュトークンリフレッシュトークンリフレッシュトークンリフレッシュトークンリフレッシュト```text
私はこの関数を「設定ファイルの読み込み処理」だと推測しました。
この仮説を検証するために確認すべきポイントを挙げてください。

最初から答えを聞くのではなく、ヒント、確認ポイント、検証方法を聞く使い方がおすすめです。

Agentic Reverse Engineering

2026年現在は、ChatGPTのような対話型LLMだけでなく、ファイルの読み書き、プログラムのビルド、コマンドの実行などを行えるCoding Agentも利用できるようになっています。 さらに、MCP(Model Context Protocol)などを利用することで、AI Agentから解析ツールを直接操作する方法も広まりつつあります。 例えばREMnuxには、AI AgentからREMnux上のマルウェア解析ツールを利用するためのMCP Serverが用意されています。

  • Using AI with REMnux
  • REMnux MCP Server

Ghidraについても、AI Agentから操作するためのMCP実装がいくつか登場しています。私もGhidraをHeadlessで利用し、MCP経由でAI Agentから解析を行うためのMecha Ghidraを開発しています。

  • Mecha Ghidra

IDAやその他のリバースエンジニアリングツールについても、MCPやAgentと連携するための実装が複数登場しており、これまで人間が手作業で行っていた解析作業をAgentに任せることができるようになっています。 一方で、初学者の段階からすべての解析をAgentに任せてしまうのはおすすめしません。「なぜその解析を行ったのか」「ツールが内部で何をしているのか」「出力された結果が正しいのか」といったことを自分で判断する力が身につきにくくなるためです。

まずは自分で解析し、分からない部分をLLMに質問するところから始めるとよいでしょう。慣れてきたら、解析支援スクリプトの作成、MCPによるツール連携、Agentを使った解析の自動化へと徐々に進んでいくことをおすすめします。

LLMへ情報を入力するときの注意

業務で扱っているマルウェア、顧客から提供されたファイル、未公開のIoC、インシデント情報、社内情報などを外部のLLMサービスへ入力する場合には注意が必要です。 利用しているサービスの契約内容、データの保持期間、学習への利用有無、所属組織のルールなどを確認したうえで利用しましょう。

必要に応じて、以下のような対策を検討してください。

  • 機微情報をマスクする
  • 組織で許可されたLLMサービスを利用する
  • APIやEnterprise向けサービスのデータ取り扱いを確認する
  • 必要に応じてローカルLLMを利用する

また、マルウェア本体や解析対象のファイル、解析結果の中には、AI Agentを意図しない動作へ誘導する文字列が含まれている可能性もあります。 特に、AI Agentがファイル操作やコマンド実行、解析ツールの操作まで行える場合は、通常のLLMよりも強い権限を持つことになります。そのため、マルウェア解析でAI Agentを利用する場合は、VMなどの隔離環境上で実行し、安全性を確保することをおすすめします。

AIはかなり賢くなりましたが、それでも意図しないコマンドを実行することがあります。 これまでのマルウェア解析と同様に解析環境を隔離するという基本を守って利用しましょう。

実際のマルウェアを使わない学習

2026年現在、マルウェア解析を勉強するために、最初から実際のマルウェアを入手する必要はありません。 むしろ初学者には、以下の順番をおすすめします。

  1. LLMや自分で作成した10〜50行程度の小さなプログラム
  2. 自分でコンパイルしたWindows APIのサンプル
  3. CTF/Crackme/マルウェア解析トレーニング用サンプル
  4. マルウェアやC2フレームワークなど、ソースコードが公開されているOSS実装
  5. 必要性があり、安全な解析環境を準備できる場合のみ実際のマルウェア

最初のうちは、元のソースコードが分かっているプログラムを教材にするのがおすすめです。 自分で解析した結果と実際のソースコードを比較できるため、「どこまで正しく解析できたか」「どこを読み違えたか」を自分で確認できます。 いきなり実際のマルウェアを解析するよりも、まずは答え合わせのできる教材を使って、逆アセンブルやデコンパイル結果の読み方に慣れる方が効率よく学習できると思います。

マルウェアの入手

前置き

ここではマルウェアの入手方法について触れますが、紹介するサービスを利用する際は利用規約を必ず読んで利用してください。 また、以下の内容は、マルウェアの入手を勧めるものではありません。

不正指令電磁的記録に関する罪では、マルウェアの作成、提供、取得、保管などについて、その目的や正当な理由の有無などが要件になります。 私は法律の専門家ではないため、どういった理由であれば法律上の正当な理由にあたるかはわかりません。 個人の趣味でマルウェア解析をおこなうことは正当な理由として認められない可能性もあります。 捜査されると困る、裁判になったら困る、正当な理由として提示できる活動実績がない、弁護費用がないなど、平穏な人生を絶対に送りたいという人は、個人の趣味でやらないほうがよいかと思います。

とはいえ過度に怯えすぎて萎縮する必要はないとは思います。 最低限、警視庁が公開している不正指令電磁的記録に関する罪に関するページには目を通して、内容を確認しておきましょう。

  • https://www.keishicho.metro.tokyo.jp/kurashi/cyber/law/virus.html

マルウェアを扱う上で気にしなければいけないことは、法律面だけではありません。 マルウェアを実行(故意かどうかは問わない)すると、たいていの場合は攻撃者の用意したサーバにアクセスします。 攻撃者のサーバには自分の利用しているIPアドレスのログが残りますし、接続時に利用しているシステムの情報を送信することもあります。 マルウェアによっては、攻撃者によるコマンドの実行などがおこなわれることも考えられますし、内部ネットワークのスキャンや(一番避けるべき)外部への感染活動などがおこなわれるかもしれません。 攻撃者のサーバに記録された情報は攻撃者自身だけでなく、第三者へ提供されることもあります。また、捜査機関はサーバを差し押さえてログを解析したうえで、ISPに情報開示請求をおこなうことができます。

以下のどれか一つにでも当てはまる場合は、実際のマルウェアを利用した学習は控えましょう。

  • マルウェアを取り扱う上で、不安がある。
  • マルウェア解析のための専用PCや独立したネットワークなど隔離した環境を用意できない。
  • 未成年もしくは学生であるが、マルウェアを扱った解析や研究をするうえで責任者がいない(社会人の場合は、全て自己責任として責任を取れない)。

実際のマルウェアを個人的に入手しなくても、学習する方法は前述しております。

最後にオタクがみんな大好きな以下の名言たちで前置きを終えます。

  • With great power comes great responsibility
  • The abyss gazes also into you.

マルウェア共有サービス/IoC共有サービス

マルウェアのサンプルやIoCを共有するためのサービスがいくつかあります。もっとも登録が多く有名なサービスはVirusTotalですが、有償アカウントのみダウンロードが可能であるため、ここでは無償で利用可能なサービスを紹介します。

この2つのサービスがサンプルの入手先としては有力です。

  • MalwareBazaar
  • Vx Underground

参考情報として以下のサービスも記載しておきます。

  • URLhaus
  • ThreatFox
  • MalShare
  • VirusShare
  • VirusBay
  • Vx Vaul
  • theZoo
  • malpedia

オンラインサンドボックス

無料で使用できるオンラインサンドボックスのサービスは本来マルウェアの挙動を解析するサービスですが、他者の投稿したマルウェアをダウンロードすることができます。

  • Hybrid Analysis
  • Any Run
  • Triage
  • Joe Sandbox
  • cape

OSS RAT

以下はRAT(Remote Access Trojan)の実装を理解するのに役に立つリポジトリです。 ソースコードと実際のバイナリを比較することで、通信処理、コマンド実行、ファイル操作などの実装を学ぶことができます。

  • Lilith RAT
  • Quasar RAT
  • NGLite
  • AsyncRAT
  • trochilus RAT
  • gh0st RAT
  • Poison-Ivy-Reload
  • GitHub Topics rat

C2フレームワーク

マルウェアのC2通信やAgentの実装を理解するためには、オープンソースで公開されているC2フレームワークのソースコードを読むことも参考になります。 C2フレームワークには、AgentとC2 Server間の通信、コマンドの受信と実行、ファイル操作、プロセス操作、通信データの暗号化など、マルウェアでもよく見られる機能が実装されています。 それぞれ実装言語やAgentの構造、通信方式が異なるため、ソースコードと生成されたAgentを比較しながらリバースエンジニアリングしてみるのもよいでしょう。

  • Sliver
  • Mythic
  • Mythic Agents
  • AdaptixC2
  • Empire
  • PoshC2
  • Merlin
  • MITRE CALDERA
  • Havoc
  • The C2 Matrix
    • 様々なC2フレームワークの機能や特徴を比較するための一覧
Télécharger l’outil
  • Supports de cours d'analyse de malware du Rensselaer Polytechnic Institute. Des échantillons pour les exercices sont également distribués.
  • Workshop by Malware Unicorn
    • Supports d'atelier de reverse engineering par @malwareunicorn.
  • Youtube channel by SANS Digital Forensics and Incident Response
    • Chaîne YouTube liée au DFIR de SANS, formation en sécurité de renommée mondiale.
  • Youtube channel by OALabs
    • Chaîne YouTube d'OALabs centrée sur les vidéos d'analyse de malware.
  • Youtube channel by hasherezade
    • Chaîne YouTube de hasherezade centrée sur les vidéos d'analyse de malware.
  • RecommendationofPerfectUnpacking
    • Supports sur les techniques d'unpacking par M. Nakatsuru (@you0708).
  • 同人誌 by Allsafe
    • Doujinshi du cercle Allsafe, auquel j'appartiens, principalement consacré au reverse engineering et aux techniques d'analyse de malware.
  • Malware Analysis at Scale ~ Defeating EMOTET by Ghidra ~ by Allsafe
    • Supports d'atelier d'analyse d'Emotet par Allsafe.
    • Scripts distribués
  • Advanced Binary Deobfuscation
    • Cours de @ntddk sur l'obfuscation binaire et ses techniques de levée, donnés à GCC Tokyo et au Security Camp National Convention 2020.
  • MÖBIUS STRIP REVERSE ENGINEERING
    • Riche en articles d'analyse exploitant les connaissances en informatique et la structure interne d'IDA. recommended by ntddk.
  • リバースエンジニアリングバイブル
    • Un bon livre expliqué avec soin en japonais pour les débutants.
  • デバッガによるx86プログラム解析入門 x64対応版
    • Si vous voulez apprendre le débogage en japonais, c'est celui-ci qu'il faut commencer par lire.
  • マルウエアの教科書 増補改訂版
    • Un livre de Takashi Yoshikawa qui couvre largement les bases des malwares, les méthodes d'attaque, les ransomwares et les méthodes d'analyse. Il explique aussi concrètement comment débuter l'analyse, et est recommandé pour que les débutants saisissent une vue d'ensemble des malwares.
  • 実践バイナリ解析
    • Traite des formats binaires, du désassemblage, de l'instrumentation binaire, de l'analyse dynamique par teinture, de l'exécution symbolique, etc. Centré sur Linux/ELF, mais utile pour apprendre systématiquement l'analyse binaire elle-même.
  • マスタリングGhidra
    • Un ouvrage de référence complet traitant en détail des opérations de base de Ghidra jusqu'aux types de données, scripts et extensions.
  • 実践 メモリフォレンジック
    • Traite principalement de la forensique mémoire utilisant Volatility, ainsi que des processus, du réseau, de l'injection de code, de l'analyse de malware, etc.
  • 脅威インテリジェンスの教科書
    • Ce n'est pas un livre d'analyse de malware, mais il permet d'apprendre la façon de penser pour relier les échantillons analysés, les IoC et les méthodes d'attaque aux informations sur les campagnes et les attaquants.
  • -h, --helpヘルプメッセージを表示します
    パラメータ型説明
    namestringルール名
    patternstring正規表現パターン
    severitystring重要度(critical、high、medium、low)
    descriptionstring検出時の説明
    enabledbooleanルールの有効/無効