
Инструмент для атак на OSDP (и эльфийское слово, означающее «друг»)
Инструмент атаки на OSDP (и эльфийское слово для друга)
OSDP поддерживает, но строго не требует шифрования. Таким образом, ваше соединение может вообще не быть зашифровано. Атака №1 заключается в пассивном прослушивании, чтобы проверить, можно ли прочитать номера карт в линии.
То, что контроллер и считыватель поддерживают шифрование, не означает, что они настроены требовать его использования. Злоумышленник может изменить ответное сообщение о возможностях считывателя (osdp_PDCAP), указав, что он не поддерживает шифрование. В этом случае некоторые контроллеры продолжат работу без шифрования.
OSDP имеет квазиофициальный «режим установки», который применяется как к считывателям, так и к контроллерам. Как следует из названия, он предназначен для использования при первоначальной настройке считывателя. По сути, он позволяет считывателям запрашивать у контроллера базовый ключ шифрования (SCBK). Если контроллер настроен на постоянное нахождение в режиме установки, злоумышленник может появиться в линии и запросить SCBK.
Примеры кода OSDP часто содержат жестко закодированные ключи шифрования. Очевидно, что они предназначены для образцов, где пользователь должен самостоятельно генерировать ключи безопасным способом. Однако это не объясняется и не упрощается для пользователя. И любой, кто достаточно долго проработал в сфере безопасности, знает, что настройки по умолчанию, скорее всего, останутся и в рабочей среде.
Таким образом, как вектор атаки, когда канал между считывателем и контроллером зашифрован, стоит попробовать перебрать некоторые распространенные слабые ключи. Это 128-битные ключи AES, поэтому мы не сможем перебрать их все. Или даже сколько-нибудь значимую их часть. Но мы можем проверить некоторые распространенные шаблоны, которые встречаются, когда кто-то жестко кодирует ключ:
OSDP не имеет внутриполосного механизма обмена ключами. Это означает, что злоумышленник может:
Вы найдете код доказательства концепции для каждой из этих атак в attack_osdp.py. Ознакомьтесь с командой --help для получения дополнительных сведений об использовании. Это скрипт на Python, предназначенный для запуска с ноутбука с адаптерами USB<-->RS485 например, такими. Так что вам, вероятно, стоит приобрести некоторые из них. Однако это не обязательно должна быть именно эта модель.
Если у вас есть контроллер, который вы хотите протестировать, отлично. Используйте его. Если нет, то у нас есть намеренно уязвимый контроллер OSDP, который вы можете использовать здесь: vulnserver.py.
Некоторые атаки в attack_osdp.py предполагают полное MitM (человек посередине) между работающим считывателем и контроллером. Для их тестирования вам может понадобиться три адаптера USB<-->RS485, соединенных вместе с помощью макетной платы.
Эти проблемы по отдельности не являются эксплуатируемыми, но тем не менее представляют собой ослабление протокола, реализации или системы в целом.