# Linux Sysmon

<figure><img src="https://2451201392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSXlq8GYyAbVnvbRZogU3%2Fuploads%2FLayfP1uy0om4mQbnAehn%2Fimage.png?alt=media&#x26;token=347864b4-f1a9-40ed-808b-f37ccb1dc0ec" alt=""><figcaption></figcaption></figure>

Ben Ubuntu dağıtımı üzerinde Sysmon'u kurmayı planlıyorum. Eğer siz farklı bir Linux dağıtımı üzerinde bunu yapacaksanız aşağıdaki linkteki adımları takip edebilirsiniz.\
<https://github.com/Sysinternals/SysmonForLinux/blob/main/INSTALL.md>

O halde Sysmon kurulumuna başlayalım.

### 1.

{% code overflow="wrap" %}

```bash
wget -q https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
```

{% endcode %}

### 2.

```bash
sudo dpkg -i packages-microsoft-prod.deb
```

### 3.

```bash
sudo apt-get update
```

### 4.

```bash
sudo apt-get install sysmonforlinux
```

Eğer bu aşamada aşağıdaki hatayı alıyorsanız bir sonraki adımı deneyiniz.

<figure><img src="https://2451201392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSXlq8GYyAbVnvbRZogU3%2Fuploads%2F8DBX0zCCt8ai30282nhf%2Fimage.png?alt=media&#x26;token=62531575-cbc4-4304-94c8-e3c29da7e16f" alt=""><figcaption></figcaption></figure>

### 5. Not: Yanlızca 4. aşamada hata alırsanız bu aşamayı deneyiniz.

```bash
sudo apt-get install sysmonforlinux --fix-broken
```

<figure><img src="https://2451201392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSXlq8GYyAbVnvbRZogU3%2Fuploads%2FLw4LS785DZeuWDdL7Oc7%2Fimage.png?alt=media&#x26;token=9415c33f-3b5d-4c2e-966e-05b1f68efc38" alt=""><figcaption></figcaption></figure>

Bu noktada Sysmon kurulmuş oldu ancak sysmon bir de config dosyası ile çalışmakdır. İlgili config dosyasında da sysmon'un hangi logları toplayacağı belirtilmektedir.\
Temel bir Sysmon Config dosyasını aşağıdaki linkten edinebilirsiniz.\
<https://gist.github.com/olafhartong/56bfbbe1a43ba675fdf5b9f194d608af>

Ardından ilgili komut ile config dosyamızı import edebiliriz.

```bash
sysmon -accepteula -i sysmon-linux-sample-config.xml
```

<figure><img src="https://2451201392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSXlq8GYyAbVnvbRZogU3%2Fuploads%2F3OIeieWlrs5usRXtVXcB%2Fimage.png?alt=media&#x26;token=3766cb3e-1aab-4908-a90e-7ac9837daae9" alt=""><figcaption></figcaption></figure>

Bu aşamadan sonra Sysmon loglarını kendi log dosyasına yazmaya başlamaktadır. Yazdığı logları gerçek zamanlı olarak görmek için ise aşağıdaki komutu kullanabiliriz.

```bash
tail -f /var/log/syslog
```

<figure><img src="https://2451201392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSXlq8GYyAbVnvbRZogU3%2Fuploads%2FKv8jqVRIOs6AQq2mzGrH%2Fimage.png?alt=media&#x26;token=64ee0737-438e-4f17-8e69-89bca5db7dca" alt=""><figcaption></figcaption></figure>

Örnek bir logu incelememiz gerekirse, gördüğümüz gibi Event ID olara 3 gözükmekte. Event ID 3 ise, bir TCP connection'un başlatıldığı anlamına gelmektedir. Bunu yanında bu log özelinde;\
&#x20;    ->Kullanılan protokol,\
&#x20;    ->Hangi User ile yapıldığı,\
&#x20;    ->Bağlantının başarı ile kurulup kurulamadığı,\
&#x20;    ->Source IP, Source Port, Dest IP, Dest Port bilgileri,\
Gibi bilgiler bizlere sağlanmaktadır.

Bunun yanında diğer Event ID'lerin ne anlama geldiği hakkındaki bilgiye de aşağıdaki tablodan erişebilirsiniz.<br>

| ID     | Tag                    | Event                                            |
| ------ | ---------------------- | ------------------------------------------------ |
| **1**  | ProcessCreate          | Process Create                                   |
| **2**  | FileCreateTime         | File creation time                               |
| **3**  | NetworkConnect         | Network connection detected                      |
| **4**  | n/a                    | Sysmon service state change (cannot be filtered) |
| **5**  | ProcessTerminate       | Process terminated                               |
| **6**  | DriverLoad             | Driver Loaded                                    |
| **7**  | ImageLoad              | Image loaded                                     |
| **8**  | CreateRemoteThread     | CreateRemoteThread detected                      |
| **9**  | RawAccessRead          | RawAccessRead detected                           |
| **10** | ProcessAccess          | Process accessed                                 |
| **11** | FileCreate             | File created                                     |
| **12** | RegistryEvent          | Registry object added or deleted                 |
| **13** | RegistryEvent          | Registry value set                               |
| **14** | RegistryEvent          | Registry object renamed                          |
| **15** | FileCreateStreamHash   | File stream created                              |
| **16** | n/a                    | Sysmon configuration change (cannot be filtered) |
| **17** | PipeEvent              | Named pipe created                               |
| **18** | PipeEvent              | Named pipe connected                             |
| **19** | WmiEvent               | WMI filter                                       |
| **20** | WmiEvent               | WMI consumer                                     |
| **21** | WmiEvent               | WMI consumer filter                              |
| **22** | DNSQuery               | DNS query                                        |
| **23** | FileDelete             | File Delete archived                             |
| **24** | ClipboardChange        | New content in the clipboard                     |
| **25** | ProcessTampering       | Process image change                             |
| **26** | FileDeleteDetected     | File Delete logged                               |
| **27** | FileBlockExecutable    | File Block Executable                            |
| **28** | FileBlockShredding     | File Block Shredding                             |
| **29** | FileExecutableDetected | File Executable Detected                         |

*Table Source:* [*https://learn.microsoft.com/en-us/sysinternals/downloads/sysmon*](https://learn.microsoft.com/en-us/sysinternals/downloads/sysmon)

***

#### Şimdi ise zararlı bir dosyanın Linux üzerinde ne gibi aktivitelerde bulunduğunu Sysmon ile gözlemleyelim.

Loglara baktığımızda 23 ID'li bazı eventler görmekteyiz. Yukarıdaki tablodan da teyit edebileceğimiz gibi 23 nuamralı event ID, dosya silme anlamı ifade etmektedir. Silinen dosyalardan bazılarına baktığımızda ise reboot, shutdown, halt, poweroff gibi binary dosyalarıdır. Zararlının bunları silmesinin sebebi, endpoint üzerindeki kontrolünü arttırmak, endpoint'in kapatılmasını, yeniden başlatılmasını  engellemek olabilir.&#x20;

<figure><img src="https://2451201392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSXlq8GYyAbVnvbRZogU3%2Fuploads%2FTw10uBCVhIBoqikdqx3e%2Fimage.png?alt=media&#x26;token=40a55055-e752-472b-bd59-c3075a422fc5" alt=""><figcaption></figcaption></figure>

Logları incelemeye devam ettiğimizde ise çok sayıda 3 ID'li event'in oluştuğunu görüyoruz.&#x20;

<figure><img src="https://2451201392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSXlq8GYyAbVnvbRZogU3%2Fuploads%2F3Sbjl4NmacU7Xds0aQRl%2Fimage.png?alt=media&#x26;token=543ec910-2e71-4c13-8d3d-cce649b5ed9e" alt=""><figcaption></figcaption></figure>

Farklı IP'lere TCP bağlantılarının ilk paketi olan SYN paketlerinin gönderildiği gözlemlenmektedir.

<figure><img src="https://2451201392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSXlq8GYyAbVnvbRZogU3%2Fuploads%2FtEmEboJHmSTqkvoZJK01%2Fimage.png?alt=media&#x26;token=7cba91c5-5384-4b81-99fd-73931845c707" alt=""><figcaption></figcaption></figure>

Yani bu zararlı görünüşe göre sistem yöneticisinin ya da endpoint sahibinin virüs enfeksiyonu sonrasında sistemi reboot edebilmesi ve kapatabilmesi gibi fonsiyonlarına erişememesi sağlama ve bunun ardında çok sayıda farklı IP'ye TCP handshake başlatarak bulunduğu host'un band genişliğini doldurmak ve sistem belleğini kullanmak üzere kaynak tüketimini arttırmayı hedefliyor olabilir. Çünkü bir SYN paketinin memory'dek boyutu yaklaşık olarak 62 byte'dır.

Sonuç olarak Windows endpoint'lerde yapabileceğimiz gibi Linux endpointlerde de Sysmon ile aktiviteleri inceleyip zararlı aktiviteler için bir görünürlük katmanı sağlayabiliriz.

### Kaynaklar <https://learn.microsoft.com/en-us/sysinternals/downloads/sysmon> <https://github.com/Sysinternals/SysmonForLinux/blob/main/INSTALL.md>
