مبحث یکم : مقدمه و تاریخچه
مبحث دوم: مراحل نفوذ کردن / جلوگیری از نفوذ
مبحث سوم: حملات شبکه ای
مبحث چهارم - کار عملی
مبحث پنجم - DHCP
مبحث ششم - وب و حملات مطرح در آن
مبحث هفتم - حملات DoS
مبحث هشتم - سیستم عامل
مبحث نهم - مهندسی اجتماعی
مبحث دهم - Vulnerability (آسیب پذیری)

تمرین عملی

تمرین عملی: google.com را باز کنید و Source آن را ببینید. برای این کار بعد از اینکه صفحه گوگل بالا آمد بر روی یک جایی در صفحه (که عنصری در آن وجود ندارد) راست کلیک کنید و گزینه View page source را انتخاب کنید. کدهای زیادی را برای همین صفحه ساده می بینید، که برخی از آنها برای پیغام ها، منوها است و برخی دیگر مربوط به کنترل های امنیتی می شوند. از آن جایی که پورت 80 در وب سرور بی چون و چرا در اختیار جهانیان است! باید کنترل های امنیتی انجام شوند. در خیلی از موارد می توان (مخصوصاً قبلاً) با بررسی Source صفحه، روش های bypass آن را مشخص کرد (مثلاً آدرس فایل ها را می توان در آن یافت، مثلاً یک فایل Configuration و ….). یکی از نکاتی که در بحث وب مطرح است پردازش های client-side است. به عنوان مثال زبان برنامه نویسی Java Script برای این کار استفاده می شود.

در اوایل مطرح شدن وب، بحث این بود که همه کارها در خود server انجام می­گرفت. یعنی همه اطلاعات به سمت سرور می رفت پردازش می شد و برمی گشت. اما بعدها برای اینکه کارایی وب بالاتر برود، یک سری از امور را به client سپردند. مثلاً فرض کنید یک قانون داریم که فیلد نام کاربری نمی توند بیشتر از 10 کاراکتر باشد. حال شما نام کاربری خود را وارد می کنید و اینتر می زنید و می بینید که مرورگر شروع به فعالیت ارسال اطلاعات می کند یعنی این اطلاعات در حال ارسال هستند به سرور تا سرور بررسی کند. در این جا کارها دارد server-side انجام می شود. اما یک زمانی هم است که مثلاً 11 کاراکتر وارد کرده ایم و به محض اینکه اینتر را می زنیم یک پیغام نمایش داده می شود که مثلاً نام کاربری بیشتر از 10 کاراکتر است. در این جا بدون اینکه اطلاعاتی به سمت سرور برود و برگردد کار انجام شد.

نکته: نوع مرورگر در نحوه ارتباط مؤثر است. یعنی یک سری از داده هایی که سرور بر می­گرداند با توجه به نوع مرورگر مان بر می­گرداند. مثلاً در لینوکس مرورگرهای تحت متن هم داریم که دیگر در آن عکس ها load نمی شود. از جمله اطلاعاتی که در هدر پروتکل HTTP قرار داده می شود نوع browser است که به سمت سرور فرستاده می شود. کارهایی که در سمت client انجام می شود، مرورگر باید قابلیت انجام آن را داشته باشد. برای همین است که برخی از سایت ها تأکید می کنند که مثلاً با مرورگر (Internet Explorer) IE سایتشان را مشاهده کنید.

به همین ترتیب سرور از قابلیت هایی که در سمت client و مرورگر client وجود دارد استفاده می کند. مثلاً چک کردن اینکه مقدار یک فیلد بزرگ تر از 10 کاراکتر است را در سمت client می تواند انجام دهد.

مرورگر اطلاعات مربوط به هر سروری که به آن وصل می شود را در پوشه ای ذخیره می کند. اطلاعاتی مثل: آخرین بار چه صفحه ای بوده است، چه کدهایی اجرا شده، طول ورودی به چه مبنایی بررسی شود و ….

وقتی پردازش محول می شود به سمت client، خوب client می تواند پردازشش را تغییر دهد. شما admin سیستم خود هستید می توانید به هر فایل، داده، حافظه و … دسترسی داشته باشید. در نتیجه می توانید این داده ای (مثلاً مقادیر کوکی) را که در سیستم تان ذخیره شده است را تغییر می دهید. مثلاً تا به حال user name نوشته شده بود x، شما آن را به y تبدیل می کنید. سروری که به طور ضعیف پیکربندی شده باشد و همه پردازش ها را به client محول کرده باشد خیلی راحت bypass می شود. در مثال دیگر مثلاً می توانید کد این قسمت هایی از صفحه وب که با شما تعامل دارند مثل Pop-up window را تغییر دهید و حالا به گونه ای دیگر با سرور ارتباط برقرار کنید. به عنوان مثال، یک سایت که دارای صفحه login است را باز کنید. مثلاً اگر سایت ticket2.raja.ir/login.aspx?ReturnUrl=%2f را باز کنید و در قسمت نام کاربری آن که باید یک ایمیل وارد کنید داده دیگری وارد کنید با پیغام “قالب نام کاربری (پست الکترونیکی) صحیح نمی باشد” مواجه می شود که این مسأله نمونه ای از پردازش سمت client است بدون اینکه اطلاعات به سمت سرور ارسال شود، در سمت client فیلد نام کاربری بررسی شد.

بسته به مرورگری که استفاده می کنید، یک سری قابلیت هایی را دارید. مثلاً مرورگر شما ممکن است جاوا اسکریپت را پشتیبانی نکند، و از طرف دیگر با توجه به مرورگرتان ممکن است بتوانید به فایل های temp دسترسی پیدا کنید یا خیر. پس در بحث Pen. test مرورگری را انتخاب می کنید که قابلیت های مورد نیاز را داشته باشد. (مثلاً این قابلیت را داشته باشد که بتوان داده ای را در داخل کد فرستاد به سمت سرور و ….). در backtrack هم یک سری مرورگر قرار داده شده است که برخی از قابلیت ها را در اختیارتان قرار می دهد. مثلاً مرورگری وجود دارد که انواع و اقسام plugin، تغییر دهنده ی source، تغییر دهنده cookie و … را در اختیار قرار می دهد.

همان سایت قبلی را با مرورگر Google Chrome باز کنید. بر روی textbox مربوط به نام کاربری کلیک راست کنید و گزینه Inspect element را انتخاب کنید. در پائین صفحه می توانید Source مربوط به textbox را مشخص می کند. در این کد می توانید مشخصه های مربوط به textbox را مشاهده کنید. البته برای تست می توانید روی یکی از این مشخصه ها مثلاً سایز دوبار کلیک کنید و مقدار آن را تغییرز دهید (8pt به 20pt) و تغییرات را مشاهده کنید.

می توان تک تک بررسی هایی که در سمت client انجام می شود را پیدا کرد و تغییرات مورد نظر خود را اعمال کرد. مثلاً محدودیت وجود @ در نام کاربری وجود دارد. می توان این محدودیت را برداشت. محدودیت وجود داشت که چهار کاراکتر وجود داشته باشد، آن را به 100 تغییر می دهیم. پس وقتی یک کاری به سمت client سپرده می شود هم مزیت دارد و هم عیب که در بالا به آنها اشاره شد.

بحث دیگر داده هایی است که در سمت client ذخیره می شود. این یعنی سرور علاوه بر واگذار کردن یک سری از پردازش ها به client، یک سری از اطلاعات کاربری را هم در سیستم خود کاربر save می کند. مقوله cookie یکی از مباحث مطرح در وب است. cookie اطلاعاتی است که به صورت فایل های text خیلی ساده در سیستم شما توسط سرور قرار داده می شود. مثلاً فرض کنید یک سایتی دارید که امکان انتخابی کردن (customize) پس زمینه (background) را برای کاربرانش فراهم می کند. یعنی شما با نام کاربری x، login می کنید. انتخاب می کنید که پس زمینه شما قرمز باشد. یک نفر دیگر login می کند و انتخاب می کند پس زمینه سفید باشد. این اطلاعات در کجا ذخیره می شوند؟ دفعه ی بعد که x ، وارد می شود می بیند که همان پس زمینه انتخابی نمایش داده می شود. چه راهکاری برای این قضیه وجود دارد؟ این مسئله می تواند سمت client یا سرور انجام شود. در سمت سرور می توان یک پایگاه داده داشت به طوری که در آن ذخیره می کنیم هر کاربر چه رنگ پس زمینه ای را دوست دارد. خوب اگر این داده ها زیاد باشد و کاربران هم تعدادشان زیاد باشد باید کلی داده نه چندان مهم و مفید در سرور ذخیره گردد. در سمت client این گونه است که داده ها در client ذخیره می شوند به client گفته می شود هر وقت که خواستی login بشوی یک سری اطلاعات را باید به سرور بفرستی برای مثال اینکه رنگ پس زمینه ات چه شود و …. این قبیل اطلاعات (که جدا هستند از اطلاعات مهمی مثل نام کاربری و پسورد که در سرور ذخیره می شوند) توسط مرورگر شما در فایل های cookie ذخیره می شود. client می تواند  Cookieرا تغییر دهد.

در مرورگر chrome از قسمت setting و بعد در صفحه ای که باز می شود کلیک بر روی show advanced setting …. و سپس از قسمت privacy کلیک بر روی دکمه content setting …. که در این پنجره می توان تنظیمات مربوط به cookie را انجام داد. می توان بر روی دکمه all cookies and site data …. کلیک کرد و cookieهای ذخیره شده را مشاهده کرد. در اینجا می توان بر روی یک cookie دابل کلیک کرد و اطلاعاتی که ذخیره می کند را مشاهده کرد. این اطلاعات شامل نام، content، تاریخ اعتبار و … است. یک سری از این cookieها می توانند اطلاعات حساسی مثل اطلاعات session را داشته باشند. پس اگر من بتوانم cookieهای سیستم شما را بردارم می توانم از آنها استفاده کنم و در سیستم خودم شبیه به آن چیزی که در سیستم شماست set بکنم. ممکن است بتوانم خودم را جای شما جا بزنم. خیلی از حملاتی که تحت وب علیه clientها انجام می شود، این است که می آیند و cookieهای آنها را می دزدند.

اینکه برخی وقت ها پسورد در مرورگر آورده می شود چگونه است؟ می تواند در کوکی باشد و یا قابلیت مرورگر شما باشد. اما اینکه شما وقتی login می کنید و تیک remember password را می زنید، در cookie یک سری مقادیر set می شود که session شما را باز نگه می دارد که اگر مرورگر بسته شود و دوباره کاربر بیاید بتواند login کند. البته این کوکی ها هستند که خطرناک می شوند.

در temporary internet fileها، یک سری از فایل ها cache می شود، مثلاً عکس یک سایت به جای این که هر بار از سرور load شود، در پوشه ذکر شده ذخیره می­شود و در زمان های دیگر که می خواهیم آن سایت را ببینیم از آن استفاده می کند (البته تا یک زمان و شرایط مشخص مثلاً تا زمانی که عکس تغییر نکرده و ….). با توجه به خلاقیت نفوذگر اگر نیاز باشد از اطلاعات این پوشه نیز می توان استفاده کرد مثلاً یک عکس را تغییر داد به عکسی که در آن یک لینک نوشته شده است و گفته شده است که این لینک را بازدید کنید حال وقتی کاربر این عکس را می بیند …..

می توان یک صفحه (page) وب را به طور کامل در کامپیوتر ذخیره کرد و با راست کلیک روی فایل ذخیره شده و انتخاب open with” notepad آن را باز کرد و تغییرات مورد نظر خود را اعمال کرد.

گوگل یکی از ابزارهای پرقدرت مورد استفاده هکرهاست. تا حدی که بحث Google hacking مطرح می شود. نفوذگر برای انجام کارهای خود از Google استفاده می کند. مثلاً به دنبال سایتی است که صفحه login.php داشته باشد در گوگل این عبارت را جستجو می­کند: inurl: login.php و با جستجو کردن عبارت site:ir تمام سایت های با دامنه ir را می آورد. در Advanced search گوگل هم می توان گزینه های مورد نظر خود را جستجو کرد. کتابی نیز به نام هک های گوگل وجود دارد که ترجمه هم شده است.

این که گوگل این امکان را در اختیار ما قرار می دهد خوب است یا بد؟ برای جلوگیری باید چه کاری کرد؟ می توان Default را عوض کرد. برای مثال هر جا که word press نصب می شود (word press یک سیستم مدیریت محتوا است تحت وب که خیلی از سایت ها از آن استفاده می کنند) یک شاخه به نام wp-content ایجاد می شود که فایل های اصلی imageها، Scriptها و …. در آن شاخه قرار می گیرد. پس ما اولین چیزی که از این سیستم می فهمیم این است که اولاً سیستم word press است. دوماً که wp-content دارد و می توان در این پوشه به دنبال داده مورد نظر خود باشیم. یکی از راه ها این است که default را عوض کنیم. به جای wp-content، نام دیگری بگذاریم. حال اگر کسی در گوگل جستجو کرد (به روش ذکر شده در بالا) دیگر سایت ما لیست نمی شود. راه دوم نحوه ی کارکرد موتورهای جستجو است. موتورهای جستجو یک سری موتور دارند (spiderها، کروئل ها) که با استفاده از آنها لینک های موجود در سایت ها را به دست می آورند و سعی می کنند یک ساختاری از سایت ها به دست بیاورند. برخی از سایت ها یک فایل با نام robot.txt دارند. این موتورهای جستجو به این فایل ها نگاه می کنند. در این فایل ها در جلوی یک سری از لینک ها Allow نوشته شده و یک سری از لینک ها disallow. این اجازه دادن یا ندادن را admin سایت مشخص می کند. بدین ترتیب به موتورهای جستجو می گوید که در کدام شاخه ها جستجو را انجام دهند و در کدام شاخه جستجو را انجام ندهند. موتورهای جستجو نیز موظفند از این قواعد تبعیت کنند. پس روشی که برای جلوگیری از مورد جستجو قرار گرفتن وجود دارد این است که یک فایل به نام robot.txt در سایت خود بنویسیم و به آن بگوییم در کدام شاخه ها برود و در کدام شاخه ها نرود. مشکل این روش چیست؟ خود  robot.txt می تواند باعث آشکار شدن شاخه های موجود در وب سایت شود. پس باید به یک مصالحه برسیم بین اینکه یک کروئل سایت ما را پیدا کند/ یا نکند و اینکه یک شاخه فاش نشود (یعنی خود شاخه را قرار می دهیم اما آن را در robot.txt نمی گذاریم و البته لینک های آن را هم از سایتمان برمی داریم).

برای مثال برای مشاهده فایل robot.txt در گوگل به آدرس www.google.com/robot.txt بروید.

اسکرول به بالا