DEPRECATED, 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
请参阅WiKi了解安装详情
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
插件 在WiKi中
一个可以放置在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-代理 在WiKi中
强制门户插件允许攻击者搭建一个无线接入点,该接入点与Web服务器和iptables流量捕获规则配合使用,以创建钓鱼门户。用户可以无需密码自由连接这些网络,并通常会看到一个登录页面,在允许浏览网页之前需要输入密码。
强制门户 在WiKi中
屏幕截图 在WiKi中
常见问题 在WiKi中
无论您想报告错误、发送补丁或对项目提出建议,都可以联系我们或开启拉取请求
| 插件 | 描述 |
|---|
| Dns2proxy | 此工具提供不同的后期利用功能,一旦您更改受害者的DNS服务器。 |
| Sstrip2 | Sslstrip 是一个MITM工具,基于@LeonardoNve/@xtr4nge的分支,实现了Moxie Marlinspike的SSL剥离攻击。 |
| Sergio_proxy | Sergio Proxy(超级有效的输入输出记录器)是一个使用Python为Twisted框架编写的HTTP代理。 |
| BDFProxy | 通过MITM修补二进制文件:BackdoorFactory + mitmProxy,bdfproxy-ng 是原始BDFProxy @secretsquirrel的分支和重构。 |
| Responder | Responder 是一个LLMNR、NBT-NS和MDNS投毒器。作者:Laurent Gaffie |
| PumpkinProxy | 拦截HTTP数据,此代理服务器允许即时拦截请求和响应 |
| CaptivePortals | 强制门户允许攻击者阻止用户访问互联网,直到他们在登录页面输入密码才能浏览网页。 |