Разработка сканера Metasploit в Nmap

NmapNmapBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/host_discovery("Host Discovery Techniques") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/service_detection("Service Detection") subgraph Lab Skills nmap/port_scanning -.-> lab-416123{{"Разработка сканера Metasploit в Nmap"}} nmap/host_discovery -.-> lab-416123{{"Разработка сканера Metasploit в Nmap"}} nmap/target_specification -.-> lab-416123{{"Разработка сканера Metasploit в Nmap"}} nmap/service_detection -.-> lab-416123{{"Разработка сканера Metasploit в Nmap"}} end

Обзор структуры Metasploit и создание файла simple_tcp.rb

Сначала давайте обзорим структуру Metasploit.

Metasploit разработан на основе концепции модульности для повышения эффективности повторного использования кода. Фреймворк написан на языке Ruby и включает компоненты, написанные на Perl, C, Assembly и Python. Он в первую очередь предназначен для операционных систем Linux, поэтому его структура команд очень похожа на командную оболочку Linux. Однако сейчас он поддерживает все основные операционные системы, такие как Windows, Solaris и Mac.

+---------------+------------------+----------------------------------------------+
| English Name  | Module Name      | Description                                  |
+---------------+------------------+----------------------------------------------+
| `Aux`         | Auxiliary Module | Provides a wealth of auxiliary modules for   |
|               |                  | information gathering during penetration,    |
|               |                  | including scanning and fingerprinting        |
|               |                  | various network services, building fake      |
|               |                  | services to collect login credentials,       |
|               |                  | password guessing, etc.                      |
+---------------+------------------+----------------------------------------------+
| `Exploits`    | Exploit Module   | Code components that exploit discovered      |
|               |                  | security vulnerabilities or configuration    |
|               |                  | weaknesses to attack remote target systems,  |
|               |                  | plant and run payloads, and gain access      |
|               |                  | control over the target systems.             |
+---------------+------------------+----------------------------------------------+
| `Post`        | Post-Exploit     | Supports various post-exploitation actions   |
|               | Module           | on the controlled system after gaining       |
|               |                  | remote access control through exploitation,  |
|               |                  | such as obtaining sensitive information,     |
|               |                  | further pivoting, and launching pivot        |
|               |                  | attacks.                                     |
+---------------+------------------+----------------------------------------------+
| `Payloads`    | Payload Module   | Payloads are code segments that run on the   |
|               |                  | target system after a successful             |
|               |                  | exploitation, typically to open a control    |
|               |                  | session connection for the attacker.         |
+---------------+------------------+----------------------------------------------+
| `Encoders`    | Encoder Module   | After assembling the payload and NOP         |
|               |                  | instructions into an instruction sequence,   |
|               |                  | Metasploit needs to perform an important     |
|               |                  | encoding step before the exploit module      |
|               |                  | injects the malicious data buffer into the   |
|               |                  | target system for execution.                 |
+---------------+------------------+----------------------------------------------+
| `Nops`        | NOP Module       | NOP (No Operation) instructions are          |
|               |                  | operations or instructions that have no      |
|               |                  | substantial effect on the program's          |
|               |                  | execution state.                             |
+---------------+------------------+----------------------------------------------+

Metasploit также интегрирует несколько компонентов для сканирования уязвимостей, таких как:

  • Сканер Nmap: Подходит для Windows, Linux и Mac OS. Используется для обнаружения хостов, сканирования или перечисления портов, обнаружения служб, а также определения операционных систем, аппаратных адресов, версий программного обеспечения и уязвимостей.

  • Сканер NeXpose: Сканирует сеть для поиска работающих устройств, определения их операционных систем и уязвимостей приложений, анализа отсканированных данных и создания отчетов о сканировании уязвимостей.

  • Сканер Nessus: Один из наиболее широко используемых инструментов для сканирования уязвимостей. Он использует клиент-серверную модель, где сервер выполняет проверки безопасности, а клиент настраивает и управляет сервером. Сервер также использует систему плагинов, позволяющую пользователям добавлять плагины для выполнения конкретных функций и более сложных проверок безопасности.

Теперь мы создадим новый модуль сканера Metasploit с именем simple_tcp.rb.

  1. Откройте терминал xfce на хост-машине LabEx и запустите целевую машину Metasploitable2, выполнив следующую команду:
sudo virsh start Metasploitable2

Подождите, пока целевая машина запустится, это может занять от 1 до 3 минут.

  1. Проверьте связь с целевой машиной, отправив ей пинг:
ping 192.168.122.102

Нажмите Ctrl+C, чтобы остановить пинг.

  1. Запустите контейнер Kali Linux и войдите в среду bash, выполнив:
docker run -ti --network host b5b709a49cd5 bash
  1. Внутри контейнера Kali проверьте сетевое соединение с целевой машиной:
ping 192.168.122.102

Нажмите Ctrl+C, чтобы остановить пинг.

  1. Затем перейдите в каталог модуля scanner:
cd /usr/share/metasploit-framework/modules/auxiliary/scanner
  1. Создайте новый файл с именем simple_tcp.rb:
sudo vi simple_tcp.rb
  1. Скопируйте и вставьте следующий код в файл:
require 'msf/core'
class MetasploitModule < Msf::Auxiliary
    include Msf::Exploit::Remote::Tcp
    include Msf::Auxiliary::Scanner

    def initialize
        super(
            'Name'        => 'Mr_Zhou Scanner',
            'Version'     => '$Revision$',
            'Description' => 'Shiyanlou TCP Scanner',
            'Author'      => 'lucat',
            'License'     => MSF_LICENSE
        )
        register_options(
            [
                Opt::RPORT(12345)
            ], self.class)
    end

    def run_host(ip)
        connect()
        sock.puts('HELLO SERVER')
        data = sock.recv(1024)
        print_status("Received: #{data} from #{ip}")
        disconnect()
    end
end
  1. Этот код определяет новый модуль Metasploit с именем "Mr_Zhou Scanner", который сканирует TCP-порты и отображает любые полученные данные от сервера. Давайте разберем код:
def initialize
    super(
        'Name'        => 'Mr_Zhou Scanner',
        'Version'     => '$Revision$',
        'Description' => 'Shiyanlou TCP Scanner',
        'Author'      => 'lucat',
        'License'     => MSF_LICENSE
    )

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

register_options(
    [
        Opt::RPORT(12345)
    ], self.class)

Эта строка регистрирует параметр для сканирования порта 12345.

def run_host(ip)
    connect()
    sock.puts('HELLO SERVER')
    data = sock.recv(1024)
    print_status("Received: #{data} from #{ip}")
    disconnect()
end

Этот метод выполняется для каждого целевого IP-адреса. Он подключается к указанному порту, отправляет строку "HELLO SERVER", получает и выводит любые данные от сервера, а затем разрывает соединение.

Сохраните файл и выйдите из редактора.

Настройка прослушивающего сервера

Для тестирования нашего сканера simple_tcp.rb нам нужно настроить прослушивающий сервер на целевой машине.

На хосте LabEx откройте новый терминал Xfce и создайте файл с именем shiyanlou.txt:

vi shiyanlou.txt

В этом файле введите любой текст, который вы хотите. Этот текст будет отправлен обратно сканеру при его подключении к прослушиваемому порту. Например:

Life is short, i use Python.

Сохраните файл и выйдите из редактора.

Далее, запустите прослушивающий сервер на порту 12345 (порт, для которого настроен наш сканер) и отправьте содержимое файла shiyanlou.txt любым клиентам, которые подключатся:

sudo nc -l 12345 < shiyanlou.txt

Теперь сервер будет прослушивать порт 12345 и ожидать входящих подключений.

Запуск сканера simple_tcp

Теперь, когда у нас есть модуль сканера simple_tcp и настроен прослушивающий сервер, давайте запустим сканер и проверим, работает ли он.

Сначала запустите консоль Metasploit в контейнере Kali Linux:

cd ~
sudo msfconsole

После загрузки консоли используйте наш модуль simple_tcp:

use auxiliary/scanner/simple_tcp

Вы можете просмотреть информацию о модуле с помощью команды info:

info

Вот пример вывода, который вы можете увидеть:

Name:          Mr_Zhou Scanner
Description:   Shiyanlou TCP Scanner
Author:        lucat
License:       Metasploit Framework License (BSD)
Version:       $Revision$

Далее, укажите IP - адрес целевого хоста:

set RHOSTS 192.168.122.1

Примечание: Используйте RHOSTS (с буквой 's'), а не RHOST. Вы можете проверить, какой параметр использовать, с помощью команды show options.

Наконец, запустите сканер:

run

Если все настроено правильно, вы должны увидеть сообщение от прослушивающего сервера:

[+] Received: Life is short, i use Python. from 192.168.122.1

Если вы не получили это сообщение, вернитесь к своему прослушивающему серверу и снова запустите sudo nc -l 12345 < shiyanlou.txt.

Поздравляем! Вы успешно разработали и протестировали собственный модуль сканера Metasploit.

Нажмите Ctrl+D, чтобы выйти из консоли Metasploit, а затем начните проверку

Итоги

В этом лабораторном занятии вы научились создавать собственный модуль сканера Metasploit. Вы ознакомились с структурой модулей Metasploit, создали новый модуль TCP - сканера с именем simple_tcp.rb, настроили прослушивающий сервер для тестирования сканера и успешно запустили сканер, чтобы получить и отобразить данные от сервера.

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