Linux Threat Hunting Dengan Sysmon

Rahmat Nurfauzi
5 min readOct 22, 2021

--

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.

https://ebpf.io/what-is-ebpf

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

https://attack.mitre.org/matrices/enterprise/linux/

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.

https://github.com/mitre-attack/attack-datasources

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).

https://attack.mitre.org/techniques/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/atomics
Executing 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.

Referensi

--

--

Rahmat Nurfauzi
Rahmat Nurfauzi

Written by Rahmat Nurfauzi

Red Teamer, Threat Hunter & Security Researcher. Contributors of Mitre ATT&CK Framework, PS Empire, LOLBins, Atomic Red Team and more.

Responses (1)