SlideShare a Scribd company logo
THE JOURNEY HACK
ELECTRON DESKTOP APP
MAC OS
IDSECCONF 2022
Ahad - 06 November 2022
Sinau Ben Ora Ketinggalan
Who Am I ?
Kang Ali a.ka jos_ali_joe
1. Pembukaan oleh MC
2. Pembacaan Doa
3. Sambutan dari RW / perwakilan pengurus
4. Sambutan sekaligus penyampaian Laporan Pertangung
jawaban RT lama
5. Serah terima Atribut RT lama ke Ketua Panitia
6. Proses pemilihan RT Tahun 2022
1.What is Electron App
2. File asar Electron App
3. Intercept Request
4. Remote Code Execution
5. Code Injection
6. Bypass File Quarantine
Definisi paling sederhana: Electron adalah
Framework yang memungkinkan pembuatan
aplikasi desktop untuk semua platform OS
(Windows, Mac, dan Linux).
Electron adalah proyek Open Source yang
dikelola oleh Github dan komunitas kontributor
yang aktif. Electron sekarang digunakan untuk
membuat berbagai aplikasi desktop seperti
Whatsapp,Visual Code Studio, Slack and Discord,
dll.
electronjs.org/apps
Definisi yang sedikit mendalam:
Electron adalah Framework GUI yang
menggabungkan mesin rendering
Chromium dan runtime Node.js untuk
memungkinkan proses browser dan
beberapa proses renderer lainnya
menjalankan logika aplikasi.
Proses browser menjalankan logika
aplikasi (main.js => titik masuk utama
untuk aplikasi) dan proses rendering
bawaan lainnya membuat jendela
dengan merender HTML dan CSS.
Aplikasi Electron harus memiliki security checklist sebelum membangun Aplikasi, tetapi
pengembang Aplikasi hanya mendesain yang mengesankan dan tidak memeriksa auditor
kebijakan keamanan dalam aplikasi
Electron Security Checklist : https://www.electronjs.org/docs/latest/tutorial/security
Celah keamanan dari aplikasi electron sama seperti aplikasi desktop pada umum nya,
kerentanan seperti Security Misconfiguration, Broken Authentication & Session Management,
Injection, Sensitive Data Exposure, etc ( OWASP Top 10 Desktop App )
OWASP : https://owasp.org/www-project-desktop-app-security-top-10/
❑File ASAR adalah arsip yang digunakan untuk mengemas kode sumber untuk
aplikasi yang dibuat oleh Electron. File .asar disimpan dalam format yang mirip
dengan arsip .TAR di mana file yang terkandung dalam arsip, seperti file .HTML,
.JS, dan .CSS, digabungkan bersama tanpa kompresi.
❑Karena electron adalah kerangka kerja javascript, dekompresi file app.asar
memungkinkan seseorang untuk melakukan analisis kode untuk menemukan
kerentanan.
Lokasi file app.asar macOS
Install Tools Decompile file app.asar
Command Extract file app.asar
Analisa source code dari aplikasi
untuk menemukan beberapa
informasi seperti kredensial, kunci
api, token, dan lainnya.
Ada beberapa cara untuk mencari
informasi sensitif menggunakan
keywords di Github EdOverflow.
Bounty : 1 Reward Bounty
Ali - The Journey-Hack Electron App Desktop (MacOS).pdf
❑Materi selanjut nya adalah konfigurasi aplikasi Electron untuk intercept request
melalui proxy
❑Karena aplikasi Electron running chromium, kita dapat menggunakan beberapa
argumen baris command untuk mengalihkan permintaan request yang dibuat di
dalam aplikasi ke server proxy.
❑Tools intercept request Burpsuite and Proxyman
Intercept with Tools Burpsuite
▪ /Applications/App.app/Contents/MacOS/App --args --proxy-
server=localhost:8081 --ignore-certificate-errors
Intercept with Tools Proxyman
Vulnerability IDOR in Electron App,
Skenario ini menggabungkan 2 Tools
Proxyman dan Burpsuite.
Private Program : 2 Reward Bounty
Ali - The Journey-Hack Electron App Desktop (MacOS).pdf
❑Untuk menemukan kerentanan ini ada beberapa tahapan yang tentunya masih
membaca source code aplikasi dari file app.asar
❑Atau untuk detail analisis menggunakan tools dari @doyensec Electronegativity
(temuan terkadang false positive)
npm install @doyensec/electronegativity -g
Untuk melakukan scanning
menggunakan alat Elektronegativitas,
Direktori dekompilasi atau ekstrak dari
file app.asar yang diekstrak sebelumnya
electronegativity -i decompile_asar/
Singkatnya file main.js adalah untuk
menjalankan proses utama yang
mengontrol kerja aplikasi seperti
menampilkan tampilan dashboard,
user interface dan proses render
halaman Web dan Aplikasi Electron
hanya memiliki satu proses utama.
Jika fungsi Aplikasi Elektron
nodeIntegration diatur ke mode true ini
menyebabkan javascript berjalan di
modul Node.js, dalam kerentanan ini
kita dapat menggunakan modul di
Electron untuk memanggil URI
eksternal
Do not enable Node.js
integration for remote content
https://www.electronjs.org/doc
s/latest/tutorial/security
Script RCE with code html
Medium (Unofficial) : No Bounty
Private Program : 1 Reward Bounty
Ali - The Journey-Hack Electron App Desktop (MacOS).pdf
Sama seperti beberapa Sistem Operasi, Injection pada Sistem Operasi macOS ada
beberapa teknik yang digunakan dan juga beberapa metode yang digunakan,
beberapa contoh Code Injection pada macOS :
Code Injection script exploit di masukan ke dalam plugin yang menargetkan aplikasi seperti Safari, Mail, XCode.
Code Injection di Addition daemon service aplikasi
Code Injection menggunakan port Mach dengan menggunakan mach_override dan mach_inject tetapi metode ini memiliki beberapa
kelemahan ( hak akses root )
Code Injection di sisi kernel sistem operasi
Code Injection modifikasi binary dari aplikasi.
Code Injection menggunakan variable DYLD_INSERT_LIBRARIES, Metode ini sangat sederhana hanya inject code exploit ke aplikasi yang akan
di jalankan.
Untuk mengeksploitasi
kerentanan ini, korban harus
menginstal aplikasi berbahaya
di perangkat.
Atau telah memperoleh akses
ke sistem operasi macOS
dengan akses pengguna.
DYLD_INSERT_LIBRARIES DYLIB INJECTION IN MACOS / OSX
Aplikasi tidak memerlukan izin
root untuk membuka aplikasi lain
dengan variabel environtment
DYLD_INSERT_LIBRARY
macOSVersion 10.12 < macOSVersi 10.14 >
SIP (SYSTEM INTEGRITY PROTECTION)
❑ Apple memperkenalkan System Integrity Protection mode pada versi MacOS El Capitan.
❑ SIP ini berfungsi untuk mencegah pengguna merubah root level files yang ada di macOS
❑ Active : Allow DYLD Environment Variables Entitlement
❑ Nilai Boolean yang menunjukkan apakah aplikasi dapat dipengaruhi oleh variabel
lingkungan linker dinamis, yang dapat di gunakan untuk memasukkan kode ke
dalam proses aplikasi.
com.apple.security.cs.allow-dyld-environment-variables
Check Application activated:
Allow DYLD Environment
Variables Entitlement
codesign -d --entitlements :- Aplikasi.app
Execute Code Injection Test
Simple Script Code Injection
Ali - The Journey-Hack Electron App Desktop (MacOS).pdf
- h1 Program : 4 Reward Bounty,5 Duplicate
- Bugcrowd Program : 1 Reward Bounty,1
Duplicate
- Zoho Program : 2 Reward Bounty
- Zerocopter Private Program : 2 Reward Bounty
- Zerocopter Huawei Program : 4 Reward
Bounty ( Not Electron App )
- Private Program : 3 Reward Bounty
❑Materi selanjutnya sesuai dengan judul diatas bagaimana cara bypass aplikasi yang
menjalankan file .terminal
❑Quarantine & GateKeeper adalah mekanisme keamanan macOS yang penting, yang mencegah
pengguna/perangkat menjalankan executable file yang di download
❑Kerentanan ini memiliki dampak rendah/sedang, tetapi dapat dikombinasikan dengan perilaku
kustom lainnya, dan fitur UX untuk meningkatkan keparahan.
❑Banyak produk populer seperti Keybase, Slack, Skype, Signal,Telegram memutuskan untuk
memperbaiki masalah ini, tetapi kerentanannya tetap tidak diperbaiki dalam aplikasi
sinkronisasi file: Dropbox, OneDrive, Google Drive, dll.
❑Reference : https://medium.com/@metnew/exploiting-popular-macos-apps-with-a-single-
terminal-file-f6c2efdfedaa
Intinya aplikasi yang bisa mendownload file harus mengaktifkan karantina file , dikarenakan:
Tidak ada atribut Quarantine untuk file yang di download, sehingga memungkinkan menjalankan file tersebut yang tidak di periksa oleh
GateKeeper di macOS
File yang di download tanpa atribut meta com.apple.quarantine tidak akan menampilkan peringatan saat menjalankan file tersebut.
Inti nya adalah menjalankan file yang sudah di dowload dapat melewati security Quarantine & GateKeeper
Detect Quarantine File Not Detect Quarantine File
Script RCE file .terminal
Facebook Program : 1 Reward Bounty
Private Program : 1 Reward Bounty
Ali - The Journey-Hack Electron App Desktop (MacOS).pdf
❑ Vulnerability Not Just Electron Application
❑ What is Next ?
✓ Team Research
✓ Sponsor
Om Arif Pak Iwan Kang Dzikri
Q&A
The Journey Hack Electron Desktop App Mac OS
Telegram : @kang_ali

More Related Content

Ali - The Journey-Hack Electron App Desktop (MacOS).pdf

  • 1. THE JOURNEY HACK ELECTRON DESKTOP APP MAC OS IDSECCONF 2022 Ahad - 06 November 2022 Sinau Ben Ora Ketinggalan
  • 2. Who Am I ? Kang Ali a.ka jos_ali_joe
  • 3. 1. Pembukaan oleh MC 2. Pembacaan Doa 3. Sambutan dari RW / perwakilan pengurus 4. Sambutan sekaligus penyampaian Laporan Pertangung jawaban RT lama 5. Serah terima Atribut RT lama ke Ketua Panitia 6. Proses pemilihan RT Tahun 2022
  • 4. 1.What is Electron App 2. File asar Electron App 3. Intercept Request 4. Remote Code Execution 5. Code Injection 6. Bypass File Quarantine
  • 5. Definisi paling sederhana: Electron adalah Framework yang memungkinkan pembuatan aplikasi desktop untuk semua platform OS (Windows, Mac, dan Linux). Electron adalah proyek Open Source yang dikelola oleh Github dan komunitas kontributor yang aktif. Electron sekarang digunakan untuk membuat berbagai aplikasi desktop seperti Whatsapp,Visual Code Studio, Slack and Discord, dll. electronjs.org/apps
  • 6. Definisi yang sedikit mendalam: Electron adalah Framework GUI yang menggabungkan mesin rendering Chromium dan runtime Node.js untuk memungkinkan proses browser dan beberapa proses renderer lainnya menjalankan logika aplikasi. Proses browser menjalankan logika aplikasi (main.js => titik masuk utama untuk aplikasi) dan proses rendering bawaan lainnya membuat jendela dengan merender HTML dan CSS.
  • 7. Aplikasi Electron harus memiliki security checklist sebelum membangun Aplikasi, tetapi pengembang Aplikasi hanya mendesain yang mengesankan dan tidak memeriksa auditor kebijakan keamanan dalam aplikasi Electron Security Checklist : https://www.electronjs.org/docs/latest/tutorial/security Celah keamanan dari aplikasi electron sama seperti aplikasi desktop pada umum nya, kerentanan seperti Security Misconfiguration, Broken Authentication & Session Management, Injection, Sensitive Data Exposure, etc ( OWASP Top 10 Desktop App ) OWASP : https://owasp.org/www-project-desktop-app-security-top-10/
  • 8. ❑File ASAR adalah arsip yang digunakan untuk mengemas kode sumber untuk aplikasi yang dibuat oleh Electron. File .asar disimpan dalam format yang mirip dengan arsip .TAR di mana file yang terkandung dalam arsip, seperti file .HTML, .JS, dan .CSS, digabungkan bersama tanpa kompresi. ❑Karena electron adalah kerangka kerja javascript, dekompresi file app.asar memungkinkan seseorang untuk melakukan analisis kode untuk menemukan kerentanan.
  • 10. Install Tools Decompile file app.asar Command Extract file app.asar
  • 11. Analisa source code dari aplikasi untuk menemukan beberapa informasi seperti kredensial, kunci api, token, dan lainnya. Ada beberapa cara untuk mencari informasi sensitif menggunakan keywords di Github EdOverflow. Bounty : 1 Reward Bounty
  • 13. ❑Materi selanjut nya adalah konfigurasi aplikasi Electron untuk intercept request melalui proxy ❑Karena aplikasi Electron running chromium, kita dapat menggunakan beberapa argumen baris command untuk mengalihkan permintaan request yang dibuat di dalam aplikasi ke server proxy. ❑Tools intercept request Burpsuite and Proxyman
  • 14. Intercept with Tools Burpsuite ▪ /Applications/App.app/Contents/MacOS/App --args --proxy- server=localhost:8081 --ignore-certificate-errors Intercept with Tools Proxyman
  • 15. Vulnerability IDOR in Electron App, Skenario ini menggabungkan 2 Tools Proxyman dan Burpsuite. Private Program : 2 Reward Bounty
  • 17. ❑Untuk menemukan kerentanan ini ada beberapa tahapan yang tentunya masih membaca source code aplikasi dari file app.asar ❑Atau untuk detail analisis menggunakan tools dari @doyensec Electronegativity (temuan terkadang false positive) npm install @doyensec/electronegativity -g
  • 18. Untuk melakukan scanning menggunakan alat Elektronegativitas, Direktori dekompilasi atau ekstrak dari file app.asar yang diekstrak sebelumnya electronegativity -i decompile_asar/
  • 19. Singkatnya file main.js adalah untuk menjalankan proses utama yang mengontrol kerja aplikasi seperti menampilkan tampilan dashboard, user interface dan proses render halaman Web dan Aplikasi Electron hanya memiliki satu proses utama.
  • 20. Jika fungsi Aplikasi Elektron nodeIntegration diatur ke mode true ini menyebabkan javascript berjalan di modul Node.js, dalam kerentanan ini kita dapat menggunakan modul di Electron untuk memanggil URI eksternal
  • 21. Do not enable Node.js integration for remote content https://www.electronjs.org/doc s/latest/tutorial/security
  • 22. Script RCE with code html Medium (Unofficial) : No Bounty Private Program : 1 Reward Bounty
  • 24. Sama seperti beberapa Sistem Operasi, Injection pada Sistem Operasi macOS ada beberapa teknik yang digunakan dan juga beberapa metode yang digunakan, beberapa contoh Code Injection pada macOS : Code Injection script exploit di masukan ke dalam plugin yang menargetkan aplikasi seperti Safari, Mail, XCode. Code Injection di Addition daemon service aplikasi Code Injection menggunakan port Mach dengan menggunakan mach_override dan mach_inject tetapi metode ini memiliki beberapa kelemahan ( hak akses root ) Code Injection di sisi kernel sistem operasi Code Injection modifikasi binary dari aplikasi. Code Injection menggunakan variable DYLD_INSERT_LIBRARIES, Metode ini sangat sederhana hanya inject code exploit ke aplikasi yang akan di jalankan.
  • 25. Untuk mengeksploitasi kerentanan ini, korban harus menginstal aplikasi berbahaya di perangkat. Atau telah memperoleh akses ke sistem operasi macOS dengan akses pengguna. DYLD_INSERT_LIBRARIES DYLIB INJECTION IN MACOS / OSX Aplikasi tidak memerlukan izin root untuk membuka aplikasi lain dengan variabel environtment DYLD_INSERT_LIBRARY
  • 26. macOSVersion 10.12 < macOSVersi 10.14 > SIP (SYSTEM INTEGRITY PROTECTION) ❑ Apple memperkenalkan System Integrity Protection mode pada versi MacOS El Capitan. ❑ SIP ini berfungsi untuk mencegah pengguna merubah root level files yang ada di macOS
  • 27. ❑ Active : Allow DYLD Environment Variables Entitlement ❑ Nilai Boolean yang menunjukkan apakah aplikasi dapat dipengaruhi oleh variabel lingkungan linker dinamis, yang dapat di gunakan untuk memasukkan kode ke dalam proses aplikasi. com.apple.security.cs.allow-dyld-environment-variables
  • 28. Check Application activated: Allow DYLD Environment Variables Entitlement codesign -d --entitlements :- Aplikasi.app
  • 29. Execute Code Injection Test Simple Script Code Injection
  • 31. - h1 Program : 4 Reward Bounty,5 Duplicate - Bugcrowd Program : 1 Reward Bounty,1 Duplicate - Zoho Program : 2 Reward Bounty - Zerocopter Private Program : 2 Reward Bounty - Zerocopter Huawei Program : 4 Reward Bounty ( Not Electron App ) - Private Program : 3 Reward Bounty
  • 32. ❑Materi selanjutnya sesuai dengan judul diatas bagaimana cara bypass aplikasi yang menjalankan file .terminal ❑Quarantine & GateKeeper adalah mekanisme keamanan macOS yang penting, yang mencegah pengguna/perangkat menjalankan executable file yang di download ❑Kerentanan ini memiliki dampak rendah/sedang, tetapi dapat dikombinasikan dengan perilaku kustom lainnya, dan fitur UX untuk meningkatkan keparahan. ❑Banyak produk populer seperti Keybase, Slack, Skype, Signal,Telegram memutuskan untuk memperbaiki masalah ini, tetapi kerentanannya tetap tidak diperbaiki dalam aplikasi sinkronisasi file: Dropbox, OneDrive, Google Drive, dll. ❑Reference : https://medium.com/@metnew/exploiting-popular-macos-apps-with-a-single- terminal-file-f6c2efdfedaa
  • 33. Intinya aplikasi yang bisa mendownload file harus mengaktifkan karantina file , dikarenakan: Tidak ada atribut Quarantine untuk file yang di download, sehingga memungkinkan menjalankan file tersebut yang tidak di periksa oleh GateKeeper di macOS File yang di download tanpa atribut meta com.apple.quarantine tidak akan menampilkan peringatan saat menjalankan file tersebut. Inti nya adalah menjalankan file yang sudah di dowload dapat melewati security Quarantine & GateKeeper
  • 34. Detect Quarantine File Not Detect Quarantine File
  • 35. Script RCE file .terminal Facebook Program : 1 Reward Bounty Private Program : 1 Reward Bounty
  • 37. ❑ Vulnerability Not Just Electron Application ❑ What is Next ? ✓ Team Research ✓ Sponsor
  • 38. Om Arif Pak Iwan Kang Dzikri
  • 39. Q&A The Journey Hack Electron Desktop App Mac OS Telegram : @kang_ali