公众号小程序注册,网站文案优化,wordpress post表,东庄水利枢纽建设公司网站文章转载于#xff1a;https://mp.weixin.qq.com/s/dXRo0D_Xx7E_h85XbnwPVQ 有兴趣去源站浏览学习 主要自己看着方便些
1.HTTS三次握手
目前使用的 HTTP/HTTPS 协议是基于 TCP 协议之上的#xff0c;因此也需要三次握手。在 TCP 三次握手建立链接之后#xff0c;才会进行 … 文章转载于https://mp.weixin.qq.com/s/dXRo0D_Xx7E_h85XbnwPVQ 有兴趣去源站浏览学习 主要自己看着方便些
1.HTTS三次握手
目前使用的 HTTP/HTTPS 协议是基于 TCP 协议之上的因此也需要三次握手。在 TCP 三次握手建立链接之后才会进行 SSL 握手的过程即身份认证和密钥协商的过程。
第一步证书验证
服务器将 crt 公钥以证书的形式发送到客户端客户端验证证书是否合法。第二步获取对称密钥
客户端用随机数和 hash 签名生成一串对称密钥即随机钥客户钥然后用 crt 公钥对对称密钥进行加密。
客户端将加密后的对称密钥发送给服务器。
服务器用 crt 私钥解密取出对称密钥。第三步传输加密数据
服务器用随机钥来加密数据发送加密的网页内容。
客户端通过本地存储的随机钥对密文进行解密并判断是否被篡改如果没有篡改
后面的数据通讯将使用对称加密传输所有内容。2.对称和非对称加密
对称加密
在编码时使用的密钥 e 和解码时一样 d即 e d。DES、3DES、AES非对称加密
加密的密钥 e 和解密的密钥 d 是不同的即 e ! d并且加密的密钥 e 是公开的叫做公钥
而解密的密钥 d 是保密的叫私钥。RSA、DSA、ECC3.web逆向参数定位方法
1、全局搜索
2、xhr拦截
3、堆栈调试
4、Hook脚本
5、内存漫游4.浏览器指纹
常用于记录的浏览器指纹
Header、CookieIPDNS
UserAgentFont字体列表
LanguagelocalStorage、
Plugin插件Canvas渲染绘图
WebGL3D渲染图形
Web Vendor硬件厂商信息
Timezone时区Platform系统
WebRTCweb通信API
ScreenResolution分辨率
Audio音频设置和硬件特征指纹
enumerateDevices其他媒体设备
CPU、GPU信息。5.web逆向其他问题
1、常见检测和绕过反调试之类
2、如何获取当前环境Proxy
3、hook如何实现的
4、如何hook XHR
5、加解密和混淆处理
345可到工具站查看地址
cnlans.com/lx/tools/jshook6.chromedriver检测
常见的检测点webdriveruser-data-dirlanguagenavigatorpluginsDeveloper可在页面加载之前通过Js语句覆盖原有属性。
Object.defineProperty(navigator, webdriver, { get: () undefined }
)7.验证码识别和处理
通用逆向分析流程
1.分析请求流程
2.验证码注册
3.识别验证信息
4.生成验证参数
5.验证识别方法
1.开源工具识别
2.第三方平台
3.训练识别模型可借助云平台或开源框架验证码厂家极验、阿里、易盾、顶象、点触、数美。
极验简述
1.主要有三个以 geetest_ 开头的加密参数提交滑块时的请求参数 gt、challenge、lang、w、callback。
2.分析时可对代码进行 Unicode 解码解码之后再通过AST脚本去除冗余代码。
3.调试后抽离出请求参数的加密逻辑构造请求体完成验证。数美流程
1.验证码申请
2.提取js参数需要提取js中的参数名。
2.验证码注册获取滑块图片和验证背景图。
3.计算滑块缺口位置可使用opencv等工具计算缺口距离。
4.构造轨迹自动生成或者copy轨迹库。
5.逆向分析接口参数完成提交验证。8.动态cookie反爬
加速乐简述1、第一次请求返回状态为521的响应内容执行JS可获得cookie值 jsl_clearance。
2、cookie带上生成的__jsl_clearance和第一步中返回的cookie值__jsluid_h再次请求目标网址响应内容为一段混淆JS代码该代码为生成真实__jsl_clearance值的代码。
3、主要加密逻辑就是对参数做拼接处理然后对拼接后的字符串进行hash加密。瑞数流程
1、第一次请求后浏览器加载metameta是包含动态content的html标签会在eval执行第二层JS代码时使用到。
2、浏览器请求外链JS一般同站外链JS是固定的用于下一步的调用。
3、加载自执行函数(动态)将外链的JS解密为字符串并给window.$_ts添加属性。然后通过eval函数进入VM执行解密后的字符串执行完毕后可生成cookie。瑞数处理1、先处理定时器和死循环debugger。
2、将HTML放到本地运行或将浏览器JS替换为固定内容。
3、将content和自执行方法在本地调试根据VM执行的异常信息补环境。
4、主要需要补充document、localStorage和window中的一些方法如addEventListener、getElementsByTagName、createElement等。9.安卓逆向分析步骤
1、抓包
2、查壳脱壳
3、反编译
4、参数定位、静态分析、动态调试
5、模拟调用、算法还原10.xposed hook原理
安卓所有的APP进程是用 Zygote(孵化器)进程进行fork创建并启动的。
Xposed替换了Zygote进程对应的可执行文件/system/bin/app_process,
每启动一个新的进程都会先启动xposed替换过的文件加载xposed相关代码。11.Frida hook原理
Frida的注入是基于 ptrace实现的。
frida 调用ptrace向目标进程注入了一个frida-agent-xx.so文件。
后续hook是以该so文件和frida-server通讯实现的。Frida hook java层原理Frida-java采用常见的Dalvik Hook方案将待hook的java函数修改为native函数当调用该函数时会执行自定义的native函数。
但是和其他hook框架不同的是使用frida时我们hook的代码是JS实现的所以有一个基于JS代码生成native函数过程。12.ptrace注入流程
主要是通过系统ptrace函数进行实现。
1.attach到远程进程
2.保存寄存器环境
3.远程调用mmap函数分配内存空间
4.想远程进程写入加载模块名称和调用函数
5.通过dlopne打开注入模块
6.dlsym获取调用函数地址
7.远程调用注入模块的函数
8.恢复寄存器
9.剥离远程进程13.Frida常见反调试
1. 检测 frida-server 文件名
2. 检测 27042 默认端口
3. 检测 D-Bus
4. 检测 /proc/pid/maps 映射文件
5. 检测 /proc/pid/tast/tid/stat
6. 双进程保护 前两种可以通过修改 frida-server 文件名改默认端口绕过。双进程可以通过 - f spawn 模式启动绕过。其他的需要 hook 修改。 14.Inlinehook
inlinehook是hook的一种实现方式。通过修改原函数开头的汇编指令直接跳转到指定函数执行完自己的逻辑再跳转回来。
开源的inlinehook库有很多例如subhook和微软的Detours。如何去检测inlinehook
inlinehook只修改了内存中的机器码而内存中的机器码是从文件加载而来的所以我们可以将函数在内存中字节和本地对应的字节进行比较
如果不一致那么可以认为内存中的字节被修改了即被inlinehook了。15.加固与脱壳
现在安卓平台上几种加固方式动态加载类抽取混淆vmp1、Dex整体加固也被称为第一代加固把DEX整体加密然后动态加载。脱壳思路是app运行后在app内存中搜索 dex\n035
然后进行dump数据。
2、不落地加载是第二代加固通过内存动态加载Dex可以将Dex加密放在Apk中
在内存中实现解密。脱壳思路是通过hook关键函数直接在内存中把Dex遍历出来就可以。
3、指令抽取和转换。脱壳思路是对自定义的JNI接口对象进行内部调试分析得到完整的原始dex文件。
4、虚拟机源码保护。根据VMProtect壳的特征和加壳方式编写脱壳程序还原原始的程序代码
将还原后的程序代码重新编译生成程序可执行文件。16.设备指纹
常见品牌型号、IMEI、MAC地址、IMSI、运营商、系统信息、硬件信息、蓝牙信息、路由信息等。17.其他安卓问题
1、系统服务
2、系统权限
3、安卓反调试
4、重打包检测
5、ollvm
6、不同协议的抓包问题
7、群控开发、改机
8、IDA使用问题
9、ARM跳转指令