Драйверы — неотъемлемая часть операционной системы, но связанные с ними уязвимости часто недооцениваются. Windows очень легко загружает на уровень ядра практически любые драйверы: подписанные/неподписанные, старые/новые. Если вредоносный код распространяется таким образом, то его трудно обнаружить.
Старые 32-битные драйверы обычно шли без цифровой подписи. Но даже введение обязательной подписи не решило проблему полностью. Во-первых, злоумышленники могут использовать украденные сертификаты. Во-вторых, они используют для своих целей официально сертифицированные драйверы от доверенных издателей: Lenovo, ASRock, Asustek, Dell и др. Такие «троянские» драйверы присутствуют на многих компьютерах, но антивирусы не считают их угрозой.
Атака через драйвер
В прошлом году исследователи Symantec обнаружили бэкдор Daxin, который предположительно разработан одной из иностранных разведок для шпионажа (возможно, китайскими специалистами).
Daxin специально разработан для проникновения в хорошо защищённые сети, где работают антивирусы и файрволы. Поэтому он распространялся под видом драйвера Windows. Это и позволило ему долгое время успешно скрываться. По мнению исследователей, Daxin давно и успешно работал в корпоративных сетях западных агентств, собирая информацию для иностранных заказчиков.
Исследователи Symantec сравнили Daxin с крайне продвинутым бэкдором Regin образца 2014 года, который тоже проникал на уровень ядра ОС и выгружал свои рабочие бинарники как драйверы Windows:
Мониторинг драйверов позволяет обнаружить потенциальные угрозы на ранней стадии, что даёт возможность принять оперативные меры по устранению уязвимостей, удалению вредоносных драйверов и минимизации риска эксплуатации.
LOLDrivers
Проект LOLDrivers (Living Off The Land Drivers) ставит целью объединить в одном месте как можно больше уязвимых и вредоносных драйверов Windows от официальных издателей, открыв эту информацию для всех желающих. Это очень ценный ресурс, который помогает организациям лучше понять и снизить риски безопасности, связанные с драйверами.
На главной странице представлен список драйверов с датой добавления в каталог. Тут же есть фильтр для более удобного поиска конкретных названий файлов. Для каждого драйвера указана ссылка на бюллетень безопасности с описанием атаки, которая возможна через этот драйвер (обычно речь идёт о повышении привилегий для последующего запуска вредоносного кода из другого файла),
Список можно получать через API в форматах CSV и JSON. Для обнаружения уязвимых драйверов по хэшу разработан конфиг для sysmon и sigma-правило для корпоративных систем SIEM.
- Примеры уязвимых драйверов (с ненамеренными ошибками в коде, которые позволяют эксплуатацию уязвимостей: capcom.sys и asrdrv10.sys.
- Примеры вредоносных драйверов, которые специально спроектированы для таргетированных атак в стиле Daxin: gtfkyj64.sys и wantd.sys.
Родственные проекты:
- LOLBAS (Living Off The Land Binaries, Scripts and Libraries), список опасных бинарников, скриптов и библиотек под Windows. Для каждого указана официальная функциональность и векторы возможных атак, то есть как этот бинарник могут использовать злоумышленники.
- GTFOBins: список 375 бинарников Unix, которые могут использоваться для обхода локальных ограничений безопасности в неправильно сконфигурированных системах.
Cписки узявимых драйверов Windows — ценная информация и для самих злоумышленников, чтобы найти способ проникнуть в защищённую систему. Но хочется надеяться, что работа исследователей по составлению каталога потенциальных угроз принесёт больше пользы, чем вреда.
Проверка подписи драйверов
Для проверки подписи файлов под Windows и просмотра цепочки сертификатов рекомендуется использовать утилиту командной строки sigcheck. Она также поддерживает проверку файла в каталоге VirusTotal, который объединяет информацию с 40 антивирусных сканеров, с опцией загрузки файла для проверки.
Например, поиск всех неподписанных файлов в каталоге
\Windows\System32
выполняется следующей командой:sigcheck -u -e c:\windows\system32
Sigcheck показывает информацию о сертификатах и издателе каждого драйвера:
В консоли PowerShell можно посмотреть подробности о драйверах с помощью команды
Get-ItemProperty
:Get-ItemProperty -Path C:\Users\Administrator\Desktop\5400414768496640\* | Format-list -Property VersionInfo
Результат:
VersionInfo : File: \06a0ec9a316eb89cb041b1907918e3ad3b03842ec65f004f6fa74d57955573a4 InternalName: wantd.sys OriginalFilename: wantd.sys FileVersion: 6.1.7600.1172 FileDescription: WAN Transport Driver Product: Microsoft Windows Operating System ProductVersion: 6.1.7600.1172 Debug: False Patched: False PreRelease: False PrivateBuild: False SpecialBuild: False Language: English (United States) … и т. д.
Информация о сертификатах:
Get-AuthenticodeSignature -FilePath .\Desktop\5400414768496640\*
Результат:
SignerCertificate Status Path ----------------- ------ ---- 84E01D467068826892F41AF4A48D5493BABE62E9 UnknownError 06a0ec9a316eb89cb041b1907918e3ad3b03842ec65f004f6fa74d57955573a4 84E01D467068826892F41AF4A48D5493BABE62E9 UnknownError 0f82947b2429063734c46c34fb03b4fa31050e49c27af15283d335ea22fe0555 84E01D467068826892F41AF4A48D5493BABE62E9 HashMismatch 3e7724cb963ad5872af9cfb93d01abf7cd9b07f47773360ad0501592848992f4 84E01D467068826892F41AF4A48D5493BABE62E9 Valid 49c827cf48efb122a9d6fd87b426482b7496ccd4a2dbca31ebbf6b2b80c98530 C61A221389C98EE2FBC0E57A62DEE5A915E6C509 UnknownError 5bc3994612624da168750455b363f2964e1861dba4f1c305df01b970ac02a7ae C61A221389C98EE2FBC0E57A62DEE5A915E6C509 UnknownError 5c1585b1a1c956c7755429544f3596515dfdf928373620c51b0606a520c6245a 84E01D467068826892F41AF4A48D5493BABE62E9 Valid 6908ebf52eb19c6719a0b508d1e2128f198d10441551cbfb9f4031d382f5229f NotSigned 7a7e8df7173387aec593e4fe2b45520ea3156c5f810d2bb1b2784efd1c922376 NotSigned 81c7bb39100d358f8286da5e9aa838606c98dfcc263e9a82ed91cd438cb130d1 84E01D467068826892F41AF4A48D5493BABE62E9 HashMismatch 8d9a2363b757d3f127b9c6ed8f7b8b018e652369bc070aa3500b3a978feaa6ce NotSigned 8dafe5f3d0527b66f6857559e3c81872699003e0f2ffda9202a1b5e29db2002e NotSigned 96bf3ee7c6673b69c6aa173bb44e21fa636b1c2c73f4356a7599c121284a51cc NotSigned 9c2f3e9811f7d0c7463eaa1ee6f39c23f902f3797b80891590b43bbe0fdf0e51 84E01D467068826892F41AF4A48D5493BABE62E9 UnknownError b0eb4d999e4e0e7c2e33ff081e847c87b49940eb24a9e0794c6aa9516832c427 84E01D467068826892F41AF4A48D5493BABE62E9 HashMismatch b9dad0131c51e2645e761b74a71ebad2bf175645fa9f42a4ab0e6921b83306e3 NotSigned c0d88db11d0f529754d290ed5f4c34b4dba8c4f2e5c4148866daabeab0d25f9c NotSigned e6a7b0bc01a627a7d0ffb07faddb3a4dd96b6f5208ac26107bdaeb3ab1ec8217 84E01D467068826892F41AF4A48D5493BABE62E9 HashMismatch
Статус сертификатов:
Get-ChildItem C:\Users\Administrator\Desktop\5400414768496640\* | Get-AuthenticodeSignature | ` Select-Object -Property Path,ISOSBinary,SignatureType,Status,StatusMessage | ` Export-CSV C:\temp\Signature.csv -NoTypeInformation
Результат:
"Path","IsOSBinary","SignatureType","Status","StatusMessage" "C:\Users\Administrator\Desktop\5400414768496640\06a0ec9a316eb89cb041b1907918e3ad3b03842ec65f004f6fa74d57955573a4","False","Authenticode","UnknownError","A required certificate is not within its validity period when verifying against the current system clock or the timestamp in the signed file" "C:\Users\Administrator\Desktop\5400414768496640\0f82947b2429063734c46c34fb03b4fa31050e49c27af15283d335ea22fe0555","False","Authenticode","UnknownError","A required certificate is not within its validity period when verifying against the current system clock or the timestamp in the signed file" "C:\Users\Administrator\Desktop\5400414768496640\3e7724cb963ad5872af9cfb93d01abf7cd9b07f47773360ad0501592848992f4","False","Authenticode","HashMismatch","The contents of file C:\Users\Administrator\Desktop\5400414768496640\3e7724cb963ad5872af9cfb93d01abf7cd9b07f47773360ad0501592848992f4 might have been changed by an unauthorized user or process, because the hash of the file does not match the hash stored in the digital signature. The script cannot run on the specified system. For more information, run Get-Help about_Signing." "C:\Users\Administrator\Desktop\5400414768496640\49c827cf48efb122a9d6fd87b426482b7496ccd4a2dbca31ebbf6b2b80c98530","False","Authenticode","Valid","Signature verified." "C:\Users\Administrator\Desktop\5400414768496640\5bc3994612624da168750455b363f2964e1861dba4f1c305df01b970ac02a7ae","False","Authenticode","UnknownError","A certificate was explicitly revoked by its issuer" "C:\Users\Administrator\Desktop\5400414768496640\5c1585b1a1c956c7755429544f3596515dfdf928373620c51b0606a520c6245a","False","Authenticode","UnknownError","A certificate was explicitly revoked by its issuer" "C:\Users\Administrator\Desktop\5400414768496640\6908ebf52eb19c6719a0b508d1e2128f198d10441551cbfb9f4031d382f5229f","False","Authenticode","Valid","Signature verified." "C:\Users\Administrator\Desktop\5400414768496640\7a7e8df7173387aec593e4fe2b45520ea3156c5f810d2bb1b2784efd1c922376","False","None","NotSigned","The file C:\Users\Administrator\Desktop\5400414768496640\7a7e8df7173387aec593e4fe2b45520ea3156c5f810d2bb1b2784efd1c922376 is not digitally signed. You cannot run this script on the current system. For more information about running scripts and setting execution policy, see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170" "C:\Users\Administrator\Desktop\5400414768496640\81c7bb39100d358f8286da5e9aa838606c98dfcc263e9a82ed91cd438cb130d1","False","None","NotSigned","The file C:\Users\Administrator\Desktop\5400414768496640\81c7bb39100d358f8286da5e9aa838606c98dfcc263e9a82ed91cd438cb130d1 is not digitally signed. You cannot run this script on the current system. For more information about running scripts and setting execution policy, see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170" "C:\Users\Administrator\Desktop\5400414768496640\8d9a2363b757d3f127b9c6ed8f7b8b018e652369bc070aa3500b3a978feaa6ce","False","Authenticode","HashMismatch","The contents of file C:\Users\Administrator\Desktop\5400414768496640\8d9a2363b757d3f127b9c6ed8f7b8b018e652369bc070aa3500b3a978feaa6ce might have been changed by an unauthorized user or process, because the hash of the file does not match the hash stored in the digital signature. The script cannot run on the specified system. For more information, run Get-Help about_Signing." "C:\Users\Administrator\Desktop\5400414768496640\8dafe5f3d0527b66f6857559e3c81872699003e0f2ffda9202a1b5e29db2002e","False","None","NotSigned","The file C:\Users\Administrator\Desktop\5400414768496640\8dafe5f3d0527b66f6857559e3c81872699003e0f2ffda9202a1b5e29db2002e is not digitally signed. You cannot run this script on the current system. For more information about running scripts and setting execution policy, see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170" "C:\Users\Administrator\Desktop\5400414768496640\96bf3ee7c6673b69c6aa173bb44e21fa636b1c2c73f4356a7599c121284a51cc","False","None","NotSigned","The file C:\Users\Administrator\Desktop\5400414768496640\96bf3ee7c6673b69c6aa173bb44e21fa636b1c2c73f4356a7599c121284a51cc is not digitally signed. You cannot run this script on the current system. For more information about running scripts and setting execution policy, see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170" "C:\Users\Administrator\Desktop\5400414768496640\9c2f3e9811f7d0c7463eaa1ee6f39c23f902f3797b80891590b43bbe0fdf0e51","False","None","NotSigned","The file C:\Users\Administrator\Desktop\5400414768496640\9c2f3e9811f7d0c7463eaa1ee6f39c23f902f3797b80891590b43bbe0fdf0e51 is not digitally signed. You cannot run this script on the current system. For more information about running scripts and setting execution policy, see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170" "C:\Users\Administrator\Desktop\5400414768496640\b0eb4d999e4e0e7c2e33ff081e847c87b49940eb24a9e0794c6aa9516832c427","False","Authenticode","UnknownError","A required certificate is not within its validity period when verifying against the current system clock or the timestamp in the signed file" "C:\Users\Administrator\Desktop\5400414768496640\b9dad0131c51e2645e761b74a71ebad2bf175645fa9f42a4ab0e6921b83306e3","False","Authenticode","HashMismatch","The contents of file C:\Users\Administrator\Desktop\5400414768496640\b9dad0131c51e2645e761b74a71ebad2bf175645fa9f42a4ab0e6921b83306e3 might have been changed by an unauthorized user or process, because the hash of the file does not match the hash stored in the digital signature. The script cannot run on the specified system. For more information, run Get-Help about_Signing." "C:\Users\Administrator\Desktop\5400414768496640\c0d88db11d0f529754d290ed5f4c34b4dba8c4f2e5c4148866daabeab0d25f9c","False","None","NotSigned","The file C:\Users\Administrator\Desktop\5400414768496640\c0d88db11d0f529754d290ed5f4c34b4dba8c4f2e5c4148866daabeab0d25f9c is not digitally signed. You cannot run this script on the current system. For more information about running scripts and setting execution policy, see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170" "C:\Users\Administrator\Desktop\5400414768496640\e6a7b0bc01a627a7d0ffb07faddb3a4dd96b6f5208ac26107bdaeb3ab1ec8217","False","None","NotSigned","The file C:\Users\Administrator\Desktop\5400414768496640\e6a7b0bc01a627a7d0ffb07faddb3a4dd96b6f5208ac26107bdaeb3ab1ec8217 is not digitally signed. You cannot run this script on the current system. For more information about running scripts and setting execution policy, see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170" "C:\Users\Administrator\Desktop\5400414768496640\e7af7bcb86bd6bab1835f610671c3921441965a839673ac34444cf0ce7b2164e","False","Authenticode","HashMismatch","The contents of file C:\Users\Administrator\Desktop\5400414768496640\e7af7bcb86bd6bab1835f610671c3921441965a839673ac34444cf0ce7b2164e might have been changed by an unauthorized user or process, because the hash of the file does not match the hash stored in the digital signature. The script cannot run on the specified system. For more information, run Get-Help about_Signing."