Fuzz101_tcpdump

项目搭建

获取项目

1
2
3
4
5
6
mkdir fuzz
wget https://github.com/the-tcpdump-group/tcpdump/archive/refs/tags/tcpdump-4.9.2.tar.gz
tar -zxvf tcpdump-4.9.2.tar.gz
wget https://github.com/the-tcpdump-group/libpcap/archive/refs/tags/libpcap-1.8.0.tar.gz
tar -zxvf libpcap-1.8.0.tar.gz
mv libpcap-libpcap-1.8.0/ libpcap-1.8.0 #改名让tcpdump找到本地路径

正常构建

1
2
3
4
5
6
7
8
9
10
11
cd $HOME/fuzz_tcpdump/libpcap-1.8.0
./configure --prefix="$HOME/fuzz_tcpdump/install/"
make -j$(nproc)
make install

cd $HOME/fuzz_tcpdump/tcpdump-4.9.2
./configure --prefix="$HOME/fuzz_tcpdump/install/"
make -j$(nproc)
make install

$HOME/fuzz_tcpdump/install/sbin/tcpdump

使用ASAN构建

1
2
3
4
5
6
7
8
9
10
11
12
13
rm -r $HOME/fuzz_tcpdump/install/

cd $HOME/fuzz_tcpdump/libpcap-1.8.0
make clean
export LLVM_CONFIG="llvm-config-11"
CC=afl-clang-lto ./configure --prefix="$HOME/fuzz_tcpdump/install/"
AFL_USE_ASAN=1 make

cd $HOME/fuzz_tcpdump/tcpdump-4.9.2/
make clean
AFL_USE_ASAN=1 CC=afl-clang-lto ./configure --prefix="$HOME/fuzz_tcpdump/install/"
AFL_USE_ASAN=1 make
AFL_USE_ASAN=1 make install

crashes分析

出现crashes后,使用tcpdump分析crashes发生报错,如图
avatar
解决方法

1
2
3
4
5
sudo groupadd pcap
sudo usermod -a -G pcap $USER
sudo chgrp pcap $HOME/fuzz_tcpdump/install/sbin/tcpdump.4.9.2
sudo chmod 750 $HOME/fuzz_tcpdump/install/sbin/tcpdump.4.9.2
sudo setcap cap_net_raw,cap_net_admin=eip $HOME/fuzz_tcpdump/install/sbin/tcpdump.4.9.2

使用asan分析
avatar