# Step-By-Step Malware Trafic Analysis : Download from fake software site

Immersion dans un cas concret : l’analyse d’un trafic suspect au cœur d’une infrastructure d’entreprise.

Lien de l’exercice : [https://www.malware-traffic-analysis.net/2025/01/22/](https://www.malware-traffic-analysis.net/2025/01/22/)

---

# Contexte

## Scénario

> * LAN segment range:  `10.1.17[.]0/24   (10.1.17[.]0 through 10.1.17[.]255)`
>     
> * Domain:  `bluemoontuesday[.]com`
>     
> * Active Directory (AD) domain controller:  `10.1.17[.]2 - WIN-GSH54QLW48D`
>     
> * AD environment name:  `BLUEMOONTUESDAY`
>     
> * LAN segment gateway:  `10.1.17[.]1`
>     
> * LAN segment broadcast address:  `10.1.17[.]255`
>     

## Questions

> * What is the IP address of the infected Windows client?
>     
> * What is the mac address of the infected Windows client?
>     
> * What is the host name of the infected Windows client?
>     
> * What is the user account name from the infected Windows client?
>     
> * What is the likely domain name for the fake Google Authenticator page?
>     
> * What are the IP addresses used for C2 servers for this infection?
>     

---

# Analyse

Nous avons donc à disposition un fichier → `2025-01-22-traffic-analysis-exercise.pcap` .

Dans un premier temps, j’ai choisi de me concentrer sur l’analyse des flux HTTP et DNS. Je reviendrai ensuite sur une vision plus globale afin de répondre aux différentes questions posées dans l’énoncé.

### Analyse HTTP & DNS

En appliquant dans Wireshark le filtre `http || dns`, j’ai rapidement remarqué plusieurs FQDN suspects :

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757334212851/8bc9da43-8fca-4aeb-83c0-e8c6811d13ff.png align="center")

* authenticatoor\[.\]org ([https://www.virustotal.com/gui/domain/authenticatoor.org](https://www.virustotal.com/gui/domain/authenticatoor.org))
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757334340997/be583738-c583-4747-b665-cfb87d93916c.png align="center")

* appointedtimeagriculture\[.\]com ([https://www.virustotal.com/gui/domain/appointedtimeagriculture.com](https://www.virustotal.com/gui/domain/appointedtimeagriculture.com))
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757334368899/57c93447-c165-4c0e-b65f-2d591e0b44c1.png align="center")

* google-authenticator\[.\]burleson-appliance\[.\]net ([https://www.virustotal.com/gui/domain/google-authenticator.burleson-appliance.net](https://www.virustotal.com/gui/domain/google-authenticator.burleson-appliance.net))
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757334406688/ec58b825-b711-4624-8005-eb7f14e187e6.png align="center")

Ces domaines, résolus par le DNS, semblent tous liés à des activités malveillantes.

J’ai également constaté que l’ensemble de ces requêtes provenaient de l’adresse IP 10.1.17.215, ce qui laisse penser qu’il s’agit de la machine compromise.

En poursuivant l’analyse, juste après ces résolutions DNS, on observe le comportement suivant :

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757334552200/06d35800-2cb2-42d7-91e1-44d68a8ef02e.png align="center")

En suivant le flux HTTP de la première requête, j’ai identifié la présence d’un script VBScript :

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757334629716/6bdb7a5b-c37c-45ea-bdbc-5abbddb17a23.png align="center")

L’examen de ce script révèle plusieurs actions :

* Lancement de PowerShell dans une fenêtre minimisée (`/min`), rendant l’exécution invisible pour l’utilisateur.
    
* `-NoProfile` : empêche le chargement du profil utilisateur PowerShell.
    
* `-WindowStyle Hidden` : masque la fenêtre pour plus de discrétion.
    
* `start-process 'https://azure.microsoft.com'` : ouvre une page légitime (Azure) afin de détourner l’attention.
    
* `new-object` [`System.Net`](http://System.Net)`.WebClient` : crée un client HTTP pour télécharger des fichiers.
    
* `DownloadString('http://.../29842.ps1')` : récupère un script PowerShell externe.
    
* `iex` (Invoke-Expression) : exécute immédiatement en mémoire le contenu téléchargé.
    

Même sans analyser le code du script PowerShell, ce comportement est déjà hautement suspect : il correspond typiquement à celui d’un dropper chargé de récupérer et exécuter un malware en mémoire.

Pour confirmer, j’ai donc suivi le fil en étudiant le fichier 29842.ps1, effectivement téléchargé comme l’indiquent les traces HTTP.

#### Analyse de 29842.ps1

Pour récupérer le script depuis Wireshark :

`Fichier → Exporter Objets → HTTP`

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757334974972/2330ccdd-83a9-4d12-978e-72ba138310d6.png align="center")

Puis chercher le nom du fichier et l’enregistrer :

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757335084115/d983c9c7-1b9b-48a0-be01-b9748910a85f.png align="center")

En ouvrant le fichier avec Notepad, le script PowerShell apparaît faiblement obfusqué :

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757335259630/65297630-ee5d-4ed1-86df-0e00e5d26391.png align="center")

Après quelques nettoyages et décodages via CyberChef, j’ai pu obtenir un script lisible pour l’analyse.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757335326435/10898dd0-0a85-41df-845e-3eb194147773.png align="center")

Il ne reste plus qu'à décoder le Base64 :

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757335434348/a5c38b64-ec5b-405f-b6ab-66411d6ddd29.png align="center")

`$SerialNumber`

* Le script utilise `FileSystemObject` pour récupérer le numéro de série du disque C:.
    
* Il convertit ce numéro en format hexadécimal, puis en entier (`int64`).
    
* Résultat : il obtient un identifiant unique de la machine (lié au disque dur).
    

`C2`

* L’adresse IP `5.252.153.241` est utilisée comme serveur de commande et contrôle (C2).
    
* L’URL devient : `5.252.153.241/[UniqueID]`
    

`While True`

* Le script tourne en boucle.
    
* Il tente de télécharger du code depuis l’URL unique à la machine.
    
* Si le téléchargement échoue, il attend 5 secondes et réessaie.
    
* Si ça marche, il exécute directement ce qu’il reçoit avec `Invoke-Expression`
    

Résumons ce que l’on a pour l’instant :

* Le script initial agit comme un dropper, téléchargeant un premier payload.
    
* Le payload n°1 connecte la machine infectée au serveur C2 et attend des instructions.
    
* Dans le PCAP, on observe que la machine `10.1.17.215` effectue un polling toutes les 5 secondes vers l’adresse `5.252.153.241`.
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757337581761/5bb0a2d6-f418-4f42-a5da-859ee4db6be1.png align="center")

* La machine `10.1.17.215` est infecté
    
* L’adresse `5.252.153.241` est le serveur de commande et contrôle de l’attaquant
    

#### Première Instruction du C2

Pour suivre les actions du serveur C2, j’ai filtré le trafic avec l’adresse IP `5.252.153.241` :

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757337679239/439cabe4-d1fa-4e03-8b0d-4b7433ad5505.png align="center")

Après de nombreuses requêtes aboutissant à des 404, j’ai identifié une première instruction : la machine infectée télécharge quatre nouveaux fichiers depuis l’API du serveur C2 :

* `TeamViewer`
    
* `Teamviewer_Resource_fr`
    
* `TV`
    
* `pas.ps1`
    

En analysant ces fichiers :

* Les deux premiers semblent être des composants légitimes de TeamViewer :
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757337784543/76638f45-58bf-44be-8cde-55496819d60f.png align="center")

* [https://www.virustotal.com/gui/file/904280f20d697d876ab90a1b74c0f22a83b859e8b0519cb411fda26f1642f53e](https://www.virustotal.com/gui/file/904280f20d697d876ab90a1b74c0f22a83b859e8b0519cb411fda26f1642f53e)
    
* [https://www.virustotal.com/gui/file/9634ecaf469149379bba80a745f53d823948c41ce4e347860701cbdff6935192/](https://www.virustotal.com/gui/file/9634ecaf469149379bba80a745f53d823948c41ce4e347860701cbdff6935192/)
    

Le fichier `TV`, en revanche, est identifié comme une DLL malveillante, probablement injectée lorsque TeamViewer est lancé :

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757337836953/89cb7112-5a1e-4fa5-a8c5-a1d4d476443a.png align="center")

* [https://bazaar.abuse.ch/sample/3448da03808f24568e6181011f8521c0713ea6160efd05bff20c43b091ff59f7/](https://bazaar.abuse.ch/sample/3448da03808f24568e6181011f8521c0713ea6160efd05bff20c43b091ff59f7/)
    

À noter, cette DLL est signée par TeamViewer :

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757337954253/69dafc53-1118-4961-ab97-788edbb55808.png align="center")

Si on regarde les deux autres fichiers, on peut voir que le certificat est différent et semble être plus légitime que le précédent :

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757337996301/ead49e6c-285f-441b-91c4-297a729b505c.png align="center")

Enfin, le script `pas.ps1` suit le même schéma que le premier script `29842.ps1` :

* Même obfuscation
    
* Base64 décodé → script identique à `29842.ps1`
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757338175129/8d293ca7-6da5-4c8e-9d3a-17f4b7bc5086.png align="center")

Cela confirme que le serveur C2 réutilise le mécanisme de dropper initial pour maintenir la persistance et télécharger du code supplémentaire.

#### Deuxième Instruction du C2

En continuant d’analyse les requêtes HTTP allant et venant vers le serveur C2, on peut voir qu’il y a eu un nouveau téléchargement de code :

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757338335891/e0b1afba-7fdf-4a07-bace-f452ec14c913.png align="center")

Un petit coup de cyberchef, et on obtient un nouveau script :

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757338395870/b4b4419a-06a4-4bee-8546-c857e0d8d253.png align="center")

Une deuxième requête suit un modèle quasi identique, seule la partie payload encodée en Base64 diffère :

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757338457167/ebbfce06-f8a7-4efb-b755-e6d228ee7b08.png align="center")

Encore une fois le script ressemble à un Dropper,

* **Fonction de logging** (`Send-Log`) :  
    Envoie des informations (statut ou messages d’erreur) vers une URL distante, en construisant une requête HTTP via `WebClient.DownloadString()`.
    
* **Préparation d’un répertoire** :  
    Crée un dossier `C:/ProgramData/jsLeow` s’il n’existe pas.
    
* **Déploiement d’un payload** :  
    Décode un contenu encodé en Base64, l’écrit dans un fichier PowerShell (`skqllz.ps1`) dans ce répertoire.
    
* **Choix du bon exécutable PowerShell** :  
    Détermine si l’OS est 32 ou 64 bits, et sélectionne la version adaptée de `powershell.exe`.
    
* **Exécution du script malveillant** :  
    Lance le script PowerShell décodé (`skqllz.ps1`) avec `-ExecutionPolicy Bypass` et en mode caché (`-w hidden`).
    
* **Envoi de rapport** :  
    Informe le serveur distant du succès ou de l’échec de l’opération.
    

Le rapport est d’ailleurs bien envoyé vers le serveur C2 ce qui prouve que le script a bien fonctionné :

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757338775631/4e76923b-08e2-401d-bf11-d81dc5dc77d5.png align="center")

Le contenu du payload, une fois décodé, révèle un **fichier plus sophistiqué et fortement obfusqué**.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757338713241/e270f638-7aeb-4084-b168-5e7af4d645e3.png align="center")

En passant le fichier sur VirusTotal on peut confirmer que c’est bien un fichier malveillant :

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757338830788/19a783e1-7e48-421a-be04-adcf4588be47.png align="center")

* [https://www.virustotal.com/gui/file/0e7f388dd20ca9a1597e9f4fcc1f30af24ad5dc9b6c2b1e89aa3c7d17f76ceed](https://www.virustotal.com/gui/file/0e7f388dd20ca9a1597e9f4fcc1f30af24ad5dc9b6c2b1e89aa3c7d17f76ceed)
    

# Réponses aux questions

Reprenons les questions :

* What is the IP address of the infected Windows client? `10.1.17.215`
    
* What is the mac address of the infected Windows client? `00:d0:b7:26:4a:74`
    
    * Cette information peut être retrouvée via une requête ARP émise par l’hôte :
        

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757339088590/186a383c-d0fe-4f63-99fa-30e83b9cd24f.png align="center")

* What is the host name of the infected Windows client? `DESKTOP-L8C5GSJ`
    
    * Le nom d’hôte est visible dans certaines requêtes réseau :
        

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757339241073/8b7ebb9f-4732-4a7b-baeb-a0f9520273e3.png align="center")

* What is the user account name from the infected Windows client? `shutchenson`
    
    * Cette information est récupérable dans les requêtes Kerberos :
        

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757339346147/aa500e30-6885-4c5d-825d-b587d2001e4f.png align="center")

* What is the likely domain name for the fake Google Authenticator page? `authenticatoor[.]org`
    
* What are the IP addresses used for C2 servers for this infection?
    

L’analyse a permis d’identifier plusieurs adresses :

`5.252.153.241`

* Cette IP a été suivie depuis le début de l’analyse et correspond au premier serveur C2.
    

`45.125.66.32` et `45.125.66.252`

* La première adresse IP est visible dans le rapport VirusTotal du dernier payload trouvé.
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757339462015/e4b588d5-bcaa-4599-8bba-aedc84e4480d.png align="center")

* Si on cherche cette IP dans la capture réseau :
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757339497597/6b850574-4f8a-4e78-9b7e-7ca5b257cf89.png align="center")

* On voit qu’il y a bien eu des communications entre l’hôte infecté et le serveur derrière l’adresse IP `45.125.66.32` . On voit aussi l’adresse IP `45.125.66.252` qui correspond au même pool d’adresse IP :
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1757339553927/bf72b941-1053-4331-975b-4526840594b6.png align="center")

L’adresse `45.125.66.252` est aussi flaggé comme malveillante sur VirusTotal ([https://www.virustotal.com/gui/ip-address/45.125.66.252](https://www.virustotal.com/gui/ip-address/45.125.66.252)). J’ajoute donc ces deux serveurs à notre liste de serveur C2.
