<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های مسعود خدادادی</title><link>https://virgool.ir/feed/@masoud.xpress</link><description>دانشجوی کارشناسی مهندسی کامپیوتر، برنامه نویس و علاقمند به توسعه برنامه های تحت وب</description><language>fa</language><pubDate>2026-11-10 21:11:39</pubDate><image><url>https://files.virgool.ir/upload/users/90584/avatar/i6TXU7.png</url><title>مسعود خدادادی</title><link>https://virgool.ir/@masoud.xpress</link></image><item><title>۱۰ آسیب پذیری جدید و ناشناخته در برنامه های تحت وب</title><link>https://virgool.ir/@masoud.xpress/۱۰-آسیب-پذیری-جدید-و-ناشناخته-در-برنامه-های-تحت-وب-bsowa9gdjn7y</link><description>اینترنت از زمان ابداع آن دنیایی ناامن بوده و پروتکل هایی که در بستر آن شکل گرفته اند، اکثرا آسیب پذیری هایی داشته اند. در این مقاله به بررسی آسیب پذیری های جدید، ناشناخته و کمتر شناخته شده ی دنیای برنامه های تحت وب می پردازیم.۱- آسیب پذیری NoSQL Injectionآسیب پذیری NoSQL Injection، به هکرها اجازه می دهد تا با استفاده از ورودی های کاربر، روی پایگاه داده هدف کنترل داشته باشند. هکرها با استفاده از این آسیب پذیری می توانند:به داده هایی که دسترسی به آنها غیرمجاز بوده دسترسی داشته باشند.ویرایش داده هاسوء استفاده از داده هاخراب کردن کل Web Applicationیکی از پایگاه داده هایی که ساختار آن NoSQL است و آسیب پذیری NoSQL Injection در آن وجود دارد، MongoDB می باشد.مثالی ساده از نحوه کارکرد NoSQL Injectionفرض کنید برنامه ای بر پایه پلتفرم Meteor نوشته ایم که نام کاربری و رمز عبور Hash شده را از کاربری که قصد ورود به سیستم دارد را می گیرد. برای اعتبارسنجی پارامترهای واردشده، آنها را با مقادیر پایگاه داده ی MongoDB مطابقت می دهیم:اگر کاربر مقادیر درست را وارد کند تابع login صفحه مربوط به کاربر را برمیگرداند.حال فرض کنید نوع متغیرهای username و hashedPassword از نوع string بوده ولی ما نوع این متغیرها را به طور static تعریف نمیکنیم تا کاربر هر نوع داده ای بتواند به این تابع بدهد مانند string, number و حتی object.در این مثال، ما مقادیر admin و {$gte: &#34;&#34;} به ترتیب به تابع login ارسال کرده ایم. تابع login به پایگاه داده چنین query را ارسال می کند:این query اولین صفحه ای که نام کاربری آن admin باشد و رمز hash شده آن بزرگتر از string خالی باشد را برمیگرداند. با این روش، هکر ما به راحتی به صفحه ای که نباید دسترسی داشته باشد، بدون داشتن رمز عبور می تواند دسترسی داشته باشد.چگونه از آسیب پذیری NoSQL Injection جلوگیری کنیم؟اگر پارامتر های ورودی تابع login type checking شوند می توان جلوی این آسیب پذیری را گرفت. در پلتفرم Meteor کتابخانه ای به نام Check برای چک کردن نوع آرگمان های ورودی وجود دارد که آن را به صورت زیر می توانیم به کار ببریم:اگر در آرگمان های تابع Login نوع هایی بجز نوع مشخص شده در تابع check وجود داشته باشد با exception مواجه خواهد شد و اجرای تابع متوقف خواهد شد و هکر نمی تواند با آسیب پذیری NoSQL Injection به صفحات غیرمجاز دسترسی داشته باشد.حمله Host Header و آسیب پذیری های آندر وب سرورها معمولا آدرس IP وب سایت ها و برنامه های تحت وب یک میزبان یکسان است. به همین دلیل در header پروتکل HTTP باید Host مشخص شود. اگر ما به Host مقداری Invalid ارسال کنیم وب سرور معمولا آن درخواست را به Virtual Host منتقل می کند. همچنین می توانیم با استفاده از X-Forwarded-Host، درخواست هایی که هدر Host آنها Invalid است را به آدرسی که در هدر X-Forwarded-Host نوشته ایم بفرستیم:بسیاری از وب سرورها به هدر Host برای شناسایی Host تکیه می کنند. متاسفانه آنچه که برنامه نویسان متوجه آن نیستند، این است که هدر Host می تواند توسط کاربر کنترل شود. همانطور که می دانید، در امنیت برنامه های تحت وب، ورودی های کاربر باید همیشه ناامن تلقی شود و نباید به ورودی های کاربر اعتماد کرد.استفاده از هدر Host بیشتر در برنامه های تحت وب PHP رایج است. مثال زیر یک استفاده خطرناک از هدر Host است:هکر می تواند کد زیر را با تغییر هدر host طوری تغییر دهد که کد html زیر تولید شود:دو نوع حمله که با آسیب پذیری Host Header می توان انجام داد، Web-Cache Poisoning و Password Reset Poisoning می باشد:۲- حمله Web Cache Poisoningنوعی حمله است که در آن هکر، با دستکاری محتوای Web-Cache می تواند محتوای مسموم را به کسانی که به آن صفحه درخواست می دهند را نشان دهد. برای این کار، هکر باید یا Cache proxy که داخل وبسایت اجرا می شود را مسموم کند یا CDN ها را مسموم کند یا هرنوع مکانیزم Caching که بین Client و سرور وجود دارد را مسموم کند. با این کار Client با درخواست به این سرورها محتوای مسموم دریافت خواهد کرد که هیچ کنترلی روی آن ندارد.قطعه کد زیر نشان می دهد که چگونه یک هکر می تواند با آسیب پذیری host header حمله Web Cache Poisoning انجام دهد:۳- حمله Password Reset Poisoningیک روش رایج برای پیاده سازی بازیابی رمز عبور، تولید یک توکن مخفی و ارسال آن به ایمیل با لینکی که حاوی آن توکن است می باشد. حال چه اتفاق میفتد اگر هکر درخواست بازیابی رمز عبور را با هدر Host ای توسط خود هکر کنترل می شود بدهد؟ اگر برنامه تحت وب، از مقادیر هدر Host برای ارسال لینک بازیابی رمز عبور ارسال کند، هکر می تواند لینک بازیابی رمز عبور را مسموم کند و به کاربر هدف بفرستد. اگر کاربر هدف بر روی لینک بازیابی رمز عبور کلیک کند، هکر می تواند توکن مخفی را به دست آورد و رمز وی را ریسیت کند و با آن وارد Web Application شود.جلوگیری از آسیب پذیری Host headerجلوگیری از این حمله ساده است. به هدر Host نباید اعتماد کرد و توسعه دهنده نباید از آن به طوری که به هکر اجازه سوءاستفاده از آن را بدهد، استفاده کند.آسیب پذیری HTTP Header Injection و زیرحملات آناین نوع آسیب پذیری وقتی به میان می آید که هدر http توسط کاربر به صورت dynamic تولید می شود. از جمله حملاتی که در این آسیب پذیری انجام داده می شود، می توان به HTTP response splitting , Session fixation با هدر ست کوکی, XSS و Malicious Redirect با هدر Location اشاره کرد.۴- حمله Session Fixationدر این نوع حملات، هکر با آسیب پذیری موجود در سیستم می تواند session identifier شخص دیگری را برای خود یا هر کس دیگری set کند.نمونه ای از این حمله را در زیر شبیه سازی کرده ایم:فرض کنید علی در یک بانک که برنامه تحت وب آن آسیب پذیر است، حساب دارد http://unsafe.example.com . رضا میخواهد تا به حساب علی از بانک خودش دسترسی داشته باشد. و همچنین فرض کنید علی هر لینکی که رضا به او میفرستد را باز خواهد کرد.رضا فهمیده است که آدرس http://unsafe.example.com هر نوع Session Identifier ای را قبول می کند و اعتبارسنجی روی آن انجام نمی دهد. پس این سایت امن نیست.رضا به علی ایمیلی با محتویات زیر می فرستد:سلام علی، برو به لینک زیر و ویژگی جدیدی که بانک برای حساب ها گذاشته رو ببین! http://unsafe.example.com/?SID=I_WILL_KNOW_THE_SIDرضا با این کار میخواهد که علی با SID روبرو I_WILL_KNOW_THE_SID وارد حساب خود شود.حال علی روی لینک کلیک می کند و به حساب خود Login می کند.در نهایت رضا با وارد شدن به آدرس http://unsafe.example.com/?SID=I_WILL_KNOW_THE_SID به حساب علی می تواند دسترسی داشته باشد!جلوگیری از حملات Session Fixationبهترین راه حل Identity Confirmation می باشد. وقتی که کاربر وارد سایت می شود (Login می کند) Session ID وی را تغییر دهیم. به همین سادگی می توان به طور گسترده ای جلوی این نوع حملات را گرفت.۵- آسیب پذیری SSRF یا Server-Side Request Forgeryآسیب پذیری جعل درخواست سمت سرور نوعی حمله است که در آن هکر، می تواند از یک عملکرد سیستم سوءاستفاده کند و به اطلاعات سرور دسترسی داشته باشد یا آنها را دستکاری کند. به طور مستقیم این امکان برای هکر وجود ندارد اما با استفاده از این آسیب پذیری، این نوع حمله محقق می شود.این حفره امنیتی به هکر اجازه انجام کارهای زیر را می دهد:اسکن شبکه های داخلی و خارجی: با انجام این حمله، هکر می تواند به شبکه ای که سرور به آن متصل است دسترسی داشته باشد و عملیات مخرب خود را انجام دهدخواندن فایل ها از سرور و منابع داخلی آن: با رندر شدن تمامی منابع سرور در صفحه لود شده، هکر می تواند به فایل ها و محتواهای سرور دسترسی داشته باشد. رایج ترین کاربرد این عمل، استخراج سورس کد و اطلاعات هویتی از سرور است.جلوگیری از آسیب پذیری SSRFتوصیه می شود برای جلوگیری از دسترسی هکر به منابع سرور، حتما whitelist ای از منابع قابل دسترس تعریف شود تا هکر نتواند به منابع حساس سیستم دسترسی داشته باشد.۶- آسیب پذیری IMAP/SMTP Injectionاین آسیب پذیری روی همه برنامه هایی که با ایمیل سرور ها ارتباط دارند می تواند تاثیر بگذارد. حمله IMAP/SMTP Injection زمانی که ایمیل سرور به طور مستقیم از اینترنت قابل دسترس نیست، موثرتر است. چون عموما سیستم های داخلی که ایمیل سرور متصل اند از امنیت بالایی برخوردار نیستند، ایمیل سرورها از آسیب پذیری بالایی برخوردارند.در شکل بالا عبور ترافیک از کاربر به ایمیل سرور نشان داده شده است. در مرحله 1 و 2 کاربر با کلاینت webmail در ارتباط است در حالی که در مرحله &#39;2 کاربر با رد کردن کلاینت  WebMail به طور مستقیم با ایمیل سرور در ارتباط است.این آسیب پذیری امکان وقوع حملات زیادی را از سوی هکر به وجود می آورد. برای مثال چند حمله زیر با آسیب پذیری IMAP/SMTP Injection انجام شده اند:سوءاستفاده از آسیب پذیری های پروتکل IMAP/SMTP عبور کردن از محدودیت های اپلیکیشناستخراج اطلاعاتارسال SPAM۷- آسیب پذیری XXE یا XML External Entitiesنوعی حمله بر اساس XML است که در آن برنامه ای که XML پارس میکند مورد هجوم قرار گرفته شود. این همه از طریق ورودی های XML انجام می گیرد. زمانی که ورودی های XML ارجاعی به یک موجودیت خارجی داشته باشد و هنگامی که آن ارجاع توسط یک XML Parser ضعیف پردازش شود، این حملات می تواند آسیب پذیر باشند. این حمله به هکر اجازه می دهد به داده های هویتی و حساس دسترسی داشته باشد، حمله DoS انجام دهد و ...مثالی از این نوع حملاتدرخواست زیر حاوی External Entity می باشد که با رنگ قرمز مشخص شده اند و اصطلاحا به آن Evil Entity نیز می گویند:در سناریوی زیر هکر با استفاده از درخواست بالا به راحتی می تواند به برنامه نفوذ کند و عملیات مخربانه خود را انجام دهد:چگونه از حمله XXE جلوگیری کنیم؟اکثر XML Parser ها در مقابل حملات XXE آسیب پذیرند. با بستن ارجاع به موجودیت های خارجی می توان جلوی این حمله را گرفت:۸- آسیب پذیری Insecure Deserializationهنگامی که داده ها ذخیره می شوند یا انتقال داده می شوند بیت ها آن داده Serialize می شوند تا بعدا به ساختار داده اصلی آن بازگردانده شود. Deserialization به فرایند تبدیل بیت های داده به یک فایل یا یک شی می گویند. اگر الگوریتم Deserialization امن نباشد، داده های Deserialize شده قابل اصلاح خواهند بود. مثلا می توان کد های مخرب داخل آن داده ها قرار داد که باعث آسیب رسیدن به برنامه می شود.نمونه ای از حمله Insecure Deserializationفرض کنید وبسایتی که با php پیاده شده است از یک فرایند serialization برای ذخیره یک کوکی که حاوی اطلاعات هویتی کاربر است استفاده می کند:هکر می تواند با دستکاری شی serialize شده به خودش دسترسی ادمین بدهد!چگونه از آسیب پذیری Insecure Deserialization جلوگیری کنیم؟استفاده از الگوریتم های رمزگذاری برای شی های Serialize شده می تواند جلوی دستکاری آن را توسط هکر بگیرد.۹- آسیب پذیری XSSI یا Cross-Site Script Inclusionهکر در این نوع آسیب پذیری سعی می کند تگ های Script ای را به صفحه خود اضافه کند که به منبع دیگری اشاره می کند. با منترل توابع , ,  هکر می تواند اطلاعاتی در مورد نحوه پاسخ سرور به درخواست های GET را به دست آورد. برای مثال فرض کنید دیرکتوری admin/ زمانی که شما login کرده باشید کد وضعیت 200 را بر میگرداند. و هنگامی که لاگین نباشید کد وضعیت 401 را برمیگرداند.برای انجام حمله شرایط زیر مورد نیاز است:در هدر HTTP، نباید X-Content-Type-Options: nosniff برگردانده شود. مگر اینه نوع محتوا javascript باشد.سرور باید به درخواست های GET پاسخ دهد.برای جلوگیری از این حمله کافی است یکی از شرایط بالا نقض شوند. برای مثال اگر در هدر HTTP، مقدار X-Content-Type-Options: nosniff برگردانده شود این حمله کار نخواهد کرد.۱۰- آسیب پذیری CORS یا Cross-Origin-Resource Sharingاین آسیب پذیری باعث می شود که منابع یک برنامه تحت وب در یک دامنه خاص یا حتی در کل دامنه اش در معرض دسترسی قرار گرفته شود. و همچنین باعث می شود کلاینت برای یک منبعی در دامنه ای بجز دامنه اصلی درخواست AJAX بفرستد.این آسیب پذیری از پیکربندی نادرست CORS به وجود می آید. بسیاری از وبسایت ها از CORS برای اجازه دسترسی به زیردامنه ها و دیگر اشخاص ثالث معتبر استفاده می کنند. اگر پیاده سازی CORS به اشتباه صورت گیرد یا از امنیت آن مطمئن نشوند، باعث به وجود آمدن آسیب پذیری در آن وبسایت خواهد شد.هنگامی که یک کلاینت درخواست منبعی را از دامنه دیگری می کند، هدر HTTP آن به این صورت است:کلاینت با استفاده از هدر Origin به سرور دامنه مرجع خود را اعلام می کند. سرور یا برنامه تحت وب به این درخواست اینگونه پاسخ می دهد:وب سرور در پاسخ به کلاینت در هدر Access-Control-Allow-Origin، دامنه های مجاز را به وی اطلاع می دهد. در این مثال &#34;*&#34; به این معنی است که تمامی دامنه ها مجاز هستند.آسیب پذیری این ویژگی اینجاست که کلاینت می تواند هر مقداری را در هدر Origin که به سرور درخواست می دهد، قرار دهد تا برنامه تحت وب را وادار کند محتوایی که می خواهد را در پاسخ به وی ارسال کند. اگر کلاینت Browser باشد که این هدر توسط Browser کنترل می شود اما با استفاده از کلاینت های دیگر مانند Putty می توان مقادیر هدر Origin را تغییر داد. برای همین بهتر است از هدر Origin برای اعتبارسنجی درخواست هایی که به سایت شما می آید استفاده نکنید.نتیجه گیریبسیاری از آسیب پذیری های یاد شده با رعایت حداقل نکات امنیتی قابل پیشگیری می باشند. این آسیب پذیری ها اکثرا با اشتباهات خود برنامه نویس ها رخ می دهند و به هکرها اجازه سوءاستفاده از برنامه خود را می دهند. حملاتی که با به وجود آمدن این آسیب پذیری ها رخ می دهند به مراتب می تواند آسیب های جبران ناپذیری را به افراد منابع و... وارد کنند. پس امنیت در دنیای اینترنت مخصوصا برنامه های تحت وب بسیار ضروری است.مراجع[1] OWASP[2] Acunetix</description><category>مسعود خدادادی</category><author>مسعود خدادادی</author><pubDate>Fri, 03 Jan 2020 17:41:17 +0330</pubDate></item><item><title>چگونه جلوی حملات DHCP Spoofing را با ترفند DHCP Snooping بگیریم؟</title><link>https://virgool.ir/@masoud.xpress/چگونه-جلوی-حملات-dhcp-spoofing-را-با-ترفند-dhcp-snooping-بگیریم-lbvnkpuxqzaf</link><description> دستگاه های واقع در یک شبکه به طور معمول، اطلاعات مربوط به آدرس IP خود را از سروری به نام DHCP Server می گیرند. این اطلاعات که شامل آدرس IP کلاینت، Default Gateway ،Subnet Mask ،DNS ،Lease time و... می باشد از طریق پروتکل Dynamic Host Configuration Protocol - DHCP - منتقل می شوند. تنظیم دستی این اطلاعات برای شبکه های بزرگ و سازمانی بسیار پر هزینه و سخت می باشد لذا امروزه تقریبا همه دستگاه های داخل شبکه از DHCP استفاده می کنند. اما با همه گیر شدن استفاده از این پروتکل، برخی سودجویان از آن سوء استفاده کرده و اقدام به حملاتی به نام DHCP Spoofing می کنند.حمله DHCP Spoofing چیست؟برای اینکه یک کلاینت اطلاعات آدرس IP خود را به طور خودکار دریافت کند به محض وصل شدن به شبکه، درخواستی به نام DHCP Request به کل شبکه ارسال می کند. سرور DHCP موجود در شبکه نیز به این درخواست، پاسخ می دهد و اطلاعات آدرس IP را در اختیار کلاینت قرار می دهد. حال فرض کنید هکری در یک شبکه، سرور DHCP جعلی راه اندازی کند. در این صورت این سرور DHCP می تواند به درخواست های کلاینت ها پاسخ دهد و اطلاعات جعلی به آنها بدهد. Default Gateway که این سرور جعلی به کلاینت ها می دهد در واقع آدرس IP خود کامپیوتر هکر می باشد. بدین شکل تمامی بسته های کلاینت های هدف از کامپیوتر هکر عبور کرده و هکر نقش Man in the Middle را بازی می کند و می تواند تمامی بسته های کلاینت ها را بررسی کند. حال شاید بگویید خب ما از پروتکل های امن برای رمزگذاری بسته هایمان استفاده می کنیم (HTTPS) و هیچکس قادر به شنود آنها نخواهد بود و این حمله با شکست مواجه خواهد شد. شاید حق با  شما باشد! اما باید این را نیز بدانید که آدرس DNS نیز توسط این سرور جعلی به کلاینت ها داده می شود! پس هکر می تواند آدرس DNS جعلی را به کلاینت ها بدهد. برای مثال فرض کنید شما می خواهید از طریق اینترنت خرید آنلاین انجام دهید. به صفحه پرداخت آنلاین مثل Shaparak.ir منتقل خواهید شد. برای متصل شدن به سایت شاپرک، ابتدا آدرس هاست این سایت توسط DNS Server به آدرس IP آن ترجمه می شود. DNS Server جعلی، آدرس IP جعلی را به شما برمیگرداند و شما خوشحال و خندان خرید خود را انجام می دهید و از امن بودن آن اطمینان دارید چون در آن از پروتکل HTTPS استفاده شده است. غافل از اینکه تمامی اطلاعات وارد شده شما در کامپیوتر هکر بازگشایی خواهند شد زیرا Certificate آدرس جعلی نیز در دست هکر است. به همین سادگی، تمامی اطلاعات بانکی شما در دست هکر قرار می گیرد!ترفند DHCP Snooping برای جلوگیری از حملات DHCP Spoofingقابلیتی به نام DHCP Snooping در برخی سوئیچ ها مانند سوئیچ های شرکت Cisco و Jupiter وجود دارد که باعث کاهش این دست حملات می شود. عملکرد آن بدین صورت است که پورت های سوئیچ در دو حالت trusted  و untrusted قرار می گیرند. پورت های trusted می توانند درخواست های DHCP را دریافت کنند و به آن ها پاسخ دهند ولی پورت های untrusted حق پاسخ به درخواست های DHCP را ندارند، پس اگر هکری DHCP Server جعلی خود را در یکی از پورت های untrusted راه اندازی کند، به محض اینکه بسته پاسخ DHCP را به کلاینت درخواست کننده ی DHCP بفرستد، از شبکه بیرون رانده خواهد شد و آن پورت بسته می شود.به طور پیش فرض تمامی پورت های سوئیچ ها در حالت untrusted قرار دارند. لذا برای استفاده از ترفند DHCP Snooping، باید پورت های trusted را در سوئیچ خود تنظیم کنید.در ادامه با نحوه تنظیم پورت های trusted در سوئیچ های شرکت Cisco آشنا خواهیم شد:برای تنظیم DHCP Snooping به صورت Global باید از دستور زیر در محیط command سوئیچ استفاده کنید:Switch(config)#ip dhcp snoopingاگر می خواهید تنها برخی از vlan های شبکه شما از این ویژگی استفاده کنند می توانید دستور زیر را وارد کنید:Switch(config)#ip dhcp snooping vlan 1,60,150-175فعالسازی DHCP Snooping به تنهایی برای جلوگیری از حمله DHCP Spoofing کافی نیست. شما باید پورت های trusted را نیز به صورت زیر تنظیم کنید:Switch(config)#interface gigabitethernet 0/3&#xA;Switch(config-if)#ip dhcp snooping trustدر مثال بالا، پورت سوم که از نوع اترنت گیگابیتی است به عنوان پورت trust تنظیم شده است بدین معنی که فقط DHCP Server که در این پورت قرار دارد قادر به پاسخگویی به درخواست های DHCP کلاینت ها خواهد بود.بررسی یک حالت خاص!ممکن است هکر با درخواست های متعدد DHCP به DHCP Server، آن را از کار اندازد. هکر می تواند با ساختن بسته های DHCP با آدرس MAC های مختلف، آدرس های IP سرور واقعی DHCP را تمام کند و آن را از ارائه سرویس به بقیه کلاینت ها باز دارد. این نوع حمله به DoS یا Denial of Servive معروف است. خوشبختانه ویژگی DHCP Snooping می تواند از وقوع این نوع حملات نیز جلوگیری کند. برای تنظیم آن باید در محیط command سوئیچ، تعداد بسته های DHCP در واحد ثانیه که از پورت trusted سوئیچ عبور می کنند را محدود کنید:Switch(config)#interface gigabitethernet 0/5&#xA;Switch(config-if)#ip dhcp snooping limit rate 5نتیجه گیریبا اینکه ترفند DHCP Snooping به خوبی می تواند جلوی حملات DHCP Spoofing را بگیرد، اما باید توجه داشته باشید که این امکان به طور پیش فرض فعال نیست و در خیلی از سوئیچ ها حتی این امکان وجود ندارد. پس حملات DHCP Spoofing می توانند بسیار خطرناک باشند. اگر می خواهید در شبکه خانگی از این امکان استفاده کنید اما تجهیزات مورد نیاز را ندارید، می توانید با رعایت نکات ساده و زیرنظر داشتن شبکه نیز از این نوع حملات در امان باشید. اما برای شبکه های بزرگتر و سازمانی که زیرنظر داشتن شبکه امری سخت و غیرممکن بوده، حتما توصیه می شود که از سوئیچ های مناسب برای استفاده از DHCP Snooping استفاده کنید.</description><category>مسعود خدادادی</category><author>مسعود خدادادی</author><pubDate>Fri, 20 Dec 2019 19:10:05 +0330</pubDate></item><item><title>چگونه حملات ARP Poisoning را شناسایی کرده و از آن مصون بمانیم؟</title><link>https://virgool.ir/@masoud.xpress/چگونه-حملات-arp-poisoning-را-شناسایی-کرده-و-از-آن-مصون-بمانیم-sldsvgf3h4we</link><description>حمله ARP Poisoning، حمله ای از نوع Man in the Middle می باشد و در سطح شبکه داخلی(LAN) است که در آن هکر با فرستادن پیغام های جعلی ARP در شبکه داخلی، قادر به شنود تمامی بسته های کاربر هک شده، می شود.پروتکل Address Resolution Protocolپروتکل ARP) Address resolution protocol) عمل تبدیل IP به MAC را برای ما انجام می دهد. نحوه کارکرد آن بدین صورت است که درخواست هایی در شبکه پخش می شود که آیا IP شما ***.***.***.*** است؟ اگر درست است مک خود را ارسال کنید.در همین حین تمامی کلاینت های شبکه IP خود را چک می کنند که در صورت درست بودن یک پاسخ همراه مک به فرستنده ارسال می کنند. برای این که این درخواست پیوسته در شبکه ارسال نشود و ترافیک بیهوده ایجاد نشود.هر کلاینت یکبار این درخواست را ارسال کرده و سپس جواب‌های ارسالی را بصورت یک جدول در ARP Cache نگه داری می کند. این جدول شامل Mapping بین IP و MAC می باشد. هر زمان که بسته ای به یک کلاینت در یک شبکه داخلی ارسال می شود، باید از Gateway عبور کند سپس Gateway با استفاده از ARP، آدرس MAC کلاینتی که بسته به آن مربوط می شود را با استفاده از IP موجود در بسته پیدا کرده و آن بسته را به کلاینت مورد نظر ارسال می کند.حمله ARP Poisoning چیست؟طراحان پروتکل ARP، آن را بر اساس کارایی ساختند که باعث شد حفره های امنیتی زیادی در آن به وجود آید. حفره های امنیتی آن باعث شد که هکرها تا زمانی که در شبکه داخلی به کلاینت هدف خود دسترسی داشته باشند، بتوانند به آسانی به وی حمله کنند.حمله ARP Poisoning به عمل ارسال بسته های جعلی ARP Reply به یک Gateway در یک شبکه داخلی می گویند. هکرها با داشتن آدرس IP کلاینت هدف، می توانند بسته های جعلی ARP را به سایر کلاینت های داخل شبکه ارسال کنند. پیام های جعلی به کلاینت ها این مفهوم را می رسانند که آدرس MAC هکر باید به آدرس IP کلاینت هدف در جدول ARP آن ها نگاشت شود. این عمل باعث می شود کلاینت های موجود در شبکه، جدول ARP Cache خود را با آدرس Mac هکر Update کنند. هر موقع که کلاینت ها بخواهند بسته ای به کلاینت هدف ارسال کنند، این بسته به هکر ارسال خواهد شد. هکر می تواند به طور مخفیانه داده ها را دزدیده یا آن ها را دستکاری و به مقصد برساند یا حتی به طور کامل ارتباط کلاینت ها با کلاینت هدف را قطع کند.چگونه حملات ARP Poisoning را شناسایی کنیم؟روش های مختلفی برای شناسایی حمله ARP Poisoning وجود دارد. Command Prompt ویندوز، برنامه هایی مانند Snort ، ArpWatch ، ArpAlert ،XArp  و ... قابلیت شناسایی این نوع حملات را دارند. در ادامه با نحوه شناسایی هکر با استفاده از برخی از روش های ذکر شده آشنا می شویماستفاده از ابزار Command Prompt ویندوزاگر به اینکه کامپیوتر شما مورد حمله ARP Poisoning قرار گرفته یا خیر مشکوک هستید، یک راه ساده استفاده از Command Prompt است. با استفاده از دستور &#34;arp -a&#34; می توانید ARP Table خود را مشاهده کنید.بخشی از آدرس MAC دستگاه ها به دلایل امنیتی سیاه شده استدر این جدول اگر دو دستگاه با آدرس IP های مختلف دارای آدرس MAC یکسانی باشند آنگاه احتمالا کامپیوتر شما مورد حمله ARP Poisoning قرار گرفته است. البته این موضوع را نمی توان با قطعیت بیان کرد زیرا در بعضی مواقع در برخی روترها آدرس IP ابتدا و انتهای آن با یک آدرس MAC در ARP Table ذخیره می شود. این مورد یکی از استثناها می باشد.مشابه این سناریو در دستگاه های لینوکسی و مک نیز قابل اجراست اما برای دستگاه های اندرویدی نیاز به دسترسی روت خواهید داشت.ابزار قدرتمند XArpاین ابزار پیشرفته برای لینوکس و ویندوز منتشر شده است که در Background اجرا شده و حملات را به طور آنی شناسایی می کند.با تنظیم Security Level به minimal یا basic یا high و یا aggressive می توانید حساسیت برنامه را تنظیم کنید.چگونه از حملات ARP Poisioning در امان بمانیم؟حال که با نحوه شناسایی حمله ARP Poisoning آشنا شدیم، بهتر است از روش هایی برای حفاظت دستگاه و داده های خود در برابر این نوع حملات استفاده کنید. استفاده از VPNیک روش برای جلوگیری از مورد تهاجم گرفتن توسط حمله هکرها استفاده از VPN است. در حالت عادی، وقتی که به اینترنت متصل می شوید در ابتدا به یک ISP وصل می شوید تا با شبکه جهانی اینترنت ارتباط برقرار کنید اما با استفاده از VPN، یک تونل Encrypted بین شما و سرور VPN برقرار می شود که فعالیت شما را از هکرها مخفی نگاه میدارد. البته VPN ها به دلیل بودن زمان بر بودن عملیات Encryption و Decryption ممکن است سرعت دسترسی آنلاین شما را کم کنند.استفاده از Static ARPدرج رکوردهای ARP به صورت Static می تواند ریسک مورد تهاجم قرار گرفتن را کاهش دهد. اگر در شبکه داخلی شما دو کلاینت اغلب اوقات باهم در ارتباط اند، تنظیم جدول ARP به طور Static برای این دو کلاینت می تواند یک لایه حفاظتی برای در امان ماندن از حملات اضافه کند.روتر های CISCO می توانند تشخیص دهند عمل ARP Poisoning رخ می دهد یا خیر و در صورت رخداد آن، فعالیت آن را از سر گیرند.اعتبارسنجی IP هادر حالت معمول، کلاینت ها تنها از آدرس IP برای تشخیص هویت کلاینت دیگر استفاده می کنند که این عامل باعث می شود کار هکرها برای Spoofing راحت شد. یک راه حل دیگر برای در امان ماندن از حملات ARP Poisoning استفاده از نام کاربری و رمز عبور برای اعتبارسنجی کلاینت ها است. برای ساخت یک سیستم اعتبارسنجی باید آن را در سطح سازمان خود تعریف کنید و به کلاینت های معتبر، نام کاربری و رمز عبور مخصوص بدهید. این تکنیک ساده می تواند یک لایه حفاظتی دیگر به شبکه شما اضافه کند و هکرهایی که میخواهند به شبکه دسترسی غیرمجاز داشته باشند را شناسایی کند.فیلتر کردن بسته ها (Packet Filtering)این فیلترها بسته هایی که در شبکه ارسال می شوند را آنالیز می کنند و بسته های جعلی و کلاینت هایی که بسته جعلی می فرستند را فیلتر می کنند. علاوه بر این فیلترها می توانند بسته هایی که در واقع از بیرون آمده است ولی ادعا می کند منشاء داخلی دارند را تشخیص دهند. این امر شانس هکرها برای یک حمله موفقیت آمیز را کاهش می دهد.استفاده از امکانات Switch ها و مودم هامودم هایی مانند مودم های شرکت DLink قابلیتی برای جلوگیری از حملات ARP Poisoning دارندبا وارد کردن آدرس IP روتر، gateway یا firewall و مک آدرس آن و همچنین پورتی که به آن متصل است، مودم از حملات ARP Poisoning جلوگیری می کند.در Switch ها نیز با استفاده از Dynamic ARP inspection که با DHCP Snooping کار می کند می توان جلوی این حملات را گرفت. در Dynamic ARP inspection پورت های trusted و untrusted مشخص می شوند و آدرس IP و MAC بسته های دریافتی ARP با استفاده از دیتابیس DHCP Snooping بررسی می شوند. پورت های Access باید به عنوان untrusted و پورت های متصل به روتر و دستگاه هایی که نمی خواهید بسته های ARP آنها چک شوند را در حالت trusted قرار می دهید. از دستورات زیر برای فعال سازی این قابلیت استفاده می شود:Switch(config)# ip arp inspection vlan 1با استفاده از دستور زیر پورت را در حالت trusted می توانید قرار دهید:Switch(config-if)# ip arp inspection trustنقاط ضعف این حملهوقتی در یک شبکه ARP Poisoning رخ میدهد ترافیک شبکه بالا میرود و باعث DELAY یا تاخیر می شود. فرض کنید تمام ترافیکی که بین کلاینت ها رد و بدل می شود باید اول از اسنیفر عبور کند یعنی اسنیفر واسط بین کلاینت ها و GATEWAY می شود که باعث پایین آمدن سرعت می شود.از طرفی دیگر باید ARP Cache Entryوجود داشته باشد یعنی اسنیفر برای تولید بسته ARP جعلی به سراغ ARP Cache Table میرود و آن را Update می کند ولی خود اسنیفر نمی تواند یک نسخه Entry در جدول مک ادرس تولید کند یعنی باید از قبل وجود داشته باشد و اسنیفر، آدرس MAC کلاینت هدف را داشته باشد تا اسنیفر بتواند آن را اصلاح کند.از طرف دیگر این حمله با استفاده از ARP کار میکند که این پروتکل درون لایه 2 قرار دارد یعنی برای این کار شما باید درون LAN باشید و بیرون از این Network شما نمی توانید اسنیف کنید.نتیجهحمله ARP Poisoning یکی از حملات رایج در شبکه می باشد که روش های متنوعی برای شناسایی و حتی جلوگیری از رخداد آن وجود دارد. هر روش مزایا و معایبی در شرایط مخصوص خود دارد و روش برتری وجود ندارد. بهترین راه حل استفاده از ترکیبی از روش های موجود برای شناسایی و جلوگیری است. اگر از ابزار های شناسایی این نوع حملات استفاده کنید هر زمان که حمله رخ داد، می توانید از وجود آن باخبر شوید و حمله را قبل از اینکه آسیب زیادی برساند قطع کنید.</description><category>مسعود خدادادی</category><author>مسعود خدادادی</author><pubDate>Fri, 06 Dec 2019 00:18:07 +0330</pubDate></item><item><title>بررسی الگوریتم های PageRank و HITS برای استخراج صفحات وب</title><link>https://virgool.ir/dataio/بررسی-الگوریتم-های-pagerank-و-hits-برای-استخراج-صفحات-وب-zqpjwuc1bfa8</link><description>موتور های جستجو در چند دهه اخیر به یکی از ضروری ترین برنامه ها تبدیل شده اند؛ به طوری که حتی تصور یافتن اطلاعات بدون آنها برای بسیاری غیر ممکن است.وب یک منبع غنی از داده ها می باشد که گسترش اندازه و پیچیدگی آن همواره ادامه دارد. از این رو، بازیابی موثر و کارآمد صفحات وب یک چالش بزرگ است. با توجه به حجم وسیع اطلاعات در وب، مدیریت آن با ابزار های سنتی تقریبا غیر ممکن بوده و موجب مشکلات زیادی برای کاربران جهت جستجوی اطلاعات می شود لذا نیاز به تکنیک هایی جهت رفع مشکلات موجود داریم.در این مقاله، الگوریتم های تحلیل لینک مانند PageRank و HITS مورد بررسی و مقایسه (با استفاده از مثال) قرار گرفته اند.الگوریتم های تحلیل لینک (Link Analysis)الگوریتم Page Rankپیج‌رنک یا رتبه صفحه، به الگوریتمی گفته می‌شود که بر پایه آن موتورهای جستجو، صفحات وبی که به هدف جستجوگر نزدیکترند را در رده‌های بالاتری نسبت به دیگران قرار می‌دهد. الگوریتم Page Rank اولین بار در سال ۱۹۹۸ توسط Larry Page و Sergey Brin در دانشگاه استنفرد ارائه شده است. با این روش کاربرانی که کلمه ویژه‌ای را جستجو می‌کنند می‌توانند ابتدا صفحات وبی را ببینند که هم به خواسته آن‌ها نزدیکتر است و هم بازدید بیشتری داشته‌است.این الگوریتم به هر صفحه وب، امتیازی اختصاص داده و از این امتیاز با درنظر گرفتن پرس و جوی کاربر، جهت رتبه بندی صفحات وب استفاده می کند. رتبه هر صفحه با اختصاص وزن به لینکی که به آن صفحه داده شده است به دست می آید که مقدار این وزن به کیفیت صفحه ای که لینک در آن قرار گرفته بستگی دارد. بدین صورت لینک های صفحات مهم تر وزن بیشتری می گیرند. جهت مشخص کردن کیفیت صفحه های رجوع کننده، از رتبه آن صفحه که به صورت بازگشتی تعیین می شود، استفاده می گردد. اگر n صفحه وب در دسترس باشد، مقدار اولیه رتبه یک صفحه وب برابر با n^-1 می شود.PR(A) = (1-d) + d(PR(Ti)/C(Ti))               (۱)فرمول شماره ۱ برای محاسبه رتبه یک صفحه مانند A استفاده می شود. در این فرمول Ti صفحاتی می باشند که به صفحه A اتصال دارند و C(Ti) تعداد لینک های خروجی صفحه Ti و d ضریب اثر می باشد که مقداری بین ۰ و ۱ است.الگوریتم HITSالگوریتم HITS یا Hyperlink-Induced Topic Search یکی از الگوریتم های رایج برای رتبه بندی صفحات است که در سال ۱۹۹۸ توسط Kleinberg ارائه شد. این الگوریتم از دسته روش های وابسته به پرس و جو است. در این نوع روش ها برای هر پرس و جو تحلیل لینک انجام می شود. برای انجام تحلیل لینک، ابتدا می بایست گراف خاص پرس و جو به نام گراف همسایگی ساخته شود.ارتباط بین صفحات در گراف همسایگیدر حالت ایده آل این گراف تنها شامل صفحات مرتبط با پرس و جو است. برای ساخت گراف همسایگی، ابتدا یک مجموعه از صفحات مربوط با پرس و جو به وسیله موتور جست و جو بازیابی می شوند. سپس این الگوریتم برای هر گره در گراف همسایگی، به طور تناوبی دو امتیاز Authority و Hub را محاسبه می کند و سپس گره ها را با توجه به این امتیازات رتبه بندی می کند.در این گراف دو نوع گره وجود دارد:گره Hub : صفحاتی که به عنوان لیست های منبع عمل می کنند.گره Authority : صفحاتی که محتویات مهمی دارند.گره های با امتیاز بالای Authority ،Authority خوب و گره های با امتیاز بالای Hub ،Hub خوبی هستند. این الگوریتم فرض می کند صفحه ای که به صفحات وب دیگر بیشتری اشاره می کند، Hub خوبی است و صفحه ای که صفحات وب بیشتری به آن اشاره می کنند، Authority خوبی می باشد. به طور بازگشتی می توان به این نتیجه رسید که صفحه ای که به تعداد Authority های خوب بیشتری اشاره می کند، Hub بهتری است و صفحه ای که Hub های خوب بیشتری به آن اشاره می کنند، Authority بهتری می باشد. در نتیجه یک صفحه به طور همزمان می تواند Hub و Authority خوبی باشد.این الگوریتم بازگشتی دارای دو مرحله می باشد.مرحله Sampling (نمونه گیری) : در این مرحله یک مجموعه از صفحات مرتبط با پرس و جو جمع آوری می شوندمرحله بازگشتی: در این مرحله، Hub و Authority صفحات بدست آمده در مرحله اول، محاسبه می شود.برای محاسبه Hub یک صفحه مانند p از فرمول ۲ استفاده می شود که مجموع Authority صفحات مرجع p می باشددر فرمول ۲، Hp امتیاز Hub صفحه p است و Aq امتیاز Authority صفحه q است.برای محاسبه Authority صفحه p از فرمول ۳ استفاده می شود که مجموع Hub صفحات مرجع صفحه p می باشد.در فرمول ۳، Ap امتیاز Authority صفحه p است و Hq امتیاز Hub صفحه q است.شبه کد الگوریتم HITSشبه کد الگوریتم HITS - ویکی پدیامحدودیت های الگوریتم HITSتشخیص بین صفحات Hub و Authority مشکل است، زیرا یک صفحه می تواند همزمان Hub و Authority باشد.این الگوریتم گاهی اوقات به دلیل وزن یکسان صفحات ممکن است صفحات نامرتبط با پرس و جوی کاربر را نمایش دهد.این الگوریتم در real time کارایی خوبی ندارد.برای لینک هایی که خودکار ایجاد شده و به پرس و جوی کاربر مرتبط نیستند امتیاز یکسانی تخصیص می دهد.مقایسه دو الگوریتم Page Rank و HITSکار با الگوریتم های Page Rank و HITSجهت مقایسه نتایج الگوریتم های Page Rank و HITS، سه صفحه فرضی B ،A و C را به صورت زیر در نظر می گیریم.صفحات مفروض B ،A و Cگراف جهت دار حاصل از این صفحات  به صورت زیر می باشد که در آن رئوس گراف همان صفحات و یال های گراف همان اتصال های بین صفحات می باشد. برای هرکدام از رئوس یک رتبه اولیه در نظر گرفته شده است.گراف همسایگی بین صفحاتماتریس نشان داده شده در شکل زیر نیز ارتباط بین صفحات را نمایش می دهد که با توجه به گراف همسایگی ایجاد شده است. به طوری که عدد یک نشان دهنده وجود لینک بین صفحات و عدد صفر نشان دهنده عدم وجود لینک بین صفحات می باشد. برای مثال عدد یک درایه سطر اول و ستون دوم نشان دهنده وجود لینک از صفحه A به صفحه B است.ماتریس ارتباط بین صفحاتابتدا رتبه صفحات را با استفاده از الگوریتم Page Rank محاسبه می کنیم.فرض: d=0.85PR(A) = (1-0.85) + 0.85(R(C) / c(C)) = 0.25 + 0.85(0.4 / 1) = 0.25 + 0.34 = 0.59PR(B) = (1-0.85) + 0.85(R(A) / c(A)) = 0.25 + 0.85(0.4 / 2) = 0.25 + 0.17 = 0.42PR(C) = (1-0.85) + 0.85(R(A) / c(A) + R(B) / c(B)) = 0.25 + 0.85(0.4 / 2 + 0.2 / 1) = 0.59جهت محاسبه رتبه صفحات با استفاده از الگوریتم HITS ابتدا مقادیر اولیه Hub و Authority یعنی H0 و A0 را به صورت پیش فرض 1 در نظر میگیریم سپس مقادیر جدید را همان طور که در جدول زیر نشان داده شده است، با استفاده از فرمول های 2 و 3 محاسبه می نماییم.محاسبه مقادیر Hub و Authority صفحاتچون الگوریتم HITS یک الگوریتم تکرار شونده است پس دائما مقادیر Hub و Authority صفحات، محاسبه می شوند. رتبه های نهایی الگوریتم های Page Rank و HITS به صورت زیر می باشد:رتبه صفحات در هر دو الگوریتمهمانطور که در جدول بالا مشاهده می شود، طبق الگوریتم Page Rank صفحه A رتبه بالاتری نسبت به صفحه B دارد. در الگوریتم HITS این دو صفحه دارای Authority یکسانی می باشند ولی طبیعتا طبق تعریف یک Hub خوب، صفحه A دارای مقدار Hub بیشتری می باشد زیرا به صفحات بیشتری اشاره می کند. صفحه C در الگوریتم Page Rank رتبه یکسانی با صفحه A دارد و این الگوریتم اهمیت آنها را یکسان در نظر گرفته است درحالی که در الگوریتم HITS مقدار Authority صفحه C بیشتر است و اهمیت آن نیز بیشتر می باشد که نشان دهنده این است که الگوریتم HITS از Page Rank بهتر عمل می کند.نتیجهالگوریتم های رتبه بندی نقش بسیار مهمی را در ترتیب نمایش صفحات وب به کاربر پرس و جو کننده دارد. الگوریتم Page Rank از روش ساختارکاوی وب استفاده می کند که توسط موتور جستجوگر Google استفاده می شد. مشکل روش Page Rank این است که کاربران ممکن است صفحات وب مرتبط مورد نیاز خود را در چند صفحه بالا به راحتی به دست نیاورند. الگوریتم دیگری که نسبت به الگوریتم Page Rank بهتر عمل میکند الگوریتم HITS است که علاوه بر روش ساختارکاوی وب، از روش محتوا کاوی وب نیز جهت رتبه بندی صفحات استفاده می کنند. نتایج تجزیه و تحلیل الگوریتم ها نشان می دهد که عملکرد الگوریتم HITS از Page Rank بهتر است ولی این الگوریتم محدودیت های مهمی جهت رتبه بندی دارد.مراجع[1] Tamanna Bhatia, &#34;Link Analysis Algorithms For Web Mining&#34;[2] Rekha Jain, G. N. Purohit, &#34;Page Ranking Algorithms For Web Mining&#34;</description><category>مسعود خدادادی</category><author>مسعود خدادادی</author><pubDate>Mon, 25 Nov 2019 21:59:17 +0330</pubDate></item></channel></rss>