Wie kann man feststellen, was eine App tut und ob sie Malware enthält?

Wie können wir unter iOS und OS X wissen, was eine Anwendung wirklich tut?

Unter OS X können Sie immer Folgendes tun: Klicken Sie mit der rechten Maustaste auf eine .app und "Paket anzeigen". Contents -> MacOSund doppelklicken Sie auf die ausführbare Unix-Datei. Das Terminal wird geöffnet und sagt Ihnen irgendwie, was die App tut.

Ich weiß nicht, ob Sie davon gehört haben, aber anscheinend hat jemand den Compiler von Xcode modifiziert, um Malware zu Apps hinzuzufügen. Dieser modifizierte Compiler ist, wie die Medien sagen, in China weit verbreitet, so dass viele Apps betroffen sind. Wie auch die Medien sagen, hat ein Unternehmen etwa 400 Apps entdeckt, die anscheinend infiziert sind.

Meine Frage ist nun, wie Sie feststellen können, was eine App unter iOS tut. So stellen Sie fest, ob es Malware oder etwas anderes Schädliches enthält.

Und gibt es eine andere Möglichkeit, festzustellen, was Apps unter OS X tun, als die ausführbare Unix-Datei zu starten, die sich im Paket der App befindet?

Wenn die Frage ist; Können Sie erkennen oder blockieren, ob eine Anwendung Ihre Informationen an einen unangemessenen Dienst/Server/Hacker sendet ... Sie können alle Ihre ausgehenden Mac-Verbindungen mit obdev.at/products/littlesnitch/index.html überprüfen
Was meinst du mit "Terminal öffnet sich und sagt dir irgendwie, was die App macht."? Wenn ich das mache, bekomme ich nur eine zufällige Ausgabe von der App. Nicht unbedingt, was es "macht" oder was es bezweckt.
Beim Portieren von Programmen mit Wine auf OS X wird mir angezeigt, welche .dlls fehlen oder auf welche Frameworks zugegriffen wird.
Sie haben im Grunde gefragt, wie man die gesamte Antiviren-Industrie mit mehreren Mausklicks ersetzen kann. Du kannst nicht. Und nein, das Ausführen einer ausführbaren Datei im Terminal sagt Ihnen nicht, was die App tut.

Antworten (3)

Kurze Antwort: Sie können es nicht wissen

Eine etwas längere Antwort: Das einfache Ausführen und Verwenden der Anwendung zeigt Ihnen nicht, was hinter den Kulissen vor sich geht. Um sich damit zu befassen, müssen Sie die Anwendung in einer Debugging-Umgebung ausführen, um Daten und Prozessabläufe zu analysieren, alle erstellten Unterprozesse zu verfolgen, die von der Anwendung initiierte Netzwerkkommunikation zu überwachen usw. usw. Da dies ziemlich umständlich ist und erfordert viel Können und Erfahrung, kommt es am Ende meist auf Vertrauen an.

Das können Sie also mit einer kompilierten App tun? Laden Sie es in Xcode und verfolgen Sie die Ein-/Ausgabe? Dachten Sie, dass Debuggen nur für nicht kompilierten Code gilt?
Es handelt sich immer um kompilierten Code, er wird nur mit der Quelle synchronisiert, damit der Entwickler leichter verstehen kann, was vor sich geht.

Sie können nicht wirklich bestimmen, was eine App tut, wenn Sie nicht versuchen, herauszufinden, was ihr Bytecode tut. Aus Netzwerkperspektive können Sie mit so etwas wie LittleSnitch den gesamten ein- und ausgehenden Datenverkehr Ihres Computers anzeigen.

Ich bin mir nicht sicher, ob ich andere Apps auf Malware überprüfen soll, aber Apple hat eine E-Mail mit Informationen verschickt, wie Sie überprüfen können, ob Ihre Version von Xcode Malware enthält. Sie empfehlen, dass Sie es immer aus dem Mac App Store oder ihrer Entwickler-Website herunterladen. Wenn Sie es von einem anderen Ort (USB-Laufwerk) installieren müssen, befolgen Sie diese Schritte.

Um die Identität Ihrer Kopie von Xcode zu überprüfen, führen Sie den folgenden Befehl im Terminal auf einem System mit aktiviertem Gatekeeper aus:

spctl --assess --verbose /Applications/Xcode.app

Dabei ist /Applications/ das Verzeichnis, in dem Xcode installiert ist. Dieses Tool führt die gleichen Prüfungen durch, die Gatekeeper verwendet, um die Codesignaturen von Anwendungen zu validieren. Es kann bis zu mehreren Minuten dauern, bis das Tool die Bewertung für Xcode abgeschlossen hat.

Das Tool sollte das folgende Ergebnis für eine Version von Xcode zurückgeben, die aus dem Mac App Store heruntergeladen wurde:

/Applications/Xcode.app: accepted source=Mac App Store

und für eine Version, die von der Apple Developer-Website heruntergeladen wurde, sollte das Ergebnis entweder lauten

/Applications/Xcode.app: accepted source=Apple

oder

/Applications/Xcode.app: accepted source=Apple System

Jedes andere Ergebnis als „akzeptiert“ oder jede andere Quelle als „Mac App Store“, „Apple System“ oder „Apple“ weist darauf hin, dass die Anwendungssignatur für Xcode nicht gültig ist. Sie sollten eine saubere Kopie von Xcode herunterladen und Ihre Apps neu kompilieren, bevor Sie sie zur Überprüfung einreichen.

Auf iOS

Das Problem bei Xcode Ghost ist die Kommunikation zu einem anderen Server. Es wäre also möglich, diese Verbindung zu erkennen, wenn Sie einen Proxy einrichten, wie in dieser Frage hier gefragt , und Wireshark verwenden, um die Verbindungen anzuzeigen. Für HTTP-Verbindungen sollte auch Charles funktionieren. Sie können auch in Xcode im Geräte-Manager das Konsolen-Log sehen, das der Terminal-Ausgabe der Mac-App sehr ähnlich ist. Aber Entwickler können Informationen verbergen, sie müssen nicht jede Prozedur im Terminal/in der Konsole ausdrucken.

Auf OS X

Es gibt einige weitere Möglichkeiten, TCP/IP-Verkehr manuell über WireShare zu erkennen oder einige Apps wie ( LitteSnitch , HandsOff , PrivateEye ) zu verwenden. HandsOff ist die einzige App, die auch das Lesen/Schreiben von Dateien und viele andere Dinge verfolgt.

Abschluss

Sie müssen den Entwicklern vertrauen und auch hoffen, dass sie den ursprünglichen Xcode von Apple verwenden. Wir haben nicht genug (automatisierte) Tools, um jede Funktion einer App im Auge zu behalten.

@user3439894 Gibt es einen Grund, "Entwickler" mit einem Großbuchstaben zu schreiben?