移动端渗透测试解决方案

admin 2024年7月23日16:19:21评论32 views字数 3906阅读13分1秒阅读模式
  1. 文章来源: https://xz.aliyun.com/t/14513

最近在做移动应用方向的渗透测试,实际操作过程中有非常多的麻烦以前是没注意到的,所以今天仔细总结一下有关移动应用的渗透测试一些问题的解决方案。我将从移动应用服务端和客户端(包括Android和ios)进行讲述。
1. 服务端

  1. 这里只说在没有真机的情况下如何进行渗透测试,有关这方面的文章太多了这里就不过多说了,现在用来展示的就是夜神模拟器。但是实际上大多数文章都只是直接在bp中下好的证书直接装在模拟器里面进行抓包,确实对于大部分的app是都没有做防护直接能够抓到包的,但这次测的这个app确实十分的狡诈,在系统登录之前是可以直接抓包的但在登录之后发现bp一片死寂还以为出毛病了,但反复试过多次才发现是做了一定防护的,所以主要讲讲后面这个方法。
  2. 先上菜~:Burp + Charles + Postern + yeshen模拟器。
  3. Charles下载地址: https://www.charlesproxy.com/
  4. 激活地址:https://www.zzzmode.com/mytools/charles/
  5. Postern就是安卓代理工具可以使用socks5代理,可以替换成其他的代理工具只要能设置socks5就行。
  6. Charles安装好后点击Help ==> Register 注册就行,名字自己取然后去激活地址填上把密钥粘过来就行,注册完成后需要先进行本机电脑证书的安装(注意这里的证书和手机的证书不同),Help ==> SSLProxying ==> install Charles certifaction 跟着安装就行,随后就需要下载手机端的证书了,直接访问 chls.pro/ssl 会自动下载pem证书直接装就行,证书安装过程就不过多说了和bp证书是一样的。
  7. 准备好后,点击Proxy ==> proxy settings ==> 勾选SOCKS5代理即可。

移动端渗透测试解决方案

  1. 端口自定义需要记住,等下在手机端设置代理时要用到。再点击Proxy ==> external proxy settings ==> 勾选Web ProxySecure Web Proxy,再设置Web Proxy Server bp上的代理即可抓包。

移动端渗透测试解决方案

  1. 打开yeshen模拟器安装好Poster,如果有什么弹窗关掉就行不影响正常使用。

移动端渗透测试解决方案

  1. 点击添加代理服务器,然后按下图填就行,服务器地址就填本机的IP地址,端口就是上面定义的,点击保存即可,其余的可以直接删掉。

移动端渗透测试解决方案

  1. 设置完后还需点左上角展开之后的配置规则(其实跟proxifier的操作差不多)。随后点击添加规则,如下图2.

移动端渗透测试解决方案

移动端渗透测试解决方案

  1. 保存完后就可以正常开bp进行抓包了~~,这里就不贴对比图了可以自己测试一下。

2. 客户端(Android)
拿到apk文件之后第一件事就是反编译源代码,而这里有个大问题就是一旦apk文件很大时比如五六百兆有些工具会爆内存所以这里使用的是apktool,可以直接去搜就行当然下下来的是apktool.jar,因此我们自己创建一个apktool.bat文件,内容就是:

  1. @echo off
  2. setlocal
  3. set BASENAME=apktool_
  4. chcp 65001 2>nul >nul
  5.  
  6. set java_exe=java.exe
  7.  
  8. if defined JAVA_HOME (
  9. set "java_exe=%JAVA_HOME%binjava.exe"
  10. )
  11.  
  12. rem Find the highest version .jar available in the same directory as the script
  13. setlocal EnableDelayedExpansion
  14. pushd "%~dp0"
  15. if exist apktool.jar (
  16. set BASENAME=apktool
  17. goto skipversioned
  18. )
  19. set max=0
  20. for /f "tokens=1* delims=-_.0" %%A in ('dir /b /a-d %BASENAME%*.jar') do if %%~B gtr !max! set max=%%~nB
  21. :skipversioned
  22. popd
  23. setlocal DisableDelayedExpansion
  24.  
  25. rem Find out if the commandline is a parameterless .jar or directory, for fast unpack/repack
  26. if "%~1"=="" goto load
  27. if not "%~2"=="" goto load
  28. set ATTR=%~a1
  29. if "%ATTR:~0,1%"=="d" (
  30. rem Directory, rebuild
  31. set fastCommand=b
  32. )
  33. if "%ATTR:~0,1%"=="-" if "%~x1"==".apk" (
  34. rem APK file, unpack
  35. set fastCommand=d
  36. )
  37.  
  38. :load
  39. "%java_exe%" -jar -Xmx1024M -Duser.language=en -Dfile.encoding=UTF8 -Djdk.util.zip.disableZip64ExtraFieldValidation=true -Djdk.nio.zipfs.allowDotZipEntry=true "%~dp0%BASENAME%%max%.jar" %fastCommand% %*
  40.  
  41. rem Pause when ran non interactively
  42. for %%i in (%cmdcmdline%) do if /i "%%~i"=="/c" pause & exit /b

移动端渗透测试解决方案当文件夹下cmd输入apktool.bat出现以下图就行

移动端渗透测试解决方案

用法就是:apktool d apk路径 -o 保存源码路径。

  1. 处理完反编译后需要模拟运行app去调试,这里我们需要用到Drozer(以下简称dz),dz是安卓应用测试框架,有关它的文章很多,但是绝大多数都停留在dz2的版本,这个版本下只能使用python2.7会导致用起来很麻烦,实际上dz是有在更新的(虽然很慢)看dzGitHub地址上已经有dz3的版本了,包括dz-agent也同步到3了,所以我们主要讲讲新的dz框架的使用。
  2. 先上需要备齐的菜:adb + kali(要有Docker) + dz3 + dz-agent3
  3. adbhttps://developer.android.google.cn/tools/releases/platform-tools?hl=zh-cn
  4. dz-agent3: https://github.com/WithSecureLabs/drozer-agent/releases/
  5. docker先拉取dz3docker pull withsecurelabs/drozer,再将dz-agent3apk拖到yeshen模拟器中即可。随后将adb的环境变量配好,cmd输入adb出现下图即可。

移动端渗透测试解决方案

  1. 因为这里我们是使用kali进行调试的会导致一个问题,也就是我们adb连接127.0.0.1:62001(yeshen模拟器的端口)时是可以直接连接的,但是我们连接192.x.x.x:62001地址时会失败,并且查询开放端口192地址也是不会开放的。

移动端渗透测试解决方案

移动端渗透测试解决方案

  1. 那我们怎么用kali去连接dz-agent呢?这里我们需要进行几次本机的端口转发才行,先将62001转发到18888端口:netsh interface portproxy add v4tov4 listenport=18888 listenaddress=0.0.0.0 connectport=62001 connectaddress=127.0.0.1
  2. 这个时候我们就去连18888端口就行了:adb connect xxxxxx:188888 ,发现连接成功。

移动端渗透测试解决方案

  1. 在模拟器里点击安装好的dz-agent,然后点击启动即可,dz-agent默认开启端口为31415.

移动端渗透测试解决方案

  1. 先需要用adb做一次转发:adb forward tcp:31415 tcp:31415

移动端渗透测试解决方案

  1. 同样这里的端口是kali无法直连的依旧需要同上述进行一次转发:netsh interface portproxy add v4tov4 listenport=18889 listenaddress=0.0.0.0 connectport=31415 connectaddress=127.0.0.1
  2. 转发完之后就可以用dz3去连接了,kali命令输入:docker run --net host -it withsecurelabs/drozer console connect --server xxxxx:18889

移动端渗透测试解决方案

  1. 然后就可以使用dz进行进一步的渗透测试了。

3. 客户端(ios)
因为有关ios确实接触的很少,所以一开始还是很懵逼的,主要要解决的还是反编译和调试的问题,ios调试还是老老实实掏真机测吧。ios后缀一般为apl实际上是可以用压缩包解压出文件夹的里面就包含有一个二进制启动文件这就是我们需要拿到的东西,但有的时候从网上下载ios的时候直接给你安装了是没有apl文件的,但其实到应用程序文件夹中去找到这个文件然后展示包内容一样可以获取该二进制文件,或者直接一样解压缩。

移动端渗透测试解决方案

然后一步一步往下翻,然后会找到启动应用的一个二进制文件(在mac中图标会是一个很明显的可执行文件,在window中无后缀是.file文件且文件大小比较大),然后直接拖入IDA中即可完成反编译,然后就可以翻翻一些敏感内容了。

移动端渗透测试解决方案

参考内容:
https://labs.withsecure.com/tools/drozer

声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。

原文始发于微信公众号(白帽子左一):移动端渗透测试解决方案

 

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月23日16:19:21
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   移动端渗透测试解决方案https://cn-sec.com/archives/2989598.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息