Steganography eftir skrám: felur gögn beint í geirum

Stutt formáli

Steganography, ef einhver man það ekki, felur upplýsingar í sumum gámum. Til dæmis í myndum (umrædd hér и hér). Þú getur líka falið gögn í þjónustutöflum skráarkerfisins (sem var skrifað um þetta hér), og jafnvel í TCP samskiptareglum þjónustupökkum. Því miður hafa allar þessar aðferðir einn galli: til að „setja“ upplýsingar á ómerkjanlegan hátt inn í gám þarftu slæg reiknirit sem taka mið af sérkennum innri uppbyggingu gámsins. Og vandamál koma upp með viðnám ílátsins gegn meðhöndlun: til dæmis, ef þú breytir myndinni örlítið, glatast faldar upplýsingar.

Er hægt að gera það á einhvern hátt án slægra reiknirita og lúmskra hagræðinga með gögnum og tryggja samt virkni ílátsins og ásættanlegt öryggisstig falinna gagna? Þegar ég horfi fram á veginn segi ég - já, þú getur það! Ég mun jafnvel bjóða upp á tól.

Blóðug smáatriði um aðferðina

Grunnhugmyndin er eins einföld og högg á ennið: Það eru svæði á disknum sem stýrikerfið skrifar aldrei á (eða skrifar í einstaka tilfellum). Til að forðast þörfina á að leita að þessum svæðum með því að nota lævís reiknirit, munum við nota offramboð - það er að segja, við munum afrita faldar upplýsingar okkar mörgum, mörgum sinnum í öllum geirum disksins. Síðan, beint ofan á allan þennan glæsileika, geturðu búið til nauðsynlegar skiptingar, forsniðið skráarkerfi, skrifað skrár og sett upp stýrikerfi - allt það sama, hluti af leynigögnunum verður vistaður og hægt er að sækja, og endurtekin tvíverkun mun hjálpa okkur settu upprunalegu heildina saman úr hlutunum.

Kosturinn við þessa aðferð er augljós: við erum ekki háð skráarsniði, eða jafnvel af gerð skráarkerfisins sem notuð er.

Ókostirnir eru líka, held ég, augljósir:

  • Leynilegum gögnum er aðeins hægt að breyta með því að endurskrifa allan diskinn að fullu og síðan endurskapa efnið sem er sýnilegt notandanum. Hins vegar geturðu ekki notað hugbúnað sem endurskapar diskinn úr mynd: hann mun einnig endurskapa fyrri leynigögn.
  • Því meira magn leynilegra gagna, því meiri líkur eru á að einhverjar upplýsingar glatist.
  • Það getur tekið langan tíma að sækja gögn af disknum. Frá nokkrum mínútum til nokkurra daga (nútíma diskar eru stórir).

Nú skulum við halda áfram að einstökum atriðum.

Það er ljóst að ef þú smyrir einfaldlega leynilegum gögnum út um allan disk, þá verða þau aðeins falin fyrir berum augum. Ef þú útbýr augnaráð þitt með til dæmis diskaritli munu gögnin birtast í allri sinni dýrð. Því væri gott að dulkóða gögnin svo þau komi ekki fram. Við munum dulkóða einfaldlega, en smekklega: með aes256-cbc reikniritinu. Við biðjum notandann um dulkóðunarlykilinn og látum hann finna gott lykilorð.

Næsta spurning er hvernig við getum greint „góð“ gögn frá slæmum gögnum. Hér mun eftirlitssumma hjálpa okkur, en ekki einföld, heldur SHA1. Og hvað? Það er nógu gott fyrir git, svo það mun henta okkur líka. Ákveðið: við gefum hverja geymda upplýsingar með eftirlitssummu, og ef eftir afkóðun samsvarar það, þýðir það að afkóðunin tókst.

Þú þarft einnig brotanúmerið og heildarlengd leynigagnanna. Brotanúmerið er til að halda utan um hvaða stykki við höfum þegar ráðið og hverjir eru eftir. Heildarlengdin mun nýtast okkur við vinnslu síðasta brotsins, til að skrifa ekki óþarfa gögn (þ.e. fyllingu). Jæja, þar sem við erum enn með haus, munum við bæta við nafni leyniskrárinnar þar. Það mun vera gagnlegt eftir afkóðun, svo sem ekki að giska á hvernig á að opna það.

Að prófa aðferðina í reynd

Til að athuga, skulum við taka algengasta miðilinn - glampi drif. Ég fann gamlan með 1 GB getu, sem hentar mjög vel fyrir tilraunir. Ef þú, eins og ég, datt í hug að skipta þér ekki af efnislegum miðlum, heldur prófa það á skrá - diskamynd, þá segi ég strax: það mun ekki virka. Þegar slíkur „diskur er forsniðinn“ býr Linux til skrána aftur og allir ónotaðir geirar verða fylltir með núllum.

Sem vél með Linux, því miður, þurfti ég að nota veðurstöð á Raspberry Pi 3 sem lá á svölunum. Það er ekki mikið minni þar, svo við munum ekki fela stórar skrár. Við takmörkum okkur við hámarksstærð 10 megabæti. Það þýðir heldur ekkert að fela skrár sem eru of litlar: tólið skrifar gögn á diskinn í 4 KB klösum. Því hér að neðan munum við takmarka okkur við 3 kb skrá - hún passar inn í einn slíkan þyrping.

Við munum hæðast að glampi drifinu í áföngum og athuga eftir hvert stig hvort faldu upplýsingarnar séu læsilegar:

  1. Hratt snið á FAT16 sniði með klasastærð 16 KB. Þetta er það sem Windows 7 býður upp á að gera með flash-drifi sem er ekki með skráakerfi.
  2. Að fylla flash-drifið af alls kyns rusli um 50%.
  3. Að fylla flash-drifið af alls kyns rusli um 100%.
  4. „Löng“ snið á FAT16 sniði (skrifar yfir allt).

Fyrstu tvær prófanirnar, eins og búist var við, enduðu með fullkomnum sigri: tólinu tókst að draga 10 megabæti af leynilegum gögnum úr flash-drifinu. En eftir að glampi drifið var fyllt að fullu af skrám kom upp bilun:

Total clusters read: 250752, decrypted: 158
ERROR: cannot write incomplete secretFile

Eins og þú sérð, tókst að afkóða aðeins 158 klasa (632 kílóbæti af hráum gögnum, sem gefur 636424 bæti af hleðslu). Það er ljóst að það er engin leið að fá 10 megabæti hér, og þó eru meðal þessara þyrpinga greinilega afrit. Þú getur ekki einu sinni endurheimt 1 megabæti á þennan hátt. En við getum ábyrgst að við munum endurheimta 3 kílóbæta af leynilegum gögnum af flash-drifi jafnvel eftir að það hefur verið forsniðið og skrifað til fulls. Hins vegar sýna tilraunir að það er alveg hægt að vinna 120 kílóbæta langa skrá úr slíku flash-drifi.

Síðasta prófið sýndi því miður að allt flash-drifið var skrifað yfir:

$ sudo ./steganodisk -p password /dev/sda
Device size: 250752 clusters
250700 99%
Total clusters read: 250752, decrypted: 0
ERROR: cannot write incomplete secretFile

Ekki ein einasta þyrping hefur lifað af... Sorglegt, en ekki hörmulegt! Áður en þú ert að forsníða, skulum við reyna að búa til skipting á glampi drifinu, og þegar í því skráarkerfi. Við the vegur, það kom frá verksmiðjunni með nákvæmlega þetta snið, svo við erum ekki að gera neitt grunsamlegt.
Það er alveg búist við því að laus pláss á flash-drifinu hafi minnkað lítillega.

Það er líka alveg búist við því að ekki væri hægt að fela 10 megabæti á alveg fullum diski. En nú hefur fjöldi afkóðaðra klasa meira en tvöfaldast!

Total clusters read: 250752, decrypted: 405

Því miður er ómögulegt að setja saman megabæti úr bitum, en tvö hundruð kílóbæti eru auðveld.

Jæja, fréttirnar um síðustu, 4. athugunina, að þessu sinni eru ánægjulegar: að fullkomlega forsníða svona glampi drif leiddi ekki til eyðileggingar allra upplýsinga! 120 kílóbæti af leynilegum gögnum passa fullkomlega inn í ónotað rými.

Samantektartafla fyrir próf:

Steganography eftir skrám: felur gögn beint í geirum

Smá kenning: um laust pláss og ónotaða geira

Ef þú hefur einhvern tíma skipt harða disknum þínum í sneiðar, gætirðu hafa tekið eftir því að það er ekki alltaf hægt að úthluta öllu lausu plássi á disknum. Fyrsti hlutinn byrjar alltaf með inndrætti (venjulega 1 megabæti, eða 2048 geirar). Á bak við síðasta hlutann gerist það líka að eftir er lítill „hali“ af ónotuðum geirum. Og stundum eru bil á milli hluta, þó sjaldan.

Það eru semsagt geirar á disknum sem ekki er hægt að nálgast í venjulegri vinnu með diskinn en hægt er að skrifa gögn á þessa geira! Og það þýðir að lesa það líka. Leiðrétt fyrir þá staðreynd að það er líka skiptingtafla og ræsiforritakóði, sem eru staðsettir á auðu svæðinu í upphafi disksins.

Tökum okkur smá pásu frá köflum og skoðum diskinn frá fuglaskoðun ef svo má að orði komast. Hér höfum við tómt skipting á disknum. Við skulum búa til skráarkerfi í því. Getum við sagt að sumir geirar á disknum séu óhreinsaðir?

E-e-e - trommukúla! Svarið verður næstum alltaf já! Reyndar, í flestum tilfellum, að búa til skráarkerfi kemur niður á að skrifa aðeins nokkrar blokkir af þjónustuupplýsingum á diskinn, og að öðru leyti breytist innihald skiptingarinnar ekki.

Og líka - eingöngu reynslulega séð - getum við gert ráð fyrir að skráarkerfið geti ekki alltaf tekið allt plássið sem því er úthlutað fram að síðasta geira. Til dæmis getur FAT16 skráarkerfi með klasastærð 64 kílóbæti augljóslega ekki tekið algjörlega upp skipting með stærð ekki margfeldi af 64 kílóbæti. Í lok slíks hluta verður að vera „hali“ af nokkrum geirum, óaðgengilegur til að geyma notendagögn. Hins vegar var ekki hægt að staðfesta þessa forsendu með tilraunum.

Svo, til að hámarka plássið sem er í boði fyrir steganogram, þarftu að nota skráarkerfi með stærri klasastærð. Þú getur líka búið til skipting, jafnvel þótt það sé ekki nauðsynlegt (á flash-drifi, til dæmis). Það er engin þörf á að búa til tóma hluta eða skilja eftir óúthlutað svæði - þetta mun vekja athygli áhugasamra borgara.

Gagnsemi fyrir tilraunir

Þú getur snert frumkóða tólsins hér

Til að byggja þarftu Qt útgáfu 5.0 eða nýrri og OpenSSL. Ef eitthvað virkar ekki gætirðu þurft að breyta steganodisk.pro skránni.

Þú getur breytt klasastærðinni úr 4 KB í td 512 bæti (í secretfile.h). Á sama tíma mun kostnaður við þjónustuupplýsingar aukast: hausinn og eftirlitsumman taka fast 68 bæti.

Þú þarft að keyra tólið, auðvitað, með rótarnotendaréttindum og með varúð. Það verða engar spurningar spurðar áður en yfirskrifað er tilgreind skrá eða tæki!

Njóttu.

Heimild: www.habr.com

Bæta við athugasemd