Steganography di pergala pelan de

Hey Habr.

Ez dixwazim li ser projeyek piçûk pêşkêşî we bikim steganography, di dema xwe ya vala de ji xwendinê çêkir.

Min projeyek li ser hilanîna veşartî ya agahdariya di pergala pelan de çêkir (bêtir FS).
Ev dikare ji bo dizîna agahdariya nehênî ji bo armancên perwerdehiyê were bikar anîn.

Steganography di pergala pelan de

Linux FS-ya pir kevn wekî prototîp hate hilbijartin ext2.

Реализация

Fikrên Pêkanînê

Heke baş e ku meriv standarda ext2 "vekişîne", wê hingê hûn dikarin li şûna ku di FS-ê de jê re tê gotin heye. Superblocks, ku agahdariya bingehîn li ser pergalê dide. Piştî ku ez hatim dîtin Bitmap asteng bikin и Tabloya Inode. Hema hema di cih de, ramana tomarkirina agahdarî di blokên FS yên heyî yên vala de çêbû. Naha hêja bû ku meriv li ser parastina ji bernameçêkerek çekdar bifikire edîtorê hex.

Ger hûn agahdariya veşartî bêyî şîfrekirinê hilînin, wê hingê, tevî ku di FS-ê de nezelalbûna wê jî, ew ê dîsa jî pir berbiçav be, nemaze heke bernamenûs zanibe ku li çi bigere. Ji ber vê yekê, biryar hate girtin ku hemî blokên pelê çavkaniyê şîfre bikin. Min şîfreya blokê hilbijart AES, lê wekî ku hûn fêm dikin, ev ne girîng e.

Ji bo ku dema xwendinê blokên pêwîst ji hemî yên din veqetînin, biryar hate girtin ku di destpêka blokê de nîşanek taybetî li her blokê zêde bikin. Ev nîşanek li gorî hejmara blokê ya di pelê çavkaniyê de hate şîfre kirin. Vê hîleyê tavilê îmkan da ku ne tenê blokên pêwîst bibîne, lê di heman demê de rêza wan a rast jî nas bike.

Prensîba xebata giştî ya pergalê.

Steganography di pergala pelan de

Algorîtmaya tomarkirinê

Xal:

  • Pêşî hin agahdarî li pergala pelê çavkaniyê binivîsin;
  • Vê agahiyê jêbirin (ne hewce ye ku hemî);
  • Pela ku were veşartin di blokên bi dirêjahiya wekhev de tê dabeş kirin, nîşankerek lê zêde dike;
  • Van blokan şîfre bikin;
  • Blokên şîfrekirî di blokên FS yên vala de bi cîh bikin.

Ji bo evîndarên blokên diagramê

Li jêr bloka algorîtmaya tomarkirinê heye. Algorîtma çar pelan wekî têketinê distîne:
-Wêneya pergala pelê ya ku tê guherandin;
-Pelê mijara steganografiyê;
-Pelê bi mifteya şîfrekirinê ji bo AES;
-Pel bi nîşanker.
Steganography di pergala pelan de

Hêjayî bibîrxistinê ye ku ev algorîtma yek kêmasiyek heye: piştî nivîsandina pelê li FS, nikare Tiştek nû di FS-ê de binivîsin, ji ber ku her agahdariya nû dikare di blokên ku me ji dosyaya xweya zipkirî re veqetandiye biqede, her çend ev jî îhtîmala "zû vegirtina şopên me" vedike.

Lê pir eşkere ye ku ev çawa dikare were rast kirin: pêdivî ye ku algorîtmaya ji bo nivîsandina blokên di FS-ê de ji nû ve were nivîsandin. Ev karekî têgihîştî ye, lê pir dem-dirêj e.
Ji bo Proof Of Consept min ev pêk neanî.

Wekî encamek, dê guheztinên jêrîn li FS-ê bêne çêkirin; ev e ku FS berî steganografiyê dixuye (pelek dengek berê hatî tomar kirin).
Steganography di pergala pelan de
Û ev e ku FS bi agahdariya ku jixwe ve hatî zivirandin xuya dike.
Steganography di pergala pelan de

Algorîtmaya xwendinê

Xal:

  • Bi zanîna mifteyê û rêbaza çêkirina nîşankeran, N nîşankerên yekem berhev bikin, bi garantiya ku N-ya ku bi dirêjahiya bloka pergala pelê zêde dibe ji dirêjahiya pelê zipkirî mezintir e;
  • Li blokên di FS-ê de bi nîşankeran dest pê dikin bigerin;
  • Blokên wergirtî deşîfre bikin û nîşankeran ji hev veqetînin;
  • Blokên encam di rêza rast de berhev bikin û pelê çavkaniyê bistînin.

Ji bo evîndarên blokên diagramê

Li jêr bloka algorîtmaya tomarkirinê heye. Algorîtma sê pelan wekî têketinê distîne:
-Wêneyê pergala pelê;
-Pelê bi mifteya şîfrekirinê ji bo AES;
-Pel bi nîşanker.
Steganography di pergala pelan de

Piştî ku bername dimeşîne, pelê Read xuya dibe, ku ew ê pelê ji pergala pelan a steganografî hatî derxistin; heke mift an nîşanker bi xeletî hate destnîşankirin, wê hingê pelê Read dê vala bibe.
(ji bo evîndarên bedewiyê, hûn dikarin ne tenê pelê, lê "sernivîsek" ku meta-agahdariyê tê de têxin nav xwe: navê pelê, maf, dema guherandina paşîn, hwd.)

Otomasyona destpêkê

Ji bo rehetiyê, nivîsarên bash hatin nivîsandin ku destpêkirina li Linux-ê otomatîk bikin (li ser Ubuntu 16.04.3 LTS ceribandin).
Ka em gav bi gav li destpêkirinê binêrin.
Rekor:

  1. sudo Copy_Flash.sh "DEVICE" - wêneya FS-ê ji DEVICE (flash);
  2. ./Write.sh "FILE" "KEY" "MARKER" - jîngehek virtual biafirîne, pirtûkxaneyên hewce dakêşîne û skrîptê binivîsîne;
  3. sudo ./Write_Flash.sh "DEVICE" - FS-ya guherî dîsa li DEVICE binivîse.

Xwendinî:

  1. sudo Copy_Flash.sh "DEVICE" - wêneya FS-ê ji DEVICE (flash);
  2. ./Read.sh "KEY" 'MARKER" - jîngehek virtual biafirîne, pirtûkxaneyên pêwîst dakêşîne û ji bo xwendinê skipt bimeşîne;
  3. Di pelrêça heyî de, pelê Xwendin vekin - ev agahdariya zipkirî ye.

encamê

Ev rêbaza steganografiyê dibe ku pêdivî bi başkirin, ceribandina zêde û dirêjkirina pergalên pelan ên populertir, wek mînak qelew32, NTFS и ext4.
Lê mebesta vê xebatê ew bû ku prensîba nîşan bide ku pê gengaz e ku meriv hilanîna veşartî ya agahdariya di pergala pelan de pêk bîne.
Bi alîkariya algorîtmayên weha, hûn dikarin bêtirs agahdarî hilînin, û heke, heke hûn mifteyê zanibin, ne bi hêzek hov (lê bi algorîtmayek pir dirêj) gengaz e ku hûn pergalek weha hack bikin, wê hingê bêyî ku mifteyê bizanibin, ev pergal ji min re bêkêmasî aram xuya dike, lêbelê, ev dibe sedemek ji bo gotarek cûda.

Hemî kod di guhertoya Python 3.5.2 de têne bicîh kirin. Mînaka xebatê li ser kanala min a youtube pêşkêş kirin. Koda tevahî ya projeyê li ser hatî şandin github.
(Erê, erê, ez dizanim ku ji bo guhertoya hilberînê hûn hewce ne ku di tiştek "lez" de binivîsin, mînakî C 😉)
Di vê pêkanînê de, mezinahiya pelê têketinê ji bo steganografiyê divê ji 1000 kB derbas nebe.

Ez dixwazim spasiya xwe ji bikarhêner re diyar bikim PavelMSTU ji bo şîreta hêja di plansazkirina lêkolînê de û pêşniyarên li ser sêwirana gotarê.

Source: www.habr.com

Add a comment