Steganografi file kepungkur: ndhelikake data langsung ing sektor

Pambuka cilik

Steganografi, yen ana sing ora ngelingi, ndhelikake informasi ing sawetara wadhah. Contone, ing gambar (dirembug kene ΠΈ kene). Sampeyan uga bisa ndhelikake data ing tabel layanan sistem file (iki ditulis babagan kene), lan malah ing paket layanan protokol TCP. Sayange, kabeh cara iki duwe siji drawback: kanggo imperceptibly "masang" informasi menyang wadhah, sampeyan kudu algoritma licik sing njupuk menyang akun peculiarities saka struktur internal wadhah. Lan ana masalah karo resistensi wadhah kanggo manipulasi: umpamane, yen sampeyan rada ngowahi gambar, informasi sing didhelikake bakal ilang.

Apa bisa ditindakake tanpa algoritma licik lan manipulasi subtle karo data, lan isih njamin fungsi wadhah lan tingkat keamanan data sing didhelikake? Looking ahead, aku bakal ngomong - ya, sampeyan bisa! Aku malah bakal menehi sampeyan sarana.

Rincian getih babagan metode

Ing idea dhasar minangka prasaja minangka jotosan kanggo bathuk: ana wilayah ing disk sing sistem operasi tau nulis kanggo (utawa nulis ing kasus langka). Kanggo ngindhari kabutuhan kanggo nggoleki wilayah kasebut kanthi nggunakake algoritma licik, kita bakal nggunakake redundansi - yaiku, kita bakal duplikat informasi sing didhelikake akeh, kaping pirang-pirang ing kabeh sektor disk. Banjur, ing ndhuwur kabeh kemegahan iki, sampeyan bisa nggawe partisi sing dibutuhake, format sistem file, nulis file lan nginstal OS - kabeh padha, bagean saka data rahasia bakal disimpen lan bisa dijupuk, lan duplikasi bola-bali bakal mbantu kita. sijine kabΓ¨h asli bebarengan saka bΓͺsik.

Kauntungan saka metode iki jelas: kita ora gumantung ing format file, utawa malah ing jinis sistem file sing digunakake.

Kerugian uga, aku mikir, jelas:

  • Data rahasia mung bisa diganti kanthi nulis ulang kabeh disk, banjur nggawe ulang konten sing katon pangguna. Nanging, sampeyan ora bisa nggunakake piranti lunak sing nggawe ulang disk saka gambar: uga bakal nggawe data rahasia sadurunge.
  • Sing luwih gedhe volume data rahasia, luwih gedhe kemungkinan ilang sawetara informasi.
  • Njupuk data saka disk bisa njupuk wektu dawa. Saka sawetara menit nganti pirang-pirang dina (disk modern gedhe).

Saiki ayo pindhah menyang spesifik.

Cetha yen sampeyan mung smear data rahasia ing kabeh disk, iku mung bakal didhelikake saka mripat wuda. Yen sampeyan nglengkapi pandelengan karo, ngomong, editor disk, data bakal katon ing kabeh kamulyan. Mula, luwih becik ndhelik data kasebut supaya ora katon. Kita bakal ndhelik kanthi gampang, nanging kanthi rasa: nggunakake algoritma aes256-cbc. Kita bakal njaluk pangguna kanggo kunci enkripsi lan supaya dheweke entuk tembung sandhi sing apik.

Pitakonan sabanjure yaiku carane kita bisa mbedakake data "apik" saka data sing ala. Ing kene checksum bakal mbantu kita, nanging ora prasaja, nanging SHA1. Lan apa? Iku cukup apik kanggo git, supaya uga cocog karo kita. Diputusake: kita nyedhiyakake saben informasi sing disimpen kanthi checksum, lan yen sawise dekripsi cocog, tegese dekripsi kasebut sukses.

Sampeyan uga mbutuhake nomer fragmen lan dawa total data rahasia. Nomer fragmen yaiku kanggo nglacak potongan sing wis dideskripsikake lan sing isih ana. Dawa total bakal migunani kanggo kita nalika ngolah fragmen pungkasan, supaya ora nulis data sing ora perlu (yaiku, padding). Ya, amarga kita isih duwe header, kita bakal nambah jeneng file rahasia ing kana. Bakal migunani sawise dekripsi, supaya ora ngira carane mbukak.

Nguji metode ing laku

Kanggo mriksa, ayo njupuk medium sing paling umum - flash drive. Aku nemokake sing lawas kanthi kapasitas 1 GB, sing cocok kanggo eksperimen. Yen sampeyan, kaya aku, teka karo idea kanggo ora ngganggu media fisik, nanging nyoba ing file - gambar disk, banjur aku bakal langsung ngomong: iku ora bisa. Nalika ngowahi format "disk" kasebut, Linux nggawe file maneh, lan kabeh sektor sing ora digunakake bakal diisi nol.

Minangka mesin karo Linux, sayangé, aku kudu nggunakake stasiun cuaca ing Raspberry Pi 3 lying ing loteng Ana ora akèh memori ana, supaya kita ora ndhelikake file gedhe. Kita mbatesi ukuran maksimal 10 megabyte. Ora ana gunane kanggo ndhelikake file sing cilik banget: alat kasebut nulis data menyang disk ing kluster 4 KB. Mulane, ing ngisor iki kita bakal mbatesi awake dhewe menyang file 3 kb - cocog karo klompok kasebut.

Kita bakal ngolok-olok flash drive kanthi bertahap, mriksa sawise saben tahap manawa informasi sing didhelikake bisa diwaca:

  1. Format cepet ing format FAT16 kanthi ukuran kluster 16 KB. Iki sing ditawakake Windows 7 karo flash drive sing ora duwe sistem file.
  2. Isi flash drive karo kabeh jinis sampah kanthi 50%.
  3. Isi flash drive karo kabeh jinis sampah kanthi 100%.
  4. Format "Long" ing format FAT16 (nimpa kabeh).

Rong tes pisanan, kaya sing dikarepake, rampung kanthi kamenangan lengkap: sarana kasebut bisa ngekstrak 10 megabyte data rahasia saka flash drive. Nanging sawise flash drive diisi nganti kapasitas file, ana kegagalan:

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

Kaya sing sampeyan ngerteni, mung 158 kluster sing bisa didekripsi (632 kilobyte data mentah, sing menehi muatan 636424 bita). Cetha yen ora ana cara kanggo entuk 10 megabyte ing kene, nanging ing antarane klompok kasebut ana duplikat sing jelas. Sampeyan ora bisa mbalekake 1 megabyte kanthi cara iki. Nanging kita bisa njamin yen kita bakal mbalekake 3 kilobyte data rahasia saka flash drive sanajan wis diformat lan ditulis kanthi kapasitas. Nanging, nyobi nuduhake iku cukup bisa kanggo extract file 120 kilobyte saka flash drive kuwi.

Tes pungkasan, sayangΓ©, nuduhake yen kabeh flash drive wis ditindih:

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

Ora ana kluster siji sing slamet ... Sedhih, nanging ora tragis! Sadurunge ngowahi format, ayo nyoba nggawe partisi ing flash drive, lan wis ana sistem file. Miturut cara, asale saka pabrik kanthi format iki, mula kita ora nindakake apa-apa sing curiga.
Dikarepake manawa papan sing kasedhiya ing flash drive wis rada suda.

Sampeyan uga cukup samesthine yen 10 megabyte ora bisa didhelikake ing disk lengkap. Nanging saiki jumlah kluster sing sukses didekripsi wis tikel kaping pindho!

Total clusters read: 250752, decrypted: 405

Sayange, ora bisa ngumpulake megabyte saka potongan, nanging rong atus kilobyte gampang.

Inggih, kabar bab pungkasan, mriksa kaping 4, wektu iki bungah: rampung format flash drive kuwi ora mimpin kanggo karusakan saka kabeh informasi! 120 kilobyte data rahasia pas karo papan sing ora digunakake.

Tabel ringkesan tes:

Steganografi file kepungkur: ndhelikake data langsung ing sektor

Sedikit teori: babagan ruang bebas lan sektor sing ora digunakake

Yen sampeyan wis tau dibagi hard drive menyang partisi, sampeyan bisa uga wis ngeweruhi sing ora tansah bisa kanggo nyedhiakke kabeh papan free ing disk. Bagean pisanan tansah diwiwiti kanthi sawetara indentasi (biasane 1 megabyte, utawa 2048 sektor). Konco bagean pungkasan, uga kedadeyan sing tetep ana "buntut" cilik saka sektor sing ora digunakake. Lan kadhangkala ana kesenjangan ing antarane bagean, sanajan arang banget.

Ing tembung liya, ana sektor ing disk sing ora bisa diakses sajrone karya normal karo disk, nanging data bisa ditulis menyang sektor kasebut! Lan tegese maca uga. Diatur kanggo kasunyatan sing ana uga tabel partisi lan kode bootloader, sing ana ing area kosong ing wiwitan disk.

Ayo ngaso saka bagean kanggo sawetara wektu lan ndeleng disk saka mripat manuk, supaya bisa ngomong. Ing kene kita duwe partisi kosong ing disk. Ayo nggawe sistem file ing. Apa kita bisa ngomong yen sawetara sektor ing disk tetep ora dibusak?

E-e-e - drum roll! Jawaban meh mesthi ya! Pancen, ing sawetara kasus, nggawe sistem file teka mudhun kanggo nulis mung sawetara pamblokiran informasi layanan kanggo disk, lan digunakake isi partisi ora ngganti.

Lan uga - sejatine sifate empiris - kita bisa nganggep manawa sistem file ora bisa tansah ngenggoni kabeh papan sing diwenehake nganti sektor pungkasan. Contone, sistem file FAT16 kanthi ukuran kluster 64 kilobyte temenan ora bisa ngrampungake partisi kanthi ukuran ora kaping pirang-pirang 64 kilobyte. Ing pungkasan bagean kasebut kudu ana "buntut" sawetara sektor, ora bisa diakses kanggo nyimpen data pangguna. Nanging, asumsi iki ora bisa dikonfirmasi kanthi eksperimen.

Dadi, kanggo nggedhekake ruang sing kasedhiya kanggo steganogram, sampeyan kudu nggunakake sistem file kanthi ukuran kluster sing luwih gedhe. Sampeyan uga bisa nggawe partisi, sanajan iki ora perlu (ing flash drive, contone). Ora perlu nggawe bagean kosong utawa ninggalake wilayah sing ora ana - iki bakal narik perhatian warga sing kasengsem.

Utilitas kanggo eksperimen

Sampeyan bisa nutul kode sumber utilitas kene

Kanggo mbangun, sampeyan kudu Qt versi 5.0 utawa luwih dhuwur lan OpenSSL. Yen ana sing ora bisa, sampeyan bisa uga kudu ngowahi file steganodisk.pro.

Sampeyan bisa ngganti ukuran kluster saka 4 KB kanggo, ngomong, 512 bait (ing secretfile.h). Ing wektu sing padha, biaya informasi layanan bakal nambah: header lan checksum manggoni 68 bita tetep.

Sampeyan kudu mbukak sarana, mesthi, kanthi hak pangguna root, lan kanthi ati-ati. Ora bakal ana pitakon sadurunge nimpa file utawa piranti sing wis ditemtokake!

Sekeca.

Source: www.habr.com

Add a comment