Deteksi File Judol memanfaatkan FIM Wazuh

Overview
Saat ini masif sekali attack terhadap website di Indonesia dari situs-situs penyedia layanan judi online. Modus operandi mereka adalah memanfaatkan celah di situs dan meng-inject atau mengubah file yang ada dalam directory website dengan laman promosi judi online. Melalui modus operandi yang dilakukan, sebetulnya saya langsung terpikirkan bahwa ini seharusnya bisa dideteksi menggunakan Wazuh FIM.
Wazuh memiliki fitur File Integrity Monitoring (FIM) yang bisa mendeteksi penambahan, perubahan, maupun penghapusan file dalam direktori yang diawasi, secara default FIM ini dijalankan setiap 12 jam. Konfigurasi FIM bisa ditambahkan dengan property ‘real-time’ dan ‘report-changes’ untuk mendeteksi perubahan secara real time dan mendeteksi ada perubahan apa pada file tersebut. Limitasinya adalah ‘report-changes’ hanya bisa diterapkan pada file berbasis text. Sementara itu file laman dan kode pada direktori website berupa file text, sehingga metode ‘report-changes’ bisa diterapkan.
Konfigurasi pada Agent
Masukkan direktori website dan enable property ‘real-time’ dan ‘report-changes’ pada konfigurasi agent di /var/ossec/etc/ossec.conf di dalam tag <syscheck>
<directories realtime="yes" check_all="yes" report_changes="yes">/var/www/html</directories>
SIlakan ganti /var/www/html dengan direktori website masing-masing. Lalu restart wazuh agent untuk mengaktifkan konfigurasi ini. FIM ini bersifat recursive, jadi wazuh agent akan mengawasi isi direktori dan sub direktori yang ada pada path yang dicantumkan.
systemctl restart wazuh-agent
Konfigurasi ini juga bisa diterapkan melalui shared configuration pada wazuh manager pada file /var/ossec/etc/shared/default/agent.conf dengan menambahkan konfigurasi ini dalam tang <agent_config>
<syscheck>
<directories realtime="yes" check_all="yes" report_changes="yes">/var/www/html</directories>
</syscheck>
Aktifkan shared configuration ini jika direktori website dalam beberapa agent berada pada path yang sama.
Konfigurasi dari Wazuh Manager
Tambahkan rules untuk mendeteksi file judol. Rules ini terdiri dari 2 tahap:
- Mendeteksi jika ada file baru ditambahkan pada direktori website
- Mendeteksi jika ada perubahan file yang berisi signature laman judol
Tambahkan pada /var/ossec/etc/rules/local_rules.xml atau buat file rules sendiri.
<!-- Rules for judol detection -->
<group name="ossec,syscheck,">
<!-- This rule detects file creation on web directory -->
<rule id="500554" level="12">
<if_sid>554</if_sid>
<field name="file" type="pcre2">(?i)public|www|html</field>
<description>[File creation on web directory]: New file $(file) on web directory</description>
<group>syscheck_entry_added,syscheck_file</group>
<mitre>
<id>T1105</id>
<id>T1505</id>
</mitre>
</rule>
<!-- This rule detects files modified with judol signatures. -->
<rule id="500550" level="15">
<if_sid>550</if_sid>
<field name="changed_content" type="pcre2">(?i)slot|gacor|maxwin|thailand|sigmaslot|zeus|cuan</field>
<description>[Judol File Modification]: File $(file) contains a judol signature</description>
<group>syscheck_entry_modified, syscheck_file, judol_file</group>
<mitre>
<id>T1105</id>
<id>T1505.003</id>
</mitre>
</rule>
</group>
Rules 500554 akan mendeteksi jika ada file baru yang ditambahkan pada direktori website. Jika ada file yang ditambahkan namun path bukan pada upload direktori ataupun bukan pada saat update/patch website, maka itu adalah event yang harus dicurigai dan segera dilakukan pengecekan.
Rules 500550 akan memeriksa isi perubahan pada file yang berubah. Jika ada signature judol yang disertakan dalam <changed_content> maka event akan dibangkitkan.
Rules lengkap bisa dilihat pada: wazuh-custom-rules-and-decoders/rules at main · bayusky/wazuh-custom-rules-and-decoders
Save lalu restart wazuh manager
systemctl restart wazuh-manager
Proof of Concept
SSH ke dalam VM web server lalu buat file baru pada direktori yang diawasi
touch /var/www/html/index.text
Perhatikan alert yang muncul

Rule 500554 akan dengan level 12 akan di-generate oleh Wazuh, karena ada file yang ditambahkan pada direktori web server.
Lalu masukkan signature judol pada file yang ditambahkan tadi.
echo "maxwin slot gacor" >> /var/www/index.text
Perhatikan alert yang muncul.

Rule 500550 akan di-generate oleh Wazuh dengan level 15 yang menunjukkan adanya dignature judol yang dimasukkan ke dalam file

Bagian yang berubah ditangkap dalam key syscheck.diff.
Visualisasi dan Dashboard
Untuk memudahkan pemantauan, bisa dibuat visualiasi untuk memberitahukan bahwa ada alerts mengenai judol yang dibangkitkan. Pada side menu, pilih menu Visualize di dalam Explore.

Lalu pilih create visualization, pilih Metric.

Untuk sumber data, pilih wazuh-alerts-*

Klik Add filter, pilih filter seperti pada gambar berikut: rule.id is 500554 untuk rule new file pada direktori web, atau rule.id is 500550 untuk signature judol, klik Save.

Klik Save di pojok kanan atas untuk menyimpan visualisasi.

Beri nama visualisasi yang menggambarkan informasi yang ditampilkan, lalu klik Save

Ulangi untuk file judol.
Selanjutnya buat visualisasi untuk menampilkan path file dan agent lokasi file tersebut terdeteksi. Pilih jenis visualisasi Data Table, lalu wazuh-alerts-* untuk sumber data.

Atur filter rule.id is 500554 untuk rule new file pada direktori web, atau rule.id is 500550 untuk signature judol, klik Save.
Pada menu kanan, bagian data, klik Buckets klik Add lalu klik Split rows

Klik Aggregation lalu pilih Terms, pada Field ketik agent.name lalu isi Agent untuk Custom Label. Buckets ini artinya visualisasi akan dibedakan per barisnya untuk setiap agent.

Klik Addlagi dan pilih Split rowslagi untuk menambahkan data berikutnya untuk Sub-buckets.

Pilih Terms untuk Sub-aggregation, ketik syscheck.pathpada Field lalu isi Path untuk Custom Label. Buckets ini artinya visualisasi akan dibedakan per barisnya untuk path file yang berubah untuk setiap agent. Lalu klik Update

Periksa hasil Visualisasi, jika sudah sesuai klik Save lalu berikan judul sesuai dengan informasi yang ditampilkan.

Ulangi hal yang sama untuk rule.id: 500550
Pastikan Visualisasi ini sudah ada pada menu Visualize.

Buat Dashboard baru melalui side menu Explore > Dashboard > Create new Dashboard

Untuk menambahkan Visualisasi ke dalam Dashboard pilih menu Add, lalu tambahkan semua Visualisasi yang sudah dibuat

Pilih semua visualisasi yang sudah dibuat

Isi panel pada dashboard dapat disesuaikan agar menarik dan informatif dengan metode klik and drag pada Judul panel dan Icon pada kanan bawah panel.

Save Dashboard dengan memberikan judul yang sesuai dengan informasi yang ditampilkan.

Sehingga ketika membuka Wazuh kembali, Dashboard bisa langsung dipilih untuk ditampilkan kembali.

Jika sudah memiliki Dashboard monitoring, Visualisasi juga bisa ditambahkan untuk visibilitas Event.
Tips 1. Wazuh memiliki session yang pendek jadi harus login secara berkala, namun jika ingin Dashboard SOC ditampilkan dalam waktu lama dan dalam session yang panjang, bisa diintegrasikan dengan Grafana Dashboard (akan dibahas pada course mengenai SOAR yang akan launching di Cyberkarta).
Tips 2. Kirimkan alert mengenai Rules 500554 dan 500550 melalui Telegram Bot supaya bisa direspon dengan cepat oleh tim CSIRT, caranya bisa mengikuti: Integrasi Wazuh Alert dengan Telegram Bot — BayuSky’s Virtual Labs
Tips 3. Bisa ditambahkan deteksi webshell / reverse shell untuk mendetksi kapan file judol di-inject mengikuti tutorial: Web shell attack detection with Wazuh | Wazuh
Tips 4. Jika sudah terlanjur ada file judol sebelum rules ini diterapkan, bisa dicari menggunakan tools buatan rekan saya: adpermana/Incident-Response-Tools at analisa
Conclusion
Rules ini dapat mendeteksi jika ada perubahan file terkait judol. Namun tetap diperlukan reaksi cepat dari tim CSIRT jika alert ini muncul. Perhatikan path dan juga isinya untuk menghindari alerts yang bersifat false-positive.
Deteksi File Judol memanfaatkan FIM Wazuh was originally published in Cyberkarta on Medium, where people are continuing the conversation by highlighting and responding to this story.