Linux Threat Hunting Dengan Sysmon
Microsoft merayakan 25 tahun Sysinternals dengan merilis open source sysmon (system monitoring) untuk Linux. Sysmon pada sistem operasi linux menggunakan teknologi eBPF (Extended Berkeley Packet Filter) yang memungkinkan program berjalan pada level sandbox dan dalam kernel sistem operasi.
Sysmon memberikan visibility pemantauan yang lebih dalam seperti dapat memonitor pembuatan proses, koneksi jaringan dan perubahan pada sistem file. Sebagai threat hunter sysmon dapat memudahkan untuk mendeteksi adanya anomali atau malicious activity dari sisi endpoint. Sebelum microsoft merilis sysmon untuk linux alternatif lain dapat menggunakan auditd.
Memulai Threat Hunting
Mitre ATT&CK Framework memberikan banyak informasi mengenai adversary TTPs, sangat berguna untuk memulai threat hunting. Kemudian, bagaimana cara mendeteksi teknik serangan yang ada didalam Mitre ATT&CK Framework khususnya Linux Matrix? tentunya harus memiliki data sources yang mencakup pada semua teknik serangan.
Data sources merupakan informasi yang dikumpulkan oleh sensor atau sistem pencatatan yang dapat digunakan untuk mengumpulkan informasi yang relevan untuk mengidentifikasi kejadian serangan.
Jika lihat gambar diatas hampir semua teknik yang ada didalam mitre att&ck dapat dideteksi melalui command execution dan process creation. Berikut ini informasi event id yang dihasilkan oleh Sysmon linux :
Event ID | Description
1 | Process Creation
3 | Network Connect
5 | Process Terminate
9 | RAW access read
11 | File Create / Overwrite
16 | Sysmon config change
23 | File Delete
Install Sysmon
Bergantung pada distro linux yang digunakan sebagai contoh untuk menginstall sysmon pada ubuntu, pertama harus menginstall package microsoft terlebih dahulu :
# wget -q https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
# sudo dpkg -i packages-microsoft-prod.deb
Update package dan install package sysinternalsebpf dan sysmonforlinux.
# apt-get update
# apt-get install sysinternalsebpf
# apt-get install sysmonforlinux
Install sysmon sebagai service dan gunakan konfigurasi sysmon linux dari MSTIC-Sysmon. Secara default sysmon event disimpan pada /var/log/syslog.
# sysmon -accepteula -i main.xml
Jalankan service sysmon.
# systemctl start sysmon
Atomic Red Team
Setelah sysmon berhasil di install langkah selanjutnya yaitu menguji deteksi dengan bantuan tools Atomic Red Team. Menguji deteksi diperlukan untuk memastikan bahwa ketika ada serangan apakah memberikan event yang relevan dan dapat terdeteksi. Perlu menginstall powershell terlebih dahulu untuk menjalankan Atomic Red Team :
# apt install powershell
# git clone https://github.com/redcanaryco/invoke-atomicredteam
Jalankan powershell dengan perintah pwsh, masuk ke dalam folder invoke-atomicredteam dan install module atomic red team.
PS /root/invoke-atomicredteam> Import-Module .\Invoke-AtomicRedTeam.psm1
PS /root/invoke-atomicredteam> Install-AtomicRedTeam -getAtomics -Force
Untuk menguji deteksi sebagai contoh melakukan simulasi serangan teknik cron job persistence (T1053.003).
Untuk menjalankan simulasi serangan dengan cara memanggil cmdlet invoke-atomictest <Mitre ATT&CK ID>
PS /root/invoke-atomicredteam> invoke-atomictest T1053.003
PathToAtomicsFolder = /root/AtomicRedTeam/atomicsExecuting test: T1053.003-1 Cron - Replace crontab with referenced file
Done executing test: T1053.003-1 Cron - Replace crontab with referenced file
Executing test: T1053.003-2 Cron - Add script to all cron subfolders Done executing test: T1053.003-2 Cron - Add script to all cron subfolders
Executing test: T1053.003-3 Cron - Add script to /var/spool/cron/crontabs/ folder Done executing test: T1053.003-3 Cron - Add script to /var/spool/cron/crontabs/ folder
Gunakan perintah berikut untuk melakukan analisa log yang dihasilkan oleh percobaan serangan diatas. sysmonLogView digunakan untuk melakukan parsing sysmon event log xml dengan format yang lebih mudah dibaca.
# tail -f /var/log/syslog | /opt/sysmon/sysmonLogView
Bisa dilihat pada potongan sysmon event log berikut ini, sysmon mendeteksi command execution dan file create yang menargetkan cron.
Event SYSMONEVENT_CREATE_PROCESS
<..snip..>
Image: /bin/bash
CommandLine: /bin/bash -c crontab -l > /tmp/notevil; echo "* * * * * /tmp/evil.sh" > /tmp/persistevil && crontab /tmp/persistevil
ParentImage: /opt/microsoft/powershell/7/pwsh
<..snip..>Event SYSMONEVENT_FILE_CREATE
<..snip..>
TargetFilename: +/var/spool/cron/crontabs/persistevil
<..snip..>Event SYSMONEVENT_CREATE_PROCESS
<..snip..>
CommandLine: /bin/bash -c echo "echo 'Hello from Atomic Red Team' > /tmp/atomic.log" >> /var/spool/cron/crontabs/persistevil
<..snip..>
Untuk mendeteksi adanya anomali harus memahami proses normal dan tidak, hampir disemua proses memiliki hubungan parent/child yaitu satu proses bertanggung jawab untuk memunculkan proses lainnya.
- ParentImage: Proses atas (parent)
- Image : Proses bawah (child).
Studi Kasus : Web Server Compromise
Penyerang berhasil melakukan compromise pada salah satu web server dengan cara melakukan eksploitasi kerentanan dan melakukan persistence dengan webshell.
- Sysmon Event ID 11 : Membuat file baru (backdoor) dengan ekstensi .php, .jsp. aspx, dsb.
- Sysmon Event ID 3 : Jika penyerang melakukan reverse shell program apache akan membuat koneksi dengan port yang umum dan tidak umum seperti 4444, 8443, dsb.
- Sysmon Event ID 1 : Eksekusi command seperti ifconfig, whoami, uname, ps aux, dsb menggunakan user apache (www-data). Current directory berada pada web root misal /var/www/html.