> Tech > GetAccess.cmd

GetAccess.cmd

Tech - Par iTPro - Publié le 24 juin 2010
email

Showacls.exe et net.exe fournissent la base du script GetAccess.cmd. Celui-ci produit un fichier texte donnant la liste de tous les fichiers et dossiers auxquels l'utilisateur ou le groupe spécifié a accès dans le répertoire spécifié et tous ses sous-répertoires. Quand vous lancez le script, vous devez fournir trois paramètres :

le nom de l’utilisateur ou
le nom du groupe pour lequel vous effectuez
l’audit (username_or_groupname),
le chemin vers le répertoire
que vous voulez scruter (path_
to_scan) et le nom du fichier de sortie
(outputfile). Vous pouvez inclure le
commutateur /d facultatif si vous voulez
que l’audit ne porte que sur les dossiers
et pas sur les fichiers. Vous pouvez
aussi inclure le commutateur
/verbose facultatif si vous voulez que la
console affiche les actions du script au
fur et à  mesure. Ainsi, la commande
qui lance le script a la syntaxe suivante :

GetAccess.cmd
username_or_groupname
path-to-scan outputfile
[/d] [/verbose]

La logique du script est simple. Elle
fonctionne de la manière suivante :

  1. Le script supprime le fichier de sortie
    s’il existe déjà . Pour cela, le script
    utilise la commande

    If Exist %outputfile% Del
    %outputfile% /q

  2. Le script prépare les commutateurs
    pour la commande Dir. Comme le
    montre le listing 2, la variable dirflag
    définit les commutateurs d’après les
    paramètres que vous fournissez
    quand vous lancez le script. Le commutateur
    /s ordonne à  la commande
    Dir de montrer tout le contenu, y
    compris les sous-répertoires et le
    commutateur /b ordonne à  la commande
    Dir de présenter la sortie
    dans le format le plus simple (c’està –
    dire, sans information d’en-tête ou
    de résumé). Si vous avez défini le paramètre
    /d quand vous avez lancé le
    script, le script ajoute le commutateur
    /ad pour indiquer que vous ne
    voulez afficher que les répertoires.
    Le script utilise la variable file
    folder pour présenter correctement
    l’information d’état sur l’écran.
    Cette information indique si le script
    est en train de traiter des fichiers et
    des dossiers ou uniquement des
    dossiers.

  3. Le script stocke le nom d’utilisateur
    ou le nom de groupe spécifié et
    deux noms de groupes intégrés
    (c’est-à -dire, Everyone et Authenticated User) dans un fichier temporaire
    (%temp%\getaccess.$$$). Le
    script utilisera ultérieurement les
    noms dans ce fichier conjointement
    à  showacls.exe pour déterminer si
    l’utilisateur ou le groupe spécifié a
    accès à  un fichier ou dossier.
    Comme le montre le listing 3, le
    script utilise la commande Net User
    pour déterminer si le compte spécifié
    est un compte utilisateur ou un
    compte groupe. Si la commande Net
    User ne renvoie pas une erreur, c’est
    qu’on a affaire à  un compte utilisateur
    ; dans le cas contraire, le
    compte spécifié est considéré comme
    un compte groupe. S’il s’agit
    d’un compte utilisateur, le script
    passe à  l’étape 4. S’il s’agit d’un
    compte groupe, le script saute à 
    l’étape 5.

  4. Quand le compte spécifié est un
    compte utilisateur, le script ajoute
    au fichier temporaire les groupes
    auxquels l’utilisateur appartient. Le
    code du listing 1, dont j’ai déjà  parlé,
    accomplit cette tâche.

  5. Le script obtient les noms des fichiers
    et des dossiers (ou des seuls
    dossiers si vous avez inclus le commutateur
    /d) dans le répertoire spécifié.
    Le script utilise la variable dirflag
    qu’il a définie précédemment
    conjointement aux commandes For
    et Dir pour obtenir ces noms :

    For /f « tokens=* » %%i in (‘Dir
    %dirflag% %path_to_scan%’)
    Do Call:checkaccess « %%i »

    La commande For ordonne au script
    de prendre chaque ligne dans la sortie
    de la commande Dir, de stocker
    cette ligne dans la variable %i, et
    d’exécuter le code dans le module
    :checkaccess pour l’appliquer à 
    cette ligne.

  6. Les modules :checkaccess et :hasaccess
    constituent la partie la plus importante
    du script parce qu’ils identifient
    les fichiers et les dossiers
    auxquels l’utilisateur ou le groupe a
    accès. Bien que le code soit important,
    il est simple et direct, comme le
    montre le listing 4.
    Une fois que le script a passé le nom
    du fichier ou du dossier au module
    :checkaccess, le module stocke
    le nom dans une variable nommée
    target. Le module :checkaccess fait
    ensuite une boucle au travers de
    chaque compte dans le fichier temporaire
    et lui applique le module :hasaccess.
    Le module :hasaccess compare
    la sortie de la commande
    Showacls pour le fichier ou le dossier
    en cours au compte courant
    dans le fichier temporaire en filtrant
    la sortie par l’intermédiaire de deux
    commandes Find.
    Si l’une ou l’autre des commandes
    Find renvoie un code sortie de 0, il y
    a correspondance. Dans ce cas, le
    script envoie ce nom de fichier ou
    de dossier au fichier de sortie et à 
    l’écran de console.

Téléchargez cette ressource

Guide de cybersécurité en milieu sensible

Guide de cybersécurité en milieu sensible

Sur fond de vulnérabilités en tout genre, les établissements hospitaliers, pharmacies, laboratoires et autres structures de soin font face à des vagues incessantes de cyberattaques. L’objectif de ce livre blanc est de permettre aux responsables informatiques ainsi qu’à l’écosystème des sous-traitants et prestataires du secteur médical de se plonger dans un état de l’art de la cybersécurité des établissements de santé. Et de faire face à la menace.

Tech - Par iTPro - Publié le 24 juin 2010