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

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

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

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

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

Категории

Все категории
Loading categories
Potato — Эксплойт локального повышения привилегий в Windows с использованием спуфинга NBNS, поддельного прокси WPAD и ретрансляции NTLM из HTTP в SMB для получения доступа NT AUTHORITY\SYSTEM. | Kitploit
Инструменты/GitHubGitHub/foxglovesec/potato
Повышение привилегийЭксплуатацияЛатеральное перемещениеПост-эксплуатацияСетевая безопасностьТестирование на ПроникновениеАутентификацияRed Teaming
GitHubfoxglovesec/potato

Potato

Эксплойт локального повышения привилегий в Windows с использованием спуфинга NBNS, поддельного прокси WPAD и ретрансляции NTLM из HTTP в SMB для получения доступа NT AUTHORITY\SYSTEM.

Репозиторий
7451685 лет назадПроверено Kitploit

Популярное

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

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

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

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

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

#Potato Повышение привилегий в Windows 7, 8, 10, Server 2008, Server 2012

###Как это работает Potato использует известные проблемы в Windows для получения локального повышения привилегий, а именно NTLM relay (в частности HTTP->SMB relay) и NBNS-спуфинг.

Используя описанные ниже техники, непривилегированный пользователь может получить доступ уровня "NT AUTHORITY\SYSYTEM" к хосту Windows в конфигурациях по умолчанию.

Эксплойт состоит из 3 основных частей, все из которых в некоторой степени настраиваются через параметры командной строки:

#####1. Локальный NBNS-спуфер NBNS — это широковещательный UDP-протокол разрешения имён, обычно используемый в средах Windows. При тестировании на проникновение мы часто перехватываем сетевой трафик и отвечаем на NBNS-запросы, наблюдаемые в локальной сети. Для целей повышения привилегий мы не можем предполагать, что способны перехватывать сетевой трафик, так как же нам выполнить NBNS-спуфинг?

Если мы можем заранее узнать, для какого хоста целевая машина (в данном случае наша цель — 127.0.0.1) будет отправлять NBNS-запрос, мы можем сформировать ответ и зафлудить целевой хост NBNS-ответами (поскольку это UDP-протокол). Одна сложность заключается в том, что 2-байтовое поле в NBNS-пакете, TXID, должно совпадать в запросе и ответе. Мы можем обойти это, выполняя быстрый флуд и перебирая все 65536 возможных значений.

А что, если у хоста, который мы пытаемся подделать, уже есть DNS-запись? Что ж, мы можем ЗАСТАВИТЬ DNS-запросы завершаться ошибкой забавным способом. Используя технику под названием "port exhaustion", мы привязываемся к каждому UDP-порту. Когда вы попытаетесь выполнить DNS-запрос, он завершится ошибкой, потому что не будет доступного исходного порта, на который мог бы прийти DNS-ответ.

В ходе тестирования это оказалось на 100% эффективным.

#####2. Поддельный WPAD-прокси-сервер Имея возможность подделывать NBNS-ответы, мы можем нацелить наш NBNS-спуфер на 127.0.0.1. Мы зафлуживаем целевую машину (нашу собственную машину) NBNS-пакетами-ответами для хоста "WPAD" или "WPAD.DOMAIN.TLD", и сообщаем, что хост WPAD имеет IP-адрес 127.0.0.1.

В то же время мы запускаем HTTP-сервер локально на 127.0.0.1. Когда он получает запрос на "http://wpad/wpad.dat", он отвечает примерно следующим:

root@kitploit:~
FindProxyForURL(url,host){
	if (dnsDomainIs(host, "localhost")) return "DIRECT";
	return "PROXY 127.0.0.1:80";}

Это приведёт к тому, что весь HTTP-трафик на целевой машине будет перенаправлен через наш сервер, работающий на 127.0.0.1.

Интересно, что эта атака, даже выполненная пользователем с низкими привилегиями, затронет всех пользователей машины. Это включает администраторов и системные учётные записи. Смотрите скриншоты "egoldstein_spoofing.png" и "dade_spoofed.png" для примера.

#####3. HTTP -> SMB NTLM Relay Теперь, когда весь HTTP-трафик проходит через контролируемый нами сервер, мы можем делать такие вещи, как запрос NTLM-аутентификации...

В эксплойте Potato все запросы перенаправляются с помощью 302-редиректа на "http://localhost/GETHASHESxxxxx", где xxxxx — некоторый уникальный идентификатор. Запросы к "http://localhost/GETHASHESxxxxx" отвечают 401-запросом на NTLM-аутентификацию.

Учётные данные NTLM ретранслируются на локальный SMB-слушатель для создания новой системной службы, которая выполняет заданную пользователем команду. Эта команда будет выполнена с привилегией "NT AUTHORITY\SYSTEM".

###Использование эксплойта Использование в настоящее время зависит от операционной системы.

Оно также иногда бывает нестабильным из-за особенностей того, как Windows обрабатывает настройки прокси и файл WPAD. Часто, когда эксплойт не работает, требуется оставить его запущенным и ждать. Когда у Windows уже есть кэшированная запись для WPAD или она разрешает прямой доступ в интернет, потому что WPAD не был найден, может потребоваться 30-60 минут для обновления. Необходимо оставить эксплойт запущенным и попытаться вызвать его снова позже, после истечения этого времени.

Перечисленные здесь техники упорядочены от наименее к наиболее сложной. Любая техника, расположенная ниже в списке, должна работать на всех предыдущих версиях. Для каждой включены видео и скриншоты.

#####Windows 7 — см. https://www.youtube.com/watch?v=Nd6f5P3LSNM Windows 7 можно довольно надёжно проэксплуатировать через механизм обновления Windows Defender.

В Potato.exe есть код для автоматического запуска этого. Просто выполните следующее: Potato.exe -ip <local ip> -cmd <command to run> -disable_exhaust true

Это запустит NBNS-спуфер, подделает "WPAD" на 127.0.0.1, затем проверит обновления Windows Defender.

Если в вашей сети уже есть DNS-запись для "WPAD", вы можете попробовать "-disable_exhaust false". Это должно привести к сбою DNS-запроса, и он должен откатиться к NBNS. Мы протестировали это пару раз, и это сработало

#####Windows Server 2008 — см. https://www.youtube.com/watch?v=z_IGPWgL5SY Поскольку Windows Server не поставляется с Defender, нам нужен альтернативный метод. Вместо этого мы просто проверим обновления Windows. Другая оговорка заключается в том, что, по крайней мере в моём домене, Server 2K8 хотел WPAD.DOMAIN.TLD вместо просто WPAD. Ниже приведён пример использования:

Potato.exe -ip <local ip> -cmd <command to run> -disable_exhaust true -disable_defender true --spoof_host WPAD.EMC.LOCAL

После успешного запуска просто проверьте обновления Windows. Если это не сработает, подождите около 30 минут с запущенным эксплойтом и проверьте снова. Если всё ещё не работает, попробуйте фактически скачать обновление.

Если в вашей сети уже есть DNS-запись для "WPAD", вы можете попробовать "-disable_exhaust false". Это должно привести к сбою DNS-запроса, и он должен откатиться к NBNS. Мы протестировали это пару раз, и это сработало

#####Windows 8/10/Server 2012 — см. https://www.youtube.com/watch?v=Kan58VeYpb8 В новейших версиях Windows, по-видимому, Windows Update может больше не учитывать настройки прокси, заданные в "Internet Options", или не проверять WPAD. Вместо этого настройки прокси для Windows Update управляются с помощью "netsh winhttp proxy..."

Вместо этого для этих версий мы полагаемся на более новую функцию Windows — "automatic updater of untrusted certificates". Подробности можно найти на https://support.microsoft.com/en-us/kb/2677070 и https://technet.microsoft.com/en-us/library/dn265983.aspx

Из статьи на technet: "The Windows Server 2012 R2, Windows Server 2012, Windows 8.1, and Windows 8 operating systems include an automatic update mechanism that downloads certificate trust lists (CTLs) on a daily basis."

Похоже, что эта часть Windows всё ещё использует WPAD, даже когда настройка прокси winhttp установлена в direct.

В этом случае использование Potato следующее: Potato.exe -ip <local ip> -cmd <cmd to run> -disable_exhaust true -disable_defender true

На этом этапе вам нужно будет подождать до 24 часов или найти другой способ вызвать это обновление.

Если в вашей сети уже есть DNS-запись для "WPAD", вы можете попробовать "-disable_exhaust false". Это должно привести к сбою DNS-запроса, и он должен откатиться к NBNS. Мы протестировали это пару раз, и это сработало

###Меры противодействия

Включение "Extended Protection for Authentication" в Windows должно остановить атаки NTLM relay.

SMB Signing также может смягчить этот тип атаки, однако для подтверждения этого с моей стороны потребуется дополнительное исследование.

###Off Broadcast NBNS Spoofing Используя ту же технику NBNS-спуфинга, что и в эксплойте Potato, мы можем выполнять NBNS-спуфинг против любого хоста, с которым можем взаимодействовать по UDP 137. Нам просто нужно отправлять UDP-пакеты достаточно быстро, чтобы успеть вставить действительный ответ до истечения тайм-аута NBNS-запроса.

Демонстрационное видео этого можно посмотреть на https://www.youtube.com/watch?v=Mzn7ozkyG5g

Демонстрационная лаборатория имеет следующую конфигурацию:

PFSense firewall 10.0.0.0/24 -> Corporate LAN 10.0.1.0 /24 -> Server network

Из корпоративной сети мы будем атаковать машину в серверной сети.

Использование: python Responder.py –I eth0 –spoof <target>:<spoof address>:<spoof host>

Скачать инструмент