dsniff是纯粹被动的进行网络活动监视的工具,包括: dsniff、filesnarf、mailsnarf 、msgsnarf、urlsnarf、webspy针对SSH和SSL的MITM ( Man-In-The-Middle)“攻击”工具,包括sshmitm和webmitm发起主动欺骗的工具,包括:arpspoof、 dnsspoof、 macof其它工具,包括tcpkill、 tcpnice
Dsniff包中的工具基本上可以分为四类:
- 纯粹被动地进行网络活动监视的工具,包括:dsniff、filesnarf、mailsnarf、msgsnarf、urlsnarf、webspy、sshow。
- 针对SSH和SSL的MITM“攻击”工具,包括sshmitm和webmitm。
- 发起主动欺骗的工具,包括:arpspoof、dnsspoof、macof。
- 其它工具,包括tcpkill、tcpnice。
用法:
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)
复制代码
arpspoof arp毒化的原理,简单的说就是伪造MAC地址与IP的对应关系,导致数据包由中间人转发出去,arp 毒化有双向(remote)和单向(oneway)两种方式。双向方式将对两个目标的ARP缓存都进行毒化,对两者之间的通信进行监听。单向方式只会监听从第一个目标到第二个目标的单向通信内容。一般来说,我们会选择使用双向欺骗的方式来获取所有的数据包进行嗅探分析。若目标主机开启了ARP防火墙怎么办?直接欺骗会引发报警且无效果。这时就是单向ARP毒化大显神威的时候了。只要路由器没有对IP和MAC进行绑定,我们就可以只欺骗路由器,使从路由器发给目标主机的数据包经过中间人,完成我们的攻击。
root@kali:~# arpspoof -h
Version: 2.4
Usage: arpspoof [-i interface] [-c own|host|both] [-t target] [-r] host
名字
arpspoof - 在交换式网络截获包
概要
arpspoof [-i interface] [-c own|host|both] [-t target] [-r] host
描述
arpspoof 通过伪造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
官网:http://www.ettercap-project.org Ettercap简要原理介绍以及使用说明:http://www.2cto.com/article/201301/183322.html Ettercap使用记录之一 、二、三:http://www.cnblogs.com/lsbs/p/3842679.html man ettercap:https://linux.die.net/man/8/ettercap
用法: ettercap [选项] [目标1] [目标2]
目标写法:(可以查看 man ettercap 获取更详细信息)
目标写法格式是: MAC/IPs/PORTs 。依照这个规则,我们把目标可以精确到特定的主机和端口上。MAC、IP、和PORT为三个条件,为空代表ANY。
"//80"即表示对任意MAC、任意IP上的80端口进行嗅探。一般来说,MAC部分留空,除非你愿意去手动输入那一长串的MAC地址。因此,我们可以只用IP部分来确定目标主机。
注意:如果 IPv6 启用,目标是 MAC/IPs/IPv6/PORTs 这种形式。 即 mac地址,ip地址,端口号中间用 "/" 符号隔开,留空不写表示 “ANY”,即所有。
当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
例如:
/192.168.1.1/ 表示 192.168.1.1 的所有端口号
aa:bb:cc:dd:ee:ff//80 表示 aa:bb:cc:dd:ee:ff 的80端口.
其中多个mac地址用英文符号分号 ';' 隔开。
多个ip地址和端口号可以用符号 '-' 表示连续 和 英文符号分号 ';' 隔开;
e.g.
"10.0.0.1-5;10.0.1.33" 表示 10.0.0.1, 2, 3, 4, 5 和 10.0.1.33
"20-25,80,110" 表示 20, 21, 22, 23, 24, 25, 80 和 110
/192.168.1.100-120;192.168.2.130/ 表示 /192.168.1.100,101,102,103,~~120;192.168.12.130/
这两个目标是为了过滤从一个到另一个之间的流量,反之亦然(因为连接是双向的)。
"//80" 表示任意MAC地址,任意 IP ,但是端口是80 的目标。
"/10.0.0.1/" 表示任意 MAC地址,IP是10.0.0.1,任意端口 的 目标
"//" 表示 "子网中所有主机"。
注意:
可以在命令行用 -R 选项 反向 匹配 目标. So if you want to sniff
如果要嗅探除了10.0.0.1目标的所有进出流量。可以这样写:"./ettercap -R /10.0.0.1/"
注意:
目标也就是对局域网初始扫描扫描的主机。你可以通过netmask来限制只扫描网络中的一部分主机。
结果是扫描两部分目标后后并的结果。还记得没有指定目标就意味着“没有目标”,但是指定“//”意味着“子网中的所有主机”。
嗅探 和 攻击 选项:
-M, --mitm 中间人攻击,即两台终端间进行欺骗。(后面跟的参数可以参看 man ettercap)
-o, --only-mitm 不嗅探,只执行中间人攻击
-b, --broadcast 嗅探广播数据包
-B, --bridge 使用桥接嗅探 (需要2个网络接口)。即 双网卡之间进行欺骗
-p, --nopromisc 不把网络接口设置成混杂模式
-S, --nosslmitm 不伪造SSL证书。即不使用ssl中间人攻击
-u, --unoffensive 不转发数据包
-r, --read 从 pcapfile 读取数据
-f, --pcapfilter set the pcap filter
-R, --reversed 反转目标匹配。(即 匹配所有和目标不匹配的)
-t, --proto 设置要嗅探的协议(默认嗅探所有)
--certificate ssl中间人攻击使用指定的 证书文件
--private-key ssl中间人攻击使用指定的 私钥文件
运行界面类型:
-T, --text 文本模式显示
-q, --quiet 安静模式,不显示嗅探数据
-s, --script 加载脚本
-C, --curses curses-UI模式
-D, --daemon 守护模式(后台模式)(no GUI)
-G, --gtk GTK-UI模式
日志记录选项:
-w, --write 把嗅探到的数据写入到 pcapfile
-L, --log 把所有数据包保存日志文件中
-l, --log-info 仅仅记录被动信息到这个日志文件中
-m, --log-msg 将所有的消息记录到这个日志中。
-c, --compress 使用gzip压缩日志文件
可视化选项:
-d, --dns 把IP地址解析成主机名
-V, --visual 显示方式
-e, --regex 使用一个正则表达式
-E, --ext-headers 为每个pck打印扩展标题
-Q, --superquiet 超级安静模式,啥信息都不显示,只保存
LUA脚本 选项:
--lua-script ,[,...] 使用逗号分割lua脚本
--lua-args n1=v1,[n2=v2,...] 使用逗号分割传给lua脚本的参数
通用基本选项:
-i, --iface 指定网络接口
-I, --liface 显示所有网络接口
-Y, --secondary 后备网卡
-n, --netmask 在网络接口上强制使用这个 网络掩码
-A, --address ip地址,针对一网卡多ip的情况
-P, --plugin 载入插件
-F, --filter 载入过滤器文件 (content filter)
-z, --silent 不进行arp毒化和主机扫描
-6, --ip6scan 在链路上发送 ICMPv6 探测和发现 IPv6 节点
-j, --load-hosts 从文件中载入主机列表
-k, --save-hosts 保存主机列表到文件中
-W, --wifi-key 载入 WIFI 密码(wep或wpa)
-a, --config 载入并使用一个非默认配置文件
标准选项:
-v, --version 打印版本信息并退出
-h, --help 显示帮助信息
复制代码
bettercap
bettercap 官网 DOC:https://www.bettercap.org/ Bettercap 使用指南:http://xiaix.me/bettercap-shi-yong-zhi-nan/ 完整,模块化,轻量级,易扩展的MITM框架 – bettercap:http://www.freebuf.com/sectool/73287.html
_ _ _
| |__ ___| |_| |_ ___ _ __ ___ __ _ _ __
| '_ \ / _ \ __| __/ _ \ '__/ __/ _` | '_ \
| |_) | __/ |_| || __/ | | (_| (_| | |_) |
|_.__/ \___|\__|\__\___|_| \___\__,_| .__/
|_| v1.6.1b
http://bettercap.org/
更多示例和帮助文档 https://bettercap.org/docs/
用法: bettercap [options]
主要选项:
-I, --interface IFACE 网卡接口名 - 默认: eth0
--use-mac ADDRESS 执行攻击前指定网卡的 MAC 地址.
--random-mac 执行攻击前使用随机的 MAC 地址.
-G, --gateway ADDRESS 手动指定网关地址。如果不指定,则使用当前的网关地址
-T, --target ADDRESS1,ADDRESS2 目标 IP 地址,如果不指定,则目标就是所有的子网地址。
--ignore ADDRESS1,ADDRESS2 要忽略的 IP 地址。
--no-discovery 不要主动搜索主机,只使用当前的ARP缓存,默认为false。
--no-target-nbns 禁用目标NBNS主机名解析。
--packet-throttle NUMBER 秒数(可以是一个十进制数)在每个数据包之间等待发送的时间。
--check-updates 将检查是否有更新可用,然后退出。
-R, --rainbows 彩虹的输出,因为这是一个非常有用的东西(requires the "lolize" gem to be installed)。
-h, --help 显示可用的选项。
日志选项:
-O, --log LOG_FILE 将所有消息记录到一个文件中,如果没有指定日志消息将只会打印到shell中。
--log-timestamp 在每一行日志中启用时间戳,默认禁用
-D, --debug 启用调试日志记录。
--silent 废弃所有不是错误或警告的信息,默认为false.即只记录错误和警告日志。
欺骗选项:
-S, --spoofer NAME 使用欺骗模块。 可用的模块: NONE, ICMP, ARP, NDP 。 默认: IPv4 是 ARP, IPv6 是 NDP.
--no-spoofing 禁用欺骗。 等价于 --spoofer NONE.
--full-duplex 启用双工 MITM。这将使 bettercap 在 目标 和 路由器 之间进行双向中间人攻击
--kill 这个 开关 使 目标连接 被杀死,而不是转发数据包.
嗅探选项:
-X, --sniffer 启用 嗅探.
-L, --local Parse packets coming from/to the address of this computer ( 注意: -X 必须设置 ), 默认false.
--sniffer-source FILE 载入 捕获的包 PCAP 文件( will enable sniffer ).
--sniffer-output FILE 保存 捕获的包 PCAP 到文件中 ( will enable sniffer ).
--sniffer-filter EXPRESSION Configure the sniffer to use this BPF filter ( will enable sniffer ).
-P, --parsers PARSERS Comma separated list of packet parsers to enable, '*' for all ( NOTE: Will set -X to true ), available: POST, PGSQL, IRC, MPD, REDIS, URL, WHATSAPP, SNMP, COOKIE, DICT, MYSQL, TEAMVIEWER, MAIL, SNPP, HTTPS, HTTPAUTH, NTLMSS, FTP, DHCP, RLOGIN, NNTP - default: *
--disable-parsers PARSERS Comma separated list of packet parsers to disable ( NOTE: Will set -X to true )
--custom-parser EXPRESSION Use a custom regular expression in order to capture and show sniffed data ( NOTE: Will set -X to true ).
代理选项:
TCP:
--tcp-proxy 启用 TCP 代理 ( requires other --tcp-proxy-* options to be specified ).
--tcp-proxy-module MODULE Ruby TCP proxy module to load.
--tcp-proxy-port PORT Set local TCP proxy port, default to 2222 .
--tcp-proxy-upstream ADDRESS:PORT
Set TCP proxy upstream server address and port.
--tcp-proxy-upstream-address ADDRESS
Set TCP proxy upstream server address.
--tcp-proxy-upstream-port PORT
Set TCP proxy upstream server port.
UDP:
--udp-proxy 启用 UDP 代理 ( requires other --udp-proxy-* options to be specified ).
--udp-proxy-module MODULE Ruby UDP proxy module to load.
--udp-proxy-port PORT Set local UDP proxy port, default to 3333 .
--udp-proxy-upstream ADDRESS:PORT
Set UDP proxy upstream server address and port.
--udp-proxy-upstream-address ADDRESS
Set UDP proxy upstream server address.
--udp-proxy-upstream-port PORT
Set UDP proxy upstream server port.
HTTP:
--proxy Enable HTTP proxy and redirects all HTTP requests to it, default to false.
--proxy-port PORT Set HTTP proxy port, default to 8080.
--allow-local-connections Allow direct connections to the proxy instance, default to false.
--no-sslstrip Disable SSLStrip.
--log-http-response Log HTTP responses.
--no-http-logs Suppress HTTP requests and responses logs.
--proxy-module MODULE Ruby proxy module to load, either a custom file or one of the following: injectcss, injectjs, redirect, injecthtml.
--http-ports PORT1,PORT2 Comma separated list of HTTP ports to redirect to the proxy, default to 80.
--proxy-upstream-address ADDRESS
If set, only requests coming from this server address will be redirected to the HTTP/HTTPS proxies.
HTTPS:
--proxy-https Enable HTTPS proxy and redirects all HTTPS requests to it, default to false.
--proxy-https-port PORT Set HTTPS proxy port, default to 8083.
--proxy-pem FILE Use a custom PEM CA certificate file for the HTTPS proxy, default to /root/.bettercap/bettercap-ca.pem .
--https-ports PORT1,PORT2 Comma separated list of HTTPS ports to redirect to the proxy, default to 443.
CUSTOM:
--custom-proxy ADDRESS Use a custom HTTP upstream proxy instead of the builtin one.
--custom-proxy-port PORT Specify a port for the custom HTTP upstream proxy, default to 8080.
--custom-https-proxy ADDRESS Use a custom HTTPS upstream proxy instead of the builtin one.
--custom-https-proxy-port PORT
Specify a port for the custom HTTPS upstream proxy, default to 8083.
--custom-redirection RULE Apply a custom port redirection, the format of the rule is PROTOCOL ORIGINAL_PORT NEW_PORT. For instance TCP 21 2100 will redirect all TCP traffic going to port 21, to port 2100.
服务器选项:
--httpd Enable HTTP server, default to false.
--httpd-port PORT Set HTTP server port, default to 8081.
--httpd-path PATH Set HTTP server path, default to ./ .
--dns FILE Enable DNS server and use this file as a hosts resolution table.
--dns-port PORT Set DNS server port, default to 5300.
复制代码