بسم الله الرحمن الرحیم
وب سرور اثر انگشت چیست؟
انگشت نگاری وب سرور وظیفه شناسایی نوع و نسخه وب سروری رو داره که هدف روی آن اجرا می شه. در حالی که انگشت نگاری وب سرور اغلب در ابزارهای تست خودکار محصور می شه.
پیدا کردن دقیق نوع وب سروری که یک برنامه روی آن اجرا می شود ، میتواند تسترهای امنیتی را قادر بسازه تا تشخیص بده که آیا برنامه در برابر حمله آسیبپذیر است یا خیر. به ویژه، سرورهایی که نسخههای قدیمیتر نرمافزار را بدون وصلههای امنیتی بهروز اجرا میکنند، میتوانند در معرض سوء استفادههای خاص نسخه شناخته شده باشند.
تکنیک های مورد استفاده برای انگشت نگاری وب سرور شامل گرفتن بنر، ایجاد پاسخ به درخواست های نادرست، و استفاده از ابزارهای خودکار برای انجام اسکن های قوی تر است که از ترکیبی از تاکتیک ها استفاده می کند. فرض اساسی که همه این تکنیک ها بر اساس آن عمل می کنند یکسان است. همه آنها تلاش می کنند تا برخی از پاسخ ها را از وب سرور استخراج کنند که سپس می تواند با پایگاه داده ای از پاسخ ها و رفتارهای شناخته شده مقایسه شود و بنابراین با یک نوع سرور شناخته شده مطابقت داده شود.
گرفتن بنر:
گرفتن بنر با ارسال یک درخواستHTTP به وب سرور و بررسی هدر پاسخ آن انجام می شود. این را می توان با استفاده از ابزارهای مختلفی از جملهtelnet برای درخواست هایHTTP یا openssl برای درخواست های SSL انجام داد.
به عنوان مثال، در اینجا پاسخ به یک درخواست از یک سرور آپاچی است.
HTTP/1.1 200 OK
Date: Thu, 05 Sep 2019 17:42:39 GMT
Server: Apache/2.4.41 (Unix)
Last-Modified: Thu, 05 Sep 2019 17:40:42 GMT
ETag: "75-591d1d21b6167"
Accept-Ranges: bytes
Content-Length: 117
Connection: close
Content-Type: text/html
در این مثال ها، نوع و نسخه سرور به وضوح آشکار می شود. با این حال، برنامه های کاربردی آگاه از امنیت ممکن است با تغییر هدر، اطلاعات سرور خود را مبهم کنند. به عنوان مثال، در اینجا گزیده ای از پاسخ به درخواست یک سایت با هدر اصلاح شده است:
HTTP/1.1 200 OK
Server: Website.com
Date: Thu, 05 Sep 2019 17:57:06 GMT
Content-Type: text/html; charset=utf-8
Status: 200 OK
در مواردی که اطلاعات سرور مبهم است، آزمایش کنندگان ممکن است بر اساس ترتیب فیلدهای سرصفحه، نوع سرور را حدس بزنند. توجه داشته باشید که در مثال آپاچی بالا، فیلدها از این ترتیب پیروی می کنند:
با این حال، در هر دو مثال nginx و سرور مبهم، فیلدهای مشترک از این ترتیب پیروی می کنند:
آزمایش کنندگان می توانند از این اطلاعات برای حدس زدن اینکه سرور مبهم nginx است استفاده کنند. با این حال، با توجه به اینکه تعدادی از وب سرورهای مختلف ممکن است ترتیب فیلدهای یکسانی را به اشتراک بگذارند و فیلدها قابل تغییر یا حذف باشند، این روش قطعی نیست.
ارسال درخواست های نادرست
سرورهای وب ممکن است با بررسی پاسخ های خطای آنها و در مواردی که سفارشی نشده اند، صفحات خطای پیش فرض آنها شناسایی شوند. یکی از راههای وادار کردن سرور به ارائه این موارد، ارسال درخواستهای عمدا نادرست یا نادرست است.
به عنوان مثال، در اینجا پاسخ به درخواست روش غیر موجود بابا نوئل از یک سرور آپاچی است.
GET / SANTA CLAUS/1.1
HTTP/1.1 400 Bad Request
Date: Fri, 06 Sep 2019 19:21:01 GMT
Server: Apache/2.4.41 (Unix)
Content-Length: 226
Connection: close
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
</body></html>
Here is the response to the same request from nginx.
GET / SANTA CLAUS/1.1
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.17.3</center>
</body>
</html>
در اینجا پاسخ به همان درخواست از lighttpd است.
GET / SANTA CLAUS/1.1
HTTP/1.0 400 Bad Request
Content-Type: text/html
Content-Length: 345
Connection: close
Date: Sun, 08 Sep 2019 21:56:17 GMT
Server: lighttpd/1.4.54
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>400 Bad Request</title>
</head>
<body>
<h1>400 Bad Request</h1>
</body>
</html>
استفاده از ابزارهای اسکن خودکار: اثر انگشت وب سرور معمولا به عنوان ابزار اسکن خودکار عمل میکند. ابزارهای خودکار می توانند پاسخ های سرورهای وب را بسیار سریعتر از آزمایش دستی مقایسه کنند و از پایگاه داده های بزرگی از پاسخ های شناخته شده برای شناسایی سرور استفاده کنند. به این دلایل، ابزارهای خودکار احتمال بیشتری برای تولید نتایج دقیق دارند.
در اینجا برخی از ابزارهای اسکن رایج مورد استفاده که شامل عملکرد انگشت نگاری وب سرور هستند، آورده شده است.
Netcraft•، یک ابزار آنلاین که وب سایت ها را برای اطلاعات اسکن می کند، از جمله وب سرور.
Nikto•، یک ابزار اسکن خط فرمان منبع باز.
Nmap•، یک ابزار خط فرمان منبع باز که دارای رابط کاربری گرافیکی، Zenmap نیز می باشد.
نکته : اطلاعات سرور افشا شده لزوماً به خودی خود یک آسیب پذیری نیست، اما اطلاعاتی است که می تواند به مهاجمان در سوء استفاده از آسیب پذیری های دیگر که ممکن است وجود داشته باشد کمک کند. اطلاعات سرور افشا شده همچنین میتواند مهاجمان را به یافتن آسیبپذیریهای سرور خاص نسخهای که میتواند برای بهرهبرداری از سرورهای وصلهنشده استفاده شود، سوق دهد. به همین دلیل توصیه می شود اقدامات احتیاطی انجام شود. این اقدامات عبارتند از:
· پنهان کردن اطلاعات وب سرور در هدرها، مانند ماژولmod_headers Apache.
· استفاده از یک سرور پراکسی معکوس سخت شده برای ایجاد یک لایه امنیتی اضافی بین وب سرور و اینترنت.
· اطمینان از به روز نگه داشتن وب سرورها با آخرین نرم افزارها و وصله های امنیتی.
اثر انگشت وب سرور
زیرساخت پشت یک برنامه وب چیزی است که از آن پشتیبانی می کند و امکان کارکرد را فراهم می کند. این شامل وب سروری می شود که مستقیماً در اجرای هر برنامه ای نقش دارد. با دانستن اینکه چه نوع وب سروری در پشت برنامه قرار دارد، نشان می دهد که سیستم عاملی که روی سرور اجرا می شود و آسیب پذیری های شناخته شده ای که ممکن است وجود داشته باشد، این امکان را به شما می دهد. شما ارزیابی کنید که کدام اکسپلویت های مناسب برای حمله به هدف هستند.
امروزه در بازار عرضه کنندگان و نسخه های مختلفی از سرورهای وب وجود دارد که چند نمونه از آنها می باشد:
• سرور HTTP آپاچی (توسعه یافته توسط بنیاد نرم افزار آپاچی)
• آپاچی تامکت (توسعه یافته توسط بنیاد نرم افزار آپاچی)
• خدمات اطلاعات اینترنتی (IIS، توسعه یافته توسط مایکروسافت)
دانستن نوع وب سرور کمک قابل توجهی می کند و همچنین می تواند مسیر حمله را تغییر دهد. این اطلاعات را می توان با ارسال دستورات خاص به وب سرور و تجزیه و تحلیل خروجی پاسخ به دست آورد، زیرا ممکن است هر نسخه از وب سرور پاسخ متفاوتی بدهد.
در زیر چند ابزار برای انجام انگشت نگاری وب سرور آورده شده است.
لیست ابزارهای تست شده و توصیف شده توسط هکرها
• ابزار انگشت نگاری
روش دستی
ساده ترین و اساسی ترین راه برای شناسایی وب سرور، نگاهی به قسمت Server در هدر پاسخ HTTP است.
برای این مثال ها یک ماشین مجازی (VM) با IP 192.168.1.3 ایجاد کرده ایم.
درخواست:
$ nc 192.168.1.3 80
HEAD / HTTP/1.1
Reply:
Web server used Apache 2.2
HTTP/1.1 200 OK
Date: Mon, 02 May 2020 02:53:29 GMT
Server: Apache/2.4.38 (Debian)
Content-Length: 1179
Connection: close
Content-Type: text/html
Reply from Microsoft IIS 7.5
HTTP/1.1 200 OK
Server: Microsoft-IIS/7.5
Date: Mon, 02 May 2020 02:53:29 GMT
Content-Type: text/HTML
Accept-Ranges: bytes
Content-Length: 7369
روش دیگر ارسال یک درخواست نامعتبر به وب سرور است که باعث ایجاد صفحه خطای حاوی نسخه وب سرور در هدر پاسخ و/یا در بدنه HTML می شود.
$ nc 192.168.1.3 80
HEAD / HTTP/4.0
HTTP/1.1 400 Bad Request
Date: Fri, 06 Mar 2020 16:01:08 GMT
Server: Apache/2.4.38 (Debian)
Content-Length: 309
Connection: close
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.4.38 (Debian) Server at hackerday.station Port 80</address>
</body></html>
با این حال، این روش آزمون دقت محدودی دارد. چندین تکنیک وجود دارد که به وب سایت اجازه می دهد رشته بنر را مبهم یا تغییر دهد. برای مثال، ممکن است پاسخ زیر را دریافت کنید
403 HTTP/1.1 Forbidden
Date: Mon, 16 feb 2003 02:41: 27 GMT
Server: Unknown-Webserver
Connection: close
روش خودکار
وب سرور انگشت نگاری را می توان با استفاده از ابزارهای خودکاری که برای این منظور طراحی شده اند نیز انجام داد.
ابزارهای خودکار در شناسایی نسخه وب سرور بسیار دقیق تر هستند، زیرا آنها نه تنها بر اساس خواندن هدر پاسخ هستند، بلکه رفتار آن را تجزیه و تحلیل کرده و با پایگاه داده امضای آن مقایسه می کنند.
یکی از محبوب ترین ابزارهاhttprint است که برای لینوکس و ویندوز موجود است.
وب سرور انگشت نگاری را می توان با استفاده از ابزارهای خودکاری که برای این منظور طراحی شده اند نیز انجام داد.
ابزارهای خودکار در شناسایی نسخه وب سرور بسیار دقیق تر هستند، زیرا آنها نه تنها بر اساس خواندن هدر پاسخ هستند، بلکه رفتار آن را تجزیه و تحلیل کرده و با پایگاه داده امضای آن مقایسه می کنند.
یکی از محبوب ترین ابزارها httprint است که برای لینوکس و ویندوز موجود است.
httprint v0.301 (beta) - web server fingerprinting tool
(c) 2003-2005 net-square solutions pvt. ltd. - see readme.txt
http://net-square.com/httprint/
httprint@net-square.com
Finger Printing on http://192.168.1.3:80/
Finger Printing Completed on http://192.168.1.3:80/
--------------------------------------------------
Host: 192.168.1.3
Derived Signature:
Apache/2.4.38 (Debian)
811C9DC568D17AAE811C9DC5811C9DC5811C9DC5505FCFE84276E4BB630A04DB
0D7645B5811C9DC5811C9DC5CD37187C811C9DC5811C9DC5811C9DC5811C9DC5
68D17AAEE2CE6923E2CE6923811C9DC5E2CE6927811C9DC568D17AAE811C9DC5
6ED3C29568D17AAE811C9DC5E2CE6923E2CE692368D17AAE68D17AAEE2CE6923
E2CE692368D17AAE811C9DC5E2CE6927E2CE6923
Banner Reported: Apache/2.4.38 (Debian)
Banner Deduced: Lotus-Domino/6.x
Score: 77
Confidence: 46.39
--------------------------------------------------
Httprint can print a html report for easy reading.
Httprint می تواند یک گزارش html را برای خواندن آسان چاپ کند.
?
گزارش httprint در html
حتی با انجام اسکن پورت باNmap با استفاده از پارامتر -sV میتوان نسخه سرور را در میزبان راه دور بازیابی کرد.
$ nmap 192.168.1.3 -sV
Starting Nmap 7.80 ( https://nmap.org ) at 2020-03-06 16:25 CET
Nmap scan report for hackerday.station (192.168.1.3)
Host is up (1.0s latency).Not shown: 994 closed ports
PORT STATE SERVICE VERSION
21/tcp open ftp
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
80/tcp open http Apache httpd 2.4.38 ((Debian))
514/tcp filtered shell
3306/tcp open mysql MySQL (unauthorized)
مداخله در سطح زیرساخت:
• هدرهای وب سرور را مبهم کنید
• از وب سرور پشت پراکسی معکوس / WAF محافظت کنید.
* اثر انگشت NMAP چیست؟
تکنیک انگشت نگاری Nmap OS از پروب های TCP، UDP و ICMP استفاده می کند که به مجموعه ای از پورت های سنتی روی دستگاه هدف ارسال می شوند. این پروب ها برای بهره برداری از ابهامات موجود در پروتکل های استاندارد طراحی شده اند. پس از دریافت پاسخ Nmap، به گوش دادن ادامه می دهد.
انگشت نگاری IdentoGO برای چیست؟
IDEMIA طیف گسترده ای از خدمات مرتبط با هویت را ارائه می دهد، اما خدمات اصلی ما خدمات ضبط و انتقال اثر انگشت ایمن ما است که در مکان های مختلف مناسب برای استخدام، صدور گواهینامه، صدور مجوز و سایر نیازهای تأیید در دسترس است.
گرد اورنده : محمد درویشی بهلولی-