
محدد مواقع الخدمات السلبية، أداة تنصت بلغة بايثون تحدد الخوادم والعملاء والأسماء والمزيد
محدد مواقع الخدمات السلبي، أداة تنصت بلغة بايثون تحدد الخوادم والعملاء والأسماء والمزيد
ملاحظات سريعة للبدء مع passer، أداة التنصت السلبية على الخدمات. أنت مسؤول عن الحصول على الإذن بالتنصت.
يمكن لـ Passer العمل من التقاط حزم مباشر أو من ملف pcap (معامل سطر الأوامر، انظر الأمثلة أدناه). يبلّغ عن الخدمات والعملاء المباشرين، وبطاقات الإيثرنت على الشبكة المحلية، ومدخلات DNS، وأنظمة التشغيل، والموجّهات - كل ذلك بشكل سلبي!
إذا كنت تستخدم ويندوز أو لم تتطابق مساراتك إلى ملفات الدعم مع مساراتي لسبب آخر، فأخبرني بمكانها وسأكون سعيدًا بتحديث السكربت.
# Install system dependencies
sudo apt-get install arp-scan ettercap-text-only nmap wireshark
# Install python dependencies
sudo pip install -r requirements.txt
# Prevent Scapy from performing DNS lookups
echo 'noenum = [ Resolve(), TCP_SERVICES, UDP_SERVICES ]' >> ~/.scapy_startup.py
# Install system dependencies
sudo yum install arp-scan ettercap nmap wireshark
# Install python dependencies
sudo pip install -r requirements.txt
# Prevent Scapy from performing DNS lookups
echo 'noenum = [ Resolve(), TCP_SERVICES, UDP_SERVICES ]' >> ~/.scapy_startup.py
لتثبيت scapy، راجع دليل التثبيت.
يتوفر Passer أيضًا كصورة Docker. إذا لم يكن Docker مثبتًا لديك بالفعل، فإليك طريقة سريعة وبسيطة لتثبيته على Linux:
curl -fsSL https://get.docker.com | sh -
خلاف ذلك، اتبع تعليمات التثبيت لنظام التشغيل الخاص بك.
لمعظم الاستخدامات، نوصي بسكربت passer المضمّن في هذا المستودع. سيتولى هذا السكربت جميع الأمور الخاصة بـ docker
wget https://raw.githubusercontent.com/activecm/passer/master/passer
chmod +x passer
يمكنك بعد ذلك استخدام هذا السكربت تمامًا كما تفعل في أي من الأمثلة أدناه. على سبيل المثال:
./passer -i eth0
# The equivalent without using the included script would be:
docker run --rm --name=passer -i --init --net=host --cap-add=net_raw activecm/passer -i eth0
من أجل إيقاف تشغيل passer:
docker stop passer
/path/to/passer.py
هذا يلتقط من جميع واجهات الشبكة ويرسل جميع أسطر الإخراج إلى وحدة التحكم لديك.
sudo /path/to/passer.py
أو
su - -c '/path/to/passer.py'
/path/to/passer.py -i IfaceName
سيؤدي تشغيل route إلى إظهار بعض الواجهات الحية التي قد تستخدمها.
❕ الخيار
-iغير متوافق مع-r.
/path/to/passer.py -r /path/to/packets.pcap
❕
-rغير متوافق مع-i.
cat packetdata.pcap | ./passer.py -r /proc/self/fd/0
zcat packetdata.pcap.gz | ./passer.py -r /proc/self/fd/0
bzcat packetdata.pcap.bz2 | ./passer.py -r /proc/self/fd/0
tcpdump -i eth0 -qtnp -w - | ./passer.py -r /proc/self/fd/0
# etc...
يتيح لك هذا التقاط الحزم باستخدام أي أداة يمكنها حفظ الحزم في ملف pcap، ثم معالجتها لاحقًا باستخدام passer على نظام مختلف.
/path/to/passer.py -l /path/to/networkinfo.txt
/path/to/passer.py 2>/dev/null
/path/to/passer.py -h
/path/to/passer.py -u /path/to/oddpackets.pcap
هذا مخصص عمومًا لعملية التطوير؛ الحزم المحفوظة في هذا الملف هي تلك التي تحتاج إلى كتابة توقيعات لها. تُقبل بامتنان مساهمات الحزم الغريبة، وأوصاف الخدمات، والتصحيحات على البرنامج.
يُفترض أن يكون هذا بسيطًا مثل وضع مرشح BPF بين علامتي اقتباس مفردتين في نهاية سطر الأوامر. اعتبارًا من الإصدار 1.16، لا يبدو أن المكتبة الأساسية تستخدم المرشح المقدم بنجاح، لكن هناك حل بديل. استخدم tcpdump لإجراء التصفية، وسلّم مجموعة الحزم المخففة إلى passer عبر stdin، كما في الأعلى:
tcpdump -r packets.pcap -w - 'icmp or arp' | ./passer.py -r /proc/self/fd/0
راجع قسم "نماذج الفلاتر" أدناه للاطلاع على بعض الاقتراحات بشأن الفلاتر التي يمكن استخدامها إما في التقاط الحزم مسبقًا أو في التنصت المباشر.
socket.error: (1, 'Operation not permitted')
من المحتمل أنك تحاول الالتقاط المباشر كمستخدم غير جذر. إما أن تسجّل الدخول كجذر، أو تستخدم sudo/su، أو تعمل مع ملفات pcap.
إذا تعطّل passer أو لم يعمل على نظامك، فيرجى إنشاء issue يتضمن رسالة الخطأ، إن وُجدت، وأي تفاصيل عن نظام التشغيل لديك.
يذهب إخراج Passer إلى stdout، وإذا أعطيت معامل سطر الأوامر
-l /path/to/logfile، فإلى ذلك الملف أيضًا. إليك الصيغة:
| Type | IPAddr | Proto | State | Optional description (may be empty) |
|---|---|---|---|---|
| 'IP' | IPaddr | 'IP' | dead or live | p0f OS description |
| 'MA' | IPaddr | 'Ethernet' | MacAddr | ManufDescription |
| 'TC' | IPaddr | 'TCP_'Port | closed or open | client description |
| 'TS' | IPaddr | 'TCP_'Port | closed or listening | server description |
| 'UC' | IPaddr | 'UDP_'Port | open or closed | udp client port description |
| 'US' | IPaddr | 'UDP_'Port | open or closed | udp server port description |
| 'DN' | IPaddr | 'A' or 'PTR' | hostname | possible extra info |
| 'RO' | IPaddr | 'TTLEx' | router | possible extra info |
الأسطر مفصولة بفواصل لسهولة تحميلها في جدول بيانات أو استيرادها إلى SQL. لا ينبغي أن يحتوي أي من الحقول على فواصل. يوجد ملف إخراج نموذجي على http://www.stearns.org/passer/passer-sample-log.txt .
فيما يلي بعض الأمثلة على كيفية استخراج البيانات التي تريدها من هذه الأسطر:
cat /var/tmp/passer-log | sort -u | less
cat /var/tmp/passer-log | sort -t, -k2 -u | less
cat /var/tmp/passer-log | sort -u | egrep '(^DN|^RO)' | less
cat /var/tmp/passer-log | sort -u | grep ',192\.168\.0\.17,' | less
cat /var/tmp/passer-log | sort -u | grep ',192\.168\.' | less
cat /var/tmp/passer-log | sort -u | grep ',TCP_25,listening,' | less
cat /var/tmp/passer-log | sort -u | grep -v ',closed,' | less
cat /var/tmp/passer-log | sort -u | grep ',closed,' | less
cat /var/tmp/passer-log | sort -u | grep -i 'google\.com\.,' | less
/path/to/make-hosts /var/tmp/passer-log | /path/to/mergehosts.pl >/var/tmp/passer-hosts
"make-hosts" و merge-hosts هما سكربتات shell و perl منفصلة على http://www.stearns.org/passer/make-hosts .
هذه مجرد بداية! أرسل طرقك المفضلة لاستخراج العناصر ذات الاهتمام وسأضيفها وأمنحك الفضل.