Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #59, ОКТЯБРЬ 2005 г.

Узнаем по походке

Eto'o

Спецвыпуск: Хакер, номер #059, стр. 059-032-3


Находясь в невидимом режиме, устройство игнорирует широковещательные запросы, однако отвечает на пакеты, адресованные именно ему. Теоретически возможно просто угадать адрес соседнего устройства. А если угадать с первой попытки не получится, можно попробовать еще раз, а потом еще пару миллионов раз. Проблема лишь в том, что процесс угадывания затянется надолго: количество всех возможных адресов составляет 16^12, и, как легко понять, время полного сканирования будет просто неземным.

Второе обстоятельство заключается в административных вещах. Диапазоны для сетевых адресов выдаются производителям в специальной организации, которая осуществляет контроль над использованием адресных пространств. По стандарту, для идентификации производителя отводится целых три байта адреса. Кроме того, за крупными телекоммуникационными компаниями вроде Sony Ericsson, Nokia и Siemens зарезервировано несколько пространств емкостью по 16,7 миллионов адресов.

Атаки на BT всегда проходят в тесной связи с социальной инженерией и в прямом взаимодействием с хозяином ломаемого девайса. Минимальное расстояние между жертвой и тобой – десять метров. По этой причине подсмотреть производителя и даже конкретную модель устройства не составляет большого труда, более того, иногда приносит пользу: теперь мы можем значительно сократить количество вариантов для перебора. Если имеется информация о производителе, то имеет смысл перебирать только адреса из соответствующих диапазонов - порядок 16^6, что уже не так страшно. Однако даже сканирование половины этого диапазона на практике может занять значительное время - процесс должен быть ускорен.

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

Как на практике возможно реализовать такой перебор адресов?

Перебор на практике

Давным-давно у меня была идея написать простенький скрипт, скажем, на Perl, который использовал бы стандартные утилиты вроде l2ping или hccontrol, сканировал адресные диапазоны, отыскивая устройства-невидимки. Самый быстрый вариант, который у меня получился, использовал именно l2ping. Причем я заметил, что скорость заметно увеличивается, если работать в несколько потоков.

Минимальный отклик от работающего устройства составляет примерно 0,02 с. В целом отклики мало отличаются друг от друга. Я даже пытался установить какую-то зависимость между числом потоков и временем проверки одного адреса. Разумеется, эта зависимость вряд ли носит линейный характер, но ее можно более-менее вменяемо приблизить квадратичной функцией. Экспериментально я остановился на чем-то вроде 0.05+(n-1)*(0.005*n) (конкретные коэффициенты примерные, могут сильно отличаться для разных систем), при этом производительность определяется следующим образом: n/(0.05+(n-1)*(0.005*n). Если вычислить максимум этой функции, то окажется, что оптимально использовать три-четыре потока одновременно. При этом, увы, до приемлемой скорости работы еще далековато :(. Для решения этой задачи @stake разработала специальную утилиту с красочным названием RedFang. По неизвестной мне причине она больше не доступна на официальном сайте компании - на нашем диске ты можешь найти эксклюзивную копию :). К сожалению, собрать эту софтину под FreeBSD мне не удалось, поскольку она создана для Linux'ового BT-стэка BlueZ. Пользоваться софтиной чрезвычайно просто:

Назад на стр. 059-032-2  Содержание  Вперед на стр. 059-032-4