Réseaux¶
De quoi s'agit-il¶
Windows mémorise les réseaux auxquels un système s'est connecté et la façon dont son réseau était configuré.
SOFTWARE:- Profils réseau (
NetworkList\Profiles) : un par réseau auquel le système s'est connecté, avec son nom (le SSID d'un réseau Wi-Fi), sa catégorie (public, privé, domaine), son type de connexion (filaire, sans fil, VPN, haut débit mobile), ainsi que la date de la première et de la dernière connexion du système à celui-ci. - Signatures (
NetworkList\Signatures) : ce qui identifie chaque réseau, comme l'adresse MAC de la passerelle et le suffixe DNS. - Cartes réseau (
NetworkCards) : les adaptateurs. SYSTEM(par jeu de contrôle) :- Interfaces TCP/IP : adresses, serveur et bail DHCP, serveurs DNS, domaine.
- Partages proposés par le système (
LanmanServer\Shares). - Proxys de ports (
PortProxy) : les tunnels configurés parnetsh interface portproxy, que les attaquants utilisent pour pivoter et pour atteindre RDP via un autre port. - Routes persistantes.
- Le fuseau horaire, qui permet de convertir en UTC les heures locales des profils.
Meilleure conclusion : le système s'est connecté à un réseau portant ce nom et cette passerelle, pour la première et la dernière fois à ces heures. Il disposait de cette adresse fournie par ce serveur DHCP, et proposait ces partages et ces tunnels au moment où la ruche a été enregistrée. Le nom d'un réseau ne suffit pas à identifier où il se trouvait : de nombreux réseaux s'appellent « Network » ou partagent un SSID.
Emplacement¶
C:\Windows\System32\config\SOFTWARE
Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles\{GUID}
ProfileName, Description, Category, NameType, Managed, DateCreated, DateLastConnected
Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\Managed|Unmanaged\<signature>
ProfileGuid, DefaultGatewayMac, DnsSuffix, FirstNetwork
Microsoft\Windows NT\CurrentVersion\NetworkCards\<n> ServiceName, Description
C:\Windows\System32\config\SYSTEM (ControlSet00N\…)
Services\Tcpip\Parameters\Interfaces\{GUID} IP, DHCP, DNS, lease times
Services\LanmanServer\Shares one value per share
Services\PortProxy\v4tov4|v4tov6|v6tov4|v6tov6\tcp listen = connect
Services\Tcpip\Parameters\PersistentRoutes destination,mask,gateway,metric
Control\TimeZoneInformation
Collectez les deux ruches avec leurs journaux de transactions. La ruche SYSTEM est nécessaire pour convertir les heures des profils en UTC.
Précautions d'analyse¶
- Les heures des profils sont locales.
DateCreatedetDateLastConnectedsont écrites dans l'heure locale du système. FirstConnectedLocaletLastConnectedLocalles conservent telles quelles.FirstConnectedUTCetLastConnectedUTCles convertissent avec le fuseau horaire de la ruche SYSTEM du système (TimeZone) et sa règle d'heure d'été.- Une heure antérieure à un changement de fuseau horaire, ou provenant d'une année ayant une autre règle d'heure d'été (dates américaines antérieures à 2007), peut être décalée de la différence.
- Sans ruche SYSTEM lisible et sans jeu de contrôle actuel valide, seules les heures locales sont fournies. Les heures sautées lors du passage à l'heure d'été et les heures répétées ambiguës n'ont pas d'horodatage UTC unique prouvé : l'UTC est laissé vide et
Problemsexplique la limitation. Les décalages ou dates invalides ne sont pas non plus convertis. - Première et dernière uniquement. Chaque profil possède une première et une dernière connexion, et non chaque connexion. La dernière écriture de la clé du profil correspond généralement à la dernière connexion.
- Les noms se répètent. Windows nomme les réseaux filaires non gérés « Network », « Network 2 », etc.
Les SSID Wi-Fi ne sont pas uniques. Utilisez
GatewayMacetDnsSuffixpour distinguer les réseaux, et corrélez-les avec les journaux DHCP et l'inventaire des actifs. L'adresse MAC d'une passerelle n'est pas nécessairement le BSSID d'un point d'accès Wi-Fi et ne permet pas à elle seule d'établir un emplacement physique. - Les partages, proxys et routes relèvent de la configuration : un partage ou un proxy de port peut être configuré et ne jamais être utilisé. Chaque valeur n'a pas d'horodatage propre ; la dernière écriture de la clé correspond au moment où l'une d'entre elles a été modifiée.
- Interfaces : une clé d'interface sous un GUID sans adresse correspond à un adaptateur qui n'est pas configuré. Avec DHCP, les adresses sont celles du dernier bail. Une adresse statique restant d'avant DHCP n'est pas affichée comme étant utilisée.
- Jeux de contrôle : par défaut, le jeu de contrôle utilisé en dernier par Windows est lu.
--all-control-setsles lit tous, ce qui peut révéler un partage ou un proxy supprimé du jeu actuel.
Analyser avec Juntei¶
Usage: juntei parse-registry networks <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Recursively find SOFTWARE and SYSTEM hives
-f, --file <FILE> Parse one hive
--log1/--log2 Supply transaction logs explicitly
--no-logs Do not replay logs
Filtering:
--all-control-sets Every control set, not only the one in use
Output:
-o, --output <FILE> Save records
-t, --output-type <TYPE> csv, json, or jsonl
juntei parse-registry networks -d evidence/ -o networks.csv
juntei parse-registry networks -d evidence/ -t jsonl \
| jq 'select(.Source == "port_proxy" or .Source == "share")'
Le résumé répertorie les réseaux auxquels le système s'est connecté en dernier (les plus récents en premier), ainsi que chaque partage, proxy de port et route persistante.
Champs de sortie¶
| Champ | Interprétation |
|---|---|
Host, SourcePath |
L'hôte et la ruche. |
ControlSet, IsCurrentControlSet |
Pour les enregistrements SYSTEM : le jeu de contrôle, et s'il s'agit de celui utilisé en dernier par Windows. |
Source |
network_profile, network_signature (une signature sans profil), network_card, interface, share, port_proxy, route. |
ProfileName |
Le nom d'un profil (le SSID d'un réseau Wi-Fi) ; la description d'une signature. |
Category, ConnectionType |
public, private, domain ; wired, wireless, vpn, mobile_broadband (sinon le nombre). |
FirstConnectedUTC, LastConnectedUTC |
DateCreated et DateLastConnected converties en UTC avec TimeZone. |
FirstConnectedLocal, LastConnectedLocal |
Les mêmes, telles quelles (heure locale, à la milliseconde). |
TimeZone |
Le fuseau horaire utilisé pour la conversion. |
GatewayMAC, DNS-Suffix |
L'adresse MAC de la passerelle et le suffixe DNS des signatures du profil (| entre plusieurs valeurs). |
InterfaceGUID |
Le GUID d'une interface ; le ServiceName d'une carte réseau. |
IP-Address, DhcpServer, LeaseObtainedUTC, LeaseExpiresUTC |
Les adresses utilisées par une interface, son serveur DHCP et son bail. |
ShareName, SharePath |
Un partage et le dossier qu'il propose. |
ListenAddress, ListenPort, ConnectAddress, ConnectPort |
Un proxy de port : ce sur quoi il écoute et vers où il redirige. |
Route |
Une route persistante telle que stockée : destination,netmask,gateway,metric. |
Details |
Autres valeurs, sous la forme Name=Value; … (CSV) ou d'un objet (JSON) : la description d'un profil, Managed, le premier nom et les clés de signature ; l'adaptateur d'une interface (provenant de NetworkCards), les masques, passerelles, serveurs DNS et le domaine ; le type, la remarque et les autres champs d'un partage ; le type d'un proxy ; les composantes d'une route. |
KeyPath, ValueName, KeyLastWrittenUTC |
La clé, la valeur pour un partage, un proxy ou une route, et la dernière écriture de la clé. |
DataRaw |
Octets qui ne se décodent pas : une heure qui n'est pas un SYSTEMTIME valide, un partage qui n'est pas une liste de chaînes. |
TransactionLogStatus, LogsApplied |
Contexte de récupération du Registre. |
Problems |
Valeurs de type ou de taille incorrects, dates impossibles et noms qui ne respectent pas leur forme. |
Stratégie d'investigation¶
- Triez les profils par
LastConnectedUTCet examinez les réseaux autour de l'incident : réseaux Wi-Fi inconnus, points d'accès mobiles, VPN. - Utilisez
GatewayMacetDnsSuffixpour distinguer les réseaux portant le même nom, et pour faire correspondre un réseau entre plusieurs hôtes. - Examinez chaque proxy de port et chaque partage. Un proxy de port vers le port 3389 ou 445 d'un hôte interne, ou le partage
d'un dossier de préparation (
C:\ProgramData,C:\Users\Public), constitue une piste. Corrélez avec les journaux d'événements (création de processusnetsh, événements de partage 5142/5144) et les horodatages des clés. - Utilisez les adresses et les heures de bail des interfaces pour situer l'hôte sur le réseau, et faites-les correspondre avec les journaux du pare-feu, du DHCP et du proxy.
- Utilisez
--all-control-setsetparse-registry read --recover-deletedpour les partages, proxys et profils supprimés.