Ich habe mich gefragt, ob es ein Tool oder eine Technik gibt, um eine ausführbare Datei in einer isolierten Umgebung auszuführen, möglicherweise in einer virtuellen Maschine. Während das Programm ausgeführt wird, möchte ich in der Lage sein, die Anwendung zu überwachen, dh alles zu sehen, was die ausführbare Datei tut (Datei- und Netzwerkzugriff).
Auf diese Weise möchte ich überprüfen können, ob die ausführbare Datei böswillig ist, dh Vorgänge ausführt, die sie nicht ausführen sollte (Lesen / Schreiben in Dateien, Abhören / Herstellen einer Verbindung zu Netzwerkports, ...).
Mit einer grafischen Oberfläche hätte ich nichts dagegen.
sandbox somebinary
und das imaginäresandbox
Programm würde allesomebinary
gelesenen oder geschriebenen Dateien protokollieren IPs / Ports verbunden, Daten übertragen usw. Das wäre eine nützliche Sache, ich würde auch gerne wissen, ob so etwas existiert (und ohne ein solches Tool wäre es sinnlos, ein Programm zu beobachten, das in einer VM ausgeführt wird, wie Sie kann sowieso nicht sagen, was es dort macht). Gute Frage.Antworten:
Ja, dies wird als Anwendungsvirtualisierung bezeichnet .
LXC (Linux Containers) ist ein häufig verwendetes Tool, um dies einzurichten. Sie können damit ein vollständig getrenntes Netzwerk für diese Anwendung einrichten und es in eine Art virtuelle Maschine "sandboxen", ähnlich wie bei einer Chroot. Dies dient hauptsächlich Sicherheitszwecken (einem "Gefängnis"), nicht wirklich der Prüfung.
Ich denke, es liegt etwas außerhalb des Rahmens der Frage, die vollständigen LXC-Container zu erklären und sie genau zu prüfen. Im Folgenden finden Sie jedoch einige Informationen zu den ersten Schritten.
Dies kann erreicht werden mit
strace
und ich habe die gleiche Frage unter Unix & Linux gestellt:Wie dort beantwortet , kommt es im Grunde darauf an
Wichtig: Sobald Sie es sehen, ist der Schaden bereits eingetreten.
LXC- Anwendungscontainer
Aus diesem Artikel . Es kommt darauf an:
lxc-macvlan.conf
Konfigurationsdatei:Starten Sie es mit
lxc-execute
:Beachten Sie, dass LXC sowohl System- als auch Anwendungstypen von Containern anbietet. Hier suchen Sie nach Anwendungscontainern.
quelle
/sys
nicht virtualisiert und Änderungen,/sys
die am Container vorgenommen wurden, werden/sys
am Host vorgenommen. Bei einer schnellen Suche im Web gibt es einige Artikel, die dokumentieren, wie man aus einem Container "entkommt". LXC wird eine gute Lösung für das Problem sein, ist es jedoch derzeit nicht und sollte nicht als Sicherheitstool verwendet werden.lxc.mount
Optionen. Dies bedeutet, dass der ausführbare Lauf auf das Dateisystem des gesamten Benutzers zugreifen kann.Was Sie suchen, ist ein Tool, das zeigt, wie ein Programm mit dem System (genauer gesagt mit dem Kernel) interagiert. Programme interagieren mit dem System über Syscalls. Beispiele für Systemaufrufe sind:
open
- zum Öffnen einer Datei verwendet;read
undwrite
- zum Lesen / Schreiben von / in einen Dateideskriptor verwendet wird;connect
- zum Verbinden eines Sockets mit einem Peer;man syscalls
).Der Punkt ist: Syscalls können mit verfolgt werden
ptrace(2)
. Sie suchen also im Grunde nach Werkzeugen, die darauf basierenptrace
. Eines dieser Tools iststrace(1)
eine Terminalanwendung, die einen Befehl als Argument verwendet und Folgendes ausgibt:Die Ausgabe erfolgt in C-Form. Hier ist ein Beispiel:
Dort sehen Sie, dass
cat test
eine Datei mit dem Namen geöffnettest
, deren Inhalt (hello
) gelesen und in die Standardausgabe eingefügt wird.strace
kann viel Ausgabe produzieren, lesen Sie also unbedingt die Manpage (man strace
), insbesondere die Dokumentation der-e
Ausgabe, mit der Sie nur die Syscalls sehen können, an denen Sie interessiert sind.Leider sind mir keine grafischen oder benutzerfreundlichen Alternativen bekannt. Wenn Sie nach ihnen suchen möchten,
ptrace
sollte eines Ihrer Suchbegriffe sein.Über die Isolation gibt es viele Technologien. Am häufigsten werden Chroots, Linux-Container (die derzeit entwickelt und unvollständig sind), Software-Virtualisierung und Paravirtualisierung verwendet. Dies ist jedoch ein Thema, das viel zu groß ist, um es zu diskutieren. Ich würde vorschlagen, eine neue Frage zu öffnen, wenn Sie weitere Details wünschen.
quelle
Schauen Sie sich AppArmor an . Sie können ein eingeschränktes Profil für eine ausführbare Datei hinzufügen und es in den "Beschwerde" -Modus versetzen, in dem Aktionen zulässig, aber protokolliert werden, was Ihrer Meinung nach Ihren Anforderungen entspricht.
Beachten Sie jedoch, dass dies nicht wirklich ausreicht. Eine clevere böswillige Binärdatei kann möglicherweise erkennen, dass sie beobachtet wird, und keine böswilligen Aktionen ausführen, es sei denn, sie wird nicht beobachtet.
AppArmor geht noch weiter und ermöglicht es, eine Anwendung für immer auf nur genehmigte Vorgänge zu beschränken. Apps, die im Ubuntu Software Center landen, werden mit AppArmor-Profilen geliefert.
quelle
Wie Sie bereits festgestellt haben, ist eine virtuelle Maschine besser geeignet, um Isolation bereitzustellen, insbesondere wenn Sie Grund zu der Annahme haben, dass eine ausführbare Datei in erster Linie bösartig ist. Aber auch das ist nicht perfekt, da Schwachstellen in der Virtualisierungsplattform (sowohl Hardware als auch Software) durch bösartigen Code ausgenutzt werden können, um auszubrechen. Hier ist ein Beispiel für eine Virtualisierungsanfälligkeit in der realen Welt: http://www.kb.cert.org/vuls/id/649219
quelle
Sie könnten einen Snap erstellen .
Snaps sind "durch Sicherheitsmechanismen auf das Betriebssystem und andere Apps beschränkt, können jedoch Inhalte und Funktionen mit anderen Snaps gemäß detaillierten Richtlinien austauschen, die vom Benutzer und den Standardeinstellungen des Betriebssystems gesteuert werden." (von http://snapcraft.io/docs/snaps/intro )
Diese bieten neben AppArmor eine weitere Isolierung, beispielsweise auch unter Verwendung von seccomp .
Darüber hinaus kann ein Snap für eine einfache Verteilung und atomare Updates auf Ihrem System in sich geschlossen sein.
quelle
Danke, die Antworten waren sehr hilfreich ...
Ich habe auch folgendes gefunden: https://downloads.cuckoosandbox.org/docs/
Dies ist ein sehr interessantes Tool zum Analysieren von Malware in einer VM
quelle