Стеанография в файловата система

Здравей, Хабр.

Искам да ви представя един малък проект за стеганография, направен в свободното ми време от учението.

Направих проект за скрито съхранение на информация във файловата система (по-нататък ФС).
Това може да се приложи за кражба на конфиденциална информация с образователна цел.

Стеанография в файловата система

Като опитен образец беше избрана доста стара линуксова ФС ext2.

Реализация

Размисли относно реализацията

Ако добре „раздраконите“ стандарт ext2, можете да замените, че във ФС съществува така нареченият Суперблок, в който е дадена основната информация за системата. След мен бяха намерени Блоков битмап и Таблица на инодите. Почти веднага дойде идеята за записване на информация в празните по това време блокове на ФС. Сега трябваше да се помисли за защита от програмист, въоръжен с hex редактор.

Ако се съхранява скритата информация без криптиране, то дори да е размазана по ФС, тя ще бъде твърде очевидна, особено ако програмният разработчик знае какво да търси. Затова беше взето решение да се криптират всичките блокове на входния файл. Избрах блоков шифър AES, но както разбирате, това не е принципно.

За да се отделят необходимите блокове от всички останали при четене, решихме да добавим специален маркер в началото на всеки блок. Този маркер беше криптиран в зависимост от номера на блока в оригиналния файл. Такава уловка веднага позволи не само да се намират нужните блокове, но и да се разпознава правилният им ред.

Общ принцип на работа на системата.

Стеанография в файловата система

Алгоритъм за запис

По точки:

  • Първо, запишете някаква информация в оригиналната файловата система;
  • Изтрийте тази информация (не е необходимо да е всичката);
  • Файлът за скриване да бъде разделен на блокове с еднаква дължина, добавяйки маркер;
  • Криптирайте тези блокове;
  • Поместете криптираните блокове в празни блокове на ФС.

За любителите на блок-схеми

По-долу е представена блок-схема на алгоритъма за запис. На вход алгоритъмът получава четири файла:
-Образ на изменяемата файловата система;
-Файл, подлежащ на стеганография;
-Файл с ключ за криптиране за AES;
-Файл с маркер.
Стеанография в файловата система

Веднага трябва да отбележим, че този алгоритъм има един недостатък: след записването на файла във ФС, не може да се записва нещо ново в файловата система, тъй като всяка нова информация може да попадне в тези блокове, които отпуснахме на нашия стеганографски файл; всъщност, това отваря възможност за „бързо заличаване на следи“.

Но е достатъчно очевидно как може да бъде поправено: необходимо е да се препише алгоритъмът за запис на блокове в файловата система. Това е разбираемо, но невероятно трудоемко предизвикателство.
За Proof Of Concept не го реализирах.

В резултат ще получим следните промени във файловата система; така изглежда файловата система преди стеганографията (предварително е записан аудиофайл).
Стеанография в файловата система
А така изглежда файловата система с вече стеганографирана информация.
Стеанография в файловата система

Алгоритъм на четене

По точки:

  • С познание на ключа и начина на изграждане на маркерите, съставяме първите N маркера, с гаранция, че N, умножено по дължината на блока на файловата система, е по-голямо от дължината на стеганографския файл;
  • Извършваме търсене на блокове във файловата система, започващи с маркерите;
  • Дешифрираме получените блокове и отделяме маркерите;
  • Събираме получените блокове в правилния ред и получаваме оригиналния файл.

За любителите на блок-схеми

По-долу е представена блок-схема на алгоритъма за запис. На вход алгоритъмът получава три файла:
-Образ на файловата система;
-Файл с ключ за криптиране за AES;
-Файл с маркер.
Стеанография в файловата система

След работа на програмата се създава файл Read, който ще бъде извлечен от стеганографския файл; ако ключът или маркерът са посочени неправилно, файлът Read ще бъде празен.
(за любителите на красивостите, може да се вставя не само файл, но и „шапка“, съдържаща метаинформация: име на файл, права, време на последно изменение и т.н.)

Автоматизация на стартиране

За удобство бяха написани bash скриптове, автоматизиращи стартирането на Linux (тестирано на Ubuntu 16.04.3 LTS).
Нека разгледаме стартирането стъпка по стъпка.
Запис:

  1. sudo Copy_Flash.sh "DEVICE" — получаваме образ на файловата система от DEVICE (флаш);
  2. ./Write.sh "FILE" "KEY" "MARKER" – създаваме виртуална среда, изтегляме необходимите библиотеки и стартираме скрипта за запис;
  3. sudo ./Write_Flash.sh "DEVICE" – записваме променената файловата система отново на DEVICE.

Четене:

  1. sudo Copy_Flash.sh "DEVICE" — получаваме образ на файловата система от DEVICE (флаш);
  2. ./Read.sh "KEY" "MARKER" — създаваме виртуална среда, изтегляме необходимите библиотеки и стартираме скрипта за четене;
  3. В текущата директория отваряме файл Read – това е стеганографската информация.

Заключение

Този метод на стеганография вероятно има нужда от доработка, допълнително тестване и разширение към по-популярни файлови системи, като Fat32, NTFS и ext4.
Целта на тази работа беше да се покаже принципът, по който може да се осъществи скрито съхранение на информация в файловата система.
С помощта на подобни алгоритми може да се съхранява информация без притеснения, и ако при познаване на ключа такава система може да бъде пробита не с пълно перебиране (но с доста дълъг алгоритъм), то без знанието на ключа, тази система ми се струва абсолютно устойчива, въпреки че това може да послужи за повод за отделна статия.

Целият код е реализиран на езика Python версия 3.5.2. Пример за работа представен в моя youtube канал. Пълният код на проекта е публикуван на github.
(Да-да, знам, че за версията за продукция трябва да се пише на нещо 'бързо', например на C 😉 )
В тази реализация размерът на входния файл за стеганография не трябва да надвишава 1000 кБ.

Искам да изразя благодарност на потребителя PavelMSTU за ценни съвети при планирането на изследването и препоръки за оформлението на статията.

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster