Steganografie v souborovém systému

Čau Habr.

Chci vám představit malý projekt na steganografievyrobené ve svém volném čase.

Vytvořil jsem projekt o skrytém ukládání informací v souborovém systému (dále FS).
Toho lze využít ke krádeži důvěrných informací pro vzdělávací účely.

Steganografie v souborovém systému

Jako prototyp byl vybrán velmi starý Linux FS ext2.

uskutečnění

Úvahy o implementaci

Pokud je dobré „dráždit“ standard ext2, tak můžeme nahradit, že ve FS je tzv. Superbloky, který poskytuje základní informace o systému. Po mně byli nalezeni bloková bitmapa и Tabulka inodů. Téměř okamžitě se zrodila myšlenka zapisovat informace do aktuálně prázdných bloků FS. Nyní stálo za zvážení ochrany před programátorem vyzbrojeným hex editor.

Pokud ukládáte skryté informace bez šifrování, pak, i když jsou ve FS rozmazané, budou stále příliš nápadné, zvláště pokud programátor ví, co má hledat. Proto bylo rozhodnuto zašifrovat všechny bloky zdrojového souboru. Zvolil jsem blokovou šifru AES, ale jak vidíte, je to jedno.

Aby bylo možné při čtení oddělit potřebné bloky od všech ostatních, bylo rozhodnuto přidat ke každému bloku na začátek bloku speciální značku. Tato značka byla zašifrována v závislosti na čísle bloku ve zdrojovém souboru. Takový trik okamžitě umožnil nejen najít správné bloky, ale také zjistit jejich správné pořadí.

Obecný princip systému.

Steganografie v souborovém systému

Algoritmus záznamu

Body:

  • Nejprve zapište nějaké informace do původního systému souborů;
  • Smažte tyto informace (ne nutně všechny);
  • Rozdělte soubor tak, aby se skryl na bloky stejné délky přidáním značky;
  • Zašifrujte tyto bloky;
  • Umístěte zašifrované bloky do prázdných bloků FS.

Pro milovníky vývojových diagramů

Níže je blokové schéma záznamového algoritmu. Algoritmus přijímá jako vstup čtyři soubory:
-Obrázek proměnlivého systému souborů;
-Soubor podléhající steganografii;
-Soubor s šifrovacím klíčem pro AES;
-Filmujte fixem.
Steganografie v souborovém systému

Hned je třeba poznamenat, že tento algoritmus má jednu nevýhodu: po zapsání souboru do FS, nesmí napsat něco nového do FS, protože jakákoli nová informace se může dostat do bloků, které jsme přiřadili našemu zazipovanému souboru, i když to také otevírá možnost „rychlého zakrytí stop“.

Je ale zcela zřejmé, jak to lze opravit: je nutné přepsat algoritmus pro zápis bloků do FS. To je pochopitelný, ale neuvěřitelně časově náročný úkol.
Pro Proof Of Consept jsem to neimplementoval.

Výsledkem budou následující změny ve FS, takto vypadá FS před steganografií (dříve byl nahrán zvukový soubor).
Steganografie v souborovém systému
A takto vypadá FS s již zazipovanými informacemi.
Steganografie v souborovém systému

Algoritmus čtení

Body:

  • Se znalostí klíče a způsobu konstrukce značek sestavte prvních N značek se zárukou, že N vynásobené délkou bloku souborového systému je větší než délka zazipovaného souboru;
  • Hledejte bloky ve FS počínaje značkami;
  • Dešifrovat přijaté bloky a oddělit značky;
  • Sestavte výsledné bloky ve správném pořadí a získejte zdrojový soubor.

Pro milovníky vývojových diagramů

Níže je blokové schéma záznamového algoritmu. Algoritmus přijímá jako vstup tři soubory:
- Obrazový souborový systém;
-Soubor s šifrovacím klíčem pro AES;
-Filmujte fixem.
Steganografie v souborovém systému

Po spuštění programu se objeví soubor Read, což bude soubor extrahovaný ze steganografovaného FS, pokud byl klíč nebo značka zadána špatně, bude soubor Read prázdný.
(pro milovníky krásy můžete proložit nejen soubor, ale i „záhlaví“ obsahující metainformace: název souboru, práva, čas poslední úpravy atd.)

Spusťte automatizaci

Pro usnadnění byly napsány bash skripty, které automatizují spouštění v Linuxu (testováno na Ubuntu 16.04.3 LTS).
Pojďme se na spuštění podívat krok za krokem.
Záznam:

  1. sudo Copy_Flash.sh "ZAŘÍZENÍ" - získat obraz FS ze zařízení DEVICE (flash);
  2. ./Write.sh "FILE" "KEY" "MARKER" - vytvořte virtuální prostředí, stáhněte si potřebné knihovny a spusťte zapisovací skript;
  3. sudo ./Write_Flash.sh "ZAŘÍZENÍ" - zapište upravený FS zpět do DEVICE.

Čtení:

  1. sudo Copy_Flash.sh "ZAŘÍZENÍ" - získat obraz FS ze zařízení DEVICE (flash);
  2. ./Read.sh “KEY” 'MARKER” - vytvořte virtuální prostředí, stáhněte si potřebné knihovny a spusťte skript pro čtení;
  3. V aktuálním adresáři otevřete soubor Číst – to jsou zazipované informace.

Závěr

Tento způsob steganografie je pravděpodobně potřeba vylepšit, dále testovat a rozšířit na populárnější souborové systémy jako např Fat32, NTFS и ext4.
Účelem této práce však bylo ukázat princip, kterým je možné provádět skryté ukládání informací v souborovém systému.
S pomocí takových algoritmů můžete nebojácně ukládat informace, a pokud se znalostí klíče může být takový systém hacknut ne vyčerpávajícím hledáním (ale velmi dlouhým algoritmem), pak bez znalosti klíče tento systém se mi jeví jako naprosto stabilní, nicméně to může posloužit jako důvod pro samostatný článek.

Veškerý kód je implementován v Pythonu verze 3.5.2. Pracovní příklad vystupoval na mém youtube kanálu. Kompletní kód projektu je k dispozici na GitHub.
(Ano, ano, vím, že pro produkční verzi je potřeba psát něčím “rychlým”, např. C 😉 )
V této implementaci by velikost vstupního souboru pro steganografii neměla přesáhnout 1000 kB.

Chci poděkovat uživateli PavelMSTU za cenné rady při plánování studie a doporučení k designu článku.

Zdroj: www.habr.com

Přidat komentář