Audit využití verze modulu runtime Visual C++

Redistribuovatelné součásti Microsoft Visual C++ a modul Visual Studio C++ Runtime (souhrnně "VC Runtime") jsou důležitými součástmi mnoha aplikací. V síti můžou počítače stále spouštět aplikace, které instalují a používají verzi modulu VC Runtime, která není podporována. Auditování souborů NTFS můžete použít k identifikaci takového použití jako kroku k nahrazení těchto aplikací těmi, které používají podporovanou verzi modulu runtime VC. Tento článek vás provede nastavením auditování souborů NTFS, získáte tipy pro řešení potíží a seznámíte se s výhodami pravidelných auditů.

Další informace o verzích modulu runtime VC, které již nejsou podporovány, naleznete v tématu Microsoft Visual C++ Redistributable nejnovější podporované soubory ke stažení.

Povolení auditování souborů NTFS k určení využití modulu runtime VC

Tento článek poskytuje postup k ručnímu povolení auditování souborů NTFS a zkontrolování událostí auditu pro určení, které aplikace volají nepodporované verze Visual C++ Runtime. Vzhledem k tomu, že aplikace může použít několik souborů, tento článek také ukazuje, jak použít PowerShell a rutiny k aktualizaci oprávnění auditování. Další informace o tom, jak nakonfigurovat zásady auditu pro soubor, najdete v tématu Použití základních zásad auditu u souboru nebo složky.

Ruční povolení auditování přístupu k objektům v systému

Aby bylo možné povolit auditování na úrovni souboru, musí být povolený přístup k objektům:

  1. Výběrem Windows+R pro otevření dialogového okna Spustit. Pak zadejte text a stiskněte Enter pro otevření Editoru místních zásad skupiny.
  2. Přejděte na Počítačová konfiguraceNastavení systému WindowsNastavení zabezpečeníPokročilá konfigurace zásad audituZásady auditu systémuObjektový přístup.
  3. Dvakrát klikněte na Audit systém souborů. V dialogovém okně Vlastnosti auditování systému souborů vyberte Nakonfigurujte následující auditní událostiÚspěšnéOK.
  4. Zavřete Editor místního Zásady skupiny.

Případně můžete povolit přístup k objektům:

  1. Zobrazte seznam aktuálních nastavení z příkazového řádku s .
  2. Povolte přístup k objektům pomocí .

Ruční povolení auditování souboru

Pokud chcete monitorovat, který proces přistupuje k souboru modulu runtime VC, povolte auditování v souboru modulu runtime VC:

  1. Klikněte pravým tlačítkem myši na soubor, který chcete auditovat, vyberte Vlastnostia pak vyberte kartu Zabezpečení. Další informace o vyhledání nainstalovaných souborů modulu runtime VC naleznete v tématu nainstalované umístění modulu VC Runtime.
  2. Vyberte Rozšířené.
  3. V dialogovém okně Upřesnit nastavení zabezpečení vyberte kartu Auditování a pak vyberte Pokračovat.
  4. Pokud chcete přidat nové pravidlo auditování, vyberte Přidat. V dialogovém okně Položka auditování vyberte subjekt a zadejte jméno skupiny nebo uživatele, jehož přidání požadujete, například (Všichni). Pak vyberte OK.
  5. V sekci Typ se ujistěte, že je vybrána možnost Úspěch.
  6. Vyberte Zobrazit pokročilá oprávněníVymazat všeProcházet složky / spouštět souboryOK.
  7. Všimněte si, že nový řádek v položkách auditování odpovídá tomu, co jste vybrali. Vyberte OK.
  8. V dialogovém okně Vlastnosti vyberte OK.

Pro soubor je teď povolené pravidlo auditu.

Ruční kontrola protokolů auditu

Auditování souborů NTFS generuje událost 4663: Došlo k pokusu o přístup k objektu pro každý soubor, který zahrnuje oprávnění auditu a ke kterému přistupuje proces.

  1. Otevřete dialogové okno Spustit výběrem Windows+R. Potom zadejte eventvwr.msc a výběrem Enter otevřete Prohlížeč událostí.
  2. Přejděte do protokolů Zabezpečení v Prohlížeči událostí rozbalením Protokolů Windows>Zabezpečení. V podokně výsledků jsou uvedeny události zabezpečení.
  3. Události auditu najdete tak, že v podokně Akce zvolíte Filtrovat aktuální protokol.... Pokud chcete zúžit události na ID události 4663 (Úspěch auditu pro kategorii systému souborů), zadejte do textového pole Včetně/Vyloučení ID událostí 4663.

Příklad události auditování přístupu k souborům 4663 najdete v tématu 4663(S): Došlo k pokusu o přístup k objektu.

Auditování využití modulu runtime VC pomocí PowerShellu

Pokud chcete aktualizovat oprávnění auditování souborů pomocí PowerShellu, postupujte takto:

  1. Definujte pravidlo auditu systému souborů , které se má na soubory použít.
  2. Získejte popisovač zabezpečení souboru pomocí .
  3. Použít pravidlo auditu na popisovač zabezpečení.
  4. Použijte aktualizovaný popisovač zabezpečení v původním souboru s .
  5. Zobrazte záznamy auditování přístupu k souborům 4663 s .

PowerShell: Audit souborů modulu runtime VC bez podpory

Následující kód PowerShellu umožňuje auditovat nainstalované soubory VC Runtime, které se už nepodporují.

function Get-AuditRuleForFile {
    $auditRuleArguments =   'Everyone'              <# identity #>,
                            'ExecuteFile, Traverse' <# fileSystemRights #>,
                            'Success'               <# flags #>
    $auditRule = New-Object System.Security.AccessControl.FileSystemAuditRule($auditRuleArguments)

    return $auditRule
}

function Set-FileAuditRule {
    param (
        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [string]$file,
        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [System.Security.AccessControl.FileSystemAuditRule]$auditRule
    )

    $existingAcl = Get-Acl -Path $file
    $existingAcl.AddAuditRule($auditRule) | Out-Null
    Set-Acl -Path $file -AclObject $existingAcl
}

$newAuditRule = Get-AuditRuleForFile

# Visual Studio Redistributable for 2005 (VC++ 8.0) and 2008 (VC++ 9.0)
Get-ChildItem "$ENV:SystemRoot\WinSxS\Fusion" -filter '*.dll' -ErrorAction SilentlyContinue -Recurse |
Where-Object FullName -IMatch 'microsoft\.vc[89]0' |
ForEach-Object {
    Set-FileAuditRule $_.FullName $newAuditRule
}

# Visual Studio Redistributable for 2010 (VC++ 10.0), 2012 (VC++ 11.0) and 2013 (VC++ 12.0)
$languageCodes = 'chs|cht|deu|enu|esn|fra|ita|jpn|kor|rus'
$versions = '(1[012]0)'
$regex = "^((atl|msvc[pr]|vcamp|vccorlib|vcomp)$versions|mfc$versions(u|$languageCodes)?|mfcm$versions(u)?)\.dll$"
Get-ChildItem "$ENV:SystemRoot\SysWOW64","$ENV:SystemRoot\System32" -filter '*.dll' |
Where-Object Name -imatch $regex |
ForEach-Object {
    Set-FileAuditRule $_.FullName $newAuditRule
}

PowerShell: Zobrazení událostí auditu souborů

PowerShell poskytuje získání záznamů událostí pro různé protokoly událostí, jak je znázorněno v následujícím kódu PowerShellu, který uvádí všechny záznamy auditování přístupu k souborům za posledních 24 hodin:

function Get-AuditEntries {
    param (
        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [System.DateTime]$oldestTime
    )
    Get-WinEvent -FilterHashtable @{LogName='Security';Id=4663;StartTime=(Get-Date $oldestTime)} |
    ForEach-Object {
        $record = [ordered]@{}
        $record['TimeCreated'] = $_.TimeCreated
        $accessName = ($_.Message |
            Select-String -Pattern "Accesses:[\t\s]+(?<Accesses>.+)").Matches.Groups[1]
        ([xml]$_.ToXML()).Event.EventData.ChildNodes |
        ForEach-Object -Begin {
            $record[$accessName.Name]=$accessName.Value.Trim()
        } -Process {
            $record[$_.Name] = $_.'#text'
        }
        [PSCustomObject]$record
    } |
    Where-Object { $_.ObjectName -imatch '\.dll$'}
}

Get-AuditEntries -oldestTime (Get-Date).AddHours(-24)
TimeCreated : 11/20/2024 5:00:11 AM
Accesses : Execute/Traverse
SubjectUserSid : \*\*\*\*\*
SubjectUserName : \*\*\*\*\*
SubjectDomainName : WORKGROUP
SubjectLogonId : \*\*\*\*\*
ObjectServer : Security
ObjectType : File
ObjectName : C:\\Windows\\WinSxS\\amd64\_microsoft.vc90.crt\_1fc8b3b9a1e18e3b\_9.0.30729.9635\_none\_08e2c157a83ed5da\\msvcr90.dll
HandleId : 0x93c
AccessList : %%4421
AccessMask : 0x20
ProcessId : 0x24d4
ProcessName : C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe
ResourceAttributes : S:AI

Další kroky po auditování využití modulu runtime VC

Jakmile určíte, které procesy používají soubory modulu runtime VC nebo které aplikace nainstalovaly distribuovatelné součásti Visual C++, odinstalujte tyto aplikace nebo je upgradujte na novější verze, které nezávisí na nepodporovaných modulech runtime VC.

Některé aplikace Microsoftu vyžadují starší verze modulu runtime VC. Další informace najdete v nejčastějších dotazech k redistribuovatelným knihovnám Visual C++ a runtime.

Umístění instalace prostředí VC Runtime

Následující tabulka uvádí, kde je nainstalovaná každá verze modulu runtime VC.

verze Visual Studio Nainstalovaná umístění
Visual Studio 2013 (VC++ 12.0) %SystemRoot%\\System32, %SystemRoot%\\SysWOW64
Visual Studio 2012 (VC++ 11.0) %SystemRoot%\\System32, %SystemRoot%\\SysWOW64
Visual Studio 2010 (VC++ 10.0) %SystemRoot%\\System32, %SystemRoot%\\SysWOW64
Visual Studio 2008 (VC++ 9.0) %SystemRoot%\\WinSxS\\Fusion
Visual Studio 2005 (VC++ 8.0) %SystemRoot%\\WinSxS\\Fusion
  • Redistribuce souborů Visual C++
  • nejnovější podporované soubory visual C++ ke stažení
  • Nejčastější dotazy k životnímu cyklu: Redistribuovatelné knihovny Visual C++ a runtime
  • binární kompatibilita C++ mezi verzemi Visual Studio