
outis est un outil d'administration à distance (RAT) personnalisé ou quelque chose comme ça. Il a été conçu pour prendre en charge diverses méthodes de transport (comme DNS) et plateformes (comme Powershell).
outis est un outil d'administration à distance (RAT) personnalisé, ou quelque chose du genre. Pensez à Meterpreter ou Empire-Agent. Cependant, l'objectif de cet outil n'est ni une boîte à outils d'exploitation (il n'y a pas d'exploits) ni une gestion persistante des cibles. L'objectif est de communiquer entre le serveur et le système cible, de transférer des fichiers, de partager des sockets, de lancer des shells, etc., en utilisant diverses méthodes et plateformes.
Le cyclope Polyphème dans l'Odyssée d'Homère avait quelques problèmes de résolution de noms. Lorsqu'il a demandé le nom d'Ulysse, le hacker lui a dit qu'il s'appelait « Outis », ce qui signifie « Personne » en grec ancien. Ainsi, lorsque Polyphème a crié plus tard que Personne était sur le point de le tuer, étrangement, aucune aide n'est arrivée.
Merci à Marcel de s'être souvenu de ce merveilleux extrait de conte classique.
Les utilisateurs d'Archlinux peuvent installer les paquets suivants :
Dans d'autres distributions, les noms peuvent différer ; par exemple, il existe un module nommé crypto et un module nommé pycrypto. C'est ce dernier dont nous avons besoin.
De plus, les versions plus anciennes peuvent poser problème :
$ python3 -c 'import OpenSSL; print(OpenSSL.version.__version__)'
Vous pouvez configurer un environnement virtuel python assez facilement :
$ virtualenv outis-venv
$ source ./outis-venv/bin/activate
(outis-venv) $ pip install progressbar2 dnspython pycrypto pyopenssl
Cela donne la liste de paquets suivante, qui semble fonctionner pour moi :
$ pip freeze
appdirs==1.4.3
asn1crypto==0.22.0
cffi==1.10.0
cryptography==1.8.1
dnspython==1.15.0
idna==2.5
packaging==16.8
progressbar2==3.18.1
pycparser==2.17
pycrypto==2.6.1
pyOpenSSL==16.2.0
pyparsing==2.2.0
python-utils==2.1.0
six==1.10.0
Clonez ce dépôt git avec le drapeau récursif pour également cloner ses sous-modules dans le dossier thirdpartytools :
git clone --recursive ...
Le handler s'exécute sur Python 3. Installez ses dépendances et lancez-le. Il générera pour vous les stagers, les agents et tout le reste.
Pour lier des ports bas sans nécessiter de privilèges root, envisagez d'utiliser un wrapper de capacités.
Le téléchargement d'un fichier en utilisant un transport DNS stagé avec la plateforme POWERSHELL pourrait ressembler à ceci :
$ outis
outis> set TRANSPORT DNS
outis> set ZONE zfs.sy.gs
outis> set AGENTDEBUG TRUE
outis> info
[+] Options for the Handler:
Name Value Required Description
----------------- ---------- -------- -----------------------------------------------------------------
TRANSPORT DNS True Communication way between agent and handler (Options: REVERSETCP,
DNS)
CHANNELENCRYPTION TLS True Encryption Protocol in the transport (Options: NONE, TLS)
PLATFORM POWERSHELL True Platform of agent code (Options: POWERSHELL)
PROGRESSBAR TRUE True Display a progressbar for uploading / downloading? (only if not
debugging the relevant module) (Options: TRUE, FALSE)
[+] Options for the TRANSPORT module DNS:
Name Value Required Description
--------- ----------- -------- ------------------------------------------------------------------------
ZONE zfs.sy.gs True DNS Zone for handling requests
LHOST 0.0.0.0 True Interface IP to listen on
LPORT 53 True UDP-Port to listen on for DNS server
DNSTYPE TXT True DNS type to use for the connection (stager only, the agent will
enumerate all supported types on its own) (Options: TXT, A)
DNSSERVER False IP address of DNS server to connect for all queries