در مطلب قبلی که بنده درباره آخرین پژوهش موردخای گوری و دانشجویان و همکاران ایشان در دانشگاه بن‌گورین مقاله نوشتم، یک سری اشارات کلی به پژوهش و شیوه پیاده‌سازی حملات ایرگپ و چرایی استفاده از این روش در حملات هدفمند داشتم. این مقاله را می‌توانید در آدرس (http://cephalexin.blog.ir/post/19) مشاهده و مطالعه کنید. خواهش می‌کنم اگر این نوع مقالات برای شما مفید است، حتما نظر بدهید. نظرات شما موجب می‌شود ارزش این کارها بیشتر هویدا شود و بنده در این حوزه‌ها بیشتر مطلب بنویسم.

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

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

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

همانطور که در مقاله پیشین به این مورد اشاره کردم، ما وقتی می‌خواهیم معماری یک ساختار نظامی، مالی، صنعتی و یا در حالت کلی و جنرال، بخشهایی که برای ما اهمیت دارند را مهندسی کنیم، اولین موردی که به آن توجه خواهیم کرد، پیاده‌سازی ساختار شبکه و اینترنت‌کاری زیرساخت به صورت ایرگپ | ایزوله | مجزا شده | لوکال است تا مهاجمن و هکرها نتوانند به صورت مستقیم به سامانه‌ها دسترسی بگیرند، یا در صورت آلوده بودن سامانه‌ها به بدافزار و درپشتی (که در کیس ایران این مورد خیلی مشاهده شده است)، بدافزارها نتوانند با زیرساخت کنترل و فرماندهی[1] خود خود ارتباط برقرار کنند.

قبل از اینکه ما به این مورد بخواهیم بپردازیم که این نوع حملات چطور صورت می‌گیرد، باید ابتدا در این باره صحبت کنیم که اصلا چطور ارتباطات مبتنی بر شبکه در سطح سیستم‌های کامپیوتری-باینری اتفاق می‌افتد و چطور یک کامپیوتر استریمی[2] از داده‌های باینری[3] را می‌تواند انتقال[4]، انکد[5] و دیکد[6] کند.

در حالت کلی، همانطور که شما آگاه هستید سامانه‌های کامپیوتری مبتنی بر داده‌های خام باینری کار می‌کنند که این داده‌های خام در قالب‌های مختلف توسط سیستم‌های کامپیوتری تجزیه-پارس[7]، درک[8]، انتقال و اجرا[9] می‌شوند. مثلا یک برنامه وقتی نوشته شود توسط یک کامپایلر[10] یا اسمبلر[11] به یک قالب فایل اجرایی مانند [12]PE برای محیط ویندوز یا [13]ELF برای محیط لینوکس یا MachO برای محیط مکینتاش ترجمه می‌شوند که البته همه این قالب فایل‌ها مبتنی بر طرح اولیه COFF[14] سیستم عامل یونیکس (خود یونیکس هم طرح اولیه خود را از مولتیکس[15] گرفته است) هستند، و در گام بعد دینامیک لودر[16] سیستم‌عامل می‌تواند آن را بر روی حافظه ترسیم[17] و در گام بعد پارس و اجرا کند.

حال وقتی ما بخواهیم داده‌ای را هم با استفاده از ارتباطات شبکه‌ای که داریم، بر روی شبکه به یک پایانه دیگر[18] در یک شبکه دیگر انتقال دهیم نیازمند این هستیم که داده | پیام خود را قالب‌بندی و در نهایت ارسال کنیم که طرف دیگر وقتی آن مجموعه از بیت‌ها را دریافت می‌کند، بتواند آن استریم بیت‌ها را کدگشایی و در نهایت پاکت | پیام را بازسازی و استخراج کند.

در سیستم‌های کامپیوتری و ارتباطات شبکه‌ای داده‌های خام باینری در نهایت بعد از گذر از لایه اپلیکیشن تا لایه لینک و فیزیکال موجود در مدل‌های TCP/IP (یا مدل فرضی OSI) قالب‌بندی و ارسال می‌شوند.

شایان ذکر است، سیگنال‌ در رشته ارتباطات، پردازش سیگنال یا به‌طور مشابه و کلی‌تر در رشته مهندسی برق، هر کمیت متغیر نسبت به زمان است. سیگنال‌ها اغلب توابع سطری از زمان هستند (سیسنوسی شکل - آنالوگ)، ولی ممکن است به صورت توابع ستونی (گسسته) نیز یافت شوند و نیز ممکن است توابعی از هر متغیر مستقل مربوطه دیگری باشند.

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

سپس این مجموعه سیگنال‌های آنالوگ ایجاد شده توسط مودم به مخابرات شهری و از آنجا به زیرساخت داخلی و از آنجا به گذرگاه بین‌المللی مخابره و در نهایت بسته‌های اطلاعاتی به کلاینت می‌رسد. سپس دوباره با گذشتن از مودم و تبدیل شدن سیگنال های آنالوگ به دیجیتال و عبور از پروتکل‌های فیزیکال، لینک تا اپلیکشن پیام استخراج شده و توسط اپلیکشن‌های درون سیستم‌عامل نمایش داده می‌شود.

خب ما تا به الان با اصول ارتباطات سیستم‌های کامپیوتری آشنا شدیم. در ارتباطات معمول ما مجبور بودیم داده‌ها و اطلاعات خام را تبدیل به سیگنال‌های آنالوگ و در نهایت ارسال کنیم. در این شرایط اگر، ارتباطات وایرلس یا وایر محدود شوند (شبکه به صورت ایرگپ طراحی شود)، در نتیجه اطلاعات را هم نمی‌توان به بیرون از آن شبکه‌ها ارسال کرد. 

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

حال که این مباحث تئوری را مطالعه کردید، با مشاهده این کلیپ (https://www.aparat.com/v/lbjJI) تقریبا دیگر اصول این حملات را درک خواهید کرد اگر چه من برخی از مسائل را در کلیپ بد توضیح دادم، اما با مطالعه این متن دیگر تقریبا مباحث برای شما شفاف خواهد شد. موفق باشید.


کانال تلگرام: @miladkahsarialhadi.



[1] Command and Control Infrastructure

[2] Stream

[3] Binary Data

[4] Transmit

[5] Encode

[6] Decode

[7] Parse

[8] Comperhend

[9] Execute & Run

[10] Compiler

[11] Assembler

[12] Portable Executable

[13] Executable and Linkable Format

[14] UNIX Common Object File Format

[15] Multics

[16] Dynamic Loader

[17] Map

[18] Endpoint Client