Ettercap-pkexec と PwnKit(CVE-2021-4034) 徹底解説

セキュリティツール

Ettercap の権限昇格機能と、それに関連する深刻な脆弱性について学びましょう。

⚠️ 注意: この記事で解説する内容は、セキュリティ研究や教育目的のみを対象としています。許可なく他者のシステムに対して攻撃を試みることは、法律で固く禁じられており、重大な結果を招く可能性があります。必ず自身の管理下にある検証環境でのみ実施してください。

はじめに

Ettercap は、ネットワークセキュリティの分野で長年使用されてきた強力な中間者攻撃(Man-in-the-Middle, MitM)ツールです。このツール群の一部として ettercap-pkexec というラッパースクリプトが存在します。これは、GUI環境などから Ettercap を root 権限で簡単に起動するための仕組みです。

しかし、この pkexec というコマンド自体に、2021年に深刻な脆弱性が発見されました。それが「PwnKit」と呼ばれる CVE-2021-4034 です。この脆弱性は、ほぼ全ての Linux ディストリビューションに影響を与え、一般ユーザーが簡単に root 権限を取得できてしまうという非常に危険なものでした。

この記事では、まず Ettercap とは何か、ettercap-pkexec がどのように機能するのかを解説します。次に、PwnKit (CVE-2021-4034) 脆弱性の詳細とその危険性について掘り下げ、最後に Ettercap の使い方(特に ettercap-pkexec 経由での利用)と、PwnKit 脆弱性への対策について説明します。セキュリティ専門家を目指す方、Linux システムの管理者、あるいは単にサイバーセキュリティに興味がある方にとって、有益な情報となるでしょう。😊

Ettercap とは? 🤔

Ettercap は、LAN (Local Area Network) 上での中間者攻撃 (MitM) を実行するためのオープンソースのツールスイートです。2001年に最初のバージョンがリリースされて以来、ネットワーク分析やセキュリティテストの分野で広く利用されてきました。

主な機能は以下の通りです。

  • ライブ接続のスニッフィング: ネットワーク上を流れるパケットをリアルタイムで傍受し、内容を確認できます。
  • コンテンツフィルタリング: 通信内容をその場で改ざんしたり、特定の情報を削除したりできます。
  • ホストスキャン: LAN 内のホストを発見し、OS などの情報を特定します。
  • ARP スプーフィング: ARP キャッシュポイズニングとも呼ばれ、ターゲット間の通信を自身のマシン経由に迂回させます。これにより、通信内容の盗聴や改ざんが可能になります。
  • DNS スプーフィング: 偽の DNS 応答を送りつけ、ユーザーを偽のウェブサイトなどに誘導します。
  • 多様なプロトコルの解析: HTTP, FTP, Telnet, SSH (一部), HTTPS (証明書偽装による) など、多くのプロトコルに対応しています。
  • プラグインによる機能拡張: 様々なプラグインを追加することで、機能を拡張できます。

Ettercap は、テキストベースのインターフェース (CUI)、ncurses を利用したテキストベースの GUI、そして GTK+ を利用したグラフィカルなインターフェース (GUI) を提供しており、ユーザーの好みに合わせて利用できます。

その強力な機能から、ペネトレーションテストやネットワークの脆弱性診断において重要なツールとされていますが、悪用されると深刻な被害を引き起こす可能性もあります。そのため、倫理的な利用が強く求められます。

PwnKit (CVE-2021-4034) 脆弱性とは? 💥

PwnKit は、2022年1月25日にセキュリティ企業 Qualys によって公表された、Polkit (PolicyKit) の pkexec コマンドに存在する深刻なローカル権限昇格の脆弱性です。CVE ID は CVE-2021-4034 が割り当てられています。

Polkit と pkexec

Polkit (旧 PolicyKit) は、Unix 系 OS において、システム全体の権限を管理し、非特権プロセスが特権プロセスと安全に通信するための仕組みを提供するコンポーネントです。多くの主要な Linux ディストリビューション (Ubuntu, Debian, Fedora, CentOS など) にデフォルトでインストールされています。

pkexec は Polkit のツールセットに含まれるコマンドの一つで、sudo に似ていますが、より細かいポリシー制御が可能です。設定されたポリシーに基づき、認証されたユーザーが一時的に他のユーザー(通常は root)としてコマンドを実行することを許可します。pkexec 自体は SUID (Set User ID) root プログラムとして動作するため、実行時には root 権限を持ちます。これが攻撃のターゲットとなりやすい理由です。

脆弱性の詳細

PwnKit 脆弱性は、pkexec がコマンドライン引数を処理する方法に存在するメモリ破壊 (Memory Corruption) の欠陥です。

  1. pkexec は、実行されるコマンドのパスを特定しようとします。
  2. 引数 (argc) が 0 の場合(通常、POSIX 準拠のシステムではありえないが、Linux カーネルはこれを許容する)、引数配列 (argv) の範囲外アクセスが発生します。
  3. この範囲外書き込みにより、環境変数配列 (envp) の領域に意図しないデータが書き込まれる可能性があります。
  4. 攻撃者はこの挙動を利用して、通常 SUID プログラムからは削除されるはずの危険な環境変数(例: GCONV_PATH, SHELL, LD_PRELOAD など)を pkexec の実行環境に再導入できます。
  5. 例えば、GCONV_PATH 環境変数を悪用すると、文字コード変換ライブラリ (gconv) をロードする際に、攻撃者が用意した任意の共有ライブラリを root 権限で実行させることが可能になります。

この脆弱性の特に危険な点は以下の通りです。

  • 発見時期と影響範囲: この脆弱性は pkexec が最初に導入された 2009年5月 (commit c8c3d83) から存在しており、12年以上にわたって見過ごされてきました。そのため、公表時点で非常に広範囲の Linux ディストリビューションが影響を受けました。
  • 悪用の容易さ: 特別な知識がなくとも、比較的簡単な C 言語のコード(数十行程度)で root 権限を取得できるエクスプロイトがすぐに公開されました。
  • 影響の深刻度: 脆弱性を悪用されると、システムにログインできる任意の非特権ユーザーが、即座に完全な root 権限を取得できてしまいます。
  • 検出の難しさ (一部): 一部の悪用手法では、ログに痕跡を残さずに権限昇格を行うことが可能です。
  • Polkit デーモンの稼働不要: Polkit デーモンが動作していなくても、pkexec コマンドが存在すれば悪用可能です。

CVSS v3.1 のベーススコアは 7.8 (High) と評価されており、その深刻度を示しています。

💡 豆知識: この脆弱性は、2013年頃に個人ブログでその奇妙な挙動が指摘されていましたが、当時は脆弱性として認識・報告されませんでした。

この脆弱性はローカル権限昇格 (LPE) の脆弱性であり、リモートから直接悪用することはできません。しかし、他の脆弱性や手段(フィッシング、パスワード推測など)によって攻撃者がまず低権限でシステムに侵入した場合、この PwnKit 脆弱性を利用して瞬時に root 権限を奪取し、システムを完全に掌握することが可能になります。

ettercap-pkexec スクリプトの解説 📜

ettercap-pkexec は、Ettercap スイートに含まれる小さなシェルスクリプトです。その主な目的は、グラフィカルデスクトップ環境 (GNOME, KDE など) のメニューランチャーやショートカットから、あるいはターミナルから、ユーザーが簡単に Ettercap (特に GUI 版である ettercap -G) を root 権限で起動できるようにすることです。

Ettercap はネットワークの低レベルな操作(生ソケットの利用、ネットワークインターフェースのプロミスキャスモード設定など)を行うため、多くの場合 root 権限が必要です。しかし、セキュリティの観点からは、常に root で GUI アプリケーションを実行するのは好ましくありません。

そこで ettercap-pkexec は、Polkit フレームワークを利用します。pkexec コマンドを介して Ettercap 本体を呼び出すことで、ユーザーに必要な認証(通常はユーザー自身のパスワード入力)を求め、認証に成功した場合のみ Ettercap を root として実行します。これにより、sudo を直接使うよりも、デスクトップ環境との統合がスムーズになります。

通常、ettercap-pkexec の動作は /usr/share/polkit-1/actions/org.pkexec.ettercap.policy のような Polkit ポリシーファイルによって定義されます。このファイルには、どのユーザーがどのような条件下で ettercap-pkexec を通じて Ettercap を実行できるかが記述されています。

スクリプトの中身は非常にシンプルで、通常は以下のような形式になっています(具体的な内容はディストリビューションによって若干異なる場合があります)。

#!/bin/sh
pkexec --disable-internal-agent "ettercap" "$@"

これは、受け取った全ての引数 ("$@") をそのまま ettercap コマンドに渡し、pkexec を使ってそれを実行するという意味です。--disable-internal-agent オプションは、利用可能なグラフィカルな認証エージェントがない場合に、pkexec が自身のテキストベース認証エージェントを使用しないようにするためのものです。

つまり、ettercap-pkexec 自体は悪意のあるものではなく、単なる便利なラッパーです。しかし、それが依存している pkexec コマンドに PwnKit (CVE-2021-4034) 脆弱性が存在したため、間接的に危険な状況を生み出す可能性がありました。

ettercap-pkexec の場所

このスクリプトは通常、システムの実行パス (例: /usr/bin/) 内に配置されています。

使い方 (Ettercap の基本的な起動と MitM 攻撃) 🛠️

ここでは、Ettercap の GUI を利用した基本的な中間者攻撃 (ARP スプーフィング) の手順を解説します。ettercap-pkexec は、この GUI を root 権限で起動する際の一つの方法となります。

🚨 再度警告: 以下の手順は、必ず許可された自身の検証環境でのみ実施してください。公共のネットワークや他者の所有するネットワーク、デバイスに対してこれらの操作を行うことは違法であり、絶対に避けるべきです。

1. 環境準備

  • Kali Linux や Parrot OS: Ettercap がプリインストールされていることが多い、ペネトレーションテスト用の Linux ディストリビューションを使用するのが最も簡単です。
  • 仮想環境: VirtualBox や VMware などを使用し、攻撃者用マシンとターゲットマシンを同一の仮想ネットワーク内に構成することを強く推奨します。
  • ターゲットマシン: 攻撃対象とする仮想マシン(例: 古い Windows や Linux)。

2. Ettercap GUI の起動

ターミナルを開き、以下のいずれかのコマンドで Ettercap の GUI を起動します。

ettercap-pkexec を使用する場合 (推奨される方法):

ettercap-pkexec -G

または、デスクトップ環境のメニューから Ettercap を起動します(内部で ettercap-pkexec が呼び出されることが多い)。

この方法では、Polkit による認証ダイアログが表示され、パスワードの入力が求められます。

sudo を直接使用する場合:

sudo ettercap -G

こちらも root 権限で起動しますが、Polkit を経由しません。

起動すると、Ettercap の GUI ウィンドウが表示されます。

3. スニッフィングの開始

  1. メニューバーから [Sniff] -> [Unified sniffing…] を選択します。
  2. 表示されたダイアログで、使用するネットワークインターフェース(例: eth0)を選択し、[OK] をクリックします。インターフェース名がわからない場合は、ターミナルで ip addr コマンドを実行して確認できます。
  3. これで、Ettercap は選択したインターフェースでパケットのキャプチャを開始します。

4. ホストのスキャン

  1. メニューバーから [Hosts] -> [Scan for hosts] を選択します。
  2. Ettercap がローカルネットワークをスキャンし、検出したホストの IP アドレスと MAC アドレスを内部リストに追加します。
  3. スキャンが完了したら、メニューバーから [Hosts] -> [Hosts list] を選択します。
  4. 検出されたホストの一覧が表示されます。

5. ターゲットの選択

ARP スプーフィング攻撃では、通常、攻撃対象のクライアントと、そのクライアントが通信しているゲートウェイ(ルーター)の間の通信に割り込みます。

  1. 「Hosts list」ウィンドウで、攻撃対象とするクライアントの IP アドレスをクリックして選択し、ウィンドウ下部にある [Add to Target 1] ボタンをクリックします。
  2. 次に、ゲートウェイ(ルーター)の IP アドレスをクリックして選択し、[Add to Target 2] ボタンをクリックします。
  3. これで、Target 1 (クライアント) と Target 2 (ゲートウェイ) の間の通信が攻撃対象として設定されました。

ゲートウェイ IP の確認方法

ターミナルで ip route | grep default コマンドを実行すると、デフォルトゲートウェイの IP アドレスを確認できます。

6. ARP スプーフィング (MitM 攻撃) の開始

  1. メニューバーから [Mitm] -> [ARP poisoning…] を選択します。
  2. 表示されたダイアログで、[Sniff remote connections.] オプションにチェックが入っていることを確認し、[OK] をクリックします。
  3. Ettercap は、Target 1 と Target 2 に対して偽の ARP 応答を送信し始めます。Target 1 には「Target 2 の MAC アドレスは Ettercap マシンの MAC アドレスである」と、Target 2 には「Target 1 の MAC アドレスは Ettercap マシンの MAC アドレスである」と偽って通知します。
  4. これにより、Target 1 と Target 2 の間の通信は、Ettercap を実行しているマシンを経由するようになります。

7. 通信の監視

  1. MitM 攻撃が開始されると、Ettercap のメインウィンドウの下部ペインに、傍受した通信に関する情報(特にユーザー名やパスワードなど)が表示され始めます。
  2. メニューバーから [View] -> [Connections] を選択すると、現在アクティブな接続の一覧を確認できます。
  3. 特定の接続を選択して詳細を確認したり、フィルタリングや改ざんを行うためのプラグインを適用したりすることも可能です(高度な使い方)。

8. 攻撃の停止

テストが終了したら、必ず攻撃を停止し、ネットワークの状態を元に戻す必要があります。

  1. メニューバーから [Mitm] -> [Stop MITM attack(s)] を選択します。
  2. Ettercap は、偽装していた ARP テーブルを元に戻すための正しい ARP 情報を送信します。
  3. その後、メニューバーから [Sniff] -> [Stop sniffing] を選択し、スニッフィングを停止します。
  4. 最後に Ettercap のウィンドウを閉じます。

⚠️ 重要: MitM 攻撃を停止せずに Ettercap を終了すると、ターゲットマシンの ARP テーブルが不正な状態のままになり、通信ができなくなる可能性があります。必ず MitM 攻撃を停止してから終了してください。

これは Ettercap の基本的な使い方のほんの一例です。Ettercap には DNS スプーフィング、DHCP スプーフィング、各種プロトコルのパスワード収集、SSL/TLS 通信への介入(証明書偽装)、プラグインを利用した多様な攻撃など、さらに多くの高度な機能があります。詳細は公式ドキュメントやチュートリアルを参照してください。

実行例 (ARP スプーフィングによる HTTP パスワード取得) 🖥️

ここでは、上記の「使い方」で説明した ARP スプーフィングを実行し、ターゲットマシンが平文の HTTP でログインする際のユーザー名とパスワードを Ettercap がどのように表示するかを示します。

前提条件:

  • 攻撃者マシン (Ettercap): 192.168.1.100
  • ターゲットマシン (クライアント): 192.168.1.150
  • ゲートウェイ (ルーター): 192.168.1.1
  • ターゲットマシンがアクセスする HTTP ログインページ (例: http://testsite.local/login) が存在する。

手順:

  1. Ettercap GUI を起動 (ettercap-pkexec -G)。
  2. Unified sniffing を開始 (インターフェース選択)。
  3. ホストをスキャン ([Hosts] -> [Scan for hosts])。
  4. ターゲットを選択 ([Hosts] -> [Hosts list] で 192.168.1.150 を Target 1 に、192.168.1.1 を Target 2 に追加)。
  5. ARP poisoning を開始 ([Mitm] -> [ARP poisoning…] -> [OK])。
  6. スニッフィングを開始 ([Start] -> [Start sniffing])。
  7. ターゲットマシン (192.168.1.150) でブラウザを開き、http://testsite.local/login にアクセスし、ユーザー名 (例: testuser) とパスワード (例: password123) を入力してログインする。

Ettercap の表示:

ターゲットマシンがログインを実行すると、Ettercap のメインウィンドウ下部のペインに、以下のような情報が表示されることがあります。

ETTERCAP - 0.8.x

Loading plugins...

Starting Unified sniffing...

Target 1 : 192.168.1.150 XX:XX:XX:XX:XX:11
Target 2 : 192.168.1.1   YY:YY:YY:YY:YY:22

Scanning for hosts...
xx Hosts added to the list.

Activating ARP Poisoning... (Victims: GROUP 1 <-> GROUP 2)

Starting sniffing...

--------------------------------------------------
HTTP : 192.168.1.150:XXXXX -> testsite.local:80
USER: testuser
PASS: password123
INFO: http://testsite.local/login
--------------------------------------------------

上記のように、HTTP 通信が暗号化されていない場合、POST リクエストに含まれるユーザー名 (USER) とパスワード (PASS) が平文で表示されてしまいます。

成功例: このように、MitM 攻撃が成功すると、暗号化されていない通信の内容を簡単に盗聴できてしまいます。

ℹ️ HTTPS の場合: ターゲットが HTTPS で通信している場合、通常は内容は暗号化されているため、上記のように簡単には表示されません。Ettercap は SSL/TLS の MitM 機能(--sslmitm オプションや sslstrip プラグインなど)も持っていますが、これは偽の証明書をクライアントに受け入れさせる必要があり、最近のブラウザでは警告が表示されるため、成功率は低くなっています。

この例は、暗号化されていない通信の危険性と、中間者攻撃の脅威を具体的に示すものです。自身の管理下にある環境で試すことで、これらのリスクをより深く理解することができます。

注意点・倫理的側面 ⚖️

Ettercap や PwnKit のような強力なツールや脆弱性情報を扱う際には、技術的な側面だけでなく、法的な責任と倫理的な考慮事項を十分に理解しておくことが極めて重要です。

悪用厳禁

Ettercap は、正当な目的(ネットワーク管理、セキュリティ診断、教育など)のために設計されたツールですが、その能力は容易に悪用可能です。許可なく他者のネットワークやコンピュータシステムに対して Ettercap を使用することは、プライバシーの侵害、データの窃盗、サービス妨害などの深刻な犯罪行為にあたります。絶対に、許可された環境以外で使用しないでください。

法的リスク

多くの国や地域では、コンピュータシステムへの不正アクセスや、通信の不正傍受は法律で厳しく禁じられています。日本においても、不正アクセス禁止法や電気通信事業法、刑法の関連規定により、許可のないネットワーク侵入や通信の盗聴は処罰の対象となります。たとえ学習目的であっても、対象システムの所有者から明確な許可を得ていない限り、これらの行為は違法となる可能性があります。

PwnKit 脆弱性の取り扱い

PwnKit (CVE-2021-4034) のような深刻な脆弱性情報は、防御側が対策を講じるために公開されています。この情報を悪用して他者のシステムに侵入し、権限昇格を行うことは明白な犯罪行為です。脆弱性情報を学習する際は、常に防御的な視点を持ち、どのようにしてシステムを保護するかを考えるべきです。

倫理的責任

セキュリティ技術者は、その知識とスキルを社会の安全を守るために使う倫理的な責任を負っています。脆弱性を発見した場合は、開発元や関連機関に責任ある方法で報告し(Responsible Disclosure)、修正に協力することが推奨されます。知識を悪用したり、無責任に情報を拡散したりすることは、社会全体のセキュリティレベルを低下させる行為であり、避けるべきです。

学習環境の重要性

Ettercap のようなツールや PwnKit のような脆弱性の動作を学ぶ最善の方法は、完全に隔離された自身の仮想環境を構築し、その中で実験することです。これにより、他者に影響を与えることなく、安全に技術を習得できます。

🚫 まとめ: 技術的な好奇心を満たすためであっても、法律と倫理の境界線を越えてはなりません。常に責任ある行動を心がけ、許可された範囲内でのみ活動してください。

対策 (PwnKit 脆弱性への対応) 🛡️

PwnKit (CVE-2021-4034) 脆弱性は非常に深刻ですが、幸いなことに、発見された直後から各 Linux ディストリビューションベンダーによって迅速に対応が進められました。主な対策は以下の通りです。

1. システムアップデート (最重要)

最も確実かつ推奨される対策は、システムを最新の状態にアップデートすることです。

主要な Linux ディストリビューションは、脆弱性公表後すぐに Polkit パッケージの修正版をリリースしました。以下のコマンドなどを利用して、システム全体のパッケージを更新してください。

  • Debian / Ubuntu 系:
    sudo apt update && sudo apt upgrade
    または、polkitd (もしくは policykit-1) パッケージを個別に更新します。
    sudo apt update && sudo apt install policykit-1
  • Red Hat / CentOS / Fedora 系:
    sudo yum update
    または
    sudo dnf update
    もしくは、polkit パッケージを個別に更新します。
    sudo yum update polkit
    または
    sudo dnf update polkit
  • Arch Linux 系:
    sudo pacman -Syu

アップデート後は、システムを再起動するか、関連するサービス (polkitd など) を再起動することが推奨される場合があります。

自分のシステムが脆弱かどうかを確認するには?

pkexec --version コマンドなどでインストールされている Polkit のバージョンを確認し、各ディストリビューションが提供するセキュリティアドバイザリで、修正済みバージョンと比較します。例えば、Red Hat 系では `rpm -q polkit` でバージョンを確認できます。

2. 一時的な緩和策 (アップデートが即座にできない場合)

何らかの理由でシステムをすぐにアップデートできない場合、一時的な緩和策として以下の方法が考えられましたが、運用への影響を十分にテストした上で行う必要があり、あくまで最終手段と考えるべきです。

pkexec から SUID ビットを削除する:

pkexec コマンドの SUID 権限を削除することで、脆弱性の悪用を防ぐことができます。ただし、これにより pkexec を利用している正当なアプリケーション(一部の GUI アプリケーションや管理ツールなど)が正常に動作しなくなる可能性があります。

sudo chmod 0755 /usr/bin/pkexec

このコマンドは、pkexec ファイルから SUID ビット(所有者権限で実行するフラグ)を削除します。

⚠️ 注意: この緩和策は副作用を伴う可能性があるため、その影響を十分に理解し、テストした上で適用してください。恒久的な解決策ではなく、可能な限り早くパッチを適用することが望ましいです。

3. 侵入検知・防御システム

  • ログ監視: PwnKit の悪用試行は、特定の環境変数の異常な使用パターンとしてログ (例: /var/log/auth.logjournald) に記録される場合があります。これらのログを監視し、不審な pkexec の実行を検出します。ただし、ログを残さない悪用手法も存在します。
  • 振る舞い検知: EDR (Endpoint Detection and Response) や HIDS (Host-based Intrusion Detection System) のようなセキュリティソリューションは、PwnKit の悪用パターンやその後の不審な振る舞いを検知できる場合があります。
  • アクセス制御: そもそも攻撃者が低権限であってもシステムに侵入できないように、多要素認証の導入、不要なサービスの停止、ファイアウォールの適切な設定など、基本的なセキュリティ対策を徹底することが重要です。

PwnKit 脆弱性への対応は、迅速なパッチ適用が基本です。未対応のシステムは重大なリスクに晒されているため、速やかに対処することが求められます。

まとめ 🏁

この記事では、ネットワークセキュリティツール Ettercap の一部である ettercap-pkexec と、それに関連する深刻な脆弱性 PwnKit (CVE-2021-4034) について詳しく解説しました。

重要なポイント:

  • Ettercap は強力な中間者攻撃 (MitM) ツールであり、正当なセキュリティテストや教育目的で使用されるべきです。
  • ettercap-pkexec は Ettercap を root 権限で起動するための便利なラッパースクリプトで、Polkit の pkexec コマンドを利用します。
  • PwnKit (CVE-2021-4034)pkexec コマンドに存在した深刻なローカル権限昇格の脆弱性で、2009年から存在し、多くの Linux システムに影響を与えました。
  • PwnKit を悪用されると、非特権ユーザーが簡単に root 権限を取得できてしまいます。
  • Ettercap の基本的な使い方として、GUI を用いた ARP スプーフィングの手順を示しました。
  • これらのツールや脆弱性情報を扱う際は、法的・倫理的な側面を遵守し、許可された環境でのみ使用することが不可欠です。
  • PwnKit 脆弱性への最も重要な対策は、システムを最新の状態にアップデートすることです。

サイバーセキュリティの世界では、新しいツールや脆弱性が日々登場します。Ettercap のようなツールを理解し、PwnKit のような脆弱性から学ぶことで、自身のシステムを守るための知識とスキルを高めることができます。しかし、その知識は常に責任ある方法で使用しなければなりません。

安全なインターネット環境を維持するためにも、継続的な学習と適切なセキュリティ対策の実践が重要です。🛡️✨

参考情報

より詳細な情報については、以下のリソースを参照してください。

コメント

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