Les amis, je vous propose de découvrir un projet personnel que j’ai régulièrement complété au fil du temps et qui est basé sur une question simple : comment peut-on savoir si un dossier a été vu sous Windows ? Et cela par exemple dans un cadre de surveillance (légale) de l’ordinateur, ou dans le cadre de la récupération de preuves d’accès si un problème de piratage a lieu.

Pour cela, utiliser un programme de surveillance ne me paraissait pas assez discret pour une surveillance discrète. J’ai donc mis en place un moyen de savoir si un dossier a été vu sans aucun programme externe, tout simplement car c’est le système Windows lui-même qui va m’en informer automatiquement.

Voici la vidéo où je fais la démonstration :

Pour la démonstration, il suffit de se rendre sur le site créé à l’occasion : http://trgrd.site.

Cliquez ensuite sur le bouton pour générer votre dossier piégé (il contiendra un identifiant unique). Vous pourrez ensuite le placer où vous le souhaitez sur votre PC, le renommer, y ajouter des fichiers ou dossiers, etc.

Puis vous pourrez cliquer sur le lien permettant d’observer les statistiques d’ouvertures.

Et vous devriez toutes les voir sous forme de tableau avec le nom du pc et la date de l’action.

Le code source a été placé sur Github à l’adresse suivante : https://github.com/LeBlogDuHacker/trgrd

Savoir si un dossier a été vu grâce à des requêtes DNS

J’ai déjà expliqué le fonctionnement du site dans la vidéo et dans le dépôt Github, je vais donc ici me contenter de mentionner les grandes lignes.

Windows utilise des fichiers desktop.ini dans les dossiers afin d’enregistrer diverses préférences. Par exemple, si vous changez l’icône d’un dossier, celle-ci sera enregistré via ce fichier de préférence.

Et il se trouve que l’on peut donner également un chemin réseau (URL) pour renseigner cette icône !

Windows va automatiquement faire une requête DNS si c’est le cas, pour trouver l’adresse IP de la machine possédant physiquement l’icône, et l’afficher.

Mais qui dit requête DNS dit accès distant.

Nous pouvons ainsi créer un serveur DNS pour récupérer volontairement les dates d’ouvertures du dossier, car Windows fait beaucoup de requêtes DNS suivant diverses actions : ouverture du dossier, renommage du dossier, déplacement, suppression, liste via un dossier parent, etc. De plus, des variables Windows comme le nom du PC peuvent être passées via le sous domaine de l’URL utilisée.

En gérant ainsi un serveur DNS autoritaire sur le nom de domaine choisi, nous recevons les requêtes avec les variables et nous pouvons les enregistrer, en toute transparence. Je me suis donc basé sur un projet open source de serveur DNS autoritaire en PHP (lien dans le dépôt) pour y associer une base de données.

La création du dossier piégé, pas si facile…

Le serveur DNS étant en place, il restait à créer des dossiers à la demande, contenant des fichiers desktop.ini avec une URL prédéfinie. Voici un exemple de fichier desktop.ini généré :

savoir si un dossier a été vu avec desktop.ini

%USERNAME%.%USERDOMAIN%.23911.ID.trgrd.site va en fait former une URL avec plusieurs sous-domaines de ce type : m.pc.23911.ID.trgrd.site. Le numéro 23911 arbitraire ne sert qu’à séparer l’identifiant (ID) aléatoire du nom du PC… il y a d’autres façons de faire.

Une fois le fichier desktop.ini généré, il reste à le mettre dans un dossier et de le proposer au téléchargement.

Mais c’est là que les choses se compliquent…

Le fichier desktop.ini contient par défaut des attributs systèmes (il n’est visible qu’en affichant les dossiers cachés ET en autorisant l’affichage des fichiers systèmes). Sans ces attributs, il devient un simple fichier normal, non pris en compte, et donc visible dans le dossier.

C’est pour cela que j’ai décidé de faire un fichier .zip contenant le dossier lui-même contenant desktop.ini ainsi que les attributs. Mais aucune bibliothèque ZIP en PHP ne m’a vraiment aidé (je n’ai peut-être simplement pas réussi/trouvé). J’ai donc décidé de m’intéresser au format de fichier .ZIP, pour créer le fichier, octet par octet en décompilant d’abord un fichier desktop.ini officiel.

Mon code est donc très “bas niveau” (et moche), mais si vous avez une solution alternative, je la lirai avec grand plaisir, c’est bien là l’avantage de l’open source après tout !

Oui je sais j’ai peut-être cherché un peu loin…

Commentaires
Cliquez ici pour ajouter un commentaire

  • salut michel merci beaucoup pour les dernière réponse de ta part. je vais ici apporter une réponse souvent poser.
    sûr les forum. comment savoir s’il y a pas des utilisateurs qui ont tenté d’utiliser les privilèges root. sur votre

    système linux. nous allons voir ceci en simulant un utilisateur qui va essayer d’avoir les privilèges root.
    on va utiliser kali linux pour cet exemple.

    connecter vous en tant que root sur un terminal linux. vous pouvez utiliser la commande whoami pour voir
    que vous êtes bien root. on voit bien que vous êtes root sur le système.

    nous allons maintenant crée un utilisateur en utilisant la commande adduser suivi du non d’utilisateur que vous voulez créer.
    dans notre exemple on va l’appeler bob et le mot de passe sera également bob.

    on a crée un utilisateur non root qui s’appelle bob maintenant on va se connecter en tant que bob.
    pour cela utiliser la commande su bob puis tapez whoami pour voir si vous êtes bien bob.

    bob va essayer d’avoir les privilèges root pour cela il va taper la commande sudo su et enter son mot de passe.
    voici le résultat comme vous pouvez le voir bob n’a pas pu avoir les privilèges root. le message dans le cadre

    nous indique que bob n’a parait pas. dans le fichier sudoers. le sudoers est un fichier qui va définir
    les utilisateurs qui vont avoir les privilèges root.

    dans notre cas il a détecté que bob n’a pas accès au privilèges root.

    il a signalé l’incident dans un fichier que l’on appelle log. nous allons voir maintenant comment accéder à ce fichier.
    basculez vers l’utilisateur root. avec la commande su et déplacez vous vers le répertoire / var avec la commande

    cd/var/log/ tapez la commande ls pour lister le contenu.

    dans ce répertoire vous avez tous les fichiers log. ce qui nous intéresse c’est le fichier auth. log.
    pour voir le contenu du fichier tapez la commande cat auth.log.

    vous allez voir toutes les informations de tentatives de login. on peut voir un avertissement qui nous signale
    que l’utilisateur bob n’est pas dans sudoers.

    c’est un fichier très important pour voir si un utilisateur a essayé de ce connecter en tant que root. pour
    un sys admin. ce fichier est très utile pour la sécurité. il va pouvoir voir les comportements malveillants.

    sur le réseau et système linux.

    voici pour ce qui en est de la détection d’une intrusion en vérifiant votre fichier d’authentification log.

    Répondre

Laisser un commentaire

Menu