Интервью с автором Adware

By bitonic

Мэт Кнокс (Matt Knox) талантливый преподаватель языка Руби, рассказывает о своей работе в компании Direct Revenue.

Шери: Вы написали Адвару. Ах вы негодяй! :)

Мэт: Ага, я написал. Пришлось половину закодить на Scheme, что делает меня человеком, который распространил самое большое количество Scheme runtime в мире.

Шери: Постойте. Но зачем вы вообще писали адвару?

Мэт: Тогда у меня не было ни гроша и я очень нуждался в деньгах. Вначале я работал над программой фильтрации спама. Эту работу заметили парни из Direct Revenue. Потом они наняли меня проанализировать систему распространения их адвары. Спустя некоторое время сайт, через который проходил весь рекламный трафик поднялся ТОП20 Алексы! Гигантский, по-настоящему гигантский трафик! На пятый месяц моего пребывания в компании появился некий вирус, который делал неработоспособными часть компьютеров, на которых было установлено адвара. Я сказал: «Я неплохо знаю С и могу удалить вирус с машин пользователей». И я это сделал. Менеджеры сказали: «А чё! Неплохо! Продолжай!». Ну я стал удалять и другие вирусы. Менеджеры сказали: «Круто! Ты с легкостью удалил все эти вирусы. А можешь удалить адвару конкурентов?»

Хм. Эту ситуация продемонстрировала мне силу градуализма (постепенности). Ведь так трудно заставить человека сразу сделать одно большое плохое дело. Достаточно разделить это плохое на несколько не очень плохих и можно заставить человека сделать всё, что угодно.

Шери: Не кажется ли тебе, что это прямой путь в Ад?

Мэт: О да! Но я всё-таки надеюсь, что всё то хорошее, что я сделал в своей жизни перевесит то плохое, что я сделал, работая в Direct Revenue :)

Шери: Какую бизнес модель использовала Direct Revenue?

Мэт: Их бизнес модель была такова – купить у кого-то скринсейвер или сделать самим. Сюжет скринсейвера не важен. Можно сделать чувака, который моет монитор пользователя изнутри. Чтобы был похож на мойщика окон. После этого предложить юзерам – «Эй! Хотите ЭТО? Установите нашу адвару и получите ЭТО бесплатно!». Невероятное количество пользователей соглашалось.

Шери: Как в DR называли адвару? Я думаю, что слово «адвара» не использовалось.

Мэт: Хороший распространитель адвары всегда говорит – «Это программа со встроенной рекламой». Не очень хорошие распространители инсталлировали адвару через эксплойты Windows. Другие распространители распространяли адвару через загрузки на уже инфицированные машины. В их EULA был пунктик – «мы инстолим всё, что захотим и вы с этим согласны». Естественно, никто не читал EULA, поэтому большинство людей соглашались не задумываясь. Например, у какого-то распространителя была база инфицированных машин в 4 000 000. И он просто предлагал – «Эй! У меня есть 4 000 000 тачек. Можем проинстолить вашу адвару на все. Это будет стоить 20 центов за тачку». В то же время закон закрывал на это глаза. Ведь EULA приравнивалась к Контракту.

Шери: Значит ли это, что не только ваша компания использовала эксплойты, чтобы пробраться в компьютер пользователей?

Мэт: Нет. Мы этим не занимались. Хотя некоторые из наших распространителей делали это. Если же мы об этом узнавали, то говорили им – «Парни, вы не правы! Распространять нашу адвару вам теперь запрещено!». И мы пытались избавиться от всех «грязных» инсталляций.

Головной болью была проблема «живучести» нашей адвары в системе пользователя. Но благодаря успехам в этой области наши конкуренты не могли с легкостью удалить нашу адвару. А для обычного пользователя удалить адвару ручками – было практически невозможно! Если кому-то захотелось удалить адвару, то этому человеку приходилось пройти через процесс деинсталляции. Нужно было зайти на определенный сайт, скачать деинсталлятор, заполнить электронный бланк – написать причину отказа от адвары, и только после этого наша адвара удалялась из пользовательского компьютера. После деинсталляции в реестре оставлялся ключ, который помечал этот определенный компьютер, как тот, который не может быть использован для последующих инсталляций адвары. Некоторые придурковатые антивирусные и анти-адварные компании удаляли этот ключ, что могло привести к повторной установке нашей адвары в будущем.

Шери: Расскажите подробнее о стратегии «живучести» вашей адвары в системе пользователя.

Мэт: Для начала пару слов о том, как адвара работает. В большинстве случаев целью адвары является Internet Explorer – самый популярный браузер в мире. Хотя известно, что если человек использует IE, то ему либо пофиг, либо он не знает ничего про уязвимости этого браузера.

В IE есть такая вещь как Browser Helper Object (BHO), который является исполняемым кодом и имеет доступ ко всем запросам браузера. BHO работает внутри главного процесса браузера, следовательно, он может делать всё, что доступно браузеру. В нашей адваре был BHO, который обрабатывал все наши рекламные объявления. А затем мы сделали так, что для того, чтобы остановить поток поп-апов пользователю нужно было убить все процессы браузера.

Еще одна фишка для улучшения живучести нашей адвары – это был мини-инсталлятор. Каждый раз, когда компьютер загружался, эта программа проверяла – на месте ли BHO? Если его не оказывалось на месте, то инсталлятор устанавливал его вновь.

Следующей фишкой была программа, которая мониторила присутствие BHO каждые 10 секунд. И переустанавливала BHO в случае его исчезновения. Для затруднения поиска и уничтожения нашей программы мониторинга был создан алгоритм генерации имен на основе DES. Шесть или восемь символов MAC адреса сетевой карты кодировались DES алгоритмом. Теперь по имени будет нельзя найти нашу программу мониторинга. Но ее всё ещё можно было найти по сумме md5, так как бинарный код не менялся.

Чтобы решить эту проблему был придуман обфускатор функций. Через него пропускался исполняемый файл адвары. Обфускатор «тасовал» указатели функций так, что сигнатура адвары постоянно изменялась.

Потом мы создали «bootstrapper». Программа, которая была написана на Ассемблере. Она брала зашифрованный главный исполняемый файл адвары, расшифровывала его в памяти и запускала. В то же время мы написали программу, которая делала инъекцию нашей адвары в другой процесс. Не помню, чтобы до нас кто-либо делал подобное. В Windows есть функция CreateRemoteThread. В общем суть такова. Я – один процесс, Ты другой процесс. Я говорю – «Эй! У меня есть кусок кода. Ты не мог бы его запустить за меня?». Ты отвечаешь – «Дык без проблем чувак!», потому что ты процесс Windows, типа хиппи – свободная любовь и всё такое ;) Между прочим процессы Windows совершенно неразборчивые в своих связях. Всё просто! Берем несколько процессов и заставляем их запустить нашу адвару. Всего «впрыскивалось» несколько экземпляров адвары. Каждый экземпляр знал о 2-х других экземплярах и мог обмениваться с ними информацией. Получалось что-то типа кольца поддержки.

Мы прогрессировали. А ведь всё начиналось с ключа в реестре:)

Еще мы использовали неуничтожаемые ключи в реестре. Разница между Win32 API и NT API в том, что Win32 API использует ASCII, а NT API использует Unicode. В реестре можно использовать Unicode символы, для которых уже недостаточно ASCII. Поэтому все программы для борьбы с адварой, которые использовали Win32 API просто-напросто «не видели» наши ключи в реестреJ Прикольно то, что даже некоторые антивирусные компании в своих продуктах использовали Win32 API, тем самым делая для себя невозможным уничтожение нашей адвары.

Ещё мы сделали аппаратный драйвер и драйвер принтера. Когда пишешь аппаратный драйвер, то приходится писать множество сложных кусков кода, которые в обычном программировании не используются. Мы занимались этим как раз во время наезда на компанию прокурора Элиота Спитцера. Кстати, из-за него компании пришлось принять непопулярное решение – выйти из тени. Все рекламные поп-апы были подписаны брендом DR.

Ещё пару слов о Scheme. В конце-концов мы устали каждый раз писать новую программу на С, чтобы избавиться от чужой малвары на наших машинах. Все говорили – «Нужен легко конфигурируемый инструмент». Я сказал – «Давайте использовать Машину Тьюринга». Мой выбор пал на tinyScheme (по лицензии BSD), очень компактная и быстрая реализация Scheme. Программы получались очень компактные – около 20 КБ, если знать как правильно скомпилировать.

Наконец-то после появления новой малвары, которую нужно было удалить с наших машин, мне было нужно лишь написать скрипт на Scheme, загрузить его на сервер и через несколько минут вся малвара была уничтожена. Повторяю – размер нашей адварной сети был 4 000 000 – 10 000 000.

Шери: Вы профессионал. Что нужно сделать, чтобы избежать инфицирования адварой?

Мэт: М-м-м. Используйте UNIX :-) Хотя даже для Линукса мы сделали адвару – она могла запускаться под Wine.

Шери: Ну это уже слишком!

Мэт: Жизнь такая – адварный рынок был ограничен, делали, что могли.

Шери: Ваше видение будущего адвары.

Мэт: Посмотрите на Gmail – самый яркий пример того какой должна быть Адвара будщего. Основные вакансии в Гугле – Ruby, Scheme.

Шери: Как вы относитесь к тому, что каждое ваше письмо в Gmail фильтруется скриптом?

Мэт: Конечно это меня беспокоит. Хорошо то, что я сам был когда по «ту сторону» веб-сервиса. Возможности Гугла несомненно опасные, но лишь потенциально.

Работая в DR , мне было очень легко запустить в систему некий скрипт, который бы предоставил информацию обо всех кредитных карточках, которые использовали пользователи, инфицированные нашей адварой. Таких комьютеров были миллионы. Я мог бы провернуть это дельце не ставя в известность никого из DR. Я мог написать скрипт на Scheme, разместить его где-то и пустить в «плавание» по нашей системе. Но я не сделал этого.

Чтобы сделать подобное нужно желать стать преступником. Но я не хотел этого.

Шери: Насколько приватность остается приватностью в наше время?

Мэт: Приватности больше не существует.

Шери: Значит вы думаете, что мысли о том, что личная жизнь неприкосновенна навязываются обществом и не имеют под собой реального фундамента?

Мэт: Конечно! Модель безопасности, которая используется при онлайновых покупках с использованием кредитных карт ничем не отличается от использования кошелька – «Возьмите денег сколько надо за товар, а сдачу верните» – всё на доверии.

Шери: Но всё-таки система работает, кажется…

Мэт: Любая система взаимоотношений не обязательно должна быть совершенной. В большинстве случаев, когда люди делают что-то вместе, то всегда присутствует механизм взаимной регуляции. Если у вас и у меня есть соглашение (контракт) и вы его нарушили, то у вас в сознании постоянно будет крутиться мысль о том, что у меня есть право наказать вас – указать на дверь или даже убить. Именно это опасение возмездия не позволяет людям слишком уж часто обманывать других.

Шери: Есть ли ещё что-то о чём вы хотели бы рассказать?

Мэт: Мы (люди) всегда можем получить то, что желаем. Хотим систему чистую от малвары – мы можем её создать. Хотим приватность – мы можем её добиться (с трудом, но можем). Главное постараться как следует.

Метки: , , , , , , , , , , , , , , , , , , , , , , ,

6 коммент. на “Интервью с автором Adware”

  1. mr.codec:

    интересное интервью, спасибо)

  2. bitonic:

    Всегда пожалуйста:-) Статья переведена мной. Достоверность перевода примерно 70%-80%. Так что прошу не бить меня больно ;)

    Оригинал статьи :
    philosecurity.org/2009/01/12/interview-with-an-adware-author

  3. Tex:

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

  4. bitonic:

    Всегда интересно узнавать информацию из инсайдерских источников о том как всё было когда-то. Для меня было интересно увидеть то, какие всё-таки дети эти американцы – создание адвары осуждают с МОРАЛЬНОЙ стороны, типа «Прямая дорога в Ад» и прочая лабуда – хи-хи:-)))

  5. Tex:

    :D :D :D
    Ты знаешь, но ведь это реально очень тонкий момент, так как у некоторых наших гиков-прогеров, с реальным уровнем мастерства, все мозги проёбаны на тему «Это все спам и вирусы!!! Зло вселеснское!!! Изыди!!!»

    Сам с этим не раз сталкивался в поисках приемлемого девелопера для некоторых проектов.

  6. TerVer:

    в меморис :)
    Тех +1,
    «… это что надо спамить добропорядочных граждан?…»

Добавить комментарий