GoAround
AMSIバイパスの生成と、3つの異なる難読化手法を使用したPowerShellスクリプトの自動難読化を可能にするツールです。GoAroundはMITライセンスの下でライセンスされています。詳細についてはLICENSEを参照してください。
免責事項
このツールは、ペネトレーションテスターの日常的なポストエクスプロイテーション業務を支援し、研究プロジェクトとして開発されました。このツールの悪意のある使用、または対応する許可なしに第三者のシステムで使用することは、すべてユーザーの単独責任となります。
インストール
Githubからコードをダウンロードし、WindowsのコマンドラインまたはPowerShellコンソールからツールを実行するだけです。
ユーザーガイド
GoAroundを使用すると、次の2つの異なることができます:
- AMSIバイパスを作成するために必要なコードを含むPowerShellスクリプトを生成します。生成されたコードは自動的に難読化できます。
- 異なる手法を使用したPowerShellスクリプトの自動難読化。
ユーザーは2つの異なるAMSIバイパスと3つの異なる難読化手法を選択できます。
使用方法
このツールを使用するには、マシンにPythonがインストールされている必要があります。以下のパスをPATH環境変数に追加する必要があります:
- C:\Users{Usuario}\AppData\Local\Programs\Python\Python39
- C:\Users{Usuario}\AppData\Local\Programs\Python\Python39\Scripts
これが完了すると、次の2つの方法のいずれかでコマンドラインからツールを実行できます:
- ツールのフォルダから: python goaround.py {オプション}
- 他のフォルダから: python {GoAroundフォルダへの完全なパス} {オプション}
コマンド構造は次のとおりです:
python goaround.py -m [mode] (-t [type]) (-f [type_obfuscation]) (-i [input_file]) (-o [output_file])
ここで、括弧内のオプションはすべて任意です。これらのオプションの値は次のとおりです:
- -m or --mode: 唯一の必須オプションです。ツールが実行する動作モードを示します。詳細については、セクション動作モードを参照してください。
- -t or --type: モードがbypassの場合は使用するバイパスの種類、モードがobfuscateの場合は難読化手法の種類を示します。さまざまなバイパスタイプについてはセクションバイパスタイプを、利用可能な難読化手法についてはセクション難読化手法を参照してください。
- -f or --obfuscation: 動作モードがbypassの場合、このオプションはバイパスの難読化タイプを選択するために使用されます。このオプションはobfuscateモードでは使用できません。代わりに「-t」または「--type」を使用してください。さまざまな難読化手法については、セクション難読化手法を参照してください。
- -i or --input: obfuscateモードでのみ使用されます。ユーザーが難読化するファイルを選択できます。
- -o or --output: このオプションを使用すると、ユーザーは生成されたスクリプトの名前を選択できます。名前は「.ps1」で終わる必要があります。デフォルトでは、出力ファイル名は「output.ps1」になります。
さらに、次のオプションもサポートされており、単独で実行する必要があります(他のオプションなしで):
- -h or --help: ツールの使用方法ガイドを表示します。
- -v or --version: ツールのバージョン番号を表示します。
動作モード
2つの動作モード、bypassとobfuscateがあり、これらはオプション「-m」または「--mode」で選択します:
- bypass: ツールがバイパスモードで実行することを示します。この場合、AMSIバイパスのコードを含むPS1ファイルが生成されます。
- obfuscate: ツールが難読化モードで実行することを示します。この場合、ツールはオプション「-i」または「--input」(この動作モードでは必須)でユーザーが指定したファイルを難読化します。難読化されたコードを含むPS1ファイルが生成されます。難読化はPowerShellスクリプトに対してのみ機能します。
バイパスタイプ
bypassモード(-m bypass)では、バイパスタイプはオプション「-t」または「--type」で指定できます。
現時点でサポートされているバイパスタイプは次のとおりです:
- reflection: Matt Graeberのリフレクションバイパス。
- scan_buffer_laine: Paul LaînéのAmsiScanBufferパッチバイパス。
タイプが指定されていない場合、デフォルトでリフレクションが使用されます。
難読化手法
現時点で、このツールは3つの異なるPowerShell難読化手法をサポートしています。
bypassモードで難読化のタイプを選択するには、オプション「-f」または「--obfuscation」を使用します(指定しない場合、バイパスは難読化されません)。obfuscateモードで難読化のタイプを選択するには、オプション「-t」または「--type」を使用します(指定しない場合、連結手法が使用されます)。
難読化タイプの名前は次のとおりです:
- mayus: randomcase手法を使用してPowerShellコードを変更します。コード内の文字列には影響しません。この方法はファイルのハッシュを変更します。
- concatenation: obfuscateモードでデフォルトで使用される手法です。コード内の文字列をより小さな文字列の連結に変更します。文字列はランダムに分割されるため、同じ入力ファイルでも毎回異なるコードになります。
- insertion: コード内の文字列を文字列と変数の組み合わせに変更します。例えば、コードに文字列「amsiutils」がある場合、「am$var_tfm0」に置き換えられる可能性があります。ここで var_tfm0 = “siutils” です。文字列はランダムに分割されるため、同じ入力ファイルでも毎回異なるコードになります。変数は「var_tfm{番号}」の形式の名前を持つため、元のコードにこれらの名前の変数がある場合は、難読化フェーズの前に変更する必要があります。
使用例
以下にいくつかの使用例を示します:
ヘルプメニューを表示
python main.py -h
python main.py --help
ツールのバージョン番号を表示
python main.py -v
python main.py --version
変数挿入を使用して難読化されたリフレクションバイパスを生成
python main.py -m bypass -t reflection -f insertion
出力ファイル名を変更してPaul Laînéのバイパスを生成
python main.py -m bypass -t scan_buffer_laine -o "output_name.ps1"
文字列連結手法を使用してファイルを難読化
python main.py -m obfuscate -t concatenation -i "input_required.ps1"