Сначала давайте обзорим структуру 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
.
- Откройте терминал xfce на хост-машине LabEx и запустите целевую машину Metasploitable2, выполнив следующую команду:
sudo virsh start Metasploitable2
Подождите, пока целевая машина запустится, это может занять от 1 до 3 минут.
- Проверьте связь с целевой машиной, отправив ей пинг:
ping 192.168.122.102
Нажмите Ctrl+C
, чтобы остановить пинг.
- Запустите контейнер Kali Linux и войдите в среду bash, выполнив:
docker run -ti --network host b5b709a49cd5 bash
- Внутри контейнера Kali проверьте сетевое соединение с целевой машиной:
ping 192.168.122.102
Нажмите Ctrl+C
, чтобы остановить пинг.
- Затем перейдите в каталог модуля
scanner
:
cd /usr/share/metasploit-framework/modules/auxiliary/scanner
- Создайте новый файл с именем
simple_tcp.rb
:
sudo vi simple_tcp.rb
- Скопируйте и вставьте следующий код в файл:
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
- Этот код определяет новый модуль 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", получает и выводит любые данные от сервера, а затем разрывает соединение.
Сохраните файл и выйдите из редактора.