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: