Pelên paşîn ên Steganografiyê: Daneyên rasterast di sektoran de vedişêrin

Pêşgotineke kurt

Steganography, heke kesek neyê bîra xwe, di hin konteyneran de agahdarî vedişêre. Mînakî, di wêneyan de (gotûbêj kirin vir и vir). Her weha hûn dikarin daneyan di tabloyên karûbarê pergala pelan de veşêrin (ev li ser hatî nivîsandin vir), û heta di pakêtên karûbarê protokola TCP de. Mixabin, van hemî rêbazan yek kêmasiyek heye: ji bo ku hûn agahdarî bi rengek nediyar "têxin" nav konteynerek, hûn hewce ne ku algorîtmayên xapînok ên ku taybetmendiyên avahiya hundurê konteynerê li ber çavan bigirin. Û pirsgirêk bi berxwedana konteynerê ya ji manîpulasyonê re derdikevin: Mînakî, heke hûn wêneyê hinekî biguhezînin, agahdariya veşartî winda dibe.

Ma gengaz e ku meriv bi rengekî bêyî algorîtmayên xapînok û manîpulasyonên nazik bi daneyan re bike, û hîn jî fonksiyona konteynerê û astek pejirandî ya ewlehiya daneyên veşartî misoger bike? Li pêş çavê min, ez ê bibêjim - erê, hûn dikarin! Ez ê tewra amûrek pêşkêşî bikim.

Agahiyên xwînê yên rêbazê

Fikra bingehîn bi qasî darbeyek li eniya xwe hêsan e: li ser dîskê deverên ku pergala xebitandinê qet li wan nanivîse (an jî di rewşên kêm de dinivîse) hene. Ji bo ku ji hewcedariya lêgerîna van deveran bi karanîna algorîtmayên fêlbaz dûr nekevin, em ê zêdebûnê bikar bînin - ango, em ê agahdariya xweya veşartî gelek, gelek caran li hemî sektorên dîskê dubare bikin. Dûv re, li ser hemî vê spehîtiyê, hûn dikarin dabeşên pêwîst biafirînin, pergalên pelan format bikin, pelan binivîsin û OS-ê saz bikin - bi heman awayî, beşek ji daneyên veşartî dê were hilanîn û dikare were vegerandin, û dubarekirina dubare dê alîkariya me bike. tevaya orîjînal ji perçeyan li hev bixin.

Feydeya vê rêbazê diyar e: em ne bi forma pelê ve girêdayî ne, ne jî bi celebê pergala pelê ya ku tê bikar anîn ve girêdayî ne.

Dezawantaj jî, ez difikirim, eşkere ye:

  • Daneyên veşartî tenê bi ji nû ve nivîsandina tevahî dîskê ve têne guheztin, li dûv wê jî naveroka ku ji bikarhêner re xuya ye ji nû ve biafirîne. Lêbelê, hûn nekarin nermalava ku dîskê ji wêneyek ji nû ve diafirîne bikar bînin: ew ê daneyên veşartî yên berê jî ji nû ve biafirîne.
  • Hêjmara daneyên veşartî her ku mezintir be, îhtîmala windakirina hin agahdarî jî mezintir dibe.
  • Vegerandina daneyan ji dîskê dikare demek dirêj bigire. Ji çend hûrdeman heya çend rojan (dîskên nûjen mezin in).

Naha em biçin ser taybetmendiyan.

Eşkere ye ku heke hûn tenê daneyên veşartî li seranserê dîskê bişewitînin, ew ê tenê ji çavên rût veşêre. Ger hûn nihêrîna xwe bi, bêje, edîtorek dîskê saz bikin, dê dane bi hemî rûmeta xwe xuya bibin. Ji ber vê yekê, dê ramanek baş be ku hûn daneyan şîfre bikin da ku ew xuya neke. Em ê bi hêsanî, lê bi tahm şîfre bikin: algorîtmaya aes256-cbc bikar bînin. Em ê ji bikarhêner mifteya şîfrekirinê bipirsin û bihêlin ku ew şîfreyek baş peyda bike.

Pirsa din ev e ku em çawa dikarin daneyên "baş" ji daneyên xirab cuda bikin. Li vir kontrolek dê ji me re bibe alîkar, lê ne hêsanek, lê SHA1. Û çi? Ji bo git têra xwe baş e, ji ber vê yekê ew ê li me jî xweş be. Biryar da: em her perçeyek agahdariya hilgirtî bi kontrolek peyda dikin, û heke piştî deşîfrekirinê ew li hev bike, ev tê vê wateyê ku deşîfrekirin serketî bû.

Her weha hûn ê hewceyê hejmara perçeyê û dirêjahiya giştî ya daneyên veşartî jî bikin. Hejmara perçeyê ew e ku bişopîne ka kîjan perçe me berê deşîfre kiriye û kîjan maye. Dirêjahiya tevayî dê ji me re bikêr be dema ku perçeya paşîn hilberandin, da ku daneyên nepêwist nenivîsin (ango, padding). Welê, ji ber ku hê sernivîsek me heye, em ê navê pelê veşartî li wir zêde bikin. Ew ê piştî deşîfrekirinê kêrhatî be, da ku hûn texmîn nekin ka meriv wê çawa veke.

Testkirina rêbazê di pratîkê de

Ji bo kontrolkirinê, bila em navgîniya herî gelemperî bigirin - ajokerek flash. Min kevnek bi kapasîteya 1 GB dît, ku ji bo ceribandinan pir maqûl e. Ger hûn, mîna min, bi ramana ku hûn bi medyaya laşî re aciz nebin, lê ceribandina wê li ser pelek - wêneyek dîskê hat, wê hingê ez ê tavilê bibêjim: ew ê nexebite. Dema ku "dîskek" wusa format dike, Linux dîsa pelê diafirîne, û hemî sektorên neyên bikar anîn dê bi sifiran werin dagirtin.

Wekî makîneyek bi Linux re, mixabin, min neçar ma qereqolek hewayê ya li ser Raspberry Pi 3 ku li ser balkonê razayî ye bikar bînim. Li wir pir bîranîn tune, ji ber vê yekê em ê pelên mezin veneşêrin. Em xwe bi mezinahiya herî zêde 10 megabyte sînordar dikin. Di veşartina pelên ku pir piçûk in jî tiştek tune: amûr daneyan li ser dîskê di komikên 4 KB de dinivîse. Ji ber vê yekê, li jêr em ê xwe bi pelek 3 kb sînordar bikin - ew di nav komek wusa de cih digire.

Em ê di qonaxan de bi ajokera flashê tinazan bikin, piştî her qonaxê kontrol bikin ka agahdariya veşartî tê xwendin:

  1. Formatkirina bilez di formata FAT16 de bi mezinahiya komê 16 KB. Ya ku Windows 7 pêşkêşî dike ku bi ajokerek flashê ya ku pergala pelan tune ye bike.
  2. Dagirtina ajokera flash bi her cûre çopê ji sedî 50.
  3. Dagirtina ajokera flash bi her cûre çopê ji sedî 100.
  4. Formatkirina "Drêj" di formata FAT16 de (her tiştî dinivîse).

Du ceribandinên yekem, wekî ku tê hêvîkirin, di serkeftina bêkêmasî de bi dawî bû: Karûbar bi serfirazî 10 Megabytes daneyên veşartî ji ajokera flash-ê derxist. Lê piştî ku ajokera flash bi kapasîteya pelan dagirtî, têkçûnek çêbû:

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

Wekî ku hûn dikarin bibînin, tenê 158 kom bi serfirazî hatine deşîfrekirin (632 kilobytes daneyên xav, ku 636424 byte bargiraniyê dide). Eşkere ye ku li vir rêyek tune ku meriv 10 megabyte bistîne, û dîsa jî di nav van koman de bi eşkere dubare hene. Hûn nikarin bi vî rengî 1 megabyte jî vegerînin. Lê em dikarin garantî bikin ku em ê 3 kilobytes daneyên veşartî ji ajokerek flash-ê vegerînin jî piştî ku ew bi kapasîteyê were format kirin û nivîsandin. Lêbelê, ceribandinan destnîşan dikin ku meriv dikare pelek bi dirêjahiya 120 kilobyte ji ajokerek wusa flash derxe.

Testa paşîn, mixabin, destnîşan kir ku tevahiya ajokera flashê hate nivîsandin:

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

Yek kom jî ne maye... Xemgîn, lê ne trajîk! Berî formatkirinê, em hewl bidin ku dabeşek li ser ajokera flash-ê biafirînin, û jixwe di wê de pergalek pelê. Bi awayê, ew ji kargehê bi tam vê formatkirinê hatî, ji ber vê yekê em tiştek gumanbar nakin.
Tê payîn ku cîhê berdest li ser ajokera flash hinekî kêm bibe.

Di heman demê de tê pêşbînîkirin ku 10 megabytes nekarin li ser dîskek bi tevahî tije veşêrin. Lê naha hejmara komikên bi serfirazî hatine deşîfrekirin ji du qatan zêdetir bûye!

Total clusters read: 250752, decrypted: 405

Mixabin, ne gengaz e ku meriv megabyte ji perçeyan berhev bike, lê du sed kilobyte hêsan e.

Welê, nûçeyên di derbarê kontrolkirina paşîn, 4-an de, vê carê kêfxweş e: bi tevahî formatkirina ajokerek flashek wusa rê nedaye hilweşandina hemî agahdarî! 120 kilobytes daneyên nehênî bi rengek bêkêmasî li cîhê ku nayê bikar anîn cîh digire.

Tabloya kurteya testê:

Pelên paşîn ên Steganografiyê: Daneyên rasterast di sektoran de vedişêrin

Teorîzasyonek piçûk: li ser cîhê belaş û sektorên neyên bikar anîn

Ger we çu carî dîska xwe li ser dabeşan dabeş kiribe, dibe ku we ferq kiriye ku her gav ne gengaz e ku hûn hemî cîhê belaş li ser dîskê veqetînin. Beşa yekem her gav bi hin vegirtinê dest pê dike (bi gelemperî 1 megabyte, an sektorên 2048). Li pişt beşa paşîn, di heman demê de diqewime ku "divek" piçûk a sektorên nekarandî dimîne. Û carinan di navbera beşan de, her çend kêm kêm be jî, valahî hene.

Bi gotineke din, li ser dîskê sektor hene ku di dema xebata normal a bi dîskê re nayên gihîştin, lê dane dikarin li van sektoran werin nivîsandin! Û ev tê wateya xwendina wê jî. Ji bo rastiya ku di heman demê de tabloyek dabeşkirinê û koda bootloader jî heye, ku li devera vala ya di destpêka dîskê de cih digirin, verast kirin.

Werin em hinekî ji beşan veqetin û ji çavê çûkan li dîskê binerin, bi vî rengî. Li vir em dabeşek vala li ser dîskê heye. Werin em tê de pergalek pelan ava bikin. Ma em dikarin bibêjin ku hin sektorên li ser dîskê nehatine jêbirin?

E-e-e - roll drum! Bersiv dê hema her dem erê be! Bi rastî, di pir rewşan de, afirandina pergalek pelan bi nivîsandina tenê çend blokên agahdariya karûbarê li ser dîskê tê, û wekî din naveroka dabeşkirinê nayê guhertin.

Û her weha - bi tevahî ezmûnî - em dikarin texmîn bikin ku pergala pelan her gav nikare hemî cîhê ku jê re hatî veqetandin heya sektora paşîn dagir bike. Mînakî, pergala pelê ya fat16 bi pîvanek 64 kilobytes eşkere dibe ku bi tevahî parçeyek bi mezinahiya 64 kilobytesê dagir bike. Di dawiya beşek wusa de dê pêdivî ye ku "dûvikek" ji çend sektoran hebe, ku ji bo hilanîna daneyên bikarhêner nayê gihîştin. Lêbelê, ev texmîn bi ezmûnî nehat pejirandin.

Ji ber vê yekê, ji bo zêdekirina cîhê ku ji bo steganogramê peyda dibe, hûn hewce ne ku pergalek pelê bi mezinahiya komê mezintir bikar bînin. Her weha hûn dikarin dabeşek biafirînin, her çend ev ne hewce be (mînakek li ser ajokerek flash). Ne hewce ye ku beşên vala biafirînin an deverên neveqetandî bihêlin - ev ê bala welatiyên eleqedar bikişîne.

Utility ji bo ceribandinên

Hûn dikarin koda çavkaniyê ya amûreyê bi dest bixin vir

Ji bo avakirinê, hûn ê hewceyê Qt guhertoya 5.0 an mezintir û OpenSSL bikin. Ger tiştek nexebite, dibe ku hûn hewce ne ku pelê steganodisk.pro biguherînin.

Hûn dikarin mezinahiya komê ji 4 KB biguherînin, bibêjin, 512 byte (di secretfile.h). Di heman demê de, lêçûna agahdariya karûbarê dê zêde bibe: sernav û kontrolê 68 baytên sabît dagir dikin.

Pêdivî ye ku hûn karûbar bimeşînin, bê guman, bi mafên bikarhênerê root, û bi hişyarî. Berî nivîsandina pel an cîhaza diyarkirî dê ti pirs neyê pirsîn!

Hizkirin.

Source: www.habr.com

Add a comment