所有快照都上天堂了

图片替代 现在我们都使用银行应用程序。 我们认为这是方便,快捷且安全的。 银行甚至输入了其他个人识别码,因此,即使您丢失了手机,或者手机落入了局外人的手中,您的资金和机密数据也受到了保护。 太酷了! 银行关心我们的安全!

但是,不幸的是,如果您在任务管理器中打开同一个银行应用程序,您将看到其屏幕上的所有内容(例如,有关帐户,银行卡的信息,以及与银行员工讨论过的聊天内容)。 您可以在您的银行应用程序上进行检查。 我研究了所有最著名的东西-当您在后台时,它们都不会隐藏机密信息。

例如,我在抽象页面上弄碎了抽象罐头。 现在,我将立即向您提出一个问题:您是否打算将钱转给您的妈妈/女友/狗,您已经在转账页面上,并离开了应用程序以复制短信中的代码(如果您因偏执狂而拒绝访问银行应用程序),或者看到任何信息。 但是,当您再次决定返回银行应用程序时,会选择哪个屏幕?

正如我们所看到的,在您看到两个绝对相同的屏幕之前,您可能并不着急。 您单击最后一个应用程序,转到它,输入数据,瞧,您的钱已被转账。 他们是从哪里转移的? 给谁

不仅是那个抽象的银行,我还研究了几个最受欢迎的银行,它们都遭受了这样的问题。

图片替代

有趣的是,在iOS端,任务管理器中的屏幕内容被隐藏。

图片替代

对此有一个解释。 但是稍后,我们将讨论Android。 那么,如果用户离开了应用程序,为什么还要隐藏屏幕内容呢?

首先让我们了解屏幕管理器的工作方式(“最近的屏幕”)


图片替代

在此屏幕上,我们看到以前打开的应用程序的列表。 我们甚至看到了停止与特定应用程序交互的位置。 但是事实是我们看不到应用程序本身,而是看到了在退出应用程序之前完成的快照。

实际发生的情况(简短):


  • 该应用已切换到后台
  • 窗口管理器将应用程序快照放入GraphicBuffer
  • 通过Binder将GraphicBuffer发送到SystemUI来预览应用程序。

因此,我们在这里看到的不是应用程序的内容,而是在特定应用程序过渡到后台之前的最后一瞬间拍摄的快照。

但是,您猜到了,并不是所有的事情都那么简单,您可以访问这些快照,例如,还可以在“最近”屏幕中向用户显示另一个以银行为幌子的应用程序,这是Trojans所使用的。 用户返回到银行应用程序,输入所有请求的详细信息,将钱转账,但是根本不转账。

或者,您也可以简单地将这些图片发送到例如中国,在那里,苛刻的中国人会积累有关所有人的信息。 可以无休止地考虑使用获取的屏幕截图的方法。

当然,在大多数情况下,银行业务应用程序或包含不希望窥探的任何关键信息的应用程序都需要注意隐藏机密数据。

仅在特定的应用程序中才可以拒绝制作快照或将其蓝化。 该文档还说,只有设备制造商才能修改负责接收和存储快照的机制的类。

如何防止系统做快照


不幸的是,有几种方法,并不是所有人都非常乐观。 如果要在应用程序中使用它们中的任何一个,请确保一切在所有设备上都能正常运行。

您可以为活动设置参数:

android:excludeFromRecents = "true" 

但是,此方法将违反用户与应用程序进行交互的逻辑,因为该应用程序将根本不会出现在“最近”屏幕中。

 if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) { getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE); } setContentView() 

此方法没有违反交互逻辑,但是系统开始将应用程序屏幕的内容视为受保护,不允许创建快照。 以下是此示例在“最近”屏幕中的外观示例。

此外,还有一种跟踪onPause()的方法。 但是在这里,您必须不断将准备好的视图保持在View.GONE状态,以便当应用程序进入后台时,您可以使View.VISIBLE。 但这也不是很可靠,因为不幸的是,无法控制快照删除的时间。

顺便说一句,购物车很可能会怀疑:)屏幕上是一个秘密聊天,在这种情况下使用FLAG_SECURE。

图片替代

那么,为什么银行要在iOS平台上隐藏应用程序的内容(因此被认为更安全(这具有误导性)),而将其保留在Android平台上呢? 他们很可能不喜欢该应用程序在“最新消息”屏幕中的外观。 那只是一块白色的帆布。 在iOS中,该实现可让您做得漂亮。 结果,为了美观,我们受到了安全性的损害。 也许您不在乎,只要您的钱是您想要的,并且数据的机密性是不可动摇的。 但是,您准备付款了吗?

因此,为了不至于如此悲观地结束,我们将提出一个问题:对于Android而言,它是否也能做到美观? 实际上,我已经想出了一种方法,但是首先您需要对其进行测试。

如果您对此主题感兴趣,我可以从内部描述它们的工作方式。 如何获取有关移动应用程序漏洞的快照,android系统如何工作。

我决定挑战自己,并定期写一些有用的东西。 我将在电报的@paradisecurity频道中发布草图,然后将其收集在完整的帖子中。 再见再见

Source: https://habr.com/ru/post/zh-CN431024/


All Articles