Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
portclue — اشرح لماذا قد يكون منفذ TCP على Linux قابلاً للوصول أو غير قابل للوصول | Kitploit
أدوات/GitHubGitHub/pbxqdown/portclue
أدوات دفاعيةأمن الحاوياتتدقيق التكوينجمع المعلوماتأمن الشبكاتالأدوات والمكونات
GitHubpbxqdown/portclue

portclue

اشرح لماذا قد يكون منفذ TCP على Linux قابلاً للوصول أو غير قابل للوصول

عرض المستودع
330منذ 6 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
الموقع الإلكتروني

PortClue

CI Release License Go

يشرح PortClue لماذا قد يكون منفذ TCP على جهاز Linux قابلاً للوصول أو غير قابل للوصول. فهو يحوّل حالة المقبس (socket) والعملية (process) والجدار الناري (firewall) وDocker إلى سلسلة أدلة قصيرة بدلاً من إجبارك على ربط ss و/proc وnftables وiptables وdocker inspect يدوياً.

PortClue demo: an overview of local TCP listeners, then the evidence chain for port 8080

شغّله بدون تحديد منفذ لاكتشاف نقاط نهاية TCP المحلية التي تستحق الانتباه:

$ sudo portclue
LOCAL TCP LISTENERS

PORT    SERVICE                   CONFIDENCE BIND            OWNER       SOURCE BIND SCOPE
22      OpenSSH server            HIGH       0.0.0.0,::      ssh.service host   ALL_INTERFACES
8080    NGINX web server          HIGH       0.0.0.0,::      nginx       host   ALL_INTERFACES
8443    api service               MEDIUM     192.0.2.10      demo-api    docker SPECIFIC_INTERFACE
9000    Python HTTP server        MEDIUM     127.0.0.1       python3     host   LOOPBACK_ONLY

BIND SCOPE describes socket binding, not firewall reachability.
Run `portclue PORT` for the complete evidence chain and local exposure verdict.

تصف ALL_INTERFACES وSPECIFIC_INTERFACE وLOOPBACK_ONLY المكان الذي يقبل فيه المقبس حركة المرور. وهي لا تدّعي عمداً أن جداراً نارياً يسمح بذلك. افحص منفذاً للحصول على تحليل الجدار الناري المحلي الكامل:

$ sudo portclue 8080
POTENTIAL EXTERNAL EXPOSURE

TCP port 8080

  0.0.0.0:8080/tcp  [POTENTIAL]
    Service            NGINX web server
    Category           web
    Confidence         HIGH
    Identity evidence  executable basename matched "nginx"
    -> LISTEN             NETLINK_INET_DIAG reports socket inode 123456 bound to 0.0.0.0:8080/tcp
    -> OWNED              PID 4242 (nginx), systemd unit nginx.service
    -> ALL_INTERFACES     0.0.0.0 accepts traffic addressed to any local interface
    -> ACCEPT             nftables: a direct rule matches TCP destination port 8080 and returns accept

Unknown outside this machine:
  - router port forwarding
  - cloud firewall or security group
  - upstream NAT, including carrier-grade NAT

[!IMPORTANT] PortClue v0.1 هو نموذج أولي مبكر ومتحفظ لنظام Linux. تعني POTENTIAL أن المسار المحلي المرصود يسمح بحركة المرور؛ وهو لا يدّعي أن المنفذ قابل للوصول من الإنترنت العام. تنتج تعبيرات الجدار الناري غير المدعومة UNKNOWN.

لماذا لا نستخدم ss أو lsof

  • لا يحتاج إليهما. تأتي المستمعات (listeners) من NETLINK_INET_DIAG، وهي نفس واجهة النواة التي يستخدمها ss، وتأتي تفاصيل العمليات من /proc. لا يتم تحليل أي شيء من مخرجات أداة أخرى، لذا فإن حاوية لا تحتوي على ss ولا lsof تحصل مع ذلك على المستمع ومالكه. تحليل الجدار الناري يشغّل nft أو iptables-save، ويبلّغ عن UNKNOWN بدونهما.
  • يجيب على السؤال التالي. يمنحك ss -ltnp المقبس ومعرّف العملية (PID). أما ما إذا كان هذا الربط (bind) محلياً فقط (loopback-only)، وما إذا كانت قاعدة جدار ناري تسمح به، وما إذا كان المنفذ نشراً لـ Docker بدلاً من مستمع على المضيف، فهو عمل كنت ستقوم به يدوياً.
  • لن يخمّن. قاعدة جدار ناري لا يستطيع PortClue نمذجتها تعطي UNKNOWN، وليس إجابة خاطئة واثقة.

ما الذي يقرأه

  • مستمعات TCP عبر NETLINK_INET_DIAG، وليس عبر استخراج مخرجات ss
  • ملكية العملية، والملف التنفيذي، وسطر الأوامر، وcgroup، وفضاء أسماء الشبكة (network namespace) عبر /proc
  • أوصاف وحدات systemd من ملفات الوحدات المثبّتة ومشغّلات المقابس النشطة عبر systemctl show
  • nftables عبر nft --json list ruleset
  • iptables عبر iptables-save عندما تكون nftables غير متاحة
  • منافذ Docker المنشورة عبر واجهة HTTP المحلية لمحرك Docker، بما في ذلك الصورة (image) والوسوم (labels)

هوية الخدمة

يحدّد PortClue ما ينتمي إليه المنفذ قبل شرح التعرض. تُرتَّب الأدلة بالترتيب التالي:

  1. الملف التنفيذي المرصود، ووحدة systemd، ومشغّل المقبس النشط؛
  2. صورة Docker، واسم الحاوية، والوسوم؛
  3. كتالوج الخدمات المنسّق المضمّن؛
  4. اصطلاح المنفذ المحلي في /etc/services.

المالك الفعلي يتجاوز دائماً اسم المنفذ الاصطلاحي. إذا كان اصطلاح المنفذ فقط معروفاً، تُوسَم الهوية صراحةً بثقة LOW. الكتالوج المضمّن مخزّن في internal/identify/catalog.json ويُشحن داخل الملف التنفيذي الواحد؛ ولا يقوم PortClue بتنزيل بيانات الهوية أثناء التشغيل.

PortClue للقراءة فقط. فهو لا يتصل بالمنفذ المفحوص، ولا يفحص مضيفاً آخر، ولا يغيّر قواعد الجدار الناري، ولا يوقف العمليات أو الحاويات، ولا يرفع البيانات، ولا يشغّل خادماً (daemon).

التثبيت

سكربت التثبيت (موصى به)

يعمل على Linux (amd64 وarm64). يقوم السكربت بتنزيل أرشيف GitHub Release المطابق، والتحقق من SHA256SUMS، وتثبيت ملف تنفيذي واحد. وهو لا يعدّل إعدادات الصدفة (shell config).

تثبيت المستخدم (الافتراضي، بدون root). يثبّت في ~/.local/bin، مملوكاً لك:

curl -fsSL https://raw.githubusercontent.com/pbxqdown/portclue/v0.1.2/scripts/install.sh | sh
portclue

يعمل تثبيت المستخدم بدون root ويبلّغ عن الأدلة المتاحة لحسابك، مع الإشارة إلى ما هو مفقود. هذا كافٍ لاستكشاف المستمعات وخرائط Docker. ولأن sudo لا يبحث في ~/.local/bin وهذا الملف التنفيذي قابل للكتابة من قبل مستخدمك، لا تشغّل هذه النسخة باستخدام sudo.

تثبيت النظام (مملوك لـ root، من أجل sudo portclue). يقرأ PortClue الأدلة الأكثر اكتمالاً (‏/proc المقيّد، وحالة الجدار الناري الكاملة) بصلاحيات root. لذلك، ثبّت ملفاً تنفيذياً مملوكاً لـ root في /usr/local/bin (يستخدم السكربت sudo فقط في خطوة التثبيت النهائية، وليس للتنزيل أو الاستخراج):

curl -fsSL https://raw.githubusercontent.com/pbxqdown/portclue/v0.1.2/scripts/install.sh | sh -s -- --system
sudo portclue

تجاوزات اختيارية: PORTCLUE_VERSION=0.1.2 (بدون v البادئة) و PORTCLUE_INSTALL_DIR لأي من الوضعين.

إلغاء التثبيت:

# user install
rm ~/.local/bin/portclue
# system install
sudo rm /usr/local/bin/portclue
# or, matching how you installed:
curl -fsSL https://raw.githubusercontent.com/pbxqdown/portclue/v0.1.2/scripts/install.sh | sh -s -- --uninstall
curl -fsSL https://raw.githubusercontent.com/pbxqdown/portclue/v0.1.2/scripts/install.sh | sh -s -- --system --uninstall

أرشيف الإصدار

نزّل portclue-VERSION-linux-ARCH.tar.gz وSHA256SUMS المطابقين من GitHub Releases، وتحقق من المجموع الاختباري (checksum)، ثم ثبّت:

sha256sum -c SHA256SUMS --ignore-missing
tar -xzf portclue-0.1.2-linux-amd64.tar.gz   # or linux-arm64
sudo install -m 0755 portclue-0.1.2-linux-amd64/portclue /usr/local/bin/portclue
portclue --version

تعيين المعمارية:

uname -mArchive
x86_64linux-amd64
aarch64, arm64linux-arm64

يتضمن كل أرشيف الملف التنفيذي، وREADME، ورخصة Apache-2.0، وإشعارات الأطراف الثالثة.

التثبيت عبر Go

يتطلب Linux وGo 1.27+:

go install github.com/pbxqdown/portclue/cmd/[email protected]

يضع هذا الملف التنفيذي في $(go env GOPATH)/bin. يُفضَّل استخدام أرشيف الإصدار المُتحقَّق من مجموعه الاختباري أو سكربت التثبيت عندما تريد مخرجات تثبيت قابلة لإعادة الإنتاج.

البناء والتشغيل من المصدر

المتطلبات: Linux وGo 1.27 أو أحدث.

go build -o portclue ./cmd/portclue
./portclue
./portclue --json
./portclue 8080
./portclue --json 8080

يقبل وضع النظرة العامة مرشّحات اختيارية (تبقى الحقول المتجاهَلة غير مقيّدة):

تنزيل الأداة