最好的 MitM 中间人攻击开源框架清单:https://github.com/Chan9390/Awesome-MitM
哔哩哔哩:https://search.bilibili.com/all?keyword=wireshark
1、WireShark
WireShark 是一款免费开源的高性能网络协议分析软件,其前身是著名的网络分析软件Ethereal。WireShark 现在绝大多数以太网网卡和主流无线网卡都得到了支持。
WireShark 具有以下特点:
- (1) 可运行多种操作系统平台Windows、Linux、Mac OS X10.5.5、Solaris和FreeBSD等待操作系统;
- (2) 支持数千种以上的网络协议,并不断增加对新协议的支持;
- (3) 支持实时捕获,然后在离线状态下进行分析;
- (4) 支持对VOIP分析数据包;
- (5) 支持对通过IPsec、ISAKMP、Kerberos、SNMPv3、SSL/TLS、WEP 和WPA/WPA2 解密协议加密的数据包;
- (6) 以太网可以实时获取,IEEE 802.11、PPP/HDLC、ATM、蓝牙,令牌环和FDDI(光纤)网络中的数据包;
- (7) 支持阅读和分析许多其他网络嗅探软件保存的文件格式,包括 Tcpdump、Sniffer pro、EtherPeek、Microsoft Network Monitor和CISCO Secure IDS 等软件;
- (8) 支持捕获各种过滤条件,通过设置显示过滤显示指定的内容,并以不同的颜色显示过滤报纸;
- (9) 具有网络报文数据统计功能;
- (10) 导出它捕获的数据XML、PostScript、CSV以及普通文本文件的格式。
WireShark 官网:https://www.wireshark.org
- WireShark 要在 Windows在系统下运行时,还需要一个名字 Winpcap 但是现在Wireshark 底层用的是 Npcap, Npcap 是 神器Nmap 套件中一个Windows数据抓包程序主要用于Windows数据包嗅探和发送。Npcap 2013年开源项目Nmap创始人Gordon Lyon由北京大学罗杨博士发起Google Summer of Code计划赞助,以MIT协议发布。由于Winpcap 已停止更新(之前版本)Npcap主要基于Winpcap(2013),Npcap 通过底层开发构建新的自我 Npcap 原始数据包捕获/发送驱动程序WinpcapAPI 在此基础上,使用更现代 API 接口在功能、性能和安全性方面都优于旧版本。
- 如果是在 Linux 在系统下使用时,应使用 Libpcap 驱动库,它现在的版本是 Libpcap1.0.我们可以从 www.tcpdump.org 上下载。
WireShark 在 Windows 和 Linux 在系统下安装之前,您必须确保系统已经安装好了 Npcap或 Linpcap。下图就是 WireShark 在 Windows 主界面在系统下运行。
在接口上选择一个网卡接口来捕获数据包
IP 过滤
输入过滤器 ip. 其它选项可以查看。
源 IP :ip.src == 192.168.0.5 或 ip.src eq 192.168.0.5 目的IP:ip.dst == 192.168.0.5 或 ip.dst eq 192.168.0.5 指定主机ip,源或目的: ip.host == 192.168.0.5 或 ip.host eq 192.168.0.5 或者用ip.addr 指定源ip 或 指定目的ip: ip.src == 192.168.0.5 or ip.dst == 192.168.0.5 指定源ip 且 指定目的ip: ip.src == 127.0.0.1 and ip.dst == 192.168.0.5
IP层也可以跟进 IP 协议的字段 过滤。
MAC 地址 过滤
与 ip.类似的过滤,使用 eth.XXX,没有eth.host 示例:eth.addr;eth.src;eth.dst
端口 过滤
端口过滤非常常用,应指出协议是tcp还是udp, 可以用srcport,dstport,port,端口可以更符合要求>,>=,<,<=,==,eq 示例:过滤目的端口为80端口tcp报文:tcp.dstport == 80 示例:443过滤源端口tcp报文:tcp.srcport == 443 示例:过滤端口80tcp报文 或者端口是53udp报文:udp.port == 53 or tcp.port == 80 示例:过滤源口号大于1024tcp报文:tcp.srcport > 1024 示例:过滤指定服务器80端口 :tcp.port == 80 and ip.host = 192.168.0.5
协议 过滤
tcp,udp,arp,icmp,http,smtp,ftp,dns,msnms,ip,ssl,oicq,bootp等。 "" 在前面加个 或者 。 示例:只显示tcp报文 : tcp 示例:只显示不是 tcp 的报文 : !tcp 或者 not tcp 示例:过滤ack的包:tcp.ack == 1 示例:过滤http包,以及dns包,以及ssl包:http or dns or ssl
http过滤
http.request.method == GET 过滤 HTTP 的 GET 请求 http.request.method == POST 过滤 HTTP 的 POST 请求 http.response.code == 200
使用 contains 过滤内容
http contains "HTTP/1.1 200 OK" http contains "200 OK" http contains "admin" tcp contains "admin"
指定的字段:协议 [开始位置:长度]
示例:tcp协议从第二个字符开始(从0开始,不是1,这2是偏移位置), 长度为3,内容为01,bb,eb tcp[2:3] == 01:bb:eb
正则 过滤
正则使用的是 matches, 格式: tcp matches "正则表达式" // tcp contains "字符串" // contains 只是进行 "字符串匹配"
流 追踪
点击鼠标右键单击数据包 ---> 追踪流 ---> tcp 跟踪或流动 http 流 点击后,你会看到这个 tcp流 或者 http流 所有上述请求和回复 选择不同的协议,可以查看相应协议的流量
配置 Wireshark 抓取 https 数据包 解密SSL:
Wireshark 解密 HTTPS 两种流量方法:http://cn-sec.com/archives/508478.html
Wireshark 抓包的原理是直接读取和分析网卡数据,解密 HTTPS 流量有两种方式:
方法 1
如果你拥有 HTTPS 网站的加密私钥,可以用来解密这个网站的加密流量;
方法 2:
某些浏览器支持将 TLS 会话中使用的对称密钥保存在外部文件中,Wireshark 可以利用这个文件进行解密。Firefox 和 Chrome 都支持这种方式,但 Firefox 和 Chrome 只会在系统环境变量中存在 SSLKEYLOGFILE 路径时才会生成该文件,先来加上这个环境变量( 以 Windows为例 ):
- 1、配置环境变量 SSLKEYLOGFILE 值为 C:\ssl_key\sslog.log(注意后缀名一定用 log)这样浏览器和服务器SSL协商的秘钥信息会存储到文件中。打开浏览器,访问一个HTTPS 网页,然后打开
SSLKEYLOGFILE
环境变量值的文件路径就可以看到TLS协商的随机字符串记录。 - 2、配置 Wireshark 设置文件路径。菜单栏 ---> 编辑 ---> 首选项 ---> Protocols ---> SSL( 有的版本只有 TLS ) --->
Pre-Master-Securet log filename
(预主密钥) 添加 SSLKEYLOGFILE 变量设置的路径的日志文件。 - 3、配置好后,重启浏览器,为了避免 wireshark 抓到其他数据包,可以添加过滤器条件,设置 tcp.port=443 这样就只过滤 https 的数据包。
2、Tcpdump 和 Windump
Tcpdump 官网:http://www.tcpdump.org/
Tcpdump 是一个基于命令行,工作在被动模式下的网络嗅探器。可以很好地运行在 UNIX、Linux 和 MacOS 操作系统上,可以从官网上下载它的二进制包。同时,要运行它,也需要系统中安装有 Libpcap1.0.0 这个驱动库。Tcpdump 在 Windows 系统下的版本就是 Windump 也是一个免费的基于命令行方 式的网络分析软件。在使用 Windump 之前,同样要确保系统中已经安装有 WinPcap 4.0.2 驱动库。
许多网络或安全专家,都喜欢用它来发现网络中是否存在ARP地址欺骗。可以将它捕获到的数据包先写入到一个文件当中,然后用 WireShark 等有图形界面的嗅探器读取和分析。
命令格式为:tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ][ -i 网络接口 ] [ -r 文件名] [ -s snaplen] [ -T 类型 ] [ -w 文件名 ] [表达式 ]
- -i 指定要捕捉的网络接口卡
- -r 读取已经存在的捕捉文件,
- -w 将捕捉到的数据写入到一个文件中。
- man tcpdump 或者 tcpdump --help 查看更多参数
Tcpdump 使用以下三种类型的关键字:
- (1)、表示类型的关键字,主要有 Host、Net、Port Host:指定主机的IP地址 ( 如果没有指定关键字,缺省是 Host 类型 ) Net:指定网络地址 Port:指定端口
- 表示传输方向的关键字,主要有 Src、Dst src:源IP地址 dst:目的IP地址
- (3)、表示协议的关键字,主要有 ip,arp,tcp,udp 等。
Tcpdump 的关键字还有很多,查看帮助文档来得到它们的详细说明。
关键字之间可以使用 "" 连接,以便于指定某个范围或排除某个主机等。
"" 有三个,
- "取非" 运算 not,或者用 ! 表示
- "与" 运算 and,或者用 && 表示
- "或" 运算 or ,或者用 || 表示
3、 DSniff 工具包
github 地址:https://github.com/search?q=dsniff
Kali 需要安装:apt install dsniff
Dsniff 是一个著名的综合性网络嗅探、口令嗅探工具包。Dsniff 开发者 DugSong 在1999年12月以密歇根大学 CITI 研究室( CenterforInformationTechnologyIntegration)的研究成果为基础, 开发了这个后来具有很大影响力的网络安全工具包。Dsniff 的下载网址:https://monkey.org/~dugsong/dsniff/ 。也可以从网上找到 Dsniff 早期支持的 windows 版本。
DSniff 可以使用一系列的主动攻击方法,将网络流量重新定向到网络嗅探器主机,使得网络嗅探器有机会捕获到网络中某台主机或整个网络的流量。这样就可以将 DSniff 用在交换或路由的网络环境中,以及 Cable modem 拔号上网的环境中使用。甚至当安装有 DSniff 的网络嗅探器不直接连接到目标网络当中,它依然可以通过运程的方式捕获到目标网络中的网络报文。
Dsniff 是一个工具集,主要分为四类:
- 纯粹被动地进行网络活动监视的工具,包括:dsniff、filesnarf、mailsnarf 、msgsnarf、urlsnarf、webspy;
- 针对 SSH 和 SSL 的 MITM(Man-In-The-Middle)"攻击"工具,包括 sshmitm 和 webmitm;
- 发起主动欺骗的工具,包括:arpspoof、dnsspoof、macof;
- 其它工具,包括 tcpkill、tcpnice
各个工具说明:
- :一个密码侦测工具,他能够自动分析端口上收到的某些协议的数据包,并获取相应的密码。dnisff 支持的协议有 FTP、Telnet、SMTP、HTTP、POP、poppass、NNTP、IMAP、SNMP、LDAP、Rlogin、RIP、OSPF、PPTP MS-CHAP、NFS、VRRP、YP/NIS、SOCKS、X11、CVS、IRC、AIM、ICQ、Napster、PostgreSQL、Meeting Maker、Citrix ICA、Symantec pcAnywhere、NAI Sniffer、Microsoft SMB、Oracle SQL*Net、Sybase and Microsoft SQL 等
- :嗅探网络文件系统(NFS)的流量,SMB方式传输的文件的一个副本,并选定某个文件,转储到本地当前工作目录。
- :嗅探 SMTP 和 POP 流量,并以 Berkeley 邮件格式输出 e-mail 消息。
- :嗅探聊天软件的聊天内容,包括AOL、ICQ 2000、IRC、MSN Messenger 或 Yahoo Messenger
- :嗅探 HTTP 请求报文的内容,并以CLF (Common Log Format)格式输出。
- :指定一个要嗅探的主机,如果指定主机发送HTTP请求,打开网页,webspy也会通过 netscape 浏览器在本地打开一个相同的网页。( 它能将从客户处嗅探到的URL地址,发送到攻击者的WEB浏览器中显示。并且实时更新,攻击者就可以看到你到底浏览了哪些网站 )
- : 是Dsniff自带的一个具有威胁的工具之一。首先通过dnsspoof伪造实际机器主机名将攻击目标主机的SSH连接转到本地,那么sshmitm可以截获来自主机的密钥,并获得被劫持连接中的所有信息解码,然后重新转发SSH流量到SSH服务器;
- :与 sshmitm 类似,也需要 dnsspoof 的"配合",不同的是,webmitm"劫持"的是HTTP和HTTPS会话过程,捕获SSL的加密通信;
- :启用 arp 欺骗,将自己网卡的IP地址伪装成指定 IP 地址的MAC,例如:伪装成网关,嗅探局域网的所有网络流量,进行抓包;
- :启用DNS欺骗,如果dnsspoof嗅探到局域网内有DNS请求数据包,它会分析其内容,并用伪造的DNS响应包来回复请求者。如果是 请求解析某个域名,dnsspoof会让该域名重新指向另一个IP地址(黑客所控制的主机),如果是反向IP指针解析,dnsspoof也会返回一个伪造的域名。一个非常重要的功能就是 webmitm,这种功能主要是用来捕获SSL和SSH加密了的数据。
- :使用 MAC flooding 来攻击交换机。通过不断向交换机发送包含有冒充的MAC地址的数据包,以此来溢出交换机的MAC地址表。此时,交换就会以广播的方式发送所接收到的数据包。它一般在上述嗅探软件前使用;
- :能够切断指定的TCP会话连接,主要是基于TCP的三次握手过程。其实就是一种拒绝服务攻击(DoS)。主要用来切断与合法主机的网络连接,保证嗅探工作的正常进行。它一般在上述嗅探软件前使用。
- :能够通过在添加活动的流量,降低指定的LAN上的TCP连接的速度。
- :用进行屏幕监控;
dsniff
用法: dsniff [-c] [-d] [-m] [-n] [-i interface | -p pcapfile] [-s snaplen] [-f services] [-t trigger[,...]]] [-r|-w savefile] [expression]
选项 -c 打开半双工TCP流,允许在使用 arpspoof时进行正确的嗅探操作 -d 启动调试模式; -m 使用dsniff.magic文件,通过在magic文件中定义的特征,尝试自动判断协议 -n 不把 IP 地址解析成主机名 -i interface 指定网络接口 -p pcapfile 不是处理网络上所观察到的数据包的内容,而是处理给定捕获数据包的PCAP文件。 -s snaplen 对报文的前snaplen个字节进行嗅探,而不是默认的1024字节;. -f services 以/etc/service格式从文件中加载触发器(也就是口令嗅探的服务类型); -t trigger[,...] 使用格式 port/proto=service 来加载一个以逗号界定的触发器集(e.g. 80/tcp=http). dsniff –t 21/tcp=ftp,23/tcp=telnet –m -r savefile 从保存的文件中读取会话(-w 选项 可以保存会话到文件) -w file 保存 会话 到文件中 expression 指定一个 tcpdump(8) filter expression 来让 sniff 选择要嗅探的流量. 在挂起的信号中,dsniff会将当前的触发器表转储到dsniff.services。
FILES /usr/share/dsniff/dsniff.services Default trigger table
/usr/share/dsniff/dsniff.magic Network protocol magic
参见;另请参阅 arpspoof(8), libnids(3), services(5), magic(5)
filesnarf、mailsnarf、msgsnarf、urlsnarf、webspy、webspy
filesnarf、mailsnarf、msgsnarf、urlsnarf、webspy、webspy 使用方式都 差不多。可以 使用 man 查看具体使用。
FILESNARF(8) System Manager's Manual FILESNARF(8)
NAME filesnarf - sniff files from NFS traffic
SYNOPSIS filesnarf [-i interface | -p pcapfile] [[-v] pattern [expression]]
DESCRIPTION filesnarf saves files sniffed from NFS traffic in the current working directory.
OPTIONS -i interface 指定监听接口 -p pcapfile 处理捕获的 包文件 -v "反转" 模式. 反转匹配,选中不匹配的文件. pattern 指定正则表达式 expression 指定 一个要嗅探的流量的 tcpdump(8) 过滤表达式 SEE ALSO dsniff(8), nfsd(8)
sshmitm、
webmitm 与 sshmitm 类似,都需要配合 dnsspoof 一块使用。
- webmitm 劫持的是 HTTP 和 HTTPS 会话过程
- sshmitm 捕获 SSL 的加密通信
arpspoof
arp 毒化的原理,简单的说就是伪造MAC地址与IP的对应关系,导致数据包由中间人转发出去。
中间人攻击 --- ARP毒化:http://www.2cto.com/Article/201207/144532.html
arp 毒化有双向(remote)和单向(oneway)两种方式。
- 双向方式:将对两个目标的ARP缓存都进行毒化,对两者之间的通信进行监听。一般来说,会选择使用双向欺骗的方式来获取所有的数据包进行嗅探分析。
- 单向方式:只监听从第一个目标到第二个目标的单向通信内容。
若目标主机开启了ARP防火墙怎么办?
- 直接欺骗会引发报警且无效果。这时就是单向ARP毒化大显神威的时候了。只要路由器没有对 IP 和 MAC 进行绑定,我们就可以只欺骗路由器,使从路由器发给目标主机的数据包经过中间人,完成我们的攻击。
root@kali:~# arpspoof -h Version: 2.4 用法: arpspoof [-i interface] [-c own|host|both] [-t target] [-r] host
名字 arpspoof - 在交换式网络截获包 概要 arpspoof [-i interface] [-c own|host|both] [-t target] [-r] host 描述 通过伪造 ARP 响应,重定向局域网中一个目标主机(或所有主机)上的数据包 到 局域网中的另一个主机上。这在交换式网络上嗅探流量是一个非常有效的方法 注意:内核IP转发(或一个实现相同功能的用户程序,如 fragrouter(8))必须提前打开。
选项 -i 网卡接口 指定使用的网卡接口
-c own|host|both 指定在恢复arp配置时使用的硬件地址;在清理时,可以用自己的地址和主机的地址发送数据包。 用一个假的硬件地址发送数据包可能会破坏与某些switch/ap/bridge 配置的连接, 但是它比使用自己的地址更可靠,这是arpspoof事后清理的默认方式。
-t target 指定要 ARP毒化 的主机(如果没有指定,默认局域网所有主机). 可以重复指定多个主机。 -r 毒化两个主机(主机和目标)以捕获两个方向的流量。(只在与 -t 联合使用才有效) host 指定你希望拦截数据包的主机(通常是本地网关)。
参见;另请参阅 dsniff(8), fragrouter(8)
// 使用ARP毒化,重定向受害者的流量传送给攻击者。 root@bt:~# arpspoof -i eth0 -t 192.168.1.5 192.168.1.1
// 第二个ARP毒化攻击使网关的数据重定向到攻击者的机器(流量由网关到攻击者再到受攻击者) root@bt:~# arpspoof -i eth0 -t 192.168.1.1 192.168.1.2
root@bt:~# arpspoof -i eth0 -t 192.168.1.5 192.168.1.1 root@bt:~# arpspoof -i eth0 -t 192.168.1.1 192.168.1.5
arpspoof 启用 arp 欺骗,将自己网卡的IP地址伪装成指定IP地址的MAC持续不断的发送假的ARP响应包给一台或多台主机,以 "" 其ARP缓存表。一旦成功,即可以用别的嗅探工具来接收发送到本地的数据包。
与 Ettercap 不同的是, arpspoof 并不进行真正的嗅探,它只是简单的进行ARP欺骗,本地主机 必须启动内核的 IP Forwarding功能(或者使用 fragrouter 这样的工具),否则,所有 "" 发到本地的数据包就如同进了黑洞, 正常的网络通信将无法进行, 而一旦启动了本地的 IP Forwarding,内核将自动对本地收到的目的IP却是别处的数据包进行转发,正常的通信自然可以进行。这样,就可以进行后续的工作,包括分析嗅 探得到的数据包、修改数据包中的某些信息以重新转发等等。
Ettercap 则不光进行 ARP 欺骗,它还要做后续的许多工作,包括分析嗅探得到的数据包、修改数据包中的某些信息以重新转发等等。
Linux 中缺省是禁止 IP Forwarding 的,输入下面命令,启用 IP 转发( PS: 利用 Linux 主机的路由功能 )
root@bt:~# cat /proc/sys/net/ipv4/ip_forward root@bt:~# echo 1 > /proc/sys/net/ipv4/ip_forward root@bt:~# cat /proc/sys/net/ipv4/ip_forward
或者 修改下面文件
修改 # vi /etc/sysctl.conf 修改 net.ipv4.ip_forward=1 修改后运行 #sysctl –p 命令使得内核改变立即生效;
一旦启动了本地的 IP Forwarding,内核将自动对本地收到的目的IP是别处的数据包进行转发, ( 同时向数据包的源地址发送ICMP重定向报文, 当然, 由于启用了ARP欺骗, 这个重定向报文是不起作用的)。
实现局域网欺骗、中间人攻击
在现代的局域网当中,交换式局域网是主流,广播式的局域网已经或者不在存在,以前要嗅探局域网络上传输的信息只需将网卡设置为混合模式,通过捕获数据包的软件,就可以截取。现在交换式以太网或者局域网中,交换机通过查看路由表(不严格的说法)发送信息。要想截获两台主机中传递的信息可以通过 arp 欺骗获得。
- :中间人攻击是一种“间接”的入侵攻击,这种攻击模式是通过各种技术手段将受入侵者控制的一台计算机虚拟放置在网络连接中的两台通信计算机之间,这台计算机就称为“中间人”
- :ARP协议准确的来说是ARP地址解析协议。ARP是指根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。通俗的说,DNS是域名与IP对应的协议,而ARP是IP与mac(物理地址)对应的协议,DNS常用于主机与外网机器连接时进行地址转换,而ARP多用于内网机器通信时地址的转换
- :ARP欺骗就是通过欺骗局域网内访问者PC的网关MAC地址,使访问者PC错以为攻击者更改后的MAC地址是网关的MAC,导致网络不通。此种攻击可让攻击者获取局域网上的数据包甚至可以嗅探、篡改数据包,且可让网络上特定计算机或所有计算机无法正常连线。
步骤:
- 第一步:查看IP和网关,命令: ifconfig ,route -n ( 我本机网关:192.168.1.1 )
- 第二步:利用 nmap 查看同网段下(192.168.1.0/24)的所有活跃IP,使用命令 nmap 192.169.1.0/24。确认被攻击机的IP地址。( 假设被攻击主机 IP 是 192.168.1.5 )
- 第三步:让被攻击的主机断网:arpspoof -i eth0 -t 192.168.1.5 192.168.1.1
- 第四步:断网不是我们的目的,我们的目的是实施ARP欺骗和中间人攻击。开启 IP 转发功能,linux 因为系统安全考虑,是不支持 IP 转发的,其配置文件写在 /proc/sys/net/ipv4 的ip_forward中。默认为0,修改为1 ( 命令:echo 1 > /proc/sys/net/ipv4/ip_forward ),就可以嗅探目标靶子的流量,来获取目标的重要信息。
- 欺骗成功,使用 ettercap 渗透工具来抓取账号密码,执行命令 监控 eth0 网卡的流量
dnsspoof
root@kali:~# dnsspoof -h Version: 2.4 用法: dnsspoof [-i interface] [-f hostsfile] [expression]
描述 dnsspoof启用DNS欺骗,如果dnsspoof嗅探到局域网内有DNS请求数据包, 它会分析其内容,并用伪造的DNS响应包来回复请求者。 如果是请求解析某个域名,dnsspoof会让域名重新指向另一个IP地址(黑客所控制的主机), 如果反向IP指针解析,也会返回一个伪造的域名. 在dnsspoof的命令选项中,可以指定一个主机列表文件,文件格式与/etc/hosts相同, 如果不指定该文件,dnsspoof会返回本地的IP给域名解析请求者。
选项 -i interface 指定使用的网卡 -f hostsfile 指定要欺骗的网址。如果不指定hostsfile,将返回本机的IP地址给攻击者 expression 指定一个tcpdump(8)过滤器表达式来选择要嗅探的流量。就是指定一个Tcpdump准则 的 包过滤
文件 /usr/share/dsniff/dnsspoof.hosts Sample hosts file.
参见;另请参阅 dsniff(8), hosts(5) // man 8 dsniff 或者 man 5 hosts
root@bt:#dnsspoof -i eth0 -f /usr/h22.hosts
[ interface] [ hostsfile] [expression] 这里-f 可以指定主机列表文件,文件格式与/usr/local/lib/dnsspoof.hosts相同,如果不指定该文件,dnsspoof会返回本地的 IP给域名解析请求者
这里本地主机会抢先代替DNS服务器来相应查询,前提是本地主机先回答DNS查询,如果因为 网络问题,DNS服务器先发送了应答,DNS欺骗就不能生效了
macof
macof 用来进行 MAC flooding,在本地网络中发送大量的随机 MAC 地址的数据包,可以指定源IP、目的IP、源端口、目的端口,以MAC洪水的方式来导致某些交换机 MAC 表溢出,从而丧失 "" 能力 ,对于以后收到的数据包以广播方式发送,以达到共享式嗅探的目的。注意:在进行 MAC 泛洪之前就存在于交换机 MAC 表中的条目不会被覆盖,只能等到这些条目自然老化。
NAME macof - 用随机 MAC 地址 洪泛 交换式局域网络
用法 macof [-i interface] [-s src] [-d dst] [-e tha] [-x sport] [-y dport] [-n times]
选项 -i interface 指定发送的网卡接口 -s src 指定源 IP 地址 -d dst 指定目的 IP 地址 -e tha 指定目标硬件地址 -x sport 指定 TCP 源端口 -y dport 指定 TCP 目的端口 -n times 指定发送包 的 个数
任何未指定的选项的值都是随机生成的。
参见;另请参阅 dsniff(8)
tcpkill
tcpkill 能够切断指定的 TCP 会话连接,主要是基于 TCP 的三次握手过程。 中断特定的 TCP 连接。
root@kali:~# tcpkill -h Version: 2.4 Usage: tcpkill [-i interface] [-1..9] expression
NAME tcpkill - kill TCP connections on a LAN
选项 -i interface 指定监听接口 -1...9 指定在杀死连接时使用的蛮力的程度。 为了在移动的接收窗口中找到一个RST,快速连接可能需要一个更高的数字。默认是3。 expression 指定一个tcpdump(8)过滤器表达式来选择要杀死的连接
SEE ALSO dsniff(8), tcpnice(8)
这里,当tcpkill检测到两边的TCP连接后,会同时想两边(冒充对方)发送tcp reset报文,重置连接。
tcpnice
tcpnice 能够通过在添加活动的流量,降低指定的 LAN 上的 TCP 连接的速度
[] [interface] [increment] expression 这里的-n后面可以跟1-20,代表降低的速度,1为原速,20为最低
4、 Ettercap ( kali 自带工具 )
官网:https://www.ettercap-project.org/index.html
github 地址:https://github.com/Ettercap/ettercap
ettercap 是一个高级网络嗅探软件,有人性化的图形化界面,又有丰富的命令,还可以编写过滤规则。Ettercap 能够对大多数的网络协议数据包进行解码,不论这个数据包是不是加密的。Ettercap 还拥有一些独特的方法,用来捕获主机或整个网络的流量,并对这些流量进行相应的分析。Ettercap 可以在交换机的网络环境中使用。Ettercap 的大部分特性与 DSniff 相似,可以在命令行模式下使用,也可以在图形界面上使用。
Ettercap 支持四种界面模式,分别是:Text、Curses、GTK2 、Daemonize。
- -T 参数:即 Text 界面模式,相当于命令行,通常与之配套的参数有 -q 代表安静模式,表示不会显示抓到数据包的内容。
- -C ( Curses ) 和 -G ( GTK2 ) 参数:图形化界面,带有 GUI。
- -D 参数:Daemonize 也叫做守护模式,可以理解为在后台运行。
-G 参数指定在 GTK2 接口的图形模式下使用。( 是在 kali 用户下,不是 root 用户下,执行时必须 sudo,不然会有权限问题)
在 Ettercap 使用中,还存在关于交互模式的问题,如果启动 Ettercap 的时候没有指定参数 -N 选项,那么就默认自动选择了交互模式。如果在某些情况下不知到可以做什么,只要键入 H 就可以弹出帮助画面,可看到可执行命令的消息列表。 另外 Ettercap 并不转发数据包,转发数据包的是操作系统,因此,在中间人攻击时需要启用操作系统的数据包转发功能。当然,如果只想用 Ettercap 做一个中间人,而用其他工具来嗅探数据的话,可以加入参数-o (only-mitm)实现。
ettercap --help 命令查看帮助
Ettercap 两种运行方式,UNIFIED 和 BRIDGED:
- UNIFIED 方式是以中间人方式嗅探。原理:UNIFIED方式是同时欺骗A和B,把原本要发给对方的数据包发送到第三者C上,然后由C再转发给目标。这样C就充当了一个中间人的角色。因为数据包会通过C那里,所以C可以对数据包进行分析处理,导致了原本只属于A和B的信息泄露给了C。UNIFIED方式可以完成以上欺骗,并对数据包分析。Ettercap 劫持的是A和B之间的通信,在 Ettercap 眼中,A和B的关系是对等的。
- BRIDGED方式是在双网卡情况下,嗅探两块网卡之间的数据包。原理:BRIDGED方式 有点像笔记本电脑上有两个网卡,一个有线网卡,一个无线网卡。可以将有线网卡的 internet 连接共享给无线网卡,这样笔记本就变成了一个无线 ap,无线网卡产生的所有数据流量都将传送给有线网卡。BRIDGED方式 ettercap 嗅探的就是这两块网卡之间的数据包。
一般使用 UNIFIED 方式。其运行参数为 -M(M是MITM的首字母,为中间人攻击的缩写)。当指定 -M 参数时,即中间人攻击时,有以下几种攻击方式:
- arp 毒化的中间人攻击。arp毒化的原理:简单的说,就是伪造MAC地址与IP的对应关系,导致数据包由中间人转手出去
- arp 毒化有 双向(remote)和 单向(oneway)两种方式。 双向方式将对两个目标的ARP缓存都进行毒化,对两者之间的通信进行监听。 单向方式只会监听从第一个目标到第二个目标的单向通信内容。 一般选择双向欺骗的方式来获取所有的数据包进行嗅探分析。 例如:ettercap -T -q -M arp:remote /10.0.0.2/ // 说明:对 10.0.0.2 的所有端口的通信进行嗅探,包括发出的数据包和收到的数据包。
- Port Stealing:此攻击方式适用的环境是在交换机下,且路由器中ip和mac绑定无法进行arp欺骗。其基本思想是,既然无法欺骗路由器的IP和MAC对应关系,那么就欺骗交换机的吧。这样,原本应该通过交换机某一个端口到达目标主机的数据包被传入了攻击者的端口。由于本方法只能用于交换机环境,且会产生大量的数据包,严重影响网络状况,用之前须三思。
Ettercap,它相当于ARP病毒和密码嗅探界的瑞士军刀。
-T 使用 文字 界面 -q 安静模式,减少不必要输出 -M MITM(中间人)方式,下面示例中是 中间人是ARP 如果我们的目标是网络上的所有主机,想要嗅探每个节点之间的所有传输
命令: 你应当谨慎的使用上面那段命令,因为如果把一个大网络中所有的传输都通过一台很慢的计算机的话,那么这很有可能使整个网络连接瘫痪。可以找个替罪羊,来看看 IP 地址为 192.168.1.1 的主机
命令: 如果192.168.1.1 是网关,我们应该可以看到所有的输出传输。
对于 Ettercap 的 sniffing 工作方式,可以划分为五种:
- 1)IPBASED:在基于IP地址的sniffing方式下,Ettercap将根据源IP-PORT和目的IP-PORT来捕获数据包;
- 2)MACBASED:在基于MAC地址的方式下,Ettercap将根据源MAC和目的MAC来捕获数据包(在捕获通过网关的数据包时,这种方式很有用);
- 3)ARPBASED:在基于 Arp 欺骗的方式下,Ettercap利用Arp欺骗在交换局域网内监听两个主机之间的通信(全双工);
- 4)SMARTARP:在SMARTARP方式下,Ettercap利用Arp欺骗,监听交换网上某台主机与所有已知的其他主机(存在于主机表中的主机)之间的通信(全双工);
- 5)PUBLICARP:在PUBLICARP 方式下,Ettercap利用Arp欺骗,监听交换网上某台主机与所有其它主机之间的通信(半双工)。此方式以广播方式发送Arp响应,但是如果 Ettercap已经拥有了完整的主机地址表(或在Ettercap启动时已经对LAN上的主机进行了扫描),Ettercap会自动选取 SMARTARP方式,而且Arp响应会发送给被监听主机之外的所有主机,以避免在Windows主机上出现IP地址冲突的消息。
Ettercap 目标写法:
对于 Ettercap 的常用操作,在选择目标时,Ettercap 的目标表达形式为:
依照这个规则,可以精确到特定的目标主机和端口上,MAC、IP、PORT 为三个条件,为空代表ANY,即所有。Ettercap 针对三个条件同时成立的目标进行嗅探。
示例:"//80" 表示 "" 进行嗅探。
一般 MAC 部分可以留空,因此可以只用 IP 部分来确定目标主机。
当 目标有 "" 或者 "" 时 :
- 可用 "" 来分隔不同的 C 段 IP
- 可以用 "" 表示连续的 IP
- 可以用 "" 分隔不同表达形式的 IP
示例:"10.0.0.1-5;10.0.1.33" 表示 IP地址 10.0.0.1,2,3,4,5 和 10.0.1.33。
示例:"20-25, 80, 110" 表示 端口号 20,21,22,23,24,25,80 和110。
示例:常用操作写法
arp 毒化 eth0 所在的网段,安静模式、文本显示
监听 10.0.0.1 的 ftp,ssh,telnet 信息,并保存到本地
对 192.168.1.120 进行 dns 欺骗,使用默认网卡 eth0,文本模式、安静显示
使用过滤并监听 10.0.0.2 在 80 端口的所有通信,安静模式、文本显示,保存数据到本地
控制台模式下(-T)不使用混杂模式(-p),只显示自己的通信。
只嗅探本机110端口pop3的信息。
在控制台模式下(-T),不使用 ARP 初始化(-z),不显示数据包内容(-q安静模式),显示捕捉到的用户名、密码以及其他消息。
只嗅探本机与192.168.0.11主机在端口21、22、23上的通信。
在控制台模式下(-T),加载主机列表(-j),对目标执行arp毒化中间人攻击(-M arp)
控制台下对整个局域网执行ARP毒化攻击(-M arp)。
在控制台模式下(-T),执行 ARP 双向欺骗(-M arp:remote),嗅探网关 192.168.1.1 与 部分主机 192.168.1.2-10 之间相互通信的数据包。
在控制台模式下(-T),不使用 ARP初始化(-z),使用安静模式(-q),监听所有主机110端口(pop3协议端口)。
在控制台模式下(-T),不进行ARP初始化(-z),使用安静模式(-q),监听目标10.0.0.1的21,22,23端口(FTP、SSH、TELNET)
打印输出可用插件列表。
在 eth0 网卡上用自己的 filter 嗅探 ip 为 192.168.0.11 主机在 80 端口上的所有通信,并把所有的数据包保存成文件名为 "" 的文件。
单向欺骗路由,只劫持路由发向 10.1.1.2 的数据包。
ettercap filter 的写法
一个好工具配一个好的过滤规则才是perfect!
Ettercap的过滤规则只有经过编译之后才能由-F参数载入到ettercap中使用。 编译过滤规则的命令是: etterfilter filter.ecf -o filter.ef。 即把filter.ecf文件编译成ettercap能识别的filter.ef文件。 过滤规则的语法与C类似,但只有if语句,不支持循环语句。需要注意的地方是,if与”(”之间必须要有一个空格,且大括号{}不能省略。
Ettercap提供的一些常用的函数有: search(where, what) 从字符串where中查找what,若找到则返回true regex(where, regex) 从字符串where中匹配正则表达式regex,若找到则返回true replace(what, with) 把字符串what替换成字符串with log(what, where) 把字符串what记录到where文件中 msg(message) 在屏幕上显示出字符串message exit() 退出
快速学习 etterfilter 规则写法,多去读已有的一些规则的例子,然后按照例子仿写自己的filter。
ettercap 局域网内 DNS 欺骗
:https://www.cnblogs.com/hkleak/p/5043063.html
ettercap 是什么?
在对 WEB 安全检测的时候都会用到 Cain 和 netfuke 这两款工具,功能相信用过的朋友多多少少都知道,但这两款工具是在 windows 下运行的。 而 ettercap 是在 linux 下运行的 。其实功能都是差不多的,称呼它为嗅探工具,ARP欺骗,DNS,劫持,中间人攻击等等。总之这是一款强大的安全测试工具。
DNS 简单说明
了解 DNS是什么:Domain Name System (域名系统 简称:DNS) 了解DNS欺骗是什么:攻击者(黑客)冒充域名服务器进行欺骗的一种行为 了解DNS原理原理:如果可以冒充域名服务器,然后把查询的IP地址设为攻击者的IP地址,
这样的话,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站的主页了,这就是DNS欺骗的基本原理。DNS欺骗其实并不是真的“黑掉”了对方的网站,而是冒名顶替、招摇撞骗罢了。
在 linux 下使用 arpspoof 和 dsniff 欺骗的操作如下
首先开启 linux 自带的路由转发功能 编辑 /proc/sys/net/ipv4/ip-forward 文件 echo 1 > /proc/sys/net/ipv4/ip_forward
嗅探一个主机和网关之间的所有传输,并查看它发送到网络上的双向传输的所有数据。 可以使用如下两条命令: arpspoof -t 192.168.1.1 192.168.1.2 & >/dev/null arpspoof -t 192.168.1.2 192.168.1.1 & >/dev/null
打开 dsniff 使用默认的捕获表 dsniff -c -f /usr/share/dsniff/dsniff.services (当然这里你可以自己定制需要捕获端口的规则) 具体写法可以 cat /usr/share/dsniff/dsniff.services 查看编写的规则 Dsniff找到用户名和密码后,它会将它们显示在屏幕上。 如果想要停止ARP欺骗,输入如下命令:killall arpspoof
(故事纯属虚构):
那是一个夜黑风高的夜晚,又是刮风,有事闪电的,本想在撸几盘撸啊撸,搞的我心情一点都不好,于是关掉电脑准备睡觉了,然而突然啊的一声!瞬间把我从困意中拉了回来,在仔细一听~~~ 在发现是隔壁宾馆在做爱爱,尼玛~~~搞这么大声做什么?让我怎么睡觉啊?尼玛的,决定展开一次入侵隔壁电脑。。。 准备工作: 隔壁电脑:192.168.1.12 (宾馆一般都装有还原精灵 所以电脑是裸奔(多数没装防火墙) ) //受害者机器 自带笔记本:192.168.1.11 (kali linux系统 接上宾馆自己那间房的网线) //入侵者机器 网关IP:192.168.1.1 踩点: 怎么知道隔壁的电脑IP地址? 先看自己的房间号,比如是5-11(假如表示5楼11间房),在来到自己房间看自己电脑的IP地址,一般是192.168.1.11 那么隔壁的自己出门去看门牌就知道了,(假如是5-12),那么隔壁的IP地址就是192.168.1.12 最后在ping一下 通了 说明电脑开着,不同,说明电脑关着,或者防火墙什么的。。。 这个方法比较死?当然其它方法也有,根据自己经验而定。。。 首先先打开 ettercap 的 DNS 文件进行编辑,在kali下的文件路径为/etc/ettercap/etter.dns
在对应的位置添加对应的 标识和IP地址 * 代表所有域名 后边就是你要欺骗为的IP地址,这里是当然是我自己的主机IP地址啦,然后记得保存。
再来编辑 /var/www/html/index.html 文件 改成你定义页面 这里我简单的改了下,因为后边我们要启动 apache2 也就是网页服务器 这是主页文件,说白了目的是为了DNS欺骗成功后,当受害者(隔壁宾馆两口)访问域名访问网站后,打开的页面就是我们这里的这个主页文件里边的内容。。。。编辑好了---记得保存
启动 apache 服务:
执行命令 来进入 ettercap 的图形界面
可以看到列出了所有机器。选择网关进行添加,这里的网关是192.18.1.1。 点击 Add to target 1
选择受害者的 IP地址 (隔壁那位妹子的。。。) 点击 Add to target 2
开始 arp 毒化 配置:mitm ---> arp poisoning
开始 dns 毒化配置:plugins ---> mangge the plugins
点击 strat ---> start sniffing,就开始 DNS 欺骗了。隔壁的妹子完事后,准备上电脑去逛逛QQ空间 不管打开任何网站页面一直是这样的。。。
ettercap 进行 ARP 欺骗
进入 ettercap 的图形化界面 root@afei:~# ettercap -G #进入ettercap图形化界面
driftnet 工具可以监控指定网卡的流量,直接显示出流量中的图片,例如微信朋友圈和给好友发送的图像,据说有同学用来嗅探MM的照片噢!方法并不是100%成功,稍微测试好玩,还是不错的。
ettercap 实现 DNS劫持 和 arp欺骗
攻击机:192.168.40.128 钓鱼网站:192.168.40.128 目标机:192.168.40.129
修改配置文件:vim /etc/ettercap/etter.dns
配置钓鱼网站,打开 apache:
打开ettercap,发动攻击
网关添加到 target,目标机添加到 target2( target 里的内容也可以对换)
开始 arp 欺骗
开始 DNS 劫持
然后目标机随便打开一个网站
显示 apache 的首页,则表示成功了,当然也可以自行修改 web 服务器里要显示的内容。不过要注意的是,如果地址里输入的是https,则无法显示网页。
ICMP 欺骗
icmp 欺骗:icmp欺骗即基于重定向(redirect)的路由欺骗技术。其基本原理是欺骗其他的主机,将自身伪装为最近的路由,因此其他主机会将数据包发送进来,然后作为中间人的攻击者再重新将其转发到真正的路由器上。于是我们便可以对这些数据包进行监听。当然,icmp欺骗不适用于交换机的环境,若本机在交换机的环境下则最好选择arp毒化的方式来进行攻击。icmp欺骗方式的参数是真实路由器的MAC和IP,参数形式为(MAC/IP)。
示例:ettercap -M icmp:00:11:22:33:44:55/192.168.0.1
示例:ettercap -i eth0 -T -M icmp:00:11:22:33:44:55/10.0.0.1(真实网关的MAC/IP)
DHCP 欺骗
DHCP spoofing:DHCP 欺骗的原理是将攻击者的本机伪装成DHCP服务器,代替真实的DHCP服务器给新接入网络的受害主机动态分配IP。这样的缺点是可能会与真实的DHCP服务器重复分配IP造成冲突,而且只能针对新接入网段的主机,难以影响到之前的主机。DHCP spoofing 方式的参数是可以分配出去的IP地址池、子网掩码和DNS,参数形式为(ip_pool/netmask/dns)。
示例:ettercap -i eth0 -T -M dhcp:192.168.0.30,35,50-60/255.255.255.0/192.168.0.1 说明:将分配 192.168.0.30,35,50-60 之中的地址,子网掩码为255.255.255.0,DNS服务器为192.168.0.1。
Port Stealing ( Port 欺骗 )
此方式适用的环境为交换机下,且路由器中 IP 和 MAC 绑定从而使 ARP 欺骗无效。其基本思想是,既然无法欺骗路由器的IP和MAC对应关系,那么就欺骗交换机,使原本应该通过交换机端口到达目标主机的数据包被传入了攻击者的端口。需要指出的是,由于这个方法只用于交换机环境,且会产生大量的数据包,可能会严重影响网络状况。
示例:ettercap -i eth0 -T -M port /1.1.1.1/ /1.1.1.2/
Ndp 欺骗
ettercap -i eth0 -T -M ndp //fe80::260d:afff:fe6e:f378/ //2001:db8::2:1/
5、bettercap
官网:https://www.bettercap.org/ github 地址:https://github.com/bettercap/bettercap 文档:https://www.bettercap.org/modules/
提到中间人攻击,最知名的莫过于 Ettercap,但是由于 Ettercap 过滤器太复杂,扩展开发需要掌握C/C++语言,同时在大型网络环境中 Ettercap 的主机发现以及欺骗功能效果较差,于是就诞生了 Bettercap。
kali 安装 命令:
工具包含以下主要特性:
- 1、全双工和半双工的 ARP 欺骗。
- 2、真正的 ICMP 双向欺骗。
- 3、可配置的 DNS 欺骗。
- 4、实时和完全自动化地主机发现。
- 5、实时获取通信协议中的安全凭证,包括 HTTP(s)中的 Post 数据,Basic 和 Digest 认证, FTP, IRC, POP, IMAP, SMTP, NTLM (HTTP, SMB, LDAP, etc) 以及更多。
- 6、完全可定制的网络嗅探器。
- 7、模块化的 HTTP 和 HTTPS 透明代理,支持将用户以及内置的插件注入到目标的 HTML 代码,JS 或 CSS 文件,以及 URLs 中。
- 8、使用 HSTS bypass 技术拆封 SSL。
- 9、内置 HTTP 服务器。
使用 bettercap
# 开启 bettercap,默认是开启的 eth0 网卡
root@kali:~# bettercap // 开启其他网卡,比如无线网卡 wlan0,可以 bettercap -iface wlan0
执行命令 bettercap 后就会列出局域网中存活的主机。( 如果没有,看下主机发现模块有没有打开,如果没有执行打开命令:net.recon on )
帮助,在启用 Bettercap 时可以通过 -h 获取帮助信息。
输入或者 : 可以查看 bettercap 的各个模块(绿色表示启用,红色表示未启用)
: 可以查看模块的具体参数和作用。比如:help net.recon
常用命令
help 模块名称 显示指定模块的帮助 active: 显示当前运行中的模块的信息 quit : 结束会话并退出 sleep 秒数: 休眠指定的秒数(和shell中的sleep一样) get 变量: 获取变量的值 set 变量值 : 设置变量的值。有些模块有自定义变量, 比如可用net.sniff.output变量指定嗅探器的输出的保存路径 read 变量提示: 显示提示来让用户输入,输入内容会被储存在变量中 clear: 清屏 include CAPLET: 在当前会话读取并运行这个caplet !命令 : 运行相应的shell命令并显示输出 alias MAC地址 别名 给MAC地址设置一个别名
常用模块
api.rest # RESTful API模块 ble.recon # 低功耗蓝牙设备发现模块 dhcp6.spoof # dhcp6欺骗模块(伪造DHCP数据包篡改客户端的DNS服务器,因此需要与dns.spoof一并启用) events.stream # 串流输出模块(就是不断地在终端界面刷出程序的输出,例如arp截获的信息) wifi # wifi模块,有deauth攻击(wifi杀手)和创建软ap的功能 net.recon # 该模块负责定期读取系统 ARP 表以检测局域网内存活的主机 net.probe # 探测局域网内存活主机 net.sniff # 该模块是一个网络数据包嗅探器 arp.spoof # arp欺骗模块。使用ARP数据包不断欺骗网络上的选定主机,以执行中间人攻击 dns.spoof # DNS欺骗模块。使用欺骗响应回复 DNS 查询 http.proxy # 可以使用 javascript 模块编写脚本的全功能 HTTP 透明代理。如果与一个一起使用欺骗者,所有 HTTP 流量都将重定向到它,它会根据需要自动处理端口重定向 等等还有其他的
实战应用 --- ARP 欺骗、DNS 欺骗、注入脚本
:https://blog.csdn.net/whoim_i/article/details/104388168