Стеганографија на датотечен систем

Еј Хабр.

Би сакал да ви презентирам мал проект за стеганографија, направени во слободното време од учењето.

Направив проект за скриено складирање на информации во датотечниот систем (понатаму ФС).
Ова може да се користи за кражба на доверливи информации за едукативни цели.

Стеганографија на датотечен систем

Како прототип беше избран многу стар Linux FS ext2.

Реализация

Размислувања за имплементација

Ако е добро да се „открие“ стандардот ext2, тогаш можете да го замените дека во FS постои т.н. Суперблокови, кој дава основни информации за системот. Откако бев пронајден Блокирај битмапа и Инодна табела. Речиси веднаш се роди идејата за снимање информации во моментално празни блокови FS. Сега вреди да се размислува за заштита од вооружен програмер хексадецимален уредник.

Ако складирате скриени информации без шифрирање, тогаш, дури и покрај неговата нејасност во FS, тие сепак ќе бидат премногу забележливи, особено ако програмерот знае што да бара. Затоа, беше одлучено да се шифрираат сите блокови од изворната датотека. Избрав блок шифра АЕС, но како што разбирате, ова не е важно.

За да се одвојат потребните блокови од сите други при читањето, беше одлучено да се додаде посебен маркер на секој блок на почетокот на блокот. Овој токен беше шифриран во зависност од бројот на блокот во изворната датотека. Овој трик веднаш овозможи не само да се најдат потребните блокови, туку и да се препознае нивниот правилен редослед.

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

Стеганографија на датотечен систем

Алгоритам за снимање

Точките:

  • Прво напишете некои информации во изворниот датотечен систем;
  • Избришете ја оваа информација (не мора сите);
  • Датотеката што треба да се скрие е поделена на блокови со еднаква должина, додавајќи маркер;
  • Шифрирајте ги овие блокови;
  • Ставете ги шифрираните блокови во празни блокови FS.

За љубителите на блок дијаграми

Подолу е блок-дијаграм на алгоритмот за снимање. Алгоритмот прима четири датотеки како влез:
-Слика на датотечен систем што може да се модифицира;
-Датотека предмет на стеганографија;
-Датотека со клуч за шифрирање за AES;
-Датотека со маркер.
Стеганографија на датотечен систем

Вреди да се забележи веднаш дека овој алгоритам има еден недостаток: откако ќе ја запишете датотеката во FS, не мора да напишете нешто ново во FS, бидејќи секоја нова информација може да заврши во блоковите што сме ги доделиле на нашата зипувана датотека, иако ова исто така отвора можност за „брзо покривање на нашите траги“.

Но, сосема е очигледно како ова може да се поправи: неопходно е да се преработи алгоритмот за пишување блокови во FS. Ова е разбирлива, но неверојатно одземачка задача.
За доказ за владеење не го спроведов ова.

Како резултат на тоа, следните промени ќе бидат направени во FS; вака изгледа FS пред стеганографијата (претходно беше снимена аудио датотека).
Стеганографија на датотечен систем
И вака изгледа FS со веќе зимувани информации.
Стеганографија на датотечен систем

Алгоритам за читање

Точките:

  • Со познавање на клучот и начинот на конструирање маркери, составете ги првите N маркери, со гаранција дека N помножено со должината на блокот на датотечниот систем е поголем од должината на зипираната датотека;
  • Пребарајте блокови во FS кои започнуваат со маркери;
  • Дешифрирајте ги примените блокови и одделете ги маркерите;
  • Соберете ги добиените блокови во правилен редослед и добијте ја изворната датотека.

За љубителите на блок дијаграми

Подолу е блок-дијаграм на алгоритмот за снимање. Алгоритмот прима три датотеки како влез:
-Слика на датотечен систем;
-Датотека со клуч за шифрирање за AES;
-Датотека со маркер.
Стеганографија на датотечен систем

По извршувањето на програмата, се појавува датотеката Read, која ќе биде датотеката извлечена од стеганографираниот датотечен систем; ако клучот или маркерот биле погрешно наведени, тогаш датотеката Read ќе биде празна.
(за љубителите на убавината, можете да ја испреплетувате не само датотеката, туку и „заглавие“ што содржи мета-информации: име на датотека, права, последно изменето време, итн.)

Автоматизација на стартување

За погодност, баш скриптите беа напишани за да се автоматизира стартувањето на Linux (тестирано на Ubuntu 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“ - креирајте виртуелна средина, преземете ги потребните библиотеки и стартувајте го прескокнувањето за читање;
  3. Во тековниот директориум, отворете ја датотеката Читај - ова се зипираните информации.

Заклучок

Овој стеганографски метод веројатно има потреба од подобрување, дополнително тестирање и проширување на попопуларни датотечни системи, како на пр Масти32, NTFS и ext4.
Но, целта на оваа работа беше да се покаже принципот со кој е можно да се изврши скриено складирање на информации во датотечниот систем.
Со помош на такви алгоритми, можете бестрашно да складирате информации, а ако, ако го знаете клучот, е можно да се хакира таков систем не со брутална сила (туку со многу долг алгоритам), тогаш без да го знаете клучот, ова системот ми се чини дека е апсолутно стабилен, сепак, ова може да послужи како причина за посебна статија.

Целиот код е имплементиран во верзијата 3.5.2 на Python. Пример за работа презентирани на мојот канал на YouTube. Целосниот код на проектот е објавен на github.
(Да, да, знам дека за продукциската верзија треба да напишете нешто „брзо“, на пример C 😉)
Во оваа имплементација, големината на влезната датотека за стеганографија не треба да надминува 1000 kB.

Сакам да изразам благодарност до корисникот ПавелМСТУ за вредни совети при планирањето на студијата и препораки за дизајнот на статијата.

Извор: www.habr.com

Додадете коментар