Steganografia në sistemin e dosjeve

Përshëndetje, Habr.

Dëshiroj t'ju prezantoj një projekt të vogël mbi steganografinë, i bërë në kohën time të lirë nga studimet.

Kam realizuar një projekt për ruajtjen e fshehtë të informacionit në sistemin e skedarëve (më poshtë FS).
Kjo mund të përdoret për vjedhjen e informacionit të ndjeshëm për qëllime edukative.

Steganografia në sistemin e dosjeve

Si një mostër eksperimentale ishte zgjedhur një sistem skedarësh të vjetër linuks, ext2.

Implementimi

Konsideratat për zbatimin

Nëse e "shkarkon" standardin ext2 mirë, mund të zbulosh se në FS ekziston një Superblock, në të cilin jepet informacioni kryesor rreth sistemit. Më pas, unë gjeta Block Bitmap dhe Tabela e Inode-ve.. Pothuajse menjëherë lindi ideja për të regjistruar informacionin në blloqet për momentin bosh të FS. Tani duhej të mendohej për mbrojtjen nga programuesi, i armatosur me editorin hex.

Nëse ruhet informacioni i fshehtë pa enkriptim, atëherë, përkundër paqartësisë së tij në FS, do të jetë ende shumë i dukshëm, veçanërisht nëse programuesi e di se çfarë duhet të kërkojë. Prandaj, u mor vendimi për të enkriptuar të gjitha blloqet e skedarit origjinal. Kam zgjedhur enkriptimin me bllok, AESpor siç e kuptoni, kjo nuk është thelbësore.

Për të ndarë blloqet e nevojshme nga të tjerët gjatë leximit, u vendos të shtohet një shenjë speciale në fillim të çdo blloku. Kjo shenjë u enkriptua në varësi të numrit të bllokut në skedarin origjinal. Kjo strategji lejon jo vetëm të gjeje blloqet e nevojshme, por edhe të zbuloje rendin e tyre të saktë.

Parimi i përgjithshëm i punës së sistemit.

Steganografia në sistemin e dosjeve

Algoritmi i regjistrimit

Hapat:

  • SĂ« pari, shkruani ndonjĂ« informacion nĂ« sistemin e skedarĂ«ve origjinal;
  • Fshihni kĂ«tĂ« informacion (nuk Ă«shtĂ« e nevojshme tĂ« fshihni tĂ« gjithĂ«);
  • Shkruani skedarin pĂ«r t'u fshehur nĂ« blloqe me gjatĂ«si tĂ« barabartĂ«, duke shtuar njĂ« shenjĂ«;
  • Enkriptoni kĂ«to blloqe;
  • Vendosni blloqet e enkriptuara nĂ« blloqet bosh tĂ« FS.

Për adhuruesit e diagrameve të bllokut

Më poshtë paraqitet një diagram blloku i algoritmit të regjistrimit. Në hyrje, algoritmi merr katër skedare:
- Imazhin e sistemit të skedarëve që do të ndryshohet;
- Skedarin që do të nënshtrohet steganografisë;
- Skedarin me çelësin e enkriptimit për AES;
- Skedarin me shenjën.
Steganografia në sistemin e dosjeve

MenjĂ«herĂ« duhet theksuar se ky algoritĂ«m ka njĂ« disavantazh: pas regjistrimit tĂ« skedarit nĂ« FS, pĂ«r shkak tĂ« ndryshimeve qĂ« nuk janĂ« marrĂ« parasysh nĂ« paketĂ«n R — presim qĂ« tĂ« rregullojnĂ«. nuk mund tĂ« shkruani ndonjĂ« informacion tĂ« ri nĂ« FS, pasi çdo informacion i ri mund tĂ« mbulojĂ« blloqet qĂ« kemi rezervuar pĂ«r skedarin tonĂ« tĂ« steganografuar, megjithatĂ«, kjo hap mundĂ«sinĂ« e "pastrimit tĂ« shpejtĂ« tĂ« gjurmĂ«ve".

Porosinë është e qartë se si mund të rregullohet: është e nevojshme të riprogramohet algoritmi për regjistrimin e blloqeve në FS. Kjo është një detyrë e qartë, por jashtëzakonisht e lodhshme.
Për qëllime të Proof Of Concept nuk e kam realizuar këtë.

Si rezultat, do të kemi ndryshime të tilla në FS, ja si duket FS para steganografisë (një skedar audio është regjistruar paraprakisht).
Steganografia në sistemin e dosjeve
Ja si duket FS me informacion të steganografuar tashmë.
Steganografia në sistemin e dosjeve

Algoritmi i leximit

Hapat:

  • Duke ditur çelĂ«sin dhe mĂ«nyrĂ«n e ndĂ«rtimit tĂ« markave, krijohet grupi i parĂ« i N markave, me garanci qĂ« N, tĂ« shumĂ«zohet me gjatĂ«sinĂ« e bllokut tĂ« sistemit tĂ« skedarit, Ă«shtĂ« mĂ« e madhe se gjatĂ«sia e skedarit tĂ« steganografuar.
  • TĂ« kĂ«rkosh blloqet nĂ« FS qĂ« fillojnĂ« me markat;
  • Dekripto blloqet e marra dhe ndaje markat;
  • Mblidh blloqet e marra nĂ« rendin e duhur dhe merr skedarin origjinal.

Për adhuruesit e diagrameve të bllokut

Më poshtë është paraqitur një diagram i algoritmit të regjistrimit. Në hyrje, algoritmi merr tre skedarë:
-Imazhi i sistemit të skedarëve;
- Skedarin me çelësin e enkriptimit për AES;
- Skedarin me shenjën.
Steganografia në sistemin e dosjeve

Pas ekzekutimit të programit, shfaqet skedari Read, i cili do të jetë skedari i nxjerrë nga FS-ja steganografike, nëse çelësi ose marka janë specifikuar gabimisht, atëherë skedari Read do të jetë i zbrazët.
(për adhuruesit e bukurisë, mund të përfshihen jo vetëm skedari, por edhe "kapaku", që përmban meta-informacion: emri i skedarit, të drejtat, koha e ndryshimit të fundit, etj.)

Automatizimi i ekzekutimit

Për lehtësinë, janë shkruar skripte bash që automatizojnë ekzekutimin në Linux (testuar në Ubuntu 16.04.3 LTS).
Të analizojmë ekzekutimin hap pas hapi.
Shkrimi:

  1. sudo Copy_Flash.sh “DEVICE” — marrim imazhin e FS nga DEVICE (flash);
  2. .\/Write.sh “FILE” “KEY” “MARKER” – krijojmĂ« njĂ« mjedis virtual, shkarkojmĂ« libraritĂ« e nevojshme dhe startojmĂ« skriptin pĂ«r regjistrim;
  3. sudo .\/Write_Flash.sh “DEVICE” – regjistrojmĂ« FS-nĂ« e modifikuar sĂ«rish nĂ« DEVICE.

Leximi:

  1. sudo Copy_Flash.sh “DEVICE” — marrim imazhin e FS nga DEVICE (flash);
  2. .\/Read.sh “KEY” ‘MARKER” — krijojmĂ« njĂ« mjedis virtual, shkarkojmĂ« libraritĂ« e nevojshme dhe startojmĂ« skriptin pĂ«r lexim;
  3. NĂ« katalogun aktual hapim skedarin Read – ky Ă«shtĂ« informacioni i steganografuar.

Përfundim

Ky metod i steganografisë, ndoshta, ka nevojë për përmirësim, testim të mëtejshëm dhe zgjerim në sisteme skedarësh më të njohura, siç janë Fat32, NTFS dhe ext4.
Por qëllimi i këtij punimi ishte të tregonte principin, me anë të të cilit mund të realizohet ruajtja e fshehtë e informacionit në sistemin e skedarëve.
Me këto algoritme, mund të ruani informacionin pa frikë, dhe ndërsa, duke ditur çelësin, është e mundur të thyehet një sistem të tillë jo përmes përmbytjes së plotë (por me një algoritëm mjaft të gjatë), pa njohuri për çelësin, kjo sistem më duket krejtësisht i qëndrueshëm; gjithsesi, kjo mund të shërbejë si shkak për një artikull të veçantë.

I gjithë kodi është realizuar në gjuhën Python versioni 3.5.2. Shembulli i punës është paraqitur në kanalin tim youtube. Kodi i plotë i projektit është publikuar në github.
(Po, po, e di qĂ« pĂ«r versionin e prodhimit duhet tĂ« shkruhen nĂ« diçka "tĂ« shpejtĂ«", pĂ«r shembull nĂ« C 😉 )
Në këtë realizim, madhësia e skedarit hyrës për steganografinë nuk duhet të kalojë 1000 kB.

Dëshiroj të shpreh mirënjohje përdoruesit PavelMSTU për këshillat e çmuara gjatë planifikimit të hulumtimit dhe rekomandimet për përgatitjen e artikullit.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster