Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Хакинг Linux с помощью Armitage

Оригинал: Tutorial: Hacking Linux with Armitage
Автор: Raphael Mudge
Дата публикации: 2011 г.
Перевод: В. Семененко
Дата перевода: июль 2011 г.

Что такое Armitage

Armitage

Metasploit является популярным фреймворком для эксплоитов, который уже не раз описывался на страницах ethicalhacker.net (Примечание: на нашем сайте есть перевод статьи о Metasploit). В этой статье будет представлен Armitage, новый графический интерфейс для Metasploit, созданный с прицелом на выполнение хакерских задач. Я покажу вам, как с помощью Armitage можно сканировать Linux-хосты, подбирать правильный эксплоит, выполнять этот эксплоит на хосте и производить дальнейшие операции после получения доступа к удаленной машине. Прочитав эту статью, вы будете иметь общее представление о том, как использовать Armitage и Metasploit для решения ваших собственных задач.

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

Установка и настройка Armitage описана в соответствующей документации. Предполагается, что в нашей системе Metasploit установлен и запущен, Armitage готов к работе. Все, что нам осталось сделать, это скачать этот Python-скрипт, который мы будем использовать в дальнейшем.

Пользовательский интерфейс Armitage

Графический интерфейс Armitage имеет три окна. Окно Модулей (Modules) позволяет управлять модулями Metasploit: поиск, запуск и остановка. В окне Целей (Targets) отображаются сессии, которые открыты на текущий момент или цели, с которыми вы работаете. Ниже окон Модулей и Целей располагается окно Вкладок (Tabs). Каждая вкладка этого окна - это отдельный диалог работы с программой. То есть, если вы открываете консоль, командную оболочку или что-либо другое, то в этом разделе откроется соответствующая вкладка.

Armitage_Modules_Targets_Tabs

Пользовательский интерфейс Armitage

Сканирование

Прежде чем приступать к процессу сканирования, необходимо выполнить исследование сети. Armitage имеет в своем арсенале несколько инструментов для выполнения этой задачи. Они располагаются в меню Hosts. Здесь можно выбрать модуль обнаружения уязвимости, модуль сканирования портов или же запустить сканер Nmap. Также имеется средство поиска нужного модуля Metasploit.

Я рекомендую запускать программу Nmap отдельно от Armitage и импортировать результаты ее работы в последний. Для этого нужно иметь вывод программы, в то время как она выполняется. Полное сканирование портов с определением операционной системы, обнаружением запущенных служб, запускается командой:

nmap -p 1-65535 -T5 -A -v 172.16.146.0/24 -oX scan.xml

Замените 172.16.146.0/24 вашей собственной маской сети или IP-адресом Metasploitable. Как только сканирование будет завершено, импортируйте его результат в Armitage. Для этого перейдите по пути в меню Hosts - Import Hosts - Nmap Scan Results и выберите сохраненный файл (scan.xml). В окне Целей Armitage появится машина Metasploitable Linux.

Armitage_Host

Хост Metasploitable

Чтобы увидеть результаты сканирования программой Nmap, выделяем хост правой кнопкой мыши и переходим по выпадающему контекстному меню в пункт Services. В окне вкладок появится еще одна вкладка, в которой будет виден результат нашей работы. Вся информация сгруппирована по разделам: хост (host), имя (name), порт (port), протокол (proto), состояние порта (state) и информационная колонка (info).

Nmap_Result

Запущенные сервисы хоста Metasploitable

В колонке имя (name) представлены имена сервисов, которые обнаружил Nmap на просканированных портах. В колонке протоколов (proto) обозначены протоколы (UDP и TCP), на которых работают обнаруженные сервисы. Колонка портов (port) показывает открытые порты, на которых "висят" эти службы. И, наконец, информационная колонка (info) выдает информационное сообщение, которое программа Nmap получила с этого порта. Эта информация очень полезна для нас, так как помогает нам установить, на каком порту какая служба запущена. Об этой информации мы еще поговорим, когда будем обсуждать тему опции атаки.

Тип атаки: простое удаленное применение эксплоита

Metasploit имеет в своем составе свыше 650 эксплоитов. Если вы точно не знаете, какой эксплоит вам необходимо использовать, то просмотр всего списка может вас слегка напугать. Но Armitage может нам помочь в деле поиска нужного эксплоита и значительно сузить границы поиска. Переходим в меню по пути Attacks - Find Attacks - by port. Armitage проанализирует хосты и построит контекстное меню для каждого из них в отдельности. Для выполнения этой операции программе потребуется некоторое время, поэтому ждем, пока не появиться диалоговое окно "Анализ атаки завершен" ("Attack analysis complete").

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

Вернемся немного назад (раздел Сканирование) и внимательно проанализируем информацию о запущенных на хосте сервисах (колонка info). Хорошо видно, что на хосте Metasploitable работает файловый FTP-сервер ProFTPD 1.3.1. Переходим в меню по пути Attack - ftp и выбираем один из эксплоитов ProFTPD. Сам процесс выбора эксплоита сопровождается появлением диалогового окна, в котором будет представлена информация о выбранном эксплоите и опции, которые можно задать для него. Если вы прочитаете описание выбранного эксплоита, то заметите, что для различных версий файловых серверов ProFTPD имеются свои наборы эксплоитов. Черт побери, этот эксплоит не подойдет для нашего случая!

Launch_Exploit_Dialog

Диалоговое окно запуска эксплоита в Armitage

Снова кликаем правой кнопкой мыши на целевой машине, переходим в меню Attack - Samba - usermap_script. Видим, что этот эксплоит применим только к определенным версиям Samba в пределах v.3.0.20 - 3.0.25. В окне вкладок на табе "Сервисы" видим, что на нашем хосте-жертве запущен Samba версии 3.х. Однако, точной версии работающей на нем Samba мы не знаем. Это уже хуже, так как нам придется просто пробовать запустить эскплоит и проверить опытным путем, будет ли он работать или нет. Изменять какие-либо опции этого эксплоита необходимости нет. Просто щелкаем на кнопке "Запустить" ("Launch") для запуска эксплоита.

Если мы угадали и эксплоит успешно применился, значок хоста, который является нашей целью, станет красным с подсвеченными молниями вокруг него. Мои поздравления! Делаем правый щелчок мыши на этом значке и выбираем в контекстном меню Shell 1 - Interact. В окне вкладок откроется таб с запущенной командной оболочкой. О ней мы расскажем чуть позже, когда коснемся процесса post-exploitation.

Compromised_Host

Хост, к которому был успешно применен эксплоит

Если вы знакомы с работой фреймворка Metasploit, у вас сразу может возникнуть следующий вопрос - о payload'ах. Armitage может выбрать нужный для вас payload из коллекции Metasploit. Например, если вы совершаете атаку на Windows-машину, Armitage выберет payload meterpreter. Если же на атакуемой машине стоит какая-либо другая операционная система, Armitage выберет payload командной оболочки, соответствующей этой ОС. Если же вы еще плохо владеете Metasploit, вам достаточно будет знать, что эксплоит представляет из себя код, который использует ошибки в протоколах и различных программных продуктах для получения возможности доступа к удаленному хосту. В тоже время payload - это код, который позволяет получить доступ к этому хосту; payload выполняется только после успешной работы эксплоита. Если сказать образно, то эксплоит "идет" впереди и, благодаря лазейкам (ошибкам в программном коде), "открывает двери" для payload'а, с тем, чтобы тот смог запуститься на машине жертвы и предоставить своему хозяину выполнять какие-либо действия на ней.

Теперь выберем в окне вкладок таб "Консоль" ("Console") и закроем все открытые нами сессии, набрав в консоли команду session -K. Все запущенные нами сессии закроются.

Тип атаки: применение эксплоитов к web-приложениям

В будущем, мною планируется доработать код фреймворка Metasploit, чтобы он мог анализировать и выполнять атаки на любые web-приложения. Но на сегодняшний день, в наличии имеются только несколько эксплоитов для работы с наиболее распространенными приложениями этого класса. Выбираем правой кнопкой мыши цель и переходим по контекстному меню Attack - Webapp. Видим те, которые можно использовать в нашем случае.

Exploits for Web-applications

Эксплоиты для web-приложений

Еще раз повторюсь, сказав, что эти эксплоиты были выбраны Armitage, исходя из списка открытых портов, обнаруженных сканером Nmap. К сожалению, мы не может точно сказать, какие именно web-приложения установлены на машине нашей жертвы. Что же, Armitage снова придет к нам на помощь. Выберем пункт "Проверить эксплоиты" ("check exploits...") в самом низу этого списка.

Команда "Проверить эксплоиты" ("check exploits...") откроет таб консоли в окне вкладок и запустит проверку каждого эксплоита из списка, подойдет ли он для выбранной нами цели или нет. Запустится команда Metasploit для проверки эксплоитов. В результате мы получим часть каких-то эксплоитов, которые не будут работать в нашем случае. Но большинство, все же, могут быть применены "на практике".

После того, как проверка будет закончена, жмем Ctrl+F и открываем диалоговое окно поиска. Печатаем в строке поиска vulnerable и "давим" на Enter. Результатом будет список эксплоитов, которые являются работоспособными.

Armitage_Search_Exploit

Поиск подходящего эксплоита

Как видите на скриншоте, эксплоит tikiwiki_graph_formula_exec подходит нам - напротив него команда вывела надпись vulnerable. Делаем щелчок правой кнопкой мыши, переходим по пути меню Webapp - tikiwiki_graph_formula_exec. Как и в предыдущем случае, жмем на кнопку "Запустить" ("Launch") в появившемся диалоговом окне. Теперь просто ждем, пока значок компьютера-жертвы не сделается красным.

Чтобы закрыть командную оболочку, кликаем правой кнопкой мыши на цели и переходим "Оболочка 2 - Разъединить" ("Shell 2 - Disconnect").

Тип атаки: получение пароля методом Brute Force

Этот тип атаки требует нескольких предварительных шагов. Давайте посмотрим на порт 8180 вкладки сервисов. Как видно в информационной колонке info, на этом порту запущен сервер Apache Tomcat JSP 1.1.

Выбираем поле поиска в браузере модулей и вводим в нем tomcat. Для Tomcat имеется всего лишь один эксплоит exploit/multi/http/tomcat_mgr_deploy. Как обычно, двойным щелчком на модуле открываем диалоговое окно свойств. Если внимательно посмотреть на опции, которые он предлагает, то видно, что для запуска последнего требуется ввести имя пользователя и пароль. У нас пока нет ни первого, ни второго, так что закрываем это окно.

Module Search Result

Результат поиска модулей

Metasploit имеет в своем арсенале несколько вспомогательных модулей для подбора логина и пароля. Такие модули обычно имеют имя service_login. В предыдущем результате поиска по ключевому слову tomcat присутствует модуль auxiliary/http/tomcat_mgr_login (см. скриншот "Результат поиска модулей"). Это как раз то, что нам нужно. Опять двойным щелчком мыши по уже этому модулю открываем диалоговое окно свойств.

Armitage_tomcat_mgr_login

Диалоговое окно модуля tomcat_mgr_login

Обратите внимание, что почти все поля опций в этом окне уже заполнены. Нас прежде всего интересует опция USERPASS_FILE. Она указывает на месторасположение файла со списком логинов и паролей. (Прим. переводчика. Этот файл называется словарем. В Интернете можно найти целые коллекции таких словарей. Google в помощь.). Двойной щелчок мыши на USERPASS_FILE в поле "Опции" ("Option") открывает окно, в котором можно выбрать любой другой файл с таким набором пары "логин-пароль" (словарь). Мы ничего менять не будем, так как этот словарь нам полностью подходит. Убедимся, что параметр RPORT (удаленный порт, открытый на хосте) выставлен на правильное значение. На нашей машине-цели Tomcat "висит" на порту 8180, а не на значении по умолчанию 8080.

Password_Guessing

Процесс подбора пароля

Жмем кнопку "Запустить" ("Launch") для старта процесса брутфорсинга. Как видим на скриншоте, программа подобрала пару "логин:пароль" - tomcat:tomcat. Это было довольно легко!

Открываем окно запуска эксплоита tomcat_mgr_deploy. Уcтанавливаем значение параметра RPORT также на 8180. Для параметров USERNAME и PASSWORD ставим значения tomcat. Выбираем хост в окне Цель (Target). Щелкаем кнопку "Запустить" ("Launch") и ждем. Через некоторое время вас можно поздравить - вы получили еще одну командную оболочку!

Post Exploitation

В трех предыдущих примерах мы видели, как можно получить доступ к удаленному хосту. Теперь давайте поговорим о том, что мы можем сделать после того, как "пробрались" на машину жертвы. Делаем правый щелчок мыши на значке хоста, переходим в контекстном меню в пункт Shell 3 и выбираем Interact. Это откроет командную оболочку в своей собственной вкладке.

В этой оболочке присутствуют все стандартные приемы работы. Стрелками вверх/вниз (up/down) клавиатуры перемещаемся по истории команд, введенных в оболочке. Чтобы найти что-либо в выводе, нажимаем сочетание клавиш Ctrl+F. Если вы закроете вкладку, запущенная сессия оболочки все же останется открытой. Вы можете снова открыть новую вкладку, выбрав в меню Interact.

Хотите увидеть, под какой учетной записью вы находитесь, наберите команду id. Если мы наберем эту команду в оболочке, то в результате получим tomcat55. То есть, мы сейчас находимся в командной оболочке на удаленном хосте под учетной записью tomcat55. Что же, настало время получить права суперпользователя root.

Повышение привилегий

Операция повышения привилегий в операционной системе Linux во многом зависит от вашего окружения. Вы можете зайти по адресу http://www.exploit-db.com и поискать новые эксплоиты под Linux. Стоит обратить внимание на один из багов, обнаруженных Tavis Ormandy. Эта программная ошибка позволяет нам создавать в любом месте операционной системы файл, принадлежащий суперпользователю root. Travis приводит пример, как он создает файл для утилиты crontab и использует его для запуска своих собственных команд с правами root. В моих тестах утилита crontab отказалась запускать команды из этого файла на машине Metasploitable. Такое бывает. Ладно, что еще тогда мы можем сделать? Возможно, вам стоит заглянуть на этот ресурс, чтобы кое-чему научиться или узнать - Ubuntu mountall privilege escalation vulnerability. Это баг утилиты монтирования, "благодаря" которому по пути /dev/.udev/rules.d остается общедоступный файл root.rules. Любой пользователь, имеющий права записи на этот файл, может запускать любые команды от имени пользователя root. Однако, быстрый поиск файла root.rules в этой директории показывает, что такого файла там не существует. Может быть, сегодня не наш день?

Видите какие-либо опции? Тогда видоизменим пример Travis'а и создадим общедоступный файл root.rules. Тем самым, получив права root. Введем следующие команды в оболочке удаленного хоста:

Теперь мы имеем общедоступный файл root.rules в директории /dev/.udev/rules.d. Загружаем на удаленный хост Metasploitable Python-скрипт mount-CVE-2010-2961.py. Для этого щелкаем правой кнопкой мыши в окне оболочки и выбираем в меню "Загрузить" (Upload...). Переходим к файлу mount-CVE-2010-2961.py и кликаем "Открыть" ("Open"). Armitage воспользуется UNIX-командой prinf для загрузки этого файла на удаленную машину. Так как скрипт очень маленький, "заливка" произойдет практически мгновенно. Но если файл окажется достаточно большим, Armitage покажет окно прогресса.

Этот Python-скрипт наполнит файл root.rules командами, для того чтобы создать setuid для файла /tmp/toor. Он также сгенерирует UDEV-события, чтобы заставить систему перечитать файл rules. Давайте запустим этот скрипт на удаленном хосте, чтобы получить права root:

Privilege Escalation

Повышение прав в Armitage

У нас получилось, теперь мы обладаем правами root! Осталось только подчистить за собой следы, удалив файлы root.rules, mountall-CVE-2010-2961.py и /tpm/toor.

Persistence

Теперь, когда мы обладаем правами root, нужно укрепить свои позиции в системе и установить backdoor, чтобы иметь постоянный доступ к удаленной машине. Очищаем строку поиска в браузере модулей и жмем Enter. Эти действия восстановят список модулей в первоначальный вид. Перейдем к модулю payload/linux/x86/shell_reverse_tcp. Двойным щелчком по нему открываем диалоговое окно свойств.

В этом окне вы можете сгенерировать исполняемый payload Metasploit. Измените значение параметра LPORT на 1234. Выберите формат elf для выходного типа данных. Тип файлов elf является исполняемым форматом для систем Linux. Щелкаем на кнопке "Запуск" ("Launch") и сохраняем файл под именем backdoor. Мы имеем теперь в наличии программу, которая будет подключаться на исследуемой нами машине к порту под номером 1234 и запускать командную оболочку.

Нам необходима программа (Listener), которая прослушивала бы порт 1234 на предмет поступающих оттуда команд. Для этого переходим в меню Armitage - Listeners - Reverse. Вводим значение 1234 и запускаем ее кнопкой "Start Listener".

Щелкаем правой кнопкой мыши в окне командной оболочки и выбираем "Upload..." для "заливки" нашего backdoor'а на целевую машину:

Эта команда добавит наш setuid backdoor в глобальный профиль. Когда пользователь зайдет под своей учетной записью на машину, мы автоматически получил командную оболочку суперпользователя root на этом целевом хосте.

Закрываем все открытые сессии командой session -K в консоли Metasploit. Переключаемся на виртуальную машину Metasploitable. Входим в нее, используя логин msfadmin и пароль msfadmin. Если вы теперь посмотрите в Armitage, то там должна появиться новая сессия командной оболочки. Активируйте ее и введите команду whoami.

Заключение

В этой статье я показал вам, как можно произвести атаку на Linux-машину. Вы видели, как можно использовать программу Nmap для сканирования целевого хоста. Каким образом нужно преобразовывать результаты сканирования для нахождения методов атак и их запуска. И как можно повышать привилегии на захваченной машине.

Metasploit и Armitage не единственные инструменты, которые мы использовали во время нашего "путешествия". Но оба они существенно облегчают нелегкую задачу проникновения. Как вы могли убедиться, Armitage не делает ничего за вас, но он имеет все необходимые наборы утилит (например, та же prinf), для комфортной и продуктивной работы.

Некоторые шаги, описанные здесь, представлены и на видео. Если у вас есть такое желание, то можете посмотреть его. Чтобы получить максимум от этой статьи, загрузите все программы, упоминавшиеся здесь и попробуйте сами выполнить сценарий, пройденный мною. Если вы хотите большего, то можете попробовать другие способы проникновения на виртуальную машину Metasploitable.

Удачи!


Об авторе

Raphael Mudge является инженером по компьютерной безопасности. Проживает в Вашингтон, округ Колумбия. Им были созданы несколько проектов, такие как jIRCii, Sleep и After the Deadline. Сейчас он работает над проектом Armitage, инструментом для кибер-атак под фреймворк Metasploit. Связаться с ним можно по адресу http://www.hick.org/~raffi/.



Средняя оценка 5 при 1 голосовавших