Failu sistēmas steganogrāfija

Čau, Habr.

Es vēlētos jūs iepazīstināt ar nelielu projektu steganogrāfija, kas tapusi no studijām brīvajā laikā.

Es izveidoju projektu par slēptu informācijas glabāŔanu failu sistēmā (turpmāk FS).
To var izmantot, lai nozagtu konfidenciālu informāciju izglītības nolūkos.

Failu sistēmas steganogrāfija

Kā prototips tika izvēlēts ļoti vecs Linux FS ext2.

IevieŔana

IevieÅ”anas apsvērumi

Ja ir labi ā€œatŔķetinātā€ ext2 standartu, tad var aizstāt to, ka FS ir t.s. Superbloki, kas sniedz pamatinformāciju par sistēmu. Pēc tam, kad mani atrada Bloķēt bitkarti Šø Inodes tabula. GandrÄ«z uzreiz radās ideja ierakstÄ«t informāciju paÅ”laik tukÅ”os FS blokos. Tagad bija vērts padomāt par aizsardzÄ«bu no bruņota programmētāja hex redaktors.

Ja slēptu informāciju glabājat bez Å”ifrÄ“Å”anas, tad, neskatoties uz tās neskaidrÄ«bu FS, tā joprojām bÅ«s pārāk pamanāma, it Ä«paÅ”i, ja programmētājs zina, ko meklēt. Tāpēc tika nolemts Å”ifrēt visus avota faila blokus. Es izvēlējos bloka Å”ifru AES, bet, kā jÅ«s saprotat, tas nav svarÄ«gi.

Lai lasot nepiecieÅ”amos blokus atdalÄ«tu no visiem pārējiem, tika nolemts katram blokam bloka sākumā pievienot speciālu marÄ·ieri. Å is marÄ·ieris tika Å”ifrēts atkarÄ«bā no bloka numura avota failā. Å is triks uzreiz ļāva ne tikai atrast nepiecieÅ”amos blokus, bet arÄ« atpazÄ«t to pareizo secÄ«bu.

Sistēmas vispārējais darbības princips.

Failu sistēmas steganogrāfija

IerakstīŔanas algoritms

Punkti:

  • Vispirms ierakstiet kādu informāciju avota failu sistēmā;
  • Dzēst Å”o informāciju (ne vienmēr visu);
  • Slēpjamais fails tiek sadalÄ«ts vienāda garuma blokos, pievienojot marÄ·ieri;
  • Å ifrēt Å”os blokus;
  • Ievietojiet Å”ifrētos blokus tukÅ”os FS blokos.

Blokshēmu cienītājiem

Zemāk ir ierakstÄ«Å”anas algoritma blokshēma. Algoritms kā ievadi saņem četrus failus:
-Modējamas failu sistēmas attēls;
-Steganogrāfijai pakļauts fails;
-Fails ar AES Å”ifrÄ“Å”anas atslēgu;
- Fails ar marÄ·ieri.
Failu sistēmas steganogrāfija

TÅ«lÄ«t ir vērts atzÄ«mēt, ka Å”im algoritmam ir viens trÅ«kums: pēc faila ierakstÄ«Å”anas FS, nevar ierakstiet FS jebko jaunu, jo jebkura jauna informācija var nonākt blokos, ko esam pieŔķīruÅ”i mÅ«su zip failam, lai gan tas arÄ« paver iespēju ā€œÄtri aptvert mÅ«su pēdasā€.

Bet ir diezgan skaidrs, kā to var labot: ir jāpārraksta bloku rakstīŔanas algoritms FS. Tas ir saprotams, bet neticami laikietilpīgs uzdevums.
Proof Of Consept es to neieviesu.

Rezultātā FS tiks veiktas Ŕādas izmaiņas; Ŕādi FS izskatās pirms steganogrāfijas (iepriekÅ” tika ierakstÄ«ts audio fails).
Failu sistēmas steganogrāfija
Un Ŕādi izskatās FS ar jau saspiesto informāciju.
Failu sistēmas steganogrāfija

LasīŔanas algoritms

Punkti:

  • Zinot atslēgu un marÄ·ieru konstruÄ“Å”anas metodi, izveidojiet pirmos N marÄ·ierus ar garantiju, ka N, reizināts ar failu sistēmas bloka garumu, ir lielāks par zip faila garumu;
  • Meklēt blokus FS, sākot ar marÄ·ieriem;
  • AtÅ”ifrējiet saņemtos blokus un atdaliet marÄ·ierus;
  • Savāciet iegÅ«tos blokus pareizā secÄ«bā un iegÅ«stiet avota failu.

Blokshēmu cienītājiem

Zemāk ir ierakstÄ«Å”anas algoritma blokshēma. Algoritms kā ievadi saņem trÄ«s failus:
-Failu sistēmas attēls;
-Fails ar AES Å”ifrÄ“Å”anas atslēgu;
- Fails ar marÄ·ieri.
Failu sistēmas steganogrāfija

Pēc programmas palaiÅ”anas parādās lasÄ«Å”anas fails, kas bÅ«s fails, kas iegÅ«ts no steganogrāfētās failu sistēmas; ja atslēga vai marÄ·ieris ir norādÄ«ts nepareizi, lasÄ«Å”anas fails bÅ«s tukÅ”s.
(skaistuma cienÄ«tājiem varat ievietot ne tikai failu, bet arÄ« ā€œgalveniā€, kurā ir metainformācija: faila nosaukums, tiesÄ«bas, pēdējās modifikācijas laiks utt.)

StartÄ“Å”anas automatizācija

ĒrtÄ«bas labad tika rakstÄ«ti bash skripti, lai automatizētu palaiÅ”anu operētājsistēmā Linux (testēts Ubuntu 16.04.3 LTS).
Apskatīsim palaiŔanu soli pa solim.
Ieraksts:

  1. sudo Copy_Flash.sh ā€œDEVICEā€ - iegÅ«stiet FS attēlu no DEVICE (flash);
  2. ./Write.sh ā€œFILEā€ ā€œKEYā€ ā€œMARKERā€ ā€“ izveido virtuālo vidi, lejupielādē vajadzÄ«gās bibliotēkas un palaid rakstÄ«Å”anas skriptu;
  3. sudo ./Write_Flash.sh ā€œDEVICEā€ ā€“ ierakstiet mainÄ«to FS vēlreiz uz DEVICE.

LasīŔana:

  1. sudo Copy_Flash.sh ā€œDEVICEā€ - iegÅ«stiet FS attēlu no DEVICE (flash);
  2. ./Read.sh ā€œKEYā€ 'MARKERā€ - izveidojiet virtuālo vidi, lejupielādējiet nepiecieÅ”amās bibliotēkas un palaidiet izlaiÅ”anu lasÄ«Å”anai;
  3. PaÅ”reizējā direktorijā atveriet LasÄ«t failu - Ŕī ir zip informācija.

Secinājums

Å ai steganogrāfijas metodei, iespējams, ir nepiecieÅ”ami uzlabojumi, papildu pārbaude un paplaÅ”ināŔana uz populārākām failu sistēmām, piemēram, Fat32, NTFS Šø ext4.
Bet Ŕī darba mērÄ·is bija parādÄ«t principu, pēc kura ir iespējams veikt slēptu informācijas uzglabāŔanu failu sistēmā.
Ar Ŕādu algoritmu palÄ«dzÄ«bu var bezbailÄ«gi uzglabāt informāciju, un, ja, zinot atslēgu, ir iespējams uzlauzt Ŕādu sistēmu nevis ar brutālu spēku (bet ar ļoti garu algoritmu), tad, nezinot atslēgu, Ŕī sistēma man Ŕķiet absolÅ«ti stabila, tomēr tas var bÅ«t par iemeslu atseviŔķam rakstam.

Viss kods ir ieviests Python versijā 3.5.2. Darba piemērs prezentēts manā youtube kanālā. Pilns projekta kods ir ievietots GitHub.
(Jā, jā, es zinu, ka ražoÅ”anas versijai ir jāraksta kaut kas "ātri", piemēram, C šŸ˜‰)
Šajā ievieŔanā steganogrāfijas ievades faila lielums nedrīkst pārsniegt 1000 kB.

Es vēlos izteikt pateicÄ«bu lietotājam PāvelsMSTU par vērtÄ«giem padomiem pētÄ«juma plānoÅ”anā un ieteikumiem par raksta noformējumu.

Avots: www.habr.com

Pievieno komentāru