Réseau et accès distant
Journaux du serveur web IIS
Fiche journaux IIS : emplacement des logs W3C par site, horodatage UTC, champs par défaut, HTTPERR, applicationHost.config et chasse aux webshells sur Windows.
- Emplacement
- C:\inetpub\logs\LogFiles\W3SVC<siteID>\u_exYYMMDD.log
- Prouve
- Quelle IP cliente a demandé quelle URL, avec méthode, code de statut et user agent, pour chaque site IIS
- Horodatages
- Colonnes date et time en UTC par défaut (format W3C), un fichier par jour
- Rétention
- Rotation quotidienne par défaut ; IIS ne supprime jamais les anciens journaux, l'historique n'est limité que par le disque et le ménage des administrateurs
- Accès
- Administrateur ; le fichier du jour est ouvert par IIS et les entrées sont mises en tampon avant écriture
- Type
- Fichier / système de fichiers
- Windows
- XPVista / 78 / 8.11011
- Cible KAPE
- IISLogFiles
- Velociraptor
- Windows.Triage.Targets:IISLogFiles
Outils
Comparer tous les outilsPrésentation
Internet Information Services (IIS) est le serveur web de Microsoft derrière de nombreux serveurs Windows exposés : applications intranet, SharePoint et Exchange (OWA, ECP, EWS, Autodiscover). Par défaut, il écrit un journal texte W3C par site et par jour. Sur un serveur web compromis, ces journaux sont souvent la seule trace de l'exploitation initiale et des requêtes qui ont piloté un webshell.
Emplacement
| Version | Chemin par défaut | Remarques |
|---|---|---|
| IIS 5.1 / 6 (XP, Server 2003) | %SystemRoot%\System32\LogFiles\W3SVC<siteID>\exYYMMDD.log | |
| IIS 7 et suivants (Vista et suivants) | %SystemDrive%\inetpub\logs\LogFiles\W3SVC<siteID>\u_exYYMMDD.log | u_ signifie UTF-8 |
| Erreurs HTTP.sys | %SystemRoot%\System32\LogFiles\HTTPERR\httperr*.log | Requêtes rejetées avant IIS (requêtes invalides, timeouts, 503) |
| Configuration du serveur | %SystemRoot%\System32\inetsrv\config\applicationHost.config | Sites, liaisons, chemins physiques, réglages de journalisation |
| Configuration du site | web.config dans chaque racine web | Handlers, modules, authentification |
<siteID> correspond à un site déclaré dans applicationHost.config (Default Web Site vaut 1). Les administrateurs déplacent souvent les journaux sur un autre disque : lisez toujours d'abord l'attribut logFile directory.
Ce que l'artefact prouve
- Une IP cliente a envoyé une requête HTTP précise (méthode, chemin, query string) à un moment donné, et ce que le serveur a répondu (statut, sous-statut, statut Win32, durée).
- Des requêtes répétées vers un même fichier
.aspxdepuis peu d'IP, typiquement enPOST, évoquent l'utilisation d'un webshell.
Il ne consigne pas par défaut le corps des requêtes ou des réponses, les paramètres POST ni les cookies. Derrière un répartiteur de charge ou un reverse proxy, c-ip est celle du proxy ; le vrai client n'apparaît que si un champ personnalisé X-Forwarded-For a été configuré. Une réponse 200 ne prouve pas que la commande de l'attaquant a réussi.
Champs clés
| Champ | Signification | Par défaut |
|---|---|---|
date, time | Heure de la requête (écrite à la fin de la réponse ; soustrayez time-taken pour les requêtes longues) | Oui |
s-ip, s-port | IP et port du serveur | Oui |
cs-method | GET, POST, etc. | Oui |
cs-uri-stem, cs-uri-query | Chemin et query string | Oui |
cs-username | Utilisateur authentifié (- si anonyme) | Oui |
c-ip | IP du client | Oui |
cs(User-Agent), cs(Referer) | En-têtes du client | Oui |
sc-status, sc-substatus, sc-win32-status | Statut de la réponse | Oui |
time-taken | Millisecondes | Oui |
cs-host, sc-bytes, cs-bytes | En-tête Host, octets envoyés/reçus | Non, à activer |
La ligne d'en-tête #Fields: de chaque fichier donne les colonnes réelles ; elles peuvent changer en cours de fichier après une modification de configuration.
Horodatages
| Horodatage | Format | Pièges |
|---|---|---|
date + time | AAAA-MM-JJ HH:MM:SS, UTC pour le W3C | Les autres formats (IIS, NCSA) utilisent l'heure locale ; voir UTC et heure locale |
AAMMJJ du nom de fichier | Jour UTC, sauf si « Use local time for file naming and rollover » est coché | Une journée en heure locale peut couvrir deux fichiers |
| Horodatages des fichiers de la racine web | NTFS, UTC | Date de création d'un webshell : vérifiez la $MFT et le journal USN pour détecter le timestomping |
Rétention et effacement
- La rotation est quotidienne par défaut ; IIS n'a aucune suppression intégrée, si bien que des mois voire des années de journaux subsistent souvent, sauf script de nettoyage planifié.
- Les entrées sont mises en tampon en mémoire et écrites périodiquement ; sur un serveur en production, lancez
netsh http flush logbufferavant la collecte. - Les attaquants suppriment ou tronquent les fichiers, ou désactivent la journalisation dans
applicationHost.config; des jours manquants comme un élémentlogFilemodifié sont des constats en soi.
Collecte
Get-Content C:\Windows\System32\inetsrv\config\applicationHost.config | Select-String "logFile|physicalPath|<site "
netsh http flush logbuffer
robocopy C:\inetpub\logs\LogFiles E:\case\IIS /E /COPY:DAT /DCOPY:T
robocopy C:\Windows\System32\LogFiles\HTTPERR E:\case\HTTPERR /COPY:DAT
La cible KAPE IISLogFiles ne collecte que les emplacements par défaut ; ajoutez manuellement les répertoires personnalisés. Copiez aussi les racines web (valeurs physicalPath) pour hacher et relire les scripts.
Outils d'analyse
- Log Parser 2.2 / Log Parser Studio : requêtes SQL sur les journaux W3C.
LogParser.exe -i:IISW3C "SELECT c-ip, cs-method, cs-uri-stem, COUNT(*) AS hits FROM u_ex*.log WHERE cs-uri-stem LIKE '%.aspx' GROUP BY c-ip, cs-method, cs-uri-stem ORDER BY hits DESC"
- PowerShell / grep : recherches de chaînes rapides sur de nombreux fichiers.
- Velociraptor : collecte et analyse des journaux IIS à grande échelle.
- Timeline Explorer : après conversion des journaux en CSV.
Conseils d'investigation
- Webshells : cherchez des fichiers
.aspx,.ashx,.asmxou.configrécemment créés dans les racines web, des pages rarement demandées et appelées uniquement enPOSTdepuis une seule IP, et des user agents inhabituels. Les pages compilées laissent desApp_Web_*.dllsousTemporary ASP.NET Filesdans le dossier du .NET Framework. - Filiation des processus :
w3wp.exequi lancecmd.exe,powershell.exe,whoami.exeou d'autres LOLBins est un signal majeur. Corrélez l'heure de la requête avec le 4688 du journal Security ou l'événement 1 de Sysmon, oùUserest l'identité du pool d'applications (IIS APPPOOL\<nom>). - Exchange : les chaînes ProxyLogon et ProxyShell de 2021 ont laissé des motifs comme des requêtes inhabituelles vers
/ecp/ou/autodiscover/autodiscover.jsonavec une adresse e-mail dans la query string, suivies de webshells dans les dossiers OWA/ECP. Exchange tient aussi ses propres journaux dans le dossierLoggingde son chemin d'installation (HttpProxy, ECP, OWA). Reportez-vous aux publications de l'éditeur et de la CISA pour les indicateurs exacts. - Pivotez sur les IP de l'attaquant dans tous les sites et dans HTTPERR, puis sur la fenêtre de temps dans le Prefetch et Amcache pour retrouver les outils déposés.
Artefacts liés
- Journal d'événements SysmonFiche Sysmon : emplacement du journal Operational, ID d'événements clés, corrélation ProcessGuid et hash, config dans le registre, altérations et outils.
- Journaux d'événements Windows (EVTX)Fiche des journaux d'événements Windows : emplacements EVTX, ID indispensables (connexions, processus, services, effacement), rétention, audit et outils.
- Fichiers Prefetch (.pf)Fiche Prefetch Windows : emplacement des .pf par version, nombre d'exécutions, huit dernières dates, fichiers référencés, rétention et analyse.
- Amcache.hveFiche Amcache.hve : clés d'inventaire des fichiers et programmes, SHA-1, métadonnées PE, horodatages, et pourquoi une entrée ne prouve pas l'exécution.
- Table de fichiers maîtres ($MFT)Fiche $MFT : enregistrements FILE, horodatages $SI et $FN, données résidentes, entrées supprimées, numéros de séquence, timestomping et MFTECmd.
- Journal USN ($UsnJrnl:$J)Fiche journal USN : $UsnJrnl:$J et $Max, champs, indicateurs Reason, référence parent, taille par défaut, rotation, fsutil et analyse avec MFTECmd.
Termes du glossaire
- UTC et heure locale dans les artefacts WindowsPourquoi certains artefacts Windows enregistrent l'UTC et d'autres l'heure locale, et comment la clé TimeZoneInformation aide à normaliser une chronologie.
- PersistanceMécanismes permettant à un malware ou à un attaquant de survivre aux redémarrages : clés Run, services, tâches planifiées, abonnements WMI.
- LOLBin (binaire living-off-the-land)Binaire Windows légitime et signé que les attaquants détournent pour télécharger, exécuter ou dissimuler une charge sans déposer leurs outils.
- Mouvement latéralDéplacement d'un attaquant d'un hôte compromis vers d'autres machines du réseau, via RDP, SMB, PsExec, WMI, WinRM ou tâches et services distants.
Guides
- Chasser la persistance Windows : registre, tâches, WMIDétecter la persistance d'un attaquant sous Windows : clés Run, services, tâches planifiées, WMI, Winlogon, IFEO, COM et BITS, avec MITRE ATT&CK et outils.
- Analyse forensique des journaux Windows : EVTX et event IDsGuide pratique des journaux d'événements Windows : format EVTX, canaux clés, event IDs Security et Sysmon, politique d'audit, logs effacés et outils.
- Forensique NTFS : $MFT, journal USN et $LogFile décryptésLire NTFS en analyste : structure des enregistrements MFT, horodatages $SI et $FN, timestomping, flags USN, $LogFile, slack $I30 et fichiers supprimés.