NCRACK(1) راهنمای مرجع Ncrack NCRACK(1)

ncrack - ابزار بررسی و ارزیابی امنیت احراز هویت سرویس‌های شبکه

ncrack [گزینه‌ها] {مشخصات هدف}

ابزار Ncrack یک ابزار متن‌باز برای کرک و ارزیابی امنیت احراز هویت شبکه است. این ابزار برای آزمودن موازی و پرسرعت احراز هویت با بهره‌گیری از یک موتور پویا طراحی شده است که می‌تواند خود را با شرایط مختلف شبکه وفق دهد. ابزار Ncrack همچنین قابلیت تنظیم دقیق و گسترده برای موارد خاص را دارد، هرچند پارامترهای پیش‌فرض آن به اندازه کافی جامع هستند تا تقریباً هر سناریویی را پوشش دهند. این ابزار بر پایه معماری ماژولار بنا شده که امکان توسعه آسان برای پشتیبانی از پروتکل‌های بیشتر را فراهم می‌سازد. ابزار Ncrack برای شرکت‌ها و متخصصان امنیت طراحی شده است تا شبکه‌های بزرگ را از نظر گذرواژه‌های پیش‌فرض یا ضعیف به شیوه‌ای سریع و قابل‌اطمینان ممیزی و ارزیابی کنند. همچنین می‌توان از آن برای انجام حملات آزمون فراگیر (Brute Force) پیشرفته و فشرده علیه سرویس‌های اختصاصی استفاده کرد.


هشدار

پروژه Ncrack در تابستان سال ۲۰۰۹ آغاز شد. با اینکه این ابزار برای بسیاری از اهداف کاربردی است، اما همچنان نرم‌افزاری آزمایشی در نسخه بتا محسوب می‌شود. شما می‌توانید با آزمایش آن و گزارش هرگونه مشکل طبق آنچه در بخش “اشکالات (BUGS)” آمده است، به توسعه آن کمک کنید.

خروجی Ncrack فهرستی از اعتبارنامه‌ها و اطلاعات ورود کشف‌شده (در صورت وجود) برای هر یک از اهداف تعیین‌شده است. Ncrack همچنین می‌تواند یک گزارش وضعیت تعاملی از پیشرفت فعلی و در صورت فعال بودن گزینه مربوطه توسط کاربر، اطلاعات اشکال‌زدایی تکمیلی را برای ردیابی مشکلات نمایش دهد.

یک پویش معمول با Ncrack در مثال ۱ نشان داده شده است. تنها آرگومان‌های به‌کاررفته در این مثال دو آدرس IP هدف به همراه پورت‌های متناظر آن‌هاست. دو پورت نمونه ۲۱ و ۲۲ به طور خودکار به سرویس‌های پیش‌فرضی که روی آن‌ها شنود می‌کنند نگاشت می‌شوند: ftp و ssh.

مثال ۱. نمونه‌ای از یک پویش با Ncrack

$ ncrack 10.0.0.130:21 192.168.1.2:22
Starting Ncrack 0.6 ( http://ncrack.org ) at 2016-01-03 22:10 EEST
Discovered credentials for ftp on 10.0.0.130 21/tcp:
10.0.0.130 21/tcp ftp: admin hello1
Discovered credentials for ssh on 192.168.1.2 22/tcp:
192.168.1.2 22/tcp ssh: guest 12345
192.168.1.2 22/tcp ssh: admin money$
Ncrack done: 2 services scanned in 156.03 seconds.
Ncrack finished.

تازه‌ترین نسخه Ncrack را می‌توانید از نشانی http://nmap.org/ncrack دریافت کنید. همچنین آخرین نسخه این صفحه راهنما در نشانی http://nmap.org/ncrack/man.html در دسترس است.

این خلاصه گزینه‌ها زمانی نمایش داده می‌شود که Ncrack بدون هیچ آرگومانی اجرا شود. این بخش به یادآوری رایج‌ترین گزینه‌ها کمک می‌کند، اما جایگزینی برای مستندات جامع و دقیق موجود در ادامه این راهنما نیست.

Ncrack 0.7 ( http://ncrack.org )
Usage: ncrack [Options] {target and service specification}
TARGET SPECIFICATION:
  Can pass hostnames, IP addresses, networks, etc.
  Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
  -iX <inputfilename>: Input from Nmap's -oX XML output format
  -iN <inputfilename>: Input from Nmap's -oN Normal output format
  -iL <inputfilename>: Input from list of hosts/networks
  --exclude <host1[,host2][,host3],...>: Exclude hosts/networks
  --excludefile <exclude_file>: Exclude list from file
SERVICE SPECIFICATION:
  Can pass target specific services in <service>://target (standard) notation or
  using -p which will be applied to all hosts in non-standard notation.
  Service arguments can be specified to be host-specific, type of service-specific
  (-m) or global (-g). Ex: ssh://10.0.0.10,at=10,cl=30 -m ssh:at=50 -g cd=3000
  Ex2: ncrack -p ssh,ftp:3500,25 10.0.0.10 scanme.nmap.org google.com:80,ssl
  -p <service-list>: services will be applied to all non-standard notation hosts
  -m <service>:<options>: options will be applied to all services of this type
  -g <options>: options will be applied to every service globally
  Misc options:
    ssl: enable SSL over this service
    path <name>: used in modules like HTTP ('=' needs escaping if used)
    db <name>: used in modules like MongoDB to specify the database
    domain <name>: used in modules like WinRM to specify the domain
TIMING AND PERFORMANCE:
  Options which take <time> are in seconds, unless you append 'ms'
  (miliseconds), 'm' (minutes), or 'h' (hours) to the value (e.g. 30m).
  Service-specific options:
    cl (min connection limit): minimum number of concurrent parallel connections
    CL (max connection limit): maximum number of concurrent parallel connections
    at (authentication tries): authentication attempts per connection
    cd (connection delay): delay <time> between each connection initiation
    cr (connection retries): caps number of service connection attempts
    to (time-out): maximum cracking <time> for service, regardless of success so far
  -T<0-5>: Set timing template (higher is faster)
  --connection-limit <number>: threshold for total concurrent connections
  --stealthy-linear: try credentials using only one connection against each specified host
    until you hit the same host again. Overrides all other timing options.
AUTHENTICATION:
  -U <filename>: username file
  -P <filename>: password file
  --user <username_list>: comma-separated username list
  --pass <password_list>: comma-separated password list
  --passwords-first: Iterate password list for each username. Default is opposite.
  --pairwise: Choose usernames and passwords in pairs.
OUTPUT:
  -oN/-oX <file>: Output scan in normal and XML format, respectively, to the given filename.
  -oA <basename>: Output in the two major formats at once
  -v: Increase verbosity level (use twice or more for greater effect)
  -d[level]: Set or increase debugging level (Up to 10 is meaningful)
  --nsock-trace <level>: Set nsock trace level (Valid range: 0 - 10)
  --log-errors: Log errors/warnings to the normal-format output file
  --append-output: Append to rather than clobber specified output files
MISC:
  --resume <file>: Continue previously saved session
  --save <file>: Save restoration file with specific filename
  -f: quit cracking service after one found credential
  -6: Enable IPv6 cracking
  -sL or --list: only list hosts and services
  --datadir <dirname>: Specify custom Ncrack data file location
  --proxy <type://proxy:port>: Make connections via socks4, 4a, http.
  -V: Print version number
  -h: Print this help summary page.
MODULES:
  SSH, RDP, FTP, Telnet, HTTP(S), Wordpress, POP3(S), IMAP, CVS, SMB, VNC, SIP, Redis, PostgreSQL, MQTT, MySQL, MSSQL, MongoDB, Cassandra, WinRM, OWA, DICOM
EXAMPLES:
  ncrack -v --user root localhost:22
  ncrack -v -T5 https://192.168.0.1
  ncrack -v -iX ~/nmap.xml -g CL=5,to=1h
SEE THE MAN PAGE (http://nmap.org/ncrack/man.html) FOR MORE OPTIONS AND EXAMPLES

هر چیزی در خط فرمان Ncrack که یک گزینه (یا آرگومان یک گزینه) نباشد، به عنوان مشخصه میزبان هدف در نظر گرفته می‌شود. ساده‌ترین حالت، تعیین یک آدرس IP یا نام میزبان هدف است. توجه داشته باشید که علاوه بر این، باید سرویسی را نیز برای آزمودن در اهداف انتخاب‌شده مشخص کنید. ابزار Ncrack در تعیین میزبان/سرویس بسیار انعطاف‌پذیر است. در حالی که نام‌های میزبان و آدرس‌های IP را می‌توان با همان انعطاف‌پذیری آشنا در Nmap تعریف کرد، سرویس‌ها به همراه گزینه‌های ویژه خود دارای سبک تعریف منحصربه‌فردی هستند که امکان بهره‌گیری از ترکیب‌های مختلف قابلیت‌ها را فراهم می‌کند.

گاهی اوقات می‌خواهید کل یک شبکه از میزبان‌های مجاور را بیازمایید. برای این منظور، Ncrack از آدرس‌دهی به سبک CIDR پشتیبانی می‌کند. می‌توانید /numbits را به یک آدرس IPv4 یا نام میزبان اضافه کنید و Ncrack تمام آدرس‌های IP را که numbits بیت نخست آن‌ها با IP یا نام میزبان مرجع یکسان است، خواهد آزمود. برای نمونه، 192.168.10.0/24 کاوش‌ها را به ۲۵۶ میزبان میان 192.168.10.0 (در مبنای دو: 11000000 10101000 00001010 00000000) و 192.168.10.255 (در مبنای دو: 11000000 10101000 00001010 11111111) شامل خود آن‌ها ارسال می‌کند. مشخصه 192.168.10.40/24 دقیقاً همان اهداف را هدف قرار می‌دهد. با فرض اینکه میزبان scanme.nmap.org دارای آدرس IP به صورت 64.13.134.52 باشد، مشخصه scanme.nmap.org/16 کاوش‌ها را به ۶۵,۵۳۶ آدرس IP بین 64.13.0.0 و 64.13.255.255 ارسال خواهد کرد. کوچک‌ترین مقدار مجاز /0 است که کل اینترنت را هدف می‌گیرد. بزرگ‌ترین مقدار /32 است که فقط همان میزبان یا آدرس IP مشخص‌شده را هدف قرار می‌دهد زیرا تمام بیت‌های آدرس ثابت هستند.

نمادگذاری CIDR کوتاه است اما همیشه به اندازه کافی انعطاف‌پذیر نیست. برای نمونه، ممکن است بخواهید کاوش‌ها را به 192.168.0.0/16 ارسال کنید اما از IPهایی که به 0. یا 255. ختم می‌شوند صرف‌نظر کنید چون ممکن است به عنوان آدرس‌های شبکه و پخشی (Broadcast) زیرشبکه استفاده شوند. Ncrack از طریق آدرس‌دهی با بازه هشت‌تایی (Octet range) از این حالت پشتیبانی می‌کند. به جای تعیین یک آدرس IP معمولی، می‌توانید فهرستی از اعداد یا بازه‌ها را با کاما برای هر بخش هشت‌تایی مشخص کنید. برای مثال، 192.168.0-255.1-254 از تمام آدرس‌های بازه که به 0. یا 255. ختم می‌شوند صرف‌نظر می‌کند و 192.168.3-5,7.1 چهار آدرس 192.168.3.1 , 192.168.4.1 , 192.168.5.1 و 192.168.7.1 را هدف قرار می‌دهد. هر طرف از یک بازه را می‌توان حذف کرد؛ مقادیر پیش‌فرض 0 در سمت چپ و 255 در سمت راست است. استفاده از - به تنهایی معادل 0-255 است، اما به یاد داشته باشید که در هشت‌تایی اول از -0 استفاده کنید تا مشخصه هدف شبیه یک گزینه خط فرمان به نظر نرسد. بازه‌ها لزوماً محدود به هشت‌تایی‌های پایانی نیستند: مشخصه کاوش‌ها را به تمام آدرس‌های IP در اینترنت که به 13.37 ختم می‌شوند ارسال می‌کند. این گونه نمونه‌برداری گسترده می‌تواند برای پیمایش‌ها و پژوهش‌های اینترنتی کاربردی باشد.

ابزار Ncrack چندین مشخصه میزبان را در خط فرمان می‌پذیرد و نیازی نیست همه از یک نوع باشند. دستور ncrack scanme.nmap.org 192.168.0.0/8 10.0.0,1,3-7.- -p22 دقیقاً همان کاری را انجام می‌دهد که انتظار دارید.

اگرچه اهداف معمولاً در خط فرمان مشخص می‌شوند، گزینه‌های زیر نیز برای کنترل انتخاب اهداف در دسترس هستند:

-iX inputfilename (ورودی از قالب XML گزینه -oX ان‌مپ) .

مشخصات اهداف/سرویس‌ها را از یک فایل خروجی XML نرم‌افزار Nmap می‌خواند. فایل XML ان‌مپ با پویش میزبان‌ها و تعیین گزینه -oX در Nmap ایجاد می‌شود. Ncrack به صورت خودکار آدرس‌های IP و پورت‌ها و سرویس‌های متناظری را که باز (open) هستند تجزیه کرده و از این اهداف برای ممیزی احراز هویت استفاده می‌کند. این گزینه بسیار کاربردی است، زیرا به شما امکان می‌دهد این دو ابزار (Nmap و Ncrack) را ترکیب کرده و تنها سرویس‌هایی را که مطمئناً باز هستند بیازمایید. افزون بر این، اگر تشخیص نسخه در Nmap (گزینه -sV) فعال شده باشد، Ncrack از آن یافته‌ها برای شناسایی و آزمودن سرویس‌هایی استفاده می‌کند که پشتیبانی می‌شوند اما روی پورت‌های غیرپیش‌فرض شنود می‌کنند. برای مثال، اگر میزبانی دارای سروری باشد که روی پورت ۴۱۴۱۴ شنود می‌کند و Nmap تشخیص داده باشد که این یک سرویس SSH است، Ncrack از آن اطلاعات برای آزمودن آن با ماژول SSH بهره خواهد برد. البته Ncrack پورت‌ها/سرویس‌های بازی را که توسط ماژول‌هایش برای آزمودن احراز هویت پشتیبانی نمی‌شوند، نادیده می‌گیرد.

-iN inputfilename (ورودی از قالب خروجی معمولی -oN ان‌مپ) .

مشخصات اهداف/سرویس‌ها را از یک فایل خروجی معمولی (Normal) نرم‌افزار Nmap می‌خواند. فایل معمولی ان‌مپ با پویش میزبان‌ها و تعیین گزینه -oN در Nmap ایجاد می‌شود. این گزینه دقیقاً مانند گزینه -iX عمل می‌کند و تنها تفاوت در قالب فایل ورودی است.

-iL inputfilename (ورودی از فهرست) .

مشخصات اهداف را از inputfilename می‌خواند. ارسال فهرستی بزرگ از میزبان‌ها در خط فرمان اغلب دشوار است، با این حال نیازی متداول به شمار می‌رود. برای مثال، ممکن است بخواهید فهرستی از سرورهای بسیار مشخص را که برای آزمون نفوذ تعیین شده‌اند بیازمایید. کافی است فهرست میزبان‌های مورد نظر را ایجاد کرده و نام آن فایل را به عنوان آرگومان به گزینه -iL بدهید. ورودی‌ها می‌توانند در هر یک از قالب‌های پذیرفته‌شده توسط Ncrack در خط فرمان (آدرس IP، نام میزبان، CIDR، بازه‌های هشت‌تایی یا ساختار ویژه میزبان-سرویس Ncrack) باشند. هر ورودی باید با یک یا چند فاصله، تب یا خط جدید از دیگری جدا شود. اگر می‌خواهید Ncrack میزبان‌ها را به جای یک فایل واقعی از ورودی استاندارد (stdin) بخواند، می‌توانید از خط تیره (-) به عنوان نام فایل استفاده کنید. توجه داشته باشید که اگر میزبان‌ها بدون هیچ سرویسی مشخص شوند، باید با استفاده از گزینه -p سرویس‌ها/پورت‌ها را نیز برای اهداف تعیین کنید.

--exclude host1[, host2[, ...]] (مستثنی کردن میزبان‌ها/شبکه‌ها) .

فهرستی جداشده با کاما از اهدافی را مشخص می‌کند که باید از پویش کنار گذاشته شوند، حتی اگر بخشی از محدوده کلی شبکه تعیین‌شده توسط شما باشند. فهرستی که ارسال می‌کنید از ساختار استاندارد Ncrack استفاده می‌کند، بنابراین می‌تواند شامل نام‌های میزبان، بلوک‌های شبکه CIDR، بازه‌های هشت‌تایی و غیره باشد. این گزینه زمانی کاربرد دارد که شبکه مورد نظر شامل سرورهای حیاتی و حساس، سیستم‌هایی که در برابر بار سنگین آسیب‌پذیرند، یا زیرشبکه‌هایی باشد که توسط افراد دیگر مدیریت می‌شوند.

--excludefile exclude_file (مستثنی کردن فهرست از فایل) .

این گزینه عملکردی مشابه گزینه --exclude دارد، با این تفاوت که اهداف مستثنی‌شده به جای خط فرمان در یک exclude_file با جداکننده خط جدید، فاصله یا تب ارائه می‌شوند.

هیچ نشست آزمودن احراز هویتی را نمی‌توان بدون تعیین یک سرویس مشخص برای حمله اجرا کرد. بخش تعیین سرویس یکی از انعطاف‌پذیرترین زیرسیستم‌های Ncrack است و به گونه‌ای با بخش تعیین هدف تعامل دارد که امکان اعمال ترکیب‌های مختلفی از گزینه‌ها را فراهم می‌سازد. برای اجرای Ncrack باید دست‌کم یک میزبان هدف و یک سرویس مرتبط را برای حمله مشخص کنید. Ncrack روش‌هایی برای تعیین سرویس بر اساس شماره پورت پیش‌فرض آن، نام آن (برگرفته از فایل ncrack-services) یا هر دو ارائه می‌دهد. در حالت عادی، فقط در موارد خاصی که می‌دانید سرویسی مشخص روی پورتی غیرپیش‌فرض شنود می‌کند، نیاز به تعیین هم‌زمان نام و شماره پورت خواهید داشت.

ابزار Ncrack دو شیوه متمایز برای اعمال سرویس‌ها روی اهداف ارائه می‌دهد: تعیین سرویس به ازای هر میزبان و تعیین سرویس به صورت سراسری.

تعیین سرویس به ازای هر میزبان (Per-host service specification)

سرویس‌های مشخص‌شده در این حالت در کنار نام میزبان نوشته می‌شوند و تنها بر همان میزبان اعمال می‌گردند. با این حال به یاد داشته باشید که مشخصه هدف از الگوها و ماسک‌های شبکه نیز پشتیبانی می‌کند، که به این معناست که اعمال قالب تعیین سرویس به ازای هر میزبان روی یک هدف، روی تمامی اهداف گسترش‌یافته آن نیز اثر خواهد گذاشت. قالب کلی به این صورت است:

[service-name]://target:[port-number]

که در آن target یک نام میزبان یا آدرس IP در هر یک از قالب‌های شرح‌داده‌شده در بخش تعیین هدف است، [service-name] یکی از نام‌های رایج سرویس‌ها طبق تعریف در فایل ncrack-services (مانند ssh یا http) است و [port-number] همان شماره پورت مورد نظر است. Ncrack می‌تواند شماره پورت‌های پیش‌فرض هر یک از سرویس‌های تحت پشتیبانی خود را تعیین کند و همچنین قادر است با مشخص شدن یک پورت پیش‌فرض، نام سرویس متناظر را استنتاج نماید. تعیین هر دو مورد تنها زمانی کاربرد دارد که کاربر از قبل بداند سرویسی روی پورتی غیرپیش‌فرض در حال شنود است. این موضوع را می‌توان به سادگی با استفاده از قابلیت تشخیص نسخه مانند گزینه -sV در Nmap مشخص کرد.

مثال ۲. نمونه‌ای از تعیین سرویس به ازای هر میزبان

$ ncrack scanme.nmap.org:22 ftp://10.0.0.10 ssh://192.168.1.*:5910

دستور بالا اهداف زیر را خواهد آزمود: میزبان scanme.nmap.org روی سرویس SSH (پورت پیش‌فرض ۲۲)، میزبان 10.0.0.10 روی سرویس FTP (پورت پیش‌فرض ۲۱) و میزبان‌های 192.168.1.0 تا 192.168.1.255 (کل این زیرشبکه کلاس C) روی سرویس SSH بر روی پورت غیرپیش‌فرض ۵۹۱۰ که صریحاً مشخص شده است. در مورد آخر، اگر کاربر صریحاً آن را مشخص نمی‌کرد، Ncrack نمی‌توانست متوجه شود که میزبان‌های زیرشبکه باید برای سرویس SSH روی آن پورت خاص آزموده شوند، زیرا هیچ نگاشت پیش‌فرضی از پورت ۵۹۱۰ به سرویس SSH وجود ندارد.

تعیین سرویس به صورت سراسری (Global service specification)

سرویس‌های مشخص‌شده در این حالت بر روی تمامی میزبان‌هایی اعمال می‌شوند که به شیوه تعیین سرویس به ازای هر میزبان پیکربندی نشده‌اند. این کار با استفاده از گزینه -p انجام می‌شود. گرچه این امکان ممکن است شبیه قابلیت Nmap به نظر برسد، اما نباید آن‌ها را با هم اشتباه بگیرید، زیرا عملکرد آن‌ها ماهیتی کمی متفاوت دارد. سرویس‌ها را می‌توان با دستورالعمل‌های جداشده با کاما به فرمت کلی زیر تعیین کرد:

-p [service1]:[port-number1],[service2]:[port-number2],...

طبق معمول، نیازی به تعیین هر دوی نام سرویس و شماره پورت نیست زیرا Ncrack نگاشت سرویس‌های پیش‌فرض به پورت‌های پیش‌فرض را می‌داند. با این حال دقت کنید که بین نام سرویس‌ها و شماره پورت‌ها هیچ فاصله‌ای (Space) قرار ندهید، چرا که Ncrack طبق قاعده «هر چیزی که گزینه نباشد مشخصه هدف است»، آرگومان بعد از فاصله را به عنوان یک میزبان هدف در نظر می‌گیرد.

مثال ۳. نمونه‌ای از تعیین سرویس به صورت سراسری

$ ncrack scanme.nmap.org 10.0.0.120-122 192.168.2.0/24 -p 22,ftp:3210,telnet

دستور بالا تمامی میزبان‌های مشخص‌شده scanme.nmap.org ، 10.0.0.120 ، 10.0.0.121 ، 10.0.0.122 و زیرشبکه کلاس C آدرس 192.168.2.0 را در برابر سرویس‌های زیر می‌آزماید: سرویس SSH (نگاشت‌شده از پورت پیش‌فرض ۲۲)، سرویس FTP روی پورت غیرپیش‌فرض ۳۲۱۰ و سرویس TELNET روی پورت پیش‌فرض ۲۳.

البته Ncrack به شما اجازه می‌دهد در صورت نیاز هر دو حالت تعیین سرویس را با هم ترکیب کنید. معمولاً تنها نیاز به تعیین چند سرویس خواهید داشت، اما آزمودن میزبان‌های متعدد در برابر سرویس‌های مختلف می‌تواند یک پروژه بلندمدت برای شبکه‌های بزرگی باشد که باید به طور مداوم برای گذرواژه‌های ضعیف ممیزی شوند. اگر شک دارید که با دستور فعلی چه میزبان‌ها و سرویس‌هایی آزموده خواهند شد، می‌توانید از گزینه -sL استفاده کنید (توضیحات در ادامه آمده است).

جدا از تعیین کلی سرویس، Ncrack به شما امکان می‌دهد گزینه‌های متعددی را مشخص کنید که بر هر هدف یا مجموعه‌ای از اهداف اعمال می‌شوند. این گزینه‌ها شامل بهینه‌سازی‌های زمان‌بندی و کارایی (که در بخشی جداگانه به تفصیل بررسی شده‌اند)، فعال/غیرفعال‌سازی SSL و سایر پارامترهای ویژه ماژول‌ها مانند مسیر نسبی URL برای ماژول HTTP هستند. گزینه‌ها را می‌توان به روش‌های گوناگون تعریف کرد که عبارتند از: گزینه‌های به ازای هر میزبان، گزینه‌های به ازای هر ماژول و گزینه‌های سراسری. از آنجا که می‌توان ترکیبی از این گزینه‌ها را به کار برد، یک سلسله‌مراتب اولویت دقیق وجود دارد که در ادامه شرح داده می‌شود.

گزینه‌های به ازای هر میزبان (Per-host Options)

گزینه‌ها در این حالت تنها بر میزبانی که به آن اشاره دارند اعمال می‌شوند و طبق فرمت زیر در کنار آن نوشته می‌شوند:

[service-name]://target:[port-number],opt1=optval1,opt2=optval,...

قالب مربوط به مشخصات سرویس که پیش از گزینه‌ها می‌آید، در بخش پیشین توضیح داده شد. optN به هر یک از نام‌های گزینه‌های موجود اشاره دارد (فهرست آن‌ها در ادامه می‌آید)، در حالی که optvalN مقدار آن گزینه را تعیین می‌کند و به ماهیت آن بستگی دارد. برای نمونه، بیشتر گزینه‌های مرتبط با زمان‌بندی مقادیر عددی می‌پذیرند، در حالی که گزینه path به یک آرگومان متنی نیاز دارد.

گزینه‌های به ازای هر ماژول (Per-module Options)

گزینه‌ها در این حالت بر تمام میزبان‌هایی که با آن سرویس/ماژول خاص مرتبط هستند اعمال می‌شوند. این کار با استفاده از گزینه -m انجام می‌پذیرد که به صورت زیر تعریف می‌شود:

-m service-name:opt1=optval1,opt2=optval2,...

این گزینه را می‌توان به دفعات فراخوانی کرد، به تعداد سرویس‌های متفاوتی که می‌خواهید گزینه‌های سراسریِ سطح سرویس را برایشان تعریف کنید. هر تکرار این گزینه باید تنها به یک سرویس اشاره کند. با این حال برای جلوگیری از سردرگمی، بهتر است این گزینه بیش از یک بار برای یک سرویس فراخوانی نشود، هرچند این کار مجاز است و آخرین تکرار برای تمامی مقادیر بازتعریف‌شده بر موارد پیشین اولویت خواهد داشت.

گزینه‌های سراسری (Global Options)

گزینه‌ها در این حالت صرف‌نظر از نوع سرویس، بر تمامی میزبان‌ها اعمال می‌شوند. این کار با استفاده از گزینه -g به صورت زیر انجام می‌شود:

-g opt1=optval1,opt2=optval2,...

این گزینه به عنوان یک قابلیت تسهیل‌کننده عمل می‌کند تا بتوانید گزینه‌ها را به صورت سراسری بر تمامی سرویس‌ها اعمال کنید. تمام موارد دیگر در مورد گزینه‌های در دسترس و مقادیر آن‌ها مشابه حالت‌های پیشین است.

فهرست گزینه‌های موجود برای سرویس

در ادامه فهرستی از تمام گزینه‌های موجود فعلی برای سرویس‌ها آورده شده است. می‌توانید آن‌ها را در هر یک از سه حالت شرح‌داده‌شده در بالا اعمال کنید. شش گزینه پایانی مرتبط با زمان‌بندی هستند و در بخش «زمان‌بندی و کارایی» این راهنما تحلیل خواهند شد.

ssl: enable SSL over this service
path: path-name used in modules like HTTP ('=' needs escaping if used)
db: used in modules like MongoDB to specify the database
domain: used in modules like WinRM to specify the domain
cl (min connection limit): minimum number of concurrent parallel connections
CL (max connection limit): maximum number of concurrent parallel connections
at (authentication tries): authentication attempts per connection
cd (connection delay): delay time between each connection initiation
cr (connection retries): caps number of service connection attempts
to (time-out): maximum cracking time for service, regardless of success so far

ssl (فعال/غیرفعال‌سازی SSL روی سرویس)

با فعال‌سازی SSL، ابزار Ncrack تلاش می‌کند یک اتصال TCP برقرار کرده و سپس یک نشست SSL را با هدف مذاکره کند. سپس همه داده‌ها به صورت شفاف رمزنگاری و رمزگشایی می‌شوند. با این حال از آنجا که وظیفه Ncrack ارائه سرعت بالا به جای رمزنگاری قوی است، الگوریتم‌ها و رمزهای SSL بر پایه کارایی انتخاب می‌شوند. مقدار مجاز برای این گزینه است، اما صرفاً درج ssl نیز کفایت می‌کند. از این رو این تنها گزینه‌ای است که نیازی به نگارش در قالب opt=optval ندارد. به طور پیش‌فرض، SSL برای تمامی سرویس‌ها غیرفعال است مگر سرویس‌هایی که مانند HTTPS کاملاً به آن وابسته‌اند.

path <name> (نام مسیر برای آدرس‌های نسبی URL)

برخی سرویس‌ها مانند HTTP یا SVN معمولاً نیاز به یک مسیر مشخص در URL دارند. این گزینه رشته نام مسیر را به عنوان مقدار می‌پذیرد. این مسیر همواره نسبت به نام میزبان یا آدرس IP در نظر گرفته می‌شود، بنابراین اگر می‌خواهید هدفی مانند http://foobar.com/login.php را بیازمایید، مقدار باید به صورت path=login.php باشد. در صورت حذف اسلش ابتدایی، علامت '/' اولیه به طور خودکار افزوده می‌شود. با این حال معمولاً بهتر است اسلش انتهایی را برای مسیرهایی که پوشه هستند صریحاً قید کنید. برای نمونه، برای آزمودن پوشه http://foobar.com/protected-dir بهتر است آن را به صورت path=protected-dir/ بنویسید. این کار برای جلوگیری از احتمال (بسیار اندک) مثبت کاذب است، زیرا مواردی وجود دارد که سرورهای وب ممکن است در پاسخ به یک تلاش ناموفق، کد «301 Moved Permanently» بفرستند. آن‌ها معمولاً زمانی این پاسخ را ارسال می‌کنند که تلاشی موفق برای یک مسیر محافظت‌شده بدون اسلش انتهایی انجام شود در حالی که منبع درخواستی در واقع یک دایرکتوری است. در نتیجه Ncrack ممکن است آن پاسخ را به عنوان موفقیت در احراز هویت تلقی کند.

همچنین به نماد '=' دقت کنید، زیرا این نماد توسط Ncrack برای تجزیه آرگومان‌ها استفاده می‌شود و اگر در URL وجود داشته باشد باید آن را اسکیپ (Escape) کنید.

به طور پیش‌فرض، نام مسیر روی '/' مقداردهی اولیه می‌شود اما توسط سرویس‌هایی که به آن نیاز ندارند نادیده گرفته خواهد شد.

db <name> (نام پایگاه‌داده)

برخی سرویس‌ها مانند MongoDB برای آزمودن احراز هویت نیاز به نام پایگاه‌داده مشخصی دارند. این گزینه به شما امکان می‌دهد پایگاه‌داده را تعیین کنید.

به طور پیش‌فرض، نام پایگاه‌داده برای MongoDB روی 'admin' مقداردهی می‌شود اما توسط سرویس‌هایی که به آن نیاز ندارند نادیده گرفته خواهد شد.

domain <name> (نام دامنه)

برخی سرویس‌ها مانند WinRM برای احراز هویت نیاز به تعیین دامنه دارند. این گزینه امکان تعیین دامنه را فراهم می‌سازد.

به طور پیش‌فرض، نام دامنه برای WinRM روی 'Workstation' مقداردهی می‌شود اما توسط سرویس‌هایی که به آن نیاز ندارند نادیده گرفته خواهد شد.

سلسله‌مراتب اولویت گزینه‌های سرویس (Service Option Hierarchy)

همان‌طور که پیش‌تر اشاره شد، Ncrack امکان ترکیب سه حالت مختلف تعیین گزینه‌های سرویس را می‌دهد. در این حالت، یک سلسله‌مراتب دقیق وجود دارد که ترتیب اولویت مقادیر متناقض را نسبت به یکدیگر حل‌وفصل می‌کند. این ترتیب به صورت زیر است که سمت چپ‌ترین بالاترین اولویت و سمت راست‌ترین کمترین اولویت را دارد:

گزینه‌های به ازای هر میزبان > گزینه‌های به ازای هر ماژول > گزینه‌های سراسری > قالب زمان‌بندی (تنها برای گزینه‌های زمان‌بندی)

مفهوم «قالب زمان‌بندی (Timing-Template)» در بخش «زمان‌بندی و کارایی» توضیح داده خواهد شد، اما فعلاً به یاد داشته باشید که مقادیر آن کمترین اولویت را نسبت به همه گزینه‌های دیگر دارند و عملاً به عنوان مقادیر پیش‌فرض برای همه موارد مرتبط با زمان‌بندی عمل می‌کنند. گزینه‌های سراسری مشخص‌شده با -g اولویت بالاتری دارند، در حالی که گزینه‌های به ازای هر ماژول با -m بلافاصله اولویت بیشتری نسبت به آن‌ها دارند. در راس این سلسله‌مراتب، گزینه‌های به ازای هر میزبان قرار دارند که در واقع خاص‌ترین گزینه‌ها هستند. در نتیجه مشاهده می‌کنید که الگو به این صورت است: هرچه مشخص‌تر و خاص‌تر باشد، اولویت آن بالاتر است.

مثال ۴. نمونه‌ای از سلسله‌مراتب اولویت گزینه‌های سرویس

$ ncrack scanme.nmap.org:22,cl=10,at=1 10.0.0.120 10.0.0.20 -p 21 -m ftp:CL=1 -g CL=3

این مثال اولویت سلسله‌مراتب را نشان می‌دهد. سرویس‌هایی که آزموده خواهند شد عبارتند از SSH برای scanme.nmap.org و FTP برای میزبان‌های 10.0.0.120 و 10.0.0.20. هیچ قالب زمان‌بندی خاصی تعیین نشده است بنابراین مقدار پیش‌فرض استفاده خواهد شد (Normal - 3). گزینه‌های به ازای هر میزبان برای scanme.nmap.org تعیین می‌کنند که حداقل محدودیت اتصال (cl) برابر با ۱۰ است و Ncrack باید در هر اتصال تنها ۱ تلاش احراز هویت (at) انجام دهد. در صورت بروز هرگونه تعارض با حالت‌های دیگر، این مقادیر هر مقدار دیگری را برای سرویس SSH در میزبان scanme.nmap.org بازنویسی می‌کنند. از آنجا که گزینه سراسری -g CL=3 تعریف شده و هیچ گزینه با اولویت بالاتری برای سرویس SSH و به ویژه scanme.nmap.org وجود ندارد، این مقدار نیز اعمال خواهد شد. در مورد اهداف FTP، گزینه به ازای هر ماژول -m ftp:CL=1 که برای تمام سرویس‌های FTP تعریف شده است، بر گزینه سراسری معادل آن اولویت خواهد داشت. استفاده بیش از حد از این قابلیت‌ها می‌تواند پیچیده شود، اما معمولاً از کاربر عادی Ncrack انتظار نمی‌رود که به همه آن‌ها نیاز پیدا کند. با این حال سناریوهای پیچیده پویش شبکه ممکن است به آن‌ها نیازمند باشند. برای اطمینان از اینکه نتایج مطابق انتظار شماست، فراموش نکنید که از گزینه -sL استفاده کنید که جزئیات مربوط به آنچه Ncrack در صورت اجرای عادی انجام می‌داد را چاپ می‌کند. اگر خروجی با جزئیات بیشتری می‌خواهید، می‌توانید گزینه اشکال‌زدایی -d را نیز اضافه کنید. برای مثال بالا، Ncrack خروجی زیر را چاپ می‌کند:

مثال ۵. نمونه خروجی سلسله‌مراتب اولویت گزینه‌های سرویس

$ ncrack scanme.nmap.org:22,cl=10,at=1 10.0.0.120 10.0.0.20 -p 21 -m ftp:CL=1 -g CL=3 -sL -d
Starting Ncrack 0.6 ( http://ncrack.org ) at 2017-10-12 01:13 CDT
----- [ Timing Template ] -----
cl=7, CL=80, at=0, cd=0, cr=30, to=0
----- [ ServicesTable ] -----
SERVICE            cl  CL  at  cd  cr  to  ssl path db    domain
ftp:21             N/A 1   N/A N/A N/A N/A no  null null  null
ssh:22             N/A N/A N/A N/A N/A N/A no  null null  null
telnet:23          N/A N/A N/A N/A N/A N/A no  null null  null
http:80            N/A N/A N/A N/A N/A N/A no  null null  null
pop3:110           N/A N/A N/A N/A N/A N/A no  null null  null
imap:143           N/A N/A N/A N/A N/A N/A no  null null  null
netbios-ssn:445    N/A N/A N/A N/A N/A N/A no  null null  null
smb:445            N/A N/A N/A N/A N/A N/A no  null null  null
smb:139            N/A N/A N/A N/A N/A N/A no  null null  null
https:443          N/A N/A N/A N/A N/A N/A yes null null  null
owa:443            N/A N/A N/A N/A N/A N/A yes null null  null
sip:5060           N/A N/A N/A N/A N/A N/A no  null null  null
pop3s:995          N/A N/A N/A N/A N/A N/A yes null null  null
mssql:1433         N/A N/A N/A N/A N/A N/A no  null null  null
mysql:3306         N/A N/A N/A N/A N/A N/A no  null null  null
ms-wbt-server:3389 N/A N/A N/A N/A N/A N/A no  null null  null
rdp:3389           N/A N/A N/A N/A N/A N/A no  null null  null
psql:5432          N/A N/A N/A N/A N/A N/A no  null null  null
vnc:5801           N/A N/A N/A N/A N/A N/A no  null null  null
vnc:5900           N/A N/A N/A N/A N/A N/A no  null null  null
vnc:5901           N/A N/A N/A N/A N/A N/A no  null null  null
vnc:6001           N/A N/A N/A N/A N/A N/A no  null null  null
redis:6379         N/A N/A N/A N/A N/A N/A no  null null  null
winrm:5985         N/A N/A N/A N/A N/A N/A no  null null  Workstation
winrm:5986         N/A N/A N/A N/A N/A N/A no  null null  Workstation
cassandra:9160     N/A N/A N/A N/A N/A N/A no  null null  null
cassandra:9042     N/A N/A N/A N/A N/A N/A no  null null  null
mongodb:27017      N/A N/A N/A N/A N/A N/A no  null admin null
----- [ Targets ] -----
Host: 45.33.32.156 ( scanme.nmap.org )
  ssh:22 cl=10, CL=10, at=1, cd=0, cr=30, to=0ms, ssl=no, path=/, db=admin, domain=Workstation
Host: 10.0.0.120
  ftp:21 cl=3, CL=1, at=0, cd=0, cr=30, to=0ms, ssl=no, path=/, db=admin, domain=Workstation
Host: 10.0.0.20
  ftp:21 cl=3, CL=1, at=0, cd=0, cr=30, to=0ms, ssl=no, path=/, db=admin, domain=Workstation
Ncrack done: 3 services would be scanned.
Probes sent: 0 | timed-out: 0 | prematurely-closed: 0
Ncrack finished.

جدول ServicesTable صرفاً گزینه‌های به ازای هر ماژول را برای تمامی سرویس‌های موجود فهرست می‌کند. همان‌طور که می‌بینید، تنها گزینه تعریف‌شده در سرویس FTP برای CL است. جدول Targets مهم‌ترین بخش این خروجی است و تمامی اهداف و گزینه‌های مرتبط را بر اساس نحوه فراخوانی خط فرمان فهرست می‌نماید. در این حالت هیچ عملیات شبکه‌ای به جز وضوح‌یابی مستقیم DNS برای نام‌های میزبان (مانند scanme.nmap.org در این مثال) انجام نمی‌شود.

موتور زمان‌بندی شاید مهم‌ترین بخش هر ابزار جدی ارزیابی احراز هویت شبکه باشد. موتور زمان‌بندی Ncrack گزینه‌های فراوانی را برای بهینه‌سازی ارائه می‌دهد و می‌توان آن را برای پاسخگویی به هر نیازی از سوی کاربر تنظیم کرد. با پیشرفت Ncrack، این زیرسیستم به یک موتور خودمختار و پویا تبدیل خواهد شد که می‌تواند رفتار خود را به طور خودکار بر اساس بازخوردی که از شبکه دریافت می‌کند تنظیم کند، تا به حداکثر کارایی و دقت بدون نیاز به دخالت کاربر دست یابد.

برخی گزینه‌ها یک پارامتر time (زمان) را می‌پذیرند. این مقدار به طور پیش‌فرض بر حسب ثانیه مشخص می‌شود، هرچند می‌توانید پسوندهای ‘ms’ (میلی‌ثانیه)، ‘m’ (دقیقه) یا ‘h’ (ساعت) را به مقدار اضافه کنید (‘s’ برای ثانیه اختیاری است). بنابراین آرگومان‌های cd (تاخیر اتصال) به صورت 900000ms ، 900s و 15m همگی یک کار را انجام می‌دهند.

cl num-minconnections; CL num-maxconnections (تنظیم تعداد اتصالات موازی همزمان)

محدودیت اتصال (Connection Limit)

این گزینه‌ها تعداد کل اتصالاتی را که می‌توانند برای هر سرویس به طور هم‌زمان برقرار باشند کنترل می‌کنند. به طور معمول، Ncrack تلاش می‌کند با شمارش تعداد اتصالات قطع‌شده یا ناموفق، تعداد اتصالات را برای هر هدف به طور پویا تنظیم کند. اگر یک وضعیت غیرعادی در شبکه رخ دهد که نشان‌دهنده بروز مشکل باشد، مانند قطع اتصالات جدید از سوی میزبان، Ncrack فوراً تعداد کل اتصالات ارسالی به آن سرویس را کاهش می‌دهد. با این حال سقف تعداد حداقل یا حداکثر اتصالاتی که برقرار خواهند شد را می‌توان با استفاده از این دو گزینه بازنویسی کرد. با تنظیم مناسب آن‌ها می‌توانید کارایی را بهینه کنید، مشروط بر اینکه بتوانید محدودیت‌های خود هدف را بشناسید یا کشف نمایید. قرارداد در اینجا این است که cl با حروف کوچک به حداقل محدودیت اتصال و CL با حروف بزرگ به حداکثر تعداد اتصالات اشاره دارد.

رایج‌ترین کاربرد، تنظیم cl (حداقل محدودیت اتصال) برای اهدافی است که تقریباً مطمئن هستید می‌توانند این تعداد اتصال را در هر لحظه تاب بیاورند. این گزینه‌ای پرخطر برای تغییر است، زیرا تنظیم آن روی مقادیر بسیار بالا ممکن است با ایجاد حمله منع سرویس (DoS) ناخواسته علیه هدف و فعال‌سازی قوانین دیواره آتش که منجر به مسدود شدن IP شما می‌شود، آسیب بیشتری نسبت به فایده‌اش به همراه داشته باشد.

از سوی دیگر، برای ماموریت‌های مخفیانه‌تر، تنظیم CL (حداکثر محدودیت اتصال) روی یک مقدار پایین ممکن است همان چیزی باشد که می‌خواهید. با این حال، تنظیم آن روی مقادیر بسیار کم قطعاً تاثیر زیادی بر سرعت کلی خواهد گذاشت. برای حداکثر پنهان‌کاری، می‌توان این گزینه را با cd (تاخیر اتصال) که در ادامه توضیح داده شده ترکیب کرد.

at num-attempts (تنظیم تلاش‌های احراز هویت در هر اتصال)

تلاش‌های احراز هویت (Authentication Tries)

با استفاده از این گزینه می‌توانید به Ncrack دستور دهید تعداد تلاش‌های احراز هویتی را که در هر اتصال انجام می‌دهد محدود کند. Ncrack ابتدا یک کاوش شناسایی ارسال می‌کند که به آن امکان محاسبه حداکثر تعداد این تلاش‌ها را می‌دهد و از آن پس همواره تلاش می‌کند از آن عدد استفاده کند. بیشتر سرویس‌ها یک سقف برای تعداد احراز هویت در هر اتصال تعیین می‌کنند و در اغلب موارد، یافتن آن حداکثر منجر به کارایی بهتر می‌شود.

تنظیم این گزینه روی مقادیر پایین‌تر می‌تواند امتیاز پنهان‌کاری برای شما به همراه داشته باشد، زیرا سرویس‌هایی مانند SSH تمایل دارند تلاش‌های ناموفق را پس از گذشتن از تعداد معینی تلاش در هر اتصال ثبت کنند. آن‌ها از این به عنوان یک معیار استفاده می‌کنند تا اینکه بخواهند کل تلاش‌های احراز هویت یا اتصالات به ازای هر آدرس IP را بشمارند (که معمولاً توسط دیواره آتش انجام می‌شود). در نتیجه تعداد ۱ یا ۲ تلاش احراز هویت ممکن است در برخی موارد مانع ثبت در گزارش‌ها شود.

توجه داشته باشید که اگر Ncrack متوجه شود که سرور اجازه این تعداد تلاش در هر اتصال را نمی‌دهد، تنظیم این گزینه روی مقادیر بالا هیچ تاثیری نخواهد داشت. در این حالت، این ابزار صرفاً از همان حداکثر مجاز استفاده کرده و تنظیم شما را نادیده می‌گیرد.

cd time (تنظیم زمان تاخیر میان هر اتصال جدید)

تاخیر اتصال (Connection Delay)

این گزینه تاخیر زمانی اعمال‌شده میان هر اتصال جدید را تعیین می‌کند. Ncrack پیش از آغاز یک اتصال جدید به سرویس مشخص‌شده، به میزان زمانی که در مقدار این گزینه تعیین کرده‌اید منتظر می‌ماند. هرچه این مقدار را بالاتر تنظیم کنید، سرعت Ncrack کمتر خواهد شد، اما حمله شما مخفیانه‌تر خواهد بود.

ابزار Ncrack به طور پیش‌فرض تلاش می‌کند اتصالات جدید را تا حد امکان با سرعت بالا برقرار کند، مشروط بر اینکه ارسال کاوش‌های جدید مجاز باشد و توسط پارامترهایی مانند محدودیت اتصال (Connection Limit) که می‌تواند به صورت پویا افزایش یا کاهش یابد محدود نشده باشد. اگرچه این رویکرد تا زمانی که میزبان پاسخگو باقی بماند به سرعت خیره‌کننده‌ای دست می‌یابد، اما می‌تواند به مشکلاتی چون فعال شدن دیواره آتش، کاهش پهنای باند اهداف یا شما و حتی دچار شدن سرویس مورد آزمایش به حمله منع سرویس منجر شود. با تنظیم دقیق این گزینه می‌توانید از این موقعیت‌های ناخوشایند جلوگیری کنید.

cr max-conattempts (تنظیم حداکثر تعداد تکرار تلاش‌های اتصال)

تکرار تلاش‌های اتصال (Connection Retries)

این گزینه به کاربر امکان می‌دهد حداکثر تعداد تلاش‌های ناموفق پیاپی را در برابر آن سرویس خاص مشخص کند. اگر در هر زمان از نشست آزمودن، Ncrack موفق به برقراری ارتباط با آن سرویس مشخص نشود، آزمودن آن را به طور کامل متوقف خواهد کرد.

to time (تنظیم حداکثر زمان کل آزمودن)

مهلت زمانی (Timeout)

تعیین می‌کند که Ncrack چه مقدار زمان را صرف آزمودن سرویس کند، پیش از آنکه صرف‌نظر از یافتن یا نیافتن اعتبارنامه تا آن لحظه، کار را متوقف نماید. با این حال هر توکن احراز هویتی که تا آن زمان کشف شده باشد ذخیره شده و به طور عادی چاپ خواهد شد. Ncrack زمانی یک سرویس را پایان‌یافته علامت‌گذاری می‌کند که پیمایش فهرست‌های نام کاربری/گذرواژه به پایان برسد یا دیگر به دلیلی جدی نتواند آن را بیازماید. اگر Ncrack کار آزمودن یک سرویس را پیش از زمان مشخص‌شده در این گزینه به پایان برساند، این گزینه نادیده گرفته خواهد شد.

گاهی اوقات پنجره زمانی محدودی برای پویش/آزمودن میزبان‌های خود دارید. این موضوع ممکن است به دلایل مختلفی رخ دهد. یک دلیل متداول این است که فعالیت عادی کاربران نباید مختل شود و از آنجا که Ncrack می‌تواند بسیار تهاجمی عمل کند، ممکن است تنها در ساعات مشخصی مانند ساعات شب مجاز به پویش میزبان‌ها باشد. همچنین پویش در چنین ساعاتی احتمال شناسایی حمله را کمتر می‌کند.

فراموش نکنید که Ncrack به شما اجازه می‌دهد واحد اندازه‌گیری زمان را با افزودن ‘ms’ برای میلی‌ثانیه، ‘m’ برای دقیقه یا ‘h’ برای ساعت مشخص کنید (ثانیه واحد زمانی پیش‌فرض است). استفاده از آن‌ها در این گزینه خاص بسیار راحت است، زیرا می‌توانید مقداری مانند to=8h را تعیین کنید تا به Ncrack در مجموع ۸ ساعت برای آزمودن آن سرویس فرصت دهید. تنظیم زمان‌بندی با cron در ترکیب با این گزینه نیز می‌تواند ایده خوبی باشد.

-T paranoid|sneaky|polite|normal|aggressive|insane (تنظیم یک قالب زمان‌بندی) .

در حالی که کنترل‌های دقیق زمان‌بندی بررسی‌شده در بخش پیشین قدرتمند و موثر هستند، برخی افراد آن‌ها را گیج‌کننده می‌دانند. علاوه بر این، انتخاب مقادیر مناسب گاهی می‌تواند زمان بیشتری نسبت به خود پویشی که می‌خواهید بهینه‌سازی کنید ببرد. از این رو Ncrack با شش قالب زمان‌بندی، رویکرد ساده‌تری را ارائه می‌دهد. می‌توانید آن‌ها را با گزینه -T و شماره آن‌ها (0 تا 5) یا نامشان مشخص کنید. نام‌های قالب‌ها عبارتند از: paranoid (0)، sneaky (1)، polite (2)، normal (3)، aggressive (4) و insane (5). دو مورد نخست برای دور زدن سامانه‌های تشخیص نفوذ (IDS) کاربرد دارند. حالت مودبانه (Polite) پویش را کند می‌کند تا از پهنای باند و منابع ماشین هدف کمتری استفاده شود. حالت عادی (Normal) پیش‌فرض است و بنابراین -T3 کاری انجام نمی‌دهد. حالت تهاجمی (Aggressive) با این فرض که روی یک شبکه به اندازه کافی سریع و مطمئن قرار دارید، پویش‌ها را سرعت می‌بخشد. در نهایت حالت دیوانه‌وار (Insane) فرض می‌کند که روی شبکه‌ای فوق‌العاده سریع قرار دارید یا حاضرید مقداری از دقت را فدای سرعت کنید.

این قالب‌ها به کاربر امکان می‌دهند میزان تهاجمی بودن مورد نظر خود را مشخص کنند، در حالی که انتخاب مقادیر دقیق زمان‌بندی را بر عهده Ncrack می‌گذارند. اگر می‌دانید که سرویس شبکه حجم بالایی از اتصالات را تحمل می‌کند، می‌توانید از قالب تهاجمی -T4 استفاده کنید. حتی در این صورت نیز این کار بیشتر برای سرویس‌های مستقر در شبکه محلی توصیه می‌شود. رفتن به حالت دیوانه‌وار -T5 توصیه نمی‌شود، مگر اینکه دقیقاً بدانید چه کاری انجام می‌دهید.

اگرچه -T0. و -T1. ممکن است برای جلوگیری از هشدارهای IDS مفید باشند، اما آزمودن حتی چند سرویس با آن‌ها زمان فوق‌العاده زیادی خواهد برد. برای چنین پویش‌های طولانی، ممکن است ترجیح دهید به جای اتکا به مقادیر پیش‌ساخته -T0 و -T1، مقادیر دقیق زمان‌بندی مورد نیاز خود را تنظیم کنید.

--connection-limit numprobes (تنظیم آستانه کل اتصالات هم‌زمان)

هنوز پیاده‌سازی نشده است.

این بخش روش‌های تعیین فهرست‌های نام کاربری و گذرواژه اختصاصی شما و همچنین حالت‌های موجود برای پیمایش روی آن‌ها را شرح می‌دهد. ابزار Ncrack همراه با انواع مختلفی از فهرست‌های نام کاربری و گذرواژه ارائه می‌شود که در دایرکتوری از بسته منبع قرار دارند و سپس در دایرکتوری داده‌های Ncrack که معمولاً usr/local/share/ncrack/ یا usr/share/ncrack/ است نصب می‌شوند. می‌توانید از تعیین هرگونه فهرستی صرف‌نظر کنید و Ncrack از فهرست‌های پیش‌فرض که شامل برخی از متداول‌ترین نام‌های کاربری و گذرواژه‌ها هستند استفاده خواهد کرد. فهرست گذرواژه‌ها بر اساس فراوانی مرتب شده است و متداول‌ترین گذرواژه‌ها در ابتدای فهرست قرار دارند تا ابتدا آزمایش شوند. این فهرست‌ها از ترکیب مرتب‌سازی فایل‌های گذرواژه فاش‌شده عمومی و سایر تکنیک‌ها به دست آمده‌اند.

-U filename (تعیین فهرست نام‌های کاربری)

فهرست نام‌های کاربری اختصاصی خود را با دادن مسیر فایل به عنوان آرگومان به این گزینه مشخص کنید.

نام‌های کاربری برای محیط‌های خاص را می‌توان به روش‌های متعددی جمع‌آوری کرد، از جمله استخراج آدرس‌های ایمیل از وب‌سایت شرکت، جستجوی اطلاعات در پایگاه‌های داده whois، استفاده از تکنیک SMTP VRFY در سرورهای ایمیل آسیب‌پذیر یا از طریق مهندسی اجتماعی.

-P filename (تعیین فهرست گذرواژه‌ها)

فهرست گذرواژه‌های اختصاصی خود را با دادن مسیر فایل به عنوان آرگومان به این گزینه مشخص کنید.

گذرواژه‌های رایج معمولاً از فهرست‌های فاش‌شده در نتیجه نفوذهای موفق به سایت‌های عمومی مانند تالارهای گفتگو یا سایر شبکه‌های اجتماعی مشتق می‌شوند. بخش بزرگی از آن‌ها پیش‌تر به طور عمومی افشا شده‌اند و برخی از آن‌ها برای گردآوری فهرست‌های اختصاصی Ncrack استفاده شده‌اند.

--user username_list (تعیین فهرست نام‌های کاربری جداشده با کاما در خط فرمان)

نام‌های کاربری مورد نظر خود را مستقیماً در خط فرمان به عنوان یک فهرست جداشده با کاما مشخص کنید.

--pass password_list (تعیین فهرست گذرواژه‌های جداشده با کاما در خط فرمان)

گذرواژه‌های مورد نظر خود را مستقیماً در خط فرمان به عنوان یک فهرست جداشده با کاما مشخص کنید.

--passwords-first (معکوس کردن شیوه پیمایش گذرواژه‌ها)

ابزار Ncrack به طور پیش‌فرض برای هر گذرواژه، کل فهرست نام‌های کاربری را پیمایش می‌کند. با این گزینه می‌توانید آن را معکوس کنید. برای نمونه، با داشتن فهرست نام کاربری "root, guest, admin" و فهرست گذرواژه "test, 12345, q1w2e3r4"، نرم‌افزار Ncrack در حالت عادی آن‌ها را به این صورت بررسی می‌کند: root:test، guest:test، admin:test، root:12345 و غیره. با فعال کردن این گزینه، بررسی به این صورت انجام خواهد شد: root:test، root:12345، root:q1w2e3r4، guest:test و غیره.

بیشتر ابزارهای ارزیابی احراز هویت شبکه به طور پیش‌فرض ترجیح می‌دهند فهرست گذرواژه را برای هر نام کاربری پیمایش کنند. با این حال در بیشتر موارد این شیوه نسبت به پیمایش معکوس ناکارآمدتر است. این امر به این دلیل ساده صادق است که فهرست‌های گذرواژه معمولاً بر اساس فراوانی مرتب می‌شوند؛ به این معنی که هرچه گذرواژه رایج‌تر باشد، به ابتدای فهرست نزدیک‌تر است. بنابراین پیمایش تمام نام‌های کاربری برای رایج‌ترین گذرواژه‌ها در وهله اول، معمولاً شانس بیشتری برای رسیدن به نتیجه مثبت دارد. با پیمایش --passwords-first در صورتی که کاربر تصمیم بگیرد نشست را زودتر متوقف کند، گذرواژه‌های بسیار رایج ممکن است حتی برای برخی نام‌های کاربری آزمایش نشوند. با این حال این گزینه ممکن است برای مواردی که مهاجم می‌داند و پیش‌تر تایید کرده است که فهرست نام کاربری حاوی نام‌های کاربری واقعی است (به جای آزمودن کورکورانه آن‌ها) ارزشمند باشد.

--pairwise (انتخاب جفتی نام‌های کاربری و گذرواژه‌ها)

فعال کردن این گزینه باعث می‌شود Ncrack فهرست نام کاربری و گذرواژه را با انتخاب جفتی آن‌ها پیمایش کند. برای نمونه، با داشتن فهرست نام کاربری "root, guest, admin" و فهرست گذرواژه "test, 12345, q1w2e3r4"، نرم‌افزار Ncrack به این صورت عمل خواهد کرد: "root:test" سپس "guest:12345" و سپس "admin:q1w2e3r4". این گزینه به ویژه زمانی کاربرد دارد که اطلاعات درون‌سازمانی از زیرساخت مورد آزمایش در دسترس باشد و فهرست‌های نام کاربری و گذرواژه خاصی تهیه شده باشند.

ارزش هر ابزار امنیتی به اندازه خروجی تولیدی آن است. آزمون‌ها و الگوریتم‌های پیچیده اگر در قالبی منظم و قابل‌درک ارائه نشوند، ارزش چندانی ندارند. البته هیچ قالب واحدی نمی‌تواند رضایت همه را جلب کند. بنابراین Ncrack قالب‌های متعددی را ارائه می‌دهد، از جمله حالت تعاملی برای خواندن مستقیم توسط انسان‌ها و قالب XML برای تجزیه آسان توسط نرم‌افزارها.

علاوه بر ارائه قالب‌های مختلف خروجی، Ncrack گزینه‌هایی برای کنترل میزان جزئیات خروجی و همچنین پیام‌های اشکال‌زدایی ارائه می‌دهد. انواع خروجی را می‌توان به خروجی استاندارد (stdout) یا به فایل‌های نام‌گذاری‌شده ارسال کرد، که Ncrack می‌تواند نتایج را به آن‌ها الحاق کند یا محتوای آن‌ها را بازنویسی نماید.

ابزار Ncrack خروجی را در سه قالب مختلف در دسترس قرار می‌دهد. قالب پیش‌فرض خروجی تعاملی (Interactive output) نامیده می‌شود و به خروجی استاندارد (stdout) ارسال می‌گردد. همچنین خروجی معمولی (Normal output) وجود دارد که شبیه خروجی تعاملی است، با این تفاوت که اطلاعات و هشدارهای زمان اجرای کمتری را نمایش می‌دهد زیرا انتظار می‌رود پس از پایان پویش تحلیل شود تا حین اجرا.

خروجی XML یکی از مهم‌ترین انواع خروجی است، زیرا می‌توان آن را به HTML تبدیل کرد، به سادگی توسط برنامه‌هایی مانند رابط‌های گرافیکی Ncrack تجزیه نمود یا در پایگاه‌های داده ایمپورت کرد. در حال حاضر، خروجی XML هنوز پیاده‌سازی نشده است.

در حالی که خروجی تعاملی حالت پیش‌فرض است و هیچ گزینه خط فرمانی برای آن وجود ندارد، دو گزینه قالب دیگر از دستور زبان یکسانی استفاده می‌کنند. آن‌ها یک آرگومان می‌پذیرند که نام فایلی است که نتایج باید در آن ذخیره شوند. می‌توان چندین قالب را مشخص کرد، اما هر قالب را تنها یک بار می‌توان تعیین نمود. برای مثال، ممکن است بخواهید خروجی معمولی را برای بررسی خودتان ذخیره کنید و هم‌زمان خروجی XML همان پویش را برای تحلیل برنامه‌نویسی نگه دارید. می‌توانید این کار را با گزینه‌های -oX myscan.xml -oN myscan.ncrack انجام دهید. اگرچه این بخش از نام‌های ساده‌ای مانند myscan.xml برای اختصار استفاده می‌کند، اما به طور کلی نام‌های توصیفی‌تر توصیه می‌شوند. نام‌های انتخابی به سلیقه شخصی بستگی دارند. یک طرح می‌تواند استفاده از نام‌های طولانی باشد که تاریخ پویش و یک یا دو کلمه توصیف‌کننده پویش را در بر می‌گیرند و در پوشه‌ای به نام شرکت مورد ارزیابی قرار داده می‌شوند.

در حالی که این گزینه‌ها نتایج را در فایل‌ها ذخیره می‌کنند، Ncrack همچنان طبق معمول خروجی تعاملی را در stdout چاپ می‌کند. برای مثال، دستور nmap -oX myscan.xml [target] خروجی XML را در myscan.xml چاپ می‌کند و خروجی استاندارد را با همان نتایج تعاملی که در صورت عدم تعیین -oX چاپ می‌کرد پر می‌سازد. شما می‌توانید با ارسال یک کاراکتر خط تیره (-) به عنوان آرگومان یکی از انواع قالب، این رفتار را تغییر دهید. این کار باعث می‌شود Ncrack خروجی تعاملی را غیرفعال کرده و به جای آن نتایج را با قالبی که تعیین کرده‌اید به جریان خروجی استاندارد ارسال کند. بنابراین دستور nmap -oX - target تنها خروجی XML را به stdout ارسال خواهد کرد. خطاهای جدی همچنان ممکن است به جریان خطای استاندارد (stderr) ارسال شوند.

برخلاف برخی آرگومان‌های Ncrack، وجود فاصله میان فلگ گزینه فایل گزارش (مانند -oX) و نام فایل یا خط تیره الزامی است.

تمامی این آرگومان‌ها از تبدیل‌های شبه strftime در نام فایل پشتیبانی می‌کنند. H% ، M% ، S% ، m% ، d% ، y% و Y% همگی دقیقاً مشابه strftime هستند. T% معادل H%M%S% ، R% معادل H%M% و D% معادل m%d%y% است. نویسه % به همراه هر کاراکتر دیگری صرفاً همان کاراکتر را تولید می‌کند (%% یک علامت درصد می‌دهد). بنابراین -oX 'scan-%T-%D.xml' از یک فایل XML به فرم scan-144840-121307.xml استفاده خواهد کرد.

ابزار Ncrack همچنین گزینه‌هایی برای کنترل میزان جزئیات پویش و الحاق به فایل‌های خروجی به جای بازنویسی آن‌ها ارائه می‌دهد. تمامی این گزینه‌ها در ادامه شرح داده شده‌اند.

قالب‌های خروجی Ncrack

-oN filespec (خروجی معمولی) .

درخواست می‌کند که خروجی معمولی به نام فایل مشخص‌شده هدایت شود. همان‌طور که در بالا توضیح داده شد، این خروجی کمی با خروجی تعاملی تفاوت دارد.

-oX filespec (خروجی XML) .

درخواست می‌کند که خروجی XML به نام فایل مشخص‌شده هدایت شود.

-oA basename (خروجی به تمام قالب‌ها) .

برای سهولت، می‌توانید -oA basename را مشخص کنید تا نتایج پویش را به طور هم‌زمان در قالب‌های معمولی و XML ذخیره نمایید. آن‌ها به ترتیب در basename.ncrack و basename.xml ذخیره می‌شوند. مانند اکثر برنامه‌ها، می‌توانید نام‌های فایل را با یک مسیر دایرکتوری پیشوندگذاری کنید، مانند ~/ncracklogs/foocorp/ در یونیکس یا c:\hacking\sco در ویندوز.

گزینه‌های جزئیات و اشکال‌زدایی (Verbosity and debugging options)

-v (افزایش سطح جزئیات) .

سطح جزئیات را افزایش می‌دهد و باعث می‌شود Ncrack اطلاعات بیشتری را در مورد پویش در حال انجام چاپ کند. اعتبارنامه‌ها به محض پیدا شدن نمایش داده می‌شوند و اطلاعات آماری بیشتری در پایان چاپ می‌شود. برای جزئیات حتی بیشتر، از آن دو بار یا بیشتر استفاده کنید.

-d [level] (افزایش یا تنظیم سطح اشکال‌زدایی) .

زمانی که حتی حالت پرجزئیات داده‌های کافی برای شما فراهم نمی‌کند، اشکال‌زدایی آماده است تا اطلاعات بسیار بیشتری را به سوی شما سرازیر کند! همانند گزینه جزئیات (-v)، اشکال‌زدایی با یک فلگ خط فرمان (-d) فعال می‌شود و سطح اشکال‌زدایی را می‌توان با تکرار آن افزایش داد. علاوه بر این، می‌توانید با دادن یک آرگومان به -d، سطح اشکال‌زدایی را مستقیماً تعیین کنید. برای مثال، -d10 سطح ده را تنظیم می‌کند. این بالاترین سطح موثر است و هزاران خط خروجی تولید خواهد کرد، مگر اینکه نشست شما بسیار کند پیش برود.

خروجی اشکال‌زدایی زمانی کاربرد دارد که به وجود اشکالی در Ncrack مشکوک باشید، یا صرفاً در مورد اینکه Ncrack چه کاری انجام می‌دهد و چرا، سردرگم شده باشید. از آنجا که این قابلیت بیشتر برای توسعه‌دهندگان در نظر گرفته شده است، خطوط اشکال‌زدایی همیشه خودتوضیح نیستند. اگر خطی را متوجه نمی‌شوید، تنها راه‌های شما نادیده گرفتن آن، جستجوی آن در کد منبع یا درخواست راهنمایی از فهرست پستی توسعه‌دهندگان (nmap-dev) است. برخی خطوط واضح هستند، اما با افزایش سطح اشکال‌زدایی، پیام‌ها پیچیده‌تر می‌شوند.

--nsock-trace level (تنظیم سطح ردگیری nsock) .

این گزینه بیشتر برای توسعه‌دهندگان در نظر گرفته شده است زیرا فعال‌سازی آن، خروجی اشکال‌زدایی کتابخانه Nsock را فعال می‌کند. کتابخانه Nsock هسته زیربنایی برای مدیریت سوکت‌های موازی است. شما باید یک سطح مشخص برای این گزینه تعیین کنید. محدوده معتبر از ۰ تا ۱۰ است. معمولاً سطح ۱ یا ۲ برای به دست آوردن دید کلی مناسب از عملیات شبکه‌ای که در پشت صحنه اتفاق می‌افتد کافی است. کتابخانه Nsock این اطلاعات را به طور پیش‌فرض به stdout چاپ می‌کند.

--log-errors (ثبت خطاها/هشدارها در فایل خروجی حالت معمولی) .

هشدارها و خطاهای چاپ‌شده توسط Ncrack معمولاً فقط روی صفحه نمایش (خروجی تعاملی) می‌روند و فایل‌های خروجی با قالب معمولی (که معمولاً با -oN مشخص می‌شوند) را خلوت نگه می‌دارند. اگر می‌خواهید آن پیام‌ها را در فایل خروجی معمولی که تعیین کرده‌اید مشاهده کنید، این گزینه را اضافه نمایید. این قابلیت زمانی مفید است که خروجی تعاملی را مشاهده نمی‌کنید یا می‌خواهید هنگام اشکال‌زدایی یک مشکل، خطاها را ثبت نمایید. پیام‌های خطا و هشدار همچنان در حالت تعاملی نیز ظاهر خواهند شد. این قابلیت برای بیشتر خطاهای مربوط به آرگومان‌های نامعتبر خط فرمان کار نخواهد کرد زیرا Ncrack ممکن است هنوز فایل‌های خروجی خود را مقداردهی نکرده باشد.

یک جایگزین برای --log-errors هدایت خروجی تعاملی (از جمله جریان خطای استاندارد) به یک فایل است. اکثر پوسته‌های یونیکس این روش را آسان می‌کنند، گرچه ممکن است در ویندوز دشوار باشد.

گزینه‌های گوناگون خروجی

--append-output (الحاق به فایل‌های خروجی به جای بازنویسی) .

هنگامی که یک نام فایل برای یک فلگ قالب خروجی مانند -oX یا -oN مشخص می‌کنید، آن فایل به طور پیش‌فرض بازنویسی می‌شود. اگر ترجیح می‌دهید محتوای موجود در فایل را حفظ کرده و نتایج جدید را به انتهای آن الحاق کنید، گزینه --append-output را مشخص نمایید. در این صورت تمامی نام‌های فایل خروجی مشخص‌شده در آن اجرای Ncrack به جای بازنویسی، الحاق خواهند شد. این قابلیت برای داده‌های پویش XML (-oX) به خوبی کار نمی‌کند زیرا فایل حاصل به طور کلی تا زمانی که آن را به صورت دستی اصلاح نکنید به درستی تجزیه نخواهد شد.

این بخش برخی گزینه‌های مهم (و نه‌چندان مهم) را شرح می‌دهد که در بخش‌های دیگر قرار نمی‌گیرند.

--resume file (ادامه نشست ذخیره‌شده قبلی) .

هر زمان که کاربر یک نشست در حال اجرا را لغو کند (معمولاً با فشردن Ctrl+C)، ابزار Ncrack وضعیت فعلی را در فایلی ذخیره می‌کند که بعداً می‌تواند از آن برای ادامه کار از نقطه‌ای که متوقف شده بود استفاده کند. این فایل در زیرپوشه ncrack./ در مسیر پوشه خانگی کاربر با فرمت نام فایل "restore.YY-MM-DD_hh-mm" ذخیره می‌شود. یک نمونه می‌تواند به این صورت باشد: "/home/ithilgore/.ncrack/restore.2010-05-18_04-42". سپس می‌توانید با تعیین این فایل به عنوان آرگومان به گزینه --resume نشست خود را ادامه دهید.

-f (توقف آزمودن سرویس پس از یافتن یک اعتبارنامه) .

این گزینه Ncrack را وادار می‌کند به محض یافتن یک ترکیب نام کاربری/گذرواژه معتبر برای یک سرویس، آزمودن آن سرویس را متوقف سازد. با فرض اینکه چندین سرویس موازی به طور هم‌زمان در حال آزموده شدن هستند، این گزینه بر روی هر یک از آن‌ها به طور جداگانه اعمال می‌شود. این بدان معناست که Ncrack پس از یافتن یک جفت اعتبارنامه برای هر سرویس، آزمودن آن سرویس خاص را متوقف می‌کند، اما به طور کامل متوقف نخواهد شد. با این حال ارسال دو بار این گزینه به صورت -f -f باعث می‌شود Ncrack به محض یافتن یک اعتبارنامه معتبر برای هر سرویسی، فوراً به طور کامل خارج شود.

مهاجمان مکرراً تلاش می‌کنند چندین سرویس را به طور موازی بیازمایند تا شانس یافتن یک جفت اعتبارنامه معتبر را به حداکثر برسانند. با توجه به اینکه یک شبکه قوی‌تر از ضعیف‌ترین حلقه خود نیست، این گزینه و به ویژه همتای -f -f آن اغلب برای کاهش احتمال شناسایی و جلوگیری از هدر رفتن بی‌هدف منابع شبکه به کار می‌روند.

-6 (فعال‌سازی آزمودن IPv6) .

هشدار: این گزینه به تازگی افزوده شده و در حال حاضر آزمایشی است، بنابراین لطفاً هرگونه مشکل و اشکال مرتبط با آن را به ما گزارش دهید.

دستور زبان همانند همیشه است، با این تفاوت که گزینه -6 را نیز اضافه می‌کنید. البته اگر به جای نام میزبان یک آدرس را مشخص می‌کنید، باید از ساختار IPv6 استفاده نمایید. یک آدرس ممکن است شبیه 3ffe:7501:4819:2000:210:f3ff:fe03:14d0 باشد، بنابراین استفاده از نام‌های میزبان توصیه می‌شود. خروجی همانند معمول به نظر می‌رسد و آدرس IPv6 در خط “Discovered credentials” تنها نشانه استفاده از IPv6 است.

اگرچه IPv6 جهان را دگرگون نکرده است، اما در برخی کشورها (معمولاً آسیایی) کاربرد قابل‌توجهی دارد و اکثر سیستم‌عامل‌های مدرن از آن پشتیبانی می‌کنند. برای استفاده از Ncrack با IPv6، هم مبدا و هم هدف پویش شما باید برای IPv6 پیکربندی شده باشند. اگر ارائه‌دهنده خدمات اینترنتی (ISP) شما (مانند بیشتر آن‌ها) آدرس‌های IPv6 به شما اختصاص نمی‌دهد، کارگزاران تونل رایگان به طور گسترده در دسترس هستند و احتمالاً با Ncrack به خوبی کار خواهند کرد. یک سرویس محبوب کارگزار تونل IPv6 در نشانی http://www.tunnelbroker.net در دسترس است. تونل‌های 6to4 رویکرد محبوب و رایگان دیگری هستند.

-sL (پویش فهرستی) .

پویش فهرستی صرفاً هر میزبان و سرویسی را که در صورت عدم تعیین این گزینه آزموده می‌شدند، فهرست می‌کند. هیچ بسته‌ای به میزبان‌های هدف ارسال نمی‌شود و تنها عملیات شبکه‌ای که ممکن است رخ دهد، وضوح‌یابی DNS برای نام‌های میزبان اهداف است. این گزینه برای اطمینان از اینکه همه چیز را مطابق میل خود مشخص کرده‌اید بسیار مفید است. گزینه‌های ویژه سرویس نیز چاپ خواهند شد، بنابراین این گزینه به عنوان یک بررسی سلامت خوب برای آرگومان‌های پیچیده خط فرمان مانند حالت‌های پیشرفته تعیین گزینه‌های سرویس و سلسله‌مراتب معادل آن برای نشست‌هایی که نیاز به مدیریت دقیق زمان‌بندی دارند عمل می‌کند. اگر پویش فهرستی همراه با گزینه اشکال‌زدایی -d فراخوانی شود، خروجی‌های تکمیلی مانند ServicesTable و پارامترهای قالب زمان‌بندی فعلی نیز چاپ خواهند شد.

--datadir directoryname (تعیین مسیر سفارشی فایل داده‌های Ncrack) .

نرم‌افزار Ncrack به فایلی به نام ncrack-services برای بارگذاری جدول جستجوی سرویس‌ها/پورت‌های تحت پشتیبانی نیاز دارد. این فایل نباید تغییر داده شود مگر اینکه بدانید چه کاری انجام می‌دهید (مانند توسعه Ncrack برای ماژول‌های بیشتر). علاوه بر این، Ncrack با فهرست‌های مختلف نام کاربری و گذرواژه ارائه می‌شود که برخی از آن‌ها در صورتی که کاربر فهرست‌های اختصاصی خود را مشخص نکند، به طور پیش‌فرض استفاده می‌شوند. همه این فایل‌ها معمولاً در طول فرایند نصب در پوشه‌ای مانند usr/share/ncrack/ یا usr/local/share/ncrack/ کپی می‌شوند. استفاده از گزینه --datadir ، Ncrack را مجبور می‌کند جستجو برای این فایل‌ها را در پوشه مشخص‌شده آغاز کند. اگر فایل‌ها پیدا نشوند، جستجو در دایرکتوری مشخص‌شده توسط متغیر محیطی NCRACKDIR (در صورت تعریف) ادامه می‌یابد. سپس پوشه ncrack./~ برای شناسه‌های کاربری واقعی و موثر (تنها در سیستم‌های سازگار با POSIX) یا محل فایل اجرایی Ncrack (تنها در Win32) و سپس یک مکان کامپایل‌شده مانند /usr/local/share/ncrack یا /usr/share/ncrack بررسی می‌شود. به عنوان آخرین راهکار، Ncrack در دایرکتوری جاری جستجو خواهد کرد.

--proxy type://proxy:port (برقراری اتصالات از طریق پراکسی‌های socks4، 4a و http) .

این گزینه باعث می‌شود Ncrack نشست آزمودن احراز هویت را از طریق میزبان پراکسی مشخص‌شده انجام دهد.

-V; --version (چاپ شماره نسخه) .

شماره نسخه Ncrack را چاپ کرده و خارج می‌شود.

-h; --help (چاپ صفحه راهنمای خلاصه) .

یک صفحه راهنمای کوتاه با رایج‌ترین فلگ‌های دستور چاپ می‌کند. اجرای Ncrack بدون هیچ آرگومانی نیز همین کار را انجام می‌دهد.

در حین اجرای Ncrack، تمام کلیدهای فشرده‌شده دریافت می‌شوند. این کار به شما امکان می‌دهد بدون متوقف کردن و راه‌اندازی مجدد برنامه، با آن تعامل داشته باشید. برخی کلیدهای ویژه گزینه‌ها را تغییر می‌دهند، در حالی که هر کلید دیگری یک پیام وضعیت در مورد پویش چاپ می‌کند. قاعده به این صورت است که حروف کوچک میزان خروجی را افزایش می‌دهند و حروف بزرگ میزان خروجی را کاهش می‌دهند. همچنین می‌توانید برای راهنمایی کلید ‘?’ را فشار دهید.

v / V

افزایش / کاهش سطح جزئیات

d / D

افزایش / کاهش سطح اشکال‌زدایی

p / P

نمایش اعتبارنامه‌های کشف‌شده

?

چاپ صفحه راهنمای تعامل در زمان اجرا

هر کلید دیگر

چاپ یک پیام وضعیت مانند این:

Stats: 0:00:20 elapsed; 0 services completed (1 total)

Rate: 6.26; Found: 1; About 13.27% done; ETC: 21:06 (0:02:17 remaining)

معماری Ncrack ماژولار است و هر ماژول با یک سرویس یا پروتکل خاص مطابقت دارد. در حال حاضر، Ncrack از پروتکل‌های SSH, RDP, FTP, Telnet, HTTP(S), POP3(S), IMAP, SMB, VNC, SIP Redis, PostgreSQL, MySQL, MSSQL, MongoDB, Cassandra, WinRM, OWA پشتیبانی می‌کند. اگر می‌خواهید ماژول‌های اختصاصی Ncrack خود را بنویسید و مشارکت کنید، حتماً راهنمای توسعه‌دهندگان Ncrack را در نشانی زیر مطالعه کنید: http://nmap.org/ncrack/devguide.html در ادامه به نکات کلیدی برای هر یک از آن‌ها می‌پردازیم.

ماژول FTP

احراز هویت FTP بسیار سریع است، زیرا بار مذاکره پروتکل بسیار اندک است. بیشتر دیمن‌های FTP اجازه ۳ تا ۶ تلاش احراز هویت را می‌دهند اما معمولاً تاخیر معینی را پیش از پاسخ دادن به نتایج یک تلاش ناموفق اعمال می‌کنند. نرم‌افزار Filezilla یکی از بارزترین نمونه‌های این حالت است، جایی که تاخیر زمانی به قدری زیاد است که معمولاً باز کردن اتصالات بیشتر به سوی آن که هر کدام تنها ۱ احراز هویت در هر اتصال انجام می‌دهند، سریع‌تر است.

ماژول Telnet

دیمن‌های Telnet تا حد زیادی با همتای امن‌تر خود یعنی SSH جایگزین شده‌اند. با این حال بسیاری از دستگاه‌ها، عمدتاً مسیریاب‌ها یا چاپگرها، همچنان برای دسترسی از راه دور به Telnet متکی هستند. معمولاً آزمودن این دستگاه‌ها آسان‌تر است، زیرا گذرواژه‌های پیش‌فرض آن‌ها به طور عمومی شناخته‌شده است. نقطه ضعف این است که telnet پروتکلی نسبتاً کند است، بنابراین نباید انتظار نرخ‌های بسیار بالایی در برابر آن داشته باشید.

ماژول SSH

پروتکل SSH یکی از رایج‌ترین پروتکل‌ها در شبکه‌های امروزی است. به همین دلیل، کتابخانه ویژه‌ای به نام opensshlib بر اساس کد OpenSSH به طور خاص برای نیازهای Ncrack ساخته و سفارشی‌سازی شد. کتابخانه Opensshlib همراه با Ncrack عرضه می‌شود، بنابراین پشتیبانی از SSH به صورت پیش‌فرض در دسترس است. با این حال OpenSSL باید در سیستم‌های یونیکس نصب شده باشد. فایل‌های dll مربوط به OpenSSL در ویندوز درون Ncrack گنجانده شده‌اند، بنابراین کاربران ویندوز نباید نگران آن باشند.

آزمون فراگیر SSH دارای چالش‌ها و ریزه‌کاری‌های فراوانی است و توصیه می‌شود مقاله‌ای را که برای توضیح آن‌ها نوشته شده است مطالعه کنید. آخرین نسخه سند «Hacking the OpenSSH library for Ncrack» را می‌توانید در مسیر docs/openssh_library.txt یا در نشانی http://sock-raw.org/papers/openssh_library بیابید.

ماژول HTTP(S)

ماژول HTTP در حال حاضر از احراز هویت‌های basic و digest پشتیبانی می‌کند. ابزار Ncrack هر زمان که ممکن باشد تلاش می‌کند از گزینه "Keepalive" در HTTP استفاده کند، که منجر به سرعت‌های بسیار بالایی می‌شود زیرا امکان انجام ده‌ها تلاش در هر اتصال را فراهم می‌سازد. ماژول HTTP را می‌توان روی بستر SSL نیز فراخوانی کرد.

ماژول SMB

ماژول SMB در حال حاضر بر روی TCP خام کار می‌کند. پروتکل NetBIOS هنوز پشتیبانی نمی‌شود. این پروتکل امکان موازی‌سازی بالایی را فراهم می‌کند، بنابراین کاربران می‌توانند تعداد کاوش‌های هم‌زمان را در برابر آن افزایش دهند. پروتکل SMB مکرراً از جمله برای اشتراک‌گذاری فایل استفاده می‌شود و یکی از فراگیرترین پروتکل‌ها است که در هر دو محیط یونیکس و ویندوز حضور دارد.

ماژول RDP

پروتکل RDP (پروتکل میزکار از راه دور) یک پروتکل اختصاصی است که توسط مایکروسافت به منظور ارائه خدمات ترمینال از راه دور از طریق انتقال اطلاعات نمایش گرافیکی از رایانه راه دور به کاربر و انتقال دستورات ورودی از کاربر به رایانه راه دور توسعه یافته است. خوشبختانه مایکروسافت سازوکار داخلی این پروتکل را به روی عموم گشوده و مستندات رسمی آن را ارائه داده است که در نشانی زیر در دسترس است: http://msdn.microsoft.com/en-us/library/cc240445%28v=PROT.10%29.aspx

پروتکل RDP یکی از پیچیده‌ترین پروتکل‌ها است که حتی فقط برای مرحله احراز هویت به تبادل بسته‌های متعددی نیاز دارد. به همین دلیل آزمودن آن زمان زیادی می‌برد و احتمالاً کندترین ماژول است. مرحله اتصال به طور خلاصه در نشانی زیر شرح داده شده است: http://msdn.microsoft.com/en-us/library/cc240452%28v=PROT.10%29.aspx که در آن می‌توانید نموداری از بسته‌های مختلف درگیر را نیز مشاهده کنید. در برابر سرورهای RDP در نسخه‌های Windows XP باید مراقبت ویژه‌ای به عمل آید، زیرا آن‌ها نمی‌توانند چندین اتصال را به طور هم‌زمان مدیریت کنند. توصیه می‌شود از یک قالب زمان‌بندی بسیار کند استفاده کنید یا حتی بهتر است حداکثر اتصالات موازی را محدود نمایید با استفاده از گزینه‌های زمان‌بندی مانند CL (محدودیت اتصال) یا cd (تاخیر اتصال) در برابر سرورهای RDP ویندوز XP (و موارد مشابه). ویندوز ویستا و بالاتر از این محدودیت رنج نمی‌برند.

ماژول VNC

پروتکل VNC کاربرد گسترده‌ای میان مدیران و کاربران یونیکس برای دسترسی گرافیکی از راه دور داشته است. VNC شاید یکی از آسیب‌پذیرترین پروتکل‌ها از نظر آزمون فراگیر باشد، زیرا اغلب تنها به یک گذرواژه بدون نام کاربری متناظر برای احراز هویت نیاز دارد. علاوه بر این، برخی نسخه‌های VNC محدودیت ۸ کاراکتری برای طول گذرواژه اعمال می‌کنند. هنگام آزمودن سیستم‌های VNC باید افزودن گزینه --passwords-first را مد نظر قرار دهید تا از این واقعیت که نام کاربری اغلب اهمیت واقعی در احراز هویت ندارد بهره ببرید.

ماژول POP3(S)

پشتیبانی از POP3 همچنان آزمایشی است و به طور کامل آزمایش نشده است. با این وجود می‌توانید انتظار داشته باشید که در برابر سرورهای ایمیل رایج کار کند.

ماژول IMAP

پروتکل IMAP (پروتکل دسترسی به پیام‌های اینترنتی) توسط کلاینت‌های ایمیل برای دریافت پیام‌های ایمیل از یک سرور ایمیل استفاده می‌شود. این ماژول دستور LOGIN را برای احراز هویت ارسال می‌کند. دستور LOGIN ساده‌ترین، سریع‌ترین و پشتیبانی‌شده‌ترین سازوکار احراز هویت برای IMAP است.

ماژول SIP

پروتکل آغاز نشست (SIP) یک پروتکل متنی است که در ساختار خود بسیار شبیه HTTP است. رایج‌ترین کاربرد SIP در تلفن اینترنتی برای تماس‌های صوتی و تصویری است. تقریباً تمام سازمان‌ها زیرساختی دارند که از تماس‌های کنفرانسی پشتیبانی می‌کند و بخشی از آن‌ها بر پایه SIP هستند، که بخش احراز هویت را به یک بردار تهدید قابل‌توجه تبدیل می‌کند.

ماژول Redis

ابزار Redis یکی از پرکاربردترین سرورهای حافظه پنهان (Cache) و محبوب‌ترین پایگاه‌داده NoSQL است. با وجود شهرت آن، سازوکار احراز هویت بسیار ساده است و تنها یک گذرواژه را برای محافظت از دسترسی از راه دور به سرویس مجاز می‌داند. با توجه به کارایی بالای Redis و این واقعیت که تنها ۲ بسته برای مرحله احراز هویت مورد نیاز است، Ncrack می‌تواند گذرواژه‌های زیادی را به طور موازی بیازماید (http://redis.io/commands/AUTH). تعیین فهرست نام کاربری یا یک نام کاربری منفرد در این ماژول هیچ تاثیری نخواهد داشت، زیرا Redis تنها با گذرواژه‌ها سر و کار دارد.

ماژول PostgreSQL

پایگاه‌داده PostgreSQL مکرراً به عنوان یک پایگاه‌داده پشتیبان استفاده می‌شود. ماژول PostgreSQL از احراز هویت md5 که رایج‌ترین روش احراز هویت با گذرواژه است پشتیبانی می‌کند.

ماژول MySQL

ماژول MySQL از احراز هویت بومی (Native) پشتیبانی می‌کند.

ماژول MSSQL

ماژول MSSQL از احراز هویت ترکیبی (Mixed authentication) پشتیبانی می‌کند.

ماژول MongoDB

ماژول MongoDB از احراز هویت‌های MongoDB-CR و SCRAM-SHA-1 پشتیبانی می‌کند. گزینه‌های pairwise و passwords-first به دلیل ناکارآمد بودن در برابر MongoDB برای این ماژول نادیده گرفته خواهند شد. بهینه‌ترین روش برای آزمودن MongoDB استفاده از آسیب‌پذیری شمارش کاربر در سازوکار احراز هویت آن است که Ncrack از آن بهره‌برداری می‌کند.

ماژول Cassandra

ابزار Apache Cassandra یک پایگاه‌داده محبوب NoSQL است که اغلب بدون امنیت و با اعتبارنامه‌های ضعیف یا بدون احراز هویت رها می‌شود.

ماژول OWA

برنامه وب Outlook (یا OWA) به کاربران اجازه می‌دهد از یک مرورگر وب به صندوق پستی سرور Microsoft Exchange دسترسی داشته باشند و بدون کلاینت ایمیل از مایکروسافت اوت‌لوک استفاده کنند. این ماژول از احراز هویت Basic پشتیبانی می‌کند.

ماژول WinRM

مدیریت راه دور ویندوز (WinRM) پیاده‌سازی مایکروسافت از پروتکل WS-Management است؛ پروتکلی استاندارد مبتنی بر پروتکل دسترسی آسان به اشیاء (SOAP) و سازگار با دیواره آتش که به سخت‌افزارها و سیستم‌عامل‌های فروشندگان مختلف اجازه تعامل می‌دهد. این ابزار اغلب برای مدیریت ماشین‌های ویندوزی استفاده می‌شود. این ماژول از احراز هویت Basic و Negotiate پشتیبانی می‌کند.

ماژول DICOM

پروتکل تصویربرداری و ارتباطات دیجیتال در پزشکی (DICOM) پروتکلی است که به شدت در محیط‌های مراقبت‌های بهداشتی استفاده می‌شود. معمولاً هم به عنوان قالب فایل و هم به عنوان پروتکل شبکه توسط سامانه‌های بایگانی و تبادل تصاویر (PACS) به کار می‌رود. کلاینت یک سرویس DICOM به عنوان کاربر کلاس سرویس (SCU) و سرور به عنوان ارائه‌دهنده کلاس سرویس (SCP) شناخته می‌شود. پروتکل DICOM در نحوه احراز هویت کلاینت‌ها به سرورها بسیار منحصربه‌فرد است؛ به طور بالقوه یک تا سه مرحله درگیر هستند: انجمن (Association)، سرویس جستجو (Find Service) و بازیابی تصاویر (Retrieve Images).

انجمن (Association): این مرحله اولیه‌ای است که تقریباً تمام سرورهای PACS به آن نیاز دارند. با ارسال یک درخواست A-ASSOCIATE با عنوان موجودیت کاربردی (AET) فراخوانده‌شده درست، کلاینت با سرور ارتباط برقرار می‌کند و سپس می‌تواند در مراحل بعدی به انجام درخواست‌های جستجو / بازیابی بپردازد. این حالتی است که Ncrack در حال حاضر با پیمایش فیلد username از آن پشتیبانی می‌کند. بنابراین برای آزمودن AET سرور، می‌توانید فهرستی از AETها را با گزینه U- مشخص کرده و سپس یک گذرواژه خالی تعیین کنید. مثال: ncrack dicom://127.0.0.1 -U aet.txt --pass DOESNOTMATTER

سرویس جستجو (Find Service): این مرحله شامل توانایی پرس‌وجو از سرور PACS برای پرونده‌های بیماران مرتبط با تصاویر DICOM است. این مرحله پس از انجام فاز انجمن توسط کلاینت انجام می‌شود. یک درخواست C-FIND باید با AET فراخواننده درست ارسال شود. دانستن AET کلاینت مجاز درست (یا AET فراخواننده) توسط سرورهای PACS که به صورت امن پیکربندی شده‌اند الزامی است. بسیاری از سرورهای PACS به طور پیش‌فرض به این نیاز ندارند.

بازیابی تصاویر (Retrieve Images): این مرحله به کلاینت امکان بازیابی تصاویر DICOM را می‌دهد. امن‌ترین سرورهای PACS نیاز دارند که کلاینت یک IP مجاز مشخص برای ارسال درخواست C-MOVE / C-STORE پس از انجام دو مرحله بالا داشته باشد.

ماژول MQTT

پروتکل انتقال دورسنجی صف پیام (MQTT) یک پروتکل ماشین به ماشین با مدل انتشار/اشتراک است که به کلاینت‌های اینترنت اشیاء (IoT) اجازه می‌دهد داده‌ها را در یک کارگزار منتشر کنند. هر دستگاه کلاینت در یک موضوع (Topic) مورد علاقه مشترک می‌شود و پیام‌ها را از ناشران دریافت می‌کند. معمولاً احراز هویت MQTT اختیاری است و در صورت فعال بودن می‌توان آن را بسیار آسان آزمود زیرا تنها به ارسال یک بسته MQTT CONNECT برای هر جفت اعتبارنامه آزمایشی نیاز دارد.

ماژول Wordpress

وردپرس یکی از محبوب‌ترین سامانه‌های مدیریت محتوا است. این ماژول به نقطه پایانی مدیریت وب حمله می‌کند. به طور پیش‌فرض فایل "wp-login.php" را می‌آزماید اما می‌توانید با تعیین گزینه path آن را تغییر دهید. برای مثال: ncrack wp://127.0.0.1,path=/non-default/wp-login.php

ماژول CVS

سامانه نسخه‌بندی هم‌روند (CVS) یک سیستم کنترل نسخه در توسعه نرم‌افزار است. گرچه امروزه چندان محبوب نیست، اما سرورهای قدیمی و از رده خارج CVS زیادی وجود دارند که ممکن است اعتبارنامه‌های پیش‌فرض یا ضعیف داشته باشند.

همانند نویسندگانش، Ncrack نیز کامل و بی‌نقص نیست. اما شما می‌توانید با ارسال گزارش اشکال یا حتی نوشتن وصله‌ها به بهتر شدن آن کمک کنید. اگر Ncrack آن‌گونه که انتظار دارید رفتار نمی‌کند، ابتدا به آخرین نسخه موجود از نشانی http://nmap.org/ncrack ارتقا دهید. اگر مشکل همچنان ادامه داشت، کمی جستجو کنید تا متوجه شوید آیا این مشکل پیش‌تر کشف و حل شده است یا خیر. پیام خطا را در صفحه جستجوی ما در نشانی http://insecure.org/search.html یا در گوگل جستجو کنید. همچنین بایگانی nmap-dev را در نشانی http://seclists.org بررسی کنید. همچنین این صفحه راهنما را به طور کامل مطالعه کنید. اگر در حال توسعه ماژول اختصاصی Ncrack خود هستید، مطمئن شوید که ابتدا راهنمای توسعه‌دهندگان Ncrack را در نشانی http://nmap.org/ncrack/devguide.html خوانده‌اید. اگر هیچ‌یک از این‌ها نتیجه نداد، گزارش اشکال را به نشانی nmap-dev@insecure.org ارسال کنید. لطفاً هر آنچه درباره مشکل متوجه شده‌اید، به همراه نسخه Ncrack و نسخه سیستم‌عاملی که روی آن اجرا می‌شود را ذکر کنید. گزارش‌های مشکل و پرسش‌های مربوط به استفاده از Ncrack که به nmap-dev@insecure.org ارسال می‌شوند، بسیار بیشتر از مواردی که مستقیماً برای Fyodor ارسال می‌شوند شانس پاسخگویی دارند. اگر پیش از ارسال پیام در فهرست nmap-dev مشترک شوید، پیام شما از صف بازبینی عبور کرده و سریع‌تر به دست ما می‌رسد. اشتراک در نشانی زیر انجام می‌شود: http://cgi.insecure.org/mailman/listinfo/nmap-dev

وصله‌های کد برای رفع اشکالات حتی از گزارش‌های اشکال نیز بهتر هستند. دستورالعمل‌های پایه برای ایجاد فایل‌های وصله با تغییرات شما در نشانی زیر در دسترس است: http://nmap.org/data/HACKING وصله‌ها را می‌توانید به nmap-dev (توصیه‌شده) یا مستقیماً برای Fyodor ارسال کنید.

ithilgore (Fotios (Fotis) Chantzis) ithilgore@sock-raw.org (http://sock-raw.org)

Fyodor fyodor@insecure.org (http://insecure.org)

اگرچه Ncrack به همراه Nmap توزیع نمی‌شود، اما بخشی از پروژه Nmap است و تحت همان شرایط مجوز و عدم ضمانت قرار دارد، طبق آنچه در نشانی زیر شرح داده شده است: http://nmap.org/book/man-legal.html

08/23/2019 Ncrack