Site Logo
Wildan's Workspace

Steganography - Hiding secret(s) Inside A File

Posted on 8 mins

Steganography Hacking Cyber Security

Steganography is the practice of representing information within another message or physical object.1

Pengertian & Sejarah Steganography

Pengertian steganography [selanjutnya saya singkat dengan stego] memang sesederhana “ilmu dan seni menyembunyikan pesan atau informasi rahasia di dalam pesan lain”.

Tapi sebetulnya, jauh sebelum komputer ditemukan, proses stego ini sudah dilakukan sejak zaman Yunani Kuno. Sebuah kisah dari penguasa Yunani saat itu, Herodotus pada tahun 440 BC (re: Before Christ / Sebelum Masehi) yang terdapat dalam buku Histories of Herodotus, menceritakan tentang bagaimana kepala budak digunakan sebagai media steganography. Caranya, kepala budak digundul, kemudian ditulisi pesan, selanjutnya rambut budak tersebut dibiarkan tumbuh untuk kemudian dikirim. Nanti, penerima budak tersebut akan menggunduli kembali kepala budak tersebut agar pesannya dapat terbaca.2

Sekarang, dengan keberadaan komputer, perkembangan stego tentu sudah jauh berkembang. Salah satu teknik yang paling banyak digunakan yaitu LSB (Least Significant Bit) dengan menyisipkan bit ke dalam file digital (teks / gambar / audio / video). Melalui teknik ini, informasi rahasia disisipkan ke dalam file digital dengan cara mengganti bit-bit paling tidak signifikan dalam file digital dengan bit-bit pesan rahasia. Bit-bit yang diganti tidak akan mempengaruhi kualitas file digital dan tidak akan terlihat oleh mata manusia.3 Kurang lebih, berikut adalah ilustrasi dari proses LSB:4

ss1

Contohnya seperti gambar berikut ini: ss2

Salah satu dari dua gambar apel di atas sudah saya sisipi sebuah file bernama “secrets.txt” dengan isi file This is an Apple. ss3

Pertanyaannya…

Kalau dilihat gambarnya seklias, hampir tidak terlihat perbedaan antara file gambar apel di sebelah kiri (apple.jpg) dan file gambar apel di sebelah kanan (apple2.jpg), bukan? Tapi, kalau diperhatikan dengan seksama, bahkan dari ukuran file-nya saja sudah berbeda. File gambar apel di sebelah kiri berukuran 2.4 MB, sementara file gambar apel di sebelah kanan berukuran 2.6 MB. Artinya, file gambar apel di sebelah kanan (apple2.jpg) adalah gambar yang sudah disisipi file “secrets.txt” tadi, sehingga ukuran file-nya jadi lebih besar.

Pemanfaatan Steganography dalam Cyber Security

Stego sebagai teknik dapat digunakan oleh pakar siber untuk menyembunyikan pesan atau informasi rahasia. Sebelumnya, kita sudah melihat, stego sudah digunakan sejak zaman Yunani Kuno untuk mengirim pesan. Di zaman modern, ketika Perang Dunia 1, Kedutaan Jerman di Amerika (Washington D.C.) mengirimkan pesan ke kantor pusat di Berlin via Telegram (bukan telegram aplikasi seperti sekarang tentu saja). Pesan yang dikirim adalah seperti ini5: ss4

Membaca huruf pertama dari setiap kata pada pesan pertama atau huruf kedua dari setiap kata pada pesan kedua akan menghasilkan informasi tersembunyi berikut ini:

Pershing Sails From N.Y. June 1

Namun, stego juga dapat disalahgunakan oleh para hacker untuk menyerang target serangannya. Misalnya, pada tahun 2022, sebuah perusahaan keamanan siber Proofpoint merilis laporan mengenai aktivitas mencurigakan (malicious activity) yang membahayakan Perancis. Penyerang menggunakan teknis stego untuk menyembunyikan malicious script pada sebuah gambar di dalam dokumen MS. Word yang menyamar sebagai informasi yang terkait dengan aturan GDPR . Padahal, script tersebut ternyata men-trigger atau memicu pengunduhan backdoor yang langsung menginstall sendiri ke perangkat korban6. ss5

Jenis - jenis Steganography

Berikut adalah 5 jenis stego yang umum dijumpai di era digial saat ini. Sebab, sebetulnya pesan dapat disembunyikan dengan berbagai cara dan kita hanya dibatasi oleh imajinasi dan teknologi yang ada saat ini.7:

Image Steganography

Image stego berarti menyisipkan pesan rahasia ke dalam file gambar. Teknik yang populer digunakan adalah LSB (Least Significant Bit) seperti yang sudah dijelaskan sebelumnya. Jadi, secara teknis, kita hanya perlu mengganti bit-bit yang paling tidak signifikan dalam sebuah file gmabar untuk diganti dengan bit informasi yang ingin kita sisipkan8. ss6

Beberapa tools yang dapat kita gunakan untuk melakukan image stego adalah sebagai berikut:

  1. OpenStego: https://www.openstego.com/
  2. QuickStego: https://download.cnet.com/quickstego/3000-2092_4-75593140.html
  3. Steghide: https://steghide.sourceforge.net/
  4. Zsteg: https://github.com/zed-0xff/zsteg

Audio Steganography

Audio stego berarti menyisipkan pesan rahasia ke dalam file audio. Prinsip teknisnya sama dengan image stego, yaitu menggunakan metode LSB dengan mengganti bit paling tidak signifikan dalam audio file untuk diganti dengan bit pesan atau informasi rahasia yang ingin disisipkan. Namun, jika ditelaah lebih dalam, sebetulnya ada beberapa teknik audio stego yang dapat dilakukan9. ss7

Beberapa tools yang dapat kita gunakan untuk melakukan audio stego adalah sebagai berikut:

  1. DeepSound: https://github.com/Jpinsoft/DeepSound
  2. https://github.com/fabienpe/MP3Stego
  3. SilentEye: https://sourceforge.net/projects/silenteye/
  4. OpenPuff: https://embeddedsw.net/OpenPuff_download.html
  5. Coagula: https://www.abc.se/~re/Coagula/Coagula.html
  6. Invisible Ink: https://sourceforge.net/projects/diit/

Video Steganography

Video stego berarti menyisipkan pesan rahasia ke dalam file video. Prinsipnya tetap sama seperti image stego, namun video stego memungkinkan kita untuk menyimpan lebih banyak data ke dalam file video. Karena, setiap frame adalah sebuah gambar sehingga kita bisa menyisipkan banyak data ke dalam file video tersebut10. ss8

Tools yang dapat digunakan untuk video stego adalah sebagai berikut:

  1. Steganosaurus: https://steganosaur.us/
  2. StegoStick: https://sourceforge.net/projects/stegostick/

Text Steganography

Teks stego adalah stego paling tua yang pernah ada. Salah satu contoh penerapan teks stego adalah dengan metode substitusi huruf. Pesan dapat disembunyikan di dalam teks melalui ukuran huruf, spasi, atau karakteristik lain yang sulit dilihat sehingga hanya orang yang tahu yang dapat membacanya11. ss9

Steganography in (Hacker) Movie

Berikut adalah secuplik potongan video dari serial hacker terbaik sepanjang masa, yaitu Mr. Robot yang sedang mendemonstrasikan Elliot mempraktikkan stego:

Demonstrasi

Sekarang, saya akan mendemonstrasikan atau mempraktikkan proses stego menggunakan beberapa tools atau software yang beberapa diantaranya bersifat open source dan bahkan tersedia di repo Kali Linux. Beberapa tools yang saya gunakan dalam demo ini adalah sebagai berikut:

NoToolsDistribusiInstalasi
1SteghideDebiansudo apt install steghide
Archsudo pacman -S steghide
OpenSUSEsudo zypper in steghide
Fedorasudo dnf install steghide
2ExiftoolDebiansudo apt install exiftool
Archsudo pacman -S exiftool
OpenSUSEsudo zypper in exiftool
Fedorasudo dnf install exiftool
3ZstegAllgem install zsteg
4StegoveritasAllpip install stegoveritas
5Sonic VisualiserAllhttps://www.sonicvisualiser.org/download.html

Keterangan

[x] Zsteg diinstall via ruby

[x] Stegoveritas diinstall via python

Untuk demonstasi ini, saya mengunakan 3 file dari room CC: Steganography milik Tryhackme . Ketiga file tersebut bisa kalian download di sini:

File1File2File3
exam1.jpegexam2.wavqrcode.png

Soal

Tugas kita sederhana, kita hanya perlu mencari key yang tersimpan dalam masing-masing file tersebut.

  1. Key File1: …?
  2. Key File2: …?
  3. Key File3: …?

Jawab

1. Key File1: …?

Kita pastikan dulu jenis dan hash value dari filenya:

md5sum exam1.jpeg
ll exam1.jpeg
file exam1.jpeg

ss10

Sebuah file JPEG biasa, kalau kita buka dengan image viewer:

ristretto exam1.jpeg

ss11

Hanya sebuah gambar pohon dan pemandangan langit berukuran 213xx160 px.

Sekarang, kita akan mencari key yang disembunyikan pada file exam1.jpeg ini. Berhubung file-nya adalah file gambar (JPEG), jadi saya berasumsi kita bisa mencari key tersebut dengan steghide:

steghide extract -sf exam1.jpeg

ss12

Ternyata minta parafrase. Kalau dikosongkan, kita tidak akan mendapatkan file key yang dimaksud tadi. Jadi, sebelum bisa mendapatkan key-nya, kita harus tau terlebih dahulu parafrase untuk extract file berisi key tersebut. Di sini, saya akan menggunakan exiftool:

exiftool exam1.jpeg

ss13

Berdasarkan screenshot di atas, kita bisa lihat, exiftool memberikan kita info penting tentang parafrasenya. Pada bagian “Document Name”, di sana tertulis password=admin. Artinya, kita bisa menebak, “admin” adalah parafrase untuk mendapatkan key tadi. Kita coba:

 steghide extract -sf exam1.jpeg
 admin

ss14

Berhasil!!

Berarti Key File1: superkeykey

Catatan:

Dengan steghide, selain kita dapat mengekstrak file teks dari sebuah gambar (JPG/JPEG), kita juga bisa menyisipkan file teks ke sebuah gambar, seperti dua buah gambar apel yang di awal artikel ini saya tampilkan, itu saya membuatkan dengan steghide. Perintahnya juga sederhana dan dapat ditemukan di dokumentasi help-nya.

steghide embed -cf cvr.jpg -ef emb.txt

2. Key File2: …?

Seperti soal sebelumnya, kita pastikan dulu hash value dan jenis filenya:

md5sum exam1.wav
ll exam2.wav
file exam1.wav

ss15

Sebuah file WAVE audio. Kalau kita buka filenya dengan mpv misalnya:

mpv exam2.wav

ss16

Karena ini file audio, kita bisa gunakan Sonic Visualiser untuk mencari key-nya. ss17

Tidak terlihat ada apa-apa bukan? Karena biasanya informasi rahasianya disimpan di spektogram. Jadi, kita buka spektogramnya di Layer -> Add Spectogram. ss18

Terlihat informasi rahasia yang disembunyikan adalah sebuah url berikut: https://imgur.com/KTrtNI5 . Link tersebut mengarahkan kita ke suatu file gambar pensil yang harus kita unduh, KTrtNI5.png, sebagai berikut: ss19

Cek hash dan jenis filenya:

md5sum exam1.wav
ll exam2.wav
file exam1.wav

ss20

Karena file-nya adalah PNG, saya akan gunakan zsteg untuk mendapatkan key-nya (karena kita masih belum dapat dari tadi…):

zsteg KTrtNI5.png

ss21

Berhasil! Kita mendapatkan key-nya!!!

Berarti Key File2: fatality

3. Key File3: …?

Seperti biasa, kita identifikasi hash dan jenis filenya terlebih dahulu:

md5sum qrcode.png
ll qrcode.png
file qrcode.png

ss22

Kalau dibuka:

ristretto qrcode.png

ss23

… adalah sebuah QR Code biasa. Tapi, kita tidak bisa men-scan QR Code tersebut karena warnanya yang “tidak bagus”. Jadi, kita perlu mencari versi warna yang paling tepat dari QR Code ini supaya bisa di-scan. Saya akan gunakan stegoveritas:

stegoveritas qrcode.png

gif1

Setelah prosesnya selesai, kita mendapat satu folder / direktori baru, “results”. ss24

Di dalamnya, terdapat banyak file QR Code dengan warna baru hasil dari ekstraksi oleh stegoveritas tadi… ss25

Kita hanya perlu mencari file dengan gambar QR Code yang paling jelas, yaitu warna hitam putih dan tentu saja bisa di-scan.

Setelah mencoba satu-satu, saya akhirnya mendapatkan saya file QR Code original, yaitu file dengan nama qrcode.png_Blue_2.png: ss26

Scan, atau kalau tidak bisa scan, kita bisa menggunakan bantuan website Web QR : ss27

EAASYY!!

Berarti Key File3: killshot

Okey, sekian dulu pembahasan tentang steganography kali ini. Sampai ketemu di artikel saya yang lain ya!!

Byee~