网站入侵

网站入侵,入侵渗透,怎么样入侵网站,黑客怎么拿站,黑客接单

Android渗透测试之对设备进行流量分析

                       

本章将研究 Android 设备的网络流量,并分析平台和应用程序的流量数据。通常,应用程序会在其网络数据中泄露敏感信息,因此发现它是渗透测试程序中最重要的任务之一。此外,您还经常遇到通过不安全的网络协议进行身份验证和会话管理的应用程序。因此,在本章中,我们将学习如何拦截和分析 Android 设备中各种应用程序的流量。

4.1 Android 流量拦截

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

4.2 流量分析

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

  • 被动分析:这是一种流量分析方法,其中应用程序发送的网络数据不会被拦截。相反,我们将尝试在网络分析器(如Wireshark)打开它,试着找出应用程序中的漏洞或安全问题。
  • 主动分析:在主动分析中,渗透测试人员将主动拦截所有正在进行的网络通信,并可以立即分析、评估和修改数据。在这里,他需要设置代理,所有由应用/设备生成和接收的网络流量都将通过代理。

被动分析

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

  • 我们从 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 执行命令。输出类似于以下屏幕截图:
  • 这里的下一步是将军tcpdump二进制文件被推到设备中的一个位置。我们还必须记住,我们需要继续执行此文件。因此,我们将其推到一个位置,我们可以改变权限,实施二进制来捕获流量。
  • 现在,继续使用adb的push命令推送二进制将二进制推送到设备。同样,当我们需要从设备中提取内容时,我们也可以使用它pull而不是push。
  • 我们将在这里使用它adb push把它推到 Android 中的/data/local/tmp:adb push tcpdump-arm /data/local/tmp/tcpdum
  • 一旦我们将tcpdump二进制推送到设备,然后需要使用adb在 shell 中间访问设备,更改二进制权限。如果我们试图运行tcpdump,它会给我们一个权限错误,因为我们没有执行权限。为了更改权限,我们需要访问/data/local/tmp,使用chmod命令,并授予其权限777,这意味着应用程序将拥有所有权限。以下屏幕截图显示了上述命令的结果输出:
  • 这里的最后一步是开始tcpdump并将输出写入.pcap文件。使用-s,-v和-w标志启动tcpdump。参照以下描述:
    • -s:这意味着从每个封包中提取给定字节的数据(我们的例子是 0),而不是默认的 65535 字节。
    • -v:这表明详细输出。
    • -w:这表明写入原始数据包的文件名。例如,我们可以使用它./tcpdump -v -s 0 -w output.pcap,以便将所有文件写入output.pcap,并输出详细信息。
  • 在流量捕获执行期间,打开手机浏览器并访问http://attify.com/data/login.html漏洞登录表通过 HTTP 发送所有数据并使用 GET 请求:
  • 用户名在这里使用android和密码mysecretpassword登录应用程序。
  • 我们现在可以随时通过adb shell终止服务流程(使用)Ctrl C)。下一步是将捕获的信息从设备拉到我们的系统。为此,我们将简单地使用它adb pull如下:adb pull /data/local/tmp/output.pcap output.pcap
  • 你可能还需要改变output.pcap拉它的权限。在这种情况下,只需执行以下命令:chmod 666 output.pcap
  • 一旦我们下载了捕获的网络数据.pcap文件,我们可以在 Wireshark 打开它,分析流量。在这里,我们将尝试找到捕获的登录请求。我们可以从网站上找到http://www.wireshark.org/download.html下载 Wireshark。一旦下载并安装,打开 Wireshark 并打开我们新提取的文件output.pcap,通过访问File | Open。一旦我们在 Wireshark 中打开.pcap我们会注意到一个屏幕,如下面的截图所示:Wireshark 是一种帮助我们找到敏感信息并分析来自所有网络连接的流量数据的开源包分析器。在这里,我们正在搜索我们http://attify.com请求,并输入我们的登录凭证。
  • 现在,访问Edit并单击Find Packets。在这里,我们需要找到我们提交登录凭证的网站并进行检查String。
  • 在这里,我们可以看到和http://attify.com/data/login.html连接。如果我们在底部窗格中找到更多关于这个数据包的信息,我们可以看到包含我们输入的用户名和密码的请求网站。
  • 因此,我们使用它tcpdump成功捕获网络数据并存储在中.pcap然后在文件中使用 Wireshark 分析。但也可以通过被动流量捕获。adb shell直接完成。

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

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

    emulator -avd Android_Pentesting --tcpdump trafficcapture.pcap

    主动分析

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

  • 为了为 HTTP 创建代理,请使用指定代理 IP 和端口-http-proxy标志启动模拟器。我们使用它,因为我们在同一个系统上运行模拟器。IP127.0.0.1还有任何可用的端口。在这种情况下,我们使用端口 8080。emulator -avd Android_Pentesting –http-proxy 127.0.0.1:8080
  • 我们也可以访问设备Settings | Wi-Fi,然后长按我们连接的网络 Wi-Fi。另外,如果我们使用实际设备,我们用来拦截的系统应该在同一个网络上。
  • 一旦我们长按 Wi-Fi 连接,我们将得到一个屏幕,类似于下面的截图。此外,如果您使用真实的设备来执行此练习,设备需要位于同一网络的代理。
  • 一旦进入连接修改屏幕,请注意代理配置会询问网络上的设备 IP 代理系统的地址和端口。然而,这些设置只存在于 4.0 最新版本的 Android 中间。如果要小于 4.0在 设备上实现代理,必须安装第三方应用程序,如 Play Store 上可用的 ProxyDroid。
  • 一旦我们在设备/模拟器中设置代理,请继续并启动 Burp 代理,拦截流量。Options选项卡中 Burp 代理的外观可以有效地拦截浏览器和应用程序的流量。
  • 我们还需要检查看不见的代理,以确保我们的代理也能捕获 nonproxy请求。(读者可以在 Burp 的网站http://blog.portswigger.net/2008/11/mobp-invisible-proxying.html详细了解不可见代理和非代理请求。
  • 打开浏览器并启动网站,以检查代理是否工作。然后我们可以看到它是否在代理中被拦截。
  • 正如我们在上面的屏幕截图中看到的,我们打开了 URLhttp://attify.com,请求现在显示在 Burp Proxy 屏幕。因此,我们成功地拦截了所有基于设备和应用程序的 HTTP 的请求。

    4.3 HTTPS 代理拦截

    当通过 HTTP 协议通信时,上述方法可正常用于应用和流量拦截。HTTPS 中,由于证书不匹配,我们将收到错误,因此我们无法拦截流量。

    然而,为了解决这一挑战,我们需要创建自己的证书或 Burp/PortSwigger 并将其安装在设备上。为了创建我们自己的证书,我们需要 Firefox(或任何其他浏览器或全球代理)设置代理:

  • 为了在 Firefox代理设置在 中,请访问Tools中显示的Options(Mac上为Firefox | Preferences),然后访问Advanced选项卡。在Advanced在选项卡下,我们单击Network选项。
  • 在Network我们需要点击标签Settings来使用 Firefox 代理配置。
  • 完成后,在我们的系统浏览器上访问 HTTPS 网站,我们可以拦截我们设备上的流量。在这里,我们将收到一个The Network is Untrusted消息。点击I understand the Risks,并点击Add Exception。
  • 然后,单击Get Certificate,最后单击View,然后单击Export保存证书。
  • 一旦证书保存在我们的系统上,我们现在可以使用adb把它推到我们的设备上。adb push portswiggerca.crt /mnt/sdcard/portswiggerca.crt
  • 现在,访问我们的设备Settings,在Personal在类别下,我们可以找到它Security。一旦我们进入Security,请注意,您可以选择 SD 卡安装证书。点击使我们能够保存具有给定名称的证书,适用于所有应用程序和浏览器,甚至 HTTPS 站点。
  • 回到我们的浏览器,打开 HTTPS 网站(例如https://gmail.com)来确认。正如我们在下面的截图中可以看到的,我们在这种情况下也成功地拦截了通信:
  • 其他用于拦截 SSL 流量方式

    还有用于 SSL 其他拦截流量的方法,以及在设备上安装证书的不同方法。

    其他方法之一是从 Android 设备的/system/etc/security位置拉取cacerts.bks文件。一旦我们把它拿走,我们就可以使用密钥工具和 Bouncy Castle(位于 Java 安装目录)生成证书。如果你在 Java 在安装目录中找不到 Bouncy Castle,也可以从http://www.bouncycastle.org/latest_releases.html下载并将其放置在已知路径上。之后,我们需要挂载/system分区作为读写分区,以便更新cacerts.bks将证书推回设备。但是,为了使这种变化长期有效,如果我们使用模拟器,我们将需要使用它mks.yaffs2创造新的system.img然后用它。

    此外,还有其他工具可以用来拦截 Android 设备流量,如C harles Proxy 和 MITMProxy(http://mitmproxy.org)。我强烈建议你在 Burp 在代理知识的基础上尝试,因为它们的可用性相同,但更强大。Charles Proxy 时,我们可以直接从www.charlesproxy.com/charles.crt下载证书。

    在一些渗透测试中,应用程序可能正在与服务器通信并响应。例如,假设用户试图访问应用程序的有限区域,应用程序由用户从服务器要求。然而,由于用户未经授权查看该区域,服务器使用403 Forbidden响应。现在,作为渗透测试人员,我们可以拦截流量并从403 响应Forbidden改为200 OK。因此,用户现在甚至可以访问未经授权的应用程序区域。第八章可以修改类似响应的示例ARM 在使用中发现,我们将讨论一些其他可以通过流量拦截的漏洞。

    在应用程序中,保护流量的安全方法是让所有内容通过 HTTPS 传输,并在应用程序中包含一个证书。这使得当应用程序尝试与服务器通信时,它将验证服务器证书是否对应于应用程序中存在的证书。但是,如果有人正在进行渗透测试并拦截流量,则由渗透测试程序添加的设备使用的新证书(如 portswigger 证书)与应用程序中存在的证书不匹配。在这种情况下,我们必须逆向工程应用程序,并分析如何验证证书。我们甚至可能需要修改和重新编译应用程序。

    4.4 用封包捕获提取敏感文件

    现在让我们来看看如何使用 Wireshark 从流量数据中提取敏感文件。为此,我们可以捕获数据包并加载到 Wireshark 进行分析。

    从网络捕获中提取文件的基本概念是,它们包含指定文件类型的头部(multipart/form-data)。以下是从网络流量捕获中提取任何类型文件的步骤:

  • 在 Wireshark 只需访问编辑并从包的详细信息中搜索字符串multipart。
  • 一旦我们收到向服务器发送 POST 请求的数据包(或极少数情况下是 GET),单击右键的数据包,然后单击Follow TCP Stream。
  • 此后,根据文件的起始值(如 PDF 的情况是%PDF),从以下选项中选择Raw,然后使用扩展名.pdf保存文件。因此,我们有最终的 PDF,通过 Android 设备上传到网站,我们碰巧在我们的渗透中打开了网络捕获。
  • 我们也可以使用其他工具,如 Windows 上的 NetworkMiner(可从http://www.netresec.com/?page=NetworkMiner下载),它提供了一个精心构建的 GUI 与之互动,并显式指定保存的网络流量捕获文件。
  • 总结

    在本章中,我们了解到 Android 设备上执行流量分析的各种方法。此外,我们会继续拦截来自应用程序和浏览器的 HTTP 和 HTTPS 流量数据。我们还看到了如何从网络捕获信息中提取敏感文件。

    下一章我们将介绍 Android 取证,在不同工具的帮助下,从 Android 从设备中提取一些敏感信息。

           

    发表评论:

    Powered By

    Copyright Your WebSite.Some Rights Reserved.