
Guia curado para se tornar um analista de malware, abrangendo conhecimentos essenciais, engenharia reversa, ferramentas de análise e aprendizado assistido por LLM com exercícios práticos e recursos.
Esta é a opinião pessoal de @PINKSAWTOOTH e pode não ser necessariamente o melhor método para você. Espero que seja útil como um exemplo de método de estudo.
Antes de ler isto, o analista de malware que respeito, @hasherezade, escreveu em seu blog como começar a estudar análise de malware. Acredito que haja partes sobrepostas, mas recomendo que leia. Além disso, como os blogs a seguir são centrados em fontes em inglês, gostaria de apresentar fontes centradas em japonês na medida do possível.
[!NOTE]
Adendo de 2026: Aprendizado de análise de malware na era dos LLMs
Quando comecei a escrever esta página, não era uma época em que LLMs e AI Agents pudessem ser usados diariamente como hoje. Em 2026, se você for estudar análise de malware ou engenharia reversa, recomendo utilizar ativamente LLMs além de livros e materiais na web. Especialmente, eles são muito úteis na criação de programas para estudo, explicação de código e assembly, análise, criação de scripts de análise, organização de resultados de análise, etc.
Por outro lado, em muitas técnicas de análise, os LLMs têm superado os humanos em cada vez mais situações. No entanto, isso não significa que o conhecimento básico se tornou desnecessário. Para entender a saída do LLM e verificar por conta própria sua fundamentação e correção, é importante ter conhecimento especializado (embora talvez esteja próximo o dia em que esse trabalho perca o sentido...). Neste artigo, parto do pressuposto de utilizar o LLM não como um "dispositivo que dá respostas", mas como um "professor que aprende junto, um assistente na análise".
Primeiro, vou explicar brevemente os conhecimentos prévios necessários para a análise de malware. Antes de aprender sobre análise de malware, é necessário ter no mínimo conhecimento de ciência da computação.
Sobre esses tópicos, acredito que seja suficiente compreender o conteúdo lecionado em universidades ou escolas técnicas. (Consultar a ementa online de alguma universidade pode ajudar a conhecer conteúdos mais específicos.) Neste artigo, como aprender linguagens de programação ou ciência da computação está fora do escopo, mas seguem recomendações de materiais:
Os conhecimentos necessários para análise de malware são divididos em cinco grandes categorias:
Primeiro, é necessário aprender o que é malware e o que é o trabalho de análise de malware. Apresento materiais e livros recomendados para aprender sobre análise de malware em geral.
Treinamentos online de análise de malware também são recomendados.
Apresento páginas que compilam comportamentos de malware e técnicas exploradas.
Informações de ameaças publicadas diariamente e blogs e relatórios que tratam de análise de malware também são fontes importantes de informação. É conveniente configurar notificações de atualização em leitores RSS, etc. Existem também sites que compilam essas informações, que podem ser utilizados.
Dentre esses, apresento os que abordam análises detalhadas de malware em japonês.
Além disso, ler regras YARA permite aprender sobre as características de malware.
A engenharia reversa é apenas uma parte da análise de malware, mas é um caminho inevitável para se tornar um analista de malware. Apenas com análise dinâmica usando sandbox ou análise dinâmica usando ferramentas (exceto debugging manual), é difícil identificar o panorama completo das funcionalidades do malware ou os algoritmos utilizados.
Para realizar engenharia reversa, é necessário compreender o código-fonte original. (Assumindo o ambiente Windows comum na análise de malware) Fazer análise de malware sem experiência em programação usando Windows API seria um caminho mais longo.
A Microsoft publica documentação oficial e amostras da Windows API. ※Cuidado, pois algumas exibições podem estar estranhas na tradução para japonês
Os seguintes livros são recomendados para aprender sobre o funcionamento do sistema operacional Windows.
C/C++ ainda é extremamente importante para aprender engenharia reversa de malware Windows, por isso é recomendado como a primeira linguagem a aprender. Por outro lado, os alvos reais de análise não são apenas C/C++. Em 2026, é útil conhecer pelo menos as seguintes características de binários e runtimes:
Não é necessário aprender profundamente todas as linguagens desde o início. Lembre-se de que, quando a linguagem de desenvolvimento ou o runtime muda, os conhecimentos necessários também mudam.
Depois de adquirir habilidades de programação na linguagem e ambiente alvo de análise, vamos estudar engenharia reversa. Ao analisar arquivos PE do Windows, comuns na análise de malware, primeiro vamos fazer engenharia reversa de programas introdutórios em C ou C++. Como próximo passo, vamos analisar arquivos PE usando Win API que você mesmo compilou (cujo código-fonte existe). Mesmo com o mesmo código-fonte, se você alterar o projeto escolhido ou as opções de compilação e linkagem e observar quais mudanças aparecem no executável, acredito que suas habilidades de engenharia reversa aumentarão consideravelmente.
Anteriormente, eu recomendava procurar amostras da Microsoft ou código no GitHub e aprender reescrevendo-os. Esse método ainda é válido, mas em 2026, fazer com que LLMs ou Coding Agents criem pequenos programas adequados ao seu objetivo de estudo também é muito eficaz.
Por exemplo, inicialmente peça para gerar um pequeno programa de cerca de 10 a 50 linhas.```text CreateFileWとWriteFileを使ってテキストファイルを作成する、 できるだけ小さなWindows Cプログラムを作ってください。 リバースエンジニアリングの教材に使いたいので、 処理を複雑にせず、各Windows APIを使う理由も説明してください。
生成されたコードを、Microsoft Learnのドキュメントと照らし合わせながら内容を確認し、自分でコンパイルします。
その後、GhidraやIDAなどで自分がコンパイルしたバイナリを解析し、元のソースコードと逆アセンブル・デコンパイル結果を比較します。
以下のループで勉強します。```text
LLMに小さなコードを作らせる
↓
ソースコードを読む・APIを調べる
↓
自分でビルドする
↓
Ghidraなどで解析する
↓
元のソースコードと比較する
↓
分からない部分だけLLMに質問する
↓
別の条件で再ビルドして比較する
Por exemplo, é útil comparar o seguinte sobre o código-fonte do mesmo processamento.
Analisar um binário conhecendo o código-fonte original é um treinamento muito bom para aprender engenharia reversa.
Para aprimorar ainda mais as técnicas de engenharia reversa, é bom resolver desafios de Rev de CTF e Crackmes. Em particular, problemas envolvendo arquivos PE e aqueles voltados para analistas de malware são recomendados.
Além disso, na engenharia reversa de malware, frequentemente se faz engenharia reversa do processamento de algoritmos criptográficos, por isso recomenda-se aprender técnicas básicas de criptografia. Depois de entender o algoritmo, leia o código-fonte de implementações de algoritmos criptográficos de código aberto publicadas no GitHub e tente fazer engenharia reversa na prática.
Ao prosseguir com a análise de malware, usar ferramentas melhores ou dominar o uso das ferramentas pode facilitar a análise. Além disso, mesmo tendo diversos conhecimentos, na prática a análise é feita por meio de ferramentas, portanto é necessário entender também como utilizá-las.
Para gerenciar a instalação e atualização de ferramentas de análise, no ambiente Windows o FLARE-VM publicado pela Mandiant é conveniente. É possível instalar de uma só vez as ferramentas necessárias para análise de malware e engenharia reversa.
No ambiente Linux, o REMnux pode ser utilizado. Este também reúne as ferramentas necessárias para análise de malware, e você pode conferi-las na lista de ferramentas incluídas.
Tanto o FLARE-VM quanto o REMnux permitem construir facilmente um ambiente de análise de malware, sendo recomendados também para quem vai criar um ambiente de análise pela primeira vez. Ao verificar as ferramentas incluídas em cada um e experimentá-las na prática, você pode aprender quais ferramentas de análise existem e em quais situações são utilizadas.
Além disso, é bom experimentar também as ferramentas apresentadas nos links a seguir.
Uma das formas úteis de usar o LLM é utilizá-lo como um professor a quem você pode perguntar na hora sobre coisas que não entende. Antes do surgimento dos LLMs, era necessário pesquisar por conta própria aquilo que não se compreendia e entender o conteúdo. Especialmente para iniciantes, muitas vezes não se sabe nem o que pesquisar, o que era um obstáculo no aprendizado. Atualmente, LLMs com alto nível de conhecimento explicam com paciência quantas vezes forem necessárias, de acordo com o seu nível de compreensão. Se não entender, basta perguntar novamente, e também é possível usar de formas como "explique de maneira mais simples", "dê exemplos concretos" ou "confirme se este entendimento está correto". Se houver disposição, é possível aprender perguntando infinitamente sobre o que não se entende — acho que vivemos em uma época boa.
Por exemplo, sobre resultados de desmontagem ou resultados de descompilação, é possível fazer perguntas como as seguintes.```text この関数の役割と、そう判断できる理由を教えてください。
## インストール
### 前提条件
- Python 3.8以上
- pip(Pythonパッケージマネージャー)
### インストール手順
1. リポジトリをクローンします:
```bash
git clone https://github.com/yourusername/kitploit-tool.git
cd kitploit-tool
python -m venv venv
source venv/bin/activate # Windowsの場合: venv\Scripts\activate
pip install -r requirements.txt
cp config.example.yaml config.yaml
# config.yamlを編集して設定をカスタマイズします
python main.py --target example.com
python main.py --target example.com --scan-type full --output results.json --verbose
config.yamlファイルで以下の設定が可能です:
scanner:
threads: 10
timeout: 30
retries: 3
output:
format: json
verbose: false
plugins:
- name: example_plugin
enabled: true
このプロジェクトはMITライセンスの下で公開されています。詳細はLICENSEファイルを参照してください。
プルリクエストは歓迎します。大きな変更を加える場合は、まずissueを開いて変更内容について議論してください。
## 検出ルール
### ルール1: 不審なファイルダウンロードの検出
```yaml
title: Suspicious File Download
description: Detects suspicious file downloads via curl, wget, or PowerShell
level: medium
tags:
- attack.command_and_control
- attack.t1071.001
detection:
selection:
EventID: 1
Image|endswith:
- '\curl.exe'
- '\wget.exe'
- '\powershell.exe'
CommandLine|contains:
- 'http://'
- 'https://'
- '-OutFile'
- '-o '
condition: selection
falsepositives:
- Legitimate software updates
- Package managers
title: Credential Dumping Attempt
description: Detects potential credential dumping activity
level: high
tags:
- attack.credential_access
- attack.t1003
detection:
selection:
EventID: 1
CommandLine|contains:
- 'sekurlsa'
- 'lsadump'
- 'kerberos::golden'
- 'mimikatz'
condition: selection
falsepositives:
- Penetration testing
- Security assessments
title: Registry Run Key Persistence
description: Detects persistence via registry Run keys
level: medium
tags:
- attack.persistence
- attack.t1547.001
detection:
selection:
EventID: 13
TargetObject|contains:
- '\CurrentVersion\Run\'
- '\CurrentVersion\RunOnce\'
condition: selection
falsepositives:
- Legitimate software installation
- System updates
# 対話形式でルールを作成
python3 rule_generator.py --interactive
# テンプレートからルールを作成
python3 rule_generator.py --template suspicious_process --output my_rule.yml
# 既存のルールを検証
python3 rule_generator.py --validate my_rule.yml
title: [Rule Title]
description: [Detailed description]
level: [critical|high|medium|low|informational]
status: [stable|test|experimental]
author: [Your Name]
date: [YYYY/MM/DD]
tags:
- attack.[tactic]
- attack.[technique_id]
logsource:
product: windows
service: security
detection:
selection:
[Field]: https://raw.githubusercontent.com/pinksawtooth/how_to_become_a_malware_analyst/main/%5BValue%5D
condition: selection
falsepositives:
- [Known false positive]
logsource:
product: windows
service: security
definition: 'Requires Windows Security Audit Policy'
logsource:
product: windows
service: sysmon
definition: 'Requires Sysmon installation'
logsource:
product: linux
service: auditd
definition: 'Requires auditd configuration'
notifications:
slack:
enabled: true
webhook_url: 'https://hooks.slack.com/services/XXX/YYY/ZZZ'
channel: '#security-alerts'
mention: '@security-team'
notifications:
email:
enabled: true
smtp_server: 'smtp.example.com'
smtp_port: 587
username: '[email protected]'
password: 'your_password'
from: '[email protected]'
to:
- '[email protected]'
tls: true
notifications:
webhook:
enabled: true
url: 'https://your-webhook-endpoint.com/alerts'
method: 'POST'
headers:
Content-Type: 'application/json'
Authorization: 'Bearer YOUR_TOKEN'
performance:
max_memory_mb: 2048
batch_size: 1000
buffer_size: 10000
gc_interval: 300
performance:
max_workers: 4
thread_pool_size: 8
process_pool_size: 4
cpu_threshold: 80
performance:
async_io: true
io_buffer_size: 65536
max_open_files: 1024
write_batch_size: 100
# ログソースの確認
python3 hayabusa.py --check-logs
# 権限の確認
sudo -u hayabusa python3 hayabusa.py --test
# デバッグモードで実行
python3 hayabusa.py --debug --verbose
# プロファイリング
python3 -m cProfile -o profile.stats hayabusa.py
# プロファイルの分析
python3 -c "import pstats; p = pstats.Stats('profile.stats'); p.sort_stats('cumulative').print_stats(20)"
# メモリ使用量の監視
python3 -m memory_profiler hayabusa.py
# オブジェクトの追跡
python3 -c "import gc; gc.set_debug(gc.DEBUG_LEAK)"
# アプリケーションログ
tail -f logs/hayabusa.log
# エラーログ
tail -f logs/error.log
# 監査ログ
tail -f logs/audit.log
# デバッグモードで実行
python3 hayabusa.py --debug
# 詳細ログを出力
python3 hayabusa.py --log-level DEBUG
# 特定のモジュールのみデバッグ
python3 hayabusa.py --debug-module detection
``````text
このWindows API呼び出しの前後で使われている構造体について説明してください。
各フィールドを確認するためにGhidra上でどこを見るべきかも教えてください。
+-------------------+ +-------------------+ +-------------------+
| | | | | |
| スキャナー |---->| アナライザー |---->| レポーター |
| | | | | |
+-------------------+ +-------------------+ +-------------------+
| | |
v v v
+-------------------+ +-------------------+ +-------------------+
| | | | | |
| シグネチャDB | | ヒューリスティクス| | ログ/アラート |
| | | | | |
+-------------------+ +-------------------+ +-------------------+
git clone https://github.com/example/malware-scanner.git
cd malware-scanner
pip install -r requirements.txt
python setup.py install
docker pull example/malware-scanner:latest
docker run -v /path/to/scan:/scan example/malware-scanner:latest /scan
malware-scanner scan /path/to/directory
malware-scanner scan /path/to/directory --extensions exe,dll,scr
malware-scanner scan /path/to/directory --yara-rules /path/to/rules.yar
malware-scanner monitor /path/to/directory --real-time
設定ファイルは~/.malware-scanner/config.yamlにあります:
scanner:
threads: 4
max_file_size: 100MB
timeout: 300
detection:
enable_yara: true
enable_clamav: true
heuristic_level: medium
reporting:
format: json
output_dir: /var/log/malware-scanner
verbose: false
rule ExampleMalware
{
meta:
description = "Example malware detection rule"
author = "Security Team"
date = "2024-01-01"
strings:
$s1 = "malicious_string_1" ascii
$s2 = "malicious_string_2" wide
$hex1 = { 4D 5A 90 00 }
condition:
$s1 or $s2 or $hex1
}
シグネチャはJSON形式で定義されます:
{
"name": "ExampleSignature",
"type": "hash",
"value": "d41d8cd98f00b204e9800998ecf8427e",
"severity": "high",
"description": "Known malware hash"
}
from malware_scanner import Scanner
scanner = Scanner(config_path="config.yaml")
results = scanner.scan("/path/to/directory")
for result in results:
print(f"File: {result.file_path}")
print(f"Threat: {result.threat_name}")
print(f"Severity: {result.severity}")
from malware_scanner import Monitor
monitor = Monitor(path="/path/to/watch")
monitor.start(callback=lambda event: print(f"Detected: {event}"))
{
"scan_id": "abc123",
"timestamp": "2024-01-01T12:00:00Z",
"scanned_files": 1500,
"threats_found": 3,
"threats": [
{
"file": "/path/to/malware.exe",
"threat": "Trojan.Generic",
"severity": "high"
}
]
}
file_path,threat_name,severity,detection_time
/path/to/malware.exe,Trojan.Generic,high,2024-01-01T12:00:00Z
threadsの値を増やしてスキャン速度を向上させます。max_file_sizeを調整して、大きなファイルのスキャンをスキップします。問題: スキャンが遅い 解決策: スレッド数を増やし、除外リストを設定してください。
問題: 誤検知が多い 解決策: ヒューリスティックレベルを下げるか、特定のルールを無効にしてください。
問題: ClamAVが検出されない
解決策: ClamAVが正しくインストールされ、clamdデーモンが実行されていることを確認してください。
## 検出機能
- **静的解析**: ファイルシステムをスキャンして、既知のマルウェアシグネチャ、不審なコードパターン、難読化されたスクリプトを検出します。
- **動的解析**: 制御されたサンドボックス環境でファイルを実行し、ランタイムの動作を監視します。
- **ヒューリスティックエンジン**: 機械学習モデルを活用して、未知の脅威やゼロデイ脅威を特定します。
- **YARAルール統合**: カスタムYARAルールをサポートし、標的型検出を実現します。
## インストール
```bash
git clone https://github.com/example/malware-scanner.git
cd malware-scanner
pip install -r requirements.txt
スキャナを実行するには、次のコマンドを使用します。
python scanner.py --path /path/to/scan --output report.json
| オプション | 説明 |
|---|---|
--path | スキャン対象のディレクトリまたはファイル |
--output | レポートの出力ファイル |
--recursive | サブディレクトリを再帰的にスキャン |
設定ファイル config.yaml を編集して、スキャナの動作をカスタマイズします。
scan:
max_file_size: 104857600
timeout: 300
threads: 4
detection:
enable_heuristics: true
yara_rules_path: ./rules
``````text
私はこの関数を「設定ファイルの読み込み処理」だと推測しました。
この仮説を検証するために確認すべきポイントを挙げてください。
最初から答えを聞くのではなく、ヒント、確認ポイント、検証方法を聞く使い方がおすすめです。
2026年現在は、ChatGPTのような対話型LLMだけでなく、ファイルの読み書き、プログラムのビルド、コマンドの実行などを行えるCoding Agentも利用できるようになっています。 さらに、MCP(Model Context Protocol)などを利用することで、AI Agentから解析ツールを直接操作する方法も広まりつつあります。 例えばREMnuxには、AI AgentからREMnux上のマルウェア解析ツールを利用するためのMCP Serverが用意されています。
Ghidraについても、AI Agentから操作するためのMCP実装がいくつか登場しています。私もGhidraをHeadlessで利用し、MCP経由でAI Agentから解析を行うためのMecha Ghidraを開発しています。
IDAやその他のリバースエンジニアリングツールについても、MCPやAgentと連携するための実装が複数登場しており、これまで人間が手作業で行っていた解析作業をAgentに任せることができるようになっています。 一方で、初学者の段階からすべての解析をAgentに任せてしまうのはおすすめしません。「なぜその解析を行ったのか」「ツールが内部で何をしているのか」「出力された結果が正しいのか」といったことを自分で判断する力が身につきにくくなるためです。
まずは自分で解析し、分からない部分をLLMに質問するところから始めるとよいでしょう。慣れてきたら、解析支援スクリプトの作成、MCPによるツール連携、Agentを使った解析の自動化へと徐々に進んでいくことをおすすめします。
業務で扱っているマルウェア、顧客から提供されたファイル、未公開のIoC、インシデント情報、社内情報などを外部のLLMサービスへ入力する場合には注意が必要です。 利用しているサービスの契約内容、データの保持期間、学習への利用有無、所属組織のルールなどを確認したうえで利用しましょう。
必要に応じて、以下のような対策を検討してください。
また、マルウェア本体や解析対象のファイル、解析結果の中には、AI Agentを意図しない動作へ誘導する文字列が含まれている可能性もあります。 特に、AI Agentがファイル操作やコマンド実行、解析ツールの操作まで行える場合は、通常のLLMよりも強い権限を持つことになります。そのため、マルウェア解析でAI Agentを利用する場合は、VMなどの隔離環境上で実行し、安全性を確保することをおすすめします。
AIはかなり賢くなりましたが、それでも意図しないコマンドを実行することがあります。 これまでのマルウェア解析と同様に解析環境を隔離するという基本を守って利用しましょう。
2026年現在、マルウェア解析を勉強するために、最初から実際のマルウェアを入手する必要はありません。 むしろ初学者には、以下の順番をおすすめします。
最初のうちは、元のソースコードが分かっているプログラムを教材にするのがおすすめです。 自分で解析した結果と実際のソースコードを比較できるため、「どこまで正しく解析できたか」「どこを読み違えたか」を自分で確認できます。 いきなり実際のマルウェアを解析するよりも、まずは答え合わせのできる教材を使って、逆アセンブルやデコンパイル結果の読み方に慣れる方が効率よく学習できると思います。
ここではマルウェアの入手方法について触れますが、紹介するサービスを利用する際は利用規約を必ず読んで利用してください。 また、以下の内容は、マルウェアの入手を勧めるものではありません。
不正指令電磁的記録に関する罪では、マルウェアの作成、提供、取得、保管などについて、その目的や正当な理由の有無などが要件になります。
私は法律の専門家ではないため、どういった理由であれば法律上の正当な理由にあたるかはわかりません。
個人の趣味でマルウェア解析をおこなうことは正当な理由として認められない可能性もあります。
捜査されると困る、裁判になったら困る、正当な理由として提示できる活動実績がない、弁護費用がないなど、平穏な人生を絶対に送りたいという人は、個人の趣味でやらないほうがよいかと思います。
とはいえ過度に怯えすぎて萎縮する必要はないとは思います。 最低限、警視庁が公開している不正指令電磁的記録に関する罪に関するページには目を通して、内容を確認しておきましょう。
マルウェアを扱う上で気にしなければいけないことは、法律面だけではありません。 マルウェアを実行(故意かどうかは問わない)すると、たいていの場合は攻撃者の用意したサーバにアクセスします。 攻撃者のサーバには自分の利用しているIPアドレスのログが残りますし、接続時に利用しているシステムの情報を送信することもあります。 マルウェアによっては、攻撃者によるコマンドの実行などがおこなわれることも考えられますし、内部ネットワークのスキャンや(一番避けるべき)外部への感染活動などがおこなわれるかもしれません。 攻撃者のサーバに記録された情報は攻撃者自身だけでなく、第三者へ提供されることもあります。また、捜査機関はサーバを差し押さえてログを解析したうえで、ISPに情報開示請求をおこなうことができます。
以下のどれか一つにでも当てはまる場合は、実際のマルウェアを利用した学習は控えましょう。
実際のマルウェアを個人的に入手しなくても、学習する方法は前述しております。
最後にオタクがみんな大好きな以下の名言たちで前置きを終えます。
With great power comes great responsibilityThe abyss gazes also into you.マルウェアのサンプルやIoCを共有するためのサービスがいくつかあります。もっとも登録が多く有名なサービスはVirusTotalですが、有償アカウントのみダウンロードが可能であるため、ここでは無償で利用可能なサービスを紹介します。
この2つのサービスがサンプルの入手先としては有力です。
参考情報として以下のサービスも記載しておきます。
無料で使用できるオンラインサンドボックスのサービスは本来マルウェアの挙動を解析するサービスですが、他者の投稿したマルウェアをダウンロードすることができます。
以下はRAT(Remote Access Trojan)の実装を理解するのに役に立つリポジトリです。 ソースコードと実際のバイナリを比較することで、通信処理、コマンド実行、ファイル操作などの実装を学ぶことができます。
マルウェアのC2通信やAgentの実装を理解するためには、オープンソースで公開されているC2フレームワークのソースコードを読むことも参考になります。 C2フレームワークには、AgentとC2 Server間の通信、コマンドの受信と実行、ファイル操作、プロセス操作、通信データの暗号化など、マルウェアでもよく見られる機能が実装されています。 それぞれ実装言語やAgentの構造、通信方式が異なるため、ソースコードと生成されたAgentを比較しながらリバースエンジニアリングしてみるのもよいでしょう。
| オプション | 説明 | デフォルト |
|---|
--target | スキャン対象のホストまたはIPアドレス | 必須 |
--scan-type | スキャンの種類(quick、full、stealth) | quick |
--output | 出力ファイルのパス | stdout |
--verbose | 詳細なログを出力 | false |
--timeout | タイムアウト秒数 | 30 |
--yara | カスタムYARAルールファイルへのパス |