Hej Habr.
Jeg vil gerne præsentere dig for et lille projekt om
Jeg lavede et projekt om skjult lagring af information i filsystemet (yderligere FS).
Dette kan bruges til at stjæle fortrolige oplysninger til uddannelsesformål.
En meget gammel Linux FS blev valgt som prototype
implementering
Implementeringsovervejelser
Hvis det er godt at "irritere" ext2-standarden, så kan vi erstatte, at der i FS er en såkaldt
Hvis du gemmer skjult information uden kryptering, så vil den, selvom den er sløret i FS, stadig være for iøjnefaldende, især hvis programmøren ved, hvad han skal kigge efter. Derfor blev det besluttet at kryptere alle blokke af kildefilen. Jeg valgte blokchiffer
For at adskille de nødvendige blokke fra alle de andre ved læsning, blev det besluttet at tilføje en speciel markør til hver blok i begyndelsen af blokken. Denne markør blev krypteret afhængigt af bloknummeret i kildefilen. Et sådant trick tillod straks ikke kun at finde de rigtige blokke, men også at finde ud af deres rigtige rækkefølge.
Systemets generelle princip.
Skriv algoritme
Punkterne:
- Først skal du skrive nogle oplysninger til det originale filsystem;
- Slet disse oplysninger (ikke nødvendigvis alle);
- Opdel filen for at gemme sig i blokke af samme længde ved at tilføje en markør;
- Krypter disse blokke;
- Placer krypterede blokke i tomme FS-blokke.
For elskere af flowcharts
Nedenfor er et blokdiagram over optagelsesalgoritmen. Algoritmen modtager fire filer som input:
-Billede af det udskiftelige filsystem;
-Fil underlagt steganografi;
-Fil med krypteringsnøgle til AES;
- Filer med en markør.
Det skal straks bemærkes, at denne algoritme har en ulempe: efter at have skrevet filen til FS, kan ikke skriv noget nyt til FS'en, da enhver ny information kan komme ind i de blokke, som vi har tildelt vores zippede fil, selvom dette også åbner muligheden for "hurtigt at dække over spor".
Men det er ret indlysende, hvordan dette kan rettes: det er nødvendigt at omskrive algoritmen til at skrive blokke til FS. Dette er en forståelig, men utrolig tidskrævende opgave.
For Proof Of Consept implementerede jeg ikke dette.
Resultatet vil være følgende ændringer i FS, sådan ser FS ud før steganografi (en lydfil blev tidligere optaget).
Og sådan ser FS ud med allerede zippede oplysninger.
Læsealgoritme
Punkterne:
- Med kendskab til nøglen og metoden til at konstruere markører, komponer de første N markører med garanti for, at N ganget med længden af filsystemblokken er større end længden af den zippede fil;
- Søg efter blokke i FS startende med markører;
- Dekrypter modtagne blokke og separate markører;
- Saml de resulterende blokke i den rigtige rækkefølge og få kildefilen.
For elskere af flowcharts
Nedenfor er et blokdiagram over optagelsesalgoritmen. Algoritmen modtager tre filer som input:
- Billedfilsystem;
-Fil med krypteringsnøgle til AES;
- Filer med en markør.
Efter programmet er kørt, vises Read-filen, som vil være den fil, der er udtrukket fra den steganograferede FS, hvis nøglen eller markøren blev angivet forkert, så vil Read-filen være tom.
(for elskere af smukhed, kan du blande ikke kun filen, men "headeren", der indeholder metainformation: filnavn, rettigheder, sidste ændrede tidspunkt osv.)
Start Automation
For nemheds skyld er der skrevet bash-scripts, der automatiserer lanceringen på Linux (testet på Ubuntu 16.04.3 LTS).
Lad os tage et kig på lanceringen trin for trin.
rekord:
- sudo Copy_Flash.sh "DEVICE" - få FS-billedet fra DEVICE (flash);
- ./Write.sh "FILE" "KEY" "MARKER" - opret et virtuelt miljø, download de nødvendige biblioteker og kør skrivescriptet;
- sudo ./Write_Flash.sh "DEVICE" - skriv den ændrede FS tilbage til DEVICE.
Læsning:
- sudo Copy_Flash.sh "DEVICE" - få FS-billedet fra DEVICE (flash);
- ./Read.sh "KEY" 'MARKER" - opret et virtuelt miljø, download de nødvendige biblioteker og kør scriptet til læsning;
- I den aktuelle mappe skal du åbne filen Læs - dette er den zippede information.
Konklusion
Denne metode til steganografi skal sandsynligvis forbedres, yderligere testes og udvides til mere populære filsystemer som f.eks
Men formålet med dette arbejde var at vise princippet om, at det er muligt at udføre skjult lagring af information i filsystemet.
Ved hjælp af sådanne algoritmer kan du frygtløst gemme information, og hvis et sådant system med viden om nøglen kan hackes ikke ved udtømmende søgning (men ved en meget lang algoritme), så uden at kende nøglen, vil dette system forekommer mig at være absolut stabil, men dette kan tjene som grund til en separat artikel.
Al kode er implementeret i Python version 3.5.2.
(Ja, ja, jeg ved, at du til produktionsversionen skal skrive i noget "hurtigt", for eksempel i C 😉 )
I denne implementering bør størrelsen af inputfilen til steganografi ikke overstige 1000 kB.
Jeg vil gerne takke brugeren
Kilde: www.habr.com