首页
论坛
课程
招聘
基于一种通用分析方法自吐出服务器IP地址和端口
2021-5-12 09:32 6462

基于一种通用分析方法自吐出服务器IP地址和端口

2021-5-12 09:32
6462

题目来源:

样本来自看雪2W班十月第二题


题目要求:

之前课程已经给出的Socket的自吐,还差一个服务器IP地址和端口的自吐,补充上。

 

解题思路:

编写测试demo后,首先利用objection去批量hook住内存中socket所有类,然后模拟触发socket创建,从被触发的socket类的方法中找到与IP地址和端口相关的方法。接着单独hook住与ip地址和端口相关的方法,再次模拟触发socket创建,观察hook结果符合预期。最终编写frida脚本自动化拿到服务器的ip和端口,并利用植物大战僵尸apk测试,符合预期。


考察知识点:

本题知识点更多的是一种通用解题思路,这种利用ojection批量hook住相关类的方法不局限于获取服务器的ip地址和端口。


解题过程:

(1)第一步,编写一个客户端的demo。Mainactivity核心代码如下,创建两个按键,一个基于MessageTransmit类创建socket,一个用来发包。

   

    MessageTransmit类核心代码如下,测试服务端ip为“192.168.31.46”,测试端口是6666。


(2)第二步,利用objection进行分析。分析的第一步骤,利用objection执行如下命令查看内存中有哪些socket类。

然后将这些类拷贝到excel中,生成“android hooking watch  class java.net.AbstractPlainSocketImpl”这样的列表,再拷贝到hook.txt中,采用如下命令启动apk时,一次性全部hook住socket相关类中所有方法。

在app上按键触发socket创建流程,可以看到如下调用关系,其中光亮函数看上去就是拿到服务端地址和端口的关键。

于是我们重新objection这个apk,然后采用如下两条命令,hook住getPort和getAddress方法,再次点击创建socket按键,可以看到打印出了服务端ip和地址,与我们demo中填写的一致。


(3)第三步,编写frdia脚本,并进行测试。如下是frida脚本,根据log可以看到打印出了服务端的ip和port。

最后我还用这个frida脚本,跑了下植物大战僵尸apk,测试结果如下,也确实能自吐出服务端的ip和port。




恭喜ID[飞翔的猫咪]获看雪安卓应用安全能力认证高级安全工程师!!

收藏
点赞3
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回