SecurityInsider
Le blog des experts sécurité Wavestone

#REX : Houston, we’ve got a chinese account on our system







Le CERT-W a été contacté afin d’investiguer sur l’origine d’un dossier utilisateur chinois sur un système Windows :


Présence d’un dossier chinois au sein du dossier « C:\Users »

L’origine de la création de dossier utilisateur au sein du dossier « C:\Users » est engendrée à la suite de la première authentification d’un utilisateur, et non lors de sa création. 


Analyse de la génération d’un dossier utilisateur « test »

Ainsi, la présence de ce dossier révèle que l’utilisateur nommé « 整瑳 » s’est authentifié sur la machine analysée.
La création d’un utilisateur au sein d’un système Windows est enregistrée au sein du fichier journal « Security » sous l’identifiant « 4720 – Un compte d’utilisateur a été créé ».


Exemple d’évènement généré lors de la création d’un utilisateur sur une ressource Windows

Lors des investigations conduites, l’étude du fichier journal « Security » sur la ressource analysée n’a cependant révéler aucune information concernant la création du compte utilisateur « 整瑳». 
En effet, une taille maximale est attribuée aux journaux Windows ; une rotation est ainsi appliquée en cas de dépassement (les anciens journaux sont donc écrasés au fur et à mesure de façon automatique). Le journal « Security » étant très sollicité, il semble donc légitime que l’événement ne soit plus présent.

Néanmoins, l’étude du journal système « Microsoft-Windows-User Profile Operational » a révélé que la ruche utilisateur « NTUSER.DAT » présente au sein du dossier de l’utilisateur « C:\Users\整瑳\ » est chargée en mémoire à intervalles réguliers sur la ressource analysée : l’utilisateur se connecte donc régulièrement sur le système.


Analyse des journaux Microsoft-Windows-User Profile Operational 

Par ailleurs, cet évènement révèle le SID Security IDentifier ») associé à l’utilisateur « 整瑳 » : 
  • S-1-5-21-2165619761-3865691470-1251770841-1001

L’analyse de la base SAM du système révèle que cet SID est associé à l’utilisateur nommé « test ». Par ailleurs, aucun utilisateur nommé « 整瑳 » ne semble être configuré sur le système :


Extrait de la base SAM 

Or, la documentation Microsoft décrit le fonctionnement suivant concernant l’attribution des SID sur une ressource Windows :
« For every local account and group, the SID is unique for the computer where it was created; no two accounts or groups on the computer ever share the same SID » (https://technet.microsoft.com/en-us/library/cc778824(v=ws.10).aspx)
Ces différentes informations laissent donc présager que les utilisateurs « test » et « 整瑳 » sont donc un unique utilisateur.
L’analyse du registre dévoile que le chemin de profil associé à l’utilisateur disposant du SID précédemment identifié est le dossier « C:\Users\整瑳 » :


Données de la valeur « ProfileImagePath »

Le compte utilisateur nommé « test » dispose donc du dossier « C:\Users\整瑳 » pour dossier personnel.
L’analyse de la valeur binaire de la clé « ProfileImagePath » révèle la présence de la chaîne de caractères « test ». Cependant, cette dernière dévoile que les caractères « test » n’ont pas correctement été encodée en unicode (selon lequel un caractère est défini sur deux octets).
Ainsi, les octets « te » et « st » représentent les deux caractères en unicode : 整瑳.


Mauvais encodage de la chaîne de caractères « test » au sein de la valeur « ProfileImagePath »

En effet, cette valeur devrait être définie à « .t.e.s.t.. » (soit « 00 74 00 65 00 73 00 74 00 00 ») pour que la chaîne de caractères « test » soit correctement affichée par le système :


Correction de la valeur « ProfileImagePath » en unicode

Ainsi, cela confirme que : 
  • L’utilisateur « 整瑳 » et « test » sont un seul et même utilisateur ;
  • Le dossier « C:\Users\整瑳 » est le dossier personnel de l’utilisateur « test ».


À la suite d’un entretien avec les personnes en charge de l’administration de la ressource analysée, les investigateurs ont été informés que le compte « test » est exploité en tant que compte de service par un logiciel tiers. 
Ainsi, il est fort probable qu’une erreur d’implémentation au sein de la fonction générant le dossier personnel du compte de service créé lors de l’installation de ce logiciel soit à l’origine de ce bogue.
En effet, la timeline des évènements systèmes s’étant produits sur la ressource, générée à l’aide de l’outil plaso, a permis d’illustrer que l’enregistrement dans la base SAM du compte « test » et la création du dossier utilisateur « C:\Users\整瑳 » étaient liés : ces deux évènements se sont produits simultanément. Néanmoins, aucune trace de l’installation du logiciel en question n’a pu être récupérée.

Enfin, il a été possible de reproduire ce bogue en modifiant légèrement le code source disponible via le lien suivant : https://support.microsoft.com/en-us/help/196070/how-to-programmatically-cause-the-creation-of-a-user-s-profile.
En effet, un comportement similaire (création d’un utilisateur disposant d’un dossier non encodé au format unicode) a pu être obtenu en remplaçant l’appel à la fonction LoadUserProfileA() par la fonction LoadUserProfileW() :


Extrait de la documentation de la fonction LoadUserProfile

Ainsi, il est très probable qu’une erreur d’implémentation se soit glissée au sein du logiciel tiers déployé sur la ressource analysée. 
En effet, une erreur lors de l’appel à la fonction LoadUserProfile a été réalisée : la fonction LoadUserProfileW a été appelée au détriment de la fonction LoadUserProfileA. Or, le programme devait probablement manipuler des chaînes de caractères ANSI, générant ainsi une erreur d’encodage lors de la création du dossier utilisateur associé au compte de service configuré par le logiciel.


Conclusion

La présence d’un dossier chinois sur un système n’induit pas forcément la compromission de ce dernier ; néanmoins, des investigations doivent systématiquement être conduites. En effet, cette dernière peut être liée à la mauvaise implémentation d’un logiciel déployé sur le système.
Par ailleurs, une attention particulière doit être portée lors de l’utilisation de fonctions sensibles à l’encodage, afin d’éviter l’introduction de bogues et potentiels effets de bord lors de l’exécution de tels programmes. De tels comportements peuvent être évités en exploitant les dernières fonctions offertes par les API Windows ; notamment, la fonction CreateUserProfile peut être employée pour créer des profils utilisateurs sur les systèmes Windows supérieur à Windows Vista. Cette dernière ne diffère pas selon l’encodage souhaitée (ANSI ou unicode).
Enfin, il convient de centraliser les journaux systèmes en temps réel vers une ressource dédiée, et d’externaliser par la suite ces derniers afin d’éviter toute perte d’enregistrements ; facilitant ainsi les investigations en cas d’incident.


François LELIEVRE

Aucun commentaire:

Enregistrer un commentaire