インターネットに接続されたシステムが当たり前になった現代、サイバー攻撃の手口は日々巧妙化しています。企業や組織が守るべき資産はデジタル化し、攻撃者はその隙を狙っています。そこで重要になるのが「セキュリティを攻撃者の視点から理解する」という考え方です。
本記事では、セキュリティエンジニアや開発者が実際の現場で使用するツール群を、初心者にもわかりやすく解説します。取り上げるのは以下の3つのテーマです。
- ネットワークトラフィック分析:通信の中身を可視化する技術
- Burp Suite:Webアプリケーションの脆弱性診断ツール
- Frida:動的解析・ランタイムフッキングフレームワーク
⚠️ 免責事項:本記事の内容は、正規に許可を得たシステムへのセキュリティテストや学習目的に限定されます。他者のシステムへの無断アクセスは不正アクセス禁止法等に抵触し、刑事罰の対象となります。必ず法令を遵守してご利用ください。
第1章:ネットワークトラフィック分析とは
- 1-1. ネットワークトラフィック分析の基礎知識
- 1-2. なぜトラフィック分析が重要なのか
- 1-3. 主要なツール:Wireshark
- 1-4. tcpdumpを使ったコマンドラインキャプチャ
- 1-5. TLSトラフィックの解読(注意事項あり)
- 2-1. Burp Suiteとは
- 2-2. Burp Suiteのインストール
- 2-3. 初期設定:プロキシの構成
- 2-4. Burp Suiteの主要機能
- 2-5. 実践:Burp Suiteでリクエストを改ざんしてみる
- 2-6. FoxyProxyで快適なプロキシ切り替え
- 3-1. Fridaとは何か
- 3-2. Fridaのアーキテクチャ
- 3-3. Fridaのインストール
- 3-4. Android環境向けfrida-serverのセットアップ
- 3-5. Fridaの基本的な使い方
- 3-6. AndroidアプリのJavaメソッドをフック
- 3-7. frida-traceで関数呼び出しをトレース
- 3-8. PythonからFridaを制御する
- 4-1. 3ツールの使い分けと連携
- 4-2. モバイルアプリ診断のワークフロー
- 4-3. CTF(Capture The Flag)での活用
- 4-4. セキュリティ学習のロードマップ
1-1. ネットワークトラフィック分析の基礎知識
ネットワークトラフィック分析(NTA:Network Traffic Analysis)とは、ネットワーク上を流れるデータ(パケット)を収集・解析し、通信の内容や状態を把握する技術です。セキュリティの世界では、不正アクセスや情報漏洩の検出、マルウェアの通信パターン特定などに活用されます。
ネットワーク上のデータは「パケット」と呼ばれる小さな単位に分割されて送受信されます。各パケットには送信元IPアドレス、宛先IPアドレス、ポート番号、プロトコル情報、そして実際のデータ(ペイロード)が含まれています。これらを解析することで、誰が何と通信しているかを把握できます。
1-2. なぜトラフィック分析が重要なのか
現代の攻撃者は、通常の通信に紛れ込むかたちで悪意のある行動を行います。たとえば、マルウェアはC2サーバー(Command and Control)と定期的に通信し、指令を受け取ります。この通信を検出するにはトラフィック分析が不可欠です。
- インシデント対応:攻撃が発生した際、何が起きたかをパケットレベルで調査できる
- 脅威ハンティング:既知の脅威だけでなく、未知の不審な通信パターンを発見できる
- ペネトレーションテスト:自社システムへの攻撃を模擬し、防御の弱点を発見できる
- コンプライアンス:通信ログを証拠として保全し、監査対応に活用できる
1-3. 主要なツール:Wireshark
ネットワークトラフィック分析の定番ツールといえばWireshark(ワイヤーシャーク)です。2006年にGerald Combs氏らによって開発されたオープンソースのパケットアナライザで、世界中のネットワークエンジニアやセキュリティ研究者に使用されています。
Wiresharkのインストール
Windows:
公式サイト(https://www.wireshark.org/)からインストーラをダウンロードし、実行するだけです。インストール時に「Npcap」(パケットキャプチャドライバ)も同時にインストールすることを推奨します。
macOS:
Homebrewを使用する場合は以下のコマンドを実行します。
brew install --cask wireshark
Linux(Ubuntu/Debian):
sudo apt update
sudo apt install wireshark
sudo usermod -aG wireshark $USER
最後のコマンドは、一般ユーザーでもキャプチャできるようにするためのグループ追加です。ログアウト後に再ログインすると有効になります。
Wiresharkの基本操作
Wiresharkを起動すると、使用可能なネットワークインターフェース(Wi-Fi、有線LANなど)の一覧が表示されます。分析したいインターフェースをダブルクリックするとキャプチャが始まります。
重要なフィルタ構文(ディスプレイフィルタ):
- 特定IPとの通信を絞り込む:ip.addr == 192.168.1.1
- HTTPトラフィックのみ表示:http
- DNSクエリのみ表示:dns
- 特定ポートの通信:tcp.port == 443
- 送信元IPでフィルタ:ip.src == 10.0.0.1
💡 ヒント:Wiresharkの「Follow TCP Stream」機能を使うと、特定のTCPセッションの内容を人間が読みやすいかたちで表示できます。パケットを右クリック→「Follow」→「TCP Stream」で利用できます。
1-4. tcpdumpを使ったコマンドラインキャプチャ
Wiresharkがグラフィカルな操作を提供するのに対し、tcpdumpはコマンドラインで動作するパケットキャプチャツールです。サーバー環境やリモート操作時に特に威力を発揮します。
基本的な使い方:
# すべてのトラフィックをキャプチャ
sudo tcpdump -i eth0
# 特定のホストの通信のみキャプチャ
sudo tcpdump -i eth0 host 192.168.1.100
# ファイルに保存(後でWiresharkで開ける)
sudo tcpdump -i eth0 -w capture.pcap
# HTTPトラフィックのみ(ポート80)
sudo tcpdump -i eth0 port 80 -A
「-A」オプションをつけると、パケットのペイロードをASCII文字で表示します。HTTPの平文通信内容を確認するのに便利です。
1-5. TLSトラフィックの解読(注意事項あり)
現代のWebトラフィックのほとんどはHTTPS(TLS暗号化)されており、そのままではパケットの中身を読むことができません。正規に許可された自社環境での解析では、以下の方法でTLS通信を解読できます。
- SSLKEYLOGFILE環境変数:ブラウザがTLSセッションキーをファイルに書き出す機能。Wiresharkでこのファイルを読み込むと復号可能
- プロキシツール(Burp Suite):後述のBurp Suiteを中間者(MITM)として動作させることで通信を可視化
⚠️ 他人の暗号化通信を無断で解読する行為は違法です。この技術は自社システムのテストや開発中の自己通信の確認にのみ使用してください。
第2章:Burp Suite — Webセキュリティの定番プロキシツール
2-1. Burp Suiteとは
Burp Suite(バープスイート)は、PortSwigger社が開発したWebアプリケーションセキュリティテスト用の統合プラットフォームです。セキュリティエンジニアやペネトレーションテスターが最も使用するツールの一つで、WebアプリケーションへのHTTP/HTTPSリクエストを傍受・改ざん・再送信する機能を中心に、多数の診断機能を備えています。
エディションは主に3種類あります。
- Burp Suite Community Edition:無料版。基本機能を利用可能
- Burp Suite Professional:有料版(年間約450ドル)。自動スキャン、高度なツール群が利用可能
- Burp Suite Enterprise Edition:企業向けCI/CD統合版。高価格帯
本記事では、無料で使えるCommunity Editionを中心に解説します。
2-2. Burp Suiteのインストール
前提条件:Java Runtime Environment
Burp SuiteはJavaで動作します。Java 17以上が必要です。公式インストーラーにはJREが同梱されているため、通常は別途インストール不要です。
ダウンロードとインストール
Windows / macOS:
PortSwigger公式サイト(https://portswigger.net/burp/communitydownload)からインストーラーをダウンロードして実行します。インストーラーに従うだけで完了します。
Linux:
# ダウンロード(バージョンは適宜更新)
wget https://portswigger.net/burp/releases/download?product=community&type=Linux -O burpsuite_installer.sh
chmod +x burpsuite_installer.sh
./burpsuite_installer.sh
Kali Linux(セキュリティ特化ディストリビューション)の場合:
sudo apt update && sudo apt install burpsuite
💡 Kali Linuxにはデフォルトでセキュリティツールが多数含まれており、Burp Suiteもaptでインストールできるようになっています。
2-3. 初期設定:プロキシの構成
Burp Suiteを使うには、ブラウザのプロキシ設定を変更して、すべての通信をBurp経由に流す必要があります。
Burp Suite側の設定
Burp Suiteを起動し、「Proxy」→「Options」(または「Proxy」→「Proxy settings」)を開きます。デフォルトでは127.0.0.1:8080でリッスンするよう設定されています。
ブラウザ側の設定(Firefoxの例)
- Firefoxの設定→「ネットワーク設定」→「接続設定」を開く
- 「手動でプロキシを設定する」を選択
- HTTPプロキシ:127.0.0.1、ポート:8080 を入力
- 「このプロキシをFTPとHTTPSにも使用する」にチェック
設定後、Firefoxでhttp://burpsuite にアクセスすると、Burpの管理画面が開きます。
CA証明書のインストール(HTTPS対応)
HTTPSサイトの通信をBurpで傍受するには、BurpのCA証明書をブラウザに信頼させる必要があります。
- プロキシ設定済みのブラウザで http://burpsuite にアクセス
- 「CA Certificate」をクリックしてダウンロード
- Firefoxの設定→「証明書を表示」→「認証局証明書」タブ→「インポート」
- ダウンロードしたcacert.derを選択し、「このCAを信頼してWebサイトを識別する」にチェック
⚠️ このCA証明書は絶対に他者のコンピュータにインストールしてはいけません。攻撃者がそのコンピュータのすべてのHTTPS通信を傍受できるようになります。
2-4. Burp Suiteの主要機能
① Proxy(プロキシ)
Burpの中核機能です。ブラウザとWebサーバーの間に割り込み、リクエスト・レスポンスを傍受・改ざんできます。「Intercept is on」の状態でブラウザ操作をすると、通信がBurpで止まり、内容を確認・編集してから転送できます。
② Repeater(リピーター)
傍受したリクエストを保存し、手動で何度でも再送信・改ざんして試せる機能です。SQLインジェクションやXSSの試験に最適です。ProxyでリクエストをキャプチャしたらCtrl+Rで送れます。
③ Intruder(イントルーダー)
パラメータの一部に自動で値を挿入し、大量リクエストを送信する機能です。ブルートフォース攻撃の模擬、列挙(Enumeration)に使います。Community版ではレート制限がありますが、基本的な用途には十分です。
④ Scanner(スキャナー)— Professional版のみ
WebサイトをクロールしながらSQLインジェクション、XSS、XXEなど100種類以上の脆弱性を自動スキャンします。Professional版の目玉機能です。
⑤ Decoder(デコーダー)
Base64、URL エンコード、HTMLエンティティなどのエンコード/デコードを素早く行えます。怪しいパラメータ値の解析に便利です。
2-5. 実践:Burp Suiteでリクエストを改ざんしてみる
PortSwigger社はBurp Suiteの学習用に「Web Security Academy」(https://portswigger.net/web-security)という無料のラボ環境を提供しています。ここでは合法的に脆弱なアプリケーションを診断できます。
SQLインジェクションの試験手順(Web Security Academyのラボ):
- Web Security AcademyでSQLインジェクションのラボを起動
- Burp Suiteのプロキシを有効にしてラボにアクセス
- ログインフォームに適当な文字を入力してログイン試行を傍受
- Repeaterにリクエストを送信
- username パラメータの値を administrator’– に変更して送信
- パスワードチェックがバイパスされログイン成功することを確認
💡 このラボはPortSwiggerが提供する学習専用の脆弱なアプリです。実際のWebサイトには絶対に試みないでください。
2-6. FoxyProxyで快適なプロキシ切り替え
Burpを使うたびにブラウザのプロキシ設定を変更するのは面倒です。Firefox/Chrome用のFoxyProxy拡張機能を使えば、ワンクリックでBurpプロキシのON/OFFを切り替えられます。
- ブラウザのアドオンストアで「FoxyProxy Standard」を検索してインストール
- FoxyProxyの設定から新規プロキシを追加:Host=127.0.0.1、Port=8080、Type=HTTP
- プロキシ名を「Burp Suite」などとして保存
- ツールバーのFoxyProxyアイコンから「Burp Suite」を選ぶだけで有効化
第3章:Frida — 動的計装フレームワークの決定版
3-1. Fridaとは何か
Frida(フリーダ)は、Ole André Vadla Ravnåsが開発したオープンソースの動的計装(Dynamic Instrumentation)フレームワークです。「動的計装」とは、実行中のプロセスにコードを注入し、関数の呼び出し・引数・戻り値を監視・改ざんする技術です。
Fridaが特に強力なのは、以下の対応プラットフォームの広さです。
- Windows / macOS / Linux(デスクトップアプリ解析)
- Android(モバイルアプリの解析・ルート検出のバイパスなど)
- iOS(越獄環境でのアプリ解析)
- QNX / FreeBSD など
Fridaは主にPython APIで操作し、フッキングのロジックはJavaScriptで記述します。特にモバイルアプリのセキュリティ診断(Android/iOS)において業界標準のツールとなっています。
3-2. Fridaのアーキテクチャ
Fridaは「frida-server」と「frida-client」の2つのコンポーネントで動作します。
- frida-server:解析対象のデバイス(PCやAndroid端末)で動作するバックエンド
- frida-client(Pythonライブラリ):解析を行うPC側のフロントエンド
PCのアプリを解析する場合はfrida-serverは不要で、直接プロセスにアタッチできます。Androidアプリを解析する場合は、Android端末(エミュレーターも可)にfrida-serverを配置する必要があります。
3-3. Fridaのインストール
前提条件
- Python 3.8以上
- pip(Pythonパッケージマネージャー)
- Androidアプリ解析の場合:ADB(Android Debug Bridge)のインストール
Pythonライブラリのインストール(全プラットフォーム共通)
pip install frida frida-tools
frida-toolsをインストールすると、コマンドラインツール(frida, frida-ps, frida-trace など)も利用可能になります。
インストール確認:
frida --version
バージョンが表示されれば成功です(例:16.x.x)。
Windows特有の注意点
Windowsの場合、Visual C++ Build Toolsが必要になる場合があります。エラーが出た場合は、Microsoft Build Tools(https://visualstudio.microsoft.com/visual-cpp-build-tools/)をインストールしてください。
3-4. Android環境向けfrida-serverのセットアップ
AndroidアプリをFridaで解析する場合、実機(root化が必要)またはエミュレーター(AVD:Android Virtual Device)を使用します。ここではエミュレーターを使った手順を説明します。
Android Studioのエミュレーター準備
- Android Studio(https://developer.android.com/studio)をインストール
- AVD Manager からエミュレーターを作成(Google Play非搭載のイメージ推奨)
- エミュレーターを起動
frida-serverのダウンロードと配置
# frida-serverのダウンロード(バージョンはfridaと合わせること)
# GitHubリリースページ: https://github.com/frida/frida/releases
# エミュレーターのアーキテクチャに合わせて選ぶ(x86_64など)
# ADBでデバイス確認
adb devices
# frida-serverをデバイスに転送
adb push frida-server /data/local/tmp/
# 実行権限を付与
adb shell chmod 755 /data/local/tmp/frida-server
# frida-serverをバックグラウンドで起動
adb shell '/data/local/tmp/frida-server &'
# 接続確認(Androidのプロセス一覧が表示されれば成功)
frida-ps -U
💡 「-U」は「USB接続のデバイス」を意味します。エミュレーターもUSBデバイスとして認識されます。
3-5. Fridaの基本的な使い方
PCアプリへのアタッチ(Windowsの例)
# 実行中のプロセスにアタッチ(プロセス名で指定)
frida notepad.exe
# プロセスIDで指定
frida -p 1234
# 新規起動しながらアタッチ(Spawn mode)
frida -f notepad.exe
JavaScriptスクリプトで関数をフック
Fridaの真の力はJavaScriptスクリプトにあります。以下は、Windowsの「MessageBoxW」API(メッセージボックスを表示する関数)をフックして、引数と戻り値をログに出力するサンプルです。
// hook_msgbox.js
var MessageBoxW = Module.getExportByName('user32.dll', 'MessageBoxW');
Interceptor.attach(MessageBoxW, {
onEnter: function(args) {
console.log('[*] MessageBoxW called!');
console.log(' hWnd: ' + args[0]);
console.log(' lpText: ' + args[1].readUtf16String());
console.log(' lpCaption: ' + args[2].readUtf16String());
},
onLeave: function(retval) {
console.log('[*] Return value: ' + retval);
}
});
# スクリプトを読み込みながらアタッチ
frida -p <PID> -l hook_msgbox.js
3-6. AndroidアプリのJavaメソッドをフック
Androidアプリ(Java/Kotlin)の場合、JavaクラスのメソッドをFridaでフックできます。
ルート検出のバイパス(典型的なユースケース)
多くのセキュリティアプリはroot化を検出して動作を拒否します。Fridaを使ってその検出ロジックをバイパスできます(自社アプリのテスト目的に限ります)。
// bypass_root.js
Java.perform(function() {
// RootBeer等のルート検出ライブラリのisRootedメソッドをフック
var RootBeer = Java.use('com.scottyab.rootbeer.RootBeer');
RootBeer.isRooted.implementation = function() {
console.log('[*] isRooted() called - returning false');
return false; // 常にfalseを返す
};
});
# Androidアプリにスクリプトを適用(Spawn mode)
frida -U -f com.example.targetapp -l bypass_root.js --no-pause
SSL Pinnngのバイパス
SSL Pinning(証明書ピニング)とは、アプリが特定の証明書のみを信頼する仕組みで、BurpSuiteでHTTPS通信を傍受しようとしても「証明書が違う」と弾かれます。Fridaでこれをバイパスするスクリプトが多数公開されています。
# Objectionを使うと一発でSSL Pinningをバイパスできる
pip install objection
objection -g com.example.targetapp explore
# Objection内で以下を実行
android sslpinning disable
💡 Objectionは、Fridaをベースに多くのバイパス処理を自動化したツールです。SSL Pinningのバイパス、ルート検出回避などが簡単なコマンドで実行できます。
3-7. frida-traceで関数呼び出しをトレース
frida-traceは、指定した関数が呼ばれるたびに自動でログを出力するツールです。どんな関数が呼ばれているかを素早く把握するのに便利です。
# crypto関連の関数をすべてトレース(Android)
frida-trace -U -j '*!*encrypt*' -f com.example.targetapp
# Windowsアプリで特定DLLの関数をトレース
frida-trace -i 'recv*' -i 'send*' notepad.exe
「-j」はJavaメソッド、「-i」はネイティブ関数のフィルタです。ワイルドカード(*)が使えます。
3-8. PythonからFridaを制御する
コマンドラインだけでなく、PythonスクリプトからFridaを制御することで、より複雑な自動化が可能です。
import frida
import sys
# フック用JavaScriptコード
jscode = '''
Java.perform(function() {
var String = Java.use('java.lang.String');
String.equals.implementation = function(other) {
var result = this.equals(other);
console.log('String.equals called: ' + this + ' == ' + other + ' -> ' + result);
return result;
};
});
'''
# Androidデバイスに接続
device = frida.get_usb_device()
# アプリを起動してアタッチ
pid = device.spawn(['com.example.targetapp'])
session = device.attach(pid)
# スクリプトを作成・ロード
script = session.create_script(jscode)
script.on('message', lambda msg, data: print(msg))
script.load()
# アプリ実行を再開
device.resume(pid)
sys.stdin.read()
第4章:実際のセキュリティ診断での活用方法
4-1. 3ツールの使い分けと連携
これまで解説してきた3つのツールは、それぞれ得意とする領域が異なります。実際のセキュリティ診断では、これらを組み合わせることで強力な分析が可能になります。
| ツール | 主な用途 | 得意な場面 |
| Wireshark / tcpdump | ネットワーク全体のトラフィック可視化 | インシデント調査・ネットワーク監視 |
| Burp Suite | HTTP/HTTPSのリクエスト操作・Web脆弱性診断 | Webアプリのペネトレーションテスト |
| Frida | 実行中プロセスのフッキング・動的解析 | モバイルアプリ解析・バイナリ解析 |
4-2. モバイルアプリ診断のワークフロー
Androidアプリのセキュリティ診断では、以下のような流れでBurp SuiteとFridaを組み合わせて使います。
- ① Burp SuiteをプロキシとしてAndroidエミュレーターに設定
- ② FridaでSSL Pinningをバイパス(必要な場合)
- ③ アプリを操作しながらBurpでHTTPS通信を傍受・記録
- ④ 怪しいAPIエンドポイントをBurp Repeaterで詳しく調査
- ⑤ Fridaで暗号化処理や認証ロジックを動的に解析
- ⑥ frida-traceで呼び出されている関数を網羅的に確認
Androidエミュレーターにプロキシを設定する方法
# AVDのプロキシ設定(起動時にオプションで指定)
emulator -avd Pixel_6_API_30 -http-proxy http://127.0.0.1:8080
または、エミュレーター上のWi-Fi設定から手動でプロキシを設定します(Settings→Wi-Fi→長押し→Modify Network→Advanced→Manual Proxy)。
4-3. CTF(Capture The Flag)での活用
CTFとは、セキュリティの技術を競うコンテストです。Webカテゴリ、リバースエンジニアリングカテゴリ、モバイルカテゴリなどで、今回紹介したツールが活躍します。
- WebカテゴリではBurp SuiteのRepeaterでパラメータを操作
- AndroidカテゴリではFridaで暗号化されたフラグを抽出
- ForensicsカテゴリではpcapファイルをWiresharkで解析
初心者向けのCTFプラットフォームとしては、PicoCTF(https://picoctf.org/)やHack The Box(https://www.hackthebox.com/)が有名です。これらは合法的にスキルを磨ける環境です。
4-4. セキュリティ学習のロードマップ
本記事で紹介したツールを使いこなすには、基礎知識の積み上げが重要です。以下の学習ロードマップを参考にしてください。
ステップ1:ネットワーク基礎(1〜2ヶ月)
- TCP/IP プロトコル(IPアドレス、ポート、3ウェイハンドシェイク)
- HTTP/HTTPSの仕組み(リクエスト・レスポンス、ヘッダー、Cookie)
- DNSの仕組みを理解する
ステップ2:Webセキュリティ基礎(2〜3ヶ月)
- OWASP Top 10の10種類の脆弱性を理解する
- PortSwigger Web Security AcademyでBurp Suiteを実践
- SQLインジェクション、XSS、CSRFの原理を学ぶ
ステップ3:モバイルセキュリティ(2〜3ヶ月)
- Androidアプリの仕組み(APK構造、Dalvik/ART仮想マシン)
- jadx等でAPKをデコンパイルして静的解析
- FridaとObjectionで動的解析を実践
ステップ4:CTFと資格取得
- CTFコンテストに参加して実践力を磨く
- CompTIA Security+、CEH、OSSCPなどの資格を目指す
💡 おすすめの学習リソース:PortSwigger Web Security Academy(無料・Burp Suite込み)、HackTheBox・TryHackMe(ハンズオン環境)、OWASP公式ドキュメント
第5章:まとめ
本記事では、サイバーセキュリティの実践に欠かせない3つのツールを解説しました。
- Wireshark / tcpdump:ネットワークのパケットを可視化し、通信の実態を把握する
- Burp Suite:WebアプリへのHTTP通信を傍受・改ざんし、脆弱性を発見する
- Frida:実行中のプロセスに動的にコードを注入し、挙動を解析・改変する
これらのツールは、攻撃者の視点を理解することで、防御者としての能力を高めるために使われます。「攻撃を知らずして守れない」という言葉のとおり、正しく学び、正しく使うことが大切です。
最後に改めて強調しておきます。本記事で紹介したツールや技術は、必ず許可を得た環境・自己の管理下にあるシステムに対してのみ使用してください。他者のシステムへの無断攻撃は犯罪です。倫理的なハッカー(Ethical Hacker)として、セキュリティの向上に貢献しましょう。
© 2025 サイバーセキュリティ実践ガイド | 本記事の無断転載を禁じます


コメント