Archives de Mai, 2017

Si une ou plusieurs de vos machines Windows (Client ou Serveur) ont été infectées par WannaCry, je vous invite à visionner la vidéo ci-après. La méthode consiste simplement à utiliser un outil (Freeware) nommé WanaKiwi qui permet de décrypter vos données sans payer les fameux 300 $$$$ (en Bitcoins) au groupe de Hackers :).

Un très bon article de Philippe BARTH [MVP Directory Services] sur le Sizing des DC (Domain Controller) pour une infrastructure Active Directory 2008, 2008 R2, 2012, 2012 R2 et 2016.

Ci-après un extrait

====================================================================

En lisant certains blogs, je suis tombé sur des valeurs un peu excessives au niveau du dimensionnement des contrôleurs de domaine, surtout pour des PME. Je me souviens par exemple d’un site qui préconise 8 Go de RAM minimum sur les DCs avec Windows Server 2012 R2, sans trop justifier cette valeur. Active Directory n’est pas un service très exigeant au niveau des performances en comparaison d’un serveur Exchange ou d’une base de données SQL Server.

Le premier point sur lequel je souhaite justement revenir est la mémoire. Il est recommandé pour des raisons de performances d’avoir suffisamment de mémoire pour conserver l’ensemble de l’annuaire dans la mémoire. A la création le fichier « NTDS.dit » à une taille inférieur à 50 Mo. Même si la taille de la base de données est variable en fonction du nombre d’utilisateurs, de groupe, si vous stocker des photos pour les utilisateurs etc…, vous verrez qu’un annuaire pour une société de moins de 300 personnes ne dépassera sans doute pas les 300Mo.

La quantité minimale de RAM devrait être supérieur à la somme de la taille de la base de données, la taille SYSVOL totale, le montant recommandé du système d’exploitation et les recommandations du fournisseur pour les agents (antivirus, surveillance, sauvegarde, etc.). Donc si on compte 1Go pour Windows 2012, 300Mo pour la base AD et 100 Mo pour le service DNS, dans une petite structure, 2 Go de mémoire peut être suffisant si le DC n’héberge pas d’autres rôles.
Dans une structure plus importante, par exemple avec une forêt multi-domaine, le rôle de catalogue global augmente la consommation de mémoire. De plus si vous installez des outils tiers comme System Center (client SCCM, agent SCOM) vous devrez peut-être prévoir un minimum de 3Go voir 4Go.

LIRE LA SUITE…

Une astuce AD qui peut vous être utile lors de vos audit Active Directory 🙂

Comment lister tous les comptes d’Ordinateurs Active Directory qui sont « Désactivés » ?

La réponse est simple, lancez Windows PowerShell (en tant qu’Admin) depuis un DC (Writable) du domaine ou serveur d’administration ayant les outils RSAT AD DS d’installés, et exécutez la commande suivante :

Get-ADComputer -Filter {(name -like « * ») -and (enabled -eq $FALSE)} -Properties * | Select Name, LastLogonDate | Ft -AutoSize

Vous pouvez trier (par Date) le résultat retourné par la commande en rajoutant un « Pipe » Sort-Object -Descending, la commande devient donc :

Get-ADComputer -Filter {(name -like « * ») -and (enabled -eq $FALSE)} -Properties * | Select Name, LastLogonDate | Sort-Object -Descending | FT -AutoSize

Enfin, le résultat (liste complète des Comptes Ordinateurs AD Désactivés) peut être exporté vers un fichier TXT ou CSV, et ce via l’utilisation d’un Pipe suivi de la Cmd-Let Export-CSV Chemin_d’Export, la commande finale est donc :

Get-ADComputer -Filter {(name -like « * ») -and (enabled -eq $FALSE)} -Properties * | Select Name, LastLogonDate | Sort-Object -Descending | Export-CSV C:\Liste_CompteOrdiAD_Desactives.csv

Hello RDS Guys,

Je viens de créer un partage « OneDrive » dans lequel j’ai ajouté tous les scripts (développés par mes soins) liés au rôle RDS et au protocole RDP.

Ils sont accessibles en free download, à l’URL suivante :

https://1drv.ms/f/s!Agu0mgqr6F71pUWk4wK4fwu6H5_Q

Enjoy !

HK

J’imagine que tout le monde est au courant du Ransomware (WannaCry) exploitant les vulnérabilités MS17-010 sur les OS Windows (Client & Server).

Toutes les KBs nécessaires pour corriger à cette faille sont publiées par Microsoft et disponibles depuis Mars 2017. Mais avant de les appliquer, vous devez d’abord scanner votre parc informatique pour lister les serveurs et clients Windows encore vulnérables à la MS17-010 pour établir la liste complète des machines à patcher par la suite.

Commencez par downloader Nmap pour Windows, récupérer ensuite le script Nmap pour la MS17-010 (script disponible ici, sinon vous pouvez copier /coller le code ci-après), et exécutez ensuite la commande suivante :

nmap -sC -p445 –open –max-hostgroup 3 –script smb-vuln-ms17-010.nse X.X.X.X/X

Dans l’exemple suivant, nous allons scanner le Subnet 10.0.110.0 /24, la commande suivante est donc utilisée:

nmap -sC -p445 –open –max-hostgroup 3 –script smb-vuln-ms17-010.nse 10.0.0.0/16

Un travail de traitement de fichier est à faire, car le résultat retourné par NMAP (pour un « gros » parc de serveurs et postes de travail) n’est pas « très exploitable », voir capture d’écran suivant :


local smb = require "smb"
local vulns = require "vulns"
local stdnse = require "stdnse"
local string = require "string"

description = [[
Attempts to detect if a Microsoft SMBv1 server is vulnerable to a remote code
 execution vulnerability (ms17-010).

The script connects to the $IPC tree, executes a transaction on FID 0 and
 checks if the error "STATUS_INSUFF_SERVER_RESOURCES" is returned to
 determine if the target is not patched against ms17-010.

Tested on a vulnerable Windows 7. We might have some issues with v2 protocols with
 signing enabled.

References:
* https://technet.microsoft.com/en-us/library/security/ms17-010.aspx
* https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/
* https://msdn.microsoft.com/en-us/library/ee441489.aspx
* https://github.com/rapid7/metasploit-framework/blob/master/modules/auxiliary/scanner/smb/smb_ms17_010.rb 
]]

---
-- @usage nmap -p445 --script smb-vuln-ms17-010 <target>
-- @usage nmap -p445 --script vuln <target>
--
-- @output
-- Host script results:
-- | smb-vuln-ms17-010: 
-- |   VULNERABLE:
-- |   Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010)
-- |     State: VULNERABLE
-- |     IDs:  CVE:CVE-2017-0143
-- |     Risk factor: HIGH
-- |       A critical remote code execution vulnerability exists in Microsoft SMBv1
-- |        servers (ms17-010).
-- |       
-- |     Disclosure date: 2017-03-14
-- |     References:
-- |       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0143
-- |       https://technet.microsoft.com/en-us/library/security/ms17-010.aspx
-- |_      https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/
--
-- @xmloutput
-- <table key="CVE-2017-0143">
-- <elem key="title">Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010)</elem>
-- <elem key="state">VULNERABLE</elem>
-- <table key="ids">
-- <elem>CVE:CVE-2017-0143</elem>
-- </table>
-- <table key="description">
-- <elem>A critical remote code execution vulnerability exists in Microsoft SMBv1
 servers (ms17-010).
</elem>
-- </table>
-- <table key="dates">
-- <table key="disclosure">
-- <elem key="month">03</elem>
-- <elem key="year">2017</elem>
-- <elem key="day">14</elem>
-- </table>
-- </table>
-- <elem key="disclosure">2017-03-14</elem>
-- <table key="refs">
-- <elem>https://technet.microsoft.com/en-us/library/security/ms17-010.aspx</elem>
-- <elem>https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0143</elem>
-- <elem>https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/</elem>
-- </table>
-- </table>
---

author = "Paulino Calderon <paulino()calderonpale.com>"
license = "Same as Nmap--See https://nmap.org/book/man-legal.html"
categories = {"vuln", "safe"}

hostrule = function(host)
  return smb.get_port(host) ~= nil
end

local function check_ms17010(host, port, sharename)
  local status, smbstate = smb.start_ex(host, true, true, sharename, nil, nil, nil)
  if not status then
    stdnse.debug1("Could not connect to '%s'", sharename)
    return false, string.format("Could not connect to '%s'", sharename)
  else
    local overrides = {}
    local smb_header, smb_params, smb_cmd

    stdnse.debug1("Connected to share '%s'", sharename)

    overrides['parameters_length'] = 0x10

    --SMB_COM_TRANSACTION opcode is 0x25
    smb_header = smb.smb_encode_header(smbstate, 0x25, overrides)
    smb_params = string.pack(">I2 I2 I2 I2 B B I2 I4 I2 I2 I2 I2 I2 B B I2 I2 I2 I2 I2 I2",
      0x0,     -- Total Parameter count (2 bytes)
      0x0,     -- Total Data count (2 bytes)
      0xFFFF,  -- Max Parameter count (2 bytes)
      0xFFFF,  -- Max Data count (2 bytes)
      0x0,     -- Max setup Count (1 byte)
      0x0,     -- Reserved (1 byte)
      0x0,     --Flags (2 bytes)
      0x0,     --Timeout (4 bytes)
      0x0,     --Reserved (2 bytes)
      0x0,     --ParameterCount (2 bytes)
      0x4a00,  --ParameterOffset (2 bytes)
      0x0,     --DataCount (2 bytes)
      0x4a00,  -- DataOffset (2 bytes)
      0x02,    -- SetupCount (1 byte)
      0x0,     -- Reserved (1 byte)
      0x2300,  -- PeekNamedPipe opcode
      0x0,     --
      0x0700,  --BCC (Length of "\PIPE\")
      0x5c50,  --\P
      0x4950,  --IP 
      0x455c   --E\
    )
    stdnse.debug2("SMB: Sending SMB_COM_TRANSACTION")
    result, err = smb.smb_send(smbstate, smb_header, smb_params, '', overrides)
    if(result == false) then
      stdnse.debug1("There was an error in the SMB_COM_TRANSACTION request")
      return false, err
    end

    result, smb_header, _, _ = smb.smb_read(smbstate)
    _ , smb_cmd, err = string.unpack("<c4 B I4", smb_header)
    if smb_cmd == 37 then -- SMB command for Trans is 0x25
      stdnse.debug1("Valid SMB_COM_TRANSACTION response received")

      --STATUS_INSUFF_SERVER_RESOURCES indicate that the machine is not patched
      if err == 0xc0000205 then 
        stdnse.debug1("STATUS_INSUFF_SERVER_RESOURCES response received")
        return true
      end
    else
      stdnse.debug1("Received invalid command id.")
      return false, err
    end
  end
end

action = function(host,port)
  local vuln_status, err
  local vuln = {
    title = "Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010)",
    IDS = {CVE = 'CVE-2017-0143'},
    risk_factor = "HIGH",
    description = [[
A critical remote code execution vulnerability exists in Microsoft SMBv1
 servers (ms17-010).
]],
    references = {
    'https://technet.microsoft.com/en-us/library/security/ms17-010.aspx',
    'https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/'
    },
    dates = {
      disclosure = {year = '2017', month = '03', day = '14'},
    }
  }
  local sharename = stdnse.get_script_args(SCRIPT_NAME .. ".sharename") or "IPC$"
  local report = vulns.Report:new(SCRIPT_NAME, host, port)
  vuln.state = vulns.STATE.NOT_VULN

  vuln_status, err = check_ms17010(host, port, sharename)
  if vuln_status then
    stdnse.debug1("This host is missing the patch for ms17-010!")
    vuln.state = vulns.STATE.VULN
  else
    if nmap.verbosity() >=1 then
      return err
    end
  end
  return report:make_output(vuln)
end
Outils de Diagnostic
Outils de Diagnostic Natifs

La console de gestion « Service Bureau à distance » intégrée dans le Gestionnaire de Serveur inclut plusieurs outils de diagnostic et de monitoring, notamment :

  • Services: vous permet de manipuler les services RDS et visualiser leurs états.
  • Performances : vous permet de configurer des compteurs et alertes de performances liés aux différents composants de l’infrastructure RDS
  • BPA (Best Practice Analyzer) : vous permet de vérifier l’état de santé de l’infrastructure RDS
  • Observateurs d’évènements: vous permet de consulter les différents journaux liés aux différents composants de l’infrastructure RDS

Ces outils sont disponibles depuis le volet « Serveurs » depuis la console « Services Bureau à distance »

De plus, après déploiement du serveur RDSH, un outil de diagnostic de Licences RDS est installé et placé dans les outils d’Administration, celui-ci vous permet de visualiser les Licences RDS disponibles ainsi que de vérifier le bon fonctionnement du serveur de Licence RDS et sa disponibilité sur le réseau.

ToDo : Je vous recommande l’exécution du RDS Best Practice Analyzer (BPA) au moins une fois par mois pour vérifier l’état de santé de l’infrastructure RDS 2016 et ses différents composants.

L’outil BPA peut être lancé depuis le volet « Serveurs » sous « BEST PRACTIVE ANALYZER ».

Cliquez sur « TÂCHES » et sélectionnez « Commencer l’analyse BPA».

La boite de dialogue suivante apparaît, sélectionnez le(s) serveur(s) à analyser et cliquez sur « Rechercher » :

Après analyse, le BPA remonte les informations collectées depuis les différents services de rôles RDS et les affiche sous « BEST PRACTICE ANALYZER » :

RDS Diagnostic Tool

Microsoft met à votre disposition un outil gratuit de diagnostic d’une infrastructure RDS 2016 en mode Session et VDI.

Il s’agit de « Remote Desktop Diagnostic Tool », disponible en téléchargement gratuit à l’URL ci-après :

https://www.microsoft.com/en-us/download/details.aspx?id=40890

Il permet de diagnostiquer et vérifier l’état de santé de chaque composant et service de l’infrastructure RDS 2016.

Note : Cet outil est supporté uniquement sur Windows Server 2012, 2012 R2 et 2016. Il ne peut être exécuté sur les plateformes Windows Server 2008 et 2008 R2.

Certains prérequis liés à cet outil existent :

  • Exécution avec un compte utilisateur ayant des privilèges Administrateur
    • Compte Administrateur du domaine ou équivalent
  • Exécution sur un serveur Broker du déploiement RDS à diagnostiquer.
    • Si l’outil est exécuté sur un serveur autre que RDCB, aucune information n‘est collectée et remontée.

Services Windows utilisés par RDS

La solution RDS a besoin des trois services Windows suivant pour fonctionner correctement :

  • Services Bureau à distance (anciennement appelé Service Terminal Services
    • Nom du service : TermService
  • Configuration des Services Bureau à distance
    • Nom du service : SessionEnv
  • Redirecteur de port du mode utilisateur des Services Bureau à distance
    • Nom du service : UmRdpService

Si le Service « TermService » est arrêté, aucune connexion Bureau à distance n’est possible.

Le Service « SessionEnv » offre la possibilité d’apporter des modifications sur le déploiement RDS : création de Collection, modification de paramètres de Collection, ajout de nouveau serveur au déploiement …

Enfin, la redirection des ressources et périphériques locaux vers les sessions Bureau à distance est assuré par le service « UmRdpService », si ce dernier est arrêté, aucun périphérique ni ressource locale ne peut être redirigée vers la Session distante des utilisateurs RDS.

N’hésitez pas à arrêter ces services pour prendre connaissance des risques et impacts sur votre infrastructure RDS 2016.

D’autres sous-services liés à l’infrastructure RDS existent, il s’agit de :

Service de rôle Services Windows associés
Service Hôte de la Session (RDSH) TermService
Service Broker (RDCB) Tssdis
Service Passerelle RDS (RDG) TSGateway
Service de Licence RDS (RDLS) TermServLicensing
Service Accès Web (RDWA) Aucun service Windows associé

Ces services sont listés sur le Volet « Serveurs » de la console « Services Bureau à distance » intégrée dans le Gestionnaire de Serveur, il suffit de sélectionner un serveur ou plusieurs serveurs et visualiser le statut de leurs services Windows liés à RDS sous « Services », dans l’exemple suivant, tous les serveurs du déploiement sont sélectionnés :


Cet Article est un extrait de l’eBook RDS 2016 – Guide du Consultant [2ème Edition]. Bientôt disponible sur BecomeITExpert.com