专栏名称: 看雪学苑
致力于移动与安全研究的开发者社区,看雪学院(kanxue.com)官方微信公众帐号。
目录
相关文章推荐
默安科技  ·  GenAI赋能宵明CSPM保障多云安全:从A ... ·  13 小时前  
全国网安标委  ·  关于举办2025年供应链安全国家标准贯标应用 ... ·  昨天  
西安头条  ·  陕西一高校将设立“华为学院” ·  昨天  
西安头条  ·  陕西一高校将设立“华为学院” ·  昨天  
甘肃商务  ·  强化全流程管理 ... ·  昨天  
甘肃商务  ·  强化全流程管理 ... ·  昨天  
漳视新闻  ·  刚刚通知:退钱了!退钱了!退钱了! ·  3 天前  
漳视新闻  ·  刚刚通知:退钱了!退钱了!退钱了! ·  3 天前  
51好读  ›  专栏  ›  看雪学苑

Android 渗透测试学习手册(四)对 Android 设备进行流量分析

看雪学苑  · 公众号  · 互联网安全  · 2017-02-24 18:10

正文

在本章中,我们将研究 Android 设备的网络流量,并分析平台和应用程序的流量数据。 通常应用程序会在其网络数据中泄漏敏感信息,因此发现它是渗透测试程序最重要的任务之一。

此外,你经常会遇到通过不安全的网络协议执行身份验证和会话管理的应用程序。 因此,在本章中,我们将学习如何拦截和分析 Android 设备中,各种应用程序的流量。


4.1  Android  流 量 拦 截

根据 OWASP 移动 Top10( https://www.owasp.org/index.php/Project/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Risks ) ,不完善的传输层保护是第三大威胁。实际上,假设一个应用程序通过 HTTP 将用户的登录凭据提交到服务器。 如果用户位于咖啡店或机场,并在有人嗅探网络时登录到他的应用程序,会怎么样? 攻击者能够获得特定用户的整个登录凭据,它以后可能用于恶意目的。 假设应用程序正在通过 HTTPS 进行身份验证,通过 HTTP 的会话管理,并且在请求中传递身份验证 Cookie。 在这种情况下,攻击者也能够通过在执行中间人攻击时拦截网络来获取身份验证 Cookie。 使用这些认证 cookie,他可以直接作为受害用户登录到应用程序。


4.2  流 量 分 析 方 式

在任何情况下都有两种不同的流量捕获和分析方法。 我们将研究 Android 环境中可能的两种不同类型,以及如何在真实场景中执行它们。 被动和主动分析如下:

  • 被动分析 :这是一种流量分析的方法,其中应用程序发送的网络数据不会被拦截。 相反,我们将尝试捕获所有网络数据包,然后在网络分析器( 如Wireshark) 中打开它,然后尝试找出应用程序中的漏洞或安全问题。

  • 主动分析 :在主动分析中,渗透测试者将主动拦截所有正在进行的网络通信,并可以即时分析,评估和修改数据。 这里,他需要设置代理,并且由应用/设备生成和接收的所有网络流量会通过该代理。

被 动 分 析

被动分析的概念是将所有网络信息保存到特定文件中,之后使用数据包分析器查看。 这就是我们将在 Android 设备中进行被动分析。 我们将使用 tcpdump 来将所有的信息保存到设备中一个位置。 此后,我们将该文件拉取到我们的系统,然后使用 Wireshark 或 Cocoa 包分析器查看它。 请参阅以下步骤:

  1. 我们从 Timur Alperovich 的网站 http://www.eecs.umich.edu/~timuralp/tcpdump-arm 下载为 ARM 编译的 tcpdump 二进制文件。 如果我们需要,我们还可以下载 tcpdump 的原始二进制文件并交叉编译( 为 Android 交叉编译你的二进制文件,请按照链接 http://machi021.blogspot.jp/2011/03/compile-busybox-for-android.html 。链接展示了交叉编译 BusyBox,但相同的步骤可以应用于 tcpdump ) 。


    一旦我们下载了 tcpdump ,我们可以通过在我们刚刚下载的二进制上执行一个文件,来确认它是否为 ARM 编译。对于 Windows 用户,你可以使用 Cygwin 来执行命令。 输出类似于以下屏幕截图中所示:

  2. 这里的下一步是将 tcpdump 二进制文件推送到设备中的一个位置。 我们还必须记住,我们需要继续执行这个文件。 因此,我们将它推送到一个位置,我们可以从中更改权限,以及执行二进制来捕获流量。

  3. 现在,继续并使用 adb pu sh 命令推送二进制来将二进制推送到设备。 同样,在我们需要从设备中拉取内容的情况下,我们可以使用 pull 而不是 push

  4. 这里,我们将使用 adb pus h 将其推送到 Android 中的 /data/local/tmp

    adb push tcpdump-arm /data/local/tmp/tcpdum

  5. 一旦我们将 tcpdump 二进制推送到设备,然后需要使用 adb shell 中访问设备,并更改二进制的权限。 如果我们试图运行 tcpdump ,它会给我们一个权限错误,因为我们没有执行权限。


    为了更改权限,我们需要访问 /data/local/tmp ,使用 chmod 命令,并授予其权限 777 ,这意味着应用程序将具有所有权限。 以下屏幕截图显示了上述命令的结果输出:

  6. 这里的最后一步是启动 tcpdump 并将输出写入 .pcap 文件。 使用 -s -v -w 标志启动 tcpdump 。 参考以下描述:

    -s :这表示从每个封包抽取给定( 在我们的例子中为 0) 字节的数据,而不是默认的65535 字节。

    -v :这表明详细输出。

    -w :这表明写入原始数据包的文件名。 例如,我们可以使用 ./tcpdump-v-s 0 -w output.pcap ,以便将所有文件写入 output.pcap ,并输出详细信息。

  7. 在流量捕获执行期间,打开手机浏览器并访问位于 http://attify.com/data/login.html 的漏洞登录表单,该表单通过 HTTP 发送所有数据并使用 GET 请求:

  8. 这里使用用户名 android 和密码 mysecretpassword 登录应用程序。

  9. 我们现在可以在任何时候通过 adb shell 服务终止进程( 使用 Ctrl + C ) 。 下一步是将捕获的信息从设备拉取到我们的系统。 为此,我们将简单地使用 adb pull 如下:

    adb pull /data/local/tmp/output.pcap output.pcap

  10. 你可能还需要更改 output.pcap 的权限才能拉取它。 在这种情况下,只需执行以下命令:

    chmod 666 output.pcap

  11. 一旦我们下载了捕获的网络数据的 .pcap 文件,我们可以在 Wireshark 中打开它并分析流量。 在这里,我们将尝试查找捕获的登录请求。 我们可以从网站 http://www.wireshark.org/download.html 下载 Wireshark。 一旦下载并安装完毕,打开 Wireshark 并在里面打开我们新拉取的文件 output.pcap ,通过访问 File | Open
    一旦我们在 Wireshark 中打开 .pcap 文件,我们会注意到一个类似下面截图所示的屏幕:

    Wireshark 是一个开源封包分析器,它帮助我们发现敏感信息,并分析来自所有网络连接的流量数据。 在这里,我们正在搜索我们对 http://attify.com 所做的请求,并输入了我们的登录凭据。

  12. 现在,访问 Edit 并单击 Find Packets 。 在这里,我们需要查找我们提交登录凭据的网站,并检查 String

  13. 在这里,我们可以看到与 http://attify.com/data/login.html 的连接。 如果我们在底部窗格中查找有关此数据包的更多信息,我们可以看到包含我们输入的用户名和密码的请求网址。


    因此,我们使用 tcpdump 成功捕获了网络数据,并将其存储在 .pcap 文件中,然后使用Wireshark 进行分析。 然而,被动流量捕获也可以通过 adb shell 直接完成。

    adb shell /data/local/tmp/tcpdump -i any -p -s 0 -w /mnt/sdcar/output.pcap

    这里, -i 代表接口。 在这种情况下,它从所有可用接口捕获数据。 -p 指定 tcpdump 不将设备置于混杂模式( 这是在执行嗅探攻击时经常使用的模式,并且不适合我们目前使用的模式) 。 在使用 -tcpdump 标志启动模拟器时,我们还可以指定使用 tcpdump 。 我们还需要使用 -avd 标志,指定要捕获流量的 AVD 名称。

    emulator -avd Android_Pentesting --tcpdump trafficcapture.pcap

主 动 分 析

主动分析的基本规则是,使每个请求和响应通过我们定义的中间设备。 在这种情况下,我们将设置一个代理,并使所有请求和响应通过该特定代理。 此外,我们可以选择操纵和修改请求和响应中的数据包,从而评估应用程序的安全性:

  1. 为了为 HTTP 创建代理,请使用指定代理 IP 和端口以及 -http-proxy 标志启动模拟器。

    由于我们在同一个系统上运行模拟器,我们使用IP 127.0.0.1







请到「今天看啥」查看全文