AFL fuzzing tcpdump-tcpdump-4.9.0

0x01:背景
tcpdump-tcpdump-4.9.0存在栈溢出漏洞,CVE-2017-11543 tcpdump sliplink_print 栈溢出漏洞,形成原因及POC可以参考文尾链接,这里主要是使用AFL 来fuzzing tcpdump-4.9.0,漏洞复现推荐环境;
在这里插入图片描述

0x02: 编译tcpdump-tcpdump-4.9.0

实际操作发现使用以下命令安装的libpcap-dev版本与推荐复现版本不一致,可以尝试使用这个版本,我这为了与参考环境统一,下载了 libpcap v1.7.4版本。

$ sudo apt-get install libpcap-dev
$ dpkg -l libpcap-dev
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                       Version                    Architecture               Description
+++-==========================================-==========================-==========================-=========================================================================================
ii  libpcap-dev:i386                           1.8.1-6ubuntu1.18.04.2     i386                       development library for libpcap (transitional package)

//下载tcp dump源码
$ wget https://github.com/the-tcpdump-group/tcpdump/archive/tcpdump-4.9.0.tar.gz
//解压源文件
$ tar zxvf tcpdump-4.9.0.tar.gz
$ cd tcpdump-tcpdump-4.9.0/
//生成配置文件
$ ./configure
//安装tcpdump
$ sudo make install
//查看tcpdump及libpcap版本
curits@curits-virtual-machine:~/Desktop$ tcpdump --version
tcpdump version 4.9.0
libpcap version 1.7.4

到这CVE复现环境已经搭建完了,但是使用AFL-fuzz 我们需要重新编译tcpdump!!!

0x03:Afl-fuzzing详细使用过程

安装AFL-fuzz:

//如果使用的ubuntu系统直接 sudo apt-get install afl
//下载AFL源码
http://lcamtuf.coredump.cx/afl/releases/afl-latest.tgz
//编译AFL
$ make 
//安装AFL
$ sudo make install

//使用afl-gcc 编译tcpdump
//下载tcp dump源码
$ wget https://github.com/the-tcpdump-group/tcpdump/archive/tcpdump-4.9.0.tar.gz
//解压源文件
$ tar zxvf tcpdump-4.9.0.tar.gz
$ cd tcpdump-tcpdump-4.9.0/
//生成配置文件
$ ./configure  CC="afl-gcc" CXX="afl-g++"
//编译tcpdump
$ make

//构建testcases 和 result
$ cd tcpdump-tcpdump-4.9.0/
//testcases 用于存放语料库,result用于输出fuzzing结果
$ mkdir testcases result
//将afl源码中的pcap示例文件拷贝到testcase文件夹
curits@curits-virtual-machine:~/Desktop/afl-fuzzing/afl-2.52b/testcases/others/pcap$ pwd
/home/curits/Desktop/afl-fuzzing/afl-2.52b/testcases/others/pcap
curits@curits-virtual-machine:~/Desktop/afl-fuzzing/afl-2.52b/testcases/others/pcap$ ls
small_capture.pcap

$ cp -rf afl-2.52b/testcases/others/pcap/small_capture.pcap tcpdump-tcpdump-4.9.0/testcases

//开始使用AFL fuzzing tcpdump
afl-fuzz -i ~/tcpdump-4.9.2/testcases/ -o ~/tcpdump-4.9.2/result/ ~/tcpdump-4.9.2/tcpdump -nr @@

//因为已经知道栈溢出漏洞是 tcpdump -e -r xxxxx.pcap ,可以使用以下命令加快fuzzing速度
afl-fuzz -i ~/tcpdump-4.9.2/testcases/ -o ~/tcpdump-4.9.2/result/ ~/tcpdump-4.9.2/tcpdump -e -r @@

AFl fuzzing界面如下所示:
在这里插入图片描述
0x04:Afl-fuzzing使用参数说明

afl-fuzz -i [TESTCASE DIR] -o [RESULT_DIR] [TARGET_BINARY] [BINARY_PARAMS] @@

参数示例
TESTCASE DIR~/tcpdump-4.9.2/testcases/
RESULT_DIR~/tcpdump-4.9.2/result/
TARGET_BINARY~/tcpdump-4.9.2/tcpdump
BINARY_PARAMS-nr

实际fuzz效果还得后续跟进!!!

0x04:Afl-fuzzing结果
在这里插入图片描述
在这里插入图片描述
xxd 查看crash信息:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
查看所有crash文件都是因为direction的值被设置成除0 和 1之外的值!!!

pcap global header: struct PCAPHEADER header

NameValue(0x)StartSize
unint32 magic_numbera1b2d4c30h4h
uint16 version_major024h2h
uint16 version_minor046h2h
int32 thiszone08h4h
int32 sigflags0Ch4h
int32 snaplen6000010h4h
int32 network0814h4h

Record(Packet) Header 数据包头:

NameValue(0x)StartSize
time_t ts_sec546031b818h4h
uint32 ts_usec08a51Ch4h
uint32 incl_len4a20h2h
int32 orig_len4a24h4h

network类型为SLIP,Packet Data 结构:
在这里插入图片描述
从crash信息来看这里direction的值为0xfffff,从而发生了栈溢出,访问了非法的地址,dmesg信息如下所示:
在这里插入图片描述
0x05: 还可以使用plot分析整个fuzz过程数据

sudo apt-get install gnuplot
afl-plot ~/result ~/output/dir

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考链接:https://firmianay.gitbooks.io/ctf-all-in-one/content/doc/7.1.1_tcpdump_2017-11543.html

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值