dsniff 和 Ettercap 和 bettercap网络嗅探工具包

网络嗅探工具包

Posted by hades on April 7, 2018

dsniff 和 Ettercap 和 bettercap网络嗅探工具包

dsniff是纯粹被动的进行网络活动监视的工具,包括: dsniff、filesnarf、mailsnarf 、msgsnarf、urlsnarf、webspy针对SSH和SSL的MITM ( Man-In-The-Middle)“攻击”工具,包括sshmitm和webmitm发起主动欺骗的工具,包括: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 [-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 <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                  显示帮助信息

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.