به عنوان یک کارشناس امنیتی باید تست نفوذ را با دنبال کردن فرآیندهای هک انجام دهید، درست به همان روشی که هکرها هنگام برنامهریزی برای حمله به یک سازمان از آن پیروی میکنند. به همین دلیل مهم است با اقداماتی که هکرها برای نفوذ به یک سیستم انجام میدهند، آشنا باشید.
Profiling
مرحله اول هک به عنوان مرحله شناسایی یا مرحله پروفایلسازی شناخته میشود. در این مرحله هکر از منابع اینترنتی برای کشف اطلاعاتی در ارتباط با سازمان استفاده میکند. چند نمونه از روشهایی که هکرها اطلاعات مربوط به سازمان را جمعآوری میکنند به شرح زیر است:
- وبسایت: هکر از وبسایت سازمان بازدید میکند تا نام مخاطب، شماره تلفن و آدرس ایمیلی را که میتواند در یک حمله مهندسی اجتماعی استفاده کند، دریافت کند. هکر همچنین به آگهیهای شغلی نگاه میکند تا بفهمد که سازمان چه نرمافزاری را اجرا میکند. به عنوان مثال، اگر سازمانی به دنبال یک مدیر Exchange Server است، به احتمال زیاد از سرور ایمیل مایکروسافت استفاده میکند.
- گوگل: هکر مدتی را صرف جستجوی در گوگل میکند تا بتواند اطلاعات خاصی که برای حمله به سازمان به آنها نیاز دارد را به دست آورد. در این مرحله، هکر از کلمات کلیدی گوگل معروف به "Google Hacks" برای مکانیابی اطلاعات خاص در مورد یک سازمان استفاده میکند. نمونههایی از کلمات کلیدی که میتوانید در گوگل برای انجام جستجو استفاده کنید عبارتند از site: که برای جستجوی محتوای یک وب سایت استفاده میشود، inurl: برای جستجوی محتوا در آدرس اینترنتی یک وبسایت استفاده میشود و filetype: که برای جستجوی یک فرمت فایلی خاصل مثل PDF یا Word استفاده میشود. نحوه استفاده از این کلمات کلیدی به شرح زیر است:
Password Site: glenceclarke.com
Filetype:pdf “network digram”
Inurl:intranet “human resources”
- پایگاه داده Whois : یکی دیگر از روشهای محبوبی که هکرها برای کشف اطلاعات یک سازمان استفاده میکنند، یافتن آدرسهای IP و سرورهای DNS است که یک سازمان استفاده میکند. برای یافتن این اطلاعات، هکر میتواند از وبسایت یا برنامه پایگاه داده whois برای جستجوی اطلاعاتی در ارتباط با سازمان و به دست آوردن لیست آدرسهای IP و سرورهای DNS استفاده کند. از سایتهای مطرح در این زمینه باید به https://www.whois.com/whois/ اشاره کرد. علاوه بر این، میتوانید با ابزار خط فرمان whois در کالی لینوکس به این اطلاعات دست پیدا کنید.
- نمایهسازی سامانه نام دامنه (DNS profiling) هنگامی که هکر بتواند آدرسهای IP که توسط سازمانی خریداری شده را به دست آورد، در مرحله بعد وارد فاز اسکن بعدی میشود، اما قبل از خروج از مرحله پروفایل، هکر سعی میکند اطلاعات را از سرور DNS سازمان بازیابی کند. به طور معمول کاری که هکرها در این مرحله انجام میدهند به شرح زیر است (لازم به توضیح است که هکرها از dig که یک برنامه محبوب لینوکس است برای پرسوجو از سامانه نام دامنه و بازیابی اطلاعات از DNS استفاده میکن)د:
- dig www.certworld.loc: این دستور آدرس www.certworld.loc را گزارش میکند.
- dig certworld.loc MX: این فرمان سرورهای ایمیل certworld.loc را پیدا میکند.
- dig certworld.loc NS: این فرمان سرورهای DNS را برای certworld.loc پیدا میکند.
- dig certworld.loc axfr: این دستور سعی میکند همه دادههای DNS را برای certworld.loc بازگرداند.
توجه داشته باشید که 85 درصد از فرآیند هک صرف مرحله پروفایلسازی و جمعآوری اطلاعاتی میشود که هکر میتواند در حمله از آنها استفاده کند.
نکته امتحانی: شناسایی انجام شده در مرحله پروفایلسازی به عنوان شناسایی غیرفعال شناخته میشود، زیرا هکر به سیستمهای سازمان دست نمیزند و تنها اطلاعات از منابع عمومی را استخراج میکند.
پروفایلسازی برای یک سازمان
در این تمرین، قصد داریم برخی از ابزارهای قابل استفاده در نمایهسازی را برای درک بهتر مطلب مورد استفاده قرار دهیم. برای این منظور قصد داریم از پایگاه داده whois و برخی از پروفایلهای DNS استفاده کنیم.
- به ماشین مجازی کالی لینوکس بروید و با کلیک روی دکمه دوم در نوار ابزار برنامه در سمت چپ، ترمینال را راهاندازی کنید.
- برای جستجو در وبسایتی مثل dcatt.ca، عبارت whois dcatt.ca را تایپ کرده و سپس کلید اینتر را فشار دهید. شما میتوانید نام هر وبسایتی که دوست دارید را وارد کنید.
- اطلاعات به دست آمده را بررسی کرده و به شرح زیر ثبت کنید:
- نام شرکت: _______________
- مسئول تماس: _________________
- شماره تلفن: _______________
- پست الکترونیک: _______________
- نشانی:_______________
- این اطلاعات چقدر به روز هستند؟ _________________
- سرورهای نام: _______________
4. اکنون مرورگرتان را باز کرده و به آدرس https://www.whois.com/whois/ بریود. نام دامنههای زیر را در کادر جستجو تایپ کنید و سپس برای مشاهده اطلاعات DNS روی دکمه جستجو کلیک کنید:
www.mheducation.com
www.dcatt.ca
انجام پروفایلسازی در ارتباط با DNS
در این بخش از تمرین، قصد داریم از ابزار dig در کالی لینوکس برای انجام پرسوجو روی سرور DNS و دریافت اطلاعاتی استفاده کنیم.
5. مطمئن شوید که ویندوز سرور و ماشین مجازی کالی لینوکس راهاندازی شدهاند.
6. به ماشین مجازی کالی لینوکس بروید و با کلیک روی نماد دوم از بالای لیست برنامههای موجود در سمت چپ صفحه، ترمینال اصلی را باز کنید.
7. برای مشاهده آدرس IP خود دستور ifconfig را تایپ کنید. آدرس IP خود را در اینجا ثبت کنید: _______________
8. Dig www.certworld.loc را تایپ کنید تا DNS آدرس IP www.certworld.loc را جستجو کنید. توجه داشته باشید که بخش پاسخ یک آدرس IP را در سمت راست نمایش میدهد. آدرس IP چیست؟ _________________
9. دستور فوق اطلاعات زیادی ارائه میکند که برخی از آنها مهم نیستند. برای آنکه تنها اطلاعات کاربردی را به دست آورید از دستور dig www.certworld.loc +short استفاده کنید. آیا فقط آدرس IP سرور وب را میبینید؟ _________________
10. برای دریافت لیستی از رکوردهای MX، کافی است دستور dig certworld.loc MX را تایپ کنید. توجه داشته باشید که بخش پاسخ دارای دو ورودی MX برای این شرکت است: www.certworld.loc و mail.certworld.loc. هر دو سرور ایمیل برای certworld هستند.
11. در قسمت بعدی، میتوانید آدرس IP این دو سرور ایمیل را ببینید. آدرس IP هر دو سرور پست الکترونیکی را یادداشت کنید: _______________ و _______________
12. برای اینکه بدانید کدام سیستم سرور DNS برای certworld است، dig certworld.loc NS را تایپ کنید. سرور DNS برای certworld کدام سیستم است؟ _________________
13. برای انجام یک فرآیند انتقال منطقهای سامانه نام دامنه با dig، دستور dig certworld.loc axfr را تایپ کنید تا بتوانید رکوردهای این شرکت را در سرور DNS مشاهده کنید. اگر انتقال منطقهای در سرور DNS ایمن شده باشد، ممکن است پیام "انتقال انجام نشد" دریافت کنید.
نکته: شناسایی انجام شده در مرحله اسکن و شمارش به عنوان شناسایی فعال شناخته میشود، زیرا هکر هنوز در حال جمعآوری اطلاعات است، اما اینکار را از طریق ارتباط با سیستمهای سازمان انجام میدهد.
اسکن و سرشماری
پس از جمعآوری آدرسهای IP در مرحله پروفایلسازی، هکر وارد مرحله اسکن میشود. هکر اکنون در حال انجام شناسایی است، اما شناسایی فعال در نظر گرفته میشود، زیرا ترافیکی را به سیستمهای سازمان ارسال میکند.
هدف از مرحله اسکن این است که با یافتن شماره پورتهای باز شده در سیستم، متوجه شوید چه سرویسهایی روی سیستم در حال اجرا هستند. هنگامی که هکر شماره پورتهای باز را پیدا کرد، سپس یک بنر از سیستم میگیرد که نسخه نرمافزاری را که در آن پورت اجرا میشود گزارش میدهد. دلیل اینکه هکر میخواهد نسخه نرمافزار را بداند این است که میتواند در مورد نحوه بهرهبرداری از آن نرمافزار تحقیق کند.
برای اطلاع از سرویسهای در حال اجرا در یک سیستم، هکر یک پورت اسکن سیستم را انجام میدهد که گزارش میدهد چه پورتهایی باز هستند. برای انجام اسکن پورت، هکر از برنامهای مانند nmap (خط فرمان) استفاده میکند. به عنوان مثال، میتوانید از nmap -sT 10.0.0.1 برای اسکن پورت در سیستم 10.0.0.1 استفاده کنید. شکل زیر خروجی فرمان nmap را نشان میدهد. بعداً در بخش «ابزارهای مورد استفاده برای ارزیابی امنیت» اطلاعات بیشتری در مورد اسکن پورت خواهید آموخت.
هنگامی که هکر یک پورت را اسکن کرد، سپس اقدام به گرفتن بنر میکند. با استفاده از دستوری مانند telnet 10.0.0.1 25 میتوانید بنر گرفتن را با telnet به یک پورت خاص در سیستم انجام دهید. در این مثال، شما در حال اتصال به پورت 25 در سیستم 10.0.0.1 هستید و سیستم با یک پیام "خوش آمدید" نسخه نرمافزار در حال اجرا در آن پورت را نشان میدهد. در شکل زیر توجه کنید که سرور IIS نسخه 6.0 را روی پورت TCP 80 اجرا میکند.
در این مرحله از فرآیند هک، هکر ممکن است سعی کند سرشماری در ارتباط با سیستم انجام دهد. به این معنا که اطلاعات بیشتری در مورد سیستم به دست آورد. هکر ممکن است سعی کند نام رایانه، نام کاربری یا حتی لیستی از گروهها را از سیستم دریافت کند. برای سرشماری سیستم میتوان از ابزارهایی مانند nmap استفاده کرد.
همچنین میتوان از نرمافزار نقشهبرداری شبکه برای شناسایی سیستمهای غیرایمن متصل به شبکه استفاده کرد. رویکرد فوق به عنوان تشخیص سیستم سرکش شناخته میشود.
برنامههای شبکهسازی مانند سرورهای وب، سرورهای FTP و حتی سیستمهای دارای دسکتاپ از راه دور از شماره پورتهایی استفاده میکنند که کلاینتها به آن متصل میشوند. به عنوان یک متخصص امنیتی، میتوانید با انجام اسکن پورت برای سیستمهایی که پورتهای آنها باز است، مکان این سیستمها را در شبکه پیدا کنید. نتایج اسکن پورت به شما میگوید چه پورتهایی روی کدام سیستمها باز هستند، و این به شما کمک میکند تا ارزیابی کنید که هکرها از چه راههایی میتوانند یک سیستم را به خطر بیاندازند، زیرا هر برنامه دارای آسیبپذیریهای متفاوتی است.
در طول سالها انواع مختلفی از ابزارهای اسکن پورت توسعه یافتهاند. لیست زیر برخی از ابزارهای اصلی اسکن پورت را نشان میدهد.
- TCP connect scan: اسکن اتصال TCP یک دستدهی سه طرفه با هر پورت انجام میدهد تا مشخص کند آیا درگاه باز است یا خیر. دستور nmap زیر نحوه انجام اسکن اتصال TCP را در شبکه 192.168.2.0 را نشان میدهد:
nmap -sT 192.168.2.0/24
- SYN scan (half open): از آنجایی که اسکن اتصال TCP یک دستدهی کامل سه طرفه انجام میدهد، ترافیک بیشتری نسبت به نیاز فعلی ایجاد میکند. میتوانید اسکن SYN را انجام دهید که به اسکن نیمه باز یا اسکن مخفی نیز معروف است، زیرا یک دستدهی کامل سه طرفه را کامل نمیکند. نرمافزار اسکن یک پیام SYN به پورت میفرستد و اگر سیستم مورد نظر با SYN-ACK پاسخ دهد، اتصال قطع میشود. ایده این است که اگر یک پاسخ برگشت دریافت شده، بنابراین پورت به احتمال زیاد باز است و نیازی به ارسال پیام ACK نهایی و برقراری یک دستدهی سه طرفه نیست. این اسکن همچنین به عنوان اسکن مخفیانه شناخته میشود، زیرا ترافیک کمتری به امید جلوگیری از شناسایی ایجاد میکند و در نتیجه شما به طور کامل اتصال به پورت را باز نمیکنید. دستور زیر نحوه انجام اسکن SYN با nmap را نشان میدهد:
nmap -sS 192.168.2.0/24
- Inverse scan: اسکن معکوس به این دلیل نامیده میشود که برخلاف آنچه انتظار دارید پاسخ میدهد. با اسکن معکوس، اگر پورت باز باشد، هیچ پاسخی ارسال نمیشود، اما اگر پورت بسته باشد، یک فرآیند تنظیم مجدد (RST) ارسال میشود.
انواع مختلفی از اسکن معکوس وجود دارد که شامل اسکن تهی است که بستهای را بدون تنظیم پرچم به پورت ارسال میکند و اسکن XMAS که بستهای را با مجموعه پرچمهای PSH، URG و FIN ارسال میکند. اسکن FIN بستهای را با پرچم FIN ارسال میکند. توجه داشته باشید که نام اسکن از پرچمهایی است که در بسته تنظیم شده است، اقتباس میشود. دستورات زیر اسکن FIN و اسکن XMAS را نشان میدهد که توسط nmap استفاده میشود:
Nmap -sF 192.168.2.0/24
Nmpa -sX 192.168.2.0/24
توجه داشته باشید که اسکن معکوس در سیستمهای ویندوزی کار نمیکند و در نتیجه بدون باز بودن هیچ پورتی پاسخ میدهد. به طور معمول، شما از اسکن SYN یا اسکن اتصال TCP در شبکههای ویندوزی استفاده خواهید کرد.
همچنین، میتوانید از nmap برای گرفتن بنر استفاده کنید که نه تنها پورت باز را به شما میگوید، بلکه نشاندهنده نسخه نرمافزاری است که روی پورت در حال اجرا است. باز هم، این برای هکرها این اطلاعات مفید است، زیرا آنها میدانند از چه سوء استفادههایی برای به خطر انداختن سیستم استفاده کنند. میتوانید از دستور nmap زیر برای اسکن پورت و یافتن نسخه نرمافزاری که روی پورتها اجرا میشود استفاده کنید:
nmap -sV 192.168.2.0/24
Nmap یک برنامه بسیار قدرتمند است که سوئیچهای زیادی دارد. برای مثال، میتوانید با استفاده از -p با nmap و سپس فهرست کردن پورتهایی که با کاما از هم جدا شدهاند، مشخص کنید که کدام پورتها را میخواهید اسکن کنید. همچنین میتوانید پورت منبع مورد استفاده برای انجام اسکن را با -g تغییر دهید و در صورت تمایل پورت 80 (وب سرور) یا پورت 53 را مشخص کنید. رویکرد فوق باعث میشود بستههای اسکن شده بهگونهای به نظر برسند که گویی از یک وب سرور یا سرور DNS میآیند. میتوانید از دستور زیر برای مکانیابی سیستمهای دسکتاپ راه دور و سرورهای SQL در شبکه استفاده کنید و پورت منبع بستههای اسکن را به گونهای تغییر دهید که انگار از یک وب سرور میآیند:
nmap -sS 192.168.2.0/24 -p 3389,1433 -g 80
اگر فردی نیستید که از خط فرمان استفاده کند، تعدادی از ابزارهای اسکن پورت مبتنی بر ویندوز در دسترستان قرار دارند. یک پورت اسکنر محبوب مبتنی بر ویندوز، SuperScan است. SuperScan عالی است، زیرا میتواند اتصال TCP یا اسکن SYN را انجام دهد، به شما امکان میدهد پورتهایی را که میخواهید اسکن کنید تغییر دهید و بنرها (نسخه نرمافزار در حال اجرا روی پورت را پیدا میکند) را دریافت کنید. تمرین زیر را بررسی کنید تا نحوه استفاده از SuperScan را ببینید.
استفاده از اسکنر پورت
در این تمرین از nmap برای اسکن پورت در شبکه استفاده میکنیم و متوجه شویم چه پورتهایی روی سیستمهای موجود در شبکه باز هستند. در این قسمت از تمرین، از Kali Linux برای انجام پورت اسکن در شبکه 10.0.0.0 استفاده میکنیم.
1. مطمئن شوید که ویندوز سرور، یک سرویس گیرنده ویندوزی و ماشینهای مجازی کالی لینوکس راهاندازی شدهاند.
2. به ماشین مجازی کالی لینوکس بروید و سپس یک ترمینال (خط فرمان) را باز کنید.
3. برای انجام اسکن اتصال TCP در سیستم ServerA، تایپ کنید.
nmap -sT 10.0.0.1
4. برای انجام اسکن اتصال TCP و تعیین اینکه میخواهید پورتهای 21، 25 و 80 را اسکن کنید، دستور زیر را تایپ کنید.
nmap -sT 10.0.0.1 -p 21,25,80
5. برای انجام اسکن SYN و تعیین اینکه میخواهید پورتهای 21، 25 و 80 را اسکن کنید، دستور زیر را تایپ کنید:
nmap -sS 10.0.0.1 -p 21,25,80
6. تفاوت بین اسکن اتصال TCP و اسکن SYN چیست؟
________________________________________________________________
7. برای انجام یک اسکن SYN در کل شبکه 10.0.0.0 برای یافتن مکان ماشینهایی که از Remote Desktop استفاده میکنند، دستور زیر را تایپ کنید:
nmap -sS 10.0.0.0/8 -p 3389
8. کدام سیستمها Remote Desktop را فعال کردهاند؟
اسکنر آسیبپذیری (Vulnerability Scanner): اسکنر آسیبپذیری کمی با اسکنر پورت متفاوت است. اسکنر آسیبپذیری سیستم را برای آسیبپذیریهای شناخته شده اسکن میکند و سپس مشکلات پیدا شده را گزارش میدهد. اسکنر آسیبپذیری پویشها را بر اساس یک پایگاه داده آسیبپذیری که دائماً در حال به روز رسانی است انجام میدهد. هنگامی که اسکن را انجام میدهید، اسکنر آسیبپذیری سطح وصله و پیکربندی سیستم(های) شما را با پایگاه داده آسیبپذیری مقایسه میکند تا ببیند آیا بهترین شیوهها دنبال شدهاند یا خیر (آسیبپذیری دارید).
شما میتوانید از هر یک از نرمافزارهای موجود برای اسکن آسیبپذیری یک سیستم یا شبکه استفاده کنید. در زیر برخی از اسکنرهای آسیبپذیری محبوب فهرست شدهاند:
- LANguard : یک محصول تجاری است که توسط GFI ایجاد شده است که کل شبکه را اسکن میکند و وصلههای از دست رفته، پورتهای باز شده و پیکربندی اشتباه سیستم را گزارش میدهد.
- Nessus: یک اسکنر آسیبپذیری محبوب است که قدمت زیادی دارد و میتوان از آن برای اسکن شبکه برای شناسایی آسیبپذیریها و وصلههای از دست رفته در سیستمها استفاده کرد.
Gaining Access/Initial Exploitation
زمانی که هکر بداند چه پورتهایی روی سیستم باز و در حال استفاده هستند و اطلاعاتی در ارتباط با نرمافزارها و نسخه آنها که در حال استفاده از پورتها هستند به دست آورد، در ادامه به سراغ نحوه بهرهبرداری از آن نرمافزارها خواهد رفت. این فرآیند به همین سادگی که اشاره کردیم انجام میشود و حتا برای پیدا کردن اکسپلویتها در محصولات محبوب کافی است از گوگل همراه با واژه exploit استفاده کنید تا به اطلاعات کاملی در این زمینه دست پیدا کنید.
هکر میتواند از هر نوع حملهای برای بهرهبرداری اولیه از آسیبپذیریها استفاده کند تا به سیستم دسترسی پیدا کند، اما روشهای رایج برای دستیابی به یک سیستم حملات سرریز بافر و انواع دیگر حملات تزریقی است.
هنگامی که هکر به سیستم دسترسی پیدا میکند، ممکن است نیاز به تشدید حمله امتیاز داشته باشد. اگر هکر سیستمی را در معرض خطر قرار دهد و دسترسی مدیریتی به سیستم نداشته باشد، این حمله ضروری است. هکر میتواند یک حمله افزایش امتیاز را برای دستیابی به قابلیتهای مدیریتی انجام دهد. راههای مختلفی وجود دارد که هکرها میتوانند یک حمله افزایش امتیاز را انجام دهند. به عنوان مثال، آنها میتوانند هش رمز عبور را از پایگاه داده SAM سیستم ویندوز دریافت کنند یا با بارگذاری یک DLL مخرب در همان فضای آدرس به عنوان فرآیند با دسترسی در سطح سیستم، تزریق DLL را انجام دهند.
حفظ دسترسی / ماندگاری (Maintaining Access/Persistence)
هنگامی که هکر به سیستمی دسترسی پیدا کردند، در ادامه به دنبال آن خواهند بود که دوباره به سیستم دسترسی پیدا کند. پایداری یا ماندگاری به این معنا است که هکر میتواند بعداً به سیستم دسترسی پیدا کند، هکر یک درب پشتی ایجاد میکند، مانند ایجاد یک حساب کاربری مدیریتی یا تزریق روتکیت یا ویروس تروجان در سیستم.
Covering Tracks/Cleanup
مرحله نهایی در فرآیند هک، پوشاندن مسیرها و ردپاها است. هکرها میدانند که بیشتر متخصصان امنیتی ویژگیهای حسابرسی یا ثبتنام را در سیستمهای خود پیادهسازی میکنند و هر فعالیت انجام شده را ثبت میکنند. پس از اینکه هکرها فعالیت مشکوک خود را انجام دادند، فایلهای گزارش را در سیستم پیدا میکنند و آن فایلها را حذف میکنند یا ورودیهایی را از گزارشهایی که با فعالیت هکرها سروکار دارند حذف میکنند. بنابراین بسیار مهم است که متخصصان امنیتی از فایلهای گزارش خود محافظت کنند تا اطمینان حاصل شود که هیچ کس نمیتواند آنها را از بین ببرد.
در پایان تست نفوذ، فرآیند پاکسازی انجام میشود. به این صورت که اگر درهای پشتی روی سیستم نصب شدهاند، مانند نصب یک سرویس پس زمینه یا ایجاد یک حساب کاربری درب پشتی، پس از پایان تست نفوذ باید آن موارد حذف شوند. شما نمیخواهید پس از انجام تست نفوذ، مسئول آسیبپذیر کردن سیستم شناخته شوید.
نکته: آزمون سکیوریتی پلاس، به دنبال آن نیست که فرآیند هک را به شکل فهرستوار حفظ کرده باشید، بلکه مهم این است که هنگام انجام تست نفوذ، فرآیند هک را درک کنید تا بتوانید آزمایش خود را با استفاده از همان روشی که یک هکر برای هک کردن یک سازمان استفاده میکند، اجرا کنید.