Steganografia e sistemit të skedarëve

Hej Habr.

Do të doja t'ju prezantoj një projekt të vogël mbi steganografi, bërë në kohën time të lirë nga studimi.

Kam bërë një projekt për ruajtjen e fshehur të informacionit në sistemin e skedarëve (më tej FS).
Kjo mund të përdoret për të vjedhur informacion konfidencial për qëllime edukative.

Steganografia e sistemit të skedarëve

Një Linux FS shumë i vjetër u zgjodh si prototip ext2.

Zbatimi

Konsideratat e zbatimit

Nëse është mirë të "zbulosh" standardin ext2, atëherë mund të zëvendësosh që në FS ekziston një i ashtuquajtur Superblloqe, i cili ofron informacion bazë për sistemin. Pasi u gjeta Blloko Bitmap и Tabela Inode. Pothuajse menjëherë, lindi ideja e regjistrimit të informacionit në blloqe aktualisht boshe FS. Tani ia vlente të mendohej për mbrojtjen nga një programues i armatosur redaktor hex.

Nëse ruani informacione të fshehura pa kriptim, atëherë, edhe përkundër paqartësisë së tij në FS, ai do të jetë akoma shumë i dukshëm, veçanërisht nëse programuesi e di se çfarë të kërkojë. Prandaj, u vendos që të kriptohet të gjitha blloqet e skedarit burimor. Zgjodha kodin e bllokut AES, por siç e kuptoni, kjo nuk është e rëndësishme.

Për të ndarë blloqet e nevojshme nga të gjithë të tjerët gjatë leximit, u vendos që në fillim të bllokut të shtohej një shënues i veçantë për secilin bllok. Kjo shenjë u kodua në varësi të numrit të bllokut në skedarin burimor. Ky truk bëri të mundur menjëherë jo vetëm gjetjen e blloqeve të nevojshme, por edhe njohjen e rendit të saktë të tyre.

Parimi i përgjithshëm i funksionimit të sistemit.

Steganografia e sistemit të skedarëve

Algoritmi i regjistrimit

Pikat:

  • Fillimisht shkruani disa informacione në sistemin e skedarëve burimor;
  • Fshini këtë informacion (jo domosdoshmërisht të gjithë);
  • Skedari që do të fshihet ndahet në blloqe me gjatësi të barabartë, duke shtuar një shënues;
  • Enkriptoni këto blloqe;
  • Vendosni blloqe të koduara në blloqe boshe FS.

Për dashamirët e bllok diagrameve

Më poshtë është një bllok diagram i algoritmit të regjistrimit. Algoritmi merr katër skedarë si hyrje:
-Imazhi i një sistemi skedarësh të modifikueshëm;
-Dosja që i nënshtrohet steganografisë;
-Skedar me çelës enkriptimi për AES;
- Skedari me shënues.
Steganografia e sistemit të skedarëve

Vlen të përmendet menjëherë se ky algoritëm ka një pengesë: pasi të keni shkruar skedarin në FS, nuk mund shkruani ndonjë gjë të re në FS, pasi çdo informacion i ri mund të përfundojë në blloqet që ne kemi ndarë në skedarin tonë të zip, megjithëse kjo hap gjithashtu mundësinë e "mbulimit të shpejtë të gjurmëve tona".

Por është mjaft e qartë se si mund të rregullohet kjo: është e nevojshme të rishkruhet algoritmi për shkrimin e blloqeve në FS. Kjo është një detyrë e kuptueshme, por që kërkon shumë kohë.
Për dëshmi të konseptit nuk e zbatova këtë.

Si rezultat, ndryshimet e mëposhtme do të bëhen në FS; kjo është se si duket FS para steganografisë (një skedar audio është regjistruar më parë).
Steganografia e sistemit të skedarëve
Dhe kjo është se si duket FS me informacionin tashmë të mbyllur.
Steganografia e sistemit të skedarëve

Algoritmi i leximit

Pikat:

  • Me njohuri për çelësin dhe metodën e ndërtimit të shënuesve, kompozoni N shënuesit e parë, me garancinë që N e shumëzuar me gjatësinë e bllokut të sistemit të skedarëve është më e madhe se gjatësia e skedarit të zip;
  • Kërkoni për blloqe në FS duke filluar me shënues;
  • Deshifroni blloqet e marra dhe ndani shënuesit;
  • Mblidhni blloqet që rezultojnë në rendin e duhur dhe merrni skedarin burimor.

Për dashamirët e bllok diagrameve

Më poshtë është një bllok diagram i algoritmit të regjistrimit. Algoritmi merr tre skedarë si hyrje:
-Imazhi i sistemit të skedarëve;
-Skedar me çelës enkriptimi për AES;
- Skedari me shënues.
Steganografia e sistemit të skedarëve

Pas ekzekutimit të programit, shfaqet skedari Read, i cili do të jetë skedari i nxjerrë nga sistemi i skedarëve steganografuar; nëse çelësi ose shënuesi është specifikuar gabimisht, atëherë skedari Read do të jetë bosh.
(për adhuruesit e bukurisë, mund të futni jo vetëm skedarin, por një "titull" që përmban meta-informacion: emrin e skedarit, të drejtat, kohën e fundit të modifikuar, etj.)

Automatizimi i fillimit

Për lehtësi, skriptet bash u shkruan për të automatizuar lëshimin në Linux (testuar në Ubuntu 16.04.3 LTS).
Le të shohim nisjen hap pas hapi.
regjistruar:

  1. sudo Copy_Flash.sh “DEVICE” - merrni imazhin FS nga DEVICE (flash);
  2. ./Write.sh “FILE” “KEY” “MARKER” – krijoni një mjedis virtual, shkarkoni bibliotekat e nevojshme dhe ekzekutoni skriptin e shkrimit;
  3. sudo ./Write_Flash.sh “DEVICE” – shkruani FS-në e ndryshuar sërish në DEVICE.

Leximi:

  1. sudo Copy_Flash.sh “DEVICE” - merrni imazhin FS nga DEVICE (flash);
  2. ./Read.sh “KEY” 'MARKER” - krijoni një mjedis virtual, shkarkoni bibliotekat e nevojshme dhe ekzekutoni kapërcimin për lexim;
  3. Në drejtorinë aktuale, hapni skedarin Lexoni - ky është informacioni i zip.

Përfundim

Kjo metodë steganografie ndoshta ka nevojë për përmirësim, testim shtesë dhe shtrirje në sisteme skedarësh më të njohur, si p.sh Yndyrë32, NTFS и ext4.
Por qëllimi i kësaj pune ishte të tregonte parimin me të cilin është e mundur të kryhet ruajtja e fshehur e informacionit në sistemin e skedarëve.
Me ndihmën e algoritmeve të tilla, ju mund të ruani pa frikë informacion, dhe nëse, nëse e dini çelësin, është e mundur të hakoni një sistem të tillë jo me forcë brutale (por me një algoritëm shumë të gjatë), atëherë pa e ditur çelësin, kjo sistemi më duket absolutisht i qëndrueshëm, megjithatë, kjo mund të shërbejë si arsye për një artikull të veçantë.

I gjithë kodi është implementuar në versionin 3.5.2 të Python. Shembull pune paraqitur në kanalin tim në youtube. Kodi i plotë i projektit është postuar në Github.
(Po, po, e di që për versionin e prodhimit duhet të shkruani diçka "të shpejtë", për shembull C 😉)
Në këtë zbatim, madhësia e skedarit hyrës për steganografi nuk duhet të kalojë 1000 kB.

Dua të shpreh mirënjohjen time për përdoruesit PavelMSTU për këshilla të vlefshme në planifikimin e studimit dhe rekomandime për hartimin e artikullit.

Burimi: www.habr.com

Shto një koment