Fayl sistemində steganografiya

Salam, Habr.

Mən sizə kiçik bir layihəni təqdim etmək istəyirəm steganografiya, şəxsi vaxtımda hazırlanmışdır.

Mən fayl sistemində (bundan sonra FS).
informasiya gizli saxlama layihəsi etdim. Bu, təhsil məqsədli məxfi məlumatların oğurlanması üçün tətbiq oluna bilər.

Fayl sistemində steganografiya

İlk nümunə olaraq, olduqca köhnə bir Linux fayl sistemi seçildi ext2.

Həyata keçirmə

İcra ilə bağlı düşüncələr

Standard ext2-ni yaxşıca «tədqiq etsəniz», fayl sistemində belə bir şey var ki, buna Superblocksdeyilir, burada sistem haqqında əsas məlumat verilir. Mənim tərəfimdən Block BitmapInode Tabletapıldı. Demək olar ki, dərhal FS-in boş bloklarına məlumat yazma fikri yarandı. İndi proqramçıdan qorunmağı düşünmək lazım idi, silahlanmış hex-redaktoru.

ilə. Gizlədilən məlumatı şifrələmədən saxlamaq, FS-də onun bulanıqlığına baxmayaraq, yenə də çox göze çarpacaq, xüsusilə proqramçının hansı şeyi axtardığını bildiyi halda. Buna görə də bütün başlanğıc fayl bloklarını şifrələmək qərara alındı. Mən blok şifrini seçdim AES, amma bildiyiniz kimi, bu prinsipial deyildir.

Lazım olan blokları digər bloklardan ayırmaq üçün oxuma zamanı hər bir blokun başlanğıcına xüsusi bir marker əlavə etmək qərara alındı. Bu marker, başlanğıc fayldakı blokun nömrəsindən asılı olaraq şifrələnirdi. Bu fənd dərhal lazım olan blokları tapmaqla yanaşı, onların düzgün düzülüşünü də öyrənməyə imkan verdi.

Sistemin ümumi iş prinsipi.

Fayl sistemində steganografiya

Yazma alqoritmi

Addım-addım:

  • Əvvəlcə hər hansı bir məlumatı başlanğıc fayl sisteminə yazın;
  • Bu məlumatı silin (hər zaman bütününü deyil);
  • Gizlədiləcək faylı eyni uzunluqda bloklara ayırın, marker əlavə edin;
  • Bu blokları şifrələyin;
  • Şifrələnmiş blokları boş FS bloklarına yerləşdirin.

Blok diaqramı sevənlər üçün

Aşağıda yazma alqoritminin blok diaqramı təqdim olunur. Alqoritm giriş olaraq dörd fayl alır:
-Dəyişdirilən fayl sistemi imici;
-Steganografiyaya tabe olan fayl;
-AES üçün şifrləmə açarı olan fayl;
-Marker olan fayl.
Fayl sistemində steganografiya

Lazım gəldi ki, alqoritmin bir çatışmazlığı var: FS-də fayl yazıldıqdan sonra yeni bir şey yazmaq mümkün deyil, çünki yeni məlumat hər hansı bir zaman bizim steganografladığımız faylın ayrılmış bloklarına düşə bilər, amma bu, «izləri sürətlə silmək» imkanı yaradır. Ancaq bunu düzəltmək üçün necə olduğunu başa düşmək olduqca sadədir: FS-də blokların yazılma alqoritmini yenidən yazmaq lazımdır. Bu aydındır, amma inanılmaz dərəcədə iş tələb edən bir işdir.

Proof Of Concept üçün bunu həyata keçirmədim.
Nəticədə, FS-də aşağıdakı dəyişikliklər baş verəcək, FS steganografiya öncəsi belə görünür (öncədən bir audio faylı yazılmışdır).

Və FS artıq steganografiyalı informasiya ilə belə görünür.
Fayl sistemində steganografiya
Oxuma alqoritmi
Fayl sistemində steganografiya

Алгоритм чтения

Addım-addım:

  • Açarın və markerlərin qurulma üsulunun bilikləri ilə ilk N markerini yaratmaq, N-in dosya sisteminin blok uzunluğuna vurulmuş halının, görünməz fayldan böyük olmasını təmin edir;
  • FS-də markerlərlə başlayan blokları axtarmaq;
  • Əldə edilmiş blokları deşifrə etmək və markerləri ayırmaq;
  • Alınan blokları düzgün ardıcıllıqla toplamaq və orijinal faylı əldə etmək.

Blok diaqramı sevənlər üçün

Aşağıda qeyd olunan blok-diagramı yazma alqoritmini göstərir. Alqoritm üç fayl alır:
- Dosya sisteminin şəkli;
-AES üçün şifrləmə açarı olan fayl;
-Marker olan fayl.
Fayl sistemində steganografiya

Proqram işə düşdükdən sonra Read adlı bir fayl yaranır, bu fayl gizli FS-dən çıxarılmış fayl olacaq. Əgər açar və ya marker səhv göstərilirsə, Read faylı boş olacaq.
(Gözəl görünüş üçün fayldan əlavə, fayl adı, icazələr, son dəyişikdiklik vaxtı və s. kimi meta-informasiya daxil etmək mümkündür.)

Başlatmanın avtomatlaşdırılması

İstifadəyə rahatlıq üçün, Linux-da (Ubuntu 16.04.3 LTS-də test edilmişdir) başlatmanı avtomatlaşdıran bash skriptləri yazılmışdır.
Başlatmanı addım-addım nəzərdən keçirək.
Yazma:

  1. sudo Copy_Flash.sh “CİHAZ” — CİHAZ-dan (fləş) FS şəkli alırıq;
  2. .\/Write.sh “FAYL” “AÇAR” “MARKER” – virtual mühit yaradır, lazımi kitabxanaları yükləyir və yazma skriptini icra edirik;
  3. sudo .\/Write_Flash.sh “CİHAZ” – dəyişdirilmiş FS-yəni yenidən CİHAZ-a yazırıq.

Oxuma:

  1. sudo Copy_Flash.sh “CİHAZ” — CİHAZ-dan (fləş) FS şəkli alırıq;
  2. .\/Read.sh “AÇAR” ‘MARKER” — virtual mühit yaradır, lazımi kitabxanaları yükləyir və oxuma skriptini icra edirik;
  3. Hal-hazırkı kataloqda Read faylını açırıq – bu, gizli məlumatdır.

Nəticə

Bu steqanografinin metodu, şübhəsiz, əlavə testlər və daha məşhur dosya sistemlərinə genişlənmə tələb edir, məsələn, Fat32, NTFSext4.
Ancaq bu işin məqsədi, məlumatların dosya sistemində gizli saxlanması prinsipi göstərmək idi.
Belə alqoritmlərin köməyi ilə məlumatlarınızı təhlükəsiz saxlaya bilərsiniz, və açar bilindikdə belə bir sistemin pozulması tam qırmalar olmadan mümkündür (amma olduqca uzun bir alqoritmlə), açar bilinmədikdə bu sistem mənim üçün tamamilə davamlı görünür, amma bu, ayrıca bir məqalə üçün səbəb ola bilər.

Bütün kod Python 3.5.2 dilində həyata keçirilmişdir. İşləmənin nümunəsi mənim youtube kanalımdakı təqdimat görünür. Layihənin tam kodu github.
(Bəli, produktion versiyası üçün daha "sürətli" bir şeydə yazmalısınız, məsələn, C dilində 😉 )
Bu tətbiqin steqanografiya üçün giriş faylının ölçüsü 1000 kB-dan çox olmamalıdır.

Araşdırmanın planlaşdırılmasında və məqalənin formalaşması ilə bağlı dəyərli məsləhətlər verdiyi üçün istifadəçiyə təşəkkürümü bildirirəm PavelMSTU yalnız xidmət etməyim üçün.

Mənbə: habr.com

DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər 🔥 DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər | ProHoster