Skip to content

Instantly share code, notes, and snippets.

@rosdyana
Last active May 23, 2018 13:39
Show Gist options
  • Save rosdyana/e9e5213f07c0035eb4e6560d59d7f77b to your computer and use it in GitHub Desktop.
Save rosdyana/e9e5213f07c0035eb4e6560d59d7f77b to your computer and use it in GitHub Desktop.
  1. Untuk bidang Web hacking: Apa perbedaan antara cross site scripting (XSS) dan cross site request forgery (CSRF). Berikan juga contoh tekniknya masing masing, sekaligus cara mencegahnya (countermeasures).
  • Answer :

    • XSS ( Cross-Site Scripting ), salah satu jenis serangan pada aplikasi web yang memanfaatkan celah pada validasi input di sisi user/client. XSS umumnya sering diremehkan padahal celah ini bisa berakibat fata. Pada dasarnya, teknik yang digunakan cukup mudah, attacker dapat menggungakan social engineering pada korban agar mengakses tautan yang telah disisipi xss code. Yang mana nantinya jika hal ini berhasil, attacker dapat mencuri beberapa informasi penting dari korban melalui cookie, session, atau informasi lainnya yang tersimpan pada client-side. Berbeda denga phising yang menggunakan fake website, korban xss percaya bahwa tautan yang diakses adalah real website. Kasus xss yang saya ingat adalah pada salah satu bank di Indonesia, attacker menemukan celah xss pada notifikasi login failed. Kemudian attacker menggunakan celah tersebut untuk mendapatkan username - password yang otomatis dikirim ke server attacker setelah xss code diakses korban.

    • Cara pencegahan XSS di sisi developer adalah melakukan filtering input ( strip_tags(), htmlentities(), htmlspecialchars() ) dari user dengan mewaspadai karakter-karakter khusus. kemudian encoding, developer meng-encode karakter berbahaya dari input user menjadi karakter yang aman oleh user dan masih dapat dibaca oleh server. Solusi lain bisa ditambah dengan membatasi respon server dan membatasi panjang input dari user.

    • CSRF ( Cross-Site Request Forgery ), kurang lebih hampir sama dengan XSS ( semua exploit berawal dari social engineering ) namun disini attacker harus mengetahui architecture dari target. Umumnya, serangan jenis ini menyasar sistem yang mempunyai autentikasi otomatis, seperti yang kita ketahui browser kita dapat menyimpan informasi seperti username dan password, token, dan lain lain. Mengapa saya katakan attacker harus mengetahui architecture dari target, karena nantinya saat melakukan penyerangan, attacker harus mengetahui url structure atau flowchart dari sistem tersebut. Contoh dari serangan ini adalah attacker dapat mengambil alih account user dengan cara mengirim tautan yang berisi CSRF exploit, yang mana ketika user mengakses tautan tersebut yang didalam nya terdapat CSRF yang dapat merubah user account email/akses menjadi milik attacker, atau pada sistem e-commerce, attacker dapat membeli produk dari sistem yang mempunyai celah CSRF dengan cara yang hampir sama. User tidak mengetahui bahwa tautan yang mereka akses dapat melakukan hal tersebut. Untuk kasus CSRF yang saya tahu adalah pada aplikasi toko online hijau terkenal dimana attacker memanfaatkan CSRF dengan token, kemudian dapat mengolah pesan ( mengirim, membaca, menghapus ) user. Hal ini tentunya berbahaya jika dilanjutkan dengan teknik social engineering yang lebih dalam kepada korban.

    • Pencegahan dari sisi developer, dapat dengan membuat url tidak mudah ditebak. kemudian sebisa mungkin hanya dapat menerima POST request. pada sisi user, sebisa mungkin untuk logout setelah selesai menggunakan website berautentikasi. Hindari menyimpan username/password pada browser.


  1. Untuk bidang IoT hacking: jelaskan teknik Touchlinking Comissioning attacks, contoh serangannya dan kemungkinan teknik deteksinnya.
  • Answer : ZigBee Light Link ( ZLL ) Touchlink merupakan suatu protocol yang digunakan pada personal area network ( PAN ) untuk meremote/koneksi ke IoT device ( contoh lampu pijar Philip Hue ). ZigBee sendiri merupakan wireless low-power standard di IoT. Namun Touchlink commissioning ini mempunyai celah yang mana dapat dimanfaatkan oleh attacker untuk mengambil alih device atau melakukan serangan Denial-of-service (DOS). Biasanya serangan ini diawali dengan bypass safety protocol kemudian menyebarkan worm/malicious code dari satu device ke device lain menggunakan touchlink commissioining. Teknik deteksi pada serangan ini dapat kita lihat pada saat kita scanning dan request ZigBee device untuk mengindentifikasi dirinya, ZigBee device ini akan flashing, beeping atau dimming.

  1. Untuk bidang code/computer program analysis: jelaskan apa itu memory corruption. Sebutkan salah satu attack vector-nya, bagaimana teknik serangannya, dan juga cara mencegahnya.
  • Answer : Memory corruption merupakan salah satu vulnerability yang terjadi ketika memory diubah tanpa adanya explisit assignment. Mostly, terjadi karena kesalahan dalam development state pada low level programming languages. Jenis dari memory corruption adalah "Buffer Overflows" yang mencakup "Stack Overflows", "Heap Overflows", kemudian ada "Format String Vulnerabilities", "Integer Errors", "Dangling Pointers". Salah satu contoh dari vulnerability ini adalah celah pada microsoft office, yang mana software tersebut gagal untuk menghandle object dalam memory dengan baik, kemudian attacker menemukan celah tersebut dapat dikembangkan menjadi sebuah remote code execution ( RCE ) yang dapat mengambil alih sistem dari target. Attacker menyerang dengan cara mengirim file microsoft office yang sudah disusupi exploit. jika user membuka file tersebut maka exploit akan berjalan dan mulai menjalankan perintah dari attacker seperti menginstall program, menghapus bahkan mengambil alih account. Cara pencegahan dari vulnerability untuk sisi developer adalah menggunakan safe languages, dimana memory corruption banyak ditemukan di C dan C++. Kemudian developer dapat menggunakan "Static Analysis" pada software untuk memeriksa code yang berpotensi menjadi vulnerability. Solusi lainnya adalah menggunakan "Non-Executable Memory", "Control-Flow Integrity" dan "Sandboxing". Pencegahan pada sisi user adalah selalu update software, berhati-hati dalam menerima email berisi attachment file yang mencurigakan.
@rosdyana
Copy link
Author

  1. Perbedaan antara XSS (Cross Site Scripting) dengan CSRF (Cross Site Request Forgery). Berikan masing-masing contoh dan countermeasurenya!

  2. Apa Itu Touchlinking Commision Attack? Berikan contoh serangan dan teknik deteksinya!

  3. Berikan penjelasan tentang Memory Coruption. Sebutkan salah satu attack vectornya, bagaimana teknik serangannya dan cara penjegahannya.
    ===========================================================
    ===========================================================

  4. Perbedaan yang paling mendasar antara kedua teknik tersebut yaitu :

  • XSS melakukan penyisipan berkas script dari website yg berbeda. Contoh, pada suatu website dinamis biasanya memiliki fitur user management dimana user bisa melakukan login, pengeditan data profil,dll. Seorang hacker biasanya mengeksplore pada bagian ini untuk mendapatkan celah XSS, biasanya ketika user menggunakan salah satu fitur tersebut akan terjadi interaksi antara pihak client dan server. Dalam interaksi ini akan ada sejumlah instruksi yg dikirim oleh client menuju server(contoh ketika search data http://nama.com/?q=aksi) biasanya XSS mengksploit celah dari sini, itupun jika metode request yg digunakan adalah GET. Kemudian hacker menyisipkan script external pada url tersebut (http://nama.com/?q=aksi<script>kode</script>) untuk dijadikan alat dalam menggunakan celah keamanan, setelah script external dibuat dan celah ditemukan, tahap selanjutnya yaitu social engineering, dimana hacker akan mengirimkan sejumlah email secara acak yang berisikan link yg menuju script yg telah dibuat, ketika user me-klik link tersebut maka seluruh data cookie pada website tertentu(yg diincar oleh hacker) akan dikirimkan kepada hacker, agar hacker tersebut mendapatkan akses user tsb tanpa sepengetahuannya. Untuk tipe-tipe penyerangan XSS ada 2 yaitu,
  1. Reflected / Non-Persistent
  2. Storage / Persistent
    Dari kedua tipe tersebut yg membedakan adalah letak scriptnya, jika reflected memisahkan link script exploit dengan websitenya, maka storage meletakan link script tersebut pada websitenya(biasanya di tempat yg bisa dijangkau tanpa menggunakan akses yg rumit) seperti kolom komentar, artikel berita, dll.
  • CSRF memanfaatkan fungsi/metode yang terdapat dalam suatu website, konsep yg digunakan hampir sama dengan XSS, namun CSRF tidak menggunakan script external, pendekatannya pun sama seperti XSS, setelah exploit ditemukan maka hacker akan mengirimkan pesan email(steganografi) kepada korban dimana pada pesan email tersebut disisipkan link url yg telah dimodifikasi yg didapat ketika mencari exploit.

  • Countermeasure
    Salah satu hal yang paling efektif untuk mencegah ditemukannya / digunakannya exploit ini yaitu dengan meperhatikan dengan seksama setiap struktur kode yg dibuat. Baik dari proses input/outputnya, maupun pembuatan setiap token yg unik pada setiap proses. Pada proses input/output dapat dilakukan validasi perintah yg akan dilakukan sebelum dilaksanakan oleh server. Sedangkan untuk token, akan terjadi perubahan pada setiap interval tertentu.

  1. Memory Corruption
    Memory Corruption adalah sebuah kejadian dimana ketika penggunaan alokasi memori pada program, memori yg sudah dimodifikasi ini akan menyebabkan anomali pada kasus-kasus tertentu, pada saat memori yg korup ini digunakan oleh program tanpa 'dilepaskan' terlebih dahulu, program akan mengalami crash. Salah satu vector attacknya yaitu "Stack Buffer Overflow", Stack Buffer Overflow terjadi ketika si Attacker memberikan input yang berlebihan pada program yang di jalankan, sehingga program mengalami kelebihan muatan dan memory tidak dapat mengalokasikannya. Hal ini memberikan kesempatan kepada Attacker untuk menindih data pada program dan men-takeover kontrol program yang dieksekusi attacker.

Cara pencegahan

  1. Menulis kode yang aman : Buffer overflow adalah hasil dari input yang berlebihan ke dalam buffer. C library seperti strcpy(), strcat(), sprintf() dan vsprintf() beroperasi pada null terminated strings dan tidak mengecek batasan input. gets() juga fungsi lainnya yang memasukkan input ke dalam buffer dari stdin. Pada scanf() juga bisa mengakibatkan buffer overflows.

  2. Stack execute invalidation : Karena koding jahat (contoh, instruksi assembly untuk mengambil alih root shell) merupakan input argument ke dalam program, ini tersimpan ke dalam stack dan bukan dalam code segment. Oleh karena itu, solusi mudahnya adalah tidak mempebolehkan stack mengeksekusi instruksi apapun. Kode apapun yang dieksekusi dengan kode lainnya di dalam stack dapat mengakibatkan segmentation violation.

  3. Compiler tools : Beberapa tahun terakhir, compiler mempunyai kemampuan lebih. Beberapa compiler dilengkapi peringatan dalam penggunakan konstruk yang tidak aman seperti gets(), strcpy() dan sejenisnya, sebagai contoh :

int main () {
char *str = (char *)malloc(10);// mengalokasikan 10 bytes untuk str
gets (str); // membaca input dari stdin dan disimpan ke str
}

setelah di kompile, makan muncul warning:

/tmp/cc203ViF.o: In function “main”:
/tmp/cc203ViF.o(.text+0x1f): the “gets” function is dangerous and should not be used

  1. Touchlinking Commision Attack
    *blank. Sebenernya baru denger istilah ini si pak. Mungkin karna udah ketinggalan info beberapa bulan, tapi setelah baca baca singkat mungkin ini merupakan suatu exploit yg menggunakan touchlinking commision protocol pada suatu produk tertentu, sepertinya bapak pernah post hal ini beberapa waktu lalu di facebook. Contoh serangannya secara garis besar menscan device yang memiliki fitur touchlinking, kemudian melakukan ACK Spoofing, mereset device ke settingan pabrik(dari sini attacker sudah mengambil alih kontrol device), setelah itu melakukan take-over device dengan cara mengkoneksikan device ke network yg dibuat oleh attacker. Kemudian membuat 'phantom device' / device virtual, device virtual ini yg nantinya akan digunakan untuk mengirimkan instruksi ke target. Untuk lebih jelasnya mengenai touchlinking attack ini saya ngambil referensi dari sini pak https://github.com/IoTsec/Z3sec/wiki/Tutorial-1:-Touchlink-Attacks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment