
outis é uma ferramenta personalizada de administração remota (RAT) ou algo do tipo. Foi construída para suportar vários métodos de transporte (como DNS) e plataformas (como Powershell).
outis é uma ferramenta de administração remota (RAT) personalizada ou algo parecido. Pense em Meterpreter ou Empire-Agent. No entanto, o foco desta ferramenta não é um kit de exploração (não há exploits) nem o gerenciamento persistente de alvos. O foco é comunicar entre servidor e sistema alvo e transferir arquivos, compartilhar sockets, abrir shells e assim por diante usando vários métodos e plataformas.
O ciclope Polifemo na Odisseia de Homero teve alguns problemas com resolução de nomes. Quando ele perguntou o nome de Odisseu, o hacker lhe disse que era "Outis" que significa "Ninguém" em grego antigo. Assim, quando Polifemo depois gritou que Ninguém estava prestes a matá-lo, estranhamente nenhuma ajuda chegou. Meus agradecimentos a Marcel por lembrar desta peça maravilhosa de conto clássico.
Usuários Archlinux podem instalar os seguintes pacotes:
Em outras distribuições os nomes podem diferir, por exemplo, existe um módulo chamado crypto e um módulo chamado pycrypto. Precisamos do último.
Além disso, versões mais antigas podem causar problemas:
$ python3 -c 'import OpenSSL; print(OpenSSL.version.__version__)'
Você pode configurar um ambiente virtual python facilmente:
$ virtualenv outis-venv
$ source ./outis-venv/bin/activate
(outis-venv) $ pip install progressbar2 dnspython pycrypto pyopenssl
Isso resulta na seguinte lista de pacotes, que parece funcionar para mim:
$ 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
Clone este repositório git com a flag recursiva para também clonar seus submódulos na pasta thirdpartytools:
git clone --recursive ...
O handler roda em Python 3. Instale suas dependências e execute-o. Ele gerará stagers, agents e tudo mais para você.
Para vincular portas baixas sem precisar de privilégios de root, considere usar um wrapper de capacidades.
Download de um arquivo usando transporte DNS com estágio e plataforma POWERSHELL poderia ser assim:
$ 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