
outis es una herramienta personalizada de administración remota (RAT) o algo por el estilo. Fue construida para soportar varios métodos de transporte (como DNS) y plataformas (como Powershell).
outis es una herramienta personalizada de Administración Remota (RAT) o algo similar. Piensa en Meterpreter o Empire-Agent. Sin embargo, el enfoque de esta herramienta no es un kit de exploits (no hay exploits) ni la gestión persistente de objetivos. El enfoque es comunicarse entre el servidor y el sistema objetivo y transferir archivos, compartir sockets, lanzar shells y demás utilizando varios métodos y plataformas.
El cíclope Polifemo en la Odisea de Homero tuvo algunos problemas con la resolución de nombres. Cuando le preguntó el nombre de Odiseo, el hacker le dijo que era "Outis", que significa "Nadie" en griego antiguo. Así, cuando Polifemo más tarde gritó que Nadie lo iba a matar, extrañamente no llegó ayuda.
Mi agradecimiento a Marcel por recordar esta maravillosa pieza de cuento clásico.
Los usuarios de Archlinux pueden instalar los siguientes paquetes:
En otras distribuciones los nombres pueden diferir, por ejemplo, hay un módulo llamado crypto y otro llamado pycrypto. Necesitamos el segundo.
Además, versiones antiguas podrían causar problemas:
$ python3 -c 'import OpenSSL; print(OpenSSL.version.__version__)'
Puedes configurar un entorno virtual de python fácilmente:
$ virtualenv outis-venv
$ source ./outis-venv/bin/activate
(outis-venv) $ pip install progressbar2 dnspython pycrypto pyopenssl
Esto resulta en la siguiente lista de paquetes, que parece funcionar para mí:
$ 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
Clona este git con la bandera recursiva para también clonar sus submódulos en la carpeta thirdpartytools:
git clone --recursive ...
El handler se ejecuta en Python 3. Instala sus dependencias y ejecútalo. Generará stagers, agentes y todo lo demás por ti.
Para vincular puertos bajos sin necesidad de privilegios de root, considera usar un envoltorio de capacidades.
La descarga de un archivo usando transporte DNS con staging y plataforma POWERSHELL podría verse así:
$ 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