Splunk Boss of the SOCs (BOTS) V3 – Deel 1

Een paar weken geleden kwam het bij me op dat ik tot nu toe nog nooit aan een live CTF heb deelgenomen. Met de komst van Boss of the SOCs EMEA Virtual Edition op 30 september, vond het onbeleefd om hier niet aan deel te nemen zonder eerst de BOTSV3-uitdagingen van vorig jaar te ervaren.

Voor degenen die dit als richtlijn gebruiken: de BOTSV3-dataset is hier te vinden.

A: Splunk – Proost

200. Een lijst maken van de IAM-gebruikers die (met of zonder succes) toegang hebben gehad tot een AWS-service in de AWS-omgeving van Frothly?

index = botsv3 sourcetype = aws *

Vanaf hier kan je zien dat de enige account_id 622676721278 is.

Vrij nutteloos. Als je door de extra velden kijkt, kun je zien dat er wat interesse is als we ‘gebruiker’ typen. Door het veld Gebruikersnaam uit te pakken en met het volgende commando, krijgen we de oplossingen:

index = botsv3 sourcetype = aws * earliest = 0 account_id

| statistieken tellen door gebruikersnaam, bron type

| sort + Gebruikersnaam

A: bstoll, btun, splunk_access, web_admin

201. W hat veld zou u gebruiken om te waarschuwen dat AWS API-activiteit heeft plaatsgevonden zonder MFA (multi-factor authentication)?

Een google van MFA-detectie in AWS-omgevingen brengt me hier. Als we kijken hoe we een metrisch filter kunnen maken, zien we:

{$ .eventName = “ConsoleLogin” & amp; & amp; $ .additionalEventData.MFAUsed = “Nee”}

Het veld ‘additionalEventData.MFAUsed’ is nuttig. Terug op Zoeken & amp; Rapportage:

index = botsv3 sourcetype = aws * earliest = 0 * mfa *

Door extra velden te zoeken en die vinden we daar. Bob is je oom.

A: additionalEventData.MFAUsed

202. Wat is het processornummer dat op de webservers wordt gebruikt?

Index = botsv3 | statistieken tellen per brontype

Vanaf hier kunnen we verschillende brontypen zien, een die opvalt is ‘hardware’.

Als we hier naar de CPU-typen kijken, zien we één waarde:

Intel (R) Xeon (R) CPU E5–2676 v3 @ 2,40 GHz

A: E5–2676.

203. Bud maakt per ongeluk een S3-bucket openbaar toegankelijk. Wat is de gebeurtenis-ID van de API-aanroep die openbare toegang mogelijk maakte?

Een snelle google helpt om te bevestigen dat Cloudtrail hier het brontype is.

Een snelle zoekopdracht in Cloudtrail-logboeken voor openbaar beschikbare buckets en we kunnen zien dat de evenementnamen “PutBucketAcl” of “PutBucketPolicy” zijn. Met dit in gedachten zoeken we:

index = botsv3 sourcetype = “aws: cloudtrail” (eventName = “PutBucketAcl” OR eventName = “PutBucketPolicy”)

Dit levert 2 resultaten op; Het is belangrijk op te merken dat gebruiker bstoll ook Bud is …

Het antwoord is de vroegste gebeurtenis, vermoedelijk heeft Bud het later weer privé gemaakt. Kijkend naar de EventId en niet natuurlijk naar de Eventnaam.

A: ab45689d-69cd-41e7–8705–5350402cf7ac

204. Wat is de naam van de S3-bucket die publiekelijk toegankelijk is gemaakt?

Nou, de zoekopdracht is al klaar, dus het is gewoon een kwestie van het juiste veld vinden …

Even snel googlen van veldnamen binnen Cloudtrail loggen weer en we zien dat er een veld ‘bucketName’ zou moeten zijn.

Door alle parameters te doorzoeken, worden ‘requestParameters.bucketName’ en het resultaat schuimige webcode gevonden. Klaar en afgestoft.

A: schuimige webcode

205. Wat is de naam van het tekstbestand dat met succes is geüpload naar de S3-bucket terwijl het openbaar toegankelijk was?

We hebben een open en gesloten tijdsperiode van dezelfde zoekopdracht in Q203 en Q204. Als geheugen de meest efficiënte manier is om te filteren volgens Splunk (waar ik het niet mee eens ben omdat je het resultaat sneller kunt krijgen met opname van jokertekens) is door tijdsbestekken.

Laten we zoeken tussen 14:01:46 en 14:57:54 op 20/08/2018 en kijken wat we krijgen. Met toevoeging van een * .txt * aan de zoekopdracht:

index = botsv3 * .txt * bucket_name = schuimigewebcode 200

A: OPEN_BUCKET_PLEASE_FIX.txt

206. Wat is de grootte (in megabytes) van het .tar.gz-bestand dat met succes is geüpload naar de S3-bucket terwijl het openbaar toegankelijk was? Antwoordadvies: rond af op twee decimalen zonder de maateenheid. Gebruik 1024 voor de byteconversie. Gebruik een punt (geen komma) als het radix-teken.

Dezelfde principes, ander bestandstype:

index = botsv3 * .tar.gz * bucket_name = schuimigewebcode 200

We hebben meerdere resultaten met de bestandsnaam ‘frothly_html_memcached.tar.gz’. Als we naar alle velden kijken, vinden we ‘object_size’, dan hebben we twee interessante waarden. Laten we de statistiekenfunctie gebruiken en evalueren. Dit is in bytes en we moeten megabytes converteren, dat is 1024×1024 in binair formaat.

index = botsv3 * .tar.gz * bucket_name = schuimigewebcode 200

| eval objectsize = (object_size / (1024 * 1024))

| statistieken tellen op objectgrootte

Dit geeft twee antwoorden, waarbij beide worden aangevinkt:

A: 2.93

Vreemd genoeg hebben ze geen vraag 207…

208. Een schuimend eindpunt vertoont tekenen van muntmijnbouw. Wat is de naam van het eerste proces dat op dit eindpunt 100 procent gebruikstijd van de CPU-processor heeft bereikt op basis van deze activiteit?

Als we kijken naar de brontypen die we mogelijk kunnen gebruiken, lijken Perfmon-logsoorten veel statistische informatie te geven over de prestaties van eindpunten.

Door de brontypen te zoeken, vindt u ons met ‘PerfmonMk: Process’:

index = botsv3 sourcetype = ”PerfmonMk: Process” process_cpu_used_percent = ”100 & quot; | omgekeerd

| table _time process_id

Vreemd genoeg is het eerste proces dat wordt gezien, het eerste proces ‘MicrosoftEdgeCP # 2’. Ik denk dat de manier waarop deze vraag is gesteld een beetje afwijkt en dat dit dus eigenlijk het antwoord zou moeten zijn. In feite is het het tweede punt in tijd om 14:37:50 voor 100% gebruik dat is….

A: chrome # 5

209. Wanneer een EC2-instantie van een Frothly-webserver wordt gestart via automatisch schalen, voert deze automatische configuratietaken uit nadat de instantie is gestart. Hoeveel pakketten en afhankelijke pakketten worden geïnstalleerd door het cloudinitialisatiescript?

Een snelle google logtypes voor cloudinitialisatiescripts benadrukt cloud-init. Het blijkt dat er een cloud-init-output is. Hier door kijken:

index = botsv3 sourcetype = * cloud-init * sourcetype = “cloud-init-output”

Retourneert ons 23 resultaten. Verfijnen met afhankelijkheden:

index = botsv3 sourcetype = * cloud-init * sourcetype = “cloud-init-output” afhankelijkheden

Als we door de logboeken kijken, zien we:

A: 7 pakketten en 13 afhankelijke pakketten

210. Wat is de korte hostnaam van het enige Frothly-eindpunt dat daadwerkelijk Monero-cryptocurrency ontgint?

V 208 toonde aan dat gebruiker BSTOLL-L degene was die versleuteld werd.

Maar laten we bevestigen.

index = botsv3 earliest = 0 (* coin * OR * monero *)

Kijkend naar source = “stream: DNS” zien we coinhive, in dit geval zou het het eindpunt zijn dat het DNS-verzoek opvraagt.

index = botsv3 earliest = 0 (* coin * OR * monero *) source = “stream: DNS” “message_type {}” = QUERY

Hieruit zien we dat de gastheer …

is

A: BSTOLL-L

Deel 2 komt binnenkort uit, blijf zoals altijd veilig!