移动端渗透测试解决方案
shutTD 发表于 广东 移动安全 1570浏览 · 2024-05-15 16:48

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

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

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

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

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

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


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

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

@echo off
setlocal
set BASENAME=apktool_
chcp 65001 2>nul >nul

set java_exe=java.exe

if defined JAVA_HOME (
set "java_exe=%JAVA_HOME%\bin\java.exe"
)

rem Find the highest version .jar available in the same directory as the script
setlocal EnableDelayedExpansion
pushd "%~dp0"
if exist apktool.jar (
    set BASENAME=apktool
    goto skipversioned
)
set max=0
for /f "tokens=1* delims=-_.0" %%A in ('dir /b /a-d %BASENAME%*.jar') do if %%~B gtr !max! set max=%%~nB
:skipversioned
popd
setlocal DisableDelayedExpansion

rem Find out if the commandline is a parameterless .jar or directory, for fast unpack/repack
if "%~1"=="" goto load
if not "%~2"=="" goto load
set ATTR=%~a1
if "%ATTR:~0,1%"=="d" (
    rem Directory, rebuild
    set fastCommand=b
)
if "%ATTR:~0,1%"=="-" if "%~x1"==".apk" (
    rem APK file, unpack
    set fastCommand=d
)

:load
"%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% %*

rem Pause when ran non interactively
for %%i in (%cmdcmdline%) do if /i "%%~i"=="/c" pause & exit /b


当文件夹下cmd输入apktool.bat出现以下图就行

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

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

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


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

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

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

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

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

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

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

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

0 条评论
某人
表情
可输入 255
目录