Alle Schnappschüsse kommen in den Himmel

Bild alt Jetzt verwenden wir alle Bankanwendungen. Es ist bequem, schnell und unserer Meinung nach sicher. Banken haben sogar zusätzliche PIN-Codes eingegeben, sodass Ihr Geld und Ihre vertraulichen Daten geschützt sind, selbst wenn Sie Ihr Telefon verlieren oder es in die Hände eines Außenstehenden fällt. Und es ist so cool! Banken kümmern sich um unsere Sicherheit!

Wenn Sie jedoch dieselbe Bankanwendung im Task-Manager öffnen, wird der gesamte Inhalt des Bildschirms angezeigt (z. B. Kontoinformationen, Bankkarte, Chat, in dem Sie etwas mit einem Bankangestellten besprochen haben). Sie können dies in Ihren Bankanwendungen überprüfen. Ich habe die berühmtesten studiert - und alle verbergen keine vertraulichen Informationen, wenn Sie im Hintergrund sind.

Zum Beispiel habe ich abstrakte Dosen auf abstrakten Seiten geknarrt. Und jetzt stelle ich Ihnen sofort eine Frage: Werden Sie Geld an Ihre Mutter / Freundin / Ihren Hund überweisen, befinden Sie sich bereits auf der Überweisungsseite und haben die Anwendung verlassen, um den Code aus der SMS zu kopieren (wenn Sie den Zugriff auf die Bankanwendung in einem Anfall von Paranoia verweigert haben), oder sehen Sie, welche Irgendwelche Informationen. Aber wenn Sie sich erneut entscheiden, zu Ihrer Bankanwendung zurückzukehren, welchen Bildschirm wählen Sie?

Wie wir sehen, werden Sie dies möglicherweise nicht bemerken, bevor Sie zwei absolut identische Bildschirme haben und es eilig haben. Sie klicken auf die letzte Bewerbung, gehen dorthin, geben die Daten ein und voila, Ihr Geld wurde überwiesen. Wohin wurden sie gebracht? Zu wem?

Und die Sache ist nicht nur in dieser abstrakten Bank, ich habe mir einige der beliebtesten Banken angesehen und sie alle leiden unter einem solchen Problem.

Bild alt

Interessanterweise ist auf der iOS-Seite der Inhalt des Bildschirms im Task-Manager ausgeblendet.

Bild alt

Und dafür gibt es eine Erklärung. Aber dazu später mehr, jetzt sprechen wir über Android. Warum also den Inhalt des Bildschirms ausblenden, wenn der Benutzer die Anwendung verlassen hat?

Lassen Sie uns zunächst verstehen, wie der Bildschirmmanager funktioniert (Bildschirm "Letzte").


Bild alt

Auf diesem Bildschirm sehen wir eine Liste unserer zuvor geöffneten Anwendungen. Es wird uns sogar der Ort gezeigt, an dem wir unsere Interaktion mit einer bestimmten Anwendung gestoppt haben. Tatsache ist jedoch, dass wir die Anwendung selbst nicht sehen, sondern einen Snapshot, der vor dem Beenden der Anwendung erstellt wird.

Was wirklich passiert (kurz):


  • Die Anwendung ist in den Hintergrund gewechselt
  • Window Manager fügt einen Anwendungs-Snapshot in GraphicBuffer ein
  • GraphicBuffer wird über Binder an SystemUI gesendet, um eine Vorschau der Anwendung anzuzeigen.

Was wir hier sehen, ist also nicht der Inhalt der Anwendung, sondern nur eine Momentaufnahme, die im letzten Moment vor dem Übergang einer bestimmten Anwendung in den Hintergrund aufgenommen wurde.

Aber Sie haben es erraten, es ist nicht so einfach. Sie können auf diese Schnappschüsse zugreifen und dem Benutzer beispielsweise auf dem Bildschirm "Letzte" eine andere Anwendung unter dem Deckmantel des Bankgeschäfts anzeigen, die von Trojanern verwendet wird. Der Benutzer kehrt zur Bankanwendung zurück, gibt alle angeforderten Daten ein, das Geld wird überwiesen, aber überhaupt nicht, wo wir möchten.

Oder Sie können diese Bilder einfach nach China senden, wo die harten Chinesen Informationen über alles und jeden sammeln. Die Methoden zur Verwendung der erhaltenen Screenshots können endlos durchdacht werden.

In den meisten Fällen müssen Bankanwendungen oder Anwendungen, die wichtige Informationen enthalten, die nicht für neugierige Blicke bestimmt sind, vertrauliche Daten verbergen.

Das Erstellen oder Löschen von Schnappschüssen ist nur innerhalb einer bestimmten Anwendung möglich. In der Dokumentation heißt es, dass nur Gerätehersteller die Klasse ändern können, die für den Mechanismus zum Empfangen und Speichern von Snapshots verantwortlich ist.

So verhindern Sie, dass das System Schnappschüsse erstellt


Es gibt verschiedene Möglichkeiten, aber leider sind nicht alle recht optimistisch. Wenn Sie eines davon in Ihrer Anwendung verwenden möchten, stellen Sie sicher, dass auf allen Geräten alles ordnungsgemäß funktioniert.

Sie können den Parameter für die Aktivität einstellen:

android:excludeFromRecents = "true" 

Diese Methode verstößt jedoch gegen die Logik der Benutzerinteraktion mit der Anwendung, da die Anwendung im Bildschirm "Letzte" überhaupt nicht angezeigt wird.

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

Diese Methode verstößt nicht gegen die Interaktionslogik, aber das System beginnt, den Inhalt des Anwendungsbildschirms als geschützt zu behandeln, sodass keine Schnappschüsse erstellt werden können. Das Folgende ist ein Beispiel dafür, wie dies im Bildschirm "Letzte" aussehen wird.

Darüber hinaus gibt es eine Möglichkeit, onPause () zu verfolgen. Hier müssen Sie jedoch die vorbereitete Ansicht ständig im Status View.GONE halten, damit Sie View.VISIBLE erstellen können, wenn die Anwendung in den Hintergrund tritt. Dies funktioniert aber auch nicht sehr zuverlässig, da es leider unmöglich ist, den Zeitpunkt der Schnappschussentfernung zu steuern.

Übrigens könnte der Wagen wohl wer es bezweifeln :) Auf dem Bildschirm ist ein geheimer Chat, in diesem Fall wird FLAG_SECURE verwendet.

Bild alt

Warum verstecken Banken den Inhalt einer Anwendung auf der iOS-Plattform, die daher als sicherer (was irreführend ist) angesehen wird, und belassen sie bei der Android-Plattform? Höchstwahrscheinlich gefällt ihnen einfach nicht, wie die Anwendung im Bildschirm "Letzte" aussehen wird. Das ist nur eine weiße Leinwand. In iOS können Sie mit der Implementierung wunderbar arbeiten. Infolgedessen erhalten wir Sicherheitsschäden zum Wohle der Schönheit. Vielleicht ist es Ihnen egal, solange Ihr Geld dort ist, wo Sie möchten, und die Vertraulichkeit der Daten unerschütterlich ist. Aber sind Sie bereit zu zahlen?

Um nicht mit einer so pessimistischen Bemerkung zu enden, werden wir die Frage aufwerfen: Kann es auch für Android wunderbar gemacht werden? Tatsächlich habe ich mir bereits einen Weg ausgedacht, aber zuerst müssen Sie ihn testen.

Wenn Sie sich für dieses Thema interessieren, kann ich beschreiben, wie alles von innen funktioniert. Wie kann ich Schnappschüsse bekommen, wie das Android-System funktioniert, über die Schwachstellen mobiler Anwendungen.

Ich beschloss, mich selbst herauszufordern und regelmäßig etwas Nützliches zu schreiben. Ich werde Skizzen in Telegrammen in meinem @ paradisecurity- Kanal veröffentlichen und sie dann in vollständigen Beiträgen sammeln. Tschüss, tschüss.

Source: https://habr.com/ru/post/de431024/


All Articles