SaTC污点分析自动化漏洞挖掘工具使用方法

SaTC污点分析自动化漏洞挖掘工具使用方法

共享关键字感知污点检查 (SaTC) 的原型,SaTC 是一种静态分析方法,可跟踪前端和后端之间的用户输入,以有效且高效地发现漏洞。
以下是该工具的原理图和论文https://www.usenix.org/system/files/sec21fall-chen-libo.pdf

安装

从github拉取dockerfile

https://github.com/NSSL-SJTU/SaTC.git

可以直接使用编译好的DOCKER

# Get image from Docker hub 
docker pull smile0304/satc

# Run SaTC (Need to add mapping directory by yourself)
docker run -v <mapping>:<mapping> -it smile0304/satc

或者使用dockerfile构建

# Cd SaTC code directory
cd SaTC

# Use Dockerfile to build docker image
docker build . -t satc

# Run SaTC (Need to add mapping directory by yourself)
docker run -v <mapping>:<mapping> -it satc

或者导入我们已经构建好的镜像
百度网盘下载:

文件:satc.tar
https://pan.baidu.com/s/1oaQSvPTeYWdxpFhhk_rkhA?pwd=kdev


提取码:kdev

sudo docker load -i satc.tar

使用

加载镜像

sudo docker run -it satc.tar

查看加载结果

docker images

自动映射文件到宿主机并打开docker环境

sudo docker run -it -v satc_output:/home/satc/SaTC smile0304/satc:V1.0

安装pip requirement

pip install -r requirements.txt

进入root权限并进入链接的目录

su
cd /var/lib/docker/volumes/satc_output/_data  #for apt docker
cd /var/snap/docker/common/var-lib-docker/volumes/satc_output/_data # for snap docker

先将要分析的固件解包后放入dokcer对应目录
在docker 里面输入:
检查httpd的命令执行漏洞

python satc.py -d /home/satc/SaTC/AC20/squashfs-root -o /home/satc/SaTC/res_AC20 --ghidra_script=ref2sink_bof  -b httpd --taint_check
python satc.py -d /home/satc/SaTC/wavlink/squashfs-root/ -o /home/satc/SaTC/res_wavlink --ghidra_script=ref2sink_cmdi -b lighttpd --taint_check

ghidra脚本的选项:
* ref2sink_cmdi : 该脚本从给定的字符串的引用中找到命令注入类型sink函数的路径。
* ref2sink_bof : 改脚本从给定的字符串的引用中找到缓冲区溢出类型sink函数的路径。
* ref2share: 此脚本用来查找输入等字符串中被写入共享函数等参数,例如:nvram_set, setenv等函数。需要与share2sink来配合使用
* share2sink: 此脚本与ref2share功能类似。需要与ref2share来配合使用;使用此脚本的输入为ref2share脚本的输出

optional arguments:
  -h, --help            查看帮助ZZZZ
  -d /root/path/_ac18.extracted, --directory /root/path/_ac18.extracted
                        指定从固件中提取出的文件系统
  -o /root/output, --output /root/output
                        指定结果输出位置
  --ghidra_script {ref2sink_cmdi,ref2sink_bof,share2sink,ref2share,all}
                        (可选) 指定要使用的 Ghidra 脚本。 如果使用`all`命令,`ref2sink_cmdi`、`ref2sink_bof`和`ref2share`三个脚本将同时运行
  --ref2share_result /root/path/ref2share_result  (可选) 运行`share2sink` Ghidra脚本时,需要使用该参数指定`ref2share`脚本的输出结果
  --save_ghidra_project (可选) 是否保存程序运行时产生的ghidra工程路径
  --taint_check         (可选) 指定是否启用污点分析
  -b /var/ac18/bin/httpd, --bin /var/ac18/bin/httpd
                        (可选) 用于指定需要分析的程序,如果不指定,SaTC将使用内置算法确认需要分析的程序
  -l 3, --len 3         (可选) 根据分析结果分析可能为边界的前N个程序,默认为3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注