
La TrustedSec Attack Platform est une méthode fiable pour les droppers sur une infrastructure afin d'assurer des connexions établies vers une organisation.
TAP - Constructeur de plateformes de tests d'intrusion à distance.
Écrit par : David Kennedy @HackingDave
Société : TrustedSec (https://www.trustedsec.com)
Page du projet : https://github.com/trustedsec/tap
Un projet TrustedSec - Copyright 2020
Systèmes d'exploitation pris en charge : Linux (Ubuntu Linux de préférence)
TAP est un constructeur de plateformes de tests d'intrusion à distance. Pour les professionnels du secteur de la sécurité, les déplacements deviennent souvent une contrainte et ajoutent un coût considérable pour le client. TAP a été conçu pour rendre le déploiement de ces boîtiers extrêmement simple et créer une plateforme stable et auto-réparatrice pour déployer des plateformes de tests d'intrusion à distance. Le concept est essentiellement simple : vous préconfigurez un tout nouveau boîtier et exécutez le fichier d'installation de TAP. Cela installera un service sur Linux qui sera configuré comme vous le souhaitez. Il établira un tunnel SSH inversé vers une machine exposée sur Internet pour vous. À partir de là, vous pouvez accéder au boîtier localement depuis le serveur auquel il se reconnecte. TAP détecte automatiquement lorsqu'une connexion SSH est devenue obsolète et la reconstruit automatiquement pour vous.
Il possède également un certain nombre d'autres options ; par exemple, si vous perdez la connexion SSH, il se connectera à un fichier texte et exécutera des commandes pour vous. Il se met également à jour en continu et s'assure que vous exécutez les derniers paquets pour Ubuntu Linux (si c'est votre système d'exploitation).
python setup.py - This will install TAP.
Afin de désinstaller TAP :
python setup.py - This will uninstall TAP.
Lors de la configuration de TAP, la question que vous vous posez peut-être concerne le serveur SSH REMOTE : il s'agit d'un boîtier externe que vous possédez et qui expose SSH. C'est le boîtier vers lequel vous voulez que la machine TAP se reconnecte, la machine que vous avez sur Internet et qui attend les connexions. Il n'est pas recommandé d'utiliser root, car il s'agit d'une faille de sécurité. Utilisez un utilisateur normal pour établir le tunnel SSH. Pour l'instant, seuls les mots de passe sont pris en charge ; la prise en charge des clés SSH sera ajoutée ultérieurement. Le mot de passe est stocké à l'aide d'AES ; cependant, le stockage de la clé de chiffrement est actuellement peu sûr. Une personne ayant conservé un accès au boîtier pourrait récupérer la clé de chiffrement et déchiffrer le mot de passe de la configuration avec suffisamment de temps et de persévérance. Cela sera corrigé dans une version ultérieure.
Le deuxième élément est le port LOCAL qui sera sur le boîtier REMOTE. Lorsque TAP se reconnecte via SSH inversé, il se connecte au boîtier REMOTE et établit un port local sur la machine. Lorsque vous vous connectez en SSH au boîtier distant sur Internet, vous voudrez utiliser ssh user@localhost -p . Ce sera le port auquel TAP se lie sur le système REMOTE afin que vous puissiez y accéder.
Une fois cela configuré, TAP possède un chemin par défaut à partir duquel il récupère les mises à jour ; vous pouvez le remplacer par votre propre chemin de mise à jour. J'ai volontairement gardé cela hors de GitHub afin que vous puissiez spécifier ce que vous voulez pour les mises à jour approuvées.
Ensuite, vous pouvez envoyer des commandes au TAP ; il vérifie toutes les deux minutes s'il y a de nouvelles instructions. Vous devez spécifier un chemin, par exemple :
https://websiteurl/commands.txt
TAP vérifiera ce chemin toutes les deux minutes à la recherche de nouvelles commandes. Notez que la partie suivante est IMPORTANTE. La première ligne du fichier texte DOIT contenir « EXECUTE COMMAND » (sans les guillemets). Une fois que TAP l'identifie, il vérifie si la commande a déjà été exécutée auparavant et, si ce n'est pas le cas, il exécutera les commandes ligne par ligne. C'est utile lorsque vous perdez la connexion avec TAP et que vous devez exécuter des commandes pour la rétablir.
Une fois que vous lancez l'installation, TAP installera les fichiers dans /usr/share/tap. Il démarrera automatiquement si vous le spécifiez, et vérifiera automatiquement les mises à jour, telles que les mises à jour Debian, les mises à jour TAP, etc.
Vous devriez également mettre sur liste blanche les serveurs de mise à jour si vous utilisez Debian, ainsi que votre boîtier REMOTE auquel vous vous reconnectez.
Et voilà !
Dans le cas où vous décidez de ne pas utiliser de clés SSH et d'utiliser des mots de passe, la configuration les stocke dans un format AES (nécessite python-pycrypto). Si vous devez mettre à jour le mot de passe, allez dans le répertoire scripts qui contient un script update-password permettant de mettre à jour le mot de passe chiffré et de créer une nouvelle clé de chiffrement dynamique.
Autre astuce intéressante une fois sur place : un petit outil que nous avons écrit pour faire essentiellement un VPN SSH. Cela fonctionne très bien si vous n'avez pas de gros volumes de trafic, comme les scans de ports, les scans de vulnérabilités, etc. Ci-dessous se trouve un outil simple qui encapsule sshuttle pour créer le VPN. Il suffit d'enregistrer le fichier ci-dessous dans un fichier Python, de l'exécuter et d'utiliser les commandes. Il vous connectera en VPN au réseau distant où TAP est déployé. Vous pouvez faire tout ce que vous voulez, tant qu'il ne s'agit pas d'un trafic de volume extrêmement important (c'est assez stable).
Il y a deux façons de gérer un VPN : la première est la méthode ci-dessous avec SSHuttle. Vous pouvez également utiliser un VPN transparent créé par Geoff Walton chez TrustedSec, situé dans le dossier scripts. Cela créera une interface TAP et vous connectera en VPN au système via SSH. Avec SSHuttle, des choses comme les scans de ports ne fonctionnent pas correctement ; je recommande vivement le script ssh-tunnel.
SSHUTTLE est un outil qui vous permet d'utiliser SSH comme méthode pour un VPN proxy transparent. Vous pouvez utiliser ce script pour communiquer avec le périphérique TAP distant et tunneler votre système via le proxy pour un VPN complet. Cela vous permet d'effectuer des tests via votre propre appareil, sans utiliser le périphérique TAP lui-même.
import subprocess
import time
if not os.path.isfile("/usr/sbin/sshuttle"):
print "[!] SSHUTTLE does not appear to be installed, installing now"
subprocess.Popen("apt-get install sshuttle -f", shell=True).wait()
print("Welcome to the sshuttle wrapper for TAP.")
print("Enter the address for the SSH server, i.e. box.sshserver.com")
reverse1 = input("Enter SSH server (REMOTE server): ")
reverse2 = input("Enter the remote SSH port for %s:: " % (reverse1))
reverse3 = input("Enter the port to tunnel for the local TAP machine (i.e. TAP box localhost port): ")
reverse4 = input("Enter the username to connect to REMOTE system: ")
print)"Triggering tunnel now...")
time.sleep(2)
subprocess.Popen("ssh -f %s@%s -L %s:localhost:%s -N" % (reverse4, reverse1, reverse3, reverse2), shell=True).wait()
subprocess.Popen("sshuttle --dns -vr %s@localhost:%s 0/0" % (reverse4,reverse3), shell=True).wait()
TAP utilise proxychains4 (proxychains-ng) pour tunneler tout votre trafic http/https via SSH vers votre boîtier distant. Cela aide au filtrage du contenu et du trafic sortant, afin de vous assurer que vous avez toujours tout à jour. Pour utiliser proxychains, tapez simplement proxychains4 <command_you_want_to_use> - les mises à jour de TAP l'utilisent automatiquement.
Pendant le processus d'installation, TAP vous demandera si vous souhaitez journaliser toutes les commandes exécutées sur le système. Si c'est le cas, toutes les commandes saisies sur le système seront journalisées, afin que vous puissiez les fournir au client ou conserver une trace de ce qui s'est passé sur les appareils. Tous les journaux sont enregistrés sous /var/log/messages.
Ubuntu 18.04 LTS (devrait fonctionner correctement sur Debian et d'autres versions d'Ubuntu)