Pada kontes peretas dan game CTF (Capture The Flag), terkadang teka-teki steganografi muncul: Anda diberi gambar di mana Anda perlu menemukan pesan tersembunyi . Mungkin cara termudah untuk menyembunyikan teks dalam gambar PNG adalah dengan menuliskannya di salah satu saluran warna atau di saluran alfa (saluran transparansi). Untuk mengidentifikasi "bookmark" semacam itu terdapat alat khusus seperti stegsolve , pngcheck dan stegdetect , terkadang kontestan harus mengotak-atik filter di GIMP atau Photoshop secara manual.
Namun, kemajuan tidak berhenti - dan baru-baru ini metode lain untuk menyembunyikan data semakin banyak digunakan, misalnya, pengisian PNG. Mari kita lihat bagaimana ini dilakukan.
Mari kita mulai dengan sedikit pengantar teoretis tentang bagian PNG yang "tidak terlihat".
Saluran alfa
Saat gambar ditampilkan di layar komputer, warna dibuat dengan menggabungkan komponen merah, hijau dan biru. Ketiga bidang warna ini disebut saluran. Mereka biasanya ditulis sebagai RGB.
Selain ketiga saluran tersebut, PNG dapat memiliki saluran keempat yang disebut alpha (dilambangkan dengan huruf A) untuk menentukan tingkat transparansi. Gambar RGBA yang dihasilkan menentukan warna yang terlihat dan tingkat transparansi.
Di sebagian besar format grafik, saluran alfa adalah nilai dari 0% hingga 100% (atau 0 hingga 255 dalam byte). Nilai 0% (hitam) menunjukkan tempat di gambar yang seharusnya transparansi penuh - di sini nilai RGB diabaikan, dan latar belakang di bawah gambar terlihat sepenuhnya. Nilai alfa 100% (putih) berarti saluran RGB benar-benar buram. Nilai antara menentukan seberapa banyak latar belakang akan dibaurkan dengan nilai piksel RGB.
PNG Alfa Gradien
Nilai gradien alfa biasanya digunakan untuk memadukan gambar ke gambar atau halaman web lain. Gradien alfa tersedia dalam format PNG, WebP, ICO, ICN, dan format raster lainnya. Format GIF hanya mendukung boolean (piksel transparan atau tidak).
Saluran alfa hanyalah salah satu opsi untuk menempatkan teks tersembunyi. Pindah ke pengisi PNG untuk menulis data langsung ke file biner.
Konten PNG menurut kolom
Format PNG cukup sederhana . Setiap file dimulai dengan tanda tangan standar delapan byte, ini nilai desimalnya
137 80 78 71 13 10 26 10. Byte pertama dipilih di luar ASCII sehingga tidak ada editor yang secara tidak sengaja salah mengira gambar tersebut sebagai file teks. Tiga byte berikutnya sesuai dengan huruf P, N, G. Kemudian pemutusan baris DOS (13 10), penanda akhir file DOS (26) untuk menjaga program tipe mencetak semua sampah biner, dan penanda baris baru Unix.
Setelah header, blok data (chunks) dengan struktur standar dimulai. Pertama, blok IHDR yang menunjukkan lebar dan tinggi gambar, ruang warna, jumlah bit per piksel, metode kompresi, metode pemfilteran, dan ada / tidak adanya kode interlaced. Empat byte dialokasikan untuk lebar dan tinggi, satu byte untuk parameter lainnya.
Ini diikuti oleh blok tEXt opsional dengan metadata teks, seperti nama program yang menghasilkan file PNG. Anda dapat menulis informasi teks biasa ke dalam blok teks.
IHDR dan tEXt diikuti oleh blok IDAT dengan nilai RGB atau RGBA terkompresi untuk piksel bitmap. Saat merender PNG, diproses oleh IHDR, buffer dialokasikan dalam memori untuk gambar, data diekstrak dari format terkompresi dan ditulis ke buffer piksel demi piksel. File PNG diakhiri dengan blok IEND.
Di akhir setiap blok ada checksum CRC untuk blok itu, yang dihitung menggunakan algoritma standar .
Gambar PNG biasanya berisi 8 atau 16 bit informasi per saluran RGB atau RGBA, yaitu tiga hingga delapan byte per piksel adalah keluaran. Dalam format ini, semua byte diisi dengan informasi yang berguna tentang warna dan transparansi, sehingga di akhir setiap baris gambar grafik, kami tidak memiliki tempat untuk menulis data sewenang-wenang.
Namun untuk tugas steganografi, perlu Anda ketahui bahwa PNG juga mendukung kedalaman warna yang lebih rendah: 1 bit (2 warna), 2 bit (4 warna), dan 4 bit (16 warna). Dalam situasi seperti ini, ternyata informasi tentang beberapa piksel disimpan dalam satu byte. Di sinilah kemungkinan teoretis untuk pengisian "horizontal" PNG dengan data asing muncul. Jika lebar gambar dalam piksel bukan kelipatan delapan, maka byte terakhir dari baris tersebut berisi bit-bit yang tidak terpakai, yang bersama-sama membentuk "kolom piksel" yang tidak terpakai.
Dalam kasus gambar 1-bit, hingga 7 bit bebas mungkin tersisa di akhir setiap baris, yang tidak akan diproses oleh parser. Dalam kasus gambar 2-bit, ada hingga 3 bit gratis di byte terakhir. Alat FotoForensics onlinemenemukan "kolom piksel" yang tidak terpakai dalam gambar PNG .
Namun, gambar PNG dengan kedalaman warna yang dangkal sangatlah jarang, sehingga metode steganografi ini bisa dibilang eksotik. Jika Anda menemukan gambar PNG dengan 2, 4 atau 16 warna, fakta ini sendiri menimbulkan kecurigaan dan dapat memulai pemeriksaan konten PNG menurut kolom.
Masalah yang sama sekali berbeda adalah pengisian PNG di luar batas gambar. Ini adalah metode steganografi yang lebih sederhana yang memungkinkan Anda menyembunyikan lebih banyak informasi pada gambar.
PNG -mengisi di luar gambar
Padding pasca-piksel PNG sering digunakan dalam berbagai permainan, teka-teki dan kontes, tidak hanya peretasan. Beginilah cara kerja metode ini:
- Ambil gambar PNG (dengan kedalaman warna apa pun).
- .
- PNG, .
- hex-.
- IHDR. IHDR.
- IHDR — , — . c
00 00 01 9D(413 ), ,00 00 01 7E(382 ).
- CRC ( PNG CRC , IHDR), . CRC , PNG- IHDR.
.

Harap dicatat bahwa data rahasia tetap ada di bagian bawah gambar. Ukuran file tidak berubah: 335.906 byte. Hanya saja parser tidak memproses piksel ini sekarang - dan bagian bawah gambar tidak ditampilkan di layar.
Sangat mudah untuk menebak bahwa di bagian "rahasia" pada gambar, Anda tidak hanya dapat menyembunyikan inskripsi teks, tetapi juga data yang berubah-ubah. Misalnya, kita dapat menulis arsip RAR yang dilindungi sandi di sana. Gambar pesan rahasia dapat dipublikasikan di Habrastorage atau hosting bersama lainnya. Pesan tersebut hanya akan diterima oleh orang yang sebelumnya telah Anda setujui tentang metode pengiriman informasi dan kata sandi yang disetujui. Dengan cara ini, malware dapat mentransfer muatan melalui Habr dan layanan hosting publik lainnya.
Periklanan
VDS untuk situs hosting adalah tentang epik kami ! Semua server "di luar kotak" dilindungi dari serangan DDoS, instalasi otomatis dari panel kontrol VestaCP yang nyaman. Lebih baik mencobanya sekali;)
