CyberHUBBlue Team Level 1
Detection and Analysis Phase

CMD and PowerShell For Incident Response

Extracted from Incident Response(2).pdf - source PDF page(s) 97-108.

CMD and PowerShell For Incident Response - source page 97
Source illustration - PDF page 97
Cette leçon vous présentera quelques CMD et PowerShell commandes utiles pour vous aider à répondre aux incidents. Certaines des mesures que nous pouvons prendre incluent :
  • Répertorier les informations réseau (pour recueillir des informations telles que l'adresse IP, le MAC, etc.)
  • Affichage des ports ouverts et d'écoute (pour détecter les portes dérobées et le balisage)
  • Affichage des processus en cours et de leurs fichiers exécutables associés (pour détecter les malwares ou les portes dérobées)
  • Répertorier tous les utilisateurs et administrateurs du système local (pour identifier les comptes inhabituels)
  • Répertorier les programmes qui se lancent au démarrage du système (pour détecter les fichiers malveillants)
  • Liste des services et informations détaillées (pour identifier les services malveillants)
  • Et bien plus encore !

Ligne de commande

Pourquoi utilisons-nous CMD ?

Bien que son utilisation nécessite la mémorisation de nombreuses commandes différentes, elle peut nous permettre d'effectuer des tâches plus rapidement qu'en interagissant avec l'interface utilisateur graphique de Windows et nous permet également d'automatiser les tâches à l'aide de scripts batch. Cela peut être utile dans les scénarios de réponse aux incidents, car nous pouvons interroger le système pour obtenir des informations sur presque tout, des utilisateurs aux processus en cours d'exécution !

CMD pour la réponse aux incidents

Nous allons aborder ci-dessous un certain nombre de commandes qui peuvent être utiles pour les enquêtes de sécurité et la réponse aux incidents. Nous inclurons également des exemples afin que vous puissiez voir à quoi pourrait ressembler l'entrée et comment interpréter les informations imprimées sur le terminal. Ces commandes doivent être exécutées en tant qu'administrateur pour fonctionner correctement.

ipconfig /all

Description : Cette commande permet d'obtenir des informations de configuration réseau à partir du système local, notamment l'adresse IP attribuée et l'adresse MAC du périphérique.

Exemple : Dans cet exemple, nous pouvons voir que nous avons le nom d'hôte « MSEDGEWIN10 », une adresse MAC « 00-0C-29-AA-02-FA » et une adresse IPv4 « 192.168.125.129 ». Nous pouvons

également voir que le serveur DNS utilisé pour la résolution des noms est actuellement « 192.168.125.2 ».

CMD and PowerShell For Incident Response - source page 99
Source illustration - PDF page 99

liste des tâches

Description : Cette commande permet de vérifier les processus et les programmes en cours d'exécution et d'imprimer une liste sur le terminal.

Exemple : Dans la capture d'écran ci-dessous, nous voyons une liste des processus en cours d'exécution, leurs identifiants de processus (PID) et l'utilisation de la mémoire dans la dernière colonne. Cela peut être utile pour identifier les processus qui s'exécutent en arrière-plan et le nombre de ressources système qu'ils consomment. Cela peut être un bon moyen d'identifier les malwares tels que les mineurs de cryptomonnaies qui fonctionneront en silence, mais consommeront beaucoup de mémoire système pour fonctionner.

CMD and PowerShell For Incident Response - source page 100
Source illustration - PDF page 100

processus wmic : obtenir une description, un chemin d'exécution

Description : Cette commande affiche les processus en cours d'exécution et le fichier binaire associé qui a été exécuté pour créer le processus.

Exemple : Comme l'indique la description, nous pouvons voir les processus en cours et le fichier exécutable qui les a initiés. Regardez juste en dessous de la moitié de la liste et vous trouverez Discord.exe sur le côté gauche (nom du processus). À droite, sur la même ligne, nous pouvons voir que Discord a été lancé depuis C:\Users\IEUser\AppData\Local\Discord\app -0.0.307 \ Discord.exe. Nous avons maintenant le chemin complet du fichier ! Nous pouvons utiliser cette commande pour identifier les noms de processus inhabituels et identifier l'emplacement du fichier exécutable afin de pouvoir l'analyser. Les processus qui manquent d'emplacements inhabituels tels que /tmp/ et /Downloads/ méritent certainement d'être étudiés plus en détail !

CMD and PowerShell For Incident Response - source page 101
Source illustration - PDF page 101

utilisateur du réseau

Description : Cette commande affiche la liste de tous les utilisateurs du système sur le terminal.

Exemple : À l'aide de cette commande cmd, nous avons imprimé tous les utilisateurs du système local, quel que soit leur groupe d'utilisateurs, sur le terminal. Dans ce cas, nous pouvons voir :

  • Administrateur
  • Compte par défaut
  • Invité
  • Jeff S
  • Marque A
  • sshd
  • Steve E
  • Compte utilitaire WDAG
CMD and PowerShell For Incident Response - source page 102
Source illustration - PDF page 102

administrateurs de groupes locaux du réseau

Description : Cette commande répertorie tous les utilisateurs qui font partie du groupe d'utilisateurs des administrateurs.

Exemple : Dans la capture d'écran ci-dessous, nous pouvons voir tous les comptes d'administrateur de ce système. Dans ce cas, c'est le suivant :

  • Administrateur
  • Jeff S
  • Marque A
  • Steve E
CMD and PowerShell For Incident Response - source page 102
Source illustration - PDF page 102

Nous pouvons remplacer « administrateurs » par n'importe quel groupe local que nous voulons énumérer. Pour voir la liste de tous les groupes, utilisez la commande net localgroup. Si vous souhaitez rechercher des utilisateurs dans un groupe qui inclut des espaces, vous devez exécuter vos commandes comme suit : net localgroup « Remote Desktop Users ».

requête sc | plus

Description : Cette commande répertorie tous les services et fournit des informations détaillées sur chacun d'entre eux.

netstat -ab

Description : Cette commande répertorie les ports ouverts sur un système, ce qui peut indiquer la présence d'une porte dérobée.

PowerShell
Pourquoi utilisons-nous PowerShell ?
PowerShell est incroyable, et il y a de fortes chances que vous l'utilisiez beaucoup lorsque vous travaillez dans le secteur de la sécurité. Nous pouvons automatiser des tâches complexes, les utiliser à des fins de sécurité offensives ou lors d'enquêtes de sécurité afin d'obtenir plus d'informations sur un utilisateur ou un système. Pour la réponse aux incidents, nous pouvons l'utiliser de la même manière que CMD, mais nous pouvons souvent récupérer beaucoup plus d'informations.
Configuration de Get-NetIP et adresse Get-NetIPaddress

Description : Comme pour ifconfig dans CMD, nous pouvons utiliser les deux commandes ci-dessus pour obtenir des informations relatives au réseau à partir du système. Exemple :

CMD and PowerShell For Incident Response - source page 104
Source illustration - PDF page 104
Utilisateur Get-Local

Description : À l'aide de la commande ci-dessus, nous pouvons répertorier tous les utilisateurs locaux du système. Exemple :

CMD and PowerShell For Incident Response - source page 104
Source illustration - PDF page 104
Get-LocalUser -Name BTLO | sélectionnez *

Description : Nous pouvons fournir un utilisateur spécifique à la commande pour obtenir uniquement des informations le concernant. Le fait de rediriger (|) les résultats vers une « sélection » avec un

caractère générique (*) nous donnera toutes les propriétés de la commande, nous fournissant ainsi des informations précieuses sur le compte. Cela peut s'avérer extrêmement utile pour nous en tant qu'intervenants en cas d'incident, en particulier lorsque nous découvrons des comptes locaux qui n'expirent pas ou dont les mots de passe n'expirent pas. Exemple :

CMD and PowerShell For Incident Response - source page 105
Source illustration - PDF page 105
Get-Service | Where Status -eq « En cours d'exécution » | Out-GridView
Description : La commande ci-dessus nous permet d'identifier rapidement les services en cours d'exécution sur le système. En renvoyant (|) la commande vers Out-GridView, nous disons de nous PowerShell montrer les résultats dans une belle fenêtre, ce qui est beaucoup plus facile à utiliser que de les afficher dans la fenêtre. PowerShell Exemple :
CMD and PowerShell For Incident Response - source page 105
Source illustration - PDF page 105
Get-Process | Format-Table -Priorité d'affichage

Description : Une autre commande intéressante est la possibilité de regrouper les processus en cours d'exécution selon leur valeur de priorité. À l'aide de la commande ci-dessus, nous pouvons voir le nom du processus, l'ID du processus (PID) et d'autres informations, où les différents niveaux de

priorité sont regroupés dans des tableaux. Exemple :

CMD and PowerShell For Incident Response - source page 106
Source illustration - PDF page 106
Get-Process -Id 'idhere' | Sélectionnez *
Description : Nous pouvons collecter des informations spécifiques à partir d'un service en incluant le nom dans la commande (-Name « namehere ») ou l'identifiant, comme indiqué ci-dessus et cidessous. Piping to Select* nous fournit toutes les propriétés. Exemple :
CMD and PowerShell For Incident Response - source page 107
Source illustration - PDF page 107

Tâche planifiée

Description : À l'instar des services, les tâches planifiées font souvent l'objet d'abus et utilisent une technique de persistance courante. Avec la commande ci-dessus, nous pouvons répertorier les tâches qui sont configurées pour être exécutées lorsque certaines conditions sont remplies. Exemple :

CMD and PowerShell For Incident Response - source page 108
Source illustration - PDF page 108
Get-ScheduledTask -Nom de la tâche « Mettre un nom ici » | Sélectionnez *

Description : Nous pouvons approfondir la question en spécifiant la tâche qui nous intéresse et en récupérant toutes ses propriétés.