Microsoft тратит массу времени и денег на привлечение ценных специалистов, таких, как Том Феррис. Он является независимым исследователем по компьютерной безопасности и ведет сайт Security-Protocols.com. За последние месяцы Феррис, известный в Интернете под именем badpack3t, нашел немало “дыр” в продуктах софтверного гиганта - например, в браузере Internet Explorer, в протоколе Windows RDP (Remote Desktop Protocol), в ядре Windows XP и множестве других программ, включая браузер Firefox.

Microsoft старается изо всех сил заполучить опытных хакеров, каким является Феррис, - либо принимая их к себе на работу, либо приглашая на конференции по безопасности “Синяя шляпа”. Однако в отличие от многих своих коллег Феррис часто отвергал просьбы Microsoft держать информацию об ошибке в секрете до момента выпуска соответствующей заплаты.

Том Феррис:

“Мне нравится искать там,

куда не заглядывают другие”

В интервью еженедельнику eWeek Феррис объяснил, что при взломе Windows он использует как готовые, так и специальные инструменты, но при этом требуется недюжинное упорство. Вот как он охотится за ошибками.

Шаг 1: узнаем, где искать. Программы, подобные Windows или IE, имеют огромный объем - миллионы команд. Из-за этого искать “дыру” по всему коду бессмысленно. Чтобы добиться успеха на поприще хакера или охотника за ошибками, нужно знать, где вести поиск.”Например, я выискиваю все, что обращается к связанным с внешним миром сервисам, таким, как RDP”, - сказал Феррис. Кроме того, по его словам, полезно поискать и за пределами программы: “Мне интересно заглядывать туда, куда не смотрят другие. Например, можно проверить, для чего предназначены недавние заплаты Microsoft. Зачастую программисты вместе с заплатами вносят новые ошибки”.

Шаг 2: получаем код. В отличие от продуктов с открытым исходным кодом программы Microsoft имеют закрытый код. Это значит, что таким специалистам, как Феррис, приходится получать исходный текст путем реинжиниринга. “Я начинаю исследовать код с помощью отладчиков, например Soffice, и инструментов анализа двоичного кода типа IDA Pro. Это позволяет транслировать dll-библотеки или исполняемые файлы на язык ассемблера, т. е. на понятный для человека вариант описания того двоичного кода, который компьютер использует в качестве команд”, - рассказал он.

 Шаг 3: находим “дыру”. После трансляции кода на язык ассемблера Феррис начинает тестирование для обнаружения ошибок. Для этого он использует метод “распыления” (fuzzing), который заключается в подаче тысяч комбинаций специально неправильно сформированных данных на отдельные участки кода, в которых, по мнению Ферриса, может находиться “дыра”. “Я написал собственную программу для генерации таких комбинаций и обычно запускаю ее на всю ночь”, - поделился он своими секретами.

Часто, просыпаясь, он обнаруживает, что тестируемая программа “рухнула”, а значит, ему удалось нащупать уязвимое место в коде. “Когда я искал “дыру” в Windows RDP, то начал исследовать RDP-трафик и использовал “распыление” для первого пакета. Я занимался этим несколько дней, но безрезультатно, - вспоминает Феррис. - Но когда я добрался до третьего или четвертого пакета и проверил их на тысячах комбинациях данных, то наконец добилcя отказа программы”.

Шаг 4: анализируем уязвимость. Когда слабое место найдено, Феррис сосредотачивает внимание на данной части кода, чтобы узнать, как можно использовать обнаруженную “дыру”. “Я подключаю программу к отладчику и просто продолжаю ее ломать, - рассказал он. - При этом я стараюсь понять, какой входной код приводит к взлому и можно ли его использовать или нет”.

Многие “дыры” не являются серьезными, но сначала трудно разобраться, насколько они опасны. “На первый взгляд может показаться, что “дыра” приведет к ошибке типа DoS (отказ в обслуживания Web-сайта), но потом вдруг оказывается, что если я введу много данных, то получу возможность управлять памятью”, - объяснил Феррис.

Хотя лишь немногие хакеры могут найти большие “дыры” на уровне ядра, обнаружить ошибку в защите, по его словам, не так уж сложно: “Это довольно просто. Странно, что Microsoft не может то же самое делать самостоятельно”.

Версия для печати