起因

最初只是想拓展一下web的攻击面,因为只能对web进行攻击实在是太狭窄了,扫域名、扫C段、扫ip、扫目录,最后能够攻击的目标也只有那么多。所以把目标放到了app上面,所以本次先讲一讲对app抓包和android逆向的简单了解

burpsuit抓包

首先我们需要一个模拟器(推荐夜神模拟器)和一个bp。
在bp上设置代理ip和端口

然后在模拟器上设置代理为物理机ip和端口
这里推荐使用ProxyDroid.可以设置代理类型,过滤代理应用,省去很多麻烦

然后就可以进行愉快的抓包了~
但现在app的网页分析也是有限的,很多数据经过了层层加密,或者直接走tcp,抓不到包,没办法,我们只能从app本身下手

Android

谈起我对安卓逆向的第一印象,就是root和xposed框架。在高中枯燥的年代,和qq、微信、百度网盘等一众App做斗争是我最爱干的事。

而实际的安卓逆向很依赖工具,用好工具可以事倍功半。

反编译

apktool是安卓逆向必备的反编译软件,用于将dex文件反编译为jar文件。
我们都知道java是运行JVM虚拟机上的,安卓的底层是JAVA,但java会被先编译为smail,jar包变为dex文件,最终运行在Dalvik虚拟机上。
dex字节码相当于java的class字节码,smali是Dalvik的寄存器语言,Dalvik是安卓的运行虚拟机,它的机制类似于JAVA的JVM,两者相似但又不相等,dalvik基于寄存器,而JVM基于stack(栈)。

dex的生成过程

在Android4.4后,Dalvik被替换为了ART虚拟机,两者原理相差不大,但ART使用了预编译技术,将dex字节码转为机器码。后续直接执行机器码而不用再次解释。更快,但也更占空间。

那我们想要对apk文件进行分析,就需要apktool来反编译,市面上大多数的反编译软件都是基于apktool,比如Android Killer、Smail2Java等。当然也可以使用JEB或IDA进行调试。

再简单介绍一下apk文件的格式,apk文件本质上是一个zip文件,可以直接解压,解压后它的结构如下:

  • AndroidMainfest.xml
    apk的属性文件,所有的apk文件都包含这一文件,它写明了apk所需要的函数、启动类是哪一个信息。
  • META_INF
    编译中自动生成的文件夹
    -assets
    这个文件夹下面的内容会原封不动的打包到apk文件中,所以里面经常会放一些程序中会用到的文件,例如解密钥
  • classes.dex
    存放字节码的文件,可反编译的关键文件
  • libs
    包含JAVA或C\C++开发所用到的lib库
  • res
    存放与资源相关的文件,例如图片
  • resources.ersc
    存放APK中所使用的资源的名字、ID、类型等信息

范例

攻防世界app1
经过JEB反编译后

得到了java程序,按tab可以切换为smail,鉴于我的smail太差,就看java分析了
关注主类和build类,可以发现关键代码

for(i = 0; i < inputString.length() && i < versionCode.length(); ++i) {
    if(inputString.charAt(i) != (versionCode.charAt(i) ^ versionName)) {
        Toast.makeText(MainActivity.this, "再接再厉,加油~", 1).show();
        return;
    }
}

通关输出为versionCode的每个字符和versionName进行异或后的字符串
编写python脚本

v="X<cP[?PHNB<P?aj"
c=15
flag=""
for i in v:
    flag=flag+chr(ord(i)^c)
print(flag)

得到flag

从aPK底层分析代码,从而查看是否有潜在漏洞,或者恶意修改后重打包apk,都是安卓逆向的利用之处。


"孓然一身 , 了无牵挂"