BTB-konffia: T-Potin yhdistäminen Wazuhiin

Johdanto

Välillä kaikki ei suju helposti ja se jos mikä on opettavaista. Syitä voi etsiä useista paikoista, vaikka ne yleensä löytyvät tuolin ja ruudun välistä. Tällä kertaa tutustumme allekirjoittaneen kipuiluun saada T-Potin logit Wazuhiin, selvästikin vajavaisella osaamisella. Tällä kertaa kyseessä ei ole varsinainen projekti, vaan muistiinpanoja mahdollisesti muille asian kanssa kipuileville.

Aikaisemmista kirjoituksista on tuttua T-Potin käyttö ja myös Wazuhin asennus.

Yritys 1: T-Potin logstash

T-potin github-ohjeista löytyykin valmista ohjetta malliksi. Joten eihän tässä varmastikaan kauaa mene!

https://github.com/telekom-security/tpotce/wiki/Reconfigure-logstash.conf

Ohjeiden mukaan toimittaessa ei T-Pot lähde päälle, vaikka ottaisi huomioon mahdolliset ajatusvirheet konffissa kohdassa 4 (https://github.com/telekom-security/tpotce/wiki/Reconfigure-ews.cfg).

Paremmalla osaamisella varmastikin selvitettävä ongelma, mutta olisiko jokin nopeampi tapa päästä eteenpäin?

Yritys 2: Rsyslog

Samojen ohjeiden keskustelussa vinkataan rsyslogin käyttöön. Ehkä se olisi helpompi tapa?

https://github.com/telekom-security/tpotce/issues/79

Ei toivottoa nopeaa onnistumista, lokit eivät lähde liikkeelle.

 

Yritys 3: Toinen Filebeat

Filebeat on jonkin verran tuttu, joten kokeillaan josko sen saisi ei-dockerisoituna välittämään dataa? Tässä esimerkissä välitetään vain Cowrien data (ssh-honeypot).

Versio

Ensimmäisenä pitää luonnollisesti valita sama versio (oss) Filebeatista kuin mitä Wazuh käyttää. Arvaa menikö tämä oikein kerralla?

https://www.elastic.co/downloads/beats/filebeat-oss

yml-modaus

Välilyönneillä on merkitystä. Opettele laskemaan jokainen.

https://en.wikipedia.org/wiki/YAML

 

Asetukset

Tämän jälkeen pitää huolehtia että asetukset eivät mene päällekkäin dockerissa olevan version kanssa. Eli muokataan path-asetusta.

filebeat.config.modules:
enabled: true
path: /etc/filebeat/modules.d/*.yml

path.home: /usr/share/beat
path.config: /etc/beat
path.data: /var/lib/beat
path.logs: /var/log/

Yhteys Elasticsearchiin

output.elasticsearch:
hosts: [“192.168.3.xx:9200”]
protocol: “https”
username: “admin”
password: “admin”
ssl.verification_mode: “none”

Yhteys Kibanaan

setup.kibana:

host: “https://192.168.3.xx:443″
setup.kibana.ssl.enabled: true
ssl.verification_mode: none

Huomio tässä kohdassa että Wazuhin asennuksessa portti on 443, eikä yleensä ELKissä oletuksena mainittu 5601.

Indexit

Tiedot voi lähettää joko samaan tai eri indeksiin. Mikäli haluaa pitää honeypotin tiedot erillään testejä varten, voi aivan hyvin käyttää oletuksena olevaa filebeat-indeksiä. Mikäli haluaa että Wazuh lukee T-Potin tietoja, voi indeksin asettaa samaksi, tässä “my-alerts”.

https://documentation.wazuh.com/current/user-manual/kibana-app/reference/configure-indices.html

output.elasticsearch.index: “my-alerts-%{[agent.version]}-%{+yyyy.MM.dd}”
setup.template.settings:
index.number_of_shards: 1
setup.template.name: “my-alerts”
setup.template.pattern: “my-alerts-*”

Vaihda lisäksi Wazuhin Settings-puolelta sama indeksi oletukseksi.

JSON

https://stackoverflow.com/questions/58299154/error-decoding-json-and-broken-logs-in-elastic-search

Sitten päästään tärkeimpään, eli valitsemaan lähetettäviä lokeja.

filebeat.inputs:

– type: log
json.message_key: log
json.ignore_decoding_error: true
tags: [“cowrie”]
json.keys_under_root: true
enabled: true

paths:
– /data/cowrie/log/cowrie.json

Mikäli jsonin kanssa on ongelmia, ota aluksi pois kohta “json.keys_under_root: true” ja katso miten kentät välittyvät eteenpäin.

Esim. päivämäärä-kentän kanssa saattaa olla haasteita JSONissa:

https://documentation.wazuh.com/current/user-manual/ruleset/json-decoder.html

https://www.elastic.co/guide/en/elasticsearch/reference/current/date.html

 

Wazuh yhteys: Testaus

Otetaan SSH:lla yhteys T-Potin Cowrieen ja annetaan kirjautumisen jälkeen komennoksi “koira”. Löytyykö tieto?

@timestamp
May 26, 2021 @ 13:09:30.732
agent.ephemeral_id
240bb8ca-eab4-4cd5-a146-6de405e2a475
agent.hostname
kindgame
agent.id
9d7485fb-2f9a-48b8-b082-316e943f0650
agent.name
kindgame
agent.type
filebeat
agent.version
7.12.1
ecs.version
1.8.0
eventid
cowrie.command.input
host.name
kindgame
input.type
log
log.file.path
/data/cowrie/log/cowrie.json
log.offset
58,817
message
CMD: koira
sensor
bd90039af186
session
290aafc5d9db
src_ip
192.168.3.49
tags
cowrie
timestamp
2021-05-26T10:09:29.820490Z
May 26, 2021 @ 13:09:30.732
{ “@timestamp”: “2021-05-26T10:09:30.732Z”, “timestamp”: “2021-05-26T10:09:29.821409Z”, “eventid”: “cowrie.command.failed”, “sensor”: “bd90039af186”, “ecs”: { “version”: “1.8.0” }, “host”: { “name”: “kindgame” }, “agent”: { “name”: “kindgame”, “type”: “filebeat”, “version”: “7.12.1”, “hostname”: “kindgame”, “ephemeral_id”: “240bb8ca-eab4-4cd5-a146-6de405e2a475”, “id”: “9d7485fb-2f9a-48b8-b082-316e943f0650” }, “src_ip”: “192.168.3.49”, “session”: “290aafc5d9db”, “log”: { “offset”: 59006, “file”: { “path”: “/data/cowrie/log/cowrie.json” } }, “input”: { “type”: “log” }, “message”: “Command not found: koira”, “tags”: [ “cowrie” ] }

Victory!
Tämän jälkeen voikin sitten asettaa esim hälytyksiä kirjautumisista: https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/alerts.html

(Bonus-yritys 4: Wazuh agentin conffiin lokien lisääminen)

Näin jälkiviisaana se helpoin ratkaisu. Samalla tietty tulee koko honeypotin turvallisuuden valvontakin otettua huomioon.
Tätä kohtaa päivitetään myöhemmin kun sopiva kohta tulee vastaan.
Kohdattuja ongelmia:

BTB projekti: Wazuh kotilabraan

Johdanto

Tämä artikkeli on jatkoa BTB-Projektille: Kotilabran palvelut, jossa pystytimme Proxmox- virtualisoinnin Asus PN50 raudan päälle. Nyt jatkamme syventymällä Wazuhin käyttöön!

  • Tavoite: Ottaa Wazuh käyttöön kotiverkon valvontaan
  • Vaikeus: Helppo
  • Aika: Tunteja
  • Hinta: 0 €

Olethan tätä ennen jo asettanut varmuuskopioinnin päälle ja osaat ottaa yhteyden virtuaalikoneillesi joko SSH:lla tai konsolin yli.

Mikä on Wazuh?

Wazuh kuvailee itseään seuraavasti:

“Wazuh is a free, open source and enterprise-ready security monitoring solution for threat detection, integrity monitoring, incident response and compliance.”

Home

Wazuh käyttää ELK-stackiä lokien vastaanottamiseen, käsittelyyn ja hälytysten tekemiseen, agenttien tai ulkoisten lokilähteiden syötteistä. Sitä voidaan pitää sekä SIEM / HIDS että EDR järjestelmänä, joten kotilabraan löytyy paljon kiinnostavaa kokeiltavaa.

Miksi siihen kannattaa siis tutustua?

Alla on erilaisia käyttötapauksia, joista näkee mitä kannattaisi omassa käytössä kokeilla:

Log data analysis File integrity monitoring
Rootkits detection Active response
Configuration assessment System inventory
Vulnerability detection Cloud security monitoring
Containers security monitoring Regulatory compliance

Itseäni kiinnosti eniten haavoittuvuuksien hallinta ja lisäksi tietoturvapoikkeamien havaitseminen eri lokilähteistä.

Asennus

Käytämme asennuksen nopeuttamiseksi suoraan OVA-virtuaalikonetta, joka sisältää sekä Wazuhin että ELK-stäckin valmiiksi konfiguroituna:

https://documentation.wazuh.com/current/virtual-machine/virtual-machine.html

Kuten muistatte ehkä Proxmox-artikkelista, voi ova-muotoisen virtuaalikoneen saada Proxmoxiin pienellä kikkailulla:

Import OVA as Proxmox VM

Omakohtaisesta kokemuksesta voin sanoa että kovalevy tulee ennen ensimmäistä käynnistystä olla ide-muotoisena. Muutoin asennuksessa ei ollut mitään ihmeellistä. Alla näkyvät suhtellisen hyvän suorituskyvyn takaavat asetukset.

Kun kone on valmiina, käynnistyksen jälkeen se vastaa suoraan saamastaan ip-osoitteesta portista 443. Oletussalasana on admin / admin. Mikäli serverille on asiaa, on tunnus root / wazuh.

Pysyvämmässä käytössä nämä tulee vaihtaa, mutta nyt jouduttaisiin myös koskemaan Wazuhin / Elkin asetuksiin, joten jatkamme oletuksilla.

 

Agenttien käyttö

Agenttien avulla saadaan koneista dataa monipuolisesti ja puskuroidusti. Windows-puolella myös XP:t ovat tuettuja, joka avaa jatkoa varten kiinnostavia mahdollisuuksia 🙂

Wazuh -> Agents sivulta saa suoraan komentokehoitteen agenttien asentamiseksi.

Vaihtoehtoinen tapa on luoda ISO-tiedosto, jonka voi Proxmoxin kautta asettaa kohdekoneille saataville CD-aseman kautta. AnyToISo-ohjelmalla voi Wazuh-agentit sisältävästä hakemistosta tehdä ISO-tiedoston.

https://crystalidea.com/anytoiso

Käsin asentamalla ainoa tarvittava tieto on Wazuhin IP-osoite ja tämän jälkeen palvelun käynnistys. Asennetut agentit ottavat yhteyttä Wazuhiin ja muutaman minuutin työn jälkeen tiedonkeräys on jo käynnissä.

Syslog-lokien vastaanotto

Yleisesti käytössä oleva syslog-formaatti mahdollistaa reitittimien, NAS-purkkien ja muiden laitteiden lokien vastaanoton.

Sen vastaanotto tapahtuu Wazuhin ossec-konffista:

How to configure Rsyslog client to send events to Wazuh

Aseta Wazuh-Management-Configuration (Edit configuration). Sitten Save ja Restart Wazuh.

<remote>
  <connection>syslog</connection>
  <port>514</port>
  <protocol>udp</protocol>
  <allowed-ips>192.168.x.x/24</allowed-ips>
  </remote>

Tämän jälkeen aseta halutussa laitteessa syslog-palveluun Wazuhin IP, portti 514 ja muodoksi UDP.

PfSensen Suricata-lokit

Mikäli käytössäsi on PfSense-palomuuri, saa sen Suricatan lokit Wazuhiin seuraavasti:

https://github.com/pfelk/pfelk/wiki/How-To:-Suricata-on-pfSense

Aseta palveluun Wazuhin IP, portti 514 ja muodoksi UDP.

 

Lokitietojen tarkastelu

Wazuhin valikoiden alapuolelta löydät myös Kibanan omat valikot. Valitse sieltä Discovery, jossa näet lokifeedin ja voit tarkastaa että halutut lokit todellakin tulevat perille.

Voit varmistaa että lokit tulevat perille pudottamalla lokien hälytystasoa esim arvolle 1 tai generoimalla hälytyksiä:

https://documentation.wazuh.com/current/user-manual/manager/alert-threshold.html

 

Wazuhin haavoittuvuuksien monitorointi

Erittäin näppärä piirre on Wazuhin kyky tarkkailla asennuksia ja niiden todettuja haavoittuvuuksia. Aseta ensin päälle halutut käyttikset (Windows/Ubuntu/redHat jne):

Using Wazuh for Windows vulnerability detection

Kun agentit ovat tehneet työnsä, muutaman tunnin kuluttua pääset katsomaan millaisia haavoittuvuuksia on löytynyt:

Valitsemalla Explore agent- voit katsoa konekohtaisesti korjauslistaa:

Wazuhin hälytykset

Kohdasta Wazuh – Modules -Security Events näet filtteröidyt ja huomionarvoiset tapahtumat, niin haavoittuvuuksia kuin kirjautumisia koskien. Valitsemalla Events, pääset katsomaan raakadataa.

Filtteröinti ja hakutoimintojen avulla voit rajata ja etsiä vastaavia tapahtumia valitsemaltasi ajanjaksolta.

Hälytyksistä saat myös emailin, asettamalla ossec-konffiin sopivat asetukset:

https://documentation.wazuh.com/current/user-manual/manager/manual-email-report/

(Kannattaa tosin ensin rauhassa tutustua järjestelmään ja rakentaa se tuotantokäyttöön ajatuksen kanssa. Ota varmuuskopiot ja snapshotit merkittävien muutosten jälkeen).

Omat hälytykset ja säännöt

On luultavaa että aivan haluttua hälytystä ei löydy, joten voit rakentaa sääntöjen avulla oman hälytyksen:

https://documentation.wazuh.com/current/user-manual/ruleset/custom.html

 

Loppusanat

Wazuh tarjoaa nopeasti hyvin monipuolisen ratkaisun verkon laitteiden tapahtumien valvontaan. Tutustumalla ohjeisiin voit laajentaa sitä haluttuun suuntaan ja opettelemalla ELK-stackin toimintaa, voit myös rakentaa raportoinnin haluamaasi suuntaan.

Pikaisen käytön jälkeen huomasin että useasta komponentista koostuvassa järjestelmässä kannattaa olla tarkkana päivttämisen kanssa, tuki uusimmille komponenteille ei ilmesty hetkessä kaikkialle. Suosittelen rakentamaan pysyvään käyttöön erilliset ELK ja Wazuh ympäristöt.

Muutaman haastavamman ELK-konffauksen jälkeen piti turvautua Proxmoxin varmuuskopioiden palautukseen ja palata alkuruutuun, mutta tästä lisää seuraavassa artikkelissa jossa tutustutaan T-Potin ja Wazuhin yhteiselämään!