معرفی ابزار تشخیص تکنولوژی وب اپلیکیشن‌ها

مقدمه: لزوم تشخیص تکنولوژی‌های وب

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

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

چرا وب اپلیکیشن‌ها از تکنولوژی‌های یکسان استفاده می‌نمایند؟

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

معرفی ابزار و انگیزه ساخت

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

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

مشکلات سایر ابزارهای مشابه

ابزارهای معروف مثل Wappalyzer یا WhatWeb برای مصارف عمومی خوبن، اما در محیط سازمانی چند مشکل مهم دارن:

  • حفظ محرمانگی: بسیاری از ابزارها به صورت آنلاین کار می‌کنن و برای اسکن داده‌ها نیاز دارن درخواست‌ها رو به سرورهای خارجی بفرستن؛ این برای سازمان‌هایی که نمی‌خوان ساختار و دارایی‌هاشون بیرون منتشر بشه، قابل قبول نیست.
  • قیمت و مدل اشتراک: نسخه‌های حرفه‌ای این سرویس‌ها هزینه‌های اشتراک بالا دارن و برای اسکن گسترده و دوره‌ای سازمانی مقرون‌به‌صرفه نیستن.
  • عدم پشتیبانی از تکنولوژی‌های بومی: ابزارهای خارجی معمولاً الگوهای محلی یا اختصاصی سازمانی رو نمی‌شناسن و در نتیجه خروجی‌شون برای محیط‌های بسته کارایی کمی داره.

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

معرفی ویژگی‌های ابزار و عملکرد کلی

عملکرد کلی: ابزار لیستی از آدرس‌ها یا دامنه‌ها رو می‌گیره، درخواست‌های کنترل‌شده می‌فرسته، داده‌هایی مثل HTML، JavaScript، هدرهای HTTP، favicon و پارامترهای TLS رو جمع‌آوری می‌کنه و تحلیل می‌کنه تا تکنولوژی‌های پشت وب‌سایت رو تشخیص بده.

طراحی ماژولار: هر بخش (جمع‌آوری، تحلیل HTML، تحلیل JS، TLS و گزارش) به صورت ماژول جدا توسعه داده شده تا نگهداری و افزودن قابلیت جدید ساده باشه.

عمل درون سازمانی: ابزار می‌تونه به صورت آفلاین داخل شبکهٔ سازمان اجرا شه و با زمان‌بندی دوره‌ای دارایی‌ها رو پایش کنه؛ نتیجه‌ها هم قابل خروجی‌گیری و اتصال به سیستم‌های دیگرن.

ویژگی‌های منحصر به فرد

  • تحلیل چندمنبعی: ترکیب نتایج از HTML، JS، هدرها، favicon و TLS برای افزایش دقت.
  • کارکرد آفلاین و داخلی: مناسب سازمان‌های حساس به نشت اطلاعات.
  • پشتیبانی از تکنولوژی‌های بومی: امکان تعریف و اضافه کردن الگوهای اختصاصی.
  • ساختار ماژولار و توسعه‌پذیر.
  • خروجی منعطف: CSV، پایگاه‌داده، API و اتصال به SIEM/BigData.

ساختار فنی و معماری ابزار

زبان پیاده‌سازی: پایتون — به خاطر کتابخانه‌ها، سادگی و جامعهٔ بزرگ. هستهٔ ابزار وظیفهٔ مدیریت ماژول‌ها و هماهنگی بین آن‌ها را برعهده دارد.

معماری: ماژولار با پردازش مبتنی بر صف (Queue-based Processing) تا ابزار در زمان اسکن‌های سنگین پایدار و سریع بماند. خروجی‌ها در قالب JSON ذخیره شده تا قابل استفاده در داشبوردها و سیستم‌های دیگر باشند.

حالت‌های اجرا: CLI برای استفاده فردی و سرویس/بکند برای اجرای سازمانی. همراه با هسته، یک وب‌اپلیکیشن داخلی سبک هم ارائه می‌شود که برای گرفتن لیست تارگت، زمان‌بندی اسکن، مشاهده نتایج و مدیریت کاربران به کار می‌آید. وب‌اپ API داخلی/REST هم ارائه می‌دهد تا بتوان از آن در اتوماسیون‌ها استفاده کرد.

پیشنهادات فنی: برای وب‌اپ می‌توان از فریم‌ورک‌های سبک مانند Flask یا FastAPI استفاده کرد. برای دیتابیس نمونهٔ محلی SQLite مناسب است و برای تولیدی پیشنهاد می‌شود از PostgreSQL یا پایگاه‌های سازمانی استفاده شود.

روش‌های تشخیص تکنولوژی

بررسی وجود کلود و مکانیزم‌های احراز هویت

ابزار قابلیت تشخیص سرویس‌های کلود/CDN مانند Cloudflare، Akamai یا AWS را دارد و می‌تواند به‌شیوه‌ای غیرمستقل از داده‌های عمومی، وضعیت وجود این سرویس‌ها را مشخص کند. همچنین، ابزار می‌تواند مکانیزم‌های احراز هویتی که صرفاً با اجرای یک فایل JavaScript در کلاینت اعمال می‌شوند را نادیده گرفته و با روش‌های غیرآسیب‌رسان اطلاعات لازم را برای تشخیص تکنولوژی‌ها جمع‌آوری نماید. این توضیح به‌صورت غیرتخصصی و غیر فنی بیان شده تا جنبهٔ بازاریابی و قابلیت محصول را نمایش دهد — بدون ارائه دستورالعمل‌های فنی برای دورزدن کنترل‌های امنیتی.

بررسی کدهای HTML و CSS

HTML و CSS اغلب اثرانگشت فنی دارن؛ با تحلیل تگ‌ها، کلاس‌ها، idها و استایل‌ها می‌توان به فریم‌ورک‌ها و قالب‌های استفاده‌شده پی برد (مثلاً Bootstrap، Tailwind یا قالب‌های وردپرس).

تحلیل فایل‌های JavaScript

فایل‌های JS اطلاعات زیادی دربارهٔ فریم‌ورک‌ها و کتابخانه‌ها میدن؛ نام فایل‌ها، مسیرها و الگوهای کدنویسی می‌تونن نشون بدن که از React، Angular، Vue یا jQuery استفاده شده و بعضی پلاگین‌ها و ماژول‌ها قابل شناسایی‌اند.

بررسی هدرهای پاسخ HTML

هدرهای HTTP اطلاعاتی مثل نوع وب‌سرور (Apache، Nginx، IIS)، اطلاعات cache یا لایه‌های میانی (load balancer، WAF) رو در خودشون دارن که به تشخیص تکنولوژی‌ها کمک می‌کنن.

بررسی مقادیر hash تصاویر favicon

favicon اغلب ثابت و قابل تشخیصه؛ با گرفتن hash یا signature تصویر و مقایسه با دیتابیس، میشه تشخیص داد سایت از چه CMS یا سرویس‌هایی استفاده می‌کنه، و این روش حتی زمانی که سایت پشت CDN باشه مفید است.

دریافت مقادیر و پارامترهای TLS

بررسی پارامترهای TLS/SSL مثل نسخهٔ پروتکل، cipher suite و اطلاعات گواهینامه می‌تونه سرنخ‌هایی دربارهٔ تنظیمات سرور و زیرساخت بده و در کنار روش‌های دیگر برای تشخیص تکنولوژی‌ها کاربرد داره.

تشخیص تکنولوژی: ساختار الگوها و تطبیق پارامترها

ابزار یک دیتابیس از الگوهای تشخیص داره که برای هر تکنولوژی مجموعه‌ای از سرنخ‌ها تعریف شده — شامل هدرها، کوکی‌ها، بخش‌هایی از HTML، favicon hash، متاها و غیره. هر تکنولوژی می‌تواند چندین مسیر تشخیص داشته باشه تا قابلیت تطبیق در شرایط مختلف افزایش یابد.

پس از جمع‌آوری، ابزار تمامی تکنولوژی‌های احتمالی را تجمیع و بر اساس دسته‌بندی‌های از پیش تعریف‌شده (مثلاً CMS، Framework، Server، CDN، Database) نمایش می‌دهد. تطبیق نهایی بر مبنای وجود تعدادی از پارامترهای مشخص انجام می‌شود؛ هرچه سرنخ‌های مطابق بیشتر باشند، confidence score بالاتر رفته و تشخیص قطعی‌تر می‌شود.

{
    "GitLab": {
        "cats": [47],
        "favicon_MD5": "66f9a1c3f2cfd0df1b570990e86d3095",
        "favicon_hash": "1265477436",
        "description": "GitLab is a DevOps platform...",
        "icon": "gitlab.png",
        "headers": { "x-gitlab-meta": "", "X-Gitlab-Meta": "", "Set-Cookie": "_gitlab_session" },
        "cookies": { "_gitlab_session": "" },
        "meta": { "description": "GitLab Enterprise Edition" },
        "implies": "GitLab Inc.",
        "html": ["alt=\"GitLab Enterprise Edition\"","content=\"GitLab Enterprise Edition\"","process_gitlab_duo_question"],
        "website": "https://about.gitlab.com"
    }
}

ایجاد خروجی

  • خروجی به صورت CSV برای استفادهٔ سریع در Excel یا گزارش‌گیری.
  • اتصال مستقیم به پایگاه‌داده جهت ذخیرهٔ تاریخی و جستجوی پیشرفته (SQLite برای نمونه، PostgreSQL در تولید).
  • اتصال و ارسال داده‌ها به سامانه‌های Big Data و داشبوردهای تحلیلی (مثلاً ELK, Splunk یا پلتفرم‌های مشابه) برای نمایش زنده و تجزیه وتحلیل گسترده.
  • مشاهدهٔ نتایج و مدیریت اسکن‌ها از طریق وب‌اپلیکیشن داخلی با امکانات فیلتر، جستجو، و مدیریت کاربران.
  • درگاه API برای اتصال به سایر ابزارها و اتوماسیون سازمانی.

نتیجه‌گیری

این ابزار با ترکیب چند روش تشخیصی، ساختار ماژولار و قابلیت اجرا درون‌سازمانی، یه راهکار کامل برای شناخت دقیق زیرساخت وب و مدیریت ریسک فراهم می‌کنه. خروجی‌های منعطف و امکان اتصال به SIEM/BigData باعث میشه این داده‌ها به شکل عملی در فرایندهای امنیتی و عملیاتی سازمان وارد بشن. برای سوالات بیشتر و جزئیات فنی، لطفاً به سایت رسمی مراجعه کنید.