Instalasi Binwalk v3.1.0

Riri Maiyuliani
4 min readNov 2, 2024

--

Assalamualaikum wr wb. Pada kesempatan kali ini saya akan menjelaskan secara singkat cara instalasi binwalk v3.1.0. Binwalk adalah aplikasi yang dapat digunakan untuk melakukan rekayasa terbalik pada firmware ataupun file biner lainnya. Tujuannya adalah untuk mengetahui dan mengekstrak isi dari file tersebut untuk dianalisis. Di sini saya melakukan instalasi binwalk v3.1.0 pada Fedora linux. Binwalk v3.1.0 ini ditulis ulang dari yang dahulunya menggunakan python, sekarang menggunakan rust untuk peningkatan performa. Proses instalasinya di Fedora kurang lebih seperti ini:

  • Install dahulu rust dan cargo:
$ sudo dnf -y install rust cargo
  • Install pustaka yang dibutuhkan:
$ sudo dnf -y install fontconfig-devel xz-devel
  • Download arsip binwalk v3.1.0 lalu ekstrak:
$ wget https://github.com/ReFirmLabs/binwalk/archive/refs/tags/v3.1.0.tar.gz
$ tar xvf binwalk-3.1.0.tar.gz
$ cd binwalk-3.1.0
  • Build binwalk v3.1.0 menggunakan cargo:
$ cargo build --release
  • Hasilnya akan berada pada sub direktori target/release/binwalk dan bisa dipindahkan ke direktori yang umum digunakan misalnya /usr/local/bin:
$ sudo cp target/release/binwalk /usr/local/bin
  • Coba jalankan binwalk untuk melihat apakah versinya sudah benar:
$ binwalk --version
binwalk 3.1.0

$ binwalk --help
Analyzes data for embedded file types

Usage: binwalk [OPTIONS] [FILE_NAME]

Arguments:
[FILE_NAME] Path to the file to analyze

Options:
-L, --list List supported signatures and extractors
-q, --quiet Supress output to stdout
-v, --verbose During recursive extraction display *all* results
-e, --extract Automatically extract known file types
-M, --matryoshka Recursively scan extracted files
-a, --search-all Search for all signatures at all offsets
-E, --entropy Plot the entropy of the specified file
-l, --log <LOG> Log JSON results to a file
-t, --threads <THREADS> Manually specify the number of threads to use
-x, --exclude <EXCLUDE>... Do no scan for these signatures
-y, --include <INCLUDE>... Only scan for these signatures
-C, --directory <DIRECTORY> Extract files/folders to a custom directory [default: extractions]
-h, --help Print help
-V, --version Print version

Setelah semua proses di atas selesai, maka binwalk v3.1.0 sudah bisa digunakan untuk melakukan analisis. Misalnya untuk contoh kali ini, saya akan melakukan analisis menggunakan binwalk v3.1.0 pada firmware Dahua. Pertama saya akan men-download dahulu firmwarenya:

$ wget https://files.dahua.support/Firmware/Switche/MAX18/DH_TS-WMR62XX-IXX-VenusC_Eng_Local_V1.001.0000008.18.R.240307.bin

Kemudian waktunya menjalankan binwalk untuk analisis firmware tadi:

$ binwalk DH_TS-WMR62XX-IXX-VenusC_Eng_Local_V1.001.0000008.18.R.240307.bin

/tmp/DH_TS-WMR62XX-IXX-VenusC_Eng_Local_V1.001.0000008.18.R.240307.bin
------------------------------------------------------------------------------------
DECIMAL HEXADECIMAL DESCRIPTION
------------------------------------------------------------------------------------
145017 0x23679 ZIP archive, file count: 6, total size: 22794400 bytes
------------------------------------------------------------------------------------

Analyzed 1 file for 85 file signatures (187 magic patterns) in 36.0 milliseconds

Lalu langsung saja kita ekstrak isi firmwarenya:

$ binwalk -e DH_TS-WMR62XX-IXX-VenusC_Eng_Local_V1.001.0000008.18.R.240307.bin

/tmp/extractions/DH_TS-WMR62XX-IXX-VenusC_Eng_Local_V1.001.0000008.18.R.240307.bin
---------------------------------------------------------------------------------------------------------
DECIMAL HEXADECIMAL DESCRIPTION
---------------------------------------------------------------------------------------------------------
145017 0x23679 ZIP archive, file count: 6, total
size: 22794400 bytes
---------------------------------------------------------------------------------------------------------
[+] Extraction of zip data at offset 0x23679 completed successfully
---------------------------------------------------------------------------------------------------------

Analyzed 1 file for 85 file signatures (187 magic patterns) in 132.0 milliseconds

Pindah ke sub direktori extractions, di sana ada 1 file dan 1 direktori:

$ cd extractions
$ ls
DH_TS-WMR62XX-IXX-VenusC_Eng_Local_V1.001.0000008.18.R.240307.bin
DH_TS-WMR62XX-IXX-VenusC_Eng_Local_V1.001.0000008.18.R.240307.bin.extracted

Pindah lagi ke sub direktori DH_TS-WMR62XX-IXX-VenusC_Eng_Local_V1.001.0000008.18.R.240307.bin.extracted:

$ cd DH_TS-WMR62XX-IXX-VenusC_Eng_Local_V1.001.0000008.18.R.240307.bin.extracted
$ ls
23679

Pindah lagi ke sub direktori 23679 dan lihat isinya apa saja:

$ cd 23679
$ ls -1
check.img
custom.squashfs.img
Install
sign.img
tclinux.bin.img

Coba lihat isi dari file Install:

$ cat Install
{
"Commands" : [ "burn custom.squashfs.img custom", "burn tclinux.bin.img update" ],
"Devices" : [
[ "DH-WR6222C-IDH", "1.00" ],
[ "TS-MAX18", "1.00" ]
],
"Vendor" : "Dahua",
"Version" : {
"SoftwareVersion" : "V1.001.0000008.18.R.240307"
}
}
//IPC_RestoreDefault

Ternyata ada 2 file yang akan di-burn ketika proses update, yaitu file custom.squashfs.img dan tclinux.bin.img. Periksa tipe kedua file tersebut:

$ file custom.squashfs.img
custom.squashfs.img: u-boot legacy uImage, custom, Linux/MIPS, Standalone Program (gzip), 124389 bytes, Thu Mar 7 04:04:21 2024, Load Address: 0X3280000, Entry Point: 0X3780000, Header CRC: 0X7AD50A34, Data CRC: 0XAADD7ECF

$ file tclinux.bin.img
tclinux.bin.img: u-boot legacy uImage, firmware, Linux/MIPS, Firmware Image (Not compressed), 22669752 bytes, Thu Mar 7 04:04:26 2024, Load Address: 0X080000, Entry Point: 0X1980000, Header CRC: 0X5C14A425, Data CRC: 0XA39E1D03

Coba ekstrak file custom.squashfs.img menggunakan binwalk lalu periksa file hasil ekstraknya:

$ binwalk -e custom.squashfs.img
$ mv extractions/custom.squashfs.img.extracted/0/custom.bin .
$ file custom.bin
custom.bin: Squashfs filesystem, little endian, version 4.0, lzma compressed, 122157 bytes, 12 inodes, blocksize: 131072 bytes, created: Thu Mar 7 04:04:21 2024

Ternyata hasilnya adalah file custom.bin yang formatnya adalah squashfs filesystem. Install dulu tools yang berkaitan dengan squashfs:

$ sudo dnf -y install squashfs-tools squashfs-tools-ng

Lalu ekstrak file custom.bin seperti ini:

$ unsquashfs custom.bin
Parallel unsquashfs: Using 4 processors
7 inodes (9 blocks) to write

[==========================================================================================|] 16/16 100%

created 7 files
created 5 directories
created 0 symlinks
created 0 devices
created 0 fifos
created 0 sockets
created 0 hardlinks

Ada 5 direktori dan 7 file yang berhasil diekstrak. Coba periksa apa saja filenya:

$ tree squashfs-root
squashfs-root
├── Strings
│ ├── English.txt
│ └── SimpChinese.txt
├── StringsOpenSourceNotice
│ └── openSource.txt
├── StringsPrivacyPolicy
│ ├── English.txt
│ └── SimpChinese.txt
└── StringsSoftwareLicense
├── English.txt
└── SimpChinese.txt

Ternyata isinya hanya file teks saja. Lanjut, ekstrak file tclinux.bin.img menggunakan binwalk:

$ binwalk -e tclinux.bin.img
$ mv extractions/tclinux.bin.img.extracted/0/firmware.bin .
$ file firmware.bin
firmware.bin: data

Ternyata filenya tidak dikenali. Coba cara lain dengan terlebih dahulu menginstall paket uboot-tools:

$ sudo dnf -y install uboot-tools

Setelah melakukan instalasi uboot-tools tersebut dan mencoba berbagai macam cara, ternyata saya gagal mengekstrak firmware tersebut. Dan setelah mencari tahu soal firmware tersebut dengan mencari printable string di dalamnya, saya menemukan petunjuk ini:

$ strings firmware.bin | tail -8
LCA~
SecrityImgMagic
V2.0
firmware
=u4u8
xLM6
?<P!my
b8~+/

Ada kata SecrityImgMagic yang setelah saya googling, hasilnya ternyata hanya ada beberapa website yang membahasnya. Salah satunya adalah forum ini yang menyebutkan bahwa firmware tersebut formatnya terenkripsi menggunakan kunci AES. Karena kondisinya cukup rumit, sedangkan tujuan saya dari awal sebenarnya hanya ingin mencoba binwalk v3.1.0, akhirnya saya putuskan untuk tidak melanjutkan keisengan saya. Sekian dulu artikel kali ini, sampai juga di lain kesempatan, Wassalam.

--

--

Riri Maiyuliani

Dinas Pendidikan dan Kebudayaan Kabupaten Lima Puluh Kota