
더 이상 사용되지 않음, wifipumpkin3 -> https://github.com/P0cL4bs/wifipumpkin3

WiFi-Pumpkin - 불량 Wi-Fi 액세스 포인트 공격 프레임워크
WiFi-Pumpkin은 가짜 네트워크를 쉽게 생성하는 불량 AP 프레임워크로, 의심하지 않는 대상으로부터 합법적인 트래픽을 전달하면서 동시에 다양한 기능을 제공합니다. 기능에는 불량 Wi-Fi 액세스 포인트, 클라이언트 AP에 대한 디어트 공격, 프로브 요청 및 자격 증명 모니터, 투명 프록시, Windows 업데이트 공격, 피싱 관리자, ARP 스푸핑, DNS 스푸핑, Pumpkin-Proxy, 실시간 이미지 캡처 등이 포함됩니다. 또한 WiFi-Pumpkin은 Wi-Fi 보안 감사를 위한 매우 완벽한 프레임워크이며, 기능 목록은 상당히 광범위합니다.

git clone https://github.com/P0cL4bs/WiFi-Pumpkin.git
cd WiFi-Pumpkin
./installer.sh --install
또는 .deb 파일을 다운로드하여 설치
sudo dpkg -i wifi-pumpkin-0.8.8-all.deb
sudo apt-get -f install # force install dependencies if not install normally
설치에 대한 자세한 내용은 위키를 참조하세요: Installation
1HBXz6XX3LcHqUnaca5HRqq6rPUmA3pf6f

투명 프록시(mitmproxy)를 사용하면 HTTP 트래픽을 가로채고 요청 및 응답을 수정하여 대상 방문 페이지에 JavaScript를 주입할 수 있습니다. 'plugins/extension/' 디렉토리에 Python 파일을 생성하여 페이지에 데이터를 주입하는 모듈을 쉽게 구현할 수 있으며, 자동으로 Pumpkin-Proxy 탭에 표시됩니다.
from mitmproxy.models import decoded # for decode content html
from plugins.extension.plugin import PluginTemplate
class Nameplugin(PluginTemplate):
meta = {
'Name' : 'Nameplugin',
'Version' : '1.0',
'Description' : 'Brief description of the new plugin',
'Author' : 'by dev'
}
def __init__(self):
for key,value in self.meta.items():
self.__dict__[key] = value
# if you want set arguments check refer wiki more info.
self.ConfigParser = False # No require arguments
def request(self, flow):
print flow.__dict__
print flow.request.__dict__
print flow.request.headers.__dict__ # request headers
host = flow.request.pretty_host # get domain on the fly requests
versionH = flow.request.http_version # get http version
# get redirect domains example
# pretty_host takes the "Host" header of the request into account,
if flow.request.pretty_host == "example.org":
flow.request.host = "mitmproxy.org"
# get all request Header example
self.send_output.emit("\n[{}][HTTP REQUEST HEADERS]".format(self.Name))
for name, valur in flow.request.headers.iteritems():
self.send_output.emit('{}: {}'.format(name,valur))
print flow.request.method # show method request
# the model printer data
self.send_output.emit('[NamePlugin]:: this is model for save data logging')
def response(self, flow):
print flow.__dict__
print flow.response.__dict__
print flow.response.headers.__dict__ #convert headers for python dict
print flow.response.headers['Content-Type'] # get content type
#every HTTP response before it is returned to the client
with decoded(flow.response):
print flow.response.content # content html
flow.response.content.replace('</body>','<h1>injected</h1></body>') # replace content tag
del flow.response.headers["X-XSS-Protection"] # remove protection Header
flow.response.headers["newheader"] = "foo" # adds a new header
#and the new header will be added to all responses passing through the proxy
플러그인 위키 참조
TCP 스트림 사이에 배치할 수 있는 프록시입니다. (scapy 모듈을 사용하여) 요청 및 응답 스트림을 필터링하고 WiFi-Pumpkin이 가로챈 TCP 프로토콜 패킷을 적극적으로 수정합니다. 이 플러그인은 가로챈 데이터를 보거나 수정하기 위한 모듈을 사용합니다. 모듈 구현 가능한 가장 쉬운 방법은 'plugins/analyzers/'에 사용자 정의 모듈을 추가하는 것이며, 자동으로 TCP-Proxy 탭에 표시됩니다.
from scapy.all import *
from scapy_http import http # for layer HTTP
from default import PSniffer # base plugin class
class ExamplePlugin(PSniffer):
_activated = False
_instance = None
meta = {
'Name' : 'Example',
'Version' : '1.0',
'Description' : 'Brief description of the new plugin',
'Author' : 'your name',
}
def __init__(self):
for key,value in self.meta.items():
self.__dict__[key] = value
@staticmethod
def getInstance():
if ExamplePlugin._instance is None:
ExamplePlugin._instance = ExamplePlugin()
return ExamplePlugin._instance
def filterPackets(self,pkt): # (pkt) object in order to modify the data on the fly
if pkt.haslayer(http.HTTPRequest): # filter only http request
http_layer = pkt.getlayer(http.HTTPRequest) # get http fields as dict type
ip_layer = pkt.getlayer(IP)# get ip headers fields as dict type
print http_layer.fields['Method'] # show method http request
# show all item in Header request http
for item in http_layer.fields['Headers']:
print('{} : {}'.format(item,http_layer.fields['Headers'][item]))
print ip_layer.fields['src'] # show source ip address
print ip_layer.fields['dst'] # show destiny ip address
print http_layer # show item type dict
print ip_layer # show item type dict
return self.output.emit({'name_module':'send output to tab TCP-Proxy'})
TCP-Proxy 위키 참조
Captive-Portal 플러그인을 사용하면 공격자가 웹 서버 및 iptables 트래픽 캡처 규칙과 함께 무선 액세스 포인트를 설정하여 피싱 포털을 만들 수 있습니다. 사용자는 비밀번호 없이 이러한 네트워크에 자유롭게 연결할 수 있으며, 웹 브라우징을 허용하기 전에 비밀번호가 필요한 로그인 페이지로 리디렉션되는 경우가 많습니다.
Captive-portals 위키 참조
스크린샷 위키 참조
FAQ 위키 참조
버그를 신고하거나, 패치를 보내거나, 이 프로젝트에 대한 제안을 하고 싶다면 저희에게 연락하거나 pull requests를 열어주세요.
| Plugin | Description |
|---|
| Dns2proxy | 이 도구는 DNS 서버를 피해자로 변경한 후 사후 공격을 위한 다양한 기능을 제공합니다. |
| Sstrip2 | Sslstrip은 @LeonardoNve/@xtr4nge의 포크 버전을 기반으로 Moxie Marlinspike의 SSL 스트리핑 공격을 구현한 MITM 도구입니다. |
| Sergio_proxy | Sergio Proxy (Super Effective Recorder of Gathered Inputs and Outputs)는 Twisted 프레임워크용 Python으로 작성된 HTTP 프록시입니다. |
| BDFProxy | MITM을 통한 바이너리 패치: BackdoorFactory + mitmProxy, bdfproxy-ng는 원본 BDFProxy @secretsquirrel의 포크 및 리뷰입니다. |
| Responder | Responder는 LLMNR, NBT-NS 및 MDNS 포이즈너입니다. 저자: Laurent Gaffie |
| PumpkinProxy | HTTP 데이터를 가로채는 프록시 서버로, 요청과 응답을 실시간으로 가로챌 수 있습니다. |
| CaptivePortals | Captive-Portal을 사용하면 공격자가 사용자가 웹 브라우징을 허용받기 전에 비밀번호가 필요한 로그인 페이지를 열 때까지 인터넷 액세스를 차단할 수 있습니다. |