Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
Tools/GitHubGitHub/pinksawtooth/how_to_become_a_malware_analyst
Memory ForensicsReverse EngineeringMalware AnalysisDigital ForensicsCTFBinary AnalysisLearning & EducationCurated ResourcesLearning Paths & Courses

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share
Labs & Practice
GitHubpinksawtooth/how_to_become_a_malware_analyst

how_to_become_a_malware_analyst

Curated guide to becoming a malware analyst, covering essential knowledge, reverse engineering, analysis tools, and LLM-assisted learning with practical exercises and resources.

View Repository
2796172 days agoReviewed by Kitploit

マルウェア解析者になるための勉強方法(work-in-progress)

これは@PINKSAWTOOTHの私見で、必ずしもあなたにとって一番良い方法ではないかもしれません。勉強方法の一例として参照してもらえれば幸いです。

これを読む前に、私が尊敬するマルウェア解析者の@hasherezade氏がマルウェア解析の勉強をどのように始めたらよいかをブログにまとめています。 重複する部分があると思いますが、一読することをおすすめします。また、以下のブログは英語のソースが中心なので、可能な限り日本語を中心にしたソースを紹介したいと思います。

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

[!NOTE]

2026年追記: LLM時代のマルウェア解析学習

このページを書き始めた当時は、LLMやAI Agentが今のように日常的に使える時代ではありませんでした。 2026年現在、マルウェア解析やリバースエンジニアリングを勉強するのであれば、書籍やWeb上の資料に加えてLLMを積極的に利用することをおすすめします。特に、学習用プログラムの作成、コードやアセンブリの説明、解析、解析スクリプトの作成、解析結果の整理などでは非常に有用です。

一方で、多くの解析技術においてLLMが人間を上回る場面が増えてきました。しかし、だからといって基礎知識が不要になったわけではありません。LLMの出力を理解し、自分自身でその根拠や正しさを確認するためには、専門知識を持っていることが重要です(その作業に意味がなくなる日も近いかもしれませんが・・・)。本稿では、LLMを「答えを出す装置」ではなく「一緒に学習する教師、解析時の助手」として利用することを前提にしています。

マルウェア解析の前提となる知識

まず、マルウェア解析の前提となる知識について簡単に説明します。 マルウェア解析について学ぶ前に、最低限コンピュータサイエンス(計算機科学)の知識が必要になります。

  • コンピュータアーキテクチャ
  • コンピュータネットワーク
  • オペレーティングシステム
  • プログラミング言語
  • データ構造とアルゴリズム
  • etc...

これらについては、大学や専門学校で履修する内容が理解できていればよいかと思います。 (どこかの大学のオンラインシラバス等を確認することで、より具体的な内容を知れるかと思います。) 本稿では、プログラミング言語やコンピュータサイエンスをどのように学ぶかはスコープ外としますが、以下がおすすめの資料です。

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

マルウェア解析に必要となる知識

マルウェア解析に必要となる知識を大きく以下の5つに分けます。

  • マルウェア解析技術、マルウェアの挙動、悪用するテクニックの実装や実現方法に関する知識
  • リバースエンジニアリング対象のプログラム開発に関する知識
  • リバースエンジニアリングに関する知識
  • 解析ツールに関する知識
  • LLM・解析自動化に関する知識

マルウェア解析技術、マルウェアの挙動、悪用するテクニックの実装や実現方法に関する知識

まずはマルウェアとはなにか、マルウェア解析とは何を行う作業なのかを学ぶ必要があります。 マルウェア解析全般について学ぶのにおすすめの資料、書籍を紹介します。

  • セキュリティ・キャンプ全国大会2015でのマルウエア分析講義
    • 中津留氏(@you0708)によるセキュリティ・キャンプ全国大会2015で開催されたマルウェア解析の講義です。
  • 初めてのマルウェア解析
    • 日本語でマルウェア解析全般の基礎から発展的な内容まで取り扱っている本です。
  • リバースエンジニアリングツールGhidra実践ガイド
    • 私も著者に入っているGhidraを使った静的解析を通じてマルウェアの実装を学べる本です。
  • リバースエンジニアリング入門 @IT連載
    • 日本電信電話株式会社の川古谷氏、青木氏、岩村氏によるシェルコードの解析を解説した記事です。
  • アナライジング・マルウェア
    • 2010年発行のため内容は古くなってしまっていますが、アセンブリを読まないという縛りでマルウェア解析について触れられている珍しい本です。
  • MWS Cup
    • 情報処理学会コンピュータセキュリティ(CSEC)研究会配下のMWS組織員会が主催するマルウェア解析技術を競うコンテスト。過去の問題内容や解説が公開されており参考になります。
  • CS6038/CS5138 Malware Analysis, UC
    • University of Cincinnati のマルウェア解析講義資料。毎年内容が更新されており、演習用のサンプルも配布されているためおすすめです。無償で公開されています。
  • Practical Malware Analysis
    • マルウェア解析全般について詳細に解説された洋書。サンプルと解答が公開されているため演習を行いながら学べます。
  • malware_training_vol1 by hasherezade
    • @hasherezade氏によるマルウェア解析トレーニング資料。WIPだが、演習用のサンプルも配布されているためおすすめです。
  • Malware Analysis - CSCI 4976
    • Rensselaer Polytechnic Instituteのマルウェア解析講義資料。演習用のサンプルも配布されています。
  • Workshop by Malware Unicorn
    • @malwareunicorn氏によるリバースエンジニアリングのワークショップ資料です。
  • Youtube channel by SANS Digital Forensics and Incident Response
    • 世界的に有名なセキュリティトレーニングSANSのDFIR関連のYoutubeチャンネルです。
  • Youtube channel by OALabs
    • OALabsによるマルウェア解析動画を中心としたYoutubeチャンネルです。

マルウェア解析のオンライントレーニングもおすすめです。

  • The Beginner Malware Analysis Course
    • @0verfl0w氏によるマルウェア解析入門トレーニング
  • From Zero to Hero
  • @0verfl0w氏と@vk_intel氏による実践的なマルウェア解析トレーニング
  • Zero2Automated
  • @0verfl0w氏と@vk_intel氏による、発展的なマルウェア解析トレーニング
  • OpenSecurityTraining2
    • x86/x64アセンブリやリバースエンジニアリング、Windows内部構造などを学べる無償の講義資料です。演習も用意されています。

マルウェアの挙動、悪用するテクニックについてまとめられているページを紹介します。

  • Malware Behavior Catalog (MBC)
    • マルウェア解析に特化して、マルウェアの目的(Objective)、挙動(Behavior)、コード上の特徴を体系化したカタログです。ATT&CKと対応付けながら、マルウェア解析で重要となる挙動が整理されています。
  • capa-rules
    • capaが機能を識別するために利用するルール集です。ルールを読むことで、マルウェアの代表的な機能やテクニックがバイナリ上でどのような特徴として現れるのかを学習できます。
  • MITRE ATT&CK
    • 攻撃の手法やテクニック、手順がフレームワークとして定義されており、マルウェア解析だけでなくサイバー攻撃全般について学ぶのに良い。
  • ired.team
    • ペンテスター、レッドチーム、攻撃者が使用するテクニックとその実装の紹介
  • malpedia
    • マルウェアのファミリ毎に、解析レポートがまとめられている。
  • Ten process injection techniques: A technical survey of common and trending process injection techniques
    • コードインジェクションテクニックの紹介
  • Code Injection demos by hasherezade
    • コードインジェクションテクニックの実装
  • Evasion techniques by cpr
    • マルウェアの解析回避テクニックまとめ
  • Al-Khaser
    • マルウェアのアンチ解析機能を実装したOSSツールとソースコード

日々公開されている脅威情報やマルウェア解析を扱ったブログやレポートも重要な情報源になります。RSSリーダなどで更新を通知しておくと便利です。 それらをまとめているサイトもあるので、活用することができます。

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

これらの中で日本語でマルウェアの詳細な解析を取り上げているものを紹介しておきます。

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

他にも、YARAルールを読むことで、マルウェアの特徴について学習することができます。

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

リバースエンジニアリング対象のプログラム開発に関する知識

リバースエンジニアリングは、マルウェア解析において一部でしかありませんが、マルウェア解析者になるためには避けて通れない道です。 サンドボックスを使った動的解析やツールを使った動的解析(手動でおこなうデバッグを除く)だけでは、マルウェアの機能の全容や使用されているアルゴリズムを特定することは困難です。

リバースエンジニアリングをおこなうためには、元のソースコードについて理解しておく必要があります。 (マルウェア解析で一般的なWindows環境を想定しますが)Windows APIを使ったプログラミングの経験なしにマルウェア解析をするのは遠回りになるでしょう。

Windows APIはMicrosoftが公式ドキュメントとサンプルを公開しています。 ※日本語翻訳されていると一部表示がおかしい場合があるので注意しましょう

  • Windows API - Microsoft Learn
  • Windows classic samples

WindowsのOSの仕組みを学ぶのには以下の書籍がおすすめです。

  • インサイドWindows 第7版 上
    • システムアーキテクチャ、プロセス、スレッド、メモリ管理、I/Oなど、Windows内部構造の基礎を学べます。
  • インサイドWindows 第7版 下
    • システムメカニズム、仮想化、診断・トレース、ファイルシステム、起動処理などを扱います。
  • Windowsセキュリティインターナル
    • Windowsの認証、認可、監査、カーネルのセキュリティ機構などをPowerShellによる実験を交えて学べます。

C/C++以外の言語・ランタイムも知っておく

C/C++はWindowsマルウェアのリバースエンジニアリングを学ぶ上で今でも非常に重要なので、最初に学ぶ言語としておすすめします。 一方で、実際の解析対象はC/C++だけではありません。2026年現在は少なくとも以下について、バイナリやランタイムの特徴を知っておくと役立ちます。

  • C / C++: ネイティブコード、Windows API、CRT、コンパイラ最適化
  • .NET: CLR、CIL/MSIL、メタデータ、難読化
  • Go: Go runtime、goroutine、文字列・型情報、Go固有のバイナリ構造
  • Rust: panic/unwind処理、名前修飾、標準ライブラリ、ジェネリクスや最適化によるコード生成
  • Python: PyInstallerなどでパッケージ化された実行ファイル、Python bytecode

最初からすべての言語を深く学ぶ必要はありません。開発言語やランタイムが変化すると必要な知識も変化することは知っておきましょう。

リバースエンジニアリングに関する知識

解析対象の言語や環境でのプログラミング技術が身についたら、リバースエンジニアリングについて勉強していきましょう。 マルウェア解析で一般的なWindowsのPEファイルを解析する場合、まずはCやC++の入門プログラムをリバースエンジニアリングしてみましょう。 次のステップとしては、自分でコンパイルした(ソースコードが存在する)Win APIを使ったPEファイルを解析してみましょう。同じソースコードでも、選択するプロジェクトやコンパイルやリンクのオプションなどを変更して、実行ファイルにどういった変化が現れるかまで見ておけば、リバースエンジニアリング技術がかなり付くと思います。

2026年におすすめする学習方法: LLMに練習用のプログラムを作らせる

以前はMicrosoftのサンプルやGitHub上のコードを探し、それを書き換えながら学習することをおすすめしていました。この方法は現在も有効ですが、2026年現在はLLMやCoding Agentに自分の学習目的に合わせた小さなプログラムを作ってもらう方法も非常に有効です。

例えば、最初は10〜50行程度の小さなプログラムを生成してもらいます。

root@kitploit:~
CreateFileWとWriteFileを使ってテキストファイルを作成する、
できるだけ小さなWindows Cプログラムを作ってください。
リバースエンジニアリングの教材に使いたいので、
処理を複雑にせず、各Windows APIを使う理由も説明してください。

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

以下のループで勉強します。

root@kitploit:~
LLMに小さなコードを作らせる
        ↓
ソースコードを読む・APIを調べる
        ↓
自分でビルドする
        ↓
Ghidraなどで解析する
        ↓
元のソースコードと比較する
        ↓
分からない部分だけLLMに質問する
        ↓
別の条件で再ビルドして比較する

例えば、同じ処理のソースコードについて以下を比較してみるとよいでしょう。

  • Debug / Release
  • 最適化なし / 最適化あり(-O0 / -O2、MSVCでは /Od / /O2など)
  • x86 / x64
  • シンボルあり / シンボルなし
  • MSVC / Clang / GCCなど異なるコンパイラ
  • C / C++ / Rust / Goなど異なる言語

元のソースコードを知っている状態でバイナリを解析することは、リバースエンジニアリングを学ぶ上で非常に良いトレーニングになります。

さらにリバースエンジニアリング技術を磨くにはCTFのRev問やCrackmeを解くと良いでしょう。 特にPEファイルの問題やマルウェア解析者を対象としたものが、おすすめです。

  • The Flare On Challenge
    • Mandiant(Google)のFLAREチームによるマルウェア解析技術にフォーカスしたCTF。
  • Beginner Malware Reversing Challenges by MalwareTech
    • MalwareTech氏によるマルウェア解析初心者向け演習問題
  • reversing.kr
    • PE形式が多いCrackMe配布サイト
  • crackmes.one
    • CrackMe投稿サイト

またマルウェアのリバースエンジニアリングでは、暗号アルゴリズムの処理をリバースエンジニアリングすることが多いので、基本的な暗号技術について学ぶことを推奨します。 アルゴリズムを理解したらGitHubなどで公開されているオープンソースの暗号アルゴリズム実装のソースコードを読み、実際にリバースエンジニアリングしてみましょう。

  • 暗号技術入門 第3版
  • OpenSSL Project
  • Network Security Services
  • Crypto++ Library
  • wolfSSL

解析ツールに関する知識

マルウェア解析をすすめるうえで、よりよいツールを使うことやツールを使いこなすことで容易に解析できることがあります。 また、様々な知識を持っていても実際にはツールを通して解析するため、ツールの利用方法も理解しておく必要があります。

解析ツールのインストールや更新などの管理には、Windows環境ではMandiantが公開しているFLARE-VMが便利です。マルウェア解析やリバースエンジニアリングに必要なツールをまとめて導入することができます。

Linux環境では、REMnuxが利用できます。こちらもマルウェア解析に必要なツールがまとめられており、収録ツールの一覧から確認できます。

FLARE-VMとREMnuxはどちらもマルウェア解析環境を簡単に構築できるため、初めて解析環境を作る場合にもおすすめです。それぞれに含まれているツールを確認し、実際に使ってみることで、どのような解析ツールが存在し、どのような場面で利用するのかを学ぶことができます。

また、以下のリンクで紹介されているツールについても利用してみるとよいでしょう。

  • awesome-reversing
  • Awesome Malware Analysis
  • Awesome Ghidra

LLM・Coding Agentを利用した学習と解析

LLMを教師として利用する

LLMの便利な使い方の一つは、分からないことをその場で質問できる教師として利用することです。LLMが登場する以前は、自分が理解できていないことを自分で調べ、その内容を理解する必要がありました。特に初学者の場合、そもそも何を調べればよいのか分からないことも多く、学習するうえで一つのハードルになっていたと思います。現在では、高いレベルの知識を持つLLMが、自分の理解度に合わせて何度でも丁寧に説明してくれます。分からなければ聞き直せばよいですし、「もっと簡単に説明して」、「具体例を出して」、「この理解で合っているか確認して」といった使い方もできます。 意欲さえあれば、分からないことをいくらでも質問しながら学習できる、いい時代になったと思います。

例えば、逆アセンブル結果やデコンパイル結果について、以下のような質問ができます。

root@kitploit:~
この関数の役割と、そう判断できる理由を教えてください。
root@kitploit:~
このデコンパイル結果から変数の型を推定したいです。
型を判断するために、どの命令、API、参照先を確認すべきですか?
root@kitploit:~
このWindows API呼び出しの前後で使われている構造体について説明してください。
各フィールドを確認するためにGhidra上でどこを見るべきかも教えてください。
root@kitploit:~
このアセンブリを1命令ずつ説明するのではなく、
まずbasic blockごとの役割を整理して、私が自分で処理を推定できるようにヒントをください。
root@kitploit:~
私はこの関数を「設定ファイルの読み込み処理」だと推測しました。
この仮説を検証するために確認すべきポイントを挙げてください。

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

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フレームワークの機能や特徴を比較するための一覧
Download Tool
  • Youtube channel by hasherezade
    • hasherezade氏によるマルウェア解析動画を中心としたYoutubeチャンネルです。
  • RecommendationofPerfectUnpacking
    • 中津留氏(@you0708)によるアンパック手法の資料です。
  • 同人誌 by Allsafe
    • 私が所属するリバースエンジニアリングやマルウェア解析技術を主にした同人サークルAllsafeの同人誌です。
  • Malware Analysis at Scale ~ Defeating EMOTET by Ghidra ~ by Allsafe
    • AllsafeによるEmotet解析ワークショップ資料です。
    • 配布スクリプト
  • Advanced Binary Deobfuscation
    • @ntddk氏によるGCC Tokyo、セキュリティ・キャンプ全国大会2020のバイナリ難読化とその解除技術の講義です。
  • MÖBIUS STRIP REVERSE ENGINEERING
    • CS系の知見とIDAの内部構造を活かした解析記事が豊富です。 recommended by ntddk。
  • リバースエンジニアリングバイブル
    • 日本語で初心者向けに丁寧に解説された良書です。
  • デバッガによるx86プログラム解析入門 x64対応版
    • 日本語でデバッグを学ぶならまずはこれがおすすめです。
  • マルウエアの教科書 増補改訂版
    • 吉川孝志氏による、マルウェアの基礎、攻撃手法、ランサムウェア、解析手法までを広く扱った書籍です。解析の始め方についても具体的に解説されており、初学者がマルウェア全体像を掴むのにおすすめです。
  • 実践バイナリ解析
    • バイナリフォーマット、逆アセンブリ、バイナリ計装、動的テイント解析、シンボリック実行などを扱ってます。Linux/ELF中心ですが、バイナリ解析そのものを体系的に学ぶのに有用です。
  • マスタリングGhidra
    • Ghidraの基本操作からデータ型、スクリプト、拡張機能などまで詳細に扱う総合的な解説書です。
  • 実践 メモリフォレンジック
    • Volatilityを利用したメモリフォレンジックを中心に、プロセス、ネットワーク、コードインジェクション、マルウェア解析などを扱っています。
  • 脅威インテリジェンスの教科書
    • マルウェアの解析書ではありませんが、解析した検体やIoC、攻撃手法をキャンペーンや攻撃者の情報と結び付けるための考え方を学べます。