使用网络抓包进行网络验证破解

目的:

  • 学会使用网络抓包方式分析网络验证方法,破解验证机制

原理:

  • 网络验证是指软件运行时与互联网进行一些认证。通过向服务器发送请求反馈信息,对于静态的信息,分析人员能够手动获取信息的所有内容,破解时相对简单,只需在验证点补丁上相应信息即可。

过程:

将network安装到模拟器运行并点击按钮image-20211229135933543

联网后点击执行功能按钮

抓包的过程需要在联网环境下才能完成,另外因原网址失效,抓不到演示程序的通信数据包,可直接使用抓取的数据包C:\AndroidSec\SimpleEdu46\capture.pcap进行分析。

在实验目录AndroidSec\SimpleEdu46下进入adb shell 运行命令“mount -o remount rw /”后输入exit退出。image-20211229140059286

将tcpdump push到sdcard 上,执行“adb push tcpdump /sdcard/tcpdump”。image-20211229140147104

进入adb shell,对tcpdump进行提权,执行“adb shell chmod 777 /sdcard/ tcpdump”(此处一定要对tcpdump进行提权否则会出现readonly权限不够的情况)。image-20211229140302748

执行命令开始抓包,执行“adb shell tcpdump -p -vv -s 0 -w /sdcard/capture.pcap”image-20211229140408451

回到程序界面,点击执行功能按钮

回到命令窗按下CTRL+C停止抓包image-20211229140516685

执行adb pull /sdcard/capture.pcap命令,将抓到的数据包导出。image-20211229141451091

导出的文件会放在当前文件夹里。image-20211229141725491

在开始菜单—>所有程序里找到wirkshark,用wireshark打开抓包文件(注:这里可以用提供的数据包查看之前抓到的数据)。image-20211229142443458

在搜索栏里输入http并按回车键查看相关的数据image-20211229144232643

点击GET请求右键追踪TCP流image-20211229144309999

发现请求内容是固定的

反编译network.apk。将network.apk放到apktool所在的文件夹,命令行定位到该文件夹并运行apktool d [-s] -f C:\AndroidSec\SimpleEdu46\apktool\network.apk -o C:\AndroidSec\SimpleEdu46\apktool\outimage-20211229144812626

打开C:\AndroidSec\SimpleEdu46\apktool\out\smali\com\droider\network文件夹中的Mainactivity$1.smali文件,用editplus打开,搜索onClick()方法image-20211229144927017

找到access$2方法,仅保留access$​2方法的调用并删除param p1,”v”,修改后的代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# virtual methods

.method public onClick(Landroid/view/View;)V

.locals 1

.prologue

:cond_0

iget-object v0, p0, Lcom/droider/network/MainActivity$1;->this$0:Lcom/droider/network/MainActivity;

# invokes: Lcom/droider/network/MainActivity;->getData()V

invoke-static {v0}, Lcom/droider/network/MainActivity;->access$2(Lcom/droider/network/MainActivity;)V

return-void

.end method

打开MainActivity.smali文件找到getData()方法。删除HttpUtils类里面的getStringFromURL()的调用image-20211229150309607

将之前分析的返回的字符串,赋值给v1寄存器,这样就与和网络上获取的数据是一样的,按如下所示修改代码

1
const-string v1, "{\r\n\t\"info\":{\r\n\t\t\"key\":\"droider\",\r\n\t\t\"msg\":\"2970C000324690E4AC28850CC2E4D36C6713FE28F48BD03D442AE1845CBDF16EA68CEDB67F8E90C6D47BB4C7F492322056C4A6B56BA1633BDCF9715850E77B18\"\r\n\t}\r\n}\r\n"

image-20211229151529488

打开apktool文件夹,在命令行执行 java -jar apktool.jar b -d out -o debug.apk,生成apk文件image-20211229151927718

将生成的apk拷贝到C:\AndroidSec\SimpleEdu46\SignAPK中对生成apk进行重签名image-20211229152108448

安装运行。发现此时已经绕过网络验证(点击执行功能,不再出现获取网络数据出错)image-20211229152528719