-
Цифровая подпись для параноиков и любознательных
Наверняка некоторые из нас сталкивались с ситуацией - в Activity Monitor появился какой-то процесс, который раньше не встречался, и который непонятно что делает. Кто-то пожимает плечами и не обращает внимание. Кто-то лезет в гугль искать "что это такое". Кто-то громко верещит "вирус" и бежит в сообщество постить скриншоты и просить о помощи. К сожалению, мало кто знает, что в Mac OS X, начиная с 10.5 встроена технология, позволяющая определить, является ли автором данного ПО Эппл или нет.
Открываем терминал и начинаем экспериментировать.
В случае статического кода (например, программы на диске, или системного расширения kext):
codesign -dvv /путь/к/программе
Например, для Mail это будет
codesign -dvv /Applications/Mail.app
и нажимаем Enter. В ответ получаем много инфы, в том числе и
Authority=Apple Code Signing Certification Authority
Authority=Apple Root CA
Это означает, что программа имеет цифровую подпись компании Apple, и что никакой хакер в программу не изменил.
Цифровая подпись может использоваться не только со статическим кодом (с файлами на диске), но и с динамическим кодом (процессы в памяти). Например, открываем Activity Monitor и видим, что процесс Mail у меня запущен с PID=203. Для динамического кода команда проверки будет выглядить чуть по другому, нужно будет явно задать проверку "а не Apple ли поставил цифровую подпись на эту программу"?
codesign -vv -R="anchor apple" 203
203: dynamically valid
203: explicit requirement satisfied
Все в порядке.
Если же мы попробуем проверить цифровую подпись другой программы, например, Adium (у меня его PID=21243), то получим:
$ codesign -vv -R="anchor apple" 21243
21243: dynamically valid
test-requirement: failed to satisfy code requirement(s)
Что это значит? Это значит что программа Адиум подписана, подпись верна, но сделана не компанией Эппл. Программа подписана другим разработчиком.
Ну и для программы, которая не подписана (например, AppKiDo, ее PID у меня 7990) результат будет
$ codesign -vv -R="anchor apple" 7990
7990: code object is not signed
Что еще хочу добавить.
Для "торопыжек голодных, что глотают утюг холодный" - не пытайтесь слепо копировать в терминал те команды, которые относятся к проверке процессов. Идентификационный номер процесса (PID), как правило, назначается случайным образом и меняется при каждом запуске. У вас он наверняка будет другим.
Если вы обнаружили, что цифровая подпись программы от Эппл нарушена -то это не означает автоматически того, что злоумышленники проникли в вашу систему и уже украли ваши пароли и номера кредитных карточек. Это значит всего-навсего, что программа была кем-то изменена. Возможно, вы сами "выкинули из нее ненужные локализации" или "убрали ненужный PowerPC код". Цифровая подпись для GUI-приложений отслеживает не только исполняемые бинарники, но еще и ресурсы.
Количество ключей "v" в команде влияет на количество выводимой информации. Чем больше повторяется буква "v", тем больше (до определенного предела) выведется информации.
Для тех, кто любит экспериментировать: ключи "-d" и "-v" команды codesign безопасны, они ничего не меняют. Но вот с другими ключами вы запросто можете изменить цифровую подпись программы на свою или нарушить ее. Поэтому, если хотите экспериментировать - ознакомьтесь внимательно с man codesign.
Ну и для тех, кто хочет узнать больше - есть замечательная Techical Note TN2206.
http://community.livejournal.com/ru_mac/13194912.html
-
-
Будь в курсе!
Будь в курсе!
Надоело быть жертвой? Стань профи по информационной безопасности, получай самую свежую информацию об угрозах и средствах защиты от ведущего российского аналитического центра Anti-Malware.ru: