Belajar Security Monitoring dengan Wazuh SIEM Part 5 : Integrate Virustotal with Wazuh to Actively Scan and Quarantine Malicious File
--

Introduction
Integrasi antara VirusTotal dan Wazuh memungkinkan Anda untuk melakukan scanning dan quarantine suatu file berbahaya secara otomatis. VirusTotal merupakan suatu platform online yang memungkinkan Anda dalam menganalisis file dengan menggunakan banyak engine antivirus sekaligus.
Dengan mengintegrasikan VirusTotal dan Wazuh, Anda dapat menganalisis suatu file yang berisfat ‘malicious’ atau mencurigakan menggunakan virustotal, sementara Wazuh akan bertindak sebagai alat monitoring yang bertugas untuk memantau keamanan sistem Anda. Jika Wazuh mendeteksi suatu file yang berbahaya, ia akan mengirimkannya ke VirusTotal untuk dianalisis lebih lanjut. Hasil pemindaian VirusTotal dapat memberikan informasi tambahan tentang berkas tersebut, seperti apakah berkas tersebut dianggap berbahaya oleh sebagian besar antivirus engine atau tidak.
Jika berkas terdeteksi sebagai berkas berbahaya oleh VirusTotal, Anda dapat mengambil tindakan karantina melalui integrasi dengan Wazuh. Wazuh dapat memberikan perintah untuk mengisolasi atau memindahkan berkas berbahaya tersebut ke lokasi karantina sehingga tidak dapat merusak sistem atau menginfeksi berkas lainnya.
Dengan menggabungkan VirusTotal dan Wazuh, Anda dapat memperkuat sistem keamanan Anda dengan menggunakan fitur scaleable scanning dan early detection terhadap suatu threat atau ancaman. Ini dapat membantu melindungi sistem dan data Anda dari serangan malware yang berpotensi merusak.
Integration
Untuk melakukan integrasi ini, langkah pertama yang harus anda lakukan adalah membuat akun di platform virustotal, dan juga mendapatkan API key yang diberikan secara gratis untuk akun yang telah anda buat sebelumnya. untuk mendapatkan API key nya, anda hanya perlu pergi ke “Profile” > “API key” seperti pada gambar dibawah ini.

Setelah itu, anda akan di arahkan ke halaman API key seperti pada gambar dibawah ini. SIlahkan copy API key anda dan simpan, karena nanti akan dibutuhkan untuk proses konfigurasi.

Windows Agent
Tahap selanjutnya adalah melakukan edit file konfigurasi agent yang berlokasi di C:\Program Files (x86)\ossec-agent\ossec.conf
Lakukan pencarian terhadap tag <syscheck> pada file tersebut dan ganti value tag <disabled> nya dari ‘yes’ ke ‘no’. Syscheck disini dilakukan untuk melakukan monitor terhadap spesifik directory (File Integrity Monitoring).
Disini saya akan melakukan monitor terhadap directory “Downloads” dengan cara menambahkan kode XML ini didalam tag <syscheck>
<directories realtime=”yes”>C:\Users\<USER_NAME>\Downloads</directories>
Ganti tag <user_name> pada kode XML tersebut dengan username akun PC anda.
Tahap selanjutnya adalah melakukan pembuatan terhadap script python untuk melakukan remove & quarantine suatu file yang masuk ke directory downloads pada agent anda. Sebelum melakukan hal tersebut, pastikan anda telah mengisntall python 3.x dan juga pip.
lalu lakukan instalasi pyinstaller menggunakan pip dengan command :
> pip install pyinstaller
> pyinstaller --version
pyinstaller disini digunakan untuk melakukan konversi dari .py ke .exe agar lebih mudah untuk dijalankan oleh sistem operasi Windows.
Setelah pyinstaller terinstall, langkah selanjutnya adalah melakukan copy terhadap script python remove-threat.py dibawah ini
#!/usr/bin/python3
# Copyright (C) 2015-2022, Wazuh Inc.
# All rights reserved.
import os
import sys
import json
import datetime
if os.name == 'nt':
LOG_FILE = "C:\\Program Files (x86)\\ossec-agent\\active-response\\active-responses.log"
else:
LOG_FILE = "/var/ossec/logs/active-responses.log"
ADD_COMMAND = 0
DELETE_COMMAND = 1
CONTINUE_COMMAND = 2
ABORT_COMMAND = 3
OS_SUCCESS = 0
OS_INVALID = -1
class message:
def __init__(self):
self.alert = ""
self.command = 0
def write_debug_file(ar_name, msg):
with open(LOG_FILE, mode="a") as log_file:
log_file.write(str(datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S')) + " " + ar_name + ": " + msg +"\n")
def setup_and_check_message(argv):
# get alert from stdin
input_str = ""
for line in sys.stdin:
input_str = line
break
try:
data = json.loads(input_str)
except ValueError:
write_debug_file(argv[0], 'Decoding JSON has failed, invalid input format')
message.command = OS_INVALID
return message
message.alert = data
command = data.get("command")
if command == "add":
message.command = ADD_COMMAND
elif command == "delete":
message.command = DELETE_COMMAND
else:
message.command = OS_INVALID
write_debug_file(argv[0], 'Not valid command: ' + command)
return message
def send_keys_and_check_message(argv, keys):
# build and send message with keys
keys_msg = json.dumps({"version": 1,"origin":{"name": argv[0],"module":"active-response"},"command":"check_keys","parameters":{"keys":keys}})
write_debug_file(argv[0], keys_msg)
print(keys_msg)
sys.stdout.flush()
# read the response of previous message
input_str = ""
while True:
line = sys.stdin.readline()
if line:
input_str = line
break
# write_debug_file(argv[0], input_str)
try:
data = json.loads(input_str)
except ValueError:
write_debug_file(argv[0], 'Decoding JSON has failed, invalid input format')
return message
action = data.get("command")
if "continue" == action:
ret = CONTINUE_COMMAND
elif "abort" == action:
ret = ABORT_COMMAND
else:
ret = OS_INVALID
write_debug_file(argv[0], "Invalid value of 'command'")
return ret
def main(argv):
write_debug_file(argv[0], "Started")
# validate json and get command
msg = setup_and_check_message(argv)
if msg.command < 0:
sys.exit(OS_INVALID)
if msg.command == ADD_COMMAND:
alert = msg.alert["parameters"]["alert"]
keys = [alert["rule"]["id"]]
action = send_keys_and_check_message(argv, keys)
# if necessary, abort execution
if action != CONTINUE_COMMAND:
if action == ABORT_COMMAND:
write_debug_file(argv[0], "Aborted")
sys.exit(OS_SUCCESS)
else:
write_debug_file(argv[0], "Invalid command")
sys.exit(OS_INVALID)
try:
os.remove(msg.alert["parameters"]["alert"]["data"]["virustotal"]["source"]["file"])
write_debug_file(argv[0], json.dumps(msg.alert) + " Successfully removed threat")
except OSError as error:
write_debug_file(argv[0], json.dumps(msg.alert) + "Error removing threat")
else:
write_debug_file(argv[0], "Invalid command")
write_debug_file(argv[0], "Ended")
sys.exit(OS_SUCCESS)
if __name__ == "__main__":
main(sys.argv)
Save file tersebut di directory manapun, lalu lakukan konversi file remove-threat.py tersebut ke file ekstensi remove-threat.exe menggunakan pyinstaller yang sebelumnya telah di install. Dengan menggunakan command dibawah ini
pyinstaller -F remove-threat.py
Setelah dilakukan konversi, pindahkan file remove-threat.exe tersebut ke directory active-response milik agent anda, yang terletak di C:\Program Files (x86)\ossec-agent\active-response\bin
seperti pada gambar dibawah ini :

Setelah itu, lakukan restart service agent wazuh anda dengan cara mengetikkan command ini di powershell
Restart-Service -Name wazuh
Wazuh Server
Pada wazuh server, anda perlu melakukan editing terhadap file ossec.conf untuk menambahkan konfigurasi baru untuk melakukan integrasi dengan virustotal. Dengan cara melakukan penambahan kode XML dibawah ini dan juga tambahkan API key anda kedalam tag <api_key>.
<ossec_config>
<integration>
<name>virustotal</name>
<api_key><YOUR_VIRUS_TOTAL_API_KEY></api_key> <!-- Replace with your VirusTotal API key -->
<group>syscheck</group>
<alert_format>json</alert_format>
</integration>
</ossec_config>
Seperti pada gambar dibawah ini.

Setelah itu lakukan juga penambahan terhadap kode XML dibawah ini untuk menjalankan fitur active response dan mentrigger file remove-threat.exe pada agent anda yang telah dibuat sebelumnya.
<ossec_config>
<command>
<name>remove-threat</name>
<executable>remove-threat.exe</executable>
<timeout_allowed>no</timeout_allowed>
</command>
<active-response>
<disabled>no</disabled>
<command>remove-threat</command>
<location>local</location>
<rules_id>87105</rules_id>
</active-response>
</ossec_config>
Jika sudah, lakukan save terhadap file tersebut dan restart wazuh-manager anda dengan command
systemctl restart wazuh-manager
Tahap selanjutnya adalah melakukan alerting terhadap hasil active-response, dengan cara melakukan editing terhadap rule files wazuh anda, disini rules nya akan diedit adalah local rules yang berlokasi di /var/ossec/etc/rules/local_rules.xml
, lakukan penambahan terhadap script dibawah ini kedalam file local_rules.xml
<group name="virustotal,">
<rule id="100092" level="12">
<if_sid>657</if_sid>
<match>Successfully removed threat</match>
<description>$(parameters.program) removed threat located at $(parameters.alert.data.virustotal.source.file)</description>
</rule>
<rule id="100093" level="12">
<if_sid>657</if_sid>
<match>Error removing threat</match>
<description>Error removing threat located at $(parameters.alert.data.virustotal.source.file)</description>
</rule>
</group>
Seperti pada gambar dibawah ini.

Setelah itu, lakukan save terhadap file tersebut dan lakukan restart wazuh-manager anda.
Testing
Untuk melakukan testing, hal yang pertama kita lakukan adalah melakukan enable terhadap Module Virustotal pada wazuh dashboard anda, dengan cara pergi ke menu “Modules” > “Modules”

Lalu enable opsi Threat detection & response Virustotal seperti pada gambar dibawah ini

Setelah itu, lakukan testing alert tersebut dengan cara melakukan download file malware testfile yaitu eicar.zip pada windows agent anda. FIle tersebut dapat di download di https://eicar.org.
JIka sudah, lakukan cek di module “Security Events” di agent windows anda, dan lihat apakah ada alert virustotal yang muncul seperti pada gambar dibawah ini. Terlihat bahwa Virustotal alert telah muncul dan ternyata file tersebut bukan file malware.

Dapat dilihat lebih lanjut juga isi dari alert tersebut untuk melihat virustotal permalink dan file integrity hash nya seperti pada gambar dibawah ini.

Alert tersebut juga dapat di tampilkan di bagian Module virustotal untuk melakukan pengkategorian dan searching yang lebih lanjut, seperti pada gambar dibawah ini.

Summary
Dari artikel yang telah ditulis diatas, dapat disimpulkan bahwa penggunaan virustotal sebagai file scanner dapat dilakukan pada environtment windows untuk melakukan early detection terhadap malicious file, dan juga melakukan auto quarantine terhadap malicious file tersebut. Saya harap artikel saya ini dapat berguna bagi anda sekalian.
-Regards,