
擬似的な悪意のあるユーザーモードメモリアーティファクト生成キットで、感染したWindows OS上で実際のマルウェアが残すフットプリントを簡単に模倣するように設計されています。
__ .__ _____ __ __ .__ __
_____ / |_||/ __ ____/ | | | _||/ |
_ \ __ \ \ \ \ \ _/ _\ \ | |/ / \
/ __ | | /| | | || | / __ \ _| | | <| || |
( /| || |||__| (___ /___ >| ||_ __||__|
/ / / /
不正メモリアーティファクト生成キット v1.0 | Forrest Orr | 2020
必須
--alloc-type {dll-map-hollow|dll-load-hollow|txf-dll-map-hollow|private|mapped}
オプション
--payload-file --payload-type {PE|shellcode} --exec-method {create-thread|call|ep-jmp-hook} --stealth {wipe-headers|mirror-headers|rw-rx|dotnet|moat|peb-img-base} --moat-size --hollow-dll-file
--payload-file インプラントとして使用するシェルコードまたはPEを含むファイル。ユーザーが指定しない場合、指定されたリージョンタイプは割り当てられますが、コードは埋め込まれません。 --payload-type 指定されたペイロードファイル内に保存されているコードの種類。シェルコードまたはMZ PEである必要があります。ペイロードファイルが指定されている場合、このパラメータは必須です。 --alloc-type ペイロードインプラントを保持する動的メモリの作成方法。
dll-map-hollow System32のDLLから生成されたイメージセクションのビュー。
dll-load-hollow System32からLoadLibrary経由でロードされたDLL。
txf-dll-map-hollow 既にペイロードが埋め込まれているSystem32のトランザクションDLLから生成されたイメージセクションのビュー。
private NtAllocateVirtualMemory経由で割り当てられたプライベートメモリのリージョン。
mapped Windowsページファイルから派生したセクションのマッピングビュー。
--exec-method ペイロードコードを指定されたメモリリージョンに埋め込んだ後に呼び出す方法。
create-thread CreateThread APIを使用してペイロードを実行。
call 通常のCALLアセンブリ命令を使用してペイロードを実行。
ep-jmp-hook プロセスEXEエントリポイントからのインラインJMPを介してペイロードを実行。
--stealth 割り当てられたリージョンに対するオプションの難読化。
wipe-headers メモリ内のペイロードのPEヘッダを0で上書き。PEペイロードでのみ有効。
mirror-headers ハローイングされたDLLにペイロードPEファイルが埋め込まれた後、元のPEヘッダを保持。イメージリージョンタイプを使用するPEペイロードでのみ有効。
rw-rx インプラントリージョンを直接+RWX権限で割り当てる代わりに、最初に+RWとして割り当て、後で+RXに設定。プライベートおよびマッピングリージョンタイプでのみ有効。
dotnet ハローイング操作中に.NETヘッダを持つDLLのみを選択。イメージリージョンタイプでのみ有効。
moat 割り当てられたリージョンのシェルコードの前に0でパディング。デフォルトで1MBのパディングが使用されます。ハローイングされたDLLを持つシェルコードインプラントでは無効。TxF割り当てタイプと併用不可。
peb-img-base PEBのイメージベースフィールドを新しく割り当てられたリージョンに更新。
--moat-size ペイロードインプラントの前に生成するデータモートのサイズ。moatステルスオプションが指定されている場合のみ必要。デフォルトサイズは1MB。 --hollow-dll-file ハローイング割り当てタイプと組み合わせて使用するDLLのパスを手動で指定。指定されていない場合、Windowsディレクトリまたはそのサブフォルダから適切なDLLがランダムに選択されます。
例
32ビットDLLイメージのマッピングされた.textセクション内に32ビットシェルコードインプラントを作成し、CALL命令を使用して実行:
ArtifactsKit32.exe --payload-type shellcode --payload-file Payloads\MsgboxShellcode32.bin --alloc-type dll-map-hollow
割り当てベースから+1MBのオフセットにある+RWXマッピングページファイルメモリのリージョン内に64ビットシェルコードインプラントを作成し、KERNEL32.DLL!CreateThread APIを使用して実行:
ArtifactsKit64.exe --payload-type shellcode --payload-file Payloads\MsgboxShellcode64.bin --alloc-type mapped --stealth moat
32ビットDLLイメージのマッピングされたイメージメモリ上に32ビットPEインプラントを作成し、元のヘッダを保持し、ペイロードPEのIMAGE_OPTIONAL_HEADER.AddressOfEntryPointをCALLでブートストラップおよび実行:
ArtifactsKit32.exe --payload-type pe --payload-file Payloads\TestExe32.exe --alloc-type dll-map-hollow --stealth mirror-headers
64ビットDLLの変更されたTxFセクションのマッピングされたイメージメモリ内に64ビットPEインプラントを作成(ファントムDLLハローイング)、アーティファクト親プロセスのIMAGE_OPTIONAL_HEADER.AddressOfEntryPointからのJMPフックを使用してそのIMAGE_OPTIONAL_HEADER.AddressOfEntryPointを実行:
ArtifactsKit64.exe --payload-type pe --payload-file Payloads\TestExe64.exe --alloc-type txf-dll-map-hollow --exec-method ep-jmp-hook