Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
ipmi — IPMI-материалы из работ DARPA | Kitploit
Инструменты/GitHubGitHub/zenfish/ipmi
Взлом паролейРазведкаКартирование сетиСканирование портовАнализ уязвимостейАудит конфигурацииСбор информацииТестирование на ПроникновениеАппаратная БезопасностьАутентификация
GitHub
766371 месяц назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
zenfish/ipmi

ipmi

IPMI-материалы из работ DARPA

Репозиторий

Я написал немного программ для исследования IPMI; вот некоторые из результатов. Я решил проделать обычный цикл: обнаружение, получение данных и аудит. Каждая из этих задач оказалась довольно интересной сама по себе, по крайней мере для меня.

**BTW/FYI ** - Я выпустил новый инструмент для исследования IPMI - https://github.com/zenfish/zipmi - а также набор рецептов/образов Qemu и прочего для запуска BMC как виртуальных систем под Qemu по адресу https://github.com/zenfish/zbmc.

Веб-сайт IPMI

Статьи и прочее с http://fish2.com/ipmi

html

Взлом паролей

Вот небольшая программа на Perl, которая пытается угадать учётную запись на удалённом BMC, извлечь её хеш, а затем попытаться взломать её (HMAC-хешированный) пароль. Я написал немного об этом для любопытствующих. Снабжена подробными комментариями, может оказаться полезной.

Получение шифров

Спецификация IPMI говорит, что можно получить шифры удалённой системы без какой-либо аутентификации, но я не знаю ни одного инструмента, который бы это делал (все они требуют аутентификации, хотя, конечно, можно ввести сырые hex-байты, если захочется!) Поэтому я написал эту небольшую программу; она в основном старается следовать выводу ipmitool; при этом, полагаю, я нашёл баг в этой утилите (в последней строке иногда системы выдают какой-то мусор, который, похоже, неверно интерпретируется), но кто знает, у меня недостаточно систем для тестирования. В общем... ipmi-get-ciphers.py.

Как минимум, полезно для выявления систем с Cipher0 (учтите - это лишь указывает на поддерживаемые шифры - это не значит, что они действительно включены), но в дикой природе встречаются интересные вещи.

Получение сведений об аутентификации

Здесь две программы: одна - простой Python-скрипт для удалённого зондирования (начинаю ненавидеть Perl, скажу я вам), а вторая использует утилиты из FreeIPMI для получения конфигурационных данных с учётными данными.

Небольшая программа на Python (более 50% встроенных комментариев, 2.5k в gzip), которая отправляет один пакет на BMC и обдумывает ответ. Что можно сделать с помощью одного пакета, спросите вы? Для начала - более 10 различных проверок безопасности IPMI. Ну, для начала и для конца, это всего лишь пакет :) Требует python, BMC и открытый путь к UDP-порту 623. Использование простое: "ipmi-get-auth.py target".

ipmi-get-auth.py / Очень краткое описание

Доводя это до крайности... что ж, вот своего рода мега-версия вышеописанного, которая делает это для всех каналов, всех привилегий, всех... ну, вы поняли. Для одержимых (читайте комментарии или пост, который я написал об этом, чтобы понять, почему она делает то, что делает!)

mega_chan.py / Mega mega mega ... chan chan chan...

Получение Device ID (GUID)

А вот простая программа для отправки пакета Get Device ID (см. стр. 250 спецификации IPMI v 2) системе. Теоретически это должно работать без аутентификации. В небольшом исследовании около 90% систем ответили на это (хотя и не все с корректной информацией!) Иногда можно получить сведения о производителе и другую информацию, например номера моделей и прочее, но интереснее всего фактически получить уникальный ID, который традиционно трудно получить через сеть.

get-ipmi-guid.py / Get Device ID

Извлечение паролей из бинарного файла паролей SuperMicro

У Supermicro были проблемы с раскрытием файла паролей из их BMC - например, см. это и другие описания:

a-penetration-testers-guide-to-ipmi

Чтобы использовать этот скрипт, просто введите:

dump_SM.py password_file

У меня работает, без каких-либо гарантий, явных или подразумеваемых, и т.д.

Обнаружение

Что ж, если вы можете обратиться к UDP-порту 623, довольно просто выяснить, запущена ли на удалённой системе служба IPMI. Однако, если вы не находитесь внутри дата-центра, большинство людей блокируют UDP. И даже если не блокируют... UDP-сканирование — это примерно так же медленно, как только можно вообразить. Поэтому я сейчас использую два базовых метода, опираясь на почтенный Nmap и ipmiping (из набора Gnu-утилит FreeIPMI). Самое простое, что можно сделать:

  • Использовать ipmiping, чтобы спросить удалённую систему, говорит ли она на IPMI или нет. Положительный ответ — сильнейший признак того, что система поддерживает IPMI (но ничего не гарантировано!) Технически он отправляет два вызова IPMI Get Channel Authentication Capabilities через датаграмму запроса Get Channel Authentication Capabilities на UDP-порт 623 (два запроса, поскольку используется UDP, а доставка не гарантируется.)
    </p> <p>
    
    Поскольку Nmap гораздо эффективнее сканирует крупномасштабные сети,
    чем ipmiping, этот метод используется только если Nmap сообщает, что у хоста
    открыт UDP 623.
    
    </p> <p>
    
    Так или иначе, этот порт часто блокируется, поэтому большую часть
    времени другие методы с большей вероятностью позволят косвенно выяснить,
    запущена ли служба IPMI.
    
  • Второй метод довольно приблизительный и опирается на некоторую индукцию (иначе говоря, догадки). Nmap сканирует порты, которые, как известно, связаны с IPMI и дополнениями производителей; UDP 623 очевиден (порт IPMI по умолчанию), но существует множество портов (как UDP, так и TCP), которые сами по себе, возможно, не дадут немедленного ответа, но в совокупности могут явно указывать на его присутствие. TFTP, SNMP, SSH/SMASH, VNC и многие другие относятся к их числу.
    </p> <p>
    
    Порты взвешиваются по их индикативной способности и по тому, находит ли
    Nmap их открытыми, фильтруемыми или в иных состояниях.
    
    </p> <p>
    
    Nmap также может показывать баннеры подключённых служб. Я использую
    регулярные выражения для поиска целей — например, строки
    "iLO" и "DRAC" являются хорошими индикаторами того, что на системе может быть запущена
    служба Integrated Lights Out от HP, или iLO.
    
    </p> <p>
    
    <strong>Примечание:</strong> В настоящее время я НЕ использую метод
    broadcast ping (очень быстрый способ просканировать подсеть, в которой вы
    находитесь); у меня просто нет данных о его эффективности;
    хотя он очень быстр, когда работает, мне показалось, что он
    не обеспечивает контроля и надёжности произвольных сканирований.
    Две из трёх моих систем (Dell и HP) ответили на
    RMCP ping. Ни одна не ответила на broadcast ping через idiscover
    (ipmiutil discover.) Однако все ответили на мой Python-инструмент
    аудита, приведённый ниже.
    
    </p> <p>
    
Скачать инструмент