Day 18 – Linux Forensics Cryptominer – Advent of Cyber 2023 – TryHackMe Challenge

Day 18 in the Advent of Cyber 2023. McGreedy is very greedy and doesn't let go of any chance to earn some extra elf bucks. During the investigation of an insider threat, the Blue Team found a production server that was using unexpectedly high resources. It might be a cryptominer. They narrowed it down to a single unapproved suspicious process. It has to be eliminated to ensure that company resources are not misused. For this, they must find all the nooks and crannies where the process might have embedded itself and remove it.

WARNING: Spoilers and challenge-answers are provided in the following writeup.
Official walk-through video is as well available at Youtube - Alh4zr3d.

Day 18 - A Gift That Keeps on Giving

When performing Incident Response, one of the important steps in the process is to eradicate any verified pieces of malware, backdoors and so on. On Linux there can be multiple ways to automatically start processes, and it's important to scrutinize each and every one to make sure that the threat is fully eradicated.

The Challenge

In today's challenge we're given access to a Ubuntu Linux machine that have a cryptominer installed. We are firstly asked to name the service that respawns the process each time it's killed. By using the command htop we can quickly see the process that consumes a lot of the CPU in the machine.

htop

To make sure that unkillable proc is indeed the process we're looking at, we can kill it with the command sudo kill <PID> noting that it has the PID of 676. Running htop again, we can see that it has respawned with a new PID.

htop new process spawned

So, we need to figure out where it respawnes from. In Linux there are two common ways of doing so - crontab and systemd. A quick look on sudo ctontab -l -u root as we in htop can see that it is root running the process and using -l to list, we cannot see anything configured. Taking a look in /etc/crontab we also not see anything suspicious, and going through the content of /etc/cron.d/ doesn't reveal any suspicious content either. We saw the process being respawned almost at the same time as we killed it, so looking at the content of /etc/cron.daily, /etc/cron.hourly, /etc/cron.monthly, and /etc/cron.weekly would most likely not reveal anything for us.

Next, taking a look at systemd via the command systemctl list-unit-files and grepping for enabled unit-files, we can see a service called a-unkillable.service that seems very suspicious and not part of a normal system. And with that, we've found the answer to the first question.

systemd unit files

We are then asked for the path where the process and service is running. We can issue the command systemctl status a-unkillable.service to get information about the systemd service including the path.

Service path

For good measure we can eradicate the cryptominer by firstly stopping the service, then disable it so it will not start again after e.g. a reboot, and removing the service-file and command and finally reloading the systemd to update its library of unit files.

ubuntu@tryhackme:~$ sudo systemctl stop a-unkillable.service
ubuntu@tryhackme:~$ sudo systemctl disable a-unkillable.service
Removed /etc/systemd/system/multi-user.target.wants/a-unkillable.service.
ubuntu@tryhackme:~$ sudo rm -rf /etc/systemd/system/a
ubuntu@tryhackme:~$ sudo rm -rf /etc/systemd/system/a-unkillable.service
ubuntu@tryhackme:~$ sudo systemctl daemon-reload

Leave a Reply

Your email address will not be published. Required fields are marked *