hack-jb-rem

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

крис касперски, ака мыщъх, a.k.a. nezumi, a.k.a. souriz, no-email

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

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

hack-jb-rem_image_0.jpg

Рисунок 1 мы будем хакерствовать, оставаясь на свободе

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

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

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

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

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

  1. работайте только на за рубежных клиентов, дислоцирующихся в странах, наплевательски относящихся к хакерству и находящихся если не в оппозиции с Россией, то во всяком случае не идущие у нее на поводу, например: Кабул, Иран, Непал, Ливан, Южноафриканский блок… и нечего тут смеяться. Компьютеры у них есть и потребность в хакерах — огромна! Кстати, в Южной Африке белых намного больше, а негров даже меньше, чем в Северной Америке и хайтек там имеется. Даже если спецслужбы классифицируют некие деяния как «преступления», то сам черт не разберет законы какой страны пострадали больше всего, да и бюрократической волокиты тут не меряно, даже если действовать под своим реальным именем, риск «залететь» все равно нулевой;
  2. сотрудничайте только с крупными компаниями, а не отдельными индивидуумами, и, чем компания крупнее, тем менее значим совет (а), поскольку, фирме, нуждающихся в хакерских услугах, дешевле нанять адвоката (а чего его нанимать? юридический отдел и так занимает целый этаж), чем оплачивать эту же работу заново, нанимая другого хакера, да и потом, если задержанный «преступник» откроет рот, сказав, что он просто выполнял задание фирмы, сам не ведая того, что творит — фирме по любому придется отмазываться, а единственный способ отмазать себя — это оправдать хакера, доказав, что никакого преступления вообще не было и это все злостные нападки конкурентов, которым мы сейчас предъявим встречный иск за нарушение патентных прав, моральный ущерб и упущенную выгоду. Так что, с дополнительными мерами предосторожности, можно сотрудничать и со Штатами, не говоря уже про Китай и прочими азиатскими странами;
  3. всегда отказывайтесь от заказов, которые дурно пахнут, особенно если клиент открытым текстом говорит, что зачем ему потребовалось три тонны тротила или эмулятор для банковских смарт-карт. это либо дебил (клиент в смысле), либо ловля на живца (что встречается реже, но все-таки встречается). Исходите из презумпции невиновности, которую со времен ее декларации никто не отменял. Если человеку нужен клавиатурный логгер, то… а почему бы и нет? Что в этом незаконного такого? Например, я могу ставить на свою собственную машину любые логгеры, какие только захочу. Может у меня провалы в памяти или интерес посмотреть какая сволочь устраивает на рабочем столе кавардак, всякий раз когда я отлучаюсь от своего ПК?! Администратор локальной сети, устанавливающий логгера, возможно, и совершает противоправное действие, но тут нужно служебную инструкцию читать и в любом случае, за это действие отвечает он, на не создатель логгера. А если кто-то с помощью логгера стыбрит номера кредитных карт, пароли и прочую секретную информацию — вот пускай и отвечает по всей строгости закона. Поскольку логгер не является вредоносной программой в чистом виде (а как насчет макросов?! макро-рекордеры — ну чем они не логгеры), то создатель программы никакой ответственности не несет (при условии, что он не в сговоре), хотя потрепать нервы могут;

Рисунок 2 Ольга — один из основных инструментов хакера

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

Рисунок 3 GTalk – удобное средство для бесплатного текстового/голосового чата

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

Рисунок 4 правильно настроенная XP способа отображает иероглифы где угодно

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

Рисунок 5 китайский stuff – попробуй его захачить

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

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

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

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

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

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

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

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

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

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

Рисунок 6 OpenRCE.org - серьезный интернациональный сайт для серьезных хакеров

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

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

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

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

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

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

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

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

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

Помахивая контракт с серьезной фирмой (а несерьезные лучше не трогать) следует быть готовым к телефонному интервью, от поведения на котором во многом зависит судьба заказа и величина оплаты. Что бы умного тут посоветовать? Ага! Заблаговременно поставить любую программу, поддерживающую войсовый чат и потрепаться с друзьями-хакерами, оценив потенциал своего разговорного английского, чтобы по крайней мере убрать нервозность и страх.

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