.\" SPDX-License-Identifier: GPL-2.0-or-later .\" Copyright (c) 2009,2020,2026 Red Hat Inc. .TH "NETCAP" "8" "مارس ۲۰۲۶" "Red Hat" "ابزارهای مدیریت سیستم" .SH "نام (NAME)" netcap \- برنامهای برای بررسی وضعیت قابلیتهای شبکه فرآیندها .SH "خلاصه دستور (SYNOPSIS)" .B netcap .RI [ --advanced .RI [ --interface " IFACE ] .RI [ --list-interfaces ] .RI [ --json ] .RI [ --no-color ]] .SH "توضیحات (DESCRIPTION)" برنامه \fBnetcap\fP گزارشی از قابلیت‌های (capabilities) فرآیندها چاپ می‌کند. به‌طور پیش‌فرض، در حالت فیلترشده سنتی خود اجرا می‌شود: اگر برنامه‌ای از سوکت‌های خانواده tcp، udp، raw یا packet استفاده کند و همچنین دارای هرگونه قابلیتی باشد، در گزارش لحاظ خواهد شد. اگر فرآیند دارای قابلیت‌های جزئی باشد، بیشتر بررسی می‌شود تا مشخص گردد آیا مجموعه محدودکننده باز (open-ended bounding set) دارد یا خیر. در صورتی که این مورد درست باشد، علامت «+» افزوده می‌شود. اگر فرآیند دارای قابلیت‌های محیطی (ambient capabilities) باشد، علامت «@» اضافه خواهد شد. سوکت‌های بلوتوث (Bluetooth) در این حالت فیلترشده سنتی شناسایی نمی‌شوند؛ در صورتی که به شناسایی شنوندگان بلوتوث نیاز است، از \fB\-\-advanced\fP استفاده کنید. .PP با گزینه \fB\-\-advanced\fP، برنامه \fBnetcap\fP به حالت سیاهه اتصالات/شنوندگان (bind/listener inventory) برای فضای نام شبکه فعلی تغییر وضعیت می‌دهد. در این حالت، اتصالات/شنوندگان قابل‌دسترس صرف‌نظر از اینکه فرآیند مالک دارای قابلیت است یا خیر گزارش می‌شوند، از جمله شنوندگان بلوتوث که در حالت کلاسیک قابل مشاهده نیستند. .PP برخی دایرکتوری‌ها در سیستم فایل /proc فقط توسط کاربر ریشه (root) قابل خواندن هستند. برنامه تلاش خواهد کرد به آنچه می‌تواند دسترسی پیدا کرده و آن را گزارش دهد. خروجی کامل معمولاً نیازمند کاربر ریشه است، یا ترکیبی از \fBCAP_DAC_READ_SEARCH\fP (برای خواندن \fB/proc//fd\fP سایر فرآیندها) و \fBCAP_NET_ADMIN\fP (برای پرس‌وجوهای \fBNETLINK_SOCK_DIAG\fP که پروتکل‌های SCTP، DCCP و در صورت ساخت با پشتیبانی از VSOCK، پروتکل VSOCK را پوشش می‌دهند). بدون این مجوزها، گزارش ناقص خواهد بود؛ پروتکل‌های مشتق‌شده از sock_diag که موجود نیستند، بدون هشدار صریح حذف می‌شوند. .SH "گزینهها (OPTIONS)" .TP .B \-\-advanced فعال‌سازی نمای وضعیت امنیتی/درختی (posture/tree). این حالت، اتصالات (binds) قابل‌دسترس در فضای نام شبکه فعلی را فهرست‌بندی کرده و قابلیت‌ها، سازوکارهای دفاعی و پرچم‌های هر فرآیند را نشان می‌دهد. .TP .BI \-\-interface " IFACE" همراه با \fB\-\-advanced\fP، گزارش را به رابط نام‌برده محدود می‌کند. قالب خروجی و شکست خطوط تغییر نمی‌کند؛ تنها ردیف‌های مربوط به آن رابط نگه‌داشته می‌شوند. این گزینه همچنین خروجی \fB\-\-list\-interfaces\fP را به رابط مشخص‌شده محدود می‌کند. .TP .B \-\-list\-interfaces همراه با \fB\-\-advanced\fP، به جای درخت مواجهه، نام رابط‌های فضای نام شبکه فعلی را فهرست می‌کند. .TP .B \-\-json همراه با \fB\-\-advanced\fP، به جای نمای درختی، خروجی JSON با قابلیت خواندن توسط ماشین تولید می‌کند. هنگامی که با \fB\-\-list\-interfaces\fP ترکیب شود، به جای متن، سیاهه رابط‌ها را در قالب JSON با قابلیت خواندن توسط ماشین تولید می‌کند. .TP .B \-\-no\-color غیرفعال کردن خروجی رنگی. به‌طور پیش‌فرض، هنگامی که خروجی استاندارد (stdout) یک ترمینال باشد، کلیدواژه‌ها بر اساس میزان اهمیت/شدت رنگی می‌شوند تا مشکلات، هشدارها و وضعیت مثبت مقاوم‌سازی برجسته شوند. .SH "حالت پیشرفته (ADVANCED MODE)" حالت پیشرفته، یک سیاهه از سطح حمله و وضعیت امنیتی (posture) برای فضای نام شبکه فعلی است. این حالت برای مدیران سیستمی در نظر گرفته شده است که به یک نمای ساختاریافته از مالکیت اتصالات (bind) و وضعیت مقاوم‌سازی (hardening) فرآیندها نیاز دارند. .PP با استفاده از \fB\-\-advanced --list\-interfaces\fP، تصویر لحظه‌ای رابط‌های حالت پیشرفته مستقیماً بدون شمارش شنوندگان نمایش داده می‌شود. هدف از این کار، ارائه یک گام ساده برای شمارش رابط‌ها پیش از تحلیل‌های بعدی به تفکیک رابط است. با استفاده از \fB\-\-advanced --interface IFACE\fP، همان سازوکار سیاهه و رندرهای درختی/JSON به کار گرفته می‌شوند، اما تنها نقاط پایانی (endpoints) نگاشت‌شده روی آن رابط حفظ می‌گردند. .PP چیدمان درختی به این صورت است: .RS Planes \-> interface \-> protocol \-> bind \-> port \-> process \-> caps/defenses/flags .RE .PP برای VSOCK، سلسله‌مراتب رابط/آدرس نادیده گرفته شده و به این شکل نمایش داده می‌شود: .RS Planes \-> endpoint \-> process \-> caps/defenses/flags .RE .PP برای BLUETOOTH، رابط همان آداپتور HCI است (برای نمونه \fBhci0\fP). گره‌های اتصال بلوتوث، آدرس کنترل‌کننده محلی یا علامت \fB*\fP برای اتصالات عام (wildcard) هستند. .PP سطوح ارتباطی (Planes) به صورت INET (external)، INET (loopback)، BLUETOOTH، VSOCK و LINK-LAYER گروه‌بندی می‌شوند. این نام‌ها دقیقاً با خروجی درختی مطابقت دارند. .PP درخت کنسول یک زنجیره مواجهه علّی است: پروتکل، سپس آدرس اتصال (bind)، سپس پورت، و سپس فرآیند مالک. اتصالات عام (wildcard) به صورت \fB*\fP چاپ می‌شوند. در نمای درختی، یک شنونده منفرد \fB0.0.0.0\fP یا \fB::\fP روی هر رابط غیر loopback در فضای نام فعلی بسط داده می‌شود. بنابراین یک دیمن (daemon) یکسان ممکن است زیر چندین رابط ظاهر شود که بیانگر دسترس‌پذیری از طریق اتصالات عام است. برخی از نقاط پایانی ممکن است در صورت اتصال به آدرس‌های چندپخشی (multicast) که به یک رابط واحد نگاشت نمی‌شوند، زیر رابط \fBmulticast/group\fP ظاهر گردند؛ این موارد نمایانگر سوکت‌های پیوسته به گروه هستند و نه شنوندگان نقطه به نقطه (point-to-point). .PP زیر هر پروتکل، گره‌های \fBbind\fP آدرس‌های اتصال سوکت (مواجهه) بوده و گره‌های \fBport\fP فرزندان اتصالات هستند. هر ورودی فرآیند ممکن است شامل فیلد \fBunit\fP باشد که نام سرویس یا scope در systemd را نمایش می‌دهد و از سلسله‌مراتب cgroup فرآیند استخراج می‌شود؛ اگر فرآیند توسط systemd مدیریت نشود، این فیلد حذف می‌شود. همچنین هر خط فرآیند شامل یک فیلد اختیاری \fBexe\fP است که مسیر کامل فایل اجرایی خوانده‌شده از \fB/proc//exe\fP را نشان می‌دهد؛ این فیلد برای ریسه‌های هسته (kernel threads) یا زمانی که مسیر غیرقابل خواندن باشد حذف می‌شود. فیلد \fBName:\fP در هسته که با عنوان \fBcomm\fP نمایش داده می‌شود تا ۱۵ نویسه کوتاه می‌شود، بنابراین فیلد \fBexe\fP مسیر کامل باینری را ارائه می‌دهد. .PP گزینش سوکت‌ها وابسته به پروتکل است: .IP \[bu] 2 \fBTCP\fP: فقط سوکت‌های LISTEN. .IP \[bu] 2 \fBUDP/UDPLITE\fP: سوکت‌های متصل‌شده (bound). .IP \[bu] 2 \fBRFCOMM\fP: تمام سوکت‌های RFCOMM تحت مالکیت (وضعیت و کانال توسط رابط proc هسته ارائه نمی‌شوند). .IP \[bu] 2 \fBHCI\fP: تمام سوکت‌های خام مدیریتی متصل‌شده؛ معناشناسی آن‌ها با شنوندگان پورت تفاوت دارد و مشابه سوکت‌های بسته‌ای (packet sockets) است. .IP \[bu] 2 \fBSCTP/DCCP\fP: فقط سوکت‌های شنونده؛ جریان‌های برقرارشده نمایش داده نمی‌شوند. این پروتکل‌ها از طریق \fBNETLINK_SOCK_DIAG\fP شناسایی می‌شوند که نیازمند \fBCAP_NET_ADMIN\fP است؛ بدون آن قابلیت، شنوندگان SCTP و DCCP بدون هشدار صریح در گزارش غایب خواهند بود. .IP \[bu] 2 \fBVSOCK\fP: در صورت کامپایل با \fBlinux/vm_sockets.h\fP، سوکت‌های جریانی LISTEN، به‌علاوه سوکت‌های متصل‌شده datagram/seqpacket. .IP \[bu] 2 \fBRAW/PACKET\fP: به صورت اتصالات (binds) نشان داده می‌شوند؛ معناشناسی آن‌ها با شنوندگان پورت تفاوت دارد. .PP بخش دفاعیات (defenses) به بهترین شکل ممکن (best-effort) عمل می‌کند: حالت‌های \fBno_new_privs\fP و \fBseccomp\fP در صورت وجود از \fB/proc//status\fP خوانده می‌شوند، و برچسب LSM در صورت در دسترس بودن از \fB/proc//attr/current\fP خوانده می‌شود. وضعیت \fBruns_as_nonroot\fP همواره گزارش می‌گردد. .PP پرچم‌ها (Flags) شرایط قابل توجه را مشخص می‌کنند: .IP \[bu] 2 \fBwildcard-bind\fP: اتصال به یک آدرس عام (برای نمونه 0.0.0.0 یا ::) برقرار است. .IP \[bu] 2 \fBhypervisor-plane\fP: اتصال در سطح ارتباطی VSOCK قرار دارد. .IP \[bu] 2 \fBproximity-plane\fP: اتصال برای هر دستگاه بلوتوث در برد رادیویی قابل دسترس است. .IP \[bu] 2 \fBssh-on-vsock-port-22\fP: اتصال VSOCK از پورت ۲۲ استفاده می‌کند. .IP \[bu] 2 \fBprivileged-caps\fP: فرآیند دارای قابلیت‌هایی است که برای بررسی سطح حمله، ممتاز در نظر گرفته می‌شوند (CAP_SYS_ADMIN، CAP_SYS_PTRACE، CAP_DAC_READ_SEARCH، CAP_NET_ADMIN و CAP_NET_RAW). .PP فیلد \fBcaps\fP ممکن است شامل توضیحات درون براکت باشد: \fB[ambient-present]\fP نشان می‌دهد که قابلیت‌های محیطی تنظیم شده‌اند، و \fB[open-ended-bounding]\fP نشان می‌دهد که مجموعه محدودکننده خالی نیست (فرآیند یا فرزندان آن می‌توانند به‌طور بالقوه قابلیت‌های بیشتری به دست آورند). .SH "خروجی JSON (JSON OUTPUT)" هنگامی که از \fB\-\-advanced --json\fP استفاده می‌شود، شیء سطح بالا (top-level) شامل موارد زیر است: .IP \[bu] 2 \fBschema_version\fP (عدد صحیح). .IP \[bu] 2 \fBplanes\fP (آرایه). .PP هر شیء سطح ارتباطی (plane) شامل \fBname\fP، فیلد اختیاری \fBscope\fP (\fBexternal\fP یا \fBloopback\fP)، و یکی از موارد زیر است: .IP \[bu] 2 \fBifaces\fP (برای سطوح INET/LINK-LAYER/BLUETOOTH)، یا .IP \[bu] 2 \fBendpoints\fP (برای سطح VSOCK). .PP زیر \fBifaces\fP: هر رابط دارای \fBname\fP و \fBaddrs\fP (آرایه) است. هر شیء addr دارای \fBaddr\fP و \fBendpoints\fP (آرایه) است. .PP برای سطوح INET، LINK-LAYER و BLUETOOTH، هر شیء endpoint دارای \fBlabel\fP، \fBproto\fP، \fBbind\fP، \fBport\fP و \fBprocesses\fP (آرایه) است. برای سطوح BLUETOOTH، نام‌های رابط همان نام‌های آداپتور HCI هستند (برای نمونه \fBhci0\fP)؛ مقدار \fBport\fP برای سوکت‌های HCI و برای سوکت‌های RFCOMM که کانال آن‌ها توسط procfs ارائه نشده است، برابر ۰ خواهد بود. برای سطوح VSOCK، اشیاء endpoint از \fBlabel\fP، \fBvsock_type\fP (رشته نوع سوکت: \fBstream\fP/\fBdgram\fP/\fBseqpacket\fP)، \fBcid\fP (شناسه منبع یا رشته \fBANY\fP)، \fBport\fP و \fBprocesses\fP استفاده می‌کنند؛ آن‌ها شامل \fBproto\fP یا \fBbind\fP نیستند. هنگامی که برنامه بدون \fBlinux/vm_sockets.h\fP ساخته شود، سطح VSOCK و پرچم‌های VSOCK حذف می‌شوند. .PP هر شیء فرآیند (process) دارای \fBcomm\fP، فیلد اختیاری \fBexe\fP، \fBpid\fP، \fBuid\fP، فیلد اختیاری \fBunit\fP، \fBcaps\fP، \fBambient_present\fP (بولی)، \fBopen_ended_bounding\fP (بولی)، شیء \fBdefenses\fP و آرایه \fBflags\fP است. .PP فیلدهای \fBambient_present\fP و \fBopen_ended_bounding\fP معادل‌های ساختاریافته توضیحات \fB[ambient-present]\fP و \fB[open-ended-bounding]\fP هستند که ممکن است در رشته متنی caps ظاهر شوند؛ هر دو فیلد همیشه در خروجی JSON حضور دارند. .PP فیلدهای زیر endpoints/processes/defenses در صورت در دسترس نبودن ممکن است حذف شوند. هنگامی که دفاعیات فرآیند موجود باشند، شامل \fBruns_as_nonroot\fP مشتق‌شده از UID واقعی (اولین فیلد \fBUid:\fP در \fB/proc//status\fP) خواهند بود: در صورتی که UID واقعی != 0 باشد مقدار \fByes\fP، و در صورتی که UID واقعی == 0 باشد مقدار \fBno\fP. فرآیندی که با ریشه (root) شروع به کار کرده و بعداً تنها UID موثر را از طریق setuid تغییر داده باشد، همچنان \fBno\fP را گزارش می‌دهد. .PP اگر یک سطح ارتباطی فاقد اتصالات شناسایی‌شده باشد، با یک لیست خالی ظاهر می‌شود. اگر مصرف‌کننده سطح ارتباطی خاصی را دریافت نکرد، آن را به عنوان عدم کشف یا حذف‌شده توسط تولیدکننده در نظر بگیرید. .PP هنگامی که از \fB\-\-advanced --list\-interfaces --json\fP استفاده می‌شود، شیء سطح بالا شامل \fBschema_version\fP (عدد صحیح) و \fBinterfaces\fP (آرایه‌ای از رشته‌های نام رابط‌ها) خواهد بود. .SH "تفسیر خروجی (INTERPRETATION)" ابزار \fBnetcap\fP فرآیندهایی را گزارش می‌کند که هم رو به شبکه بوده و هم با قابلیت‌ها (capabilities) اجرا می‌شوند. مجموعه قابلیت‌های نشان‌داده‌شده، مجموعه مجاز (permitted set) است. علامت «+» به این معنی است که فرآیند دارای یک مجموعه محدودکننده باز (open-ended bounding set) است، و علامت «@» بیانگر این است که فرآیند دارای قابلیت‌های محیطی (ambient capabilities) است. .PP خروجی درختی رنگی با هدف اولویت‌بندی سریع اقدامات اصلاحی در نظر گرفته شده است: رنگ نارنجی مشکلات نیازمند رفع را برجسته می‌کند، رنگ زرد شرایط هشداردهنده جهت بررسی را نشان می‌دهد، رنگ سبز وضعیت مقاوم‌سازی مطلوب را مشخص می‌سازد، و خروجی بدون رنگ، بستر خنثی است. .PP خط \fBcaps\fP قابلیت‌های مجاز را نشان می‌دهد. قابلیت‌های سطح نارنجی بیانگر اختیارات حساسی هستند که به ندرت برای دیمن‌های رو به شبکه ضروری هستند: \fBsys_ptrace\fP، \fBsys_module\fP، \fBsys_rawio\fP، \fBsetuid\fP، \fBsetgid\fP، \fBsetpcap\fP و \fBaudit_control\fP. قابلیت‌های سطح زرد متداول هستند اما همچنان به طور چشمگیری تأثیر حملات را افزایش می‌دهند: \fBsys_admin\fP، \fBdac_override\fP، \fBdac_read_search\fP، \fBnet_admin\fP، \fBnet_raw\fP، \fBchown\fP، \fBfowner\fP، \fBmknod\fP و \fBsys_chroot\fP. عبارت \fBcaps: (full)\fP یعنی تمام قابلیت‌ها وجود دارند (عملاً اختیارات کامل ریشه). عبارت \fBcaps: (none)\fP ایده‌آل است. .PP قابلیت‌های محیطی در هنگام \fBexecve\fP توسط فرآیندهای فرزند به ارث برده می‌شوند (مگر اینکه توسط \fBno_new_privs\fP محدود شده باشند)، بنابراین حضور آن‌ها روی یک دیمن شبکه معمولاً یک مشکل امنیتی است. خط \fBambient:\fP قابلیت‌های محیطی فعال را فهرست می‌کند. .PP عبارت \fB[open-ended-bounding]\fP بدین معناست که فرآیند سقف مجموعه محدودکننده خود را کاهش نداده است. این مورد به خودی خود یک امتیاز فعال نیست، اما مسیرهای کسب امتیاز در آینده را باز می‌گذارد (برای نمونه از طریق قابلیت‌های فایل یا ارث‌بری محیطی). برای کاربران libcap-ng، این کار معمولاً با تغییر یک پرچم (\fBCAPNG_SELECT_BOUNDS\fP) در فراخوانی‌های موجود تنظیم قابلیت‌ها صورت می‌گیرد؛ در libcap، قابلیت‌های محدودکننده باید تک‌تک حذف شوند. .PP فیلدهای دفاعی وضعیت مقاومت در برابر اکسپلویت را خلاصه می‌کنند: \fBno_new_privs: yes\fP کسب امتیاز از طریق مسیرهای اجرایی setuid/file-capability را مسدود می‌کند و اغلب ارزشمندترین سوئیچ منفرد است. \fBseccomp: filter\fP فراخوانی‌های سیستمی موجود را محدود می‌کند (\fBdisabled\fP به معنای عدم فیلتر فراخوانی‌های سیستمی است). \fBruns_as_nonroot: yes\fP نشان‌دهنده اجرا با کاربری غیر از ریشه (UID-0) است. .PP پرچم‌ها بستر دسترس‌پذیری و شنود را ارائه می‌دهند: \fBwildcard-bind\fP به این معناست که دیمن روی تمامی رابط‌ها گوش می‌دهد، \fBhypervisor-plane\fP نشان‌دهنده مواجهه با مرز میزبان/مهمان (VSOCK) است، \fBproximity-plane\fP مشخص می‌کند که اتصال برای دستگاه‌های بلوتوث درون برد رادیویی قابل دسترس است، و \fBreuseport\fP به این معناست که فرآیند دیگری با همان UID می‌تواند متصل شده و احتمالاً ترافیک را رهگیری کند. .PP گره‌های پروتکل \fBraw\fP/\fBraw6\fP و \fBpacket\fP نمایانگر سوکت‌هایی با قابلیت ساخت/شنود بسته‌های لایه IP یا لایه پیوند داده هستند که به طور چشمگیری توانایی حمله‌کننده را پس از نفوذ افزایش می‌دهند. گره‌های پروتکل بلوتوث نشان‌دهنده سطح حمله مبتنی بر مجاورت هستند. گره‌های \fBhci\fP دسترسی خام به مدیریت کنترل‌کننده را فراهم می‌کنند و به رنگ زرد نشان داده می‌شوند. سوکت‌های \fBrfcomm\fP توسط دستگاه‌های مجاور بدون دسترسی قبلی به میزبان قابل دسترس هستند و مگر در حالتی که آداپتور برای الزام به جفت‌سازی پیکربندی شده باشد، ممکن است بدون احراز هویت قابل دسترس باشند. تحلیل نشانی BD_ADDR آداپتور نیازمند دسترسی ioctl مربوط به HCI است؛ بدون آن، هویت آداپتور به صورت \fBhci?\fP/\fB*\fP نمایش داده می‌شود. .SH "همچنین ببینید (SEE ALSO)" .BR pscap (8), .BR filecap (8), .BR capabilities (7), .BR netstat (8). .SH "نویسندگان (AUTHORS)" استیو گراب (Steve Grubb)