利用 driftnet 嗅探网络图片

driftnet 是 Kali Linux 中内置的一个网络图片嗅探工具,常配合 ettercap、arpsproof 或其他 arp 欺骗工具一起使用。因为在 MacOS 上安装的时候遇到了一些困难,故做此记录,方便以后查阅。以后有时间可以详细介绍一下 arp 攻击原理。本文纯粹用于技术探讨,请勿用于非法目的。

安装教程

在 Ubuntu 或者 Kali 上安装较为简单,就不多做介绍,下面安装教程只针对 macOS。网上很多用 macports 的安装教程都不能用了,目前在 mac 上只能通过源码编译安装。

$ git clone https://github.com/deiv/driftnet.git
$ cd driftnet
$ autoreconf -fi
$ ./configure
$ make -j8
$ make install

报错及解决方案

  • gtk 问题

把 configure 中所有 x11 替换成 quartz,下面脚本中 gtk 版本可能不一致,请自行替换。

sed -i '.backup' 's/x11/quartz/g' configure && rm configure.backup
cd /usr/local/Cellar/gtk+/2.24.31_1/include/gtk-2.0/gdk
ln -s gdk.h gdkx.h
cd -
  • 提示找不到 openssl
export LDFLAGS="-L/usr/local/opt/openssl/lib -L/usr/local/lib -L/usr/local/opt/expat/lib"
export CFLAGS="-I/usr/local/opt/openssl/include/ -I/usr/local/include -I/usr/local/opt/expat/include"
export CPPFLAGS="-I/usr/local/opt/openssl/include/ -I/usr/local/include -I/usr/local/opt/expat/include"
export LIBRARY_PATH=/usr/local/opt/openssl/lib
  • ehter.h 报错

编辑 src/network/layer2.c

#include <netinet/ether.h>
替换成
#include <netinet/if_ether.h>
  • 编辑 src/compat/config.h

在末尾追加

#ifndef _FUCK_ETHER__
#define _FUCK_ETHER__
#define ETH_ALEN 6 
#define ETH_HLAN 14 
#define ETH_ZLEN 60 
#define ETH_DATA_LEN 1500 
#define ETH_FRAME_LEN 1514 
#define ETH_FCS_LEN 4  
#define ETH_P_IP 0x0800
#define ETH_P_IPV6 0x86DD
#define ETH_P_ARP 0x0806
#define ETH_P_PAE 0x888E

struct ethhdr
{
    unsigned char h_dest[ETH_ALEN];
    unsigned char h_source[ETH_ALEN];
    unsigned short h_proto;
}__attribute__((packed));
#endif

使用演示

$ driftnet -i en0 # 你的网卡名

打开浏览器看一些图片,发现图片内容已经被捕获到了。

如果再配合 MITM,你懂的。