เราพูดถึง Sysmon มาหลายต่อหลายครั้งแล้ว ครั้งนี้จะเป็นการนำ log ของ Sysmon มาทำเป็นกราฟเพื่อให้ดูข้อมูลให้เห็นภาพง่ายขึ้นโดยใช้ Neo4j ครับ โดยเราจำเป็นต้องใช้ logstash ในการส่ง log ไปยัง Neo4j หรือจะส่งไปยัง ElasticSearch เพิ่มเติมก็ได้และสำคัญสุดคือเราจะใช้ Winlogbeat ในการอ่าน log ของ Sysmon ไปยัง Logstash จากนั้นก็เข้าลูปการส่งข้อมูลและแสดงผลที่ Neo4j ครับ
โอเคพอไล่เสร็จหน้าตาจะออกมาเป็นแบบนี้ครับ
[Windows] [Linux Server]Sysmon -> Winlogbeat ->Logstash -> Neo4j,ElasticSearch
ดังนั้นเราจะติดตั้งดังนี้ครับ
Logstash [Linux]
1. Install java
1 |
apt install openjdk-8-jre |
2. Install ElasticSearch Public Key
1 |
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - |
3. Install require package
1 |
sudo apt install apt-transport-https python-pip |
4. Add repository
1 |
echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list |
5. Install logstash
1 |
sudo apt update && sudo apt install logstash |
6. Create pipeline.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
input { beats { port => 5043 } } output { if [source_name] == "Microsoft-Windows-Sysmon" { pipe { ttl => 300 codec => 'json' command => 'python /opt/sysmon2neo4j/sysmon2neo4j.py' } } } |
Neo4j [Linux]
1. Install Neo4j Public Key
1 |
wget -O - https://debian.neo4j.org/neotechnology.gpg.key | sudo apt-key add - |
2. Add repository
1 |
echo 'deb https://debian.neo4j.org/repo stable/' | sudo tee /etc/apt/sources.list.d/neo4j.list |
3, Install Neo4j
1 |
sudo apt update && sudo apt install neo4j |
Sysmon2neo4j [Linux]
Sysmon2neo4j เป็น plugin ของ LogStash ที่ใช้ทำให้ Sysmon ไปอยู่ใน format ที่ Neo4j สามารถอ่าน Sysmon ได้
1. download sysmon2neo4j
1 2 |
cd /opt/ git clone https://github.com/MalwareSoup/sysmon2neo4j |
2. Install requirement package
1 2 |
cd sysmon2neo4j sudo pip install -r requirements.txt |
Winlogbeat [Windows]
1. Download winlogbeat
2. ไปแตกไฟล์ที่ C:\Program Files\
3. Run install-service-winlogbeat.ps1
4. เข้าไปแก้ไข winlogbeat.yml
ในส่วนแรกให้ใส่ monitor sysmon เพิ่ม โดยใส่เป็น
1 |
- name: Microsoft-windows-sysmon/operational |
จากนั้นไปส่วน output ให้ใส่เป็น
1 2 3 |
output.logstash: # The Logstash hosts hosts: ["<Logstash IP>:5043"] |
5. Start service winlogbeat
1 |
start-service winlogbeat |
เริ่มทำงาน
ทีนี้ถ้าเราเข้า http://localhost:7474/ ที่เครื่อง Linux ซึ่ง start Neo4j และ Logstash ไว้แล้ว มันจะเข้าไปสู่หน้า Dashboard ของ Neo4j โดย default username:password คือ neo4j:neo4j แล้วกำหนดรหัสผ่านใหม่ และจากนั้นให้เข้าไปแก้ไข /opt/sysmon2neo4j/sysmon2neo4j.py ให้แก้ password ให้ตรงกับที่เราตั้งไว้
จากนั้นก็ search ใน Neo4j ซึ่งใช้ cipher query language (CQL). ในการ query ข้อมูลครับ
1 |
match (p:Process)-[]-(d:Destination) match (p)-[]-(i:Image) return p, d, i |
จะเห็นว่าผลลัพธ์ที่ได้จะเป็นการนำ Sysmon มาแปลงให้กลายเป็นกราฟความสัมพันธ์ครับ
Source:: MalwareSoup.com