Tiedostojärjestelmän steganografia

Hei Habr.

Haluan esitellä teille pienen projektin steganografia, tehty opiskelusta vapaa-ajallani.

Tein projektin tiedon piilottamisesta tiedostojärjestelmään (jatkoa ФС).
Tätä voidaan käyttää luottamuksellisten tietojen varastamiseen koulutustarkoituksiin.

Tiedostojärjestelmän steganografia

Prototyypiksi valittiin hyvin vanha Linux FS ext2.

Реализация

Täytäntöönpanon näkökohdat

Jos on hyvä "purkaa" ext2-standardi, niin voit korvata sen, että FS:ssä on ns. Superblocks, joka tarjoaa perustiedot järjestelmästä. Sen jälkeen kun minut löydettiin Estä bittikartta и Inode-taulukko. Melkein välittömästi syntyi ajatus tietojen tallentamisesta tällä hetkellä tyhjiin FS-lohkoihin. Nyt kannatti miettiä suojaa aseistetulta ohjelmoijalta hex-editori.

Jos tallennat piilotettua tietoa ilman salausta, vaikka sen epäselvyydestä huolimatta FS:ssä, se on silti liian näkyvä, varsinkin jos ohjelmoija tietää mitä etsiä. Siksi päätettiin salata kaikki lähdetiedoston lohkot. Valitsin lohkosalauksen AES, mutta kuten ymmärrät, tällä ei ole merkitystä.

Tarvittavien lohkojen erottamiseksi kaikista muista lukemisen aikana päätettiin lisätä jokaiseen lohkoon erityinen merkki lohkon alkuun. Tämä tunnus salattiin lähdetiedoston lohkonumeron mukaan. Tämä temppu mahdollisti välittömästi tarvittavien lohkojen löytämisen lisäksi myös niiden oikean järjestyksen tunnistamisen.

Järjestelmän yleinen toimintaperiaate.

Tiedostojärjestelmän steganografia

Tallennusalgoritmi

Kohdissa:

  • Kirjoita ensin joitakin tietoja lähdetiedostojärjestelmään;
  • Poista nämä tiedot (ei välttämättä kaikkia);
  • Piilotettava tiedosto jaetaan samanpituisiin lohkoihin lisäämällä merkintä;
  • Salaa nämä lohkot;
  • Aseta salatut lohkot tyhjiin FS-lohkoihin.

Lohkokaavioiden ystäville

Alla on lohkokaavio tallennusalgoritmista. Algoritmi vastaanottaa syötteenä neljä tiedostoa:
-Kuva muokattavasta tiedostojärjestelmästä;
-Steganografian alainen tiedosto;
-Tiedosto AES-salausavaimella;
-Viilaa tussilla.
Tiedostojärjestelmän steganografia

On syytä huomata heti, että tällä algoritmilla on yksi haittapuoli: tiedoston kirjoittamisen jälkeen FS:ään, ei voi kirjoita FS:ään mitä tahansa uutta, koska kaikki uudet tiedot voivat päätyä lohkoihin, jotka olemme osoittaneet zip-tiedostollemme, vaikka tämä avaa myös mahdollisuuden "peittää jäljet ​​nopeasti".

Mutta on aivan ilmeistä, kuinka tämä voidaan korjata: FS:n lohkojen kirjoitusalgoritmi on kirjoitettava uudelleen. Tämä on ymmärrettävä, mutta uskomattoman aikaa vievä tehtävä.
Proof Of Consept -sovelluksessa en ottanut tätä käyttöön.

Tämän seurauksena FS:ään tehdään seuraavat muutokset: tältä FS näyttää ennen steganografiaa (äänitiedosto on tallennettu aiemmin).
Tiedostojärjestelmän steganografia
Ja tältä FS näyttää, kun tiedot on jo pakattu.
Tiedostojärjestelmän steganografia

Lukualgoritmi

Kohdissa:

  • Kun tiedät avaimen ja merkkien rakennusmenetelmän, muodosta ensimmäiset N merkkiä ja takaa, että N kerrottuna tiedostojärjestelmälohkon pituudella on suurempi kuin pakatun tiedoston pituus;
  • Etsi lohkoja FS:stä alkaen merkeillä;
  • Pura vastaanotetut lohkot ja erota merkit;
  • Kerää tuloksena olevat lohkot oikeassa järjestyksessä ja hanki lähdetiedosto.

Lohkokaavioiden ystäville

Alla on lohkokaavio tallennusalgoritmista. Algoritmi vastaanottaa kolme tiedostoa syötteenä:
-Tiedostojärjestelmän kuva;
-Tiedosto AES-salausavaimella;
-Viilaa tussilla.
Tiedostojärjestelmän steganografia

Kun ohjelma on suoritettu, näyttöön tulee Read-tiedosto, joka on steganografoidusta tiedostojärjestelmästä purettu tiedosto; jos avain tai merkki on määritetty väärin, Read-tiedosto on tyhjä.
(kauneuden ystäville voit lisätä tiedoston lisäksi "otsikon", joka sisältää metatietoja: tiedoston nimi, oikeudet, viimeisin muokkausaika jne.)

Käynnistyksen automaatio

Mukavuussyistä bash-komentosarjat kirjoitettiin automatisoimaan käynnistys Linuxissa (testattu Ubuntu 16.04.3 LTS:ssä).
Katsotaanpa käynnistystä askel askeleelta.
Запись:

  1. sudo Copy_Flash.sh “DEVICE” - hanki FS-kuva LAITTEESTA (flash);
  2. ./Write.sh “FILE” “KEY” “MARKER” – luo virtuaalinen ympäristö, lataa tarvittavat kirjastot ja suorita kirjoitusskripti;
  3. sudo ./Write_Flash.sh “DEVICE” – kirjoita muutettu FS uudelleen kohtaan DEVICE.

Lukeminen:

  1. sudo Copy_Flash.sh “DEVICE” - hanki FS-kuva LAITTEESTA (flash);
  2. ./Read.sh “KEY” 'MERKKI' - luo virtuaaliympäristö, lataa tarvittavat kirjastot ja suorita ohitus lukemista varten;
  3. Avaa nykyisessä hakemistossa lukutiedosto - tämä on pakatut tiedot.

Johtopäätös

Tämä steganografiamenetelmä tarvitsee todennäköisesti parannusta, lisätestausta ja laajennusta suositumpiin tiedostojärjestelmiin, kuten Fat32, NTFS и ext4.
Mutta tämän työn tarkoituksena oli näyttää periaate, jolla on mahdollista suorittaa piilotettu tietojen tallennus tiedostojärjestelmään.
Tällaisten algoritmien avulla voit pelottomasti tallentaa tietoja, ja jos, jos tiedät avaimen, on mahdollista hakkeroida tällainen järjestelmä ei raa'alla voimalla (mutta erittäin pitkällä algoritmilla), niin tietämättä avainta, tämä järjestelmä vaikuttaa minusta täysin vakaalta, mutta tämä saattaa kuitenkin toimia syynä erilliselle artikkelille.

Kaikki koodi on toteutettu Python-versiossa 3.5.2. Esimerkki työstä esitelty youtube-kanavallani. Projektin koko koodi on julkaistu osoitteessa GitHub.
(Kyllä, kyllä, tiedän, että tuotantoversioon pitää kirjoittaa jotain "nopeaa", esim. C 😉)
Tässä toteutuksessa steganografian syöttötiedoston koko ei saa ylittää 1000 kB.

Haluan ilmaista kiitokseni käyttäjälle PavelMSTU arvokkaita neuvoja tutkimuksen suunnittelussa ja suosituksia artikkelin suunnittelusta.

Lähde: will.com

Lisää kommentti