استگانوگرافی سیستم فایل

هی هابر

من می خواهم یک پروژه کوچک را به شما ارائه دهم استگانوگرافی، ساخته شده در اوقات فراغت از مطالعه.

من پروژه ای در مورد ذخیره سازی پنهان اطلاعات در سیستم فایل ساختم (در ادامه FS).
این می تواند برای سرقت اطلاعات محرمانه برای اهداف آموزشی استفاده شود.

استگانوگرافی سیستم فایل

یک لینوکس FS بسیار قدیمی به عنوان نمونه اولیه انتخاب شد ext2.

اجرا

ملاحظات پیاده سازی

اگر خوب است که استاندارد ext2 را "باز کنید" ، می توانید آن را جایگزین کنید که در FS به اصطلاح وجود دارد سوپر بلوک ها، که اطلاعات اولیه در مورد سیستم را ارائه می دهد. بعد از اینکه پیدا شدم بیت مپ را مسدود کنید и جدول Inode. تقریباً بلافاصله، ایده ثبت اطلاعات در بلوک های خالی FS در حال حاضر متولد شد. اکنون ارزش آن را داشت که در مورد محافظت از یک برنامه نویس مسلح فکر کنیم ویرایشگر هگز.

اگر اطلاعات مخفی را بدون رمزگذاری ذخیره کنید، حتی با وجود تاری بودن آن در FS، باز هم بسیار آشکار خواهد بود، به خصوص اگر برنامه نویس بداند به دنبال چه چیزی باشد. بنابراین، تصمیم گرفته شد که تمام بلوک های فایل منبع رمزگذاری شود. من رمز بلوکی را انتخاب کردم AES، اما همانطور که می دانید، این مهم نیست.

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

اصل عملکرد کلی سیستم

استگانوگرافی سیستم فایل

الگوریتم ضبط

امتیازات:

  • ابتدا اطلاعاتی را در فایل سیستم منبع بنویسید.
  • این اطلاعات (نه لزوما همه) را حذف کنید.
  • فایلی که باید پنهان شود به بلوک هایی با طول مساوی تقسیم می شود و یک نشانگر اضافه می کند.
  • این بلوک ها را رمزگذاری کنید.
  • بلوک های رمزگذاری شده را در بلوک های خالی FS قرار دهید.

برای دوستداران بلوک دیاگرام

در زیر بلوک دیاگرام الگوریتم ضبط آورده شده است. الگوریتم چهار فایل را به عنوان ورودی دریافت می کند:
-تصویر یک فایل سیستم قابل تغییر.
-پرونده موضوع steganography;
-فایل با کلید رمزگذاری برای AES.
-فایل با نشانگر
استگانوگرافی سیستم فایل

شایان ذکر است فوراً این الگوریتم یک اشکال دارد: پس از نوشتن پرونده در FS، نمیتونم هر چیز جدیدی را در FS بنویسید، زیرا هر اطلاعات جدیدی می‌تواند در بلوک‌هایی که ما به فایل فشرده خود اختصاص داده‌ایم ختم شود، اگرچه این امکان را نیز برای "پوشش سریع مسیرهایمان" باز می‌کند.

اما کاملاً واضح است که چگونه می توان این مشکل را برطرف کرد: لازم است الگوریتم برای نوشتن بلوک ها در FS بازنویسی شود. این یک کار قابل درک، اما فوق العاده وقت گیر است.
برای اثبات مفهوم من این را اجرا نکردم.

در نتیجه، تغییرات زیر در FS اعمال خواهد شد؛ این همان چیزی است که FS قبل از استگانوگرافی (یک فایل صوتی قبلا ضبط شده بود) به نظر می رسد.
استگانوگرافی سیستم فایل
و این همان چیزی است که FS با اطلاعات فشرده شده قبلی به نظر می رسد.
استگانوگرافی سیستم فایل

الگوریتم خواندن

امتیازات:

  • با آگاهی از کلید و روش ساخت نشانگرها، اولین N نشانگر را بنویسید، با تضمین اینکه N ضرب در طول بلوک فایل سیستم از طول فایل فشرده شده بیشتر باشد.
  • جستجو برای بلوک در FS که با نشانگر شروع می شود.
  • بلوک های دریافتی را رمزگشایی کنید و نشانگرها را جدا کنید.
  • بلوک های به دست آمده را به ترتیب صحیح جمع آوری کنید و فایل منبع را دریافت کنید.

برای دوستداران بلوک دیاگرام

در زیر بلوک دیاگرام الگوریتم ضبط آورده شده است. الگوریتم سه فایل را به عنوان ورودی دریافت می کند:
تصویر سیستم فایل.
-فایل با کلید رمزگذاری برای AES.
-فایل با نشانگر
استگانوگرافی سیستم فایل

پس از اجرای برنامه، فایل Read ظاهر می شود که فایل استخراج شده از سیستم فایل استگانوگراف شده است؛ اگر کلید یا نشانگر به اشتباه مشخص شده باشد، فایل Read خالی خواهد بود.
(برای دوستداران زیبایی، می توانید نه تنها فایل، بلکه یک "هدر" حاوی اطلاعات متا را وارد کنید: نام فایل، حقوق، آخرین زمان تغییر و غیره)

اتوماسیون راه اندازی

برای راحتی، اسکریپت‌های bash برای خودکار کردن راه‌اندازی در لینوکس نوشته شدند (تست شده در اوبونتو 16.04.3 LTS).
بیایید مرحله به مرحله راه اندازی را بررسی کنیم.
رکورد:

  1. sudo Copy_Flash.sh "DEVICE" - تصویر FS را از DEVICE (فلش) دریافت کنید.
  2. ./Write.sh "FILE" "KEY" "MARKER" - ایجاد یک محیط مجازی، دانلود کتابخانه های لازم و اجرای اسکریپت نوشتن.
  3. sudo ./Write_Flash.sh "DEVICE" - FS تغییر یافته را دوباره به DEVICE بنویسید.

خواندن:

  1. sudo Copy_Flash.sh "DEVICE" - تصویر FS را از DEVICE (فلش) دریافت کنید.
  2. ./Read.sh "KEY" 'MARKER" - یک محیط مجازی ایجاد کنید، کتابخانه های لازم را دانلود کنید و skipt را برای خواندن اجرا کنید.
  3. در فهرست فعلی، فایل Read را باز کنید - این اطلاعات فشرده شده است.

نتیجه

این روش استگانوگرافی احتمالاً نیاز به بهبود، آزمایش اضافی و گسترش به سیستم های فایل محبوب تر، مانند چربی 32, NTFS и ext4.
اما هدف از این کار نشان دادن اصلی بود که توسط آن می توان ذخیره سازی پنهان اطلاعات را در سیستم فایل انجام داد.
با کمک چنین الگوریتم‌هایی می‌توانید بدون ترس اطلاعات را ذخیره کنید، و اگر اگر کلید را می‌دانید، می‌توانید چنین سیستمی را نه با زور (بلکه با یک الگوریتم بسیار طولانی) هک کنید، بدون دانستن کلید، این کار را انجام دهید. به نظر من سیستم کاملاً پایدار است، با این حال، این ممکن است دلیلی برای مقاله جداگانه باشد.

همه کدها در پایتون نسخه 3.5.2 پیاده سازی شده است. نمونه کار در کانال یوتیوب من ارائه شده است. کد کامل پروژه در پست شده است گیتهاب.
(بله، بله، می دانم که برای نسخه تولیدی باید چیزی "سریع" بنویسید، به عنوان مثال C 😉)
در این پیاده سازی، حجم فایل ورودی برای استگانوگرافی نباید از 1000 کیلوبایت بیشتر شود.

من می خواهم از کاربر تشکر کنم PavelMSTU برای مشاوره ارزشمند در برنامه ریزی مطالعه و توصیه هایی در مورد طراحی مقاله.

منبع: www.habr.com

اضافه کردن نظر