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.
- Whitespace indentation is used for denoting structure; however, tab characters are not allowed as part of that indentation.
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?
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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” ] }
|