KringleCon3 2020 Objective Three Writeup: Point-of-Sale Password Recovery
KringleCon3 Overview
KringleCon is the annual Holiday Hacking Challenge put on by the SANS Institute. Players are presented with a variety of security themed objectives and CLI challenges which provide valuable hints. In addition, the KringleCon YouTube Channel provides additional training, helpful for solving obstacles within the game, as well as practical security advice outside the game.
When KringleCon is over, players publish writeups. Each player tackles the objectives in their own unique way. These writeups help us gain insight into the minds of each individual player.
Objective Overview
Help Sugarplum Mary in the Courtyard find the supervisor password for the point-of-sale terminal. What’s the password?
We need to download a file to complete this challenge:
Elf Hints
Shinny says this might be an Electron application.
I hear there’s a way to extract an ASAR file from the binary, but I haven’t looked into it yet.
Objective Detailed Writeup
Initial Findings
I copied the file to a Linux server for inspection:
jemurray@shell:~/santa-shop$ file santa-shop.exe
santa-shop.exe: PE32 executable (GUI) Intel 80386, for MS Windows, Nullsoft Installer self-extracting archive
Assumptions After Initial Observations
- The file is a self-extracting archive, there must be more files within the
.exe
to examine - Based on the hint this is an electron application and ASAR file
- The password is probably in clear text somewhere
- May have to use
strings
to look though binary files unzip
will open the file
Solving
Tried unsuccessfully to use unzip
to decompress the file:
jemurray@shell:~/santa-shop$ unzip santa-shop.exe
Archive: santa-shop.exe
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
unzip: cannot find zipfile directory in one of santa-shop.exe or
santa-shop.exe.zip, and cannot find santa-shop.exe.ZIP, period.
After a few Google searches, Nullsoft Installer self-extracting archive
are 7-Zip
archives. This software is not install on Ubuntu by default. Install with:
sudo apt install p7zip-full
Extracting the file with 7z
:
jemurray@shell:~$ 7z e santa-shop.exe
7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,1 CPU Intel(R) Xeon(R) Gold 6248 CPU @ 2.50GHz (50657),ASM,AES-NI)
Scanning the drive for archives:
1 file, 49824644 bytes (48 MiB)
## Extracting archive: santa-shop.exe
Path = santa-shop.exe
Type = Nsis
Physical Size = 49824644
Method = Deflate
Solid = -
Headers Size = 102546
Embedded Stub Size = 57856
SubType = NSIS-3 Unicode BadCmd=11
Everything is Ok
Files: 9
Size: 50033887
Compressed: 49824644
That worked, there are more files to investigate:
jemurray@shell:~/santa-shop$ ls -al
total 97544
drwxr-xr-x 3 jemurray jemurray 4096 Dec 20 19:51 .
drwxr-xr-x 27 jemurray jemurray 4096 Dec 13 13:37 ..
-rw-r--r-- 1 jemurray jemurray 49323645 Dec 4 17:47 app-64.7z
-rw-r--r-- 1 jemurray jemurray 6656 Dec 13 13:22 nsExec.dll
-rw-r--r-- 1 jemurray jemurray 434176 Dec 13 13:22 nsis7z.dll
-rw-r--r-- 1 jemurray jemurray 4608 Dec 13 13:22 nsProcess.dll
-rw-r--r-- 1 jemurray jemurray 49824644 Dec 13 13:22 santa-shop.zip
-rw-r--r-- 1 jemurray jemurray 9216 Dec 13 13:22 SpiderBanner.dll
-rw-r--r-- 1 jemurray jemurray 102400 Dec 13 13:22 StdUtils.dll
-rw-r--r-- 1 jemurray jemurray 12288 Dec 13 13:22 System.dll
-rw-r--r-- 1 jemurray jemurray 137826 Dec 4 17:47 'Uninstall santa-shop.exe'
-rw-r--r-- 1 jemurray jemurray 3072 Dec 13 13:22 WinShell.dll
Inside this archive is another 7z
file to extract. Based on the name of the file app-64.7z
this is probably the application we need to evaluate:
# Create a directory first
mkdir app
# Copy the file to this new directory
cp app-64.7z app
# Enter the dir
cd app
# Uncompress the files
7z e app-64.7z app
One of the hints talked about asar
files. There is one in the newly extracted directory:
jemurray@shell:~/santa-shop/app$ ls -al *asar*
-rw-r--r-- 1 jemurray jemurray 136143 Dec 13 13:38 app.asar
What type of file is this:
jemurray@shell:~/santa-shop/app$ file app.asar
app.asar: data
Does it have any strings that look like a password? It does:
jemurray@shell:~/santa-shop/app$ grep -i pass app.asar
Binary file app.asar matches
Use strings
to look into binary files. Found the password:
jemurray@shell:~/santa-shop/app$ strings app.asar | grep -i pass
Remember, if you need to change Santa's passwords, it's at the top of main.js!
const SANTA_PASSWORD = 'santapass';
Answer
The password is: santapass