Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР 116, АВГУСТ 2008 г.

Хакерим за бугром

Крис Касперски

Хакер, номер #116, стр. 116-046-1

Прикладные аспекты коммерческого взлома

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

Я, осевший в своей норе (den), которую голландские коллеги окрестили «лабораторией» (nezumi's lab), погружен в полумрак, разгоняемый тускло светящимся монитором… А что делать? Гроза, – выбило электричество, двухкиловатная батарейка от APC назойливо пикает. Протянет ли она до утра? Должна протянуть — зашутданены все шесть компьютеров и RAID-матрицы. Свет — для экономии батарей — выключен, я на ощупь шуршу по клавиатуре, даже не глядя на нее: работать вслепую — привычное дело. Погребенный под грудами распечаток и обитающий исключительно в дебрях машинного кода (с редкими вылазками на поверхность), пещерный грызун делится секретами поиска удаленной работы со взломом программ на потоке. В этой статье я обобщил весь свой многолетний опыт.

Техника безопасности или секс без презерватива

Прежде, чем говорить о вещах, граничащих с нарушением закона, неплохо бы полистать УК и ознакомиться с практикой судопроизводства. Например, обратиться к знакомому журналисту, ведущему криминальную хронику. Сам по себе УК – это просто куча страниц для нужд личной гигиены. Написанное пером — одно, а вот его практическое применение — совсем другое. В борьбе за выживание гораздо важнее знать статистику реальных судебных решений по тем или иным делам, а в УК она не фигурирует, и добыть ее, читая популярную литературу, невозможно.

Компьютерные преступления вообще трудно доказуемы и практически ненаказуемы, если, конечно, не говорить о явном вандализме, краже денег, торговле заведомо вредоносными программами и т.д. В ситуациях, касающихся денег, органы правопорядка всех развитых страх активно сотрудничают друг с другом. Хакеры палятся с ультрафиолетовой скоростью, после чего начинают отмазываться по всем статьям, которых на момент предъявления намного больше одной – обычно, прежде чем постучать в дверь (сапогами), человека долго «пасут», собирая доказательства.

На форумах некоторые смешные люди обсуждают не менее смешные способы уничтожения винта в случае взятия на абордаж. Глупые. Не знают, что винт (даже изъятый надлежащим образом) ничего не доказывает. А вот его уничтожение — косвенное подтверждение собственной вины Хотя тут можно попытаться отмазаться, сказав, что работал с конфиденциальной информацией, которую нельзя разглашать. Потому и соорудил систему уничтожения винта, а людей в погонах принял за переодетых бандитов, – вот и дал команду на самоуничтожение.

Но это все ерунда. Говорить о криминале мы не собираемся и, уж тем более, не будем давать советов, как обойти закон, используя дыры в УК. Ни в одном нормативном документе термина «хакер» нет, да и само понятие «хакерства» – растяжимое. Тем не менее, даже формально невинные деяния (вроде нашумевшего дела Склярова) могут повлечь за собой далеко идущие последствия. Как их избежать?

В реальной жизни функции сохранения нет, прививку от спецслужб не сделаешь и презерватив никуда не натянешь, а, значит, риск «залететь» есть всегда. Полностью нейтрализовать его нельзя, но свести к минимуму вполне возможно. Вот несколько правил, призванных обеспечить хакерскую безопасность в условиях дикой природы.

1. Работай только на зарубежных клиентов, дислоцирующихся в странах, наплевательски относящихся к хакерству и находящихся если не в оппозиции с Россией, то, во всяком случае, не идущих у нее на поводу, например: Кабул, Иран, Непал, Ливан, Южноафриканский блок. И нечего тут смеяться. Компьютеры у них есть и потребность в хакерах — огромна! Кстати, в Южной Африке белых намного больше, а негров даже меньше, чем в Северной Америке. Хай-тек там имеется. Даже если спецслужбы классифицируют некие деяния как «преступления», то сам черт не разберет, законы какой страны пострадали больше всего, да и бюрократической волокиты тут не меряно. Даже если действовать под своим реальным именем, риск «залететь» все равно нулевой.

2. Сотрудничай только с крупными компаниями, а не отдельными индивидуумами. Чем компания крупнее, тем менее значим совет №1, поскольку фирме, нуждающейся в хакерских услугах, дешевле нанять адвоката (а чего его нанимать? юридический отдел и так занимает целый этаж), чем оплачивать эту же работу заново, нанимая другого хакера. Да и потом, если задержанный «преступник» откроет рот, сказав, что просто выполнял задание фирмы, не ведая, что творит — фирме по-любому придется отмазываться. А единственный способ отмазать себя — это оправдать хакера, доказав, что никакого преступления вообще не было и это все злостные нападки конкурентов, которым мы сейчас предъявим встречный иск за нарушение патентных прав, моральный ущерб и упущенную выгоду. Так что, с дополнительными мерами предосторожности можно сотрудничать и со Штатами, не говоря уже про Китай и прочие азиатские страны.

3. Всегда отказывайся от заказов, которые дурно пахнут, особенно если клиент открытым текстом говорит, зачем ему потребовалось три тонны тротила или эмулятор для банковских смарт-карт. Это либо дебил (клиент в смысле), либо ловля на живца (что встречается реже, но все-таки встречается). Исходи из презумпции невиновности, которую со времен ее декларации никто не отменял. Если человеку нужен клавиатурный логгер, то... а почему бы и нет? Что в этом незаконного такого? Например, я могу ставить на свою собственную машину любые логгеры, какие только захочу. Может, у меня провалы в памяти или интерес посмотреть, какая сволочь устраивает на рабочем столе кавардак всякий раз, когда я отлучаюсь от своего ПК. Администратор локальной сети, устанавливающий логгера, возможно, и совершает противоправное действие, но тут нужно служебную инструкцию читать – и в любом случае, за это действие отвечает он, но не создатель логгера. А если кто-то с помощью логгера стырит номера кредитных карт, пароли и прочую секретную информацию — вот пускай и отвечает по всей строгости закона. Поскольку логгер не является вредоносной программой в чистом виде (а как насчет макросов? макро-рекордеры — ну чем они не логгеры), то создатель программы никакой ответственности не несет (при условии, что он не в сговоре), хотя потрепать нервы могут.

Minimal system request

Какими знаниями/опытом/навыками должен обладать хакер для продолжительного хачинья? В первую очередь, – знать язык. Нет, не ассемблер и даже не Си. Английский разговорный. Без словаря. Необходимо уметь не только бегло читать сложный технический текст, вникая в него по ходу дела, но и свободно изъясняться в формальной и неформальной переписке. Также (если фирма действительно крупная) следует быть готовым к длинной серии продолжительных телефонных интервью. Фирмы поменьше, чтобы не тратиться на звонки, предпочитают GTalk — разборчивость речи чуть похуже, зато все непонятные (на слух) слова можно ввести в окне текстового чата. То же самое относится к словам, которые мы знаем, как пишутся, но не можем их произнести. Значит, навык беглого письма обязателен, плюс умение воспринимать речь на слух.

Хотя, что касается слуха, – тут все от собеседника зависит. В частности, слово Asia испанцы произносят по буквам, как оно написано («Эсиа») – и ужасный русский акцент им не помеха. А вот американцы совершенно не въезжают, потому что Азия у них звучит, как «Эйжа», что очень сильно напрягает поначалу. Потому перед первыми телефонными интервью настоятельно рекомендуется продумать, какие словам могут встретиться в разговоре, заглянуть в словарь на предмет транскрипции, а для надежности — прогнать текст на одной из программ-говорилок. Сервис ImTranslator 3.2 (www.omniglot.com/links/translation.htm) вполне сносно говорит на куче языков и неплохо переводит с китайского на английский.

Кстати, при всем уважении к народу Поднебесной, понять их английский (как письменный, так и устный) намного сложнее, чем китайский. К тому же, ковырять китайскую программу без знания языка — легче на якорной цепи повеситься. Куча кнопок с иероглифами и совершенно непонятно, на какую нажимать. Впрочем, если только текст не представлен в графическом виде — его легко рипнуть любой подходящей программой (на худой конец сойдет и MS Spyxx, входящий в штатный комплект поставки MS Visual Studio). После чего загнать в словарь, например, в уже упомянутый ImTranslator. Базовых иероглифов не так уж и много. Они быстро запоминаются, правда, чтобы операционная система научилась их отображать для неуникодовых программ, необходимо загрузить языковый пакет и правильно настроить локаль. Ну да, это тема отдельного разговора.

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

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

Конечно, можно ограничиться одним лишь английским, но самых «жирных» клиентов мы отсечем. Возникает резонный вопрос — а не лучше ли потратить время на изучение китайского хотя бы на самом фундаментальном уровне, чем корячиться долгие годы на дешевых заказах?

Впрочем, каждый решает сам, с кем ему дружить, и что ему учить, так что закрываем эту тему и возвращаемся к языкам программирования.

Не ассемблером единым

Хакер, не знающий ассемблера, это не хакер. В основном, конечно, спрос на x86/x86-64 системы, однако, довольно часто приходится сталкиваться и с микроконтроллерами со стертой маркировкой или заказными чипами с неизвестным набором команд — документации либо вообще нет, либо она отдается только под строгую подписку за немереные деньги и только юридическим лицам, да и то не всем. Как быть, что делать? Отказаться от заказа? Ну, отказаться мы всегда успеем. Систем команд разработано не так уж и много и крайне маловероятно, что заказной чип будет иметь уникальную систему. Скорее всего, это окажется производное чего-то хорошо известного с небольшим количеством действительно новых инструкций, назначение которых вычисляется эвристическим путем. Дизассемблирование прошивок заказных чипов – вполне реальное дело; главное, уметь писать процессорные модули для IDA-Pro и знать язык основных чипов.

Но ассемблер — это нижний уровень. На верхнем находится... нет, совсем не приплюснутый Си, а все больше Перл, Питон или типа того. Вот еще Руби появился, чтобы ему было пусто. Кому нужна эта, извините за выражение, хрень? Ведь то же самое можно реализовать и на Си даже с большой эффективностью. Увы! Если клиент хочет получить программу на Питоне, приходится подстраиваться под его требования или… послать такого клиента в лес, туда, где лоси. И все было бы хорошо — да только желающих получить proof-of-concept на Питоне (Перле, Руби) с каждым годом становится все больше и больше. Интерпретируемые языки представляют собой явление, с которым нельзя не считаться. Особенно, если вспоминать про регулярные выражения, используемые и для сигнатурного поиска малвари. Вполне распространенное явление — появилась малварь, которую пока никто не ловит, а мы уже расковыряли ее и готовы предложить готовый детектор. Вот только если у клиента имеется своя собственная система обнаружения вторжений, основанная на Перле/Питоне, то наш сишный модуль останется невостребованным. Пусть он работает в сто раз быстрее, но в чужой монастырь со своим уставом не ходят.

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

Злачные места андеграунда

Где искать заказы? В Интернете, а где же еще! Ну, это понятно, что не в брачном агентстве, но все-таки, нельзя ли конкретнее? Как насчет хакерских форумов? Там же тусуется толпа народа! Вот именно, что «толпа» и что «тусуется». В основном идет сплошной треп. Бродят по форуму разные люди с просьбой: дайте денег на гравицапу от пепелеца и ведут себя, будто мы пытаемся им что-то продать. Так что, это даже не вариант. Поиск кряков, просьбы взломать чей-то почтовый ящик/веб-сервер или наточить грабер паролей. В этом тухлом омуте нормальная рыба не плавает. Хотя не все форумы одинаковы. На www.openrce.org, www.reverse-engineering.net, www.woodmann.com встречаются весьма серьезные заказчики, обычно размещающие объявления в коммерческих разделах и позиционирующие себя как фирмы по безопасности.

Слово «фирма» — ключевое. Это не лось и не иголка в стоге сена. Она либо есть (и тогда о ней легко собрать обширную информацию, порывшись в Гугле), либо нас просто дурачат, то есть разводят, как лохов. Или эта, с позволения сказать, «фирма» только вчера образовалась и потому идет лесом.

Кадровые агентства при всей своей бесполезности иногда дают хороший улов. То же самое относится к разделу «Jobs» на Security Focus, однако намного выгоднее выходить на известные фирмы напрямую, смотреть, что они пишут в разделе careers на своих сайтах и предлагать услуги, что называется, из первых рук. Просто замечательно, если часть персонала фирмы уже знает нас по постам на форумах и не просто знает, а находится в теплых дружеских отношениях, что существенно упрощает получение заказов.

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

На хакерском рынке

Мы бродим среди стеллажей с товаром, то ныряя в подпольные склады, то выныривая обратно к слепящим витринам мега-корпораций. Кто все эти люди и чего им от нас нужно? Искателей крэков, вирусов, троянов и прочей нечисти мы (как уже говорилось) отбросим сразу. Пусть с ними имеют секс другие. Нас интересуют серьезные предложения от серьезных компаний, занимающихся легальным бизнесом.

Анализ коммерческого программного обеспечения на предмет поиска украденных фрагментов кода или несанкционированного использования патентованных алгоритмов – весьма популярная тема и суммы там фигурируют с тремя нулями сзади и двумя цифрами спереди. И все это в долларах, если не в евро. С юридической точки зрения, законы ряда стран запрещают дизассемблировать код, если на то нет соответствующего разрешения от правообладателя. Замечательно! У нас стырили алгоритм и теперь юзают его без выплаты отчислений, а мы даже не можем их прищемить. То есть, еще как можем! По российским законам дизассемблирование возможно и без получения разрешения, поэтому западные компании очень часто нанимают русских хакеров, чтобы поковыряться в коде конкурентов.

Найти похищенный бинарный модуль (пусть и хорошо запрятанный) — минутное дело, даже если он слегка изуродован. А вот с поиском алгоритмов дела обстоят гораздо сложнее. Хакер находится в кромешной тьме, совершенно не понимая, откуда начинать движение и что именно следует искать. Алгоритм (патентованный) – это ведь не пошаговая стратегия и вариантов реализации тут намного больше одного и все они завязаны на математику. На низком уровне (отдельных машинных команд) тут ловить совершенно нечего. Приходится абстрагироваться от деталей и рисовать запутанные диаграммы, отображающие ход выполнения программы в наглядной форме. Вот тут-то все патентованные (и непатентованные) алгоритмы и выплывают. Если, конечно, хакер распознает их среди нагромождений квадратиков и паутины стрелочек. Задача сложная, но хорошо оплачиваемая и представляющая собой настоящее испытание, что реально притягивает и завораживает.

После этого «подъем» бинарного кода до компилируемых исходников покажется детской забавой. Вот только не надо пытаться сплавить клиенту результат работы Hex-Rays или другого декомпилятора. Во-первых, это не есть исходные тексты, во-вторых, они не компилируются, а если даже и компилируются, то программа падает еще при запуске. Конечно, никто не требует снабжать каждую строку комментариями, но реконструированный исходный текст должен быть понятен прикладному программисту. Компиляторы (оптимизирующие) любят реализовать выделение памяти через умножение (у команды mul легко отловить переполнение, преобразовав указатель к нулю, сигнализирующему, что на память нас обломали) или выбрасывать исключение с помощью деления, причем не на нуль, а опять-таки путем переполнения. В исходном коде ни умножения, ни деления, понятно, не ночевало. Там было тривиальное ветвление — проверка указателя на равенство нулю. Вот только современные процессоры ветвления не любят, и компиляторы стремятся избавиться от них везде, где это только возможно. Но это уже детали. В целом, ручная декомпиляция программы – дело простое (а потому и сравнительное низко оплачиваемое), но отнимающее кучу времени, что делает его малопривлекательным занятием для опытных хакеров.

Иногда, вместо подъема программы до исходных текстов, предлагают «рипанье» бинарного кода с последующим оформлением его в виде динамической библиотеки с документированным интерфейсом, то есть с описанием прототипов всех функций. Оплачивается это еще хуже, однако, требует сравнительно немного времени. На вопрос, кому и зачем может потребоваться рипать код — лучше даже не искать ответа. Гораздо важнее, что рипанье само по себе ненаказуемо и правонарушение совершает тот, кто использует рипнутый код в своих продуктах, а потому частным требованием заказчика становится шифровка кода.

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

Также неплохо идут на рынке реконструкции сетевых протоколов с интерфейсами динамических библиотек, форматов файлов и т.д. Существуют целые фирмы, специализирующие на создании игровых читов и ботов. Думаю, не стоит объяснять, что они остро нуждаются в хакерской помощи, правда, сотрудничать с ними… ну очень нудно. Как минимум, требуется толстый интернет-канал, позволяющий прокачивать гигабайты свежих игр. Игровой сервер, расположенный где-то там, требует к себе очень бережного обращения. При подозрении в хакерстве на IP-адрес выставляется бан, иногда захватывающий всю подсеть провайдера, а всякие прокси забанены уже давно. Вот и приходится пользоваться услугами разных провайдеров, привлекая к этому занятию друзей со всего мира, устанавливая на их компьютерах (по обоюдному согласию) тоннельные прокси. Весь интернет все равно не забанишь, но расходы… потраченное время… И все это – за какие-то 10k в месяц? А именно на такую сумму можно рассчитывать, работая на постоянной основе.

Хакер в законе

Вылезти из подполья и перевести свою хакерскую деятельность на коммерческие рельсы — вполне возможно. Заказы будут. И их будет много. И никакого криминала. Правда, после выполнения некоторых видов работ (вполне легальных в России) в США можно будет въехать только чучелом или тушкой. Это, пожалуй, единственный серьезный недостаток хакерской деятельности. Причем, совершенно невозможно узнать заранее, имеет ли кто-то в Штатах на нас зуб или нет. Иногда хакеров хватают сразу при сходе с самолета и начинают предъявлять, даже если они сюда не хакерствовать приехали, а просто потусоваться на конференции.

На этот случай... нет, адвокатов мы оставим голливудским боевиками, но запомним телефоны Российских посольств. Туда следует первым делом звонить при задержании (в США, как известно, задержанному разрешается сделать один телефонный звонок и лучше звонить в посольство, чем домашним, которых с перепугу может и Святой Кондратий хватить). Впрочем, здесь нет универсальных путей и нужно смотреть по ситуации. А ситуация такова — или хакерство, или Америка. Совместить эти две вещи без риска для здоровья — это нужно нереально крутым перцем быть.

Содержание
ttfb: 46.929121017456 ms