Failisüsteemi steganograafia

Tere Habr.

Tahaksin teile tutvustada väikest projekti steganograafia, tehtud õppimisest vabal ajal.

Tegin projekti teabe varjatud salvestamiseks failisüsteemis (edaspidi ФС).
Seda saab kasutada konfidentsiaalse teabe varastamiseks hariduslikel eesmärkidel.

Failisüsteemi steganograafia

Prototüübiks valiti väga vana Linux FS ext2.

Реализация

Rakendamise kaalutlused

Kui ext2 standardit on hea “lahti harutada”, siis võid asendada selle, et FS-is on nn. Superplokid, mis annab põhiteavet süsteemi kohta. Pärast seda, kui mind leiti Blokeeri bitmap и Inode tabel. Peaaegu kohe sündis idee salvestada teave praegu tühjadesse FS-i plokkidesse. Nüüd tasus mõelda kaitsele relvastatud programmeerija eest hex redaktor.

Kui salvestate peidetud teavet ilma krüptimiseta, on see isegi FS-i hägususest hoolimata liiga silmatorkav, eriti kui programmeerija teab, mida otsida. Seetõttu otsustati kõik lähtefaili plokid krüpteerida. Valisin plokkšifri AES, kuid nagu te aru saate, pole see oluline.

Et lugemisel vajalikud klotsid kõigist teistest eraldada, otsustati igale plokile ploki algusesse lisada spetsiaalne marker. See luba krüpteeriti sõltuvalt lähtefaili ploki numbrist. See trikk võimaldas kohe mitte ainult vajalike klotside leidmise, vaid ka nende õige järjekorra äratundmise.

Süsteemi üldine tööpõhimõte.

Failisüsteemi steganograafia

Salvestusalgoritm

Punktid:

  • Esmalt kirjutage osa teavet lähtefailisüsteemi;
  • Kustutage see teave (mitte tingimata kõik);
  • Peidetav fail jagatakse võrdse pikkusega plokkideks, lisades sellele markeri;
  • Krüpteeri need plokid;
  • Asetage krüpteeritud plokid tühjadesse FS-plokkidesse.

Plokkskeemide armastajatele

Allpool on salvestusalgoritmi plokkskeem. Algoritm saab sisendiks neli faili:
-Muudetatava failisüsteemi pilt;
-Steganograafiale allutatud fail;
-AES-i krüpteerimisvõtmega fail;
-Viil markeriga.
Failisüsteemi steganograafia

Tasub kohe märkida, et sellel algoritmil on üks puudus: pärast faili FS-i kirjutamist, ei tohi kirjutage FS-i midagi uut, kuna igasugune uus teave võib sattuda plokkidesse, mille oleme oma ZIP-failile eraldanud, kuigi see avab ka võimaluse "meie rajad kiiresti katta".

Kuid on üsna ilmne, kuidas seda parandada: FS-i plokkide kirjutamise algoritm on vaja ümber kirjutada. See on arusaadav, kuid uskumatult aeganõudev ülesanne.
Proof Of Consept puhul ma seda ei rakendanud.

Selle tulemusena tehakse FS-is järgmised muudatused: selline näeb FS välja enne steganograafiat (eelnevalt salvestati helifail).
Failisüsteemi steganograafia
Ja selline näeb FS välja, kui teave on juba kokku pandud.
Failisüsteemi steganograafia

Lugemisalgoritm

Punktid:

  • Teades võtit ja markerite koostamise meetodit, koostage esimesed N markerit, tagades, et N korrutatuna failisüsteemi ploki pikkusega on suurem kui pakitud faili pikkus;
  • Otsige FS-st markeritega algavaid plokke;
  • Dešifreerige saadud plokid ja eraldage markerid;
  • Koguge saadud plokid õiges järjekorras ja hankige lähtefail.

Plokkskeemide armastajatele

Allpool on salvestusalgoritmi plokkskeem. Algoritm saab sisendiks kolm faili:
-Failisüsteemi pilt;
-AES-i krüpteerimisvõtmega fail;
-Viil markeriga.
Failisüsteemi steganograafia

Pärast programmi käivitamist kuvatakse lugemisfail, mis on steganograafiga failisüsteemist ekstraktitud fail; kui võti või marker on valesti määratud, on lugemisfail tühi.
(ilusõpradele saate sisestada mitte ainult faili, vaid ka "päise", mis sisaldab metateavet: faili nimi, õigused, viimati muudetud aeg jne.)

Käivitamise automatiseerimine

Mugavuse huvides kirjutati bash-skriptid Linuxis käivitamise automatiseerimiseks (testitud Ubuntu 16.04.3 LTS-is).
Vaatame käivitamist samm-sammult.
Kirje:

  1. sudo Copy_Flash.sh “DEVICE” - hankige FS-pilt seadmest DEVICE (flash);
  2. ./Write.sh “FILE” “KEY” “MARKER” – loo virtuaalne keskkond, lae alla vajalikud teegid ja käivita kirjutamisskript;
  3. sudo ./Write_Flash.sh “DEVICE” – kirjuta muudetud FS uuesti seadmesse DEVICE.

Lugemine:

  1. sudo Copy_Flash.sh “DEVICE” - hankige FS-pilt seadmest DEVICE (flash);
  2. ./Read.sh “KEY” MARKER – loo virtuaalne keskkond, laadi alla vajalikud teegid ja käivita lugemiseks vahelejätmine;
  3. Avage praeguses kataloogis fail Read - see on pakitud teave.

Järeldus

See steganograafia meetod vajab ilmselt täiustamist, täiendavat testimist ja laiendust populaarsematele failisüsteemidele, nt Rasv32, NTFS и ext4.
Kuid selle töö eesmärk oli näidata põhimõtet, mille järgi on võimalik failisüsteemis teavet varjatud salvestada.
Selliste algoritmide abil saate kartmatult teavet salvestada ja kui võtit teades on võimalik sellist süsteemi häkkida mitte toore jõu (vaid väga pika algoritmi) abil, siis võtit teadmata on see süsteem tundub mulle täiesti stabiilne, kuid see võib olla põhjus eraldi artikli jaoks.

Kogu kood on rakendatud Pythoni versioonis 3.5.2. Näide tööst esitleti minu youtube kanalil. Projekti täielik kood on postitatud aadressil github.
(Jah, jah, ma tean, et tootmisversiooni jaoks on vaja kirjutada midagi “kiire”, näiteks C 😉)
Selles teostuses ei tohiks steganograafia sisendfaili suurus ületada 1000 kB.

Tahan avaldada kasutajale tänu PavelMSTU väärtuslikke nõuandeid uuringu kavandamisel ja soovitusi artikli kujunduse kohta.

Allikas: www.habr.com

Lisa kommentaar