Cyber Attack WordPress Server Compromise Pendahuluan Sebuah server Linux yang menjalankan beberapa instalasi WordPress terindikasi mengalami kompromi pada salah satu website. Investigasi dilakukan untuk mengetahui bagaimana attacker memperoleh akses, file apa saja yang ditanam, bagaimana payload dieksekusi, apakah terdapat persistence, serta apakah terdapat indikasi komunikasi dengan command-and-control (C2). Investigasi menunjukkan bahwa insiden bukan sekadar aktivitas scanning terhadap WordPress. Terdapat bukti kuat berupa: eksekusi PHP dari direktori mu-plugins ; beberapa PHP webshell dengan nama yang tidak lazim; penyalahgunaan fungsi WP File Manager; upload dan ekstraksi archive dari remote request; eksekusi binary native oleh www-data ; binary yang sengaja dihapus tetapi masih berjalan di memory; file PHP yang sudah dihapus tetapi masih dipegang process melalui file descriptor; koneksi network dari malware ke external endpoint; mekanisme self-replication; indikasi penggunaan Telegram sebagai C2/telemetry; dan aktivitas yang menyebabkan PHP-FPM mengalami timeout. Dengan demikian, klasifikasi insiden paling tepat adalah server/application compromise dengan webshell, malware persistence, dan post-exploitation activity . 1. Environment yang Diinvestigasi Environment yang ditemukan selama investigasi secara umum memiliki karakteristik: Linux Server | +-- Nginx | +-- PHP 8.3-FPM | +-- WordPress | +-- Multiple WordPress Sites | +-- wp-content/ | +-- plugins/ +-- mu-plugins/ +-- themes/ +-- uploads/ Target utama yang menjadi fokus investigasi: [REDACTED-WP-SITE] Dalam artikel ini domain tersebut akan disebut: target.example User web server: www-data PHP runtime: PHP 8.3-FPM 2. Scope Investigasi Investigasi mencakup beberapa layer. Application Layer WordPress WordPress plugins Must-use plugins ( mu-plugins ) WP File Manager admin-ajax.php PHP scripts Web Layer Nginx access log Nginx error log HTTP request method Source IP URI HTTP status request timing Runtime Layer PHP-FPM logs PHP-FPM worker slow execution timeout process termination process tracing Operating System Layer running process deleted executable deleted file descriptor /tmp /var/tmp filesystem metadata process ownership Network Layer outbound connection listening socket connection state remote IP remote port process-to-network mapping 3. Initial Indicators of Compromise Beberapa filename pertama yang menjadi perhatian: exp.php rev.php jokowi.php dongak.php File tersebut berada di lokasi: wp-content/mu-plugins/ Lokasi ini sangat penting karena mu-plugins merupakan mekanisme WordPress untuk must-use plugins . File PHP yang ditempatkan di lokasi tersebut dapat menjadi persistence mechanism yang lebih sulit terlihat dibandingkan plugin biasa. 4. PHP-FPM Evidence: exp.php Salah satu bukti terkuat berasal dari PHP-FPM. Log menunjukkan: [18-Aug-2026 21:55:49] WARNING: [pool www] child 285394, script '/var/www/[REDACTED]/wp-content/mu-plugins/exp.php' (request: "POST /wp-content/mu-plugins/exp.php") executing too slow (5.577702 sec) Kemudian: [18-Aug-2026 21:56:44] WARNING: [pool www] child 285394, script '/var/www/[REDACTED]/wp-content/mu-plugins/exp.php' (request: "POST /wp-content/mu-plugins/exp.php") execution timed out (60.620911 sec), terminating Artinya: exp.php benar-benar dieksekusi oleh PHP-FPM. Request menggunakan HTTP POST . Script berjalan lebih dari 5 detik. Script akhirnya mencapai timeout sekitar 60 detik. PHP-FPM kemudian melakukan termination terhadap worker tersebut. Ini berbeda dengan sekadar attacker melakukan: GET /wp-content/mu-plugins/exp.php yang menghasilkan 404 . Dalam kasus ini, PHP-FPM sendiri mengkonfirmasi bahwa PHP interpreter menjalankan file tersebut . 5. Native Binary Execution Investigasi kemudian menemukan indikator yang jauh lebih serius. Process: bad-epoll berjalan menggunakan user: www-data PID yang ditemukan antara lain: 365958 365959 365960 365963 Process tersebut mempunyai working directory: /tmp/xpl2026 (deleted) dan executable: /tmp/xpl2026/bad-epoll-static (deleted) Contoh evidence: bad-epoll 365958 www-data cwd DIR ... /tmp/xpl2026 (deleted) bad-epoll 365958 www-data txt REG ... /tmp/xpl2026/bad-epoll-static (deleted) Hal ini menunjukkan pola: malware binary | v /tmp/xpl2026/ | +-- bad-epoll-static | +-- execution | +-- delete file | v process tetap berjalan Menghapus file dari filesystem tidak otomatis menghentikan process . Process masih dapat menjalankan executable yang sudah di-unlink selama inode/file descriptor masih digunakan. 6. Deleted rev.php yang Masih Digunakan Process Temuan yang sangat signifikan adalah: FD 6r /home/[REDACTED]/rev.php (deleted) pada beberapa process bad-epoll . Dengan kata lain: rev.php | | executed/opened v process | | rm/delete file v filesystem entry hilang | +----> process masih memegang FD Sehingga: ls rev.php dapat menghasilkan: No such file namun malware tetap mempunyai akses terhadap file tersebut. Ini merupakan teknik umum untuk meninggalkan process aktif setelah file payload dihapus dari filesystem. 7. jokowi.php File lain yang ditemukan dalam PHP-FPM log adalah: wp-content/mu-plugins/jokowi.php Evidence: [21-Aug-2026 19:09:18] WARNING: [pool www] child 358145, script '/var/www/[REDACTED]/wp-content/mu-plugins/jokowi.php' (request: "POST /wp-content/mu-plugins/jokowi.php") executing too slow (5.381112 sec) Pada timestamp yang sama worker lain juga menjalankan script tersebut: child 358047 POST /wp-content/mu-plugins/jokowi.php Kemudian: [21-Aug-2026 19:10:13] child 358125 POST /wp-content/mu-plugins/jokowi.php executing too slow dan: [21-Aug-2026 19:10:13] child 358115 POST /wp-content/mu-plugins/jokowi.php executing too slow Kemudian: [21-Aug-2026 19:12:03] GET /wp-content/mu-plugins/jokowi.php executing too slow Interpretasi Ini merupakan bukti bahwa jokowi.php bukan hanya file yang pernah ada. File tersebut benar-benar dipanggil dan dieksekusi oleh PHP-FPM . Namun, Nginx access log tidak memberikan request langsung terhadap jokowi.php pada pencarian yang dilakukan. Hal ini dapat terjadi karena: access logging berbeda antar virtual host; log telah mengalami rotation; request masuk melalui mekanisme tertentu yang tidak tercatat seperti yang diharapkan; PHP-FPM menerima execution path yang tidak mudah direlasikan langsung dengan Nginx log; atau log request sudah tidak tersedia. Karena itu, evidence PHP-FPM menjadi sumber penting dalam kasus ini. 8. dongak.php Script lain yang muncul sebelum jokowi.php : wp-content/mu-plugins/dongak.php Evidence: [21-Aug-2026 18:26:28] POST /wp-content/mu-plugins/dongak.php executing too slow (5.663986 sec) dan: [21-Aug-2026 18:27:38] POST /wp-content/mu-plugins/dongak.php executing too slow (6.449326 sec) Hal ini menunjukkan terdapat beberapa script PHP berbeda dalam direktori mu-plugins yang digunakan dalam periode yang relatif berdekatan. 9. rev.php rev.php merupakan indikator yang bahkan lebih kuat karena muncul pada beberapa layer. PHP-FPM: [21-Aug-2026 18:29:16] GET /wp-content/mu-plugins/rev.php executing too slow Kemudian: [21-Aug-2026 18:30:11] GET /wp-content/mu-plugins/rev.php execution timed out Sementara pada OS ditemukan: bad-epoll yang masih memegang: /home/[REDACTED]/rev.php (deleted) Jadi terdapat hubungan temporal dan teknis: rev.php | +--> PHP-FPM execution | +--> timeout | +--> deleted | +--> process masih memegang FD | +--> native malware process 10. WP File Manager Abuse Salah satu temuan utama adalah penyalahgunaan plugin: WP File Manager Attacker tidak hanya melakukan scanning. Mereka menggunakan functionality internal plugin: admin-ajax.php dengan action: mk_file_folder_manager Salah satu request penting: GET /wp-admin/admin-ajax.php?action=mk_file_folder_manager&_wpnonce=4a15aa6730&networkhref=&cmd=extract&target=l1_d3Blci56aXA&makedir=0&reqid=1a0287f0f42304 HTTP response: 200 Source: [REDACTED-IP] Referer: https://target.example/wp-admin/admin.php?page=wp_file_manager User-Agent: Firefox/150.0 11. Analisis cmd=extract Parameter penting: cmd=extract menunjukkan bahwa request menggunakan fungsi extraction pada File Manager. Parameter: target=l1_d3Blci56aXA merupakan encoded representation dari nama archive. Hasil decoding mengarah pada: wper.zip Dengan demikian request tersebut dapat direpresentasikan secara konseptual sebagai: WP File Manager | v admin-ajax.php | v mk_file_folder_manager | v cmd=extract | v wper.zip | v extract files | v Webroot / WordPress filesystem Ini merupakan salah satu evidence paling penting dalam rekonstruksi attack chain. 12. File Manager sebagai Post-Exploitation Tool Setelah attacker memperoleh kemampuan menggunakan File Manager, functionality tersebut dapat digunakan untuk: listing directory; upload file; download file; extract archive; delete file; membaca konfigurasi; memindahkan file; dan melakukan file manipulation tanpa perlu SSH. Dengan demikian, attacker tidak harus mempunyai shell OS untuk melakukan banyak aktivitas filesystem. 13. Indikasi Pengambilan wp-config.php Dalam log ditemukan request dengan functionality: cmd=get terhadap target yang mengarah pada: wp-config.php File tersebut merupakan salah satu file paling sensitif dalam WordPress karena dapat berisi: DB_NAME DB_USER DB_PASSWORD DB_HOST AUTH_KEY SECURE_AUTH_KEY LOGGED_IN_KEY NONCE_KEY Jika attacker berhasil membaca wp-config.php , maka dampaknya dapat melampaui filesystem compromise. Potential impact: WordPress compromise | +--> DB credential exposure | +--> database access | +--> WordPress user manipulation | +--> content manipulation | +--> persistence Catatan: dari evidence yang tersedia, request untuk mengambil file tersebut tercatat. Apakah seluruh isi file berhasil dieksfiltrasi perlu dibuktikan lebih lanjut dari response body, network capture, atau log aplikasi yang relevan. 14. Archive wper.zip Archive: wper.zip muncul dalam attack chain sebagai object yang diekstrak menggunakan WP File Manager. Keberadaan archive tersebut penting karena archive dapat berfungsi sebagai: payload container yang membawa beberapa file sekaligus. Dengan pendekatan tersebut attacker tidak perlu meng-upload setiap PHP file satu per satu. Attack chain dapat berupa: Upload archive | v wper.zip | v File Manager extraction | +-- PHP webshell +-- utility +-- loader +-- payload +-- supporting files 15. ALFA TEaM / Webshell Dalam filesystem investigation juga ditemukan indikasi webshell dengan karakteristik: ALFA TEaM Shell Webshell tersebut memiliki kemampuan seperti: file management; command execution; process/network functionality; backdoor installation; CMS manipulation. Function yang menjadi indikator kuat: passthru() shell_exec() popen() proc_open() Function tersebut memungkinkan PHP memanggil command atau process OS. Jika webshell dapat diakses dari internet, attacker pada dasarnya memperoleh interface remote administration dengan privilege: www-data 16. Native Malware Tidak berhenti pada PHP. Investigasi menemukan binary native: bad-epoll-static yang berjalan sebagai: www-data Lokasi awal: /tmp/xpl2026/ Nama directory: xpl2026 menunjukkan staging area yang digunakan malware. Setelah execution, file tersebut dihapus. Namun process tetap aktif. Pattern: /tmp/xpl2026/bad-epoll-static | v execute | v PID | v rm | v bad-epoll-static (deleted) | v still running 17. Executable Stack Indicator Dalam investigation juga ditemukan indikator executable stack pada binary/payload terkait. Executable stack bukan bukti tunggal bahwa sebuah program pasti malware. Namun dalam konteks: WordPress compromise + webshell + /tmp staging + deleted binary + www-data + outbound connection indikator tersebut menjadi bagian penting dari keseluruhan evidence chain. 18. Network Communication / C2 Process malware kemudian dikorelasikan dengan koneksi network. Remote endpoint ditemukan pada: [REDACTED-C2-IP]:4444 Process yang berkaitan: bad-epoll Port: 4444 Status yang terlihat: CLOSE-WAIT Port 4444 sendiri tidak otomatis berarti C2. Namun kombinasi: www-data + malicious-looking binary + deleted executable + /tmp/xpl2026 + webshell + remote connection + port 4444 merupakan indikator compromise yang sangat kuat. 19. Self-Replication / Persistence Investigasi juga menemukan mekanisme replikasi PHP. Payload menggunakan sebuah variable payload, misalnya: $M dan melakukan write/copy terhadap sejumlah lokasi. Lokasi yang terindikasi antara lain: .cache.php themes/index.php wp-includes/.tmp.php wp-includes/js/.loader.php .well-known/.srv.php mu-plugins/defender.php wp-content/themes/.index.php wp-uploads/.thumb.php Pattern ini menunjukkan: initial malware | v replication routine | +--> .cache.php +--> .tmp.php +--> .loader.php +--> .srv.php +--> defender.php +--> .index.php +--> .thumb.php Tujuannya adalah meningkatkan kemungkinan malware tetap bertahan walaupun salah satu file ditemukan dan dihapus. 20. defender.php Nama: defender.php secara naming terlihat seperti security component. Namun berdasarkan code behavior yang ditemukan, file tersebut justru terkait dengan persistence/reinfection mechanism. Ini merupakan teknik umum malware: menggunakan nama file yang terlihat legitimate atau security-related agar tidak langsung menarik perhatian administrator. Karena itu, filename saja tidak boleh digunakan untuk menentukan apakah file aman. 21. Telegram C2 / Telemetry Payload juga menunjukkan adanya fungsi yang melakukan komunikasi keluar menggunakan: curl serta token bot yang hardcoded. Komunikasi tersebut digunakan untuk mengirim informasi seperti: HTTP_HOST dan informasi identifikasi server lainnya. Secara konseptual: Compromised WordPress | v Malware PHP | v curl | v Telegram Bot API | v Attacker Hal ini menunjukkan bahwa malware bukan sekadar webshell pasif. Malware mempunyai mekanisme telemetry / command-and-control communication . 22. Function _t() dan Fatal Error Payload yang direplikasi mendefinisikan function: _t() Masalah muncul ketika dua payload berbeda berhasil berada pada environment yang sama dan keduanya mendefinisikan: _t() PHP kemudian menghasilkan: Fatal error: Cannot redeclare _t() Akibatnya WordPress dapat mengalami: HTTP 500 atau: White Screen of Death Ironisnya, persistence mechanism malware sendiri kemudian menjadi salah satu penyebab application failure. 23. XML-RPC Activity Investigasi juga menemukan banyak request terhadap: xmlrpc.php Contoh: GET /xmlrpc.php?rsd dan: GET /wp-content/languages/plugins/xmlrpc.php serta: GET /wp-content/mu-plugins/uploads/xmlrpc.php dan: GET /cgi-bin/xmlrpc.php Sebagian besar mendapatkan: 404 atau: 429 Contohnya: 20.63.219.114 GET /wp-content/xmlrpc.php 404 dan: 20.196.209.81 GET /wp-content/mu-plugins/uploads/xmlrpc.php 429 Apakah ini normal? Scanning terhadap xmlrpc.php dari internet sangat umum pada WordPress. Itu sendiri belum membuktikan compromise. Yang penting adalah membedakan: GET /xmlrpc.php dengan: POST /xmlrpc.php Karena XML-RPC legitimate memang dapat digunakan WordPress untuk beberapa functionality. Sedangkan attacker juga sering melakukan: XML-RPC brute-force; multicall abuse; vulnerability probing; endpoint discovery. Pada evidence yang diberikan, mayoritas request XML-RPC yang terlihat adalah: GET dan banyak mendapatkan: 404 / 429 Tidak terdapat evidence yang cukup dari potongan log tersebut untuk menyatakan bahwa XML-RPC merupakan initial access vector. 24. IP Address Activity Beberapa source IP muncul selama investigation. Untuk keperluan publikasi, IP disamarkan: [ATTACKER-IP-01] [ATTACKER-IP-02] [ATTACKER-IP-03] [SCANNER-IP-01] [SCANNER-IP-02] Penting untuk membedakan: Confirmed malicious activity IP yang melakukan: admin-ajax.php cmd=extract cmd=get cmd=rm lebih kuat hubungannya dengan compromise. Opportunistic scanning IP yang hanya melakukan: GET /xmlrpc.php GET /cgi-bin/xmlrpc.php GET /wp-content/.../xmlrpc.php belum dapat dianggap sebagai attacker yang sama. 25. Tidak Ditemukannya bepas2.php Investigasi juga mencoba mencari: bepas2.php berdasarkan dugaan bahwa: bepas2 mungkin merupakan slang atau naming convention untuk: bypass Search dilakukan pada: /home/[REDACTED] /tmp /var/tmp dan kemudian dilakukan pengecekan langsung terhadap: /home/[REDACTED]/bepas2.php /var/www/[REDACTED]/bepas2.php Hasil: No such file Tidak ditemukan: bepas2.php di lokasi yang diperiksa. Kesimpulan Tidak ada evidence filesystem saat ini yang membuktikan keberadaan: bepas2.php Namun absennya file tersebut tidak membuktikan bahwa file tersebut tidak pernah ada . File bisa saja: telah dihapus; berada pada path lain; berada pada filesystem lain; dibuat sementara; atau hanya merupakan filename yang tidak pernah digunakan. 26. Korelasi Timeline Berdasarkan evidence yang berhasil dikumpulkan, timeline paling kuat adalah: 18-Aug | +-- exp.php executed | +-- PHP-FPM slow execution | +-- exp.php timeout | +-- native payload activity | v 21-Aug | +-- dongak.php | +-- rev.php | +-- rev.php timeout | +-- jokowi.php | | | +-- POST | +-- POST | +-- POST | +-- GET | v 22-Aug | +-- WP File Manager activity | +-- admin-ajax | +-- cmd=extract | +-- wper.zip | +-- cmd=get | +-- sensitive file access | +-- cmd=rm | +-- rev.php deletion | v 23-Aug | +-- deleted malware processes discovered | +-- deleted rev.php FD discovered | +-- malware replication indicators | +-- application errors 27. Attack Chain yang Direkonstruksi Berdasarkan evidence yang tersedia, attack chain dapat digambarkan sebagai: INTERNET | v WordPress Target | v Vulnerable Component | v File Management | v Remote File Access | +---------+---------+ | | v v Upload archive Upload PHP wper.zip payload | | v v extract webshell | | +---------+---------+ | v mu-plugins/ | +---------+----------+ | | | v v v exp.php rev.php jokowi.php | | | +---------+----------+ | v Code Execution | v www-data | +---------+---------+ | | v v PHP Webshell Native Binary | v /tmp/xpl2026 | v bad-epoll-static | v C2 / Remote IP 28. Persistence Model Persistence terlihat berada pada beberapa layer. Layer 1 — WordPress mu-plugins/*.php Layer 2 — Hidden PHP files .cache.php .tmp.php .loader.php .srv.php .index.php .thumb.php Layer 3 — Native process bad-epoll Layer 4 — Deleted-but-running payload bad-epoll-static (deleted) Layer 5 — External communication C2 endpoint Artinya, menghapus satu webshell saja tidak cukup. 29. Mengapa Menghapus File Saja Tidak Cukup Misalnya administrator melakukan: rm /path/to/rev.php Filesystem kemudian terlihat bersih. Namun jika process masih membuka file: rev.php (deleted) maka payload masih dapat berjalan. Karena itu incident response harus mencakup: FILE + PROCESS + MEMORY + NETWORK + PERSISTENCE bukan hanya: FILE 30. Impact Assessment Berdasarkan evidence, potential impact meliputi: Confidentiality Potential exposure terhadap: wp-config.php database credentials WordPress secrets application configuration Integrity Attacker dapat: upload files modify files delete files extract archives modify WordPress install webshell Availability Evidence menunjukkan: PHP-FPM timeout worker termination application errors Fatal PHP errors HTTP 500 / WordPress failure Persistence Terdapat: multiple webshell self-replication native process deleted executable Command & Control Terdapat indikasi: external network communication Telegram telemetry C2 endpoint 31. Tingkat Keparahan Berdasarkan keseluruhan evidence: SEVERITY: CRITICAL Alasannya bukan hanya karena terdapat malicious PHP file. Melainkan karena terdapat kombinasi: Remote file manipulation + Webshell + Code execution + Native binary + Persistence + Deleted running malware + Potential credential exposure + C2 communication Ini harus diperlakukan sebagai full server/application compromise , bukan sekadar infected WordPress file. 32. Hal yang Sudah Terbukti vs Hal yang Masih Hipotesis Confirmed / Strong Evidence Terbukti exp.php dieksekusi rev.php dieksekusi jokowi.php dieksekusi dongak.php dieksekusi Terbukti WP File Manager digunakan Terbukti cmd=extract digunakan terhadap archive: wper.zip Terbukti bad-epoll berjalan sebagai: www-data Terbukti Binary telah dihapus tetapi process masih hidup. Terbukti rev.php telah dihapus namun masih direferensikan oleh process melalui FD. Terbukti Terdapat aktivitas network yang berkorelasi dengan malware process. Terbukti Terdapat mekanisme PHP self-replication. 33. Hal yang Belum Dapat Dibuktikan 100% Beberapa hal masih membutuhkan evidence tambahan. Initial Access Belum dapat dipastikan dengan absolut apakah initial access berasal dari: WP File Manager vulnerability atau: vulnerability/plugin lain sebelum File Manager digunakan. wper.zip origin Kita dapat membuktikan archive tersebut diekstrak. Namun source upload-nya harus dikorelasikan dengan request upload untuk memastikan timestamp dan IP yang tepat. wp-config.php exfiltration Request cmd=get menunjukkan akses terhadap file tersebut. Namun keberhasilan exfiltration seluruh content perlu dikonfirmasi dari: HTTP response network capture application log bepas2.php Belum ditemukan. XML-RPC Belum ada evidence yang cukup untuk menyatakan XML-RPC sebagai initial compromise vector. 34. Recommended Incident Response Untuk server yang sudah mengalami level compromise seperti ini, pendekatan paling aman adalah rebuild , bukan sekadar cleanup. Prioritas: 1. Isolate host 2. Preserve evidence 3. Stop malicious processes 4. Block C2 5. Rotate credentials 6. Rebuild server 7. Reinstall WordPress 8. Reinstall plugins from trusted source 9. Restore clean content 10. Rotate WordPress salts 11. Rotate DB credentials 12. Validate filesystem 13. Harden WordPress 14. Monitor post-recovery 35. Credential Rotation Karena terdapat indikasi akses terhadap: wp-config.php semua credential yang terdapat atau mungkin terdapat di dalam file tersebut harus dianggap compromised . Minimal: Database password WordPress admin credentials API credentials SMTP credentials Cloud/API keys SSH credentials Application secrets jika ada. 36. WordPress Salts Authentication salts juga sebaiknya diregenerasi. Tujuannya untuk invalidasi session/token yang masih aktif. Secara konsep: Old session | v OLD SALT | X invalid after rotation Ini sangat penting jika attacker pernah memperoleh access terhadap WordPress authentication material. 37. WordPress Hardening Beberapa baseline yang direkomendasikan: define('DISALLOW_FILE_EDIT', true); Kemudian: hapus plugin yang tidak digunakan; update WordPress; update semua plugin; gunakan plugin dari source terpercaya; batasi akses /wp-admin ; gunakan MFA; gunakan WAF; monitor perubahan file; batasi permission filesystem; jangan menjalankan web application dengan privilege tinggi. 38. Monitoring yang Direkomendasikan Monitoring sebaiknya mencakup: Filesystem Monitor: wp-content/ wp-content/plugins/ wp-content/mu-plugins/ wp-content/uploads/ wp-includes/ terutama: *.php Process Alert jika: www-data menjalankan binary dari: /tmp /var/tmp /dev/shm Network Alert outbound connection dari: php-fpm nginx www-data ke internet yang tidak diharapkan. PHP-FPM Monitor: execution timeout slow script worker termination child process restart 39. IOC Summary Untuk publikasi, IOC berikut disamarkan. IOC Type Status exp.php PHP webshell/payload Confirmed execution rev.php PHP payload Confirmed execution jokowi.php PHP payload Confirmed execution dongak.php PHP payload Confirmed execution alpa.php Webshell Found bad-epoll Native process Confirmed running bad-epoll-static Native binary Deleted but running /tmp/xpl2026 Malware staging Confirmed wper.zip Archive Used in extraction defender.php Persistence Suspicious/malicious .cache.php Persistence Suspicious/malicious .loader.php Persistence Suspicious/malicious .srv.php Persistence Suspicious/malicious .thumb.php Persistence Suspicious/malicious [REDACTED-C2]:4444 Network IOC Correlated Telegram Bot API C2/telemetry Embedded in malware bepas2.php Suspected IOC Not found 40. Final Technical Conclusion Investigasi menunjukkan bahwa insiden ini bukan sekadar WordPress scanning atau automated bot attack . Terdapat evidence yang menunjukkan attacker berhasil mencapai tahap: Remote File Manipulation ↓ File Upload / Extraction ↓ PHP Code Execution ↓ Webshell ↓ Persistence ↓ Native Binary Execution ↓ Process Hiding / Deleted Files ↓ External Communication ↓ Self-Replication Komponen paling signifikan adalah adanya process: bad-epoll yang berjalan sebagai: www-data dari staging directory yang telah dihapus, serta adanya file descriptor terhadap: rev.php (deleted) Hal ini menunjukkan bahwa menghapus file malicious dari filesystem tidak serta-merta membersihkan server . Lebih lanjut, penggunaan WP File Manager dengan: cmd=extract terhadap: wper.zip menunjukkan bahwa attacker mempunyai kemampuan untuk memanipulasi filesystem melalui layer aplikasi WordPress. Temuan jokowi.php , dongak.php , rev.php , dan exp.php juga menunjukkan bahwa attacker menggunakan lebih dari satu PHP payload , sehingga kemungkinan besar aktivitas tersebut merupakan bagian dari satu rangkaian post-exploitation/persistence, bukan satu file yang berdiri sendiri. Dengan adanya indikasi credential exposure, webshell, native malware, persistence, dan C2 communication, server harus dianggap fully compromised sampai dilakukan rebuild atau validasi forensik yang membuktikan sebaliknya. Important forensic note: tidak semua aktivitas scanning yang ditemukan, khususnya request terhadap xmlrpc.php , dapat secara otomatis dikaitkan dengan attacker utama. IOC harus dikorelasikan berdasarkan timestamp, source IP, URI, HTTP method, response, process execution, dan filesystem evidence sebelum dimasukkan ke attack chain utama.