Mengaudit penggunaan versi Runtime Visual C++

Microsoft Visual C++ Redistributable dan Visual Studio C++ Runtime (secara kolektif, "VC Runtime") adalah komponen penting dari banyak aplikasi. Di seluruh jaringan Anda, komputer mungkin masih menjalankan aplikasi yang menginstal dan menggunakan versi VC Runtime yang tidak didukung. Anda dapat menggunakan audit file NTFS untuk mengidentifikasi penggunaan tersebut sebagai langkah untuk mengganti aplikasi tersebut dengan aplikasi yang menggunakan versi Runtime VC yang didukung. Artikel ini memandu Anda dalam menyiapkan audit file NTFS, memberikan tips pemecahan masalah, dan menyoroti manfaat audit rutin.

Untuk informasi selengkapnya tentang versi VC Runtime yang tidak lagi didukung, lihat Microsoft Visual C++ Redistributable unduhan terbaru yang masih didukung.

Mengaktifkan audit file NTFS untuk menentukan penggunaan Runtime VC

Artikel ini menyediakan langkah-langkah untuk mengaktifkan audit file NTFS secara manual dan meninjau peristiwa audit untuk menentukan aplikasi mana yang memanggil versi Runtime VC yang tidak didukung. Karena ada beberapa file yang dapat digunakan aplikasi, artikel ini juga menunjukkan cara menggunakan PowerShell dan cmdlet untuk memperbarui izin audit. Untuk informasi selengkapnya tentang cara mengonfigurasi kebijakan audit untuk file, lihat Menerapkan kebijakan audit dasar pada file atau folder.

Mengaktifkan audit akses objek secara manual pada sistem

Akses objek harus diaktifkan sebelum Anda mengaktifkan audit tingkat file:

  1. Pilih Windows+R untuk membuka dialog Run. Lalu masukkan dan pilih Enter untuk membuka Editor Kebijakan Grup Lokal.
  2. Buka Konfigurasi Komputer>Pengaturan Windows>Pengaturan Keamanan>Konfigurasi Kebijakan Audit Tingkat Lanjut>Kebijakan Audit Sistem>Akses Objek.
  3. Klik dua kali Audit Sistem File. Dalam dialog Properti Sistem File Audit, pilih Mengonfigurasi peristiwa audit berikutBerhasilOK.
  4. Tutup Editor Kebijakan Grup Lokal.

Atau, Anda dapat menggunakan untuk mengaktifkan akses objek:

  1. Cantumkan pengaturan saat ini dari baris perintah dengan .
  2. Aktifkan akses objek dengan .

Mengaktifkan audit secara manual pada file

Untuk memantau proses mana yang mengakses file VC Runtime, aktifkan audit pada file VC Runtime:

  1. Klik kanan file yang ingin Anda audit, pilih Properti, lalu pilih tab Keamanan. Untuk informasi selengkapnya tentang menemukan file Runtime VC yang terinstal, lihat lokasi terinstal VC Runtime.
  2. Pilih Tingkat Lanjut .
  3. Dalam dialog Pengaturan Keamanan Tingkat Lanjut , pilih tab Audit lalu pilih Lanjutkan.
  4. Untuk menambahkan aturan audit baru, pilih Tambahkan. Dalam dialog Entri Audit , pilih prinsipal, lalu masukkan nama pengguna atau grup yang ingin Anda tambahkan, seperti (Semua Orang). Kemudian pilih OK.
  5. Pada Tipe, pastikan bahwa Berhasil dipilih.
  6. Pilih Tampilkan izin tingkat lanjutHapus semua folderTraverse / jalankan fileOK.
  7. Amati bahwa baris baru dalam entri Audit cocok dengan apa yang Anda pilih. Pilih OK.
  8. Dalam dialog Properti , pilih OK.

Aturan audit sekarang diaktifkan untuk file tersebut.

Meninjau log audit secara manual

Audit file NTFS menghasilkan Peristiwa 4663: Upaya dilakukan untuk mengakses objek untuk setiap file yang menyertakan izin audit dan diakses oleh proses.

  1. Pilih Windows+R untuk membuka dialog Run. Kemudian masukkan eventvwr.msc dan pilih Enter untuk membuka Pemantau Peristiwa.
  2. Buka log Keamanan di Pemantau Peristiwa dengan memperluas Log Windows>Keamanan. Panel hasil mencantumkan peristiwa keamanan.
  3. Temukan peristiwa audit dengan memilih Filter Log Terkini... di panel Tindakan. Untuk mempersempit peristiwa ke ID Peristiwa 4663 (Keberhasilan Audit untuk Kategori Sistem File), masukkan 4663 di kotak teks Sertakan/Kecualikan ID Peristiwa .

Untuk contoh Peristiwa Audit Akses File 4663, lihat 4663(S): Upaya dilakukan untuk mengakses objek.

Menggunakan PowerShell untuk mengaudit penggunaan VC Runtime

Untuk memperbarui izin audit file dengan PowerShell, ikuti langkah-langkah berikut:

  1. Tentukan aturan audit sistem file untuk diterapkan ke file.
  2. Dapatkan penjelas keamanan file dengan .
  3. Terapkan aturan audit ke deskriptor keamanan.
  4. Terapkan deskriptor keamanan yang diperbarui pada file asli dengan .
  5. Lihat catatan Peristiwa Pengauditan Akses File 4663 dalam .

PowerShell: Mengaudit file VC Runtime yang tidak didukung

Kode PowerShell berikut memungkinkan Anda mengaudit file VC Runtime yang terinstal yang tidak lagi didukung.

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: Menampilkan peristiwa audit file

PowerShell menyediakan untuk mendapatkan rekaman peristiwa untuk berbagai log peristiwa, seperti yang diperlihatkan dalam kode PowerShell berikut yang mencantumkan semua rekaman Peristiwa Audit Akses File 4663 selama 24 jam terakhir:

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

Langkah selanjutnya setelah mengaudit penggunaan VC Runtime

Setelah Anda menentukan proses mana yang menggunakan file VC Runtime, atau aplikasi mana yang menginstal Visual C++ Redistributable, hapus instalan aplikasi tersebut atau tingkatkan ke versi yang lebih baru yang tidak bergantung pada Runtime VC yang tidak didukung.

Beberapa aplikasi Microsoft memerlukan versi lama dari VC Runtime. Untuk informasi selengkapnya, lihat Tanya Jawab Umum Pustaka Visual C++ Redistributable dan Runtime.

Lokasi penginstalan VC Runtime

Tabel berikut ini mencantumkan tempat setiap versi VC Runtime diinstal.

Versi Visual Studio Lokasi terinstal
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