@ensis
2015-05-18T21:44:17.000000Z
字数 1694
阅读 2313
在OS X中,可在/etc/pf.conf
文件中rdr-anchor "com.apple/*"
下加入语句
rdr on bridge100 inet proto tcp from 192.168.2.0/24 to any port https -> 127.0.0.1 port 8888
其中bridge100为目标流量经过的接口,192.168.2.0/24为目标流量的源ip范围,可根据测试环境进行相应更改。
在Linux中,通过iptables语句即可配置:
iptables -t nat -F PREROUTING
iptables -t nat -A PREROUTING -p tcp -s 192.168.2.0/24 --dport 443 -j REDIRECT --to-port 8888
此中间人攻击框架是用Python实现的,并且用到了scapy进行初级的包格式解析,因此需要安装:
python2.7, scapy2.3.1
并将ssl_tls.py
文件放置在scapy/layers/文件夹下,对于OS X,其路径为
/Library/Python/2.7/site-packages/scapy/layers/
对于Linux,其路径为:
/usr/lib/python2.7/dist-packages/scapy/layers/
并对scapy目录下的config.py
文件进行修改,将373行load_layers
列表中加入元素ssl_tls
,也就是改为
load_layers = ["sebek", "skinny", "smb", "snmp", ... , "tftp", "x509", "bluetooth", "dhcp6", "llmnr", "sctp", "vrrp", "ssl_tls", ]
根据需求修改wind.py
中import的内容。比如要使用消息欺骗功能,则在wind.py
中指示的相应位置加入from messageFraud import *
语句。功能和对应程序名称见下表:
功能 | 程序名称 | 加入语句 |
---|---|---|
被动查看 | passive | from passive import * |
消息欺骗 | messageFraud | from messageFraud import * |
Freak攻击 | freak | from freak import * |
EarlyCCS攻击 | earlyccs | from earlyccs import * |
运行python wind.py
启动程序。
框架的基本结构如下:
程序名称 | 主要功能 |
---|---|
wind.py | 框架的主程序,负责监听端口,处理收到的连接,每个连接有相应的handler,在handle函数中进行数据的收发,并调用相应的函数进行处理。 |
ssl_tls_crypto.py | 维护一个完整的TLS连接,每一个TLSSessionCtx实例都是一个TLS连接,其中保存了连接的所有信息。 |
prf.py | TLS中计算master secret、session key的基本方法。 |
header.py | socket接收数据时的特殊处理,以及OS X和Linux下获取连接源目的地址的方法。 |
freak.py | SSL freak攻击的实现。 |
passive.py | 被动攻击,提取通信协议基本参数。 |
messageFraud.py | 消息欺骗,篡改握手消息,使另一方因消息错误主动断掉连接。 |
earlyCCS.py | EarlyCCS攻击,在交换密钥前发送change cipher spec消息,测试服务器是否接受并进行不加密通信。 |
forward.py | 不对流量做处理,包含扩展程序应该实现的方法和设定的参数。 |
keys.list | 已分解的512bit公钥,用于freak攻击。 |
说明:
前4个文件构成了框架的基础,功能扩展是通过新添加的文件实现的(如freak.py,earlyccs.py等)。要新添加一个功能,只需新建一个.py
文件,实现forward.py内的函数即可,如果要对包的字段进行读写,也就是需要解析包格式,那么还需包含from scapy.all import *
语句。