Pseudoscience Watch & Coinhive Malware Cryptojacking
Pendahuluan
Case study ini berkisar tentang dakwaan yang mengatakan Pseudoscience Watch (PW) secara tidak beretika menggunakan teknik web mining iaitu cypto mining menggunakan web browser dalam website mereka. Isu ini hangat diperkataan seawal Januari 2018 yang menyebabkan PW menutup website mereka daripada akses orang awam.
Rujuk:
- Forensik Digital Menggunakan Wayback Machine (Siri 1)
- Forensik Digital Menggunakan Wayback Machine (Siri 2)
Latar Belakang
Berdasarkan kepada maklumat yang diberikan oleh PW:
Selasa 9/1/2018
Mengikut log, CPU server mencatatkan bacaan yang tinggi yang mana datangnya daripada skrip javascript. Walaupun, pihak admin tidak menyedari kerana server tidak dipantau 24jam
Jumaat 12/1/2018
PW paparkan satu post di Facebook yang membuat pautan/link ke website PW. Ada pelawat yang memaklumkan bahawa komputer mereka menjadi berat / hanged. Kewujudan skrip javascript tersebut dimaklumkan kepada PW dan website tersebut segera ditutup.
Hasil analisa pada log mendapati, aktiviti crypto-mining telahpun bermula pada 24/12/2017. Pihak PW menyalahkan malware yang dimasukkan tanpa kebenaran (injected) dan menggunakan engine crypto yang datangnya daripada coinhive.com. Sedikit info tentang Website PW:
- Menggunakan CMS Wordress
- Menggunakan theme yang bernama Typology.
- Lokasi server ialah di US, menggunakan cloudflare (104.18.36.124)
- siapa pengelola dan pentadbir website juga tidak dapat dikesan (anonymous)
Persoalan yang timbul
Apabila pengunjung / followers PW mengesan web mining tersebut, timbul beberapa persoalan seperti berikut:
- Adakah benar pihak PW dengan sengaja meng-install skrip javascript tersebut?
- Jika ya, adakah skrip javascript tersebut sudah lama ada dan menjadi sumber pendapatan PW?
- Jika tidak, siapakah yang meng-install skrip javascript tersebut?
- Apakah punca berlakunya isu ini?
Case study ini dibuat untuk
- Mendidik orang awam tentang bagaimana asas forensik digital boleh dilakukan
- Bagaimana menggunakan tools percuma (Google dan Wayback Machine) bagi membuat siasatan sendiri berkaitan forensik digital
- Menghasilkan bukti digital untuk membuat / menjawab sebarang dakwaan berkaitan dunia internet
- Keperluan untuk sentiasa mengemakini website terutamanya yang menggunakan CMS (seperti wordpress, joomla dan lain-lain)
Penyelesaian Alternatif
Untuk mendapatkan jawapan yang sebenar bagi kes ini, saya perlu mendapatkan log server untuk 3 bulan sebelum kejadian. Walau bagaimanapun, saya tidak memilih untuk melakukan tindakan sebegini kerana saya bukanlah pegawai penyiasat yang dilantik. Selain itu, post ini bertujuan untuk memberi pendedahan kepada orang awam untuk menggunakan sebarang tools / kaedah yang boleh dicapai / dibuat sendiri tanpa kos.
Cadangan Penyelesaian
1. Menganalisa source code HTML pada website PW
Daripada sumber screenshot tersebut yang didapati daripada pihak pelawat website PW, saya menggariskan 3 keywords penting untuk kes ini:
- Website PW sudah ada plugin wordfence
- Coinhive APIKEY menggunakan key TnKJQivLdI92CHM5VDumySeVWinv2yfL
- Terdapat method CoinHive.Anonymous(siteKey [, options]) dalam documentation Coinhive
Bukti Pertama: Wordfence
Kenapa Wordfence?
Mengikut screenshot tersebut, wordfence sudah diinstalled dalam website PW. Untuk pengetahuan anda, Wordfence adalah plugin firewall yang bagus utk prevent sebarang perubahan pada website. Jadi, bagaimana Coinhive miner script boleh ada di dalam website tersebut sedangkan sudah ada plugin wordfence? Kerana, update terbaru Wordfence (kepada Free User) untuk Coinhive miner ini adalah pada 24 Nov (rujuk: https://www.wordfence.com/blog/2017/10/cryptocurrency-mining-wordpress/). Oleh itu, ada kebarangkalian bahawa website PW tidak diupdate sejak 24 Nov sehingga cpu naik 50% pada 24 December dan mula disedari pada 12 Januari 2018.
Bukti Kedua: sitekey TnKJQivLdI92CHM5VDumySeVWinv2yfL
Sitekey ini adalah sitekey yang digunakan oleh javascript tersebut. Sitekey tersebut telah dikesan penggunaanya seawal 28 Dec 2017 berdasarkan tweet berikut
sumber: https://twitter.com/ninoseki/status/946347159833767936
Ini adalah keyword yang amat penting. Apabila saya Google, saya ada dapati adalah banyak website yang sudah mempunyai sitekey tersebut. Antaranya ialah:
- melaniebensonfloral.com – https://quttera.com/detailed_report/melaniebensonfloral.com
- kingdom.com.sa – https://quttera.com/detailed_report/kingdom.com.sa
- readysettakeoff.com https://quttera.com/detailed_report/readysettakeoff.com
- androtrends.com (Google Cache)
- thecoimbatore.club (Google Cache)
Sila rujuk screenshot di bawah:
Website yang mempunyai sitekey tersebut sudah dimark sebagai bahaya oleh quttera.com. Beberapa website yang sudah dibersihkan boleh didapati dalam Google Cache.
Ini akan membawa kepada bukti ketiga iaitu;
Bukti Ketiga: CoinHive.Anonymous constructor
Constructor ini adalah dicatatkan dalam documentation Coinhive. Teknik menggunakan sitekey TnKJQivLdI92CHM5VDumySeVWinv2yfL adalah sama untuk semua website yang terlibat. Ini bermakna, code javascript ini tidak diletakkan oleh manusia / admin tetapi diinject oleh attacker/malware/hacking/spam bot. Selain itu, beberapa / beribu-ribu website pada tarikh 14 Jan 2018 juga dikesan menggunakan sitekey yang sama (rujuk screenshot). Oleh itu, ini adalah mustahil dilakukan oleh orang dalam / admin PW sendiri.
Sumber: https://twitter.com/ninoseki/status/952417757986828288
2. Penggunaan Wayback Machine
3 bukti di atas boleh didapati jika carian di Google digunakan sepenuhnya. Walau bagaimanapun, saya tidak mahu bergantung kepada cara Google sahaja. Maka, saya menggunakan Wayback Machine.
Kenapa Wayback Machine?
Kerana, forensic expert serata dunia menggunakan cara ini untuk mengesan / analyze digital evidence. Anda boleh rujuk post saya berkenaan Wayback Machine dalam post yang pertama dan kedua.
Sumber: https://web.archive.org/web/20171115000000*/pseudoscience.watch
Terdapat 14 snapshot untuk 2017. Snapshot yang boleh digunakan adalah snapshot pada 15 Nov 2017.
Wayback Machine online menggunakan Snapshot 15 Nov 2017
Daripada snapshot tersebut, tidak ada constructor javascript CoinHive.Anonymous(siteKey [, options]) dalam website PW. Pun begitu, teknik ini boleh dibahaskan kerana Wayback Machine versi online mempunyai banyak filter untuk buang header pada website PW.
Oleh itu, saya gunakan pula teknik download snapshot daripada Wayback Machine menggunakan RubyInstaller. Teknik ini akan mendownload keseluruhan website (tiada filter seperti online) dan saya boleh analyze source website PW. Oleh kerana CoinHive.Anonymous(siteKey [, options]) ini adalah dalam javascript, maka saya boleh cari keyword itu dalam source code PW.
Wayback Machine Downloader menggunakan Snapshot 15 Nov 2017
Apabila selesai proses download, saya dapati sudah plugin wordfence dalam website PW. Apabila saya download keseluruhan snapshot sepanjang 2017, saya dapati:
- 13 Mei 2017
- Website PW menggunakan wordpress versi 4.7.4
- CoinHive.Anonymous method belum ada pada website PW
- 15 Nov 2017
- Website PW menggunakan wordpress versi 4.8.3
- CoinHive.Anonymous method belum ada pada website PW
Kesimpulan
- Website PW kena injected (bukan installed) / cryptojacking menggunakan malware javascript yang mempunyai sitekey: TnKJQivLdI92CHM5VDumySeVWinv2yfL. PW tidak install secara sengaja kerana sitekey tersebut digunakan untuk beribu-ribu website yang lain.
- Website PW tidak mining CPU user seawal penubuhan website (berdasarkan snapshot pada 13 Mei 2017)
Soalan
Siapakah empunya sitekey TnKJQivLdI92CHM5VDumySeVWinv2yfL ?
Wallahualam. Mungkin pihak Coinhive boleh jawab. (saya sudah hantar email tentang sitekey tersebut pada 14 Jan 2018, 9:30pm namun belum dapat jawapan)
Adakah cryptomining sudah di-install sejak dari awal?
Tidak. Berdasarkan kajian ke atas source code website PW, website PW tidak mining pada awal kemunculan website ini bahkan menjadi mangsa kepada cryptojacking tersebut yang mana script tersebut telah diinject di antara tarikh 15 November 2017 sehingga 24 December 2017.
Justeru, mengatakan bahawa PW menggunakan web mining sebagai dana sejak dari awal penubuhan website (15 Mei 2017) juga adalah tidak relevan.
Apakah yang pihak PW boleh lakukan?
- Oleh kerana ini melibatkan penggunaan malware dalam website, pihak PW seharusnya segera melaporkan kepada pihak server / hosting dan membuat perbandingan di antara log website PW dan log server bagi mengenalpasti punca kejadian.
- Untuk menggunakan CMS, pentadbir website perlu sentiasa mengemaskini framework, theme dan plugin. Dalam kes PW ini, pentadbir website perlu sentiasa mengemaskini wordpress, theme Topology dan plugins seperti jetpack, autoptimize, wordfence dan lain-lain.
- Gunakan password yang super-selamat. Sila guna password yang dicadangkan oleh pihak wordpress. Lagi panjang dan complicated adalah lebih baik.