はじめに
こんにちは、三菱電機の坂本です。
三菱電機 情報技術総合研究所では、製品開発時のセキュリティ対策にフィードバックする目的で、複数種類のハニーポットを設置・運用しています。
運用しているハニーポットの1つに、IoT機器を応答機能に設置した「IoT家電ハニーポット」があります。これは、IoT機器の普及に伴い増加した「IoT家電を使用している家庭」を模擬しています。
ハニーポットとは、攻撃される環境を模擬した囮システムであり、サイバーセキュリティの研究に使用されます。一般的に、攻撃を観測したいシステムを模擬するため、様々な種類のハニーポットが目的に合わせて設置されています。
IoT家電ハニーポットでは、IoT家電を標的としたサイバー攻撃を観測しており、さらに、IoT家電に搭載されたサーバ類を標的としたサイバー攻撃についても観測しています。
今回は、IoT家電ハニーポットで観測した、NAT-PMPを用いた攻撃についてご紹介します。
NAT/NAPTとは
NAT(Network Address Translation)およびNAPT(Network Address Port Translation)とは、プライベートIPアドレスとグローバルIPアドレスの変換を行うネットワーク技術です。
この技術を活用することで1つのグローバルIPアドレスで複数端末の通信を行うことができるようになり、外部から内部ネットワーク構造が見えにくくなることなど様々なメリットがあります。
Web閲覧など内部ネットワークから外部サーバなどへの接続要求する利用方法ではNAT/NAPTで問題ありませんが、内部にあるコンピュータにサーバ機能を持たせて外部から接続するような用途には使用できません。
この課題を解決するためにポートマッピング機能があります。
ポートマッピング機能はインターネットからの特定のUDPポートやTCPポートと内部の特定のIPアドレスの特定のポートとを対応付けることで、ルータが自動的に外部からのデータを常に当該機器に転送できるようにする機能です。
NAT-PMPとは
ポートマッピングの設定を行うプロトコルとしてNAT-PMP(Network Address Translation Port Mapping Protocol)がRFC 6886で標準化されています。
NAT-PMPを用いることで以下の処理を行うことが可能です。
- NATゲートウェイに設定されている外部IPアドレスの取得
- ポートマッピングの変更・更新・削除
NAT-PMPにおいて上記の処理を区別するために、NAT-PMPのフレームフォーマットにはOpcodeがあり、Opcodeを確認することでクライアントが何をするつもりだったか判断することができます。
OpcodeとNAT-PMPの処理の対応は以下のとおりです。
| Opcode | 概要 | 通信方向 |
|---|---|---|
| 0 | NATゲートウェイに設定されている外部IPアドレスの取得要求 | Client→Server |
| 1 | UDPポートマッピング要求 | Client→Server |
| 2 | TCPポートマッピング要求 | Client→Server |
| 128 | NATゲートウェイに設定されている外部IPアドレスの取得応答 | Server→Client |
| 129 | UDPポートマッピング応答 | Server→Client |
| 130 | TCPポートマッピング応答 | Server→Client |
NAT-PMPの脆弱性
RFC 6886には、NAT-PMPが備えるべき制約に関する以下の記載があります。
-
The NAT gateway MUST NOT accept mapping requests destined to the NAT gateway's external IP address or received on its external network interface. (NATゲートウェイは、NATゲートウェイの外部IPアドレス宛てのマッピング要求、または外部ネットワークインターフェースで受信したマッピング要求を受け入れてはなりません。)
-
Only packets received on the internal interface(s) with a destination address matching the internal address(es) of the NAT gateway should be allowed.(NATゲートウェイの内部アドレスと一致する宛先アドレスを持つ、内部インターフェースで受信したパケットのみを許可する必要があります。)
これらの制約を正しく実装していない場合、ポートマッピング設定を不正に操作される恐れがあり、加えてNATゲートウェイに関する情報が漏洩する問題があることも知られています。
当該脆弱性はJVN(Japan Vulnerability Notes)にも登録されています。(JVNVU#99291862)
本ハニーポットでも多数のNAT-PMPパケットを観測したので紹介します。
観測対象
今回は2025/06/16~2025/8/31の期間において、本ハニーポットにて観測されたNAT-PMPパケットの分析結果を紹介します。
具体的には受信したNAT-PMPパケット数およびOpcode値の内訳、攻撃者が行おうとした攻撃の考察を記載します。
受信したNAT-PMPパケット数
2025/06/16~2025/8/31の期間にて、計119,062件ものNAT-PMPパケットを観測しました。
Opcode別の内訳
受信したNAT-PMPのOpcodeの内訳を以下に示します。
| Opcode値 | 概要 | パケット数 | 割合 |
|---|---|---|---|
| 0 | NATゲートウェイに設定されている外部IPアドレスの取得要求 | 98,551 | 82.8% |
| 1 | UDPポートマッピング要求 | 16,642 | 14.0% |
| 2 | TCPポートマッピング要求 | 3,021 | 2.5% |
| 128 | NATゲートウェイに設定されている外部IPアドレスの取得応答 | 0 | 0% |
| 129 | UDPポートマッピング応答 | 0 | 0% |
| 130 | TCPポートマッピング応答 | 0 | 0% |
| - | フォーマット不正 | 848 | 0.7% |
最も多く観測したNAT-PMPのOpcodeは0で、全体の82.8%でした。
当該パケットはNATゲートウェイの外部IPアドレスを取得する通信であり、NATゲートウェイの機器情報の奪取を狙った攻撃であると考えられます。
次いでOpcode値は1, 2であり、各々全体の14.00%, 2.5%でした。
当該パケットはNATゲートウェイの通信に設定されているUDP/TCPのポートマッピング設定を操作する通信であり、攻撃者は外部から内部のサーバやPCへの通信を試みた可能性があると考えます。
またOpcode128~130のレスポンスパケットは全くないことから、ハニーポットで観測した全NAT-PMPパケットがリクエストであり、レスポンスパケットは観測されませんでした。
おわりに
ここまでお読みいただきありがとうございました。
今後も、ハニーポットを用いた観測・分析結果について、こちらで発信していく予定です。
ご質問やコメントもお待ちしております。