2016年8月30日 星期二

DIVA Android - 12.Hardcoding Issues – Part 2

相關文章:

DIVA Android - 1.Insecure Logging
DIVA Android - 2.Hardcoding Issues – Part 1
DIVA Android - 3.Insecure Data Storage – Part 1
DIVA Android - 4.Insecure Data Storage – Part 2
DIVA Android - 5.Insecure Data Storage – Part 3
DIVA Android - 6.Insecure Data Storage – Part 4
DIVA Android - 7.Input Validation Issues – Part 1
DIVA Android - 8.Input Validation Issues – Part 2
DIVA Android - 9.Access Control Issues – Part 1
DIVA Android - 10.Access Control Issues – Part 2
DIVA Android - 11.Access Control Issues – Part 3
DIVA Android - 12.Hardcoding Issues – Part 2
DIVA Android - 13.Input Validation Issues – Part 3

「12.Hardcoding Issues – Part 2」對應到的 Activity 是 Hardcode2Activity,看一下 code 長這樣:



先追 DivaJni:



前面是會去 load divajni 這個 library,再來下面可看到它宣告變數時使用了 native。native 的作用大致上就是 java 可以藉由 c 去傳遞、處理資料,而透過的這個機制叫 JNI。這邊我們不用知道太複雜,先知道在使用這機制之前,必須先在 src 資料夾內建立 jni 的資料夾:



再來看 Android.mk,我們要找出 LOCAL_SRC_FILES 對應的檔案,這是指要被 compile 的 c/c++ source code:



接著看 divajni.c:



便可發現 key 為「olsdfgad;lh」。

弱點在於一般使用 JNI 時與 native 對應的 JNI function 很容易遭人反追到敏感資訊,如上面可看到jakhar_aseem_diva_DivaJni_access;其次是未加密 so、混淆 so 的 JNI function,只要逆向一下 so 檔便能查到被寫死的敏感資訊:



防範方法:

(1)加密 so 檔。

(2)混淆 JNI function。

沒有留言:

張貼留言