Отправляет email-рассылки с помощью сервиса Sendsay

Хakep_daily

  Все выпуски  

Интервью с Марком Руссиновичем *


PDA   подписка    wiki   bugtrack   статьи    видео   блог   форум   поиск    друзья   






Секьюрити-трек на конференции Яндекса Yet Another Conference
2014-10-08 09:00 Джон Сноу

30 октября состоится ежегодная технологическая конференция Яндекса, Yet Another Conference. Традиционно отдельным треком в рамках конференции проходит секция «Безопасность». Как мы знаем, большинство практических конференций по безопасности состоят из докладов по взлому (offensive), а не о защите. В рамках YaC же мы фокусируемся на defensive-стороне безопасности, ведь защитить гораздо сложнее, чем взломать. Доклады посвящены прикладным аспектам защиты, на конференции мы делимся опытом того, как разработанные механизмы помогают обнаруживать атаки, рассказываем, как в масштабах большой компании внедрить ту или иную меру безопасности.

В этому году с докладами выступят как сотрудники Яндекса, так и приглашенные эксперты. Во-первых, это бывший CSO торговой платформы Etsy Зейн Лаки. Зейн поделится опытом построения сервисов безопасности в ситуации постоянно меняющейся среды, так типичной для интернет-компаний. Во-вторых, это Марат Вышегородцев из токийской интернет-фирмы Rakuten. Марат расскажет, как при помощи фреймворка Freud написать статический анализатор Java-кода. И, наконец, это Иван Новиков – генеральный директор Wallarm, чья система позволяет комплексно защищать веб-приложения. Иван поделится секретами о том, что у Wallarm “под капотом” и предостережёт от построения Yet another WAF, ещё-одного-файрвола-веб-приложений.

Наших ребят тоже будет трое. Андрей Ковалев познакомит с основными трендами безопасного поиска, Эльдар Заитов расскажет о том, как мы в Яндексе строили TLS, а в конце дня Тарас Иващенко представит новую «Охоту за ошибками»!

Регистрируйтесь на секцию «Безопасность» на YaC — единственную практическую defensive-конференцию по ИБ в России!



Интервью с Марком Руссиновичем
2014-10-08 11:26 Степа Ильин

«Титулы» Марка Руссиновича можно перечислять долго — программист, специалист по внутреннему устройству Windows, писатель, автор многочисленных статей, Technical Fellow в Microsoft. И сложно посчитать, сколько раз мы упоминали в своих статьях ProcMon, FileMon и другие незаменимые утилиты, которые он разработал. И вот недавно нам удалось лично встретиться с этим интересным и многогранным человеком.

Факты

  • Родился в 1966 году в Испании.
  • Выпускник университета Карнеги-Меллона, обладатель степеней бакалавра и доктора в области вычислительной техники.
  • В 2006 году вошел в топ-5 хакеров планеты по версии журнала eWeek.
  • Работал в IBM как эксперт по операционным системам.
  • Написал драйвер файловой системы NTFS под DOS.
  • В 2005 году нашел руткит на диске Sony BMG Music Entertainment, из-за чего буквально «проснулся знаменитым».
  • Удочерил девочкуиз Москвы.

Сводим файлы вместе

Если оглянуться назад и вспомнить, с чего я начинал, можно заметить множество предпосылок к тому, чем я занимаюсь сейчас.

Моим первым компьютером был Apple II. И первое, что я с ним сделал, — расковырял ROM-память, отреверсив ее, и придумал, как можно ее расширить.

Я прекрасно помню этот момент. Я учился в шестом классе и пришел к другу домой. Его отец работал в университете и принес домой Apple II. Мой друг сказал: «У моего папы есть персональный компьютер, пойдем посмотрим!» Мы пошли и стали играть с ним. Так все и началось. До этого я хотел стать инженером-авиаконструктором, но после нескольких часов, проведенных за компьютером, передумал и решил — хочу работать в IT.

Позже я принялся писать статьи в журналы и программировать приложения. Статьи были на тему «Как расширить ROM», а программы — для распечатки изображения с экрана на принтере. С этого я начинал и, по сути, сейчас занимаюсь тем же.

В то время программы писали на Basic, но если хотелось создавать по-настоящему сложные вещи, нужно было переходить на машинный язык. А машинный язык — это просто числа, поэтому сначала нужно было написать ассемблер, чтобы запрограммировать пакет инструкций для компьютера. Затем нужен был дизассемблер, чтобы получить из машинного языка обратно код программы. Я написал для себя и дизассемблер, и ассемблер.

Меня всегда интересовало, как работает компьютер. Мне хотелось заставить его делать вещи, которые обычный программист не может. Для этого я и разработал многие из утилит Sysinternals.

Как только я решил, что хочу заниматься компьютерами, я понял, что хочу узнать об этом все, что только можно. Настолько полно, насколько смогу. Тогда же пришло решение, что хочу получить образование в этой области. Однако я хотел изучать не просто науку, которая часто уходит в теорию и абстрактные идеи, но и практическое ее применение, где соединяются аппаратное и программное обеспечение.

Я получил степень бакалавра, затем магистра, а затем и доктора по вычислительной технике. Свои знания я приложил к созданию утилит и приложений — попытался создавать коммерческие программные продукты из идей, которые пришли ко мне в процессе работы над докторской. Но у меня ничего не вышло.

Когда ничего не получилось, я пошел на работу в компании, специализирующиеся на создании программного обеспечения, и использовал знания, полученные уже там. Первой компанией, где я работал, стала NuMega Technologies. Некоторое время я был в команде, которая занималась легендарным отладчиком SoftICE (я очень часто использовал эту программу для реверсивной инженерии под Windows и DOS).

Культ мягкого льда

Когда я пришел в NuMega Technologies, у них было всего два программных продукта: SoftICE и BoundsChecker. Дебаггер и утилита для проверки корректного использования памяти и API-вызовов. Это большие и успешные проекты. Однако компанию в будущем собирались продать, а для продажи им было необходимо иметь больше удачных продуктов. Руководство сказало: «Мы еще не придумали, каким будет наш следующий проект, но мы хотим, чтобы у нас были люди, готовые взяться за него, как только мы придумаем». Именно поэтому они наняли меня.

У меня было много свободного времени. По сути, мне дали такую задачу: «Пока мы работаем над следующей идеей, почему бы тебе не поработать над SoftICE? Добавь туда несколько команд, напиши документацию». Тогда у меня действительно появилось много свободного времени, и именно тогда я начал заниматься исследованиями и писать различные утилиты.

Когда я начал работать в компании, там трудилось всего около тридцати человек. Компания еще была маленькая и только начинала расти. Основатели NuMega (Фрэнк Гросман и Джим Москан) хотели в конце концов продать ее, так что они нанимали все больше людей, и компания мало-помалу становилась более организованной.

В NuMega Technologies была очень классная хакерская атмосфера, но я проработал там всего около девяти месяцев. Над SoftICE уже тогда трудилось довольно большое количество людей, в том числе и Мэт Питрек. О нем многие знают, он написал книгу «Внутреннее устройство Windows» для Windows 3.1.

Я вообще в то время завел много друзей, которые остались со мной и по сей день. Таких как Джон Робинс — Мистер Отладчик, о котором читатели, скорее всего, тоже знают. Мистер Отладчик. Он вел колонку Bug Slayer в журнале MSDN и написал книгу по отладке для Microsoft .NET. Он все еще один из моих близких друзей. Живет Джон в Сиэтле, потому что очень много консультирует Microsoft. Еще Джеффри Риткор, которого я встретил в NuMega Technologies примерно тогда же, тоже известный человек.

Но в итоге, в своем стремлении продать компанию, NuMega стала куда более коммерческой и потеряла свои хакерские корни. А потом закрыли разработку SoftICE. Его продали Compuware, но та тоже сочла этот проект неперспективным.

Как UNIX теряет друзей

Один из ключевых моментов наступил для меня, когда я впервые увидел Windows NT. Кажется, это была Windows NT 3.1. Тогда я решил, что при том успехе, который имела Windows 3.1, Windows NT, скорее всего, станет не менее успешной, чем ее соперник UNIX.

Хотя эта ОС все еще была нова и незрела, у нее был уверенный старт. Тогда я подумал — мы наблюдали потребительский рост в IT, о котором все говорят, и этот рост задала Windows 3.1. Много людей используют Windows дома, а затем переносят ее в бизнес. Windows NT позволяла запускать те же самые программы, под тем же пользовательским интерфейсом, так что было совершенно логично идти дальше — на рабочие станции и впоследствии на серверы. Для меня это стало одним из поворотных решений, потому что до этого я работал с юниксовыми системами, но после сосредоточился на Windows.

Поговорка «Умные люди приходят к похожим заключениям, когда решают сложные проблемы» применима и к операционным системам. Поэтому перестроиться, в общем-то, оказалось довольно просто. Я занимался разработкой низкоуровневых частей UNIX, а ОС во многом пересекаются между собой. Я написал несколько статей и презентаций на тему сравнения UNIX и Windows NT, к примеру в чем разница и сходство в их работе с памятью. Разница есть, но в основе этих ОС лежат одни и те же концепции.

Одним из аспектов, который очень понравился мне в Windows NT, была система ввода-вывода. Эта система делает ОС очень гибкой. Одна из моих первых популярных утилит, FileMon, базировалась на гибкости работы с файловой системой: можно было просто подключить драйвер и мониторить всю активность I/O-стека. В UNIX такое было невозможно. В принципе, до сих пор сложно написать нечто подобное под Linux. Что удивительно — было предпринято немало таких попыток (например, FUSE), но они не увенчались успехом.

UNIX тогда не хватало гибкости. На самом деле я написал версию FileMon под Linux еще в 1998-м. Я сделал это, пропатчив ОС так, чтобы можно было перехватывать системные вызовы (я делал такое еще в своей докторской).

К сожалению, одновременно с этим в Linux были внесены изменения, мешавшие выдаче системных вызовов ядра коду, не лицензированному под GPL. Поскольку мне не хотелось выкладывать исходники FileMon под этой лицензией, работу пришлось остановить.

Тем не менее моя работа над UNIX повлияла на развитие ядра Linux. В частности, мои выступления о недостатках ядра привели к появлению таких вещей, как Big Kernel Lock (механизм, позволяющий синхронизировать одновременное выполнение нескольких процессов, особенно важный для работы с многопроцессорными системами), Zero Copy (перемещение информации между несколькими областями памяти без использования ресурсов процессора) и многие другие.

Зарождение Sysinternals и бизнеса

Я написал FileMon, RegMon, NTFS DOS, и это были первые три программы из Sysinternals. Я опубликовал их на сайте друга. Этого друга некоторые из вас могут помнить — Эндрю Шульман, он написал такие книги, как «Недокументированный DOS» и «Неофициальная Windows 95».

Эти три программы хостились на его сайте, чтобы люди могли скачивать исходный код и исполняемые файлы. Но Эндрю оказался недостаточно ответственен. Когда у меня появлялись фиксы и я просил: «Эндрю, повесь этот фикс», он тратил на это слишком много времени. Тогда я и Брайс Когсвелл (с которым мы познакомились в университете) решили запустить ntinternals.com.

Мы создали собственный сайт и стали выкладывать программы там. И вскоре произошел еще один поворотный момент в моей жизни, когда Брайс сказал: «У меня есть идея программы, на которой мы сможем делать деньги».

NTFS DOS тогда была очень популярна, потому что давала людям возможность восстанавливать файлы с убитой NT-системы, которую было нельзя загрузить. Но что, если дать людям возможность еще и чинить системы — копировать обновленные файлы, которые бы устраняли неполадки, или запускать проверку диска? В то время в Windows еще не было никаких средств восстановления системы.

Так мы написали программу под названием NT Recover, с помощью которой можно было монтировать диски со сломанной NT-системой удаленно, используя приложение под DOS-программу, загруженное с дискеты. Другой системный диск Windows NT подгружался как виртуальный, и можно было запускать Explorer, копировать файлы и инициировать проверку диска.

И мы решили, что можем получать за этот продукт деньги. Мы организовали Winternals.com и начали продавали его там. В свою очередь, на ntinternals мы поместили небольшой баннер с текстом «Спонсируется Winternals», выложили бесплатную версию NT Recover (она позволяла только считывать информацию, но не давала ничего модифицировать) и направляли людей на Winternals, где можно было купить полную версию.

С 1997 года мы начали принимать к оплате кредитные карты. Сперва это приносило лишь несколько сотен долларов в месяц, но очень быстро дошло до нескольких тысяч долларов в месяц, а потом до десятков тысяч и так далее…

Когда я устроился в IBM и работал в IBM Research, Брайс все еще вкладывался в коммерциализацию нашей продукции, которая приносила большой доход. Он только тем и занимался, что копировал информацию с дискет. То есть он шел домой, копировал файлы с дискет, относил их на почту и отвечал на звонки по поддержке.

Скоро справляться в одиночку стало слишком тяжело, и Брайс сказал, что нам нужно нанять новых людей. Так мы наняли человека для технической поддержки и еще исполнительного директора. Я даже специально прилетел (Брайсу пришлось переехать жить в Остин), когда мы его нанимали.

Вскоре мы брали на работу все больше и больше людей. Сначала у нас работало пять человек, потом десять, потом двадцать и тридцать. В 2006 году мы представили новые линейки продуктов, и к 2006 году, когда нас купила Microsoft, у нас было уже восемьдесят пять человек!

Марк Руссинович на автограф-сессии

Марк Руссинович на автограф-сессии

Однако к Microsoft присоединились только мы с Брайсом. Microsoft приобрела у нас некоторые технологии. Microsoft Diagnostic and Recovery Toolkit (который, по сути, является аварийным загрузочным диском, позволяющим обновлять, запускать антивирус, анализировать системные сбои) построен на основе технологии, купленной у нас. Так что мы с Брайсом переехали в Редмонд к Microsoft.

Microsoft: любит / не любит

Вообще-то некогда я умудрился испортить отношения с Microsoft, но продолжал разрабатывать свои приложения и даже наладил отношения достаточно для того, чтобы написать в соавторстве книгу о внутреннем устройстве Windows. Я также выступал с докладами по внутреннему устройству.

Камнем преткновения с Microsoft стал NT Workstation. В Редмонде утверждали, что данная версия технически непригодна для того, чтобы работать в качестве веб-сервера, и программно ограничивала работу как IIS, так и любого стороннего сервера. Веб-сервер под NTW мог принимать запросы не более чем от десяти уникальных IP каждые десять минут. По замыслу разработчиков, для такого сюжета было необходимо приобрести значительно более дорогую Windows NT 4.0.

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

Моя продукция стала очень популярна среди техподдержки Microsoft. Чаще всего они использовали FileMon и RegMon. Я стал замечать, что все больше и больше писем приходит от сотрудников Microsoft. Они писали: «Нам очень нравится FileMon, мы его каждый день используем». Потом в базе знаний Microsoft начали появляться статьи, гласившие: «Если вы думаете, что у вас какая-то проблема, запустите FileMon или RegMon с Sysinternals». Мне очень польстило, что мои программы появились в документации Microsoft.

Потом я узнал, что моими программами пользуются и разработчики Microsoft. Одним из моих первых контактов с сотрудниками Microsoft стало общение со старшим разработчиком Office, который ни с того ни с сего прислал мне e-mail: «Какой у тебя почтовый адрес? Я бы хотел выслать тебе кое-что, потому что мы постоянно используем RegMon для повышения производительности Office и диагностики проблем при разработке». Он прислал мне очень доброе письмо, которое гласило: «Дорогой Марк, мы часто пользуемся твоими средствами при разработке Office, они отличные». К письму прилагались джойстик и несколько программ.

Тяжело ли было перейти на работу в Microsoft? Microsoft сделала так, чтобы принять это решение было очень легко [Марк смеется, явно намекая на щедрость своего нынешнего работодателя].

Я присоединился к команде Windows. На самом деле моя позиция там была практически уникальна — у меня не было никакой должностной инструкции. Мне пришлось самому соображать, что нужно сделать. Это был своего рода вызов — понять, как работать внутри Microsoft. Как влиять на людей, какие инициативы продвигать, какие технологии выдвигать на первый план.

Я не могу выделить какие-то отдельные приложения и продукты и сказать: «Это сделал я». Уместнее будет сказать: «Я сыграл ключевую роль в продвижении такой-то идеи». Было сложно, но интересно.

Мне позволяли сосредоточиться на вещах, которые я считал интересными и/или важными для Microsoft и продукции, над которой я работал. Например, я работал над MinWin (понятие, используемое Microsoft для описания ядра и операционной системы, основные компоненты которых начали разрабатываться одновременно с Windows Vista). И теперь Windows Phone 8 построена на основе того же ядра, что и Windows. Я сыграл огромную роль в продвижении идеи разбиения Windows на компоненты, чтобы можно было использовать их для всех наших программных продуктов.

То есть у нас была Windows CE — ОС для мобильных устройств. Очень примитивная ОС, разработанная в середине-конце девяностых годов, когда устройства были намного проще. У нее плохая защита, слабая многозадачность, недостаточно адресного пространства… словом, почти нет всей той функциональности, которая требуется современной ОС для работы, безопасности и надежности.

Стало ясно, что нельзя развивать такую ОС. Телефоны сейчас — это те же компьютеры, так что логично поставить на них настоящую ОС. Тот же подход применила Apple, когда они взяли сердце OS X и сделали iOS для телефонов. Логично, что мы сделали то же самое.

Но вернемся к тому, что у нас были еще и бесплатные Sysinternals, а также коммерческие Winternals, о которых я говорил выше. Microsoft использовала наш дефрагментатор при создании движка дефрагментации для Windows NT. Также у нас была утилита под названием Protection manager, которая могла блокировать рекламу, что, в свою очередь, привело к самостоятельному продукту по блокировке рекламы.

Утилиты Sysinternals не стали частью ОС по нескольким причинам. Первая: я обновляю их достаточно часто и постоянно добавляю новые возможности. Если бы они были частью ОС, они обновлялись бы только с регулярными релизами ОС — раз в год (раньше вообще раз в два-три года, просто сейчас дело пошло побыстрее). То есть я бы не смог обновлять их так часто. Вторая: если программа — часть ОС, нужно быть предельно осторожным с качеством кода. Это крайне важно.

Мне удавалось делать многое на лету, буквально сразу. Допустим, на какой-нибудь конференции я услышал, что неплохо бы сделать такую-то фичу. И делаю ее прямо в самолете, на пути домой, а на следующей неделе уже загружаю на Sysinternals. Такое невозможно, если это часть ОС.

Есть и еще одна причина — мои программы нацелены на искушенных профессионалов, разработчиков в области ИБ и на продвинутых пользователей, тогда как Windows пользуется огромное число людей, которым неинтересна моя продукция, она только поставит их в тупик.

Моя целевая аудитория нашла меня сама, так что, если бы я поместил Sysinternals в ОС, это вряд ли увеличило бы количество пользователей моих программ.

Но некоторые мои утилиты все же частично перешли в Windows. Допустим, диспетчер задач или мониторинг ресурсов. Так что они все-таки повлияли на встроенные средства Windows.

Прикоснулся к облакам

А последние два с половиной года я работаю над Windows Azure — платформой облачных сервисов. Я работаю в облачном направлении, потому что понял: информационный мир сейчас проходит через третью трансформацию. Именно в облачной технологии происходит основное развитие, это совершенно новая парадигма. Еще два года назад на конференциях никто не знал, что такое облако. А сейчас говоришь «облако» и все понимают, что ты имеешь в виду.

К команде я присоединился, когда проект Windows Azure уже был в разработке. Тогда это был своего рода прототип. Как раз когда я начал работу над ним, его впервые выпустили как коммерческий продукт, но это была совершенно новая платформа. Ее нужно было развивать и улучшать.

Я работал над идеей «инфраструктура как сервис» — функционал, выпущенный прошлым летом. Я был ведущим архитектором этого функционала, определял, как эта модель (IaaS) будет работать изнутри, как мы будем использовать хранилище Windows Azure, каковы требования по производительности, какова надежность.

Работал я и над другими направлениями, которые меня интересовали, к примеру управление ресурсами дата-центров. Я разбирался, как правильно задеплоить его на виртуальных машинах, чтобы добиться максимальной эффективности использования ресурсов. Как балансировать нагрузку, какие мощности выделять под виртуальные машины — все это интересные проблемы в области Computer Science, которыми я сейчас занимаюсь в Microsoft Research.

Тем не менее следы моих наработок заметны и в других продуктах Microsoft. Например, новый диспетчер задач в Windows 8 явно несет на себе след Process Monitor и других подобных утилит.

Книга нулевого дня

В свое время слову «хакер» пытались придать негативную окраску, но изначально считалось, что хакер — человек, который хорошо разбирается в компьютерах. И только потом это слово начало ассоциироваться с чем-то вредоносным. Для меня оно содержит оба эти понятия, в зависимости от контекста. Можно сказать: «Вас кто-то хакнул». Сетевые специалисты и специалисты по безопасности используют слово «хакер» именно в этом смысле. Однако хакер также означает и человека, мастерски владеющего компьютером.

Не знаю, могу ли я называть себя хакером. Никогда не думал о себе как о хакере. Скорее как о программисте. Думаю, хакерство для меня значит, что необязательно понимать все, что ты делаешь, но нужно понимать достаточно, чтобы достигать результатов. А я скорее стараюсь познать науку досконально и лишь потом приложить эти знания к программированию. Так что не уверен, что готов назвать себя хакером в полном смысле этого слова.

Я всегда хотел написать книгу. В детстве я читал научную фантастику и технотриллеры, и меня всегда восхищало переплетение технологии и хорошего сюжета. Это был интересный вызов для меня — понять, смогу ли я это сделать.

Идея книги Zero Day возникла у меня еще в 2004 году, когда я осознал риск кибертерроризма и опасность хакеров, которые могли нанести реальный вред. Это очень насущная угроза. Оказалось, что Евгений Касперский согласен со мной и в последнее время тоже много говорит об этом.

Я хотел подчеркнуть связанные с этим риски, донести до людей реальность угрозы. В то же время было очень интересно написать историю, в которой технологии и мир кибербезопасности были бы описаны реалистично. Существует не так много книг (пожалуй, я не знаю ни одной), в которых авторы попытались бы рассказать людям, какова жизнь человека, работающего в области кибербезопасности. А я хотел, чтобы моя книга стала именно такой. Плюс я хотел рассказать хорошую историю и очертить риски. Так что книга близка к реальности.

Было продано большое количество экземпляров, достаточное для того, чтобы издательство запросило продолжение, которое вышло несколько месяцев назад. И они подписали меня на еще две книги.

Советы Марка

Чтобы стать успешным в IT, нужно найти область, которая тебе интересна. Область, в которой работает не так много людей. Обычно это означает, что она достаточно сложная, — ведь люди стараются держаться подальше от трудностей. Я нашел именно такую.

В такой области будет куда меньше конкуренции, и твоя ценность будет очень высока. Нужно найти максимум информации по теме, изучить ее как можно глубже. Если работа не совпадает с твоим истинным увлечением, то, скорее всего, ты выбрал не ту профессию. И это применимо не только к IT.

И последнее — получайте образование. По-моему, это очень важно. Сейчас многие люди обходятся без образования, но, мне кажется, образование дает структуру, вырабатывает подход к обучению, а это полезно — помогает легче схватывать принципы. В моем случае это было очень ценно.




© Copyright Gameland

В избранное