逆向概述网页APP(加密逆向网页函数参数)「逆向网站」

逆向概述网页APP(加密逆向网页函数参数)

从抓包工具、抓包的目的、程序模拟流量、加密方式的分析等多个角度概述网页及APP逆向的技术细节。
网页逆向1.1抓包工具网页逆向的第一步是抓包,通常使用firebug、谷歌浏览器、httpV7、fiddler、httpwatch等工具对网页进行抓包分析。
其中firebug和httpwatch是同类型的抓包工具,通常用于分析网络post流量,这两款工具搜索报文十分方便。
firebug可以用于报文中的js调试,而httpwatch无法进行js调试。
对于js调试,谷歌浏览器的开发者工具更加方便。
由于谷歌内核是开源的,所以包括360、IE在内的众多浏览器都能使用它的开发者工具。
httpv7是一款方便检查参数请求内容的抓包工具,它可以有效地检测出POST内容的参数错误。
fiddler是一款非常灵活的抓包工具,它既可以实现网页的抓包,也可以实现APP的抓包。
同时,它也是一款全局抓包工具,可以有效地避免网页切换过程中产生的漏包情况,能够存储保全网络操作过程中所有http协议的报文。
1.2抓包的目的在网页逆向分析中,对网页进行抓包的目的是对网页进行分析。
分析包括两个层面,即流程和数据包。
流程指数据包请求和响应的程序逻辑,如网站登录时需要登录验证,要首先获取验证码的数据,然后再将账号信息一起提交到服务端。
大部分的服务都会检测流程的逻辑,如果请求的逻辑不满足服务端的规则,会导致请求出错或服务器拒绝访问。
网页抓包所指的数据包主要为超文本传输协议(http)的数据包,一般由两部分组成即请求头和参数(请求体)。
在请求头部中,最重要的参数是url和cookie。
逆向分析的重点是对数据包进行分析,伪造其请求头和参数。
其中,参数可能是从之前的网页请求返回的,也有可能是通过js进行加密的,也有可能是从cookie中提取出来的,还有可能是固定写在代码逻辑值中的常量。
1.3程序模拟流量对数据包完成分析后,需要通过程序模拟数据包请求和响应的过程。
此时,需要分两种情况进行讨论。
第一种情况,数据包中的参数信息未进行加密,这种情况较为简单,只需要写程序模拟数据包。
第二种情况,数据包中的参数是加密的,这种情况非常复杂,需要进一步讨论分析。
1.4加密方式的分析在网页中,常见的加密方式包括三种:flash加密、密码控件加密和JS加密。
其中,JS加密十分常见。
flash加密方式需要进行反编译,需要逆向分析者对AS语言及汇编语言有一定的基础,才能进一步分析。
密码控件一般在银行、理财领域应用地比较广泛。
JS逆向方法对于JS加密的网站,一般通过搜索定位、事件监听断点、函数调用栈、算法还原等这几种方式来复现参数加密的逻辑。
搜索定位搜索定位的常见方式包括搜链接(url)、搜对应参数(如password)、搜其他参数、搜id(或name)、搜关键字(AES、MD5、RSA、tripedes、encrypt、setpublickey等)、搜文字(如登录中,文字Unicode编码,16进制编码)。
事件监听断点事件监听断点是指当用户触发某事件后,网页流量进程自动在某源码处停止运行的行为。
如对于常见的登录框,可以选择当用户点击按钮时程序停止运行。
此时需要勾选Event Listenner Breakpoits中的Mouse选项框的click选项。
函数调用栈函数调用栈(先进后出的逻辑关系)一般指程序设计中的函数间的调用顺序逻辑关系,可以通过该方法找到函数调用的地方。
函数调用栈一般在搜索定位相关关键词之后使用,如本例中找到了setPublickey加密函数关键词,然后点击谷歌开发者工具右侧的CallsStack工具触发函数调用栈功能。
1.5算法还原算法还原的过程即为将加密涉及的所有类库和函数全部拷贝和复现,实现整个参数加密的过程。
此处可能需要用到js调试工具,一般需要对涉及到的代码进行改写,再使用易语言工具进行调用。
或者直接调用js加密库,也可以直接使用易语言复现加密算法。
1.6其他协议在网页流量的数据包中,有可能存在其他协议的情况,如TCP、websocket等。
websocket协议可以使用的抓包工具包括谷歌开发工具,TCP协议一般使用wireshark、sniffer和iptool等抓包工具。
APP逆向APP逆向的本质也是要模拟APP端的网络流量请求和响应行为。
2.1抓包工具常用的抓包工具包括fiddler、HTTPdebugger、charlse、wireshark等。
2.2抓包的目的分析网络流量的数据包和产生网络流量的程序流。
与网页端检测机制不同,APP端主要对用户的设备进行检测。
如本例中某些APP会对用户的手机串号进行检测,在之前的某条接口产生加密文本,后被服务器记录,需要一直携带该参数进行请求。
如果网络流量请求不提供该参数,会被服务器拒绝访问。
与网页端类似,这里的数据包仍然由参数和请求头构成。
一般来说cookie参数不会存在于APP端,但如果想要清除缓存清除cookie,需要通过重装APP、新建模拟器等方式完成。
2.3加密方式的分析在APP端常见的加密方式包括java加密和so加密(c和c++)。
一般情况下APP端的数据包都会进行加密,至少会携带一个名为sign的加密参数。
java加密的处理方式首先通过逆向的方式获取源代码,然后和网页端处理加密函数的方式类似,需要通过搜索进行函数定位,最后进行算法还原。
算法还原需要复制代码,将代码打包成jar包,利用易语言调用。
算法还原的另外一个方法是找js加密库,然后使用易语言调用进而得到加密参数。
这里需要逆向分析人员拥有java基础和js基础。
so加密(c和c++)加密的处理方式类似地,需要使用ida工具定位函数,用易语言复现代码或调用js库复现加密逻辑。
2.4 APP的逆向更加复杂抓包时会面临证书验证的问题,需要安装XPOSED模块,其原理是对其中的java证书验证的函数进行hook。
如果APP不经过代理,则需要使用httpdebuger进行抓包。
除此之外,APP端可以对APK文件进行加壳或加固,这样需要对目标APK文件进行脱壳才能看到源码逻辑。
APP端还会进行反调试,类似于无限debug,这里也需要hook,将执行代码的结果返回空。
应对APP端反调试的其他方案是log输出或进行hook,hook技术可以对函数进行修改。
2.5 hook技术的作用第一可用于APP的脱壳;第二,辅助函数定位;第三,实现自吐算法,hook 加密库的功能;第四,修改APP代码做APP插件。
如下图直接通过hook方法获取了RSA加密结果和输入,还可以获取函数调用栈信息。

联系我们

在线咨询:点击这里给我发消息