收集崩溃报告、分类、评估严重性 | casr | 处理coredumps

作者:Sec-Labs | 发布时间:

项目地址

https://github.com/ispras/casr

CASR:崩溃分析和严重性报告

CASR——收集崩溃报告、分类和估计严重性。 它基于 exploitableapport 的想法。

CASR 由以下人员维护:

概述

CASR 是一组允许您以不同方式收集崩溃报告的工具。 使用 casr-core 二进制处理核心转储。 用于 casr-san 分析 ASAN 报告。 尝试 casr-gdb 从 gdb 获取报告。 用于 casr-python 分析 python 报告并从 atheris 获取报告。

崩溃报告包含许多有用的信息:严重性(如 可利用 的)、操作系统和包版本、命令行、堆栈跟踪、寄存器值、反汇编,甚至是出现崩溃的源代码片段。 报告以 JSON 格式存储。 casr-cli 旨在提供用于查看报告的 TUI。 报告分类(重复数据删除、聚类)由 casr-cluster . 分类基于来自 gdb-command 的堆栈跟踪比较。 casr-afl 用于分类 AFL++ 发现的崩溃。

严重等级的解释可以在 这里 找到。 您可以在此处 仔细查看使用细节 。

71eb841bcf155458

 

入门

  1. 安装Rust。 说明可在 此处 找到。
  2. 克隆 CASR 存储库:

$ git clone https://github.com/ispras/casr

  1. 构建 CASR:

$ cargo build --release

  1. 安装运行时依赖:

$ 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

模糊测试崩溃分类管道

当您因模糊测试而崩溃时,您可以执行以下步骤:

  1. casr-san 通过或 casr-gdb (如果不存在消毒剂) 为所有崩溃创建报告。
  2. 通过删除重复收集的报告 casr-cluster -d
  3. 通过 casr-cluster -c .
  4. 使用 .查看来自集群的报告 casr-cli

如果您使用 AFL++ ,从 1 到 3 的步骤可以由 casr-afl .

标签:工具分享