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

FRA Challenge Write-up: Exfiltratören

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

“Yta 0x33 AB, ett hemlighetsfullt företag i rymdbranschen, misstänker att en av dess anställda läcker känslig information till utomstående. Det är ett allvarligt läge, då det finns indikationer på att medarbetaren är agent för en aktör som planerar att genomföra ett inbrott på företaget. Analysera trafiken och försök hitta vilken information som har exfiltrerats. Utmaningen innehåller 7 flaggor.

(3 357 612 bytes, sha256: 0fc0615b58de00e6c3cde1eaf1b78ed72b8eac4267d22080d180127958487eef)”

Flaggor
#

Jag har hittat 6 av utmaningens 7 flaggor.

  • flagga{functional_treshold_power}
  • flagga{exf1l_by_p1ng}
  • flagga{qrazy_basy}
  • flagga{blueprinting_exfil}
  • flagga{play_the_5_tones}
  • flagga{they're_eating_the_dogs}

Sammanfattning av incidenten
#

Under dagen den 13e november 2024 exfiltrerades data från IP-adressen 10.0.0.10 till fyra olika mottagande adresser:

Mottagare
10.0.0.20
10.0.0.40
10.0.0.77
10.0.0.99

Den exfiltrerade informationen bestog av

  • tiderna för de dagliga vaktbytena,
  • en portkod,
  • en detaljerad karta över anläggningen, samt
  • en obfuskerad bild.

Endast delar av den obfuskerade bilden har kunnat återskapas. Dessa delar är möjligen tillräckliga för att kunna kopplas till orginalbilden i ett potentiellt arkiv av kandidater.

Tekniskt detaljerad beskrivning
#

Exfiltrationen delas här upp i fyra steg utefter de kommunikationsprotokoll som användes, i kronologisk ordning: FTP, ICMP, SEMP och UDP.


FTP
#

Kl 09:59 UTC ansluter exfiltratören först till en FTP-server (port 21) på 10.0.0.77 som gäst med namn sommar2014, och exfiltrerar den lokala filen msg.txt (sha256: e921b5bb292191b9f485d79444642b230054b731a9fd73a2fd7505ba05f9e2c5) genom att ladda upp den till FTP-serverns dropbox-mapp.

Med Wireshark/tshark och displayfiltret tcp.stream eq 0 ser man kommunikationen med FTP-servern:

220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#**+++++++++++++++++++*##%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*++++*#%%@@@@@@@@@@@@@@@@@%##*+++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*+++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*=+*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*=+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#==*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+=+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*=+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#==#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+=*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+=*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+=*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*-*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+ =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+ .#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.  +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-   +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*    *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%     %@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+ *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.    :@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  .@@*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@      *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+   %@*:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=      :@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.   #@@ -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+        %@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#    #@%  *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+   :     +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+    @@@  .@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%   .-     -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-   .@@@#  *@@@@#+--=++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*   -      :@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:   =@@@@# =@%+::=#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#****#@@@  +=.::   .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.   #@@@@@*%@+*@@@@%#*+=--::..:*@@@@@@@@@@#@@@@@@@@@@@+-:......::-=+#%%*=#@* - ..    .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.   @@@@@@@@@@@*=:.             .#@@@@@@@@*-%@@@@@@@+.               .=%@#@@-        :@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:  .@@@@@@@@#-                    *@@@@@@@*=%@@@@@@-                    -%@@@.       +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#   @@@@@@@#                       #@@@@@@*@@@@@@@:                      .%@@%      .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+  :%@%#@@:                       -@@@@@@%#@@@@@#                       :@@@@*    :%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#:  .+@@@:                       :@@@@@@@*@@@@@*                       *@@@@@.  =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*:+@@@@+                       =@@@@@@@@@@@@@%                      .%@@@@@=-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@.                      #@@@@@@=:#@@@@@-                     .@@@@@@*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@**@@@@%.                     =@@@@@@-   #@@@@%.                    :@@*%@#.#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-@@@@@%.                   :#@@@@@@:     +@@@@%.                   -@@ *@= -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=#@@@@@@:                .=#@@@@@@%.       -@@@@@=                  +@% =@+  +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=*@@@@%*@@-            .=#@@@@@@@@#          -@@@@@%+:              =@@= +@+   +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=*@@@@@% -#@%=:.    .-+#@@@@@@@@@@#            :@@@@@@@%*=-:....:-=#@@#- +@@-    +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@%:.:-++++*#%@@@@@@@@@@@@@#              -@@@@@@@@@@@@@@@@%%*=  :#@@#     :@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*@@@@@@@@@@%#*-*##@@@@@%%@@@@@@@%.               *@@@@@%*#*++===----:+%@@@%.     -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#%@@@@@@@@@@@-@@@@@@@%%@@@@@@@@@:                :@@@@@@@%%%%@@@@@@@#@@@@*.      #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@@@@%-=@@@@@@@@@@@@@@@@@%                 .@@@@*@@@@@@@@@@@@@@#%@+       +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@*%@@@@@@@@@@@@@@@@@@@.                :@@@=%@@@@@@@@@@@@@@%%@      :#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@+@@@%-      +*       *@@@-@@@@@@@@@@@@@@@%%#   =*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*%##=  :%@@@@@@@@@@%-@@@@@#=.  -@@:   :=%@@@@=%@@@@@@@@@%@+       .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*@@@@   #@%%@@@@@@@=+@@@@@@@@%%@@@@%%@@@@@@@@#=@@@@@@@%%@# ..     =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*%@@@-  =@@@%@@@@@# @##@@@@@@@@@@@@@@%@@@@@@@@-#@@%%@%@@%  @=     #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#@@@*  -@@@@%@@@@-#+ *@@@@@@@@@@@@@% :%@@@@@@*.@@+.%@@@. :@-    :@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*@@@@. .@@@@%@@@+== .#@##%%@@@@@@@@%   :=%@@@+::@@-#@@=  +@-    +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#@@@=  .#@%@@@@. :*##@+-=+*%@@#%@@@%-=**%@@@#*:-%:*@%   %@=    %@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*@@@%    #@%@@@%%@@@@%@@@@%@@@@#@@%@@@@@@@%%@@@*%=-@=  :@@=   -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#@@@+   .@@##*%@#%@@#@@+-@@@%%%@@@#@@@#@@%=@*@*@+#@:  -@@=   #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@:   %%%%@@@%@@@%@@#*@@@@%@@@@%@@@#%@@%%#@%@@%@.  +@@:  .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@%    +@%%@%#@@%@@@@@@@@@%@@@@@@@@@%@@@*%***#*#   *@%   :@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@*   +@%#*:=#*.#@@%@@@@@#@@@@%%@@#*@@%+%-*#*@*   #@*   :@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@####@@%#*@@+%@@#@@@#@@%@@@*@@@%@@*@#%@#@##@*-=@@-   :@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@%*##@*%@#%@@%@@%%@@%@@%@@@%@@@#@@#@#@#@@@@@@@.   -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@@@@@@@@@@@@@@@@@@@@%@%%@@%@@%@%%@@%@@%@@@@@@@@@@@@@@%    -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@%    *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.  =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
220-
220 ubuntu FTP server (GNU inetutils 1.9.4) ready.

USER ftp

331 Guest login ok, type your name as password.

PASS sommar2014

230 Guest login ok, access restrictions apply.

SYST

215 UNIX Type: L8 Version: Linux 5.15.0-83-generic

CWD dropbox

250 CWD command successful.

TYPE I

200 Type set to I.

PORT 10,0,0,10,160,249

200 PORT command successful.

STOR msg.txt

150 Opening BINARY mode data connection for 'msg.txt'.
226 Transfer complete.

QUIT

221 Goodbye.

Med displayfiltret tcp.stream eq 1 syns innehållet av msg.txt:

De är mig på spåren - jag går över till kamouflerad kommunikation. Vi hörs!
ZmxhZ2dhe2Z1bmN0aW9uYWxfdHJlc2hvbGRfcG93ZXJ9

Den sista raden är Base64-kodning av texten “flagga{functional_treshold_power}”.


ICMP
#

Efter FTP-kommunikationen, från kl 12:23 UTC, skickar 10.0.0.10 med korta och jämna mellanrum ICMP Echo Requests (pings) till 10.0.0.99. Samtliga av dessa har blivit avsiktligen manipulerade, vilket deras felaktiga kontrollsumma starkt pekar mot.

Felaktig kontrollsumma av ICMP-paket

En bokstav av ett meddelande har gömts i varje ping, i andra halvan av IP-pakethuvudets identifikationsfält. Om man extraherar samtliga av dessa syns hela meddelandet som här exfiltrerades (Vaktbyte kl 7, 15 och 23 dagligen. flagga{exf1l_by_p1ng}):

$ tshark -r exfiltratoren.pcap \
  -Y "icmp.type eq 8" -T fields -e ip.id \
  | awk -F: '{printf "%s", substr($0,5,2)}' \
  | xxd -r -p
Vaktbyte kl 7, 15 och 23 dagligen. flagga{exf1l_by_p1ng}

SMTP
#

Kl 12:46 UTC skickades ett e-mail över SMTP (port 25) från 10.0.0.10 till 10.0.0.20. Detta kan extraheras med tshark:

$ tshark -r exfiltratoren.pcap -Y "smtp" --export-objects "imf,."

Mailet (sha256: 3ef831a0b4a4330223a4323b5bdd99a37e1da19b0a9ce36e64263ff4905d054a), som skickades från mailadressen REDACTED@yta0x33.na till REDACTED@REDACTED.na med ämnesraden “tack + lite info”, innehåller två bifogade filer:

Filnamnsha256
presentkort.pdfe75f80e4ba60639d3b25acbcbd8873f19318d42843c311d7ca0c8bfcd551fc3a
bg.pngd9f202c9909dfbca6c917b0e7f98214fef0bb02e2d3efb1d501077ec68592adf

presentkort.pdf visar en QR-kod som till synes har med ett presentkort att göra.

Innehållet av bifogat presentkort.pdf

I själva verket lagrar QR-koden en Base45-kodad bild (sha256: b76158eafbd6993434c26ffe023346f22749dda8119f0f77d82648604d256957). Detta python-script kan användas för att utvinna bilden:

Bild inbäddad i presentkortets QR-kod

Det går att utläsa texten “Portkod: 1632. flagga{qrazy_basy}”, som även ligger som ‘Caption’ i filens metadata:

$ exiftool qr_decoded.png
ExifTool Version Number         : 12.76
File Name                       : qr_decoded.png
Directory                       : .
File Size                       : 571 bytes
File Modification Date/Time     : 2026:03:26 22:42:21+01:00
File Access Date/Time           : 2026:03:26 22:42:20+01:00
File Inode Change Date/Time     : 2026:03:26 22:42:21+01:00
File Permissions                : -rwxrwx---
File Type                       : PNG
File Type Extension             : png
MIME Type                       : image/png
Image Width                     : 106
Image Height                    : 26
Bit Depth                       : 1
Color Type                      : Grayscale
Compression                     : Deflate/Inflate
Filter                          : Adaptive
Interlace                       : Noninterlaced
Gamma                           : 2.2
White Point X                   : 0.3127
White Point Y                   : 0.329
Red X                           : 0.64
Red Y                           : 0.33
Green X                         : 0.3
Green Y                         : 0.6
Blue X                          : 0.15
Blue Y                          : 0.06
Background Color                : 1
Modify Date                     : 2024:11:12 09:55:37
Warning                         : [minor] Text/EXIF chunk(s) found after PNG IDAT (may be ignored by some readers)
Caption                         : Portkod: 1632. flagga{qrazy_basy}
Captionpointsize                : 11
Datecreate                      : 2024-11-12T09:55:37+01:00
Datemodify                      : 2024-11-12T09:55:37+01:00
Image Size                      : 106x26
Megapixels                      : 0.003

bg.png tycks vid första anblick inte erbjuda så mycket:

bg.png

Med stegsolves “Random color map” visas en obfuskerad karta över anläggningen, innehållande bland annat texten flagga{blueprinting_exfil}.

Obfuskerad karta i bg.png

UDP
#

Kl 14:21 UTC upprättades en UDP-anslutning mellan 10.0.0.10 och 10.0.0.40. De utbytte information enligt nedan.

10.0.0.10 meddelar 10.0.0.40 om att en fil är redo att överföras, nämligen top_secret.png (sha256: c72ca298d87dc6eb181aa6e4f5a7b61a9143bea27e2af0e96467385f92b71035):

{
  "send": {
    "size": 2662470,
    "md5": "4fccf21ce07bdce70e1030081b9ae705",
    "fn": "top_secret.png"
  }
}

10.0.0.40 accepterar och svarar med bland annat en krypteringsnyckel:

{
  "transfer": {
    "id": 3752494453,
    "key": "425c7548030e56735ef1c01c9182ec1f",
    "port": 31337
  }
}

10.0.0.10 skickar sedan en mängd datapaket över UDP med json-data:

{"chunk":
  {
    "id":3752494453,
    "ix":1523422,
    "data":"...",
    "md5":"71a772040303aa980d0a2fdd14a7952b"
  }
}
{"chunk":
  {
    "id":3752494453,
    "ix":16107,
    "data":"...",
    "md5":"83a1683db7a1ca526ac5b76e6379ff25"
  }
}
...

För varje paket som 10.0.0.40 tar emot skickas ett ACK tillbaks som svar:

{"chunk":
  {
    "id":3752494453,
    "ix":1523422,
    "chk":true
  }
}
{"chunk":
  {
    "id":3752494453,
    "ix":16107,
    "chk":true
  }
}
...

Datastyckena (de som 10.0.0.40 noterade att kontrollsumman stämde för) kan fås sorterade och sammansatta med exempelvis detta python-script. Den höga entropin i filen, vilken kan ses med binwalk -E, tyder på att den innehåller antingen komprimerad eller krypterad data.

Entropi av exfiltrerad data

I informationsutbytetet ovan fanns en krypteringsnyckel som kan användas för att avkryptera datan med RC4-dekrypteringsalgoritmen.

$ openssl enc -rc4 -d \
  -K 425c7548030e56735ef1c01c9182ec1f \
  -in top_secret_encrypted \
  -out top_secret.png

$ file top_secret.png
top_secret.png: PNG image data, 1024 x 1024, 16-bit/color RGBA, non-interlaced

$ md5sum top_secret.png
4fccf21ce07bdce70e1030081b9ae705  top_secret.png

Vi verifierar att kontrollsumman av den avkrypterade filen stämmer överensstämmer med det 10.0.0.10 skickade till 10.0.0.40.

I bildens metadata finns en Base64-kodad sträng som avkodas till “Häpnadsväckande verksamhet - tredje graden! flagga{play_the_5_tones}”.

$ exiftool top_secret.png
ExifTool Version Number         : 12.76
File Name                       : top_secret.png
Directory                       : .
File Size                       : 2.7 MB
File Modification Date/Time     : 2026:03:27 15:37:43+01:00
File Access Date/Time           : 2026:03:27 15:37:42+01:00
File Inode Change Date/Time     : 2026:03:27 15:37:43+01:00
File Permissions                : -rwxrwx---
File Type                       : PNG
File Type Extension             : png
MIME Type                       : image/png
Image Width                     : 1024
Image Height                    : 1024
Bit Depth                       : 16
Color Type                      : RGB with Alpha
Compression                     : Deflate/Inflate
Filter                          : Adaptive
Interlace                       : Noninterlaced
Warning                         : [minor] Text/EXIF chunk(s) found after PNG IDAT (may be ignored by some readers)
Exif Byte Order                 : Big-endian (Motorola, MM)
X Resolution                    : 72
Y Resolution                    : 72
Resolution Unit                 : inches
Y Cb Cr Positioning             : Centered
Exif Version                    : 0231
Components Configuration        : Y, Cb, Cr, -
User Comment                    : SMOkcG5hZHN2w6Rja2FuZGUgdmVya3NhbWhldCAtIHRyZWRqZSBncmFkZW4hIGZsYWdnYXtwbGF5X3RoZV81X3RvbmVzfQ==
Flashpix Version                : 0100
Color Space                     : Uncalibrated
Image Size                      : 1024x1024
Megapixels                      : 1.0

$ echo "SMOkcG5hZHN2w6Rja2FuZGUgdmVya3NhbWhldCAtIHRyZWRqZSBncmFkZW4hIGZsYWdnYXtwbGF5X3RoZV81X3RvbmVzfQ==" \
  | base64 -d
Häpnadsväckande verksamhet - tredje graden! flagga{play_the_5_tones}

Bilden ser ut att vara uppdelad i 128x128 stycken rutor, vardera 8x8 pixlar stor. Dessa rutor tycks ha blandats så att ursprungsbilden inte enkelt kan återfås.

top_secret.png:

top_secret.png

Med Aperi’Solves “Alpha Decomposer” kan man se att rutornas alfa-kanal (genomskinlighet) har olika värden.

Olika alpha-värden i top_secret.png

Det visar sig finnas exakt 256 stycken rutor med alfa-värde 255, lika många med alfa-värde 254, lika många med alfa-värde 253, o.s.v. ned till värde 192. Sorterar man rutorna i bilden utifrån deras alfa-värde framkommer lite mer struktur i innehållet:

Sortering av brickor i top_secret.png utifrån alfa-värde

Framförallt tycks brickorna med alfa-värde i spannet 196-198 innehålla någon form av text:

Brickor i top_secret.png med alpha-värden 0xc4-0xc6

Genom att lägga pussel kan texten “flagga{they're_eating_the_dogs}” finnas.

Flagga gömd i top_secret.png

Ytterliggare struktur i top_secret.png kan fås med exempelvis en problemanpassad girig sorteringsalgoritm. Algoritmen försöker lösa två rader (ett “band” av 2x128 rutor) av den alfa-värdessorterade bilden i taget. Utifrån hur flaggans rutor var placerade så tycks samtliga rutor då ha legat i samma band av orginalbilden. Detta minskar sökrymden avsevärt, från (128*128)! (varje ruta har 128*128 alternativa platser) till 64*256! rutarrangemang (varje ruta har 256 alternativa platser).

Sökrymden är givetvis fortfarande alldeles för stor för att testa alla rutarrangemang, därav den giriga algoritmen. Varje band löses genom att girigt konstruera 128 troliga kolumner (staplar av 2x1 rutor) som girigt organiseras i en trolig ordning.

top_secret.png efter girig sorteringsalgoritm
Resultatet är betydligt bättre, men bristerna i att lösa varje band oberoende av varandra syns tydligt.