Skip to main content
  1. fra-challenge-writeups/

FRA Challenge Write-up: Mycket JSON

Table of Contents
This write-up is in Swedish. I may translate it to English in the future.

“En angripare har placerat skadlig kod på att flertal mål. Kan du analysera nätverksinspelningen och bilda dig en uppfattning om vad som händer?

(177129 bytes, sha256: 0dc55932c2f4037f6c02d784c8e7f6f4fc4977167b17995b4df9833d9734f0e7)”

Frågor och svar
#

  1. Vilka kommunicerar? Rita en bild.

Nedan följer en översiktsbild av nätverkskommunikationen över tid (genererad med detta script), samt en tabell med IP-adresser för mål respektive angripare (Command & Control-/C2-servrar).

Översikt av nätverkskommunikation över tid
MålC2-servrar
IPAnvändare
10.1.0.22sven
10.99.12.24user
10.99.12.76Administratör
10.99.12.136Administrator
10.99.12.150karin
10.99.12.164guest
10.99.12.231anna
172.16.0.153john
172.16.2.35user01
172.16.2.65sandbox
172.16.2.200abc
192.0.0.74Администратор
192.88.99.0geo007
192.88.99.44geo012
192.88.99.91geo001
192.88.99.125geo009
192.88.99.155geo002
192.88.99.189geo004
192.88.99.252geo011
198.18.0.0Administratör
198.18.0.82EFV11118
198.18.0.83EFF64364
198.18.0.93EFV00125
198.18.0.96EFV64788
198.18.0.141EFV63438
198.18.0.144Administrator
198.18.0.155EFV63733
198.18.0.195EFV14789
198.18.0.241EFV41415
IP
10.34.2.82
10.34.2.124
10.34.2.173
10.34.2.230
  1. Vilken händelse är viktigast ur angriparens perspektiv?

Den dittills viktigaste händelsen var förmodligen när angriparna lyckades infektera det första målet i 192.88.99.0/24 med den skadliga koden. Då tycks nämligen angriparna byta fokus helt. Den absolut viktigast händelsen kan man däremot våga påstå var när de insåg att de blivit upptäckta. Efter detta avbryter de all kommunikation med målen, och de ligger lågt i ett par månader.

  1. Vad är syftet med operationen?

Syftet var mest troligen att exfiltrera dokument kopplade till den forskning som bedrivs på subnätet 192.88.99.0/24.

Sammanfattning av incidenten
#

Den skadliga koden tillåter angriparna att kommunicera med den infekterade datorn och exfiltrera filer och dokument. Först letade de efter mål som används i samband med geometriforskning. Sedan, när de infekterat en sådan dator och nu visste vad de är ute efter, lyckades de infekterade ytterligare fem stycken. Från dessa kunde de exfiltrera en rad känsliga dokument knutna till forskningen. Vid ett tillfälle blir angriparna påkomna; någon har tagit bort koden från två av datorerna och undersöker den i en Sandbox. Angriparna avbryter då all kontakt med datorerna och håller sig undan. Efter några månader återupptar de arbetet, infekterar nya datorer och lyckas exfiltrera ytterligare två dokument.

Tekniskt detaljerad beskrivning
#

Nedan följer först en sammanfattning av kommunikationsprotokollet som använts. Sedan följer en något mer detaljerad genomgång av angreppet, där viktiga/intressanta detaljer lyfts. Där visas sammanfattningar av nätverkskommunikationen för representativa mål, men sammanfattningar för samtliga mål genereras enkelt med ett Python-script (det kan ta en stund att köra):

python print_tcp_streams.py capture.pcap

Angreppet delas upp i fyra delar:

  1. Angriparna letar efter mål kopplade till forskningen.

  2. Angriparna har funnit rätt subnät, riktar sitt angrepp och exfiltrerar data.

  3. Angriparna blir påkomna och städar upp.

  4. Angriparna återupptar arbetet.

Kommunikationsprotokollet
#

En mål som infekterats med den skadliga koden upprättar en TCP-anslutning till en C2-server varje gång dessa ska kommunicera. Varje informationsutbyte utgörs av två meddelanden: först ger målet ifrån sig en statusuppdatering, varpå C2-servern svarar med den IP-adress som nästa statusuppdatering ska ges till samt nästa kommando att utföra.

Mål                                C2
    {status}--------------------->
    <---------{nästa IP, kommando}

Nästa statusuppdatering görs sedan till den angivna IP-adressen och “svarar” på kommandot. Tre olika kommandon och svar har observerats:

C2-kommandoSvar från målTolkning
okokNy IP-adress ges utan kommando. Används för att upprätthålla kontakten.
survey,<IP>survey completeGör en granskning av målet och/eller dess omgivning (eller liknande) och överför resultatet till den angivna IP-adressen.
deleteInget svarMålet ombeds ta bort den skadliga koden och avsluta kontakten.

Ett svar på survey-kommandot skickas så snart granskningen är klar. Ett svar på ok-kommandot skickas under nästkommande förutbestämda tidsintervall: en gång varje morgon, eftermiddag och kväll, tisdag-lördag.

Utöver det beskrivet ovan observeras mål ibland även skicka statusuppdateringen file uploaded, tillsammans med en filsökväg och en IP-adress till vilken filen i fråga laddats upp. Målet tycks här meddela till C2-servern att ett dokument exfiltrerats till den angivna IP-adressen. Denna uppdatering görs inte som svar på något kommando, utan valet av fil att exfiltrera samt tidpunkt för detta görs på annat sätt.

1. Angriparna letar efter mål kopplade till forskningen
#

I ca en månads tid placeras den skadliga koden något sporadiskt på olika datorer i subnäten 10.99.12.0/24 och 198.18.0.0/24. I samtliga av dessa fall hålls endast förhållandevis kort kommunikation innan dess att angriparna överger datorn.

  • För samtliga datorer i 10.99.12.0/24 skickas delete-kommandot direkt:
##########################
###### 10.99.12.136 ######
##########################
Src: 10.99.12.136, Dst: 10.34.2.124:
    ---------> {"status": "ok", "ip": "10.99.12.136", "username": "Administrator"}
    <--------- {"next_checkin": "10.34.2.124", "command": "ok"}
    ---------> {"status": "ok", "ip": "10.99.12.136", "username": "Administrator"}
    <--------- {"next_checkin": "10.34.2.124", "command": "delete"}
  • För samtliga datorer i 198.18.0.0/24 skickas först survey-kommandot, följt av delete:
#########################
###### 198.18.0.96 ######
#########################
Src: 198.18.0.96, Dst: 10.34.2.124:
    ---------> {"status": "ok", "ip": "198.18.0.96", "username": "EFV64788"}
    <--------- {"next_checkin": "10.34.2.124", "command": "ok"}
    ---------> {"status": "ok", "ip": "198.18.0.96", "username": "EFV64788"}
    <--------- {"next_checkin": "10.34.2.124", "command": "survey,198.51.101.91"}
    ---------> {"status": "survey complete", "additional": "uploaded to 198.51.101.91", "ip": "198.18.0.96", "username": "EFV64788"}
    <--------- {"next_checkin": "10.34.2.124", "command": "ok"}
    ---------> {"status": "ok", "ip": "198.18.0.96", "username": "EFV64788"}
    <--------- {"next_checkin": "10.34.2.124", "command": "delete"}
  • Ett dokument exfiltrerades från 198.18.0.241, men den tycks inte ha varit av intresse då angriparna inte upprätthåller kontakten för att exfiltrera annat:
##########################
###### 198.18.0.241 ######
##########################
Src: 198.18.0.241, Dst: 10.34.2.124:
    ---------> {"status": "ok", "ip": "198.18.0.241", "username": "EFV41415"}
    <--------- {"next_checkin": "10.34.2.124", "command": "ok"}
    ---------> {"status": "ok", "ip": "198.18.0.241", "username": "EFV41415"}
    <--------- {"next_checkin": "10.34.2.124", "command": "survey,198.51.101.91"}
    ---------> {"status": "survey complete", "additional": "uploaded to 198.51.101.91", "ip": "198.18.0.241", "username": "EFV41415"}
    <--------- {"next_checkin": "10.34.2.124", "command": "ok"}
    ---------> {"status": "file uploaded", "additional": "uploaded to 198.51.101.91", "filename": "C:\\Users\\EFV41415\\Mina Dokument\\Ekonomi 2020.xls", "ip": "198.18.0.241", "username": "EFV41415"}
    <--------- {"next_checkin": "10.34.2.124", "command": "ok"}
    ---------> {"status": "ok", "ip": "198.18.0.241", "username": "EFV41415"}
    <--------- {"next_checkin": "10.34.2.124", "command": "delete"}

Endast enstaka mål tycks här ha varit värda att upprätthålla kontakten med, närmre bestämt 10.1.0.22, 172.16.0.153 och 192.0.0.74. IP-adresserna i sig sticker ut från mängden och det är möjligt att de ansågs vara mer “strategiska” mål i angriparnas ögon, trots att inget exfiltreras från dem.

2. Angriparna har funnit rätt subnät, riktar sitt angrepp och exfiltrerar data
#

Så snart en dator i subnätet 192.88.99.0/24 infekterats (där forskningen bedrivs) upphör angriparna helt att leta någon annanstans. Ingen ny dator utanför detta subnät infekteras, åtminstone inte förrän långt senare, och varje ny dator som infekteras inom subnätet håller kontinuerlig kontakt med angriparna.

Under 6-7 veckor infekteras sammantaget sex datorer i det intressanta subnätet. Totalt exfiltreras sex dokument från två av målen (användare geo001 respektive geo004) under tidsperioden till 198.51.101.91. Samtliga dokumenten är kopplade till forskningen:

DatumUrsprungFilnamn
2020-02-07192.88.99.189/mnt/documents/research/triangle counting.docx
2020-02-08192.88.99.189/mnt/documents/research/circle - overview.docx
2020-02-08192.88.99.189/mnt/documents/research/circle - method for finding corners.docx
2020-02-18192.88.99.189/mnt/documents/research/triangles and circles.docx
2020-02-27192.88.99.91/mnt/documents/advanced methods for straight lines.doc
2020-03-12192.88.99.189/home/geo004/pointy sharp shape.txt

Se exempelvis nätverkskommunikationen för 192.88.99.91 (geo001):

##########################
###### 192.88.99.91 ######
##########################
Src: 192.88.99.91, Dst: 10.34.2.173:
    ---------> {"status": "ok", "ip": "192.88.99.91", "username": "geo001"}
    <--------- {"next_checkin": "10.34.2.173", "command": "ok"}
    ---------> {"status": "ok", "ip": "192.88.99.91", "username": "geo001"}
    <--------- {"next_checkin": "10.34.2.173", "command": "survey,198.51.101.91"}
    ---------> {"status": "survey complete", "additional": "uploaded to 198.51.101.91", "ip": "192.88.99.91", "username": "geo001"}
      |<------ {"next_checkin": "10.34.2.173", "command": "ok"}
   x18|------> {"status": "ok", "ip": "192.88.99.91", "username": "geo001"}
    <--------- {"next_checkin": "10.34.2.173", "command": "ok"}
    ---------> {"status": "file uploaded", "additional": "uploaded to 198.51.101.91", "filename": "/mnt/documents/advanced methods for straight lines.doc", "ip": "192.88.99.91", "username": "geo001"}
      |<------ {"next_checkin": "10.34.2.173", "command": "ok"}
    x9|------> {"status": "ok", "ip": "192.88.99.91", "username": "geo001"}
    <--------- {"next_checkin": "10.34.2.230", "command": "ok"}
Src: 192.88.99.91, Dst: 10.34.2.230:
    ---------> {"status": "ok", "ip": "192.88.99.91", "username": "geo001"}
      |<------ {"next_checkin": "10.34.2.230", "command": "ok"}
   x27|------> {"status": "ok", "ip": "192.88.99.91", "username": "geo001"}
    <--------- {"next_checkin": "10.34.2.230", "command": "ok"}

3. Angriparna blir påkomna och städar upp
#

På morgonen 2020-03-14 upphörde geo004 plötsligt att kommunicera med angriparna, detta utan att ha tagit emot delete-kommandot, och ersattes istället av användaren sandbox172.16.2.65. Väldigt snart därefter upphör också geo001 att kommunicera, även här utan delete-kommandot. Av allt att döma blev den skadliga koden upptäckt och börjades undersökas i en Sandbox. Figuren nedan understryker detta tillfälle.

Viktig händelse i nätverkstrafiken

Den skadliga koden tycks inte ha spårats till de andra datorerna, eftersom deras kontakt med angriparna fortsätter. Kanske var det endast just att dokument exfiltrerades som drog till sig uppmärksamhet.

Troligen insåg angriparna att de förlorat kontakten med två av sina mål och att den nya användaren sandbox på en IP-adress utanför det intressanta subnätet tagit deras plats, ett mål de själva inte angripit. 2020-03-20 skickas delete-kommandot till samtliga mål och all kontakt med angriparna upphör helt.

Notera att de enda andra målen vars kontakt inte slutar med delete är de som fortfarande är aktiva vid pcap-filens slut:

$ grep -v -f <(tshark -r capture.pcap -Y 'frame contains "delete"' -T fields -e ip.dst | sort -u) <(tshark -r capture.pcap -Y 'tcp.flags==0x0002' -T fields -e ip.src | sort -u)
172.16.2.200
172.16.2.35
192.88.99.155
192.88.99.189
192.88.99.91

4. Angriparna återupptar arbetet
#

Efter att angriparna har legat lågt i flera månader infekteras tre helt nya datorer med den skadliga koden. En av dessa ligger i det tidigare intressanta subnätet, från vilken ytterligare två dokument exfiltreras.

DatumUrsprungFilnamn
2020-06-10192.88.99.155/mnt/documents/advanced methods for straight lines.doc
2020-06-10192.88.99.155/mnt/documents/Strategic geometry plan.xls