接触soot很久了,网上资料比较少,很多时候都是学术界在搞这个,工业界用它的人并不多,之前也有朋友想让我开这个系列,我觉得也有必要为后人留下一点有用的东西。开个系列吧,估计是个长期的栏目,试试水。

一、背景

Soot提供的功能有很多,使用时候配置的东西也很多,一时半会是讲不完的,我用它主要是从安全人员的角度出发,从逆向的角度,去审计一些jar和apk,从而节省人力成本。

类似的工具,见过的不多,能数出来的、公开的产品可能是FindSecBugs、FlowDroid、360写的火线、据传阿里聚安全提供的apk扫描,主要思路都一样,反汇编,构造调用图,制定规则。因为各个轮子提供的API都各种各样,所以我用Soot只是一个巧合,可能是因为Flanker前辈最开始用的是soot,后来工作时接的FlowDroid也是soot,现在接的扫描器前人也是用soot写的。也就这么一直用下去了,也推荐后人使用它,至少我觉得这玩意还是很好用的。

目前我在维护自家的产品,要做代码审计,8102年了,肯定要自动化的。学习了很多比较成熟的厂商的案例,例如BAT、数字提供的在线扫apk的业务,通过表现猜测应该是较为完备的正则(我不知道啊,我乱猜的),也有美丽联合SRC公开的扫源码工具,自己构造AST,自己写规则,支持很多语言;其他的不大记得,反正看的挺多的。

扫源码和扫jar包,二者是类似的,但又不完全一样。如果抛开解析文件,只考虑功能的话,扫源码时,依赖的第三方jar的扫不到的,有时候gradle插件搞得东西也扫不到。而扫jar包的话,又会丢失注释的信息,丢失文件的信息。可以说二者各有利弊吧,我偏向是扫jar包,毕竟我是个逆向工程师,不喜欢看源码。

话不多说,看下简单的用法吧,背景的话看其他人的文章去吧。

二、解析一系列class

首先,要我们要写一个待扫描的工程,我一般使用IntellijIdea,点击build,就会在看到了。

既然是8102年了,当然要用最好的构建工具gradle,我们创建一个gradle项目,引入soot的release包。

1
2
3
4
5
6
7
maven {
url "https://soot-build.cs.uni-paderborn.de/nexus/repository/soot-release/"
}

dependencies {
compile group: 'ca.mcgill.sable', name: 'soot', version: '3.1.0'
}

三、解析一个普通jar包

四、学习方法

之前有段时间在搞jackson反序列化漏洞的检测,网上看到各种各样的文章,很多抄来抄去的,真是辣鸡,虽然我不懂,但也知道他们有些人在胡扯。本系列文章系统地介绍java里的json反序列化漏洞成因、防御方式、检测方式、利用方式。因为本人接触这些不久,如有错误,还请大佬留言指正。

本文是第四篇(最后一篇),讲下如何检测和防御。

Read more »

之前有段时间在搞jackson反序列化漏洞的检测,网上看到各种各样的文章,很多抄来抄去的,真是辣鸡,虽然我不懂,但也知道他们有些人在胡扯。本系列文章系统地介绍java里的json反序列化漏洞成因、防御方式、检测方式、利用方式。因为本人接触这些不久,如有错误,还请大佬留言指正。

本文是第三篇,讲之前漏掉的一种可以进行漏洞利用的写法。

Read more »

之前有段时间在搞jackson反序列化漏洞的检测,网上看到各种各样的文章,很多抄来抄去的,真是辣鸡,虽然我不懂,但也知道他们有些人在胡扯。本系列文章系统地介绍java里的json反序列化漏洞成因、防御方式、检测方式、利用方式。因为本人接触这些不久,如有错误,还请大佬留言指正。

本文是第二篇,讲为什么反序列化时候有被代码执行的风险。

Read more »

之前有段时间在搞jackson反序列化漏洞的检测,网上看到各种各样的文章,很多抄来抄去的,真是辣鸡,虽然我不懂,但也知道他们有些人在胡扯。本系列文章系统地介绍java里的json反序列化漏洞成因、防御方式、检测方式、利用方式。因为本人接触这些不久,如有错误,还请大佬留言指正。

本文是第一篇,讲讲jackson的基础知识。

Read more »

前段时间在搞应急,从一个啥都不会的小白学了一些XXE的简单poc构造和防御手段,网上攻击的poc很多,就不多说了,防御方法五花八门,而且有些防御根本就是无效的!!写篇文章分享一下,如何用Java彻底防御XXE。

Read more »

gradle 有些依赖要翻墙,有些依赖不要翻墙,不知道为啥,设置好代理后怎么都删不掉了,intellij 里试了几遍,记录一下如何删除gradle代理。
关键字:gradle proxy clear delete
真是坑死我了,死活删不掉,看下文吧。

Read more »

之前说送一些人我的签名,发现我没有 GPG 签名,写篇文章记录一下,网上相关简单操作挺多,详细说明挺少的,开个文章记录一下。

Read more »
0%