Случайные аппаратные адреса в Windows

Случайные аппаратные адреса в Windows 11

Добрый день! Уважаемые читатели и гости блога. В современном мире, где портативность и мобильность — это стиль жизни, очень остро встает вопрос информационной безопасности. WiFI дает вам не только удобный беспроводной доступ в сеть, но и становится точкой входа и компрометации вашего устройства. Компания Microsoft старается идти в ногу со временем и принимать на себя актуальные вызовы. В результате в Windows появился функционал случайных аппаратных адресов, которые можно использовать при подключении через WiFi, позволяя дополнительно защитить вашу систему, но в корпоративном сегменте, это может вызывать дополнительные проблемы. Сегодня я вам покажу, как активировать или отключить данную функциональность.

Что такое случайные аппаратные адреса?

Случайные аппаратные адреса (Random Hardware Addresses, RHA) - решают вопрос безопасности при подключении к WiFI сети, с помощью алгоритма генерирования временного MAC-адреса для WiFi адаптера. Это повышает конфиденциальность и существенно затрудняет отслеживание данного устройства, особенно в публичных сетях. Например, если вы живете в Москве, то катаясь на метро, всегда можно подключиться там к бесплатному WiFi. В рамках данной локальной сети, может быть что угодно, поэтому если есть возможность усилить безопасность, лучше это сделать. Ранее пользователей спасала функция смены MAC-адреса в ручном режиме (Она доступна и сейчас), но это неудобно, так как у вас например дома или в компании, для каких-то точек, доступ может фильтроваться по MAC-адресам, и если вы его поменяете, то доступ пропадет.

Читайте так же - Алгоритм генерации MAC адресов для виртуальных машин ESXI

Еще очень интересно, что вам доступны случайные MAC-адреса как для всех сетей WiFi. так и для отдельной

Нужно ли включать или отключать генерацию случайных MAC-адресов

Тут однозначного решения нет, все зависит от вашей ситуации и задач, и конечно окружения. Если техника не доменная. и вы часто сидите в общественных местах с использование WiFi, то включать я рекомендую, если техника корпоративная, то я советую это отключать системным администраторам

Плюсы и минусы
Позволяет быть более анонимным и защищенным в публичных сетях
Простота активации
Администраторам будет сложнее отслеживать устройство в корпоративной сети
Могут быть проблемы с доступом, если есть фильтрации по MAC-адресам
Могут перестать работать какие-то лицензии, где привязка была к аппаратным адресам

Как включить случайные аппаратные адреса через графический интерфейс

Я буду показывать все на своей рабочей Windows 11 со всеми обновлениями на июнь 2025 года. Для активации функции RHA вам необходимо открыть параметры системы, с помощью сочетания клавиш WIN + I. Далее перейти в раздел "Сеть и Интернет", найти там пункт "Случайные аппаратные адреса (Random Hardware Addresses)". и активируйте его. Я это сделаю, но вначале я посмотрю текущий MAC-адрес, чтобы видеть как работает технология.

Случайные аппаратные адреса

Для просмотра текущего MAC-адреса на WiFi-адаптере я воспользуюсь PowerShell.

Другие методы просмотра MAC-адресов в системе

Выполните команду:

Get-NetAdapter

Просмотр MAC-адреса через PowerShell

Или более избирательно - Get-NetAdapter | Where-Object {$_.MediaType -match 'Native 802.11'}| select Name, MacAddress,InstanceID

Узнаем MAC-адрес через командлет

RHA я активировал, это делает на лету, теперь попробуем посмотреть ее в действии.

Активированная опция RHA

Подключаемся к WiFi сети. После успешного подключения, у меня появился новый MAC-адрес 62-28-77-12-AA-7E.

Успешная смена MAC-адреса через RHA

При повторном подключении к данной известной сети, MAC-адрес не поменяется. Но это можно изменить

В разделе WiFi перейдите в пункт "Управление известными сетями"

Управление известными сетями

Выберите интересующую вас сеть, в моем примере это сеть Pyatilistnik. Провалитесь в ее свойства.

Свойства известной WiFi сети

Найдите раздел "Случайные аппаратные адреса", у вас будет три опции:

  • Вкл — Генерация MAC-адресов активна
  • Выкл — Генерация случайных MAC-адресов выключена
  • Изменять ежедневно — Если данного пункта нет. то либо ваш адаптер его не поддерживает. либо устаревшие драйвера.

Ежедневное изменение MAC-адреса через RHA

Теперь вы должны уловить, что вы можете не включать RHA опцию верхнеуровнево для всех WiFi сетей, а можете включить ее для известных сетей. точечно.

После переподключения. я вижу, что у меня успешно поменялся MAC-адрес для WiFi-адаптера.

Работа Random Hardware Addresses

Как запретить изменение случайных аппаратных адресов через реестр Windows

Выше мы с вами научились получать InstanceID у WiFi адаптера. В моем примере это {A8CDAB34-8729-488E-8CE2-5F36392D82A9}.

Поиск InstanceID

В реестре Windows есть куст по пути:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}

Там может быть много разделов, в одном из которых будет наш InstanceID полученный ранее. Чтобы долго не блуждать, а попасть сразу куда нам нужно, я советую вам взять мой небольшой скрипт и запустить его в ISE.

$regPath = "HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}"

$searchValue = "{A8CDAB34-8729-488E-8CE2-5F36392D82A9}"

$subKeys = Get-ChildItem -Path $regPath -ErrorAction SilentlyContinue

foreach ($key in $subKeys) {
$properties = Get-ItemProperty -Path $key.PSPath

foreach ($prop in $properties.PSObject.Properties) {
if ($prop.Name -notlike "PS*") {
if ($prop.Value -like "*$searchValue*") {
Write-Host "Найдено в разделе: $($key.PSPath)"
Write-Host "Параметр: $($prop.Name)"
Write-Host "Значение: $($prop.Value)`n"
}
}
}
}

Write-Host "Поиск завершен."

В результате вы получите полный путь, в моем примере это:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0005

Поиск куста реестра где лежит настройка RNA

Проверяем на всякий случай, что там есть ключ реестра NetCfgInstanceId с нужным нам InstanceID (У меня это {A8CDAB34-8729-488E-8CE2-5F36392D82A9})

Ключ реестра NetCfgInstanceId

В данном разделе реестра вам нужно создать ключ с типом REG_SZ (Строковый) и именем NetworkAddress. В качестве значения нужно указать реальный MAC-адрес вашего WiFI-адаптера. В моем случае это 94-E2-3C-8E-89-EC, единственное вам нужно убрать из него тире, должно получиться вот в таком формате 94E23C8E89EC.

Ключ реестра NetworkAddress

Теперь, чтобы у вас применились настройки, вам необходимо перезагрузить систему. После перезагрузки опция "Случайные аппаратные адреса" стала неактивной.

Отключенная опция случайные аппаратные ключи

Как отключить опцию случайных аппаратных адресов через групповые политики

К сожалению, Microsoft не позаботилась, о том, чтобы данная настройка была бы в рамках ADMX шаблонов. Поэтому я буду выкручиваться с помощью PowerShell и моего скрипта. Для начала давайте я приведу скрипт и что он делает:

  • Находит первый Wi-Fi адаптер (с MediaType 'Native 802.11')

  • Извлекает его InstanceID и MAC-адрес (удаляя дефисы)

  • Ищет в реестре раздел, где NetCfgInstanceId соответствует найденному InstanceID

  • Создает или обновляет параметр NetworkAddress с очищенным MAC-адресом

  • Выводит информацию о выполненных действиях

Для начала я вам его советую проверить на ноутбуке, запустив там PowerShell ISE в режиме администратора.

# Шаг 1: Получаем информацию о Wi-Fi адаптере
$wifiAdapter = Get-NetAdapter | Where-Object {$_.MediaType -match 'Native 802.11'} | select Name, MacAddress, InstanceID -First 1

if ($wifiAdapter -eq $null) {
Write-Host "Wi-Fi адаптер не найден!"
exit
}

$instanceID = $wifiAdapter.InstanceID
$macAddress = $wifiAdapter.MacAddress -replace '-','' # Удаляем дефисы из MAC-адреса

Write-Host "Найден Wi-Fi адаптер:"
Write-Host "Имя: $($wifiAdapter.Name)"
Write-Host "MAC-адрес: $macAddress"
Write-Host "InstanceID: $instanceID`n"

# Шаг 2: Ищем в реестре соответствующий InstanceID
$regPath = "HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}"
$foundKey = $null

# Шаг 3: Получаем все подразделы
$subKeys = Get-ChildItem -Path $regPath -ErrorAction SilentlyContinue

foreach ($key in $subKeys) {
$netCfgInstanceId = Get-ItemProperty -Path $key.PSPath -Name "NetCfgInstanceId" -ErrorAction SilentlyContinue
if ($netCfgInstanceId -ne $null -and $netCfgInstanceId.NetCfgInstanceId -eq $instanceID) {
$foundKey = $key
break
}
}

if ($foundKey -eq $null) {
Write-Host "Не найдена ветка реестра для InstanceID: $instanceID"
exit
}

Write-Host "Найдена ветка реестра: $($foundKey.PSPath)`n"

# Шаг 4-5: Создаем параметр NetworkAddress с MAC-адресом
$fullPath = $foundKey.PSPath
Write-Host "Создаю параметр NetworkAddress в ветке: $fullPath"
Write-Host "Значение: $macAddress"

# Создаем или обновляем параметр
Set-ItemProperty -Path $fullPath -Name "NetworkAddress" -Value $macAddress -Type String

Write-Host "`nГотово! Не забудьте перезагрузить компьютер или отключить/включить адаптер для применения изменений."

Скрипт по отключению случайных аппаратных адресов

Далее вам нужно сохранить этот скрипт себе локально, потом создать групповую политику в которой он будет запускаться при запуске системы. Второй вариант это использование SCCM. Оба варианта я подробно описывал в отдельных статьях.

Как обратно включить случайные аппаратные адреса?

Самый быстрый вариант повторной активации опции случайных аппаратных адресов. это удаление из нужной ветки реестра ключа NetworkAddress. Этот вариант подойдет как локально, так и для корпоративного сегмента, где нужно произвести массовый откат.

# Шаг 1: Получаем информацию о Wi-Fi адаптере
$wifiAdapter = Get-NetAdapter | Where-Object {$_.MediaType -match 'Native 802.11'} | Select-Object Name, MacAddress, InstanceID -First 1

if ($null -eq $wifiAdapter) {
Write-Host "Wi-Fi адаптер не найден!" -ForegroundColor Red
exit
}

$instanceID = $wifiAdapter.InstanceID
$macAddress = $wifiAdapter.MacAddress

Write-Host "Найден Wi-Fi адаптер:"
Write-Host "Имя: $($wifiAdapter.Name)"
Write-Host "MAC-адрес: $macAddress"
Write-Host "InstanceID: $instanceID`n"

# Шаг 2: Ищем в реестре соответствующий InstanceID
$regBasePath = "HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}"
$foundKeyPath = $null

# Получаем все подразделы
$subKeys = Get-ChildItem -Path $regBasePath -ErrorAction SilentlyContinue | Where-Object {
$_.Name -notmatch 'Properties' -and $_.PSChildName -ne 'Configuration'
}

foreach ($key in $subKeys) {
$netCfgInstanceId = Get-ItemProperty -Path $key.PSPath -Name "NetCfgInstanceId" -ErrorAction SilentlyContinue
if ($netCfgInstanceId -ne $null -and $netCfgInstanceId.NetCfgInstanceId -eq $instanceID) {
$foundKeyPath = $key.PSPath
break
}
}

if ($null -eq $foundKeyPath) {
Write-Host "Не найдена ветка реестра для InstanceID: $instanceID" -ForegroundColor Red
exit
}

Write-Host "Найдена ветка реестра: $foundKeyPath`n"

# Шаг 3-4: Проверяем и удаляем ключ NetworkAddress
$property = Get-ItemProperty -Path $foundKeyPath -Name "NetworkAddress" -ErrorAction SilentlyContinue

if ($null -ne $property) {
Write-Host "Найден ключ NetworkAddress, текущее значение: $($property.NetworkAddress)"
Write-Host "Удаляю ключ NetworkAddress..."

# Удаляем параметр
Remove-ItemProperty -Path $foundKeyPath -Name "NetworkAddress" -ErrorAction Stop

Write-Host "Ключ NetworkAddress успешно удален!" -ForegroundColor Green
Write-Host "Для применения изменений перезагрузить компьютер или переподключить адаптер."
} else {
Write-Host "Ключ NetworkAddress не найден в указанной ветке." -ForegroundColor Yellow
}

Скрипт включения случайных аппаратных адресов

Оцените статью
Настройка серверов windows и linux
Добавить комментарий