收集崩溃报告、分类、评估严重性 | casr | 处理coredumps
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/ispras/casr
CASR:崩溃分析和严重性报告
CASR——收集崩溃报告、分类和估计严重性。 它基于 exploitable 和 apport 的想法。
CASR 由以下人员维护:
- 安德烈·费多托夫 < fedotoff@ispras.ru >
- 阿列克谢·维什尼亚科夫 < vishnya@ispras.ru >
- 乔治·萨维多夫 < avgor46@ispras.ru >
- 伊利亚·叶戈罗夫 < Yegorov_Ilya@ispras.ru >
概述
CASR 是一组允许您以不同方式收集崩溃报告的工具。 使用 casr-core 二进制处理核心转储。 用于 casr-san 分析 ASAN 报告。 尝试 casr-gdb 从 gdb 获取报告。 用于 casr-python 分析 python 报告并从 atheris 获取报告。
崩溃报告包含许多有用的信息:严重性(如 可利用 的)、操作系统和包版本、命令行、堆栈跟踪、寄存器值、反汇编,甚至是出现崩溃的源代码片段。 报告以 JSON 格式存储。 casr-cli 旨在提供用于查看报告的 TUI。 报告分类(重复数据删除、聚类)由 casr-cluster . 分类基于来自 gdb-command 的堆栈跟踪比较。 casr-afl 用于分类 AFL++ 发现的崩溃。
严重等级的解释可以在 这里 找到。 您可以在此处 仔细查看使用细节 。

入门
- 安装Rust。 说明可在 此处 找到。
- 克隆 CASR 存储库:
$ git clone https://github.com/ispras/casr
- 构建 CASR:
$ cargo build --release
- 安装运行时依赖:
$ sudo apt install gdb python3 python3-pip lsb-release
$ sudo -H python3 -m pip install numpy scipy
您可以从 crates.io 安装 Casr 而不是步骤 2-3:
$ cargo install casr
用法
从 coredump 创建报告:
$ casr-core -f tests/casr_tests/bin/core.test_destAv -e tests/casr_tests/bin/test_destAv -o destAv.casrep
从消毒剂输出创建报告:
$ clang++ -fsanitize=address -O0 -g tests/casr_tests/test_asan_df.cpp -o test_asan_df
$ casr-san -o asan.casrep -- ./test_asan_df
从 gdb 创建报告:
$ casr-gdb -o destAv.gdb.casrep -- tests/casr_tests/bin/test_destAv $(printf 'A%.s' {1..200})
从 python 创建报告:
$ casr-python -o python.casrep -- tests/casr_tests/python/test_casr_python.py
查看报告:
$ casr-cli tests/casr_tests/casrep/test_clustering_san/load_fuzzer_crash-120697a7f5b87c03020f321c8526adf0f4bcc2dc.casrep
为读取标准输入的程序创建报告:
$ casr-san --stdin seed -o san_bin.casrep -- ./san_bin
去重报告:
$ casr-cluster -d tests/casr_tests/casrep/test_clustering_gdb out-dedup
集群报告:
$ casr-cluster -c out-dedup out-cluster
在使用 casr-afl 进行 AFL++ 模糊测试后,分类崩溃:
$ cp tests/casr_tests/bin/load_afl /tmp/load_afl
$ cp tests/casr_tests/bin/load_sydr /tmp/load_sydr
$ casr-afl -i tests/casr_tests/bin/afl-out-xlnt -o tests/tmp_tests_casr/casr_afl_out
模糊测试崩溃分类管道
当您因模糊测试而崩溃时,您可以执行以下步骤:
casr-san通过或casr-gdb(如果不存在消毒剂) 为所有崩溃创建报告。- 通过删除重复收集的报告
casr-cluster -d。 - 通过
casr-cluster -c. - 使用 .查看来自集群的报告
casr-cli。
如果您使用 AFL++ ,从 1 到 3 的步骤可以由 casr-afl .
标签:工具分享