Pengujian keamanan aplikasi mobile - Zaki Akhmad

2,522
-1

Published on

Published in: Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,522
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
170
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Pengujian keamanan aplikasi mobile - Zaki Akhmad

  1. 1. Pengujian Keamanan Aplikasi Mobile Studi Kasus: Android Zaki Akhmad | za at indocisc.co.id | 0xFD57BE80Abstrak 2 TeoriPada paper ini akan dijelaskan metodologi Berikut ini adalah dasar teori pengujian aplikasipengujian keamanan aplikasi Android yang mobile. Pengujian diklasifikasikan menjadi duadisertai dengan contoh implementasinya. yaitu dinamis dan statis. Pengujian dinamisPengujian aplikasi secara teori terbagi menjadi dilakukan dengan menjalankan aplikasi, untukdua, yaitu dinamis dan statis. Pengujian dinamis selanjutnya dilakukan analisis. Pengujian statisadalah pengujian yang dilakukan saat aplikasi dilakukan tanpa menjalankan aplikasi, analisisdijalankan. Kebalikannya, pengujian statis adalah dilakukan dengan melihat kode sumber (sourcepengujian yang dilakukan tanpa menjalankan code) aplikasi.aplikasi. Contoh implementasi aplikasi yang diuji Berikut ini adalah garis besar sistematikaadalah aplikasi Wordpress untuk Android pengujian aplikasi mobile:(sebagai contoh aplikasi open source) danaplikasi Twitter untuk Android (sebagai contoh 1. Dinamisaplikasi close source). Metodologi yang 1. Analisis network trafficdijelaskan ini bersifat agnostik, sehingga bisadiimplementasikan pada beragam platform 2. Analisis remote servicesaplikasi mobile lainnya. (HTTP/SOAP/dll) 3. Debug aplikasi 2. Statis1 Pengantar 1. Dapatkan aplikasiAplikasi mobile saat ini semakin banyak 1. Ekstrak aplikasi dari devicedikembangkan seiring semakin terjangkaunya 2. Dapatkan berkas apk dariharga ponsel cerdas yang berarti semakin banyak pengembangjuga penggunanya. Aplikasi mobile yang ada saatini sangat beragam. Mulai dari aplikasi game 2. Lakukan reverse engineeringsederhana yang tidak membutuhkan koneksi 3. Lakukan source code reviewjaringan, aplikasi jejaring sosial hingga aplikasimobile banking yang mampu melakukan transaksi 1. Menggunakan static analysis toolkeuangan. 2. ManualPengguna akhir pada umumnya tidak memiliki 4. Lakukan disassemblykesadaran yang tinggi akan keamanan aplikasi.Misalnya, terdapat aplikasi game yang diunduh 5. Lakukan patchbisa jadi mengandung malware yang mengaksesdata di ponsel. Atau terdapat aplikasi yang 3 Konfigurasi Labmenyimpan kredensial di dalam ponsel dalamkeadaan tak terenkripsi. Contoh lainnya, aplikasi Pada bagian ini akan dijelaskan konfigurasi labyang tidak menggunakan jalur terenkripsi saat yang digunakan dalam melakukan pengujian. Labmelakukan otentikasi atau mengirim informasi pengujian dapat dilakukan langsung darisensitif. perangkat mobile atau bisa juga menggunakan emulator. Berikut detail kedua konfigurasi lab tersebut: 1/10
  2. 2. 3.1 Langsung dari Device Usai SDK Android siap, dapat dipilih versi Android mana yang emulatornya ingin disiapkan.Berikut ini adalah daftar kebutuhan untuk Silakan pilih sesuai kebutuhan. Emulator padakonfigurasi lab pengujian langsung dari device: Android disebut dengan Android Virtual Device • Mobile device (MD) (AVD). Versi terakhir emulator Android terbaru saat paper ini ditulis adalah Android 4.03 dengan • Kabel data API Level 15. • Access point (AP) • Hub • Kabel LAN • Komputer (PC)Untuk akses langsung ke device dari komputerdigunakan kabel data. PC --- kabel data --- MD Gambar 1: Skema Akses LangsungAccess point, Hub dan kabel LAN diperlukanuntuk pengujian pada sisi keamanan jaringan.Berikut ini adalah diagram skema topologipengujian keamanan jaringan aplikasi. Internet --- Hub --- AP – MD | Komputer Gambar 2: Skema Jaringan Gambar 3: Android Virtual Device3.2 Menggunakan Emulator 4 Pengujian DinamisApabila tidak memiliki mobile device bukan 4.1 Aplikasi Wordpressberarti tidak bisa melakukan pengujian. Pengujianaplikasi mobile dapat memanfaatkan emulator Wordpress merupakan aplikasi F/OSS Contentyang ada. Management System (CMS) blog. Selain dikembangkan aplikasi blog engine Wordpress ituPlatform mobile pada paper ini dibatasi pada sendiri, dikembangkan juga aplikasi WordpressAndroid. Pada paper ini tidak akan dijelaskan untuk Android. Aplikasi Wordpress untukbagaimana menyiapkan: instalasi & konfiguras Android ini merupakan aplikasi klien yangSDK Android. Untuk petunjuk bagaimana digunakan untuk mengakses blog Wordpress.menyiapkan SDK Android dapat dilihat padasitus pengembang Android. Pada lab pengujian ini, diinstall aplikasi Wordpress pada server, dan aplikasi Wordpress untuk Android pada ponsel Android. Skema 2/10
  3. 3. jaringan mengikuti Gambar 3 hanya saja tidakperlu tersambung ke Internet karena aplikasi Berdasarkan Gambar 4, dapat terlihat bahwa IPWordpress terinstall pada server sendiri (self mobile device yang digunakan adalahhosted Wordpress blog). Alasan menggunakan 192.168.2.170. Hal ini penting untuk diketahuiself hosted Wordpress blog adalah agar analisis dalam melakukan analisis lebih dalam dandapat dilakukan lebih mendalam dan detail menyusun formula filter packet pada Wiresharksekaligus lebih sederhana karena tidak yang digunakan sebagai tool untuk menganalisismemerlukan akses Internet. packet capture.Berikut detail versi aplikasi yang digunakan: • Wordpress: 3.3.1 Lalu kotak merah pada Gambar 4 yang kedua menunjukkan request POST yang dilakukan oleh • Wordpress untuk Android: 2.0.7 aplikasi Wordpress untuk Android. Request ini menarik untuk ditelusuri lebih lanjut. Untuk itu4.1.1 Analisis Network Traffic dilakukan follow TCP stream pada paket ini.Pertama akan dilakukan analisis network traffic.Tujuan dari aktivitas ini adalah mencari informasisensitif yang tidak dienkripsi.Aplikasi Wordpress untuk Android akandigunakan untuk mengakses self-hostedWordpress blog dan melakukan aktivitas sebagaiberikut: • Akses sebagai publik (tanpa otentikasi) • Melakukan otentikasi, masuk sebagai authorized user. • Menulis tulisan baru Gambar 5: String Username & Password • Akses menu konfigurasi Wordpress • Mengubah password Dari hasil analisis paket terlihat saat user akan menulis tulisan baru, username dan passwordSemua aktivitas ini akan dianalisis dari hasil dikirimkan dalam bentuk string tanpa melaluipacket capture-nya. Berikut ini merupakan hasil kanal terenkripsi.analisis berkas pcapnya. Hasil penelusuran lebih lanjut menunjukkan bahwa username dan password selalu disertakan dalam setiap request aplikasi saat akan mengakses server. Gambar 4: Berkas Packet Capture Wordpress untuk Android Gambar 6: Ubah Password 3/10
  4. 4. 4.1.2 Debug AplikasiSaat password user Wordpress diubah bukan Untuk debug aplikasi, lab yang akan digunakanmelalui aplikasi Android, maka aplikasi Android adalah dengan menggunakan emulator.tidak lagi bisa mengakses blog. Hal ini dilakukanuntuk mengetahui bagaimana aplikasi Jalankan emulator, lalu gunakan Android Debugmenyimpan password. Bridge (adb). $ adb devices List of devices attached emulator-5554 device Jika muncul device emulator, maka emulator sukses terdeteksi. Aktivitas selanjutnya akan memanfaatkan utiliti dari adb $ adb shell # Tanda # menunjukkan akses root. Selanjutnya cari informasi sensitif yang dapat diakses. Gambar 7: Login Usai Password Diganti Informasi sensitif dapat dicari di database. Android menggunakan sqlite3 sebagai database.Ternyata aplikasi menyimpan password pada Pertama, perlu dicari di direktori mana databasesemacam berkas konfigurasi. Jadi, perlu aplikasi disimpan.dilakukan konfigurasi ulang pada aplikasi denganmengubah nilai password untuk bisa kembali Hasil penelusuran menghasilkan databaselogin. Wordpress untuk Android disimpan di direktori data/data/org.wordpress.android/dDari keseluruhan pengujian, terlihat bahwa desain atabasesaplikasi wordpress untuk Android tidak aman.Username dan password dikirim dalam bentuk Masuk ke direktori tersebut dan lihat daftarstring dalam setiap request melalui kanal tak berkas yang ada di dalamnyaterenkripsi.Cara sederhana meningkatkan keamanan aplikasi # lsWordpress untuk Android dapat dilakukan denganmenggunakan kanal terenkripsi.Pengguna webviewCache.dbAndroid hanya bisa mengakses self-hosted webview.dbWordpress blog menggunakan protokol HTTPS.Selanjutnya perlu dipikirkan desain aplikasi yang wordpresslebih baik yang tidak harus selalu mengirimkanusername dan password dalam setiap requestnya. Gunakan utility sqlite3 untuk mengaksesPersisnya pada bagian mekanisme otentikasi database. Berdasarkan hasil penelusuran, ternyataaplikasi. informasi blog tersimpan di database wordpress 4/10
  5. 5. • Jalankan kali pertama# sqlite3 wordpress • Log inSQLite version 3.6.22 • TwitEnter ".help" for instructions Berikut ini adalah hasil analisis network trafficEnter SQL statements terminated aplikasi Twitter untuk Android.with a ";" Analisis pertama kali adalah memfilter paketsqlite> capture dengan filter “http contains twitter”. Dari paket pertama hasil fiter tersebut, terlihat paket capture saat prosesLalu jalankan perintah dump. instalasi dari Google Play. Dari hasil penelusuran tidak ditemukan informasi sensitif pada paket ini. Gambar 8: Hasil Perintah Dump Gambar 9: Akses Twitter di Google Play/MarketTerlihat bahwa aplikasi Wordpress untuk Android Selanjutnya, penelusuran dilanjutkan pada paketmenyimpan username & password dalam berikutnya masih dengan filter yang sama. Hasildatabase dengan keadaan plain text. Hal ini TCP Stream menunjukkan response yangmenunjukkan aplikasi Wordpress untuk Android mengandung kata MANIFEST. Untuktidak aman. menemukan paket lain yang mengandung kata MANIFEST, dapat dilakukan dengan mengubah 4.2 Aplikasi Twitter filter menjadi “http contains MANIFEST”. Perlu diingat filter ini merupakan case sensitive.Berdasarkan informasi dari situs pengembangtwitter, twitter dikembangkan denganmemanfaatkan perangkat lunak open source.Begitupun dengan aplikasi Twitter untuk Android.Namun biarpun menggunakan perangkat lunakopen source, bukan berarti kode sumber aplikasiTwitter untuk Android dibuka.4.2.1 Analisis Network TrafficAnalisis network traffic aplikasi Twitter untukAndroid menggunakan skema jaringan Gambar 2.Aktivitas yang dilakukan adalah sebagai berikut: Gambar 10: Response MANIFEST. • Install aplikasi Twitter untuk Android dari Google Play 5/10
  6. 6. Analisis dari paket ini adalah paket ini merupakanfollow. Percobaan untuk melakukan re-assembleresponse dari request paket aplikasi Twitter untuk terhadap berkas gambar, masih gagal dilakukan.Android. Isi MANIFEST tidak bisa terbacakarena tidak berada dalam format clear text. Usaha mencari string sensitif (username &Skenario selanjutnya adalah melakukan password) tidak ditemukan karena jalurreassemble paket untuk bisa mendapatkan komunikasi yang digunakan terenkripsi begitupunberkas .apk dari aplikasi. isi dari paket tersebut. Bahkan isi twit-pun tidak bisa didapatkan. Gambar 11: Reassemble PaketDari hasil reassemble, didapatkan berkas apkberukuran 2.3 MB Gambar 13: Penggunaan Protokol TLSv1$ ls -l2364191 2012-04-23 17:52 4.2.2 Debug Aplikasitwitter.apk Debug aplikasi Twitter untuk Android menggunakan konfigurasi lab dengan emulator. Karena pada emulator tidak terdapat akses keAnalisis berkas apk lebih lanjut akan dibahas Google Play/Market maka aplikasi twitter akanpada bagian Analisis Statis. Sekarang kembali langsung diinstall dari berkas apk tanpa akses kemelakukan analisis network traffic. Google Play/Market. Instalasi dilakukan menggunakan tool apk $ adb -s emulator-5554 install twitter.apk 1435 KB/s (2364191 bytes in 1.608s) pkg: /data/local/tmp/twitter.apk Success Gambar 12: Twitter Get ImageHasil analisis berikutnya, didapatkan requestimage avatar dari pengguna twitter yang di- 6/10
  7. 7. Gambar 15: Dump Global.db Twitter Dari hasil dump database global.db tidak didapatkan informasi sensitif. Yang bisa dibaca hanya username namun tidak tersedia informasi password. Gambar 14: Twitter pada Emulator Selanjutnya dicoba dump database lainnya.Selanjutnya, masih menggunakan tool adb, akandicoba mencari informasi sensitif yang tersimpandi dalam device (emulator). Masuk ke direktoridatabase twitter yang berada didata/data/com.twitter.android/databasesList berkas yang ada di direktori tersebut:# ls Gambar 16: Dump 15016157.db Twitter15016157.db0.db Hasil dump database lainnya juga tidakglobal.db menemukan username & password dalam keadaan plaintext. Yang dapat ditemukan hanya direct message di twitter pada databaseAkses database menggunakan sqlite3. Pertama 15016157.dbakan didump database global 5 Analisis Statis Analisis statis pada prinsipnya adalah melakukan code review. Seorang code reviewer harus mengetahui prinsip dan implementasi dari secure coding. Selain itu, seorang code reviewer juga harus tahu bagaimana menerapkan konfigurasi dengan least privilege. 7/10
  8. 8. 5.1 Aplikasi Wordpress • KameraBerdasarkan hasil analisis dinamis, dicoba dicari • Menulis pada eksternal storagebagian dari source code yang menangani • Lokasiotentikasi, dan bagaimana mekanismemenyimpan password. Karena aplikasi Wordpress Privilege ini memang dibutuhkan oleh aplikasi.untuk Android adalah aplikasi dengan kode Misalnya: Internet untuk mengakses arsip tulisan,sumber terbuka, jadi tidak diperlukan melakukan menulis tulisan baru, membaca komentar;reverse engineering. Reverse engineering Kamera untuk mengambil gambar; Menulis padasederhananya adalah kegiatan membalikkan dari eksternal storage untuk menyimpan file hasilbinary aplikasi ke source code. kamera; dan Lokasi untuk fitur posting with geo- location. Jadi aplikasi Wordpress untuk AndroidBerikut ini adalah hasil penelusuran kode sumber sudah menerapkan konsep least privilege.aplikasi Wordpress untuk Android. Pertamalakukan pencarian string dengan kata kunci“password”. Tool yang digunakan adalah ack- 5.2 Aplikasi Twittergrep yang mampu mencari string dalam satu Karena aplikasi Twitter untuk Android tidak opendirektori. source maka pertama-tama perlu dilakukan reverse engineering. Reverse engineering aplikasi Android dapat dilakukan dengan mengacu pada artikel yang ditulis oleh Jack Maninno. Ekstrak aplikasi twitter.apk $ unzip twitter.apk Didapatkan berkas sebagai berikut: $ ls AndroidManifest.xml assets classes.dex META-INF org resGambar 17: Kata Password dalam Kode Sumber resources.arscDari hasil pencarian menggunakan ack-grep dapatterlihat, password yang digunakan adalahhttppassword. Dengan kode sumber aplikasi inimaka dapat terlihat bahwa memang aplikasimengirimkan password dalam keadaan plain-textmelalui protokol http.Lalu periksa berkas AndroidManifest.xml BerkasAndroidManifest.xml adalah berkas yang memuatinformasi mendasar aplikasi. Perhatikanpermission yang dimiliki aplikasi. Apakahpermission tersebut benar-benar dibutuhkanaplikasi (ingat kembali konsep keamanan: least Gambar 18: Informasi Twiter dari Legal.htmlprivilege).Berdasarkan penelusuran, permission yang Dari berkas legal.html yang terdapat dalamdimiliki oleh aplikasi Wordpress untuk Android direktori assets diketahui aplikasi Twitter untukadalah: Android dikembangkan menggunakan komponen berikut: • Internet 8/10
  9. 9. • Bouncy Castle Crypto AndroidManifest.xml dalam format text. Lakukan analisis terhadap berkas ini. • Google Data Java Client • Jackson Java JSON-processor CoreSelanjutnya cari informasi lebih lanjut soalkomponen-komponen ini. Apa kegunaanya,bagaimana implementasinya.Berdasarkan informasi dari situs bouncy castle,bouncy castle merupakan API kriptografi. Dalamimplementasinya di Android, yang digunakanadalah yang berbahasa JAVA. Jadi, aplikasiTwitter untuk Android menggunakan bouncycastle sebagai API kriptografi. Gambar 19: Berkas AndroidManifest.xml TwitterGoogle Data Java Client berguna untuk mengirimquery Google Data API (GData) dan melakukaninterpretasi responnya. Belum diketahui apa Terlihat permission yang dimiliki aplikasi.kegunaan library ini pada aplikasi Twitter untuk Berbeda dengan aplikasi Wordpress untukAndroid. Android, aplikasi Twitter untuk Android tidak memiliki privilege untuk akses hardware kamera.Jackson Java JSON-processor Core merupakan Jadi pengguna tidak bisa mengakses kamerahigh-performance JSON processor. Aplikasi langsung dari aplikasi Twitter untuk Android.Twitter untuk Android menggunakan library iniuntuk memproses JSON. 6 RingkasanSelanjutnya, lakukan analisis terhadap berkasAndroidManifest.xml. Berkas Berikut ini adalah beberapa ringkasan yang bisaAndroidManifes.xml berada dalam format biner, dibuat:jadi informasinya tidak bisa terbaca. Untuk itu 1. Pengujian aplikasi mobile dilakukan padaperlu digunakan tool apk-tool sebagai tool untuk level aplikasi, bukan pada level sistemmelakukan reverse engineering berkas apk. operasi perangkat mobile$ ./apktool d twitter.apk twitter 2. Pengujian aplikasi mobile dapat dilakukanI: Baksmaling... langsung pada device atau dapat jugaI: Loading resource table... menggunakan emulatorI: Loaded. 3. Pengujian aplikasi mobile dibedakan menjadi 2: pengujian dinamis, pengujianI: Loading resource table from yang dilakukan saat aplikasi dijalankan;file: dan pengujian statis, pengujian tanpa/home/za/apktool/framework/1.apk menjalankan aplikasi.I: Loaded. 4. Pengujian dinamis berusaha mencariI: Decoding file-resources... informasi sensitif dalam keadaan tidak terenkripsi: baik saat melalui transportI: Decoding values*/* XMLs... layer maupun saat disimpan dalamI: Done. database di perangkat.I: Copying assets and libs... 5. Pengujian statis dasarnya adalah melakukan code review untuk memahami cara kerja aplikasi. Untuk aplikasi yangSekarang sudah didapatkan berkas tidak bersifat opensource, perlu dilakukan 9/10
  10. 10. reverse engineering. penelitian ini lebih lanjut: 1. Analisis dinamis: gunakan proxy untuk7 Kesimpulan & Saran meng-intercept traffic antara aplikasi dengan server sehingga dapat melakukanTelah dijabarkan metodologi pengujian aplikasi analisis lebih dalam.mobile dengan studi kasus aplikasi Android:Wordpress untuk Android dan Twitter untuk 2. Analisis statis: mempelajari bagaimanaAndroid. mengembangkan aplikasi Android yang aman sehingga dapat melakukan codeBerikut ini adalah kesimpulan dari penelitian ini: review lebih baik. 1. Aplikasi Wordpress untuk Android selalu mengirimkan userid dan password dalam setiap request-nya dalam keadaan tidak 8 Referensi terenkripsi. APK-Tool, http://code.google.com/p/android- apktool/ 2. Aplikasi Wordpress untuk Android menyimpan userid dan password pada Jack Maninno, Reversing Android Apps 101, database dalam keadaan tidak terenkripsi. http://jack- mannino.blogspot.com/2010/09/reversing- 3. Aplikasi Twitter untuk Android android-apps-101.html menggunakan transport layer yang terenkripsi saat mengakses server. Userid, Jeff Six, Application Security for the Android password, dan twit dikirim dalam keadaan Platform, OReilly terenkripsi. Marko Gargenta, Learning Android, OReilly 4. Aplikasi Twitter untuk Android OWASP Mobile Security Project, menyimpan password pada database https://www.owasp.org/index.php/OWASP_Mobi dalam keadaan terenkripsi. Pesan le_Security_Project langsung (direct message) masih dapat dibaca karena tersimpan dalam format Situs Pengembang Android, clear text. http://developer.android.comBerikut ini adalah saran untuk mengembangkan Situs Pengembang Twitter, https://dev.twitter.com 10/10

×