Ettercap-多功能交换局域网截包工具sniffer的发展历史和使用
- 时间:2015年04月02日 15:14:24 来源:魔法猪系统重装大师官网 人气:10764
Ettercap最初设计为交换网上的sniffer,但是随着发展,它获得了越来越多的功能,成为一款有效的、灵活的中介攻击工具。它支持主动及被动的协议解析并包含了许多网络和主机特性(如OS指纹等)分析。
Ettercap有5种sniffing工作方式:
1、IPBASED
在基于IP地址的sniffing方式下,Ettercap将根据源IP-PORT和目的IP-PORT来捕获数据包。
2、MACBASED
在基于MAC地址的方式下,Ettercap将根据源MAC和目的MAC来捕获数据包(在捕获通过网关的数据包时,这种方式很有用)
3、ARPBASED
在基于ARP欺骗的方式下,Ettercap利用ARP欺骗在交换局域网内监听两个主机之间的通信(全双工)。
4、SMARTARP
在SMARTARP方式下,Ettercap利用ARP欺骗,监听交换网上某台主机与所有已知的其他主机(存在于主机表中的主机)之间的通信(全双工)。
5、PUBLICARP
在PUBLICARP方式下,Ettercap利用ARP欺骗,监听交换网上某台主机与所有其它主机之间的通信(半双工)。此方式以广播方式发送ARP响应,但是如果Ettercap已经拥有了完整的主机地址表(或在Ettercap启动时已经对LAN上的主机进行了扫描),Ettercap会自动选取SMARTARP方式,而且ARP响应会发送给被监听主机之外的所有主机,以避免在Win2K上出现IP地址冲突的消息。
Ettercap中最常用的一些功能包括:
1、在已有连接中注入数据:你可以在维持原有连接不变的基础上向服务器或客户端注入数据,以达到模拟命令或响应的目的。
2、SSH1支持:你可以捕获SSH1连接上的User和PASS信息,甚至其他数据。Ettercap是第一个在全双工的条件下监听SSH连接的软件。
3、HTTPS支持:你可以监听http SSL连接上加密数据,甚至通过PROXY的连接。
4、监听通过GRE通道的远程通信:你可以通过监听来自远程cisco路由器的GRE通道的数据流,并对它进行中间人攻击。
5、Plug-in支持:你可以通过Ettercap的API创建自己的Plug-in。
6、口令收集:你可以收集以下协议的口令信息,TELNET、FTP、POP、RLOGIN、SSH1、ICQ、SMB、MySQL、HTTP、NNTP、X11、NAPSTER、IRC、RIP、BGP、SOCK5、IMAP4、VNC、LDAP、NFS、SNMP、HALFLIFE、QUAKE3、MSNYMSG(不久还会有新的协议获得支持)。
7、数据包过滤和丢弃:你可以建立一个查找特定字符串(甚至包括十六近制数)的过滤链,根据这个过滤链对TCP/UDP数据包进行过滤并用自己的数据替换这些数据包,或丢弃整个数据包。
8、被动的OS指纹提取:你可以被动地(不必主动发送数据包)获取局域网上计算机系统的详细信息,包括操作系统版本、运行的服务、打开的端口、IP地址、MAC地址和网卡的生产厂家等信息。
9、OS指纹:你可以提取被控主机的OS指纹以及它的网卡信息(利用NMAP Fyodor数据库)。
10、杀死一个连接:杀死当前连接表中的连接,甚至所有连接。
11、数据包生产:你可以创建和发送伪造的数据包。允许你伪造从以太报头到应用层的所有信息。
12、把捕获的数据流绑定到一个本地端口:你可以通过一个客户端软件连接到该端口上,进行进一步的协议解码或向其中注入数据(仅适用于基于 ARP的方式)。
Ettercap的优点在于:
1、它不需要libpcap、libnet等常用库的支持。
2、基于ARP欺骗的sniffing不需要把执行ettercap的主机的网卡设置为全收方式。
3、支持后台执行。
是不是很酷呀?!
Ettercap的选项说明:
<1> 监听方式:
-a,--arpsniff
基于ARP的sniffing。
指定监听交换网的方式,如果你想要采用中间人技术进行攻击,必须选用这个选项。如果这个参数与静音方式(-z选项)连用,你必须为ARPBASED方式指定两对IP-MAC地址(全双工),或者为PUBLICARP方式指定一个IP-MAC地址(半双工)。在PUBLICARP方式下,ARP响应是以广播方式发送的,但是,如果Ettercap拥有了完整的主机表(在启动时对局域网进行了扫描),Etercap会自动选择SMARTARP方式,ARP响应会发送给处被控主机以外的所有主机,并建立一个哈希表,以便以后在全双工条件下的中间人攻击中可以将数据包从监听主机发送给以这种方式截获的客户。
注释:如果你采用 SMARTARP方式的ARP欺骗,要在配置文件中设置网关的IP地址(GWIP选项),并通过-e选项加载这个文件。否则这个客户将无法连接到远程主机。需要进行包替换或包丢弃的数据包过滤功能仅仅可以在ARPBASED方式下使用,因为为了保持连接必须调整数据包的TCP序列号。
-s,--sniff
基于IP的监听。
这是最早的监听方式。它适用与HUB环境,但是在交换网下就没有作用了。你可以仅仅指定源或目的IP地址,可以指定也可以不指定端口,或者干脆什么也不指定,这样意味着监听网上的所有主机。可以用“ANY”来表示IP地址,它的意思是来自或去往每一个主机。
-m,-macsniff
基于MAC的监听
适用于监听远程的TCP通信。在HUB环境下,如果你想要监听通过网关的连接,仅仅指定欲监视主机的IP和网关的IP是不行的,因为数据包是从外部主机发送的,而不是从网关发送的,所以你不能采取指定IP地址的方法。为了达到监视内外通信的目的,你只要指定被监视主机的MAC地址和网关的MAC地址,这样就可以监视被监听主机的所有Internet通信。
<2> 脱机sniffing:
-T,--readpcapfile
脱机sniffing。
如果使能了这个参数,Ettercap将监听一个pcap兼容文件中存储的网络数据包,而不是直接监听网络上的数据包。如果你有tcpdump或etereal转储的数据文件,并想对这些文件进行分析的时候,这个选项非常合适。
-Y,--writepcapfile
把数据包转储到一个pcap格式的文件中。
如果你必须要在一个交换的局域网上使用主动sniffing(通过ARP欺骗)方式监听,但是又希望利用tcpdump或etereal对截获的数据包进行分析,可以选用这个选项。你可以利用这个选项把监听到的数据包转储在一个文件中,然后加载到适当的应用程序中进行分析。
<3> 通用选项
-N,--simple
非交互方式。
如果你希望从一个脚本提交Ettercap,或者你已经了解一些目标信息,或者你想要在后台提交Ettercap,让它收集数据或口令信息(与-quite选项连用)的时候,可以采用这个选项。在这种工作方式下,Ettercap的某些功能无法实现,如字符注入等需要交互式处理的功能。但其他功能仍得到全面支持,如过滤功能。所以可以让Ettercap对两个主机进行ARP欺骗(一台被监视主机和它的网关),并过滤它的所有在80端口的连接,并用一些字符串进行替换,那么它到Internet的所有通信都会按照你的要求而改变。
-z,--silent
以静音方式启动(在启动时没有ARP风暴)。
如果你希望以非攻击方式启动Ettercap(某些NIDS检测到过多的ARP请求时会产生报警信息)。若要选用这个选项,你必须了解有关目标系统的所有必要的信息。例如,如果你要求欺骗两台主机,你需要知道这两台主机的IP地址和MAC地址。如果你选择了IP监听或MAC监听,会自动选择这个选项,因为你不需要知道局域网上的主机列表。如果你想要了解全部主机信息,使用“ettercao -Nl”选项,需要注意的是,这是带有攻击性的方式。
-O,--passive
以被动方式收集信息。
这种方式不会向网上发送任何数据包,它会将网卡置于全收方式,并查看流经的数据包。它将分析每一个需关注的数据包(SYN和SYN + ACK),并利用这些信息建立完整的局域网主机映射图。所收集的信息包括:主机的IP和MAC地址、网卡生产厂家、操作系统类型(被动OS指纹)和运行的服务等。在这个列表中还会包含其他一些信息,如:“GW”,如果该主机是一个网关的话,“NL”,如果这个IP不属于本网段,以及“RT”,如果该主机发挥了路由器的功能。如果你需要通过被动方式建立一个完整的主机列表的时候,可以选择这个选项。当你对所收集的信息感到满意的时候,可以通过按下“C”键,把收集的信息转换为主机列表,然后按照通常的方式工作。在下一节中将解释在sample方式下,本选项的作用。
-b,--broadping
在启动时利用广播ping,而不是ARP风暴来获得网络主机信息。
这种方法的可靠性差,准确性也低。有些主机不会响应广播ping(如windows),所在这种方式下,这些主机是不可见的。如果你想要扫描局域网上的Linux主机,这个选项是非常有用的。通常你可以把这个选项--list选项连用以便获得主机列表“ettercap -Nlb”
-D,--delay
如果你选择了ARP欺骗方式,可以利用这个选项来控制ARP响应之间的延迟秒数。如果你希望这种欺骗数据流不要过于集中,这个选项是很有帮助的。在大多数OS中,缺省的arp缓存有效时间间隔超过一分钟(在FreeBSD系统中为1200秒)。缺省的延迟为30秒。
-Z,--stormdelay
指定在arp风暴开始后arp请求之间的延迟微秒数。如果你希望扫描不要过于集中可以使用这个选项。许多IDS 对于过于大量的arp请求会产生报警信息,但是如果你用低一些的速率发送arp数据包,IDS将不会报告任何异常事件。缺省的延迟时间为1500微秒。
-S,--spoof
如果你想欺骗IDS,可以利用一个伪造的IP来进行局域网arp扫描。但是我们不能伪造源MAC地址,因为良好配置的交换机会阻断你的请求包。
-H,--hosts
指定在启动是仅扫描这些主机。
如果你希望仅对某些IP进行arp扫描的时候,可以选用这个选项。这样,你既可以从arp扫描中获得好处,又可以尽量保持低攻击性。甚至在你希望采用PUBLIC ARP方式,但又想仅仅欺骗某几个主机的时候,这个选项也是很有用的。由于在拥有主机列表的情况下PUBLIC ARP方式会自动转换为SMARTARP方式,只有这些主机被欺骗,可以保持其他主机的arp缓存不受影响。IP地址表的表示法为:点分制表示的IP地址,地址之间用分号分隔(在它们之间没有空格),还可以用中横线表示一个IP地址范围或一个IP地址表(使用逗号)。
例:
192.168.0.2-25 :从2到25
192.168.0.1,3,5 :主机1、3和5。
192.168.0.-3.1-10;192.168.4,5,7 :将要在子网192.168.0,192.168.1,192.168.2,192.168.3中扫描主机1到10,以及在子网192.168.4中扫描主机5和7。
-d,--dontresolve
在启动时不解决IP。
如果你在启动程序时遭遇疯狂的“Resolving n hostnames…”消息时,这个选项会有所帮助。这种情况是由于你的网络中的DNS非常慢而造成的。
-I,--iface
用于所有操作所针对的网络接口。
你甚至可以指定一个网络别名,以便扫描与你的当前IP不同的子网。
-n,--netmask
用于扫描局域网络的网络掩码(以点分制表示)。
缺省的网络掩码为当前ifconfig中定义的掩码。但是,如果你的掩码为,比如255.255.0.0,那么如果你要在启动时进行arp扫描的话,鼓励你另外指定一个限制更强的掩码。
-e,--etterconf
使用配置文件,而不是命令行参数。
在软件的tar包中有一个etter.conf文件,其中包含一些配置范例,参考这些范例来了解如何编写配置文件,在这些例子中给出了所有的指导信息。通过配置文件,你可以选择性地禁止某个协议分析或把它转移到另一个端口。命令行选项和配置文件可以非常灵活地混合使用,需要记住的是配置文件中的选项压倒命令行选项,所以,如果在etter.conf指定了IFACE:eth0,并且你在启动程序的时候指定了“ettercap -i eth1 -e etter.conf”,那么最终的选择结果是eth0。
注意:“-e etter.conf”选项必须在所有选项的后面出现,也就是说它必须是最后一个选项。
-g,--linktype
这个标志有两个补充功能,因此要注意它。
如果这个标志用于交互式方式,它不检查局域网的类型。另一方面,如果与命令行方式(-N)连用,它要对局域网进行检查,以了解它是否是一个交换网。有时,如果在局域网内只有两台主机,这种发现方法有可能失败。
-j,--loadhosts
用于从指定的文件中加载主机表,该文件是通过-k选项创建的。
-k,--savehosts
把主机列表保存到文件中。
当目标网络中有很多主机,并且你不希望在每一次启动的时候都做一次arp风暴的时候,这个选项是很有帮助的。你只要指定这个选项,并把列表转储到一个文件中。然后加载这个利用-j 选项从文件中加载这些信息。文件名的形式为:“netaddress_neymask.etl”
-v,--version
检查最新的ettercap版本。
所有的操作都在你的控制之下。每一个步骤都需要用户确认。利用这个选项ettercap将连接到http://ettercap.sourceforge.net:80 web站点,并请求/latest.php,然后分析查询结果并与你的当前版本进行比较。如果有一个更新的版本可用,ettercap将询问你是否要需要wget(必须在路径中)。如果你想要对所有的问题自动回答yes,增加选项-y。
-h,--help
在屏幕上显示帮助信息,对每一个选项都有一个简短的描述。
<4> 静音方式选项(仅可以和-N选项连用)
-t,-proto
仅监听协议PROTO的数据包(缺省为TCP+UDP)。
这个选项仅在simple方式下有用,如果你以交互式方式启动ettercap,TCP和UDP数据包都将被监听。PROTO可以是tcp或udp或all。
-J,--onlypoison
这个选项使ettercap不监听任何数据流,但仅仅对目标进行欺骗。如果你需要利用ettercap进行欺骗,而用其他的软件tcpdump或ethereal进行监听时,可以利用这个选项(注意在这种方式下要使能IP_forwarding)。
另外一种用法是多目标监听。正如你所了解的,你可以利用ettercap监听两个目标之间的连接信息(ARPBASED),或某一个目标的进出信息(SMART ARP)。利用这个选项,你可以同时监听若干目标(因为同时启动了多个程序)。启动第一个程序时选用SMART ARP,并用-H选项限制smart功能仅针对你想要欺骗的主机进行(记住如果在欺骗中涉及了网关,必须在以smart方式运行的实例中指定它)。然后在启动其他的“ettercap -J”。
-R,--reverse
监听除选择的连接以外的所有连接。如果你在一个远程主机上使用ettercap,并且要求监听除了你自己的从本地到远程的连接以外的所有其他连接时,可以选择这个选项。因为如果包含了这样的连接将会使ettercap监听自己的输出,并不断迭加上去。
-O,passive
以被动的方式收集信息。在simple方式下,我们可以在许多方式中选择这个选项。“ettercap -NO”将以半交互的方式启动ettercap,输入“h”来获得帮助信息。你可以查看收集的信息,也可以把它们记录到日志文件中,或简单地浏览分析的数据包。“ettercap -NOL”与上面的方式相类似,不过它会自动地把数据记录到文件中,记录的时间间隔是5分钟。“ettercap -NOLq”使ettercap每5分钟把日志写到文件中。你可以走开,抽支香烟,返回时就会有一个有关局域网的完整报告在等待着你…J
-p,--plugin
运行外部插件“NAME”
大多数插件需要一个目标主机,这只要在插件的名字后面指定目标主机就可以了。事实上,命令行上的主机解析中,第一个主机为DEST,SOURCE也同样。为了获得可用的外部插件列表,使用“list”(不包括引号)作为插件的名字。由于ettercap 0.6.2提供了钩子插件系统,所以一些插件并不是作为独立的程序运行,它们可以和ettercap交互,可以通过接口或配置文件使能或禁止。有关插件的详细信息以及如何编写自己的插件,可以在README.PLUGING文件中找到。
-l,--list
列出局域网中的所有主机,报告每一个MAC地址。
通常与-b(ping广播)选项和-d(不解决主机名)选项连用。
-C,--collect
收集在命令行上指定的那些主机的所有用户和口令信息。
在配置文件(etter.conf)中配置口令收集器,如果需要的话,可以有选择性地禁止它们,或者把它们转移到另一个端口。如果你不希望收集SSH连接信息,但收集其他所有协议的数据的时候,这个选项很有用。如果你已知某一台主机在端口4567上提供telnet服务,只要把telnet解码移动到4567/tcp就可以了。
-f,--fingerprint
对主机进行OS指纹收集。
这个选项利用与nmap所使用的相同的方法和数据库:Fyodor fyodor@insecure.org,所以引用一段其man手册页中的一段:
这个选项通过TCP/IP指纹来标识远程主机。换句话说,它通过一套技术来检测被扫描主机的网络协议栈的特征。它利用这些信息建立一个指纹,这个指纹将同已知OS指纹库相比较,从而确定所扫描主机的系统类型。
-f选项甚至可以向你提供被扫描主机所用的网络适配器的生产厂家。这些信息被存放在mac-fingerprints数据库中。
-x,--hexview
以十六进制数方式转储数据。
提示:在监听的时候,可以改变显示效果,只要按”x”或”h”键就可以实现按16进制数显示或按Ascii字符显示。
-L,--logtofile
如果这个参数单独使用的话,会把所有的数据保存到特定的文件中。它会为每一个连接建立一个单独的文件,在UNIX系统下文件名为YYYYMMDD-P-IP:PORT-IP:PORT.log,
在Windows环境下的文件名为P-IP[PORT]-IP[PORT].log。如果与C参数连用,它会创建一个名为YYYYMMDD-collected-pass.log文件,其中记录了所有监听到的口令信息。
-q,--quiet
魔鬼化ettercap。
如果你希望以后台工作方式记录所有的数据,可以使用这个选项。这个选项将使ettercap脱离当前的tty,并把它设置为一个daemon。这个选项必须与-NL(或-NCL)选项联合使用,否则的话没有任何作用。显然,还需要指定一种监听方式,因此这个选项还要和一个表示监听方式的选项相配合。
-w,--newcert
为HTTPS中介攻击方式创建一个新的cert文件。
如果你想要利用社会工程方式获得的信息创建一个cert文件,可以使用这个选项。新创建的文件保存在当前工作目录下。为了长期替换缺省的cert文件(etter.ssl.crt),必须改写/usr.local/share/etter.ssl.crt。
-F,--filter
从文件FILENAME中加载过滤链。
过滤链文件是用伪XML格式编写的。你可以通过手工改写文件或通过ettercap的用户界面来让ettercap创建这个文件(在连接表界面中按’F’键)。如果你很熟悉XML语言分析,可以写自己的程序来建立过滤链文件。
过滤规则很简单:
如果 协议 源端口 目的端口 数据流 与规则匹配,在过滤器完成了它的响应 之后,跳转到在 域中定义的过滤器id,否则它跳转到 。如果这些域是空的,链就中断了。如果源端口和目的端口为0,意味着任意端口。在查找串中可一使用通配符(细节见README)。
注意:这个选项使能了过滤器,如果需要禁止它,在监听过程中按“S”(源)或“D”(目的)。
注意:在命令行上,对主机的解析为:ettercap –F etter.filter DEST SOURCE。所以第一个主机被绑定到目的链,第二个主机被绑定到源链。
重要注意事项:源链规则应用到从源发出的数据上,而不是发送到源的数据上,千万牢记!!!对于目的地址也是同样。
-c,--check
检查你是否被局域网上特定目标中的其他欺骗者所欺骗。
对命令行上的目标主机的解析是反向的。第一个主机是DEST,第二个主机是SOURCE。如果你在基于IP的方式下监听,这个顺序没有关系,因为源和目的都被忽略了。但是如果你在对连接进行过滤,这个顺序对于绑定到相关的过滤链就很重要了。
这个反向的顺序是由于与插件的更加灵活接口。因为有些插件需要指定目标主机,那么ettercap –Np ooze victim这种形式要比ettercap –Np ooze NOONE victim简单一些。
可以用点分制的格式来输入目标(192.168.0.1)或者以域名的格式来输入目标(victim.mynet.org)。只有在-H选项中可以使用通配符。
<5> 交互模式
如果启动ettercap的时候没有指定-N选项,那么就自动选取了交互模式。如果在某些情况下不知到可以做什么,只要键入‘H’就可以弹出帮助画面。在那里可以看到可执行命令的消息列表。
<6> 脱机工作
如果你想要分析由tcpdump或ethereal保存的libpcap格式文件,可以使用Script插件。可以用它来重构连接列表,进行口令收集工作或被动OS指纹收集。要实现这些只要指定-T选项,然后以与收集网络数据同样的方式使用ettercap。为了保存tcpdump文件以便进行进一步的分析,使用-Y选项。