Metasploit Remote API User Guide / Metasploit Remote API Пользывательский Гайд: Гайд

Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

Metasploit API даёт доступ к использыванию HTTP протокола через SSL.По дефолту, установлен 3790 порт TCP, SSL сертификат типично самоподписывающийся, однако можно изменить это при необходимости(например для root-signed).Пользователи могут выбирать: использовать SSL шифрование или пользываться не шифрованным HTTP, порт может быть также быть указан юзером.


\Ответы и Запросы RPC сервера Metaspolit

Запросы-[RPC]
Запрос клиента преобразуются а стандартный HTTP POST для конкретной URI(например "/api" или "/api/1.0".Этот POST запрос должен иметь заголовок с контент-тип(Content-Type), допустим такой как "binary/message-pack", с телом запроса содержащим актуальное RPC-сообщение.

Простой запрос показан ниже:
POST /api/1.0 HTTP/1.1
Host: RPC Server
Content-Length: 128
Content-Type: binary/message-pack
<128 bytes of encoded data>

beson 20.09.14 в 14:53

0

Ответы сервера, стандартны для HTTP.Коды статуса HTTP указывают на результат из особенностей или специфики запроса.
HTTP Code
Meaning
200 The request was successfully processed
500 The request resulted in an error
401 The authentication credentials supplied were not valid
403 The authentication credentials supplied were not granted access
to the resource
404 The request was sent to an invalid URI

В 4-х из этих пяти случаев, подробный ответ будет сформирован
в теле сообщения.Контент-тип ответов сервера всегда будет "binary/message-pack",за исключение случаев с 404-x ошибокой. (в этом случае тело сообщение содержит HTTP-документ.

Пример ответа:

HTTP/1.1 200 OK
Content-Length: 1024
Content-Type: binary/message-pack
<1024 bytes of encoded data>


\Кодировка

Все запросы и ответы на них используют MessagePack encoding
((((MessagePack — это формат, напоминающий JSON, только более быстрый и более компактный.JSON (англ. JavaScript Object Notation) — текстовый формат обмена данными, основанный на JavaScript и обычно используемый именно с этим языком.))))
Это безопасный и эфективный способ передачи вложеных типов данных . MessagePack реализован для множества языков и распространяется под open source-лицензией (Apache open source license). MessagePack-спецификация ограничена небольшим набором типов данных. По этой причине не нативные типы,такие как дата например, представлены в виде целых чисел или строк.

Пример закодирванного массива MessagePack:

["ABC", 1, 2, 3].to_msgpack()

>> "\x94\xA3\x41\x42\x43\x01\x02\x03"

ответы сервера Metasploit RPC предсталяют из себя MessagePack-массив:

[ "MethodName", "Parameter1", "Parameter2", ... ]

За исключением API-аунтификации, все методы ожидают что аунтификационый токен будет вторым элементом в массиве запроса,остальным параметрам присваивается определенный метод.
Строки и целые числа используюзуются как параметы в большинстве методов, во воложеных масивах и хешах это тоже работает.Метод который в качестве вводимых даннх получает список аргументов ожидает их в качестве одиночного параметра состоящего из массива элементов и не делит их на составляющие.
Некоторые методы могут принимать параметры состоящие из хэша который содержит ещё и специальные опции.


Вызов аунтификационного метода можно взять из
следующей формы:

["auth.login","username", "password"]

Вызов метода версии(version method)можно взять из
следующей формы:

["core.version", "<token>"]


Вызов комплексного метода можно взять из
следующей формы:

["modules.search", "<token>", {
"include" => ["exploits", "payloads"],
"keywords" => ["windows"],
"maximum" => 200
} ]

beson 20.09.14 в 14:54

0

\Программирование
Мetasploit написан в первую очередь на Ruby.Ruby-на сегоднешний день является простым способом для обращение к удалённому API.В дополнении к Ruby подо любой язык с поддержкой MessagePack (Java, Python, C, etc) и HTTPS-соединения может использываться с удалённым API.

\Ruby

Для того чтобы начать работу с API Ruby нужно установить msfrpc-client GEM. Этот GEM зависит от librex, другой GEM вытянут из исходного кода Metasploit Framework

beson 20.09.14 в 14:57

0
Минутку...