Easy HackЗадача: Проверить группу URL на доступРешениеДа здравствует автоматизация! В нашем деле без нее — никак. Например, часто требуется проверить какую-то группу хостов на существование некого url’а или на стандартные логины/пароли. Чтобы автоматизировать данный процесс, можно воспользоваться каким-нибудь скриптовым языком. Я вот Perl люблю, особенно его regexp’ы :). Потому за основу решения данной задачи возьмем Perl с библиотекой LWP, которая по стандарту присутствует в его комплектациях.
Как видишь — все просто. Запрос к серверу выполняется одной командой. В $response->status_line хранится код ответа, по которому можно судить о ситуации. Итог странички в $response->content. Чтобы пройти http-аутентификацию, требуется добавить пару строк перед отправкой запроса:
Тут все понятно: имя хоста с портом, строка запроса (то, что в кавычках, если зайти на url браузером), логин и пароль. Данный модуль может многое: GET/POST запросы, кукисы, изменение http-заголовков и так далее. Быстро и просто. Я думаю, ни для кого не секрет, что скриптовых языков много — чего стоят хотя бы такие гиганты, как PHP, Python, Perl, Ruby... Каждый из них имеет свои бонусы, хотя применительно к нашим целям разница не особо заметна. Главное — иметь в запасе знаний хотя бы один скриптовый язык, и его применение, несомненно, принесет хорошие плоды. Задача: Обновить Metasploit Framework через прокси-серверРешениеMetasploit Framework растет и развивается каждый день: новые модули, скрипты и возможности, исправление всевозможных багов… Работа над MSF кипит. Потому и обновлять его желательно каждый день. Система обновления MSF построена на основе SVN (Subversion). Subversion — это свободная централизованная система управления версиями, которая используется очень многими разработчиками программного обеспечения (и не только) в различных проектах. Доступ в SVN осуществляется различными способами, в том числе и по http/https-протоколу. При обновлении Metasploit’а используется как раз https-протокол. И логично, что в такой ситуации система просто обязана поддерживать работу через прокси-серверы. Ну это так, в качестве общего описания, в основном для Win-пользователей, так как SVN запихнут в большиство *nix-систем :). Но начнем с последних. Файлы конфигов SVN лежат в домашней директории каждого пользователя в .subversion. Для настройки прокси нам потребуется файл server.В нем, в разделе [global], мы можем задать общие настройки по прокси: имя сервера, порт, логин и пароль (если на прокси используется аутентификация пользователей), данные аутентификации для доступа к репозиторию, настройки SSL и так далее. Так как SVN-система используется для доступа к различным репозиториям, то и настройки можно задавать для каждого из них. Например, зададим настройки для доступа к MSF. Находим [groups] и создаем группу:
Все, как видишь, очень просто. Теперь немного специфики для MSF в Windows-системах. До последней версии Metasploit работал в Cygwin’е и настраивался SVN уже в нем, то есть аналогично *nix-версиям. С выходом же версии 3.5 ситуация изменилась, так как от Cygwin’а отказались. Теперь в Win-инсталляшке помимо MSF устанавливается куча всякого дополнительного ПО типа PostgeSQL и JAVA (потому и размер дистрибутива вырос до 250 метров). В том числе устанавливается Subversion. Лежит он физически в «путь_до_MSF\tools\svn». Кстати, поговаривают о проблемах, если Subversion уже был установлен. Так что будь там осторожнее :). Файл настройки SVN запрятали совсем глубоко — в скрытую папку «Application Data» каждого из пользователей. Попасть туда можно так: %APPDATA%\Subversion. Остальное — аналогично *nix-системам. Задача: Получить название производителя устройства по его MAC-адресу.РешениеНи для кого не секрет, что почти у всех сетевых устройств имеются 48-битные MAC-адреса, и что адреса эти уникальны. Первые 24 (точнее, 22) бита адреса привязаны к его производителю. Потому появляется возможность выявлять однотипные устройства в локальной Сети, а в случае крупных Сетей это бывает очень полезно. Большинство Х-тулз типа Nmap’а имеют свои базы (файл nmap-mac-prefixes), по которым выявляют вендора. Но не все так часто обновляются, как Nmap, и, например, тот же Сain&Abel (файл oui.txt) имеет проблемы с определением производителя по новым устройствам. Последнюю официальную базу OUI (Organizationally Unique Identifier) можно почерпнуть тут: standards.ieee.org/develop/regauth/oui/oui.txt. Кроме того, есть нестандартные значения OUI, которых нет в данной базе. В основном это всякие виртуальные устройства. Некоторые из таких OUI есть в базе Nmap’а, в остальных случаях потребуется воспользоваться силами поисковиков. Задача: Получение прав доменного админаРешениеПродолжим серию решений для этой насущной задачи :) В данном случае предположим, что у нас есть физический доступ к одному из компьютеров (мы — злобные инсайдеры), на который заходил, хотя бы удаленно, один из доменных админов. Добиться того, чтобы админ зашел на него — не проблема. По стандарту, у обычных пользователей нет прав на установку ПО или изменение каких-либо настроек — это делают админы. По логике, админы должны бы ходить для таких дел по компьютерам под урезанными учетными записями, но такое бывает редко — обычно они ползают c доменными правами. Если такими мелкими вопросами занимается техподдержка и админчика не удается заставить зайти на подконтрольный комп, то это тоже не страшно. Завладев правами техподдержки, можно уже будет развить атаку на других системах. Общая задача такова: запустить какую-нибудь тулзу типа gsecdump’а или fgdump’а, которая выдаст нам либо хэшики, либо кэшики пароля админчика :). Имея хэшики, можно будет сразу ползти на домен, используя технику «pass the hash», о которой я писал в предыдущем номере. Кэшики придется брутить. Но давай последовательно. Данные тулзы для своей работы требуют как минимум прав Администратора, но по факту — LocalSystem.Как стать локальным админом — вопрос, конечно, большой. Но если его получить хотя бы в виде NTLM-хэша, то, считай, дело сделано. Хотя бы потому, что очень часто пасс на локального админа ставят одинаковым для большинства хостов. Но мы воспользуемся несколько другим способом. Используя либо загрузочный диск, либо загрузочную флешку и поставив загрузку с данного девайса, можно сбросить пароль локального админа. Дистрибутивов, которые могут делать такие вещи, достаточно. Если на BIOS стоит пароль, то можно его сбросить, вынув батарейку. Классика, в общем. Еще важный момент. Локальный администратор — это стандартная учетная запись, но при использовании доменов ее частенько отключают для секьюрности. Фишка в том, что если перезагрузить комп и запустить Windows в безопасном режиме (кликай F8 при загрузке ОС), то локальная учетная запись админа включается. Так что очень вероятно подойдет и пустой пароль :). Зайдя под локальным админом, можно включить учетку и в нормальном виде («Мой ПК - Управление компьютером - Пользователи - Администратор - Свойства - Отключить учетную запись»). Далее, залогинившись под администратором, можно поднять свои права до System. Но сначала о специфике данных тулз, и вообще о системе хранения авторизационных данных в Windows.
Хэши из SAM, понятно, нам не очень интересны. Кстати, hashdump в MSF достает только их, к сожалению. LSA — лакомый кусочек, но данные в нем стираются после перезагрузки. Кэш — неплохое место. Официально он используется в тех ситуациях, когда доменный хост не имеет связи с доменом, а пользователю всетаки надо поработать. Потому авторизация происходит с использованием данных из кэша. Для нас проблема с кэшем заключается в том, что это не простой NTLM-хэш (DES). Кэш получается следующим образом:
Так как хэш «просаливается» логином, то тут нам поможет только перебор. Подробнее можно почитать тут: openwall.info/wiki/john/MSCash. Теперь о тулзах: fgdump — может доставать кэши, а gsecdump — доменные учетные записи из хранилищ. Обе берут также данные из SAM. Чтобы получить права System, можно воспользоваться стандартным виндовым планировщиком заданий. Под Windows XP точно работает :). Пишем в консоли:
Где:
Для работоспособности данного способа требуется, чтобы была запущена служба «Планировщик заданий» (Schedule service). Чтобы не ждать долго, ставим время запуска через пару минут от текущего времени, и в назначенный момент данная команда выполнится с необходимыми правами, а мы получим хэшики/ кэшики. Что делать с хэшиками — ясно, кэшики же, как было сказано ранее, придется брутфорсить. Сделать это можно, например, используя John The Ripper (openwall.com/john) c jumbo патчем (openwall.com/john/contrib/john-1.7.6jumbo-9-win32.zip), либо используя Cain&Abel (oxid.it/cain.html).
Где
Джон понимает стандарный вывод fgdump’а. С Cain’ом несколько сложнее. Во-первых, потому, что в Cain можно импортировать кэшики либо с локальной машины, либо из краденых разделов реестра (security и system). Во-вторых, у Cain’а другой формат вводимых данных, не такой, как у fgdump’а. Но это все решабельно. Как — читай далее. Итак, открываем папку с Cain’ом и находим там файл cache.lst. Он обычный текстовый. Открываем его и вставляем данные итогов fgdump’a. Разница в форматах заключается в том, что у fgdump’a он имеет вид: имя_пользователя : кэш : имя_домена : полное_имя_домена
Где \t — знак табуляции. Так как пароль неизвестен, то в соответствующем месте оставляем пустоту. Поле пометки тоже пустое. Главное — соблюсти символы табуляции. Еще одна проблема, классическая, кириллические имена пользователей. У fgdump’а с этим проблемы. Не совсем ясна ситуация с john’ом. У Cain’а все тип-топ. Вот, в принципе, и все. Задача: Похакать сервер Oracle через TNS-Listener.РешениеЕсть один бородатый способ порутания операционной системы и/или повышения своих прав в Oracle через TNS-listener этой самой базы данных. Работает он во всех версиях до 10-й. Вообще TNS listener используется во всех Oracle'ах для управления сетевым трафиком между базой данных и клиентами. Висит этот сервис обычно на 1521 порту. Листенер — это одна из основных возможностей залезть в систему. Во-первых, потому, что через него можно выполнять кое-какие команды типа status, services и version, в ответе которых можно найти чрезвычайно полезную информацию. Например, версию ОС и Oracle, а также SID’ы базы данных. Во-вторых, есть несколько уязвимостей, связанных с его DoS'ом. Суть же описываемого способа заключается в эксплуатации уязвимости этого TNS-listener’а, которая позволяет указывать любое место для записи логов за счет команды set_log. Для реализации мы можем воспользоваться либо простеньким perlскриптиком (jammed.com/~jwa/hacks/security/tnscmd), либо аналогичным модулем в Metasploit’е (auxiliary\admin\oracle\tnscmd). Итак, выполняем следующие две команды:
Где
Тут есть важный момент: это указание выполнить команду log_file (COMMAND=log_file) с необходимым нам значением (VALUE=C:\Documents and Settings\All Users\Start Menu\Programs\Startup\ blahblah.bat). В данном случае мы указали батник, который создастся в меню «Пуск - Автозагрузка» у всех пользователей. И когда какой-то пользователь зайдет на сервер с Oracle’ом, то исполнятся команды, которые мы туда запихнем следующим образом:
Команды стандартные виндовые. Первая добавляет пользователя username с паролем password в ОС, а вторая — добавляет этого пользователя в группу локальных администраторов. Простенько, но работает. Что хорошо — Oracle чаще всего бывает запущен под системными учетными записями, то есть с большими правами, а потому позволяет писать логи куда угодно. Основная проблема данного способа заключается в том, что кроме наших команд в лог-файл попадает куча всякого мусора, который ограничивает наши возможности. С батниками все о’кей — мусор не воспринимается в консоли, а необходимые для исполнения команды мы выделяем переносами строк. Можно воспользоваться еще одной классической идеей и создать нового пользователя в Oracle с правами DBA, а это бывает даже важнее самой ОС, когда цель — база данных. Для этого в качестве итогового файла логов укажем glogin.sql. По стандарту в винде с девятой версией Oracle это C:\oracle\ora92\sqlplus\admin\glogin.sql. Этот файлик запускается при старте SQL*Plus. А следующими командами мы создаем пользователя и даем ему роль DBA:
То есть, понятно, что дырка не простая, и можно придумать что-то хитрое и рабочее. На jammed.com/~jwa/hacks/security/tnscmd/tnscmd-doc.html есть более подробное описание уязвимостей TNS listener'а. |