
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을 호출하며, 여기서 중요한 비밀의 내용을 덤프합니다!
간단하죠! 즐기세요!
3snake 도구를 만든 @blendin에게 감사드립니다!!!