LĂŒhike sissejuhatus
Steganograafia, kui keegi ei mĂ€leta, on teabe peitmine mingitesse konteineritesse. NĂ€iteks piltidesse (kuidas arutati ja ). Teavet saab peita ka failisĂŒsteemi teenindustabelitesse (sellest on kirjutatud ), ja isegi . Kahjuks kĂ”igil neil meetoditel on ĂŒks puudus: et teavet konteinerisse "salaja" sisestada, on vajalikud nutikad algoritmid, mis arvestavad konteineri sisemise struktuuri omadustega. Ja konteineri vastupidavus manipuleerimisele tekitab probleeme: nĂ€iteks, kui veidi pilti redigeerida, kaob peidetud teave.
Kas on vĂ”imalik kuidagi hakkama saada ilma keeruliste algoritmide ja Ă”rnade andmemanipulatsioonideta, tagades samas konteineri toimivuse ja vastuvĂ”etava taseme peidetud andmete sĂ€ilimise? Kiirelt öeldes â jah, on vĂ”imalik! Ja isegi kasulikku tööriista pakun.
Meetodi veretuksed
PĂ”himĂ”te on lihtne nagu puuhaluga pĂ€he sĂ”itmine: ketasel on piirkonnad, kuhu operatsioonisĂŒsteem kunagi ei kirjuta (vĂ”i kirjutab harvadel juhtudel). Selleks, et neid piirkondi keeruliste algoritmidega ei otsida, kasutame ĂŒleliigsust â st dubleerime meie peidetud teavet korduvalt kĂ”igis kettasektorites. SeejĂ€rel saab kogu sellele hiilgusele ĂŒle luua vajalikud osad, vormindada failisĂŒsteemid, kirjutada faile ja installida OS-e â osa salajastest andmetest jÀÀb ikkagi alles ning seda saab hiljem vĂ€lja vĂ”tta, samas kui korduv dubleerimine aitab meil kokku panna tĂŒkid originaalist.
Selle meetodi eelis on ilmne: me ei sĂ”ltu ei failivormingust ega isegi kasutatavast failisĂŒsteemi tĂŒĂŒbist.
Puudused on samuti ilmsed:
- Salajasi andmeid saab muuta ainult kogu ketta tĂ€ieliku ĂŒlekirjutamise teel koos nĂ€htava kasutaja sisu taasloomisega. Samuti ei tohi kasutada tarkvara, mis loomine ketast pildist: see taastab ka eelmised salajased andmed.
- Mida rohkem on salajasi andmeid, seda suurem on tÔenÀosus, et osa teavet kaob.
- Andmete vÀljavÔttmine kettalt vÔib vÔtta palju aega. Alates mÔnest minutist kuni mÔne pÀevani (kaasaegsed kettad on suuremad).
Vaatame nĂŒĂŒd detaile.
On selge, et kui lihtsalt levitada salajasi andmeid kogu kettale, siis on need peidetud vaid ligipÀÀsmatu vaate alt. Kuid kui kasutada nĂ€iteks ketaseditoreid, saavad andmed selgelt nĂ€htavaks. SeetĂ”ttu on andmed hea krĂŒpteerida, et nad ei paistaks vĂ€lja. KrĂŒpteerime lihtsalt, kuid maitsekalt: kasutame algoritmi aes256-cbc. KrĂŒpteerimise vĂ”tme kĂŒsime kasutajalt, las nad leiavad vĂ€lja hea parooli.
JĂ€rgmine kĂŒsimus on, kuidas eristada âĂ”igeidâ andmeid rikutud andmetest. Siin aitab meid kontrollsummad, ja mitte tavaline, vaid SHA1. Miks mitte? Kui git'is on see piisavalt hea, siis sobib see ka meile. Otsustasime: varustame iga salvestatud teabe fragment kontrollsummaga, ja kui see pĂ€rast dekrĂŒpteerimist klapib â siis on dekrĂŒpteerimine Ă”nnestunud.
Samuti on vajalik fragmentide number ja saladusandmete kogupikkus. Fragmentide ĐœĐŸĐŒĐ”Ń on vajalik jĂ€lgimiseks, millised osad me juba dekodeerisime ja millised veel alles on. Kogupikkus tuleb kasuks viimase fragmendi töötlemisel, et mitte kirjutada ĂŒleliigseid andmeid (ehk padding). Ja kuna meil on igal juhul pealkirja vajadus, lisame sinna salajase faili nime. See on vajalik dekodeerimise jĂ€rel, et ei peaks Ă€ra arvama, millega seda avada.
Kontrollime meetodit praktikas
Kontrollimiseks vĂ”tame kĂ”ige levinuma mĂ€luseadmestiku â USB mĂ€lupulga. Mul on olemas vana 1 GB, mis sobib katsetamiseks. Kui teil, nagu minulgi, tuli pĂ€he mĂ”te mitte vaeva nĂ€ha fĂŒĂŒsiliste seadmetega, vaid testida faili â kettapilti, siis ĂŒtlen kohe: see ei Ă”nnestu. Kettapildi vormindamisel loob Linux selle faili uuesti ja kĂ”ik kasutamata sektorid tĂ€idetakse nullidega.
Linux masina jaoks tuli kahjuks kasutada rĂ”dul vedelevat m eteostatsiooni Raspberry Pi 3-l. Seal ei ole palju mĂ€lu, seega ei varja me suurte faile. Piirdume maksimaalse suurusega 10 megabaiti. Liialt vĂ€ikeste failide varjamine pole ka mĂ”tet: utiliit kirjutab andmeid kettale 4 KB klastrite kaupa. Seega piirdume allpool 3 kB failiga â see mahub ĂŒhte sellesse klastrisse.
Flashi ĂŒle naljatame samm-sammult, kontrollides pĂ€rast iga etappi, kas peidetud teave loetakse:
- Kiire vormindamine FAT16 formaadis 16 kB klastrite suurusega. See on see, mida Windows 7 pakub teha flash-mĂ€luga, millel puudub failisĂŒsteem.
- Flashi tĂ€itmine igasuguse prĂŒgi 50% ulatuses.
- Flashi tĂ€itmine igasuguse prĂŒgi 100% ulatuses.
- âPikkâ vormindamine FAT16 formaadis (kĂ”ikide andmete ĂŒle kirjutamisega).
Esimene kaks katset lĂ”ppesid ootuspĂ€raselt tĂ€ieliku vĂ”iduga: utiliit suutis edukalt vĂ€lja tĂ”mmata 10 megabaiti salajasi andmeid flash-mĂ€lust. Kuid pĂ€rast seda, kui flash-mĂ€lu oli failidega ĂŒle kuhjatud, toimus tĂ”rge:
Kokku loetud klastrid: 250752, dekrĂŒpteeritud: 158
VIGA: ei saa kirjutada puudulikku salajast faili
Nagu nĂ€ha, Ă”nnestus edukalt deĆĄifreerida ainult 158 klastrit (632 kilobaiti toorandmeid, mis annab 636424 baiti kasulikku koormust). Selge, et 10 megabaiti siit kuidagi ei saa, kuigi nende klastrite seas on kindlasti dublipe. Isegi 1 megabait on selliselt juba taastamata. Kuid samas saab kindlalt öelda, et 3 kilobaiti salajasi andmeid saame taastada mĂ€lupulgalt isegi pĂ€rast seda, kui see vormindatakse ja ĂŒle kirjutatakse. KĂŒll aga nĂ€itavad katsed, et selliselt mĂ€lupulgalt on tĂ€iesti vĂ”imalik vĂ€lja tĂ”mmata 120 kilobaiti faili.
Viimane test nĂ€itas kahjuks, et mĂ€lupulk on tĂ€ielikult ĂŒle kirjutatud:
$ sudo ./steganodisk -p parool /dev/sda
Seade suurus: 250752 klastrit
250700 99%
Kokku loetud klastrid: 250752, dekodeeritud: 0
VIGA: ei saa kirjutada puudulikku salajast faili
Ăhtegi klastrit ei sÀÀstetud... Kahju, aga mitte traagiline! Proovime enne vormindamist luua mĂ€lupulgale jaotuse, ja juba seal â failisĂŒsteemi. Muide, see tuli tootmisest just sellise vormindamisega, nii et me ei tee midagi kahtlast.
JÀtkuvalt on oodata, et vaba ruum mÀlupulgalt on veidi vÀhenenud.
On ĂŒsna ootuspĂ€rane, et 10 megabaiti ei Ă”nnestunud tĂ€iesti tĂ€idetud kettale peita. Kuid see-eest on edukalt dekrĂŒpteeritud klastrite arv nĂŒĂŒd enam kui kaks korda suurem!
Kokku lugenud klastrid: 250752, dekrĂŒpteeritud: 405
Megabaiti kahjuks tĂŒkkidena kokku korjata ei Ă”nnestu, aga kaks sada kilobaidi â see on kerge.
Ja lÔpuks, neljanda kontrolli uudis on rÔÔmustav: selle mÀlupulga tÀielik vormindamine ei viinud kogu informatsiooni hÀvitamiseni! 120 kilobaiti salajasi andmeid mahtus kenasti kasutamata ruumi.
KokkuvÔtlik tabel testimise kohta:

Veidi teooriat: vabast ruumist ja kasutamata sektoritest
Kui olete kunagi kĂ”vakettad jaotusteks jaganud, olete vĂ”ib-olla mĂ€rganud, et mitte alati ei Ă”nnestu kogu kettal olevat vaba ruumi kasutada. Esimene jaotus algab alati teatud varu (tavaliselt 1 megabait vĂ”i 2048 sektorit). Viimase jaotuse taga jÀÀb tihti samuti vĂ€ike "sabake" kasutamata sektoritest. Ja jaotiste vahele jÀÀb vahel ka tĂŒhimik, kuigi see on harva.
TeisisĂ”nu, ketas sisaldab sektoreid, millele pole tavapĂ€rase töö kĂ€igus juurde pÀÀsu, kuid andmeid saab neisse sektoritesse kirjutada! Seega saab neid ka lugeda. Arvestades, et alguses on veel partitsioonide tabel ja laadimiskood, mis asuvad just tĂŒhjas piirkonnas ketta alguses.
Kaugemale partitsioonidest vaadates vaatame ketast linnulennult. Meil on ketas tĂŒhja partitsiooniga. Loome sellesse failisĂŒsteemi. Kas saame öelda, et mĂ”ni sektor ketas on jÀÀnud kustutamata?
Ja ja ja â trummipĂ€ring! Vastus on peaaegu alati â jah! Enamikel juhtudel tĂ€hendab failisĂŒsteemi loomine seda, et kettale salvestatakse vaid mĂ”ned teenusinfoblockid, samas kui muu partitsiooni sisu jÀÀb muutumatuks.
Samuti â empiiriliselt vaadates â vĂ”ib eeldada, et failisĂŒsteem ei saa alati kasutada kogu talle mÀÀratud ruumi viimasest sektorist alates. NĂ€iteks failisĂŒsteem FAT16, mille klastrite suurus on 64 kilobaiti, ei saa ilmselgelt tĂ€ielikult kasutada jagu, mille suurus ei ole jagatav 64 kilobaitiga. Sellise jagu lĂ”pus peab jÀÀma mĂ”ned sektorid, mis ei ole kasutatavad kasutajaandmete salvestamiseks. Ent katsetades ei Ă”nnestunud seda eeldust kinnitada.
Seega, et maksimeerida steganogrammi jaoks saadaval olevat ruumi, tuleks kasutada suurema klastrite suurusega failisĂŒsteemi. Samuti on vĂ”imalik luua jagu, isegi kui see ei ole vajalik (nĂ€iteks mĂ€lupulgal). TĂŒhi jagu loomine vĂ”i mitte jaotatud alade jĂ€tmine pole vajalik â see tĂ”mbab tĂ€helepanu uudishimulikele.
Katsetuste jaoks mÔeldud utiliit
Utiliidi allikaid saab uurida
Kogumise jaoks on vajalik Qt versioon 5.0 ja uuem ning OpenSSL. Kui midagi ei Ă”nnestu koguda â vĂ”ib-olla tuleb faili steganodisk.pro muuta.
Clusteri suurust saab muuta 4 KB-lt nÀiteks 512 baitiseks (failis secretfile.h). Samas kasvavad kulud teenuseteabe osas: pealkiri ja kontrollsummad vÔtavad kokku 68 baiti.
Tulega peab utiliiti kĂ€ivitama loomulikult root-kasutaja Ă”igustega, kuid ettevaatlikult. Ăhtegi kĂŒsimust ei esitata enne mÀÀratud faili vĂ”i seadme ĂŒlekirjutamist!
Naudi.
Allikas: habr.com
