Ahoj Habr.
Rád by som vám predstavil malý projekt na
Urobil som projekt o skrytom ukladaní informácií v súborovom systéme (ďalej FS).
Toto možno použiť na odcudzenie dôverných informácií na vzdelávacie účely.
Ako prototyp bol vybraný veľmi starý Linux FS
Реализация
Úvahy o implementácii
Ak je dobré „rozmotať“ štandard ext2, tak môžete nahradiť, že vo FS je tzv.
Ak ukladáte skryté informácie bez šifrovania, potom aj napriek ich rozmazanosti vo FS budú stále príliš nápadné, najmä ak programátor vie, čo má hľadať. Preto bolo rozhodnuté zašifrovať všetky bloky zdrojového súboru. Vybral som si blokovú šifru
Aby sa pri čítaní oddelili potrebné bloky od všetkých ostatných, bolo rozhodnuté pridať do každého bloku na začiatok bloku špeciálnu značku. Tento token bol zašifrovaný v závislosti od čísla bloku v zdrojovom súbore. Tento trik okamžite umožnil nielen nájsť potrebné bloky, ale aj rozpoznať ich správne poradie.
Všeobecný princíp fungovania systému.
Algoritmus záznamu
Body:
- Najprv zapíšte nejaké informácie do zdrojového súborového systému;
- Vymažte tieto informácie (nie nevyhnutne všetky);
- Súbor, ktorý sa má skryť, sa rozdelí na bloky rovnakej dĺžky, pričom sa pridá značka;
- Zašifrujte tieto bloky;
- Umiestnite zašifrované bloky do prázdnych blokov FS.
Pre milovníkov blokových schém
Nižšie je bloková schéma záznamového algoritmu. Algoritmus prijíma štyri súbory ako vstup:
-Obrázok upraviteľného súborového systému;
-Súbor podlieha steganografii;
-Súbor so šifrovacím kľúčom pre AES;
-Súbor so značkou.
Okamžite stojí za zmienku, že tento algoritmus má jednu nevýhodu: po zapísaní súboru do FS, nemôže zapíšte do FS čokoľvek nové, pretože každá nová informácia môže skončiť v blokoch, ktoré sme pridelili nášmu zazipovanému súboru, aj keď to tiež otvára možnosť „rýchlo zakryť naše stopy“.
Je však celkom zrejmé, ako sa to dá opraviť: je potrebné prepísať algoritmus na písanie blokov vo FS. Je to pochopiteľná, no neuveriteľne časovo náročná úloha.
Pre dôkaz koncepcie som to neimplementoval.
V dôsledku toho sa na FS vykonajú nasledujúce zmeny; takto vyzerá FS pred steganografiou (predtým bol nahraný zvukový súbor).
A takto vyzerá FS s už zazipovanými informáciami.
Algoritmus čítania
Body:
- So znalosťou kľúča a spôsobu vytvárania značiek zostavte prvých N značiek so zárukou, že N vynásobené dĺžkou bloku súborového systému je väčšie ako dĺžka zazipovaného súboru;
- Vyhľadajte bloky vo FS počnúc značkami;
- Dešifrujte prijaté bloky a oddeľte značky;
- Zozbierajte výsledné bloky v správnom poradí a získajte zdrojový súbor.
Pre milovníkov blokových schém
Nižšie je bloková schéma záznamového algoritmu. Algoritmus prijíma tri súbory ako vstup:
- obraz systému súborov;
-Súbor so šifrovacím kľúčom pre AES;
-Súbor so značkou.
Po spustení programu sa zobrazí súbor Čítať, čo bude súbor extrahovaný zo steganografovaného súborového systému; ak bol kľúč alebo značka zadaná nesprávne, súbor Čítať bude prázdny.
(pre milovníkov krásy môžete vložiť nielen súbor, ale aj „hlavičku“ obsahujúcu metainformácie: názov súboru, práva, čas poslednej úpravy atď.)
Automatizácia spustenia
Pre pohodlie boli napísané bash skripty na automatizáciu spustenia v systéme Linux (testované na Ubuntu 16.04.3 LTS).
Pozrime sa na spustenie krok za krokom.
záznam:
- sudo Copy_Flash.sh „DEVICE“ - získajte obraz FS zo zariadenia DEVICE (flash);
- ./Write.sh “FILE” “KEY” “MARKER” – vytvorte virtuálne prostredie, stiahnite si potrebné knižnice a spustite skript na písanie;
- sudo ./Write_Flash.sh “DEVICE” – zmenený FS zapíšte znova do DEVICE.
Čítanie:
- sudo Copy_Flash.sh „DEVICE“ - získajte obraz FS zo zariadenia DEVICE (flash);
- ./Read.sh “KEY” 'MARKER” - vytvorte virtuálne prostredie, stiahnite si potrebné knižnice a spustite preskočenie na čítanie;
- V aktuálnom adresári otvorte súbor Čítať – toto sú zazipované informácie.
Záver
Táto steganografická metóda zrejme potrebuje vylepšenie, dodatočné testovanie a rozšírenie na populárnejšie súborové systémy, ako napr
Účelom tejto práce však bolo ukázať princíp, pomocou ktorého je možné vykonávať skryté ukladanie informácií v súborovom systéme.
Pomocou takýchto algoritmov môžete nebojácne ukladať informácie, a ak, ak poznáte kľúč, je možné hacknúť takýto systém nie hrubou silou (ale veľmi dlhým algoritmom), potom bez znalosti kľúča toto systém sa mi zdá byť absolútne stabilný, čo však môže slúžiť ako dôvod na samostatný článok.
Celý kód je implementovaný v Pythone verzie 3.5.2.
(Áno, áno, viem, že pre produkčnú verziu treba napísať niečo “rýchlo”, napr. C 😉)
V tejto implementácii by veľkosť vstupného súboru pre steganografiu nemala presiahnuť 1000 kB.
Chcem vyjadriť svoju vďaku používateľovi
Zdroj: hab.com