QARK-Tool untuk Otomasi Assessment Android Apps

Selain Drozer-tools untuk melakukan assessment atas satu aplikasi Android, maka terdapat aplikasi gratis lainnya yang termasuk dalam the best tools.

Menurut pengembangnya, aplikasi QARK memiliki tujuan sebagai berikut:

Quick Android Review Kit – This tool is designed to look for several security related Android application vulnerabilities, either in source code or packaged APKs. The tool is also capable of creating “Proof-of-Concept” deployable APKs and/or ADB commands, capable of exploiting many of the vulnerabilities it finds.

Jika anda berminat untuk belajar menggunakan QARK, maka terdapat beberapa sumber referensi yang layak untuk dicoba:

http://resources.infosecinstitute.com/qark-a-tool-for-automated-android-app-assessments/#gref

https://github.com/linkedin/qark

https://www.slideshare.net/ChandanKumarSonkar/quick-android-review-kit-qark

http://jensklingenberg.de/allgemein/android-penetration-testing-with-qark/

Apktool Front End: APK Studio

Pada umumnya, para security analyst menggunakan APKTool untuk melakukan reverse-engineering serta manipulasi atas aplikasi Android (apk).  Proses dekompilasi file apk menjadi Dalvik Bytecode, men-generate signing keys, lalu signing file apk yang telah dimodifikasi semuanya dapat dilakukan dengan menggunakan APKTool.

Selain APKTool, kita juga bisa menggunakan APK studio dengan source code khusus yang dikembangkan oleh Vaibhav Pandey.  Prinsipnya APK Studio menyederhanakan proses disassembling dari file APK dengan Smali syntax-aware editor yang terintegrasi, dan dengan opsi one-click untuk melakukan rekompilasi dan signing aplikasi yang telah dimodifikasi dan akhirnya meng-install file APK ke dalam perangkat Android dengan menggunakan ADB.  Dengan kata lain, APK Studio menggunakan APKTool untuk disassembly, bersama dengan ADB serta jarsigner untuk signing file APK yang telah dimodifikasi.

Untuk proses signing dengan APK Studio, analis tetap harus menghasilkan keystore dengan keytool executable yang ada dalam Java Development Kit (JDK).  Selanjutnya APK Studio akan sign file APK dengan keystore, tetapi tidak secara otomatis menghasilkan keystore untuk analis.

http://www.vaibhavpandey.com/apkstudio/

Drozer: Security Assessment Tools untuk Android

Di hari minggu yang cerah ini, sejak pagi tadi saya kembali bermain-main dengan Drozer yaitu framework yang dikembangkan oleh MWR labs untuk menguji keamanan dari satu aplikasi berbasis sistem operasi Android.  Hingga saat ini, Drozer termasuk tools terbaik yang banyak digunakan oleh para security analyst untuk menguji keamanan satu aplikasi.

Saat ini saya sedang menguji satu aplikasi Android berupa web form yang umumnya digunakan untuk kuesioner.  Dengan menggunakan Drozer, saya bisa memanipulasi Android Intent yang menunjukkan adanya kelemahan dalam aplikasi tersebut.

Jika rekan-rekan berminat mempelajari tools tersebut, setidaknya ada 2 tautan yang menarik untuk dikaji:

https://labs.mwrinfosecurity.com/tools/drozer

Introduction to Drozer

Manipulasi Transaksi Mobile Banking dengan Burp Suite

Sebagai analis keamanan aplikasi mobile banking, tentunya kita ingin mengetahui sampai sejauh mana keamanan aplikasi terhadap berbagai teknik serangan, termasuk Man-in-the-Middle (MiTM) attack berupa manipulasi transaksi HTTP.

Untuk mendukung skenario attack, saya menggunakan Burp Suite, Kali Linux sebagai server Bank dan Android Virtual Devices yang telah diinstal dengan mobile banking apps.  Gambar berikut menunjukkan skenario untuk melakukan penetration test atas mobile banking apps tersebut.

Clients Interception

Pada Android Virtual Device, saya telah menginstall mobile banking apps yang telah disetting agar semua packet data yang terkait dengan transaksi akan diforward ke Burp.  Gambar berikut ini menunjukkan screenshot dari mobile banking apps yang telah dijalankan.

Mobile banking apps 1

Selanjutnya, saya melakukan transfer sebanyak USD 3 dari dan rekening saya sendiri. Selanjutnya kita bisa melihat bagaimana data transaksi tersebut dapat di-intercept oleh Burp Suite (POST).

Burp Suite 01

Dari gambar tersebut terlihat jumlah transaksi transfer sebesar USD 3 serta nomor account simpanan baik sumber dan tujuan transaksi transfer.  Selanjutnya atas transaksi tersebut, saya lakukan send to Repeater.  Pada tab repeater tersebut saya melakukan rekayasa transaksi berupa transfer dari satu rekening orang lain ke dalam rekening saya.  Mengingat ada parameter yang membatasi jumlah transfer maksimal sebesar USD 100, maka saya mencoba membalik transfer sebesar minus USD 100,000. Ternyata transaksi ini berhasil.

Burp Suite 02

Jika melihat account balance dari savings account saya, maka akan terlihat jumlah uang masuk tersebut.

Mobile banking apps 2

Tentunya ini semua hanya skenario semata-mata untuk mengetahui ada tidaknya celah keamanan dari satu mobile banking apps melalui teknik penetration test.  Tujuan dari tulisan ini adalah menunjukkan penggunaan Burp Suite sebagai salah satu tools yang sangat efektif dalam penetration testing atas satu mobile apps.

Analisis Packet Capture Data atas Mobile Banking Application

Analisis ini dilakukan atas satu mobile banking apps untuk iOS devices dari satu bank-sebut saja Evil Bank.  Aplikasi ini sempat tersedia di iOS App Store untuk beberapa waktu untuk kemudian ditarik kembali karena ada isu terkait keamanan data dari nasabah yang menggunakan aplikasi mobile tersebut untuk melakukan transaksi perbankan.

Untuk keperluan analisis, kita dapat mengakusisi packet capture data dari perangkat iOS yang telah menjalankan mobile banking apps dari Evil Bank.  Untuk keperluan analisis ini, kita membutuhkan dua tools: Cain untuk password sniffing dan Wireshark untuk network traffic analysis.

Tinjauan atas Mobile Banking Apps dari Evil Bank

Seperti mobile banking apps pada umumnya, ketika pengguna menjalankan aplikasi tersebut, maka akan terdapat menu login yang meminta pengguna untuk memasukkan username dan password.  Selanjutnya setelah memasukkan credential yang dibutuhkan, pengguna akan memasuki menu aplikasi seperti saldo akun, transfer funds dan detil dari akun bank milik dari pengguna (nasabah).  Setelah pengguna melakukan seluruh transaksi tersebut, maka kita bisa mengakusisi packet data dengan menggunakan wireshark sehingga kita peroleh satu file .pcap (kita sebut saja evilbank.pcap).

Menggunakan Cain

Dalam menggunakan Cain, kita harus menonaktifkan Firewall dan Anti-virus.  Selanjutnya kita membuka evilbank.pcap dengan Cain untuk kemudian dilakukan analisis.  Selanjutnya beberapa langkah yang perlu dilakukan:

  1. Klik Sniffer | Password
    • Pilih HTTP password group
  2. Selanjutnya kita bisa mendapatkan informasi berupa username (kjohnson) dan password (ThisIsThePasswordIReuse) seperti tampak pada figur di bawah ini:

Slide1

Menggunakan Wireshark

Selanjutnya kita menggunakan Wireshark untuk analisis file pcap agar diperoleh hasil analisis lebih detil.  Berikut ini langkah-langkah yang harus dilakukan:

  1. Membuka file evilbank.pcap. Wireshark akan menunjukkan 3.619 packet;
  2. Proses searching untuk username.
    • Klik Edit | Find Packet
      1. Ubah opsi the Find By menjadi String;
      2. Ubah “Search In” menjadi “Packet Details”
  • Masukkan username “kjohnson” seperti yang ditunjukkan oleh Cain.
  1. Klik Find.

Slide2

  • Proses pencarian tersebut akan mendapatkan packet yang berisi data terkait username “kjohnson”
  • Dari proses pencarian tersebut di atas, maka pada nomor packet 3496 yaitu packet HTTP POST. Selanjutnya pada nomor packet 3496 tersebut, klik kanan dari mouse dan pilih “Follow TCP Stream” untuk membangun kembali informasi terkait transaksi TCP;
  • Selanjutnya akan diperoleh hasil seperti tampak dalam figur di bawah ini. Untuk informasi yang di-highlight merah menunjukkan data dari client (mobile banking app) ke server.  Sedangkan data yang di highlight biru menunjukkan data dari server ke client.

Slide3

  • Selanjutnya dari hasil analisis terhadap TCP Stream tadi, kita bisa memperoleh informasi bahwa seluruh data yang dikirimkan dan diterima dari dan oleh client dan server seluruhnya dalam bentuk plaintext. Sehingga setiap orang yang bisa mengakuisisi packet data tersebut bisa mendapatkan username, password, nomor akun bank dan juga saldo bank dari pengguna/nasabah.

Slide4

Kesimpulan

Dari hasil analisis tersebut di atas, maka dapat ditarik kesimpulan sebagai berikut:

  1. Aplikasi tersebut tidak menggunakan SSL encryption untuk menjaga kerahasiaan (confidentiality) terkait data dari nasabah;
    • Menurut informasi dari pihak developer aplikasi, hal tersebut merupakan kesalahan (error) yang terjadi pada saat pengujian quality assurance.
    • Teknisi yang menjalankan test QA tidak menggunakan certificate yang dibutuhkan untuk pengujian aplikasi, sehingga pada saat itu mengganti HTTPS menjadi HTTP. Namun mereka lupa mengembalikan fungsinya (menggunakan HTTPS), karena alasan terburu-buru untuk mengejar deadline.
  2. Setelah memperoleh fakta tersebut, maka pihak Evil Bank setuju untuk menarik mobile banking apps mereka dari App Store dan memberikan pelayanan khusus kepada seluruh nasabah mereka selama 2 tahun untuk memonitor ada/tidaknya dampak berupa serangan yang merugikan mereka.