APP攻防-资产收集篇&反证书检验&XP框架&反代理VPN&数据转发&反模拟器

简介: APP攻防-资产收集篇&反证书检验&XP框架&反代理VPN&数据转发&反模拟器

常见问题


没有限制过滤的抓包问题:

1、抓不到-工具证书没配置好

2、抓不到-app走的不是http/s

有限制过滤的抓包问题:

3、抓不到-反模拟器调试

4、抓不到-反代理VPN

5、抓不到-反证书检验


做移动安全测试时,设置好了代理,但抓不到数据包

反抓包Demo:https://github.com/AndroidAppSec/vuls

反调试Demo:https://github.com/lamster2018/EasyProtector


防护手段

1、反模拟器:禁用模拟器进行调试访问

部分监测可以通过虚拟机中修改模拟机配置进行绕过

虚拟的机型手机号等信息

2、反证书检验:SSL证书绑定(单向校验和双向校验)

单项校验-客户端校验服务端的证书。

//使用OkHttp进行SSL证书固定(SSL Pinning)
public class SSLPinningActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sslpinning);
    }
    //配置了两个CertificatePinner,分别用于验证特定的域名和相应的证书指纹。
    //对"www.baidu.com"和"www.sohu.com"两个域名的证书指纹。这意味着应用将只信任这些网站使用指定证书指纹的SSL证书。如果服务器返回的SSL证书不匹配指定的证书指纹,请求将会失败。
    public void okhttp3(View view) {
        CertificatePinner leafCertPinner = new CertificatePinner.Builder()
                .add("www.baidu.com", "sha256/M9Hz16jmJjXzPUkH8FUKG2GZLd/55sT6yCNiQgwfNtk=")
                .add("www.sohu.com", "sha256/MQ==")
                .build();
        CertificatePinner intermediateCertPinner = new CertificatePinner.Builder()
                .add("*.baidu.com", "sha256/IQBnNBEiFuhj+8x6X8XLgh01V9Ic5/V3IRQLNFFc7v4=")
                .build();
        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .certificatePinner(leafCertPinner)
                .certificatePinner(intermediateCertPinner)
                .build();
        Request.Builder builder = new Request.Builder();
        Request request = builder.get().url("https://www.baidu.com/").build();
        Call call = okHttpClient.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                e.printStackTrace();
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(SSLPinningActivity.this, "请求失败", Toast.LENGTH_LONG).show();
                    }
                });
            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                final int code = response.code();
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(SSLPinningActivity.this, "请求成功" + code, Toast.LENGTH_LONG).show();
                    }
                });
            }
        });
    }
}

这是使用真机进行测试

首先刷入Magisk面具

然后使用Lsposed 或者Xposed加载JustTrustme模块进行绕过客户端证书校验

这样基本上就绕过了客户端对服务端SSL证书的检测

其中涉及的操作包括:(可能哪一步操作不慎手机就变成了转🧱)


  1. 使用pixel或者小米等机型进行刷机,一般root后系统会出现magisk APP
  2. 然后使用magisk对刷机包中的boot文件进行修补,进行手机fastboot后进行刷入,这样magisk才算完整
  3. 后面使用PC端进行抓包的时候需要将证书(Charles或者Burp)导入到手机上
  4. android 7之前证书可以直接导入到系统区,android 7之后版本系统只信任系统证书(现在手机基本上都是android12+),需要借助到move cert模块进行移动(move cert github上的zip不能直接导入magisk中) 可以参考https://blog.csdn.net/puppyinasock/article/details/130207403

用户证书目录:/data/misc/user/0/cacerts-added

系统证书目录:/etc/security/cacerts

  1. 导入move cert模块后重启手机,用户区证书就自动移动到系统证书目录下

d865da483b9c6cd0aba85aeabc1d271f_c2ad47199cd64e46b1f2c963b8fa27a6.png

  1. 导入证书后可以抓到https的包,绕过证书需要在Lsposed上导入JustTrustMe模块(Lsposed是在Magisk上导入的)


注:Magisk更多用于对系统的修改、Xposed/LSPosed(android8.0以上的替代品)更多用于对用户软件的修改

差不多就这么多操作,不过操作起来却是挺复杂的


双向认证-客户端不仅仅要校验服务端的证书,

也会在app内放一张证书;服务端也会检验客户端里的证书。


3、反代理VPN:代理检测、VPN检测、发包框架强制不走代理

配置代理后无法访问,数据异常等

连接VPN节点后无法访问,数据异常等

配置代理后正常访问且无任何异常,但无数据包

使用系统代理打开后显示

示例检测代码:

代码通过调用System.getProperty(“http.proxyHost”)和System.getProperty(“http.proxyPort”)方法来获取HTTP代理的主机名和端口号。如果返回的值不为null,表示设备已经设置了HTTP代理。


绕过手段:

1、用APP工具设置-Postern&SocksDroid

2、用PC工具设置-Proxifier

3、逆向删反代码重打包

相关文章
|
1天前
|
存储 移动开发 API
使用kotlin Jetpack Compose框架开发安卓app, webview中h5如何访问手机存储上传文件
在Kotlin和Jetpack Compose中,集成WebView以支持HTML5页面访问手机存储及上传音频文件涉及关键步骤:1) 添加`READ_EXTERNAL_STORAGE`和`WRITE_EXTERNAL_STORAGE`权限,考虑Android 11的分区存储;2) 配置WebView允许JavaScript和文件访问,启用`javaScriptEnabled`、`allowFileAccess`等设置;3) HTML5页面使用`<input type="file">`让用户选择文件,利用File API;
|
20天前
|
开发框架 小程序 前端开发
uni-app前端应用开发框架
uni-app对做移动端开发的来说应该无人不知、无人不晓了吧?!从名字就能看出来这个框架要干啥,unify app——没错,就是统一前端应用开发,不管你是小程序、app、还是H5、公众号,用这个框架都能做。uni-app让开发者编写一套代码,就可以编译为安卓app、ios app、微信小程序、抖音小程序、支付宝小程序等十几个平台,而且马上支持纯血鸿蒙了,这简直是个人、开发工作室、小型开发公司的福音,开发一些常规的app、小程序,用这个框架足够了。
26 7
|
26天前
|
安全 网络安全 Windows
【Azure App Service】遇见az命令访问HTTPS App Service 时遇见SSL证书问题,暂时跳过证书检查的办法
在访问App Service的KUDU工具或使用`az webapp deploy`时遇到SSL错误:`SSL: CERTIFICATE_VERIFY_FAILED`。解决方法是临时禁用Azure CLI的SSL验证。在PowerShell中,设置`$env:ADAL_PYTHON_SSL_NO_VERIFY`和`$env:AZURE_CLI_DISABLE_CONNECTION_VERIFICATION`为1;在Windows命令提示符中,使用`set AZURE_CLI_DISABLE_CONNECTION_VERIFICATION=1`。注意,这可能引入安全风险,应仅在必要时使用。
|
24天前
|
开发框架 移动开发 JavaScript
SpringCloud微服务实战——搭建企业级开发框架(四十七):【移动开发】整合uni-app搭建移动端快速开发框架-添加Axios并实现登录功能
在uni-app中,使用axios实现网络请求和登录功能涉及以下几个关键步骤: 1. **安装axios和axios-auth-refresh**: 在项目的`package.json`中添加axios和axios-auth-refresh依赖,可以通过HBuilderX的终端窗口运行`yarn add axios axios-auth-refresh`命令来安装。 2. **配置自定义常量**: 创建`project.config.js`文件,配置全局常量,如API基础URL、TenantId、APP_CLIENT_ID和APP_CLIENT_SECRET等。
|
26天前
|
安全 JavaScript 前端开发
kotlin开发安卓app,JetPack Compose框架,给webview新增一个按钮,点击刷新网页
在Kotlin中开发Android应用,使用Jetpack Compose框架时,可以通过添加一个按钮到TopAppBar来实现WebView页面的刷新功能。按钮位于右上角,点击后调用`webViewState?.reload()`来刷新网页内容。以下是代码摘要:
|
1月前
|
缓存 Android开发 Kotlin
【安卓app开发】kotlin Jetpack Compose框架 | 先用OKhttp下载远程音频文件再使用ExoPlayer播放
使用 Kotlin 的 Jetpack Compose 开发安卓应用时,可以结合 OkHttp 下载远程音频文件和 ExoPlayer 进行播放。在 `build.gradle` 添加相关依赖后,示例代码展示了如何下载音频并用 ExoPlayer 播放。代码包括添加依赖、下载文件、播放文件及简单的 Compose UI。注意,示例未包含完整错误处理和资源释放,实际应用需补充这些内容。
|
2月前
|
开发者 iOS开发
苹果证书的申请与发布app
苹果证书的申请与发布app
29 2
|
2月前
mallocstacklogging和MallocStackLoggingNoCompact引起的app文稿数据快速增加
mallocstacklogging和MallocStackLoggingNoCompact引起的app文稿数据快速增加
27 0
|
2月前
|
前端开发 JavaScript 搜索推荐
react-app框架——使用monaco editor实现online编辑html代码编辑器
react-app框架——使用monaco editor实现online编辑html代码编辑器
92 3
|
2月前
|
存储 JavaScript 前端开发
uni-app 从vue3项目创建到Pinia管理数据全局使用 持久化存储数据 详细教程
uni-app 从vue3项目创建到Pinia管理数据全局使用 持久化存储数据 详细教程