IoT Hacking, CVE-2015-4080 Exploitation
openwrt
]
Juni 2015, saya sempat memodifikasi sebuah firmware smart socket bermerek kankun supaya kompatibel di router TL-mr3020. Dari segi spesifikasi smart socket dan router sendiri tidak jauh berbeda kecuali dalam penggunaan gpio led0 yang terkoneksi ke relay. Kompresi firmware sendiri tidak menunjukkan kejanggalan ataupun enkripsi apapun.
Beberapa minggu sebelumnya payatu labs mengeluarkan informasi kelemahan “harcoded AES 256 bit key used in Kankun IoT/Smart socket and its mobile App”. Informasi ini kemudian didokumentasikan sebagai CVE-2015-4080.
Dalam informasi yang dipublikasikannya, dinyatakan bahwa string kunci enkripsi untuk komunikasi antara smartsocket dengan applikasi tidak diobfucate. Sehingga dapat dengan mudah ditemukan didalam library applikasi android (/lib/armeabi/libNDK_03.so)
Kunci ini dirujuk oleh beberapa function diantaranya EncryptData
Begitu juga dengan dengan binary didalam firmware smart socket sendiri juga ditemukan key yang sama (fdsl;mewrjope456fds4fbvfnjwaugfo).
POC
Supaya bisa membuktikan cve yang ditulis oleh payatu, kita membutuhkan capture payload data UDP di port 27431 yang dikirim dan diterima dari device smartsocket di ip 192.168.10.253.
Untuk merekam komunikasi data ini anda bisa menggunakan tcpdump atau applikasi semacam tPacketCapture dan membuka file hasil yang disimpan dengan wireshark.
hasil penggunaan kcrypt.py saya mendapatkan payload data berhasil di decrypt.
[+] kankun crypt script
Decrypted str1: (lan_phone%mac%nopassword%2019-11-03-21:16:17%heartt?=??)
Decrypted str2: (lan_device%e8:94:f6:e3:50:18%nopassword%close%hack)
Decrypted str3: (lan_phone%e8:94:f6:e3:50:18%nopassword%open%request?=??)
Decrypted str4: (lan_device%e8:94:f6:e3:50:18%nopassword%confirm#86994%rack)
Decrypted str5: (lan_phone%e8:94:f6:e3:50:18%nopassword%confirm#86994%request???)
Decrypted str6: (lan_device%e8:94:f6:e3:50:18%nopassword%open%rack)
Decrypted str7: (lan_phone%mac%nopassword%2019-11-03-21:16:37%heart?=??)
Decrypted str8: (lan_phone%e8:94:f6:e3:50:18%nopassword%close%request?=??)
Decrypted str9: (lan_device%e8:94:f6:e3:50:18%nopassword%confirm#78477%rack)
Selain kcrypt.py juga ada script dari 0x00string yang memungkinkan kita mengirimkan perintah on off dari perangkat PC yang ikut terhubung dalam jaringan smartsocket. Berikut video singkatnya:
Solusi
- Kankun smartplug dalam posisi direct mode defaultnya menggunakan setting open wifi. Kita bisa saja merubah settingan ini dengan masuk lewat ssh kemudian menambahkan mode wpa2psk dan set custom password didalam file /etc/config/wireless.
config wifi-iface
option device 'radio0'
option network 'lan'
option mode 'ap'
option encryption 'psk2'
option ssid '0K_SP3_E****'
option key 'writesomepasshere'
- Pengembang firmware/mobileapp harus men-obfucated/strip semua string ketika mencompile native lib/binary untuk memperlambat proses reverse engineering.
ref: Kankun Smart Socket / Mobile App Hardcoded AES Key , Cracking the AES encryption hardcoded key of the KANKUN SMART PLUG , kankun smartplug network decryption