Skráarkerfi stiganography

Hæ Habr.

Mig langar að kynna þér lítið verkefni um stiganography, búin til í frítíma mínum frá námi.

Ég gerði verkefni um falinn geymslu upplýsinga í skráarkerfinu (nánar ФС).
Þetta er hægt að nota til að stela trúnaðarupplýsingum í fræðsluskyni.

Skráarkerfi stiganography

Mjög gamalt Linux FS var valið sem frumgerð ext2.

Framkvæmd

Framkvæmdarsjónarmið

Ef það er gott að “unravel” ext2 staðalinn, þá er hægt að skipta út því að í FS er svokallaður Ofurblokkir, sem veitir grunnupplýsingar um kerfið. Eftir að ég fannst Lokaðu bitamynd и Inode Tafla. Næstum strax fæddist hugmyndin um að skrá upplýsingar í tómar FS-blokkir sem nú eru. Nú var það þess virði að hugsa um vernd gegn vopnuðum forritara hex ritstjóri.

Ef þú geymir faldar upplýsingar án dulkóðunar, þá, jafnvel þrátt fyrir óskýrleika í FS, verða þær samt of áberandi, sérstaklega ef forritarinn veit hvað hann á að leita að. Því var ákveðið að dulkóða alla kubba frumskrárinnar. Ég valdi blokka dulmál AES, en eins og þú skilur er þetta ekki mikilvægt.

Til að aðskilja nauðsynlega kubba frá öllum öðrum við lestur var ákveðið að setja sérstöku merki við hvern kubba í upphafi reitsins. Þetta tákn var dulkóðað eftir blokkanúmerinu í upprunaskránni. Þetta bragð gerði það strax mögulegt að finna nauðsynlegar blokkir, heldur einnig að þekkja rétta röð þeirra.

Almenn rekstrarregla kerfisins.

Skráarkerfi stiganography

Reiknirit fyrir upptöku

Punktarnir:

  • Skrifaðu fyrst smá upplýsingar í frumskráakerfið;
  • Eyða þessum upplýsingum (ekki endilega öllum);
  • Skránni sem á að fela er skipt í jafnlanga kubba og bæta við merki;
  • Dulkóða þessar blokkir;
  • Settu dulkóðaða kubba í tóma FS kubba.

Fyrir unnendur blokkarrita

Hér að neðan er blokkarmynd af upptökualgríminu. Reikniritið fær fjórar skrár sem inntak:
-Mynd af breytanlegu skráarkerfi;
-Skrá háð stiganography;
-Skrá með dulkóðunarlykli fyrir AES;
-Skrá með merki.
Skráarkerfi stiganography

Það er rétt að taka fram strax að þetta reiknirit hefur einn galli: eftir að skráin hefur verið skrifuð í FS, getur ekki skrifaðu eitthvað nýtt inn í FS, þar sem allar nýjar upplýsingar geta endað í kubbunum sem við höfum úthlutað í zip-skrána okkar, þó að þetta opni líka möguleika á að „fljótt hylja lögin okkar“.

En það er alveg augljóst hvernig hægt er að laga þetta: það er nauðsynlegt að endurskrifa reikniritið til að skrifa blokkir í FS. Þetta er skiljanlegt, en ótrúlega tímafrekt verkefni.
Fyrir Proof Of Consept útfærði ég þetta ekki.

Þess vegna verða eftirfarandi breytingar gerðar á FS; svona lítur FS út fyrir stiganography (hljóðskrá var áður tekin upp).
Skráarkerfi stiganography
Og svona lítur FS út með upplýsingarnar sem þegar eru búnar niður.
Skráarkerfi stiganography

Reiknirit fyrir lestur

Punktarnir:

  • Með þekkingu á lyklinum og aðferðinni við að smíða merki, settu saman fyrstu N merkin, með þeirri tryggingu að N margfaldað með lengd skráarkerfisblokkarinnar sé stærri en lengd stiganógrafuðu skráarinnar;
  • Leitaðu að kubbum í FS sem byrjar á merkjum;
  • Leiðgreina mótteknu blokkirnar og aðskilja merkin;
  • Safnaðu kubbunum sem myndast í réttri röð og fáðu upprunaskrána.

Fyrir unnendur blokkarrita

Hér að neðan er blokkarmynd af upptökualgríminu. Reikniritið fær þrjár skrár sem inntak:
-Skráakerfismynd;
-Skrá með dulkóðunarlykli fyrir AES;
-Skrá með merki.
Skráarkerfi stiganography

Eftir að forritið er keyrt birtist Read skráin, sem verður skráin sem er dregin út úr stiganographed skráarkerfinu; ef lykillinn eða merkið var rangt tilgreint, þá verður Read skráin tóm.
(Fyrir unnendur fegurðar geturðu sett inn ekki aðeins skrána heldur „haus“ sem inniheldur meta-upplýsingar: skráarheiti, réttindi, síðasti breyttur tími osfrv.)

Sjálfvirkni gangsetning

Til þæginda voru bash forskriftir skrifaðar til að gera sjálfvirkan ræsingu á Linux (prófuð á Ubuntu 16.04.3 LTS).
Við skulum skoða kynninguna skref fyrir skref.
Met:

  1. sudo Copy_Flash.sh "DEVICE" - fáðu FS myndina frá DEVICE (flash);
  2. ./Write.sh “FILE” “KEY” “MARKER” – búðu til sýndarumhverfi, halaðu niður nauðsynlegum bókasöfnum og keyrðu skrifforritið;
  3. sudo ./Write_Flash.sh “DEVICE” – skrifaðu breytta FS aftur í DEVICE.

Lestur:

  1. sudo Copy_Flash.sh "DEVICE" - fáðu FS myndina frá DEVICE (flash);
  2. ./Read.sh „KEY“ 'MARKER“ - búa til sýndarumhverfi, hlaða niður nauðsynlegum bókasöfnum og keyra skiptið til að lesa;
  3. Í núverandi möppu, opnaðu Lesa skrána - þetta eru þjöppuðu upplýsingarnar.

Ályktun

Þessi stiganography aðferð þarf líklega úrbætur, viðbótarprófun og framlengingu við vinsælari skráarkerfi, svo sem Fita32, NTFS и ext4.
En tilgangur þessarar vinnu var að sýna meginregluna um að hægt sé að framkvæma falinn geymslu upplýsinga í skráarkerfinu.
Með hjálp slíkra reiknirita er hægt að geyma upplýsingar óttalaust og ef, ef þú þekkir lykilinn, er hægt að hakka slíkt kerfi ekki með grófu afli (heldur með mjög löngum reiknirit), þá án þess að vita lykilinn, þá kerfið virðist mér vera algerlega stöðugt, þó gæti þetta verið ástæða fyrir sérstakri grein.

Allur kóði er útfærður í Python útgáfu 3.5.2. Dæmi um vinnu kynnt á youtube rásinni minni. Heildarkóði verkefnisins er birtur á GitHub.
(Já, já, ég veit að fyrir framleiðsluútgáfuna þarftu að skrifa eitthvað „hratt“, til dæmis C 😉)
Í þessari útfærslu ætti stærð inntaksskrárinnar fyrir stiganography ekki að fara yfir 1000 kB.

Ég vil koma á framfæri þakklæti til notandans PavelMSTU fyrir dýrmæta ráðgjöf við skipulagningu rannsóknarinnar og ráðleggingar um hönnun greinarinnar.

Heimild: www.habr.com

Bæta við athugasemd