Magnet Weekly CTF Challenge Week 10 Writeup

There were 5 parts in the week 10 challenge of the ongoing Magnet Weekly CTF. I managed to solve 4 parts out of 5 and the following would cover my walkthrough for this challenges:
Notice the wording "established connection" was used in the challenge description. Therefore, the term "ESTABLISHED" was searched inside the the Volatility netscan plugin output:
There were 4 known established connections at the time of RAM collection. According to whois output, the 1st IP address (151.101.116.106) belongs to fastly. However, the 2nd IP address (172.253.63.188) belongs to Google. Thus, the answer should be 172.253.63.188:443.

Part 2 of the question immediately asked for the local IP address and the port number. From the Part 1 netscan screenshot, the answer should be 192.168.10.146:54282.
The browsed URL should be lurking somewhere inside the Chrome History SQLite database, which could be dumped with the following Volatility command:
python vol.py -f ../memdump.mem --profile=Win7SP1x64 dumpfiles -Q 0x000000013e9ccb30 --dump-dir Chrome/
The Chrome History file physical offset could be found from Volatility filescan plugin output:
The last visited URL, which was "https://www.google.com", is the answer for this part of the challenge:

As discussed in week 9 write-up, Warren should be the only active user on the system. 

Part 5 was the real pain of this week and I did squander the time on some of the following:
  • submitting the visit_duration value (437292) of "https://www.google.com" as the answer
  • finding when the Google Chrome was last updated and calculate the time difference
  • searching "Volatility" and "focus" on Google and found tons of stock-related material instead (which was clearly not related to the 5-point "FOCUS" hint)
At the end, it was about the "Time Focused" field from Volatility UserAssist plugin output and 3:36:47.30100 was the intended answer.

For the uninitiated, the following text excerpted from this Opentext page illustrated how the "Time Focused" mechanism works:

"In addition to this, two additional variables are stored. These are a focus-counter and a focus-timer. The significance of the remaining bytes is unknown.

When an application is executed the run-counter is incremented by one. The system then tracks the time that the application has the focus. If the application is closed or looses focus then the focus-timer, which appears to be stored in milliseconds, will be incremented by the time tracked by the system.

Every time the application is out of focus but then receives the focus, the focus-counter is increased by one and the system starts tracking the focus time again. Note that the focus-counter is not incremented at the time the application is started, only when it has lost the focus and re-gains it."

Lessons Learnt

  • Leave no stones unturned. The answer that you have been desperately looking for might very well just beneath that unturned stone.
  • KNOW YOUR ARTIFACTS! KNOW YOUR TOOLS!

Comments

Popular posts from this blog

An Android Casting (Device) Story: "cast.db"

Magnet Weekly CTF Challenge Week 5 Writeup a.k.a. Fun with Hadoop

Magnet Weekly CTF Challenge Week 12 Writeup - Last But Not Least