Instalasi Binwalk v3.1.0
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
dancargo
:
$ 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.