Автор: (c)Крис Касперски ака мыщъх
Сезон охоты на хакеров уже открыт! Нас разыскивают спецслужбы всего мира. если ты релизишь варез, дизассмишь программы, отламываешь защиты, разводишь вирусов или атакуешь сеть - тебя сажают в тюрьму. Чтобы остаться на свободе, достаточно иметь сотовый телефон с GPRS-протоколом, паяльник, дизассемблер и немного смекалки...
Рисунок 1. Жизнь за колючей проволокой - цена свободы.
Любое расследование традиционно начинается с извечных вопросов: кому это выгодно и кто бы это мог сделать? Многие хакеры прокалываются на том, что оставляют за собой текстовые строки (так называемые "граффити") с указанием своего ника, города проживания, названия кафедры или другой информации подобного типа. Это существенно сужает круг поиска, после чего спецслужбам остается всего лишь перешерстить компьютерную тусовку. Реальных хакеров очень немного и все о них знают. Вот она - цена известности!
В этом мире выживают только те, кто отрезает себя от внешнего мира, отказывается от общения и забившись в глухую нору одиночества, хакерствует в свое удовольствие. Основным источником информации, демаскирующим атакующего, становится его IP-адрес. С точки зрения сетевых протоколов это всего лишь 32-битное число в заголовке пакета, которое ничего не стоит подделать или исказить. Но вот толку от этого будет немного. Пакеты с левыми IP-адресами сдохнут на первом же машрутизаторе, а если и не сдохнут, никакого ответа отправитель все равно не получит, а значит не сможет установить TCP-соединение.
Для обеспечения собственной анонимности проще всего воспользоваться Proxy-сервером, расположенном в какой-нибудь отсталой стране, не симпатизирующей ни России, ни Америке. Таких серверов достаточно много, но далеко не все они анонимны. Существует множество служб, проверяющих proxy на "вшивость", самой лучшей из которых на мой скромный мыщъхиный взгляд является www.showmyip.com (см. рис. 2).
Рисунок 2. Служба www.showmyip.com проверяет японский proxy-сервер bi.ikenobo-c.ac.jp. proxy успешно скрыл мой IP, и даже попытался замаскировать континент (Asia), но позволил определить город проживания (Krasnodar) и название компании провайдера (Southern Telecommunication Company), а также часовой пояс, который, кстати говоря, определяется с помощью Java-скриптов, так что Proxy тут не причем и, чтобы не погореть на первом же взломе, хакер должен сменить сервер и отключить скрипты.
Но даже если proxy выглядит вполне благонадежным, он вполне может скрытно коллекционировать трафик, предоставляя эту информацию по первому требованию спецслужб. По слухам, самые быстрые анонимные proxy как раз спецслужбами и установлены. Но проблема даже не в этом. Каждый из нас может поставить честный proxy, который бы гарантированно не собирал никакой информации о пользователях и отдать его в коллективное распоряжение - пускай хакерствуют (это характерно для институтов и других некоммерческих организаций с трафиком, оплачиваемым государством). Но где гарантия, что информацию о входящих/исходящих соединениях не собирает наш провайдер или провайдер провайдера? А как показывает практика, большинство провайдеров ее все-таки собирают, сохраняя логи на жестких дисках в течении нескольких дней или даже недель! К тому же, не будем забывать про СОРМ, который, как известно, не дремлет.
Рисунок 3. СОРМ - система оперативно-розыскных мероприятий, в настоящее время принятая практически всеми провайдерами и предназначенная для отлова хакеров, подробности здесь: http://www.loniis.ru:8101/RUS/products/catalogs/zips/sorm2001.zip.
Конечно, если хакер дефейсит страничку Васи Пупкина, то хорошего proxy-сервера для этих целей вполне достаточно. Главное - не оставить на атакуемом узле никакой личной информации, ведь поднимать логи по такому мелочному делу все равно никто не будет. А вот для серьезного взлома proxy уже не подходит и приходится искать другие пути.
Рисунок 4. Анонимный взлом.
Рисунок 5. Чем защищают свои права.
Рисунок 6. Хакер-невидимка.
Рисунок 7. Логотип анонимного Proxy-сервера TRIUMPH PC.
Рисунок 8. Внешний вид программы Secret Surfer, предназначенной для автоматического построения цепочки анонимных proxy. Чем больше серверов будет задействовано - тем выше безопасность, однако риск оказаться пойманным все же очень велик. Что, если первый сервер в цепочке принадлежит ФБР?
Сотовый телефон - коварная штука. Каждый аппарат содержит уникальный заводской номер (точнее, серию номеров), автоматически передаваемый в сеть при включении питания или даже при каждом звонке (это уж как решит оператор!), что позволяет спецслужбам обнаруживать краденные телефоны, отслеживать перемещение их владельцев и делать много других нехороших вещей. Аналогичным образом поступает и SIM-карта, передающая идентификационную информацию, по которой легко определить имя и фамилию абонента. Продавцы телефонов ведут специальные списки, отмечающие - кому и когда какой агрегат был продан - за этим строго следят блюдущие органы. Некоторые магазины требуют предъявления паспорта, некоторые - нет. Теоретически можно называться вымышленным именем, однако всегда существует риск, что покупателя опознает продавец.
Рисунок 9. Война объявлена.
Чтобы остаться незамеченным, хакер приобретает подержанный сотовый телефон с рук по чисто номинальной цене (телефон, естественно, ворованный) и при необходимости тем же путем добывает SIM-карту с некоторой суммой на счету. Выехав с ноутбуком в безлюдное место, он осуществляет взлом (или сливает свеженаписанный вирус в Интернет), а затем уничтожает сотовый телефон путем закатывая его в асфальт. Чтобы установить личность атакующего, спецслужбам придется раскрутить всю цепочку: кому был продан телефон, кем сворован, куда перепродан и т.д., но никаких доказательств у них все равно не будет. Телефон-то ведь уничтожен а все компроментирующие данные давно стерты или зашифрованы!
Рисунок 10. Мобильная атака.
Естественно, если хакер настолько обнаглеет, что начнет совершать взломы на регулярной основе, его быстро засекут и установят слежку. Даже если атаки совершаются из разных мест, запеленговать сотовый - плевое дело. Поэтому приходится действовать так: сотовый телефон с голубым зубом подкладывается в кучу мусора посреди пустыря (естественно, с предварительно протертыми "пальчиками"), а хакер сидит с нотебуком на порядочном отдалении (в радиусе прямой видимости с направленной антенной, голубой зуб держит устойчивую связь в пределах километра) и при появлении непрошеных "гостей" сматывает удочки и уезжает.
Рисунок 11. Общий принцип GPRS-связи.
Кто-то может спросить: зачем все эти сложности, когда можно просто зайти в любое Интернет-кафе, подключится к телефонной "лапше" на лестничной площадке и т.д.? На самом деле, все эти способы небезопасны и ненадежны. Сколько хакеров на этом погорело - не пересчитать! Но все-таки выбрасывать телефон после каждой атаки получается слишком накладно. Так никаких телефонов не напасешься! С некоторой долей риска можно ограничиться тем, что после каждой атаки изменять идентификационный номер на другой, тогда уничтожать телефон будет необязательно. Спецслужбы все равно не смогут ничего отследить! При желании можно перепрограммировать и SIM-карту, однако хлопоты не стоят того.
Рисунок 12. Универсальный ридер/программатор любых SIM-карт.
Кроме сотовых телефонов, для мобильного выхода в сеть можно воспользоваться GPRS-модемом. Они бывают двух типов. Первые предстают собой крошечную "мыльницу", подключающуюся по USB, вторые - PCI-плату расширения. Для взлома последние наиболее предпочтительны. Они намного дешевле и удобнее для экспериментов. Плотность монтажа на PCI-карте намного ниже, чем в USB-модеме или сотовом телефоне, что позволяет производителю использовать более доступные серийные компоненты. К тому же, если за продажей сотовых телефонов установлен жесткий контроль, но GPRS-модемы отгружаются бочками и продаются без предъявления паспорта или иных удостоверений личности.
Рисунок 13. GPRS-модем, подключаемый к нотебуку по USB.
Рисунок 14. GPRS-модем, выполненный в виде PCI-карты, восьмиконтактная микросхема чуть выше центра - и есть EEPROM.
Идентификационный номер состоит из двух частей ESN (Electronic Serial Number - электрический серийный номер) и MIN (Mobile Identification Number - мобильный идентификационный номер). Обычно они обозначаются как ESN/MIN и у наших зарубежных хакерских коллег называются парой (pair).
Конструктивно MIN хранится в модуле NAM (Number Assignment Module - Модуль Назначения Номеров) - микросхеме постоянной памяти c емкостью не менее 32 байт в пластиковой или керамической "обертке", расположенной на печатной плате. Обычно это EEPROM (то есть многократно перепрограммируемое ПЗУ), или PROM (однократно программируемое ПЗУ). Отождествить эту микросхему очень просто - эдакий мелкий таракан, с 8 ногами. Помимо MIN'а здесь находится SIHD и другая служебная информация, приблизительный формат которой приведен в таблице 1.
Рисунок 15. Микросхема EEPROM на плате сотового телефона Nokia, хранящая идентификационные данные.
Адрес | Биты | Назначение |
00 | 14-8 | SIDH |
01 | 7-0 | SIDH |
02 | MIN | |
03 | 33-28 | MIN2 |
04 | 27-24 | MIN2 |
05 | 23-20 | MIN1 |
06 | 19-12 | MIN1 |
07 | 11-4 | MIN1 |
08 | 3-0 | MIN1 |
09 | 3-0 | SCM |
0A | 10-8 | IPCH |
0B | 7-0 | IPCH |
0C | 3-0 | ACCOLC |
0D | 0-7 | PS |
0E | 3-0 | GIM |
0F | 0-7 | LOCK DIGIT 1,2 |
10 | 0-7 | LOCK DIGIT 3, LOCK SPARE BITS |
11 | 0-7 | EE (END TO END SIGNALING), REP (REPERTORY) |
12 | 0-7 | HA (HORN ALERT), HF (HANDS FREE) |
13 | Зависит от производителя | |
... | ||
1D | ||
1E | 0-7 | Для выранивания |
1F | 0-7 | Контрольная сумма |
Таблица 1. Приблизительная схема заполнения NAM'a.
Аббревиатура SIDH расшифровывается как System Identification for Home System (Система Идентификации для Домашних Систем) и чаще всего называется просто SID. Система идентификации сообщает сотовой станции, каким оператором обслуживается наш телефон, что используется для роуминга. SIDH-код представляет собой 15-битный идентификатор, общий для всего региона и ничего не говорящий о конкретном абоненте, поэтому изменять его не надо. На анонимность атакующего SIDH-код никак не влияет.
Некоторые мобильники позволяют перепрограммировать NAM прямо с клавиатуры телефона! Впрочем, количество циклов перепрограммирования обычно очень невелико (от 3 до 20 в зависимости от настроения производителя) - за это отвечает микропроцессорная прошивка, так же называемая firmware. Ресурс самой микросхемы намного больше и практически неограничен. Но как бы так ни было, для долговременного хакерствования такой способ решительно не годится и приходится искать обходные пути.
Рисунок 16. Хирургические операции с сотовым телефоном.
Одни хакеры выпаивают микросхему и перепрограммируют ее на программаторе вручную (хотя выпивать микросхему для этого, в общем-то, необязательно), другие - модифицируют прошивку, запрещая ей блокировать NAM. Первое требует умения держать паяльник в руках, второе - дизассемблер.
Рисунок 17. Перепрограммирование микросхемы без выпаивания ее с платы.
Исследование прошивок - это высший пилотаж хакерства, требующий обширных познаний и высочайшей квалификации. Для начала необходимо опознать процессор. Даже если оригинальная маркировка микросхемы не была "заботливо" уничтожена производителем телефона, вовсе не факт, что описание машинных команд удастся найти в сети. Техническая документация на многие мобильные процессоры засекречена или распространяется только по подписке, то есть за деньги (причем, физические лица отдыхают). Тем не менее, системы команд многих процессоров достаточно похожи и при достаточной настойчивости разобраться в них можно и без описания. Но что это дает? Любая прошивка буквально нашпигована командами взаимодействия с портами ввода/вывода, управляющих электронной начинкой телефона. За что они отвечают - непонятно. Это сплошное нагромождение головоломок и на анализ своей первой прошивки можно потратить целый год. Да-да! Двенадцать месяцев, триста шестьдесят пять дней и никак не меньше!
Рисунок 18. Дизассемблирование прошивки.
Перепрограммирование микросхемы "вживую" намного проще (а, значит, привлекательнее), хотя и обладает намного более скромными возможностями. К тому же существует риск необратимо испортить свой телефон. Но охота, как говорится, пуще неволи. Прежде чем выпаивать микросхему, хакер определяет ее тип. Большинство производителей используют серийные чипы, модель которых легко опознается по разводке даже при полностью уничтоженной маркировке. Основные используемые микросхемы перечислены во врезке. Остается только достать программатор, который можно приобрести на радиорынке или спаять самостоятельно!
Рисунок 19. Принципиальная схема несложного программатора.
Рисунок 20. Внешний вид программатора.
Прежде, чем что-то менять в NAM, необходимо уметь рассчитывать контрольную сумму. Чтобы не делать этого вручную, я написал простенький скрипт для дизассемблера IDA Pro, исходный текст которого приведен ниже:
Листинг 1. IDA-скрипт, автоматически рассчитывающий контрольную сумму.
С таким скриптом ничего не стоит захачить MIN по полной программе! С формальной точки зрения, MIN представляет собой 34-битное число, разделенное на две половинки. Младшие 10 бит обознаются MIN2 и отвечают за хранение кода области (area code), оставшиеся 24 бита - личный номер мобильного устройства.
Код области хранится в упакованном двоично-дестятичном формате и чтобы его привести к естественной форме отображения, к каждому десятичному разряду необходимо прибавить цифру 9, разделить результат на 10 и записать остаток. В частности, зоне 213 будет соответствовать следующий MIN2: (2 + 9) % 10 = 1; (1 + 9) % 10 = 0; (3 + 9) % 10 = 2. Объединив все вместе, мы получим: 102 или 0001100110 в двоичном представлении. Именно такое число будет содержаться в микросхеме!
Следующие 24-бита (MIN1) кодируются чуток сложнее. Личный идентификационный номер телефона для удобства разбит на две части, которые записываются приблизительно так: 376-0111. Но это только с точки зрения неискушенного пользователя! В действительности же, частей три: первые 10 бит MIN1 содержат три левых разряда (в данном случае - 111), которые кодируются так же, как и MIN2. Следующие четыре бита содержат четверную цифру идентификационного номера, записанную в двоичной форме, "как есть". При этом 0 (ноль) записывается как 10 (1010 в двоичной форме). Оставшиеся 10 старших бит содержат три первых цифры идентификационного номера, кодируемые так же, как и в MIN2. Таким образом, поле MIN1 для нашего идентификационного номера будет выглядеть так: 265-10-000 (или 0100001001 1010 0000000000 в двоичной форме).
Рисунок 21. Формат представления MIN'а.
Разобравшись с NAM'ом, перейдем к ESN - 11-значному 32-битному уникальному номеру. В GSM устройствах он называется IMEI (International Mobile Equipment Identity - международный идентификатор мобильного устройства) и занимает 15 знаков, что на 4 знака больше, чем ESN, но это уже формальности.
Стандарты беспроводной связи требуют от производителей невозможности изменения ESN/IMEI программным путем, однако далеко не все производители к ним прислушиваются. Зачастую ESN/IMEI хранятся в NAM, что является вопиющим нарушением, а в некоторых случаях перепрограммируются прямо с клавиатуры. Впрочем, даже если ESN зашит в PROM (однократно программируемое ПЗУ) микросхему можно выпаять с платы и заменить на свою собственную. Чтобы телефон не сдох и печатные проводники не оборвались от постоянно перегрева, имеет смысл установить панельку, тогда операция замены микросхемы займет несколько секунд. Знатоки дизассемблера дорабатывают прошивку так, чтобы ESN/IMEI не считывался с ПЗУ, а вводился с клавиатуры или автоматически генерировался при каждом включении телефона.
Судя по всему, ESN/IMEI никак не кодируется и записывается в двоичной форме как есть. Во всяком случае, сравнивая свой ESN/IMEI (обычно, он пишется на задней стенке телефона), систему кодирования можно взломать без труда. Навряд ли там будет что-то экстраординарное. Настоящая проблема в том, что ESN/IMEI и MIN выбираются не случайным образом и должны соответствовать друг другу, в противном случае оператор просто не пустит нас в сеть! А где можно раздобыть валидные пары ESN/IMEI и MIN? Первое, что приходит в голову - подсмотреть. Достаточно лишь взять чужой сотовый телефон в руки на несколько минут. После несложных манипуляций с клавиатурой (см. врезки) и ESN/IMEI, и MIN высветятся на дисплее. Достоинство этого приема в том, что хакер получает гарантированно работающую пару, однако его анонимность немедленно оказывается под угрозой. Спецслужбы найдут владельца оригинального номера и, ласково поглаживая утюжок, попросят его перечислить всех лиц, имеющих доступ к телефону.
Некоторые предпочитают пользоваться генераторами идентификационных номеров. Их легко найти в сети (набираем в googl'е что-то вроде "IMEI calculator" и вперед), правда не все из них рабочие. А еще можно воспользоваться сканером и, устроившись в людном месте, таком, например, как рынок или метро, за несколько часов получить добрую сотню рабочих пар, не рискуя оказаться никем замеченным. Чисто технически, в сканер можно превратить любой сотовый телефон или (если кто-то не в ладах с паяльником) купить уже готовый. Десятки фирм имеют свои Интернет-магазины, рассылающие товар наложенным платежом. Еще списки ESN/MIN можно обнаружить на хакерских форумах и IRC-каналах.
В общем, перепрограммировать свой сотовый телефон совсем несложно. Это может сделать каждый хакер!
Рисунок 22. Устройство фирмы INSTORESA, предназначенное для изменения идентификационной информации сотового телефона.
Вот пара
хороших руководств, объясняющих - как вычисляется MIN и некоторые другие идентификационные
данные:
http://www.3gpp2.org/Public_html/Misc/C.P0006-D_v1.8_cdma2000_Analog-V&V_text_Due_3_June-2005.pdf;
http://www.tiaonline.org/standards/sfg/imt2k/cdma2000/TIA-EIA-IS-2000-6-A.pdf;
ROM (Read-Only Memory - память только на чтение): классическое ПЗУ, программируемое на аппаратном уровне в процессе производства микросхемы. Не можем быть изменено программным путем. Не применяются ни в одном известном мне сотовом телефоне.
PROM (Programmable Read-Only Memory - Программируемая Память только на чтение): однократно программируемое ПЗУ, информация в которое заносится на специальном устройстве, называемом программатором. В сотовых телефонах большого распространения не получило.
EPROM (Erasable Programmable read-Only Memory - Стираемая Программируемая память только на чтение): многократно перепрограммируемое ПЗУ, очищаемое ультрафиолетовыми лучами и требующее программатора. Легко опознается по характерному "окошку". По слухам, применяется в некоторых типах телефонов, но сам личного я там никогда его не видел.
EEPROM (Electrically Erasable Programmable Read-Only Memory - Электрически Стираемая Программируемая Память Только на Чтение): многократно перепрограммируемое ПЗУ, очищаемое электрическим разрядом. Обычно требует программатора, но теоретически может обходиться и без него. Широко применяется в сотовых телефонах.
FLASH-EEPROM: разновидность электрически стираемого многократно перепрограммируемого ПЗУ, не требующее программатора. Применяется во многих сотовых телефонах.
Производитель чипа | Чип памяти | |||
С открытым коллектором | Трехстабильный | С открытым коллектором | Трехстабильный | |
AMD | AM27LS18 | AM27LS19 | AM27S18 | AM27S19 |
Fujitsu | MB7056 | MB7051 | ||
Harris | HM7602 | HM7603 | ||
MMI | 53/6330 | 53/6331 | ||
53/63S080 | 53/63S081 | |||
NSC | DM54S188 | DM54S288 | DM74S188 | |
DM82S23 | DM82S123 | |||
Signetics | 82S23 | 82S123 | ||
Texas Instruments | 74S188 | 74S288 | TBP18SA030 | TBP18S030 |
TBP38SA030 | TBP38S030 |
Рисунок 23. Перепрограммирование NAM'а с клавиатуры.
Последовательность нажатий клавиш для перепрограммирования NAM'а не стандартизована и варьируется от одного телефона к другому. В частности, Samsung i300 может быть перепрограммирован так:
Инструкцию по перепрограммированию остальных телефонов можно найти на http://www.cdma-ware.com/codes.html, если же нашего телефона там нет, набираем в google что-то вроде "NAM+programming+модель телефона" и прочесываем интернет в поисках необходимой информации.
Acer (Motorola T191, T205): набирать "*#300#", а затем нажать зеленую клавишу с трубкой;
Alcatel: набрать "*#06#" на экране появится IMEI и версия прошивки;
Bosch: набрать "*#3262255*8378#" (по буквам *#DANCALL*TEST#);
Ericsson: набрать ">*<<*<*", где "<" и ">" - кнопки со стрелками влево/вправо;
LG: набрать "*#07#, 8060#*";
Mitsubishi: удерживая "*", набрать "5806";
Motorola: в тестовом режиме набрать код "19#";
Nokia: набрать "*#0000#";
Panasonic: набрать "*#9999#";
Samsung: набрать "*#9999#";
Sagem: находясь в основном меню, нажать звездочку, в появившемся меню - самый первый пункт;
Siemens: набирать "*#06#";
Sony: набрать "*#7353273#" (по буквам *#release#).