Как то вечером моя подруга (она же и нарисовала обложку для этой статьи) переслала мне скриншот уведомления из вконтакта с вопросом "Меня пытаются взломать?". Да, это было сообщение от лица администрации с просьбой подтвердить учетные данные и с ссылкой на фишинговую страницу. Дело было вечером, делать было нечего. А я придумал себе новое развлечение...

автор обложки: https://vk.com/club151912771
автор обложки: https://vk.com/club151912771

Мне пришла в голову идея немного осложнить жизнь злоумышленникам, засорив им ложными учетными данными базу (или куда там они их кладут). Первое, что я сделал - сгенерировал файлы с логинами и паролями, более или менее похожими на настоящие:

$ cat ./LOGINS.txt
+79089672515
89025062502
89044251958
89023782243
+79041365572
+79227628906
89772794819
... 

$ cat ./PASSWORDS.txt
20ddхfgk2d19kf
лал11Ёрyлфp
EMTk99хkd19kf
dgkgfАоmа5Ь
аhg9хhхk;
a600_hd12f0j
... 

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

Ок, мусор у нас есть. Но как этот мусор отправить на фишинговый сайт? Открыв код страницы я нашел форму отправки:

<form method="POST" action="" novalidate>
<dl class="fi_row">
<dd>
<input type="text" class="textfield" name="email" value="" placeholder="Телефон или email" />
</dd>
</dl>
<dl class="fi_row">
<dd>
<input type="password" class="textfield" name="pass" placeholder="Пароль" />
</dd>
</dl>

<div class="fi_row_new">
<input class="button wide_button" type="submit" name="submit" value="Войти" />
</div>
</form>
</div>
</div>

Ага, тут используется POST-запрос с такими параметрами, как email (последнее время вместо email используется номер телефона) и password. Ничего неожиданного, будем отправлять наши данные curl'ом. На коленках я набросал следующий скрипт:

while true
do
	# Берем исходные списки логинов и паролей, перемешиваем и кладем в другой файл
	# Это позволит передавать их каждый раз в новом порядке
	tail LOGINS.TXT | sort -R > logins.txt
	tail PASSWORDS.txt | sort -R > passwords.txt

	for password in $(cat passwords.txt) do
	for login in $(cat logins.txt) do
		curl -d "email=$login&pass=$password" -X POST http://mvkcomo...ir/index2.php
	done
	done

done

Однако после запуска скрипта я столкнулся с проблемой: curl сообщал о 403 ошибке. Но после обращений к гуглу и консультации с моим товарищем @Jho00, я выяснил: некоторые web-сервера смотрят на заголовки (client, referer), и если по заголовкам видят, что запрос пришел от скрипта, а не от пользователя - запрос отклоняется.

Тогда я добавил в заголовках firefox в качестве клиента, и адрес той же самой страницы в качестве реферера. Зачем то эта страничка создавала еще и куки, тогда я выдернул куки из своего браузера и также передал curl'ом. В итоге вызов curl'а получился таким:

curl \
	--cookie "sc_is_visitor_unique=rx9692532.1625826968.8A8EF5E926DD4F1158782565371F53D8.1.1.1.1.1.1.1.1.1&__test=0519c1a3df7c6a27eb6bcecadb3fa821"\
 -A "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0" -d "email=$login&pass=$password" -H 'Referer: http://mvkcomo.co6.ir/index2.php'\
 -X POST http://mvkcomo...ir/index2.php

После этого сообщение о 403 пропало. А через 2 часа непрерывной работы скрипта я обнаружил, что сайт перестал работать: при попытке открыть ссылку открывалась страница хостинга доменных имен. А попытки достучаться по ip-адресу были безуспешны.

Да, данное деяние ни как не поможет бороться со злоумышленниками, однако при совершении его я получил немного удовольствия.

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


  1. SanSYS
    20.07.2021 19:03
    +6

    Хах, не все рыцари носят плащи )

    Может благодаря вашим действиям им и пришлось свернуть кампанию на этом доменчике, авось кому-то и помогли даже (а мусорные данные от настоящих им будет просто отделить, по тем же IP/User-Agent)


    1. DVoropaev Автор
      20.07.2021 19:16
      +5

      Не думаю, что злоумышленники кладуд в базу с логинами/паролями useragent и ip


      1. unsignedchar
        20.07.2021 21:07
        +5

        Почему нет? Это не сложно. Я бы и время записывал, и referrer. Идея заливать фейковые данные родилась не вчера. Так что в эту схему нужно добавить tor proxy, и sleep на случайное время.


        1. vrnvorona
          27.07.2021 17:41

          Еще пароли брать из базы слитых чтобы было не очевидно.


  1. kerberos464
    20.07.2021 19:05
    +5

    Файлик с паролями можно ещё разбавить реальными паролями из топ-100 или топ-500 паролей.


  1. v1000
    20.07.2021 19:20
    +8

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


  1. hw_store
    20.07.2021 20:04
    +1

    диалапа на вас нету!!!


  1. amarao
    20.07.2021 21:20
    +8

    Выборка в SQL, отсекающая записи, присланные IP адресами, с которых было прислано больше одной строчки.

    Благие намерения, тривиально обходятся злоумышленниками. Вы потратили больше времени, чем они, они выиграли.


    1. barbos6
      20.07.2021 23:51
      +3

      Выборка в SQL, отсекающая записи, присланные IP адресами, с которых было прислано больше одной строчки.

      Да, все без исключения хацкеры - дураки, не знающие об изрядных сетях за NAT.

      Поэтому они сами себе всё сразу поотсекают на радость грамотным комментаторам... :)


      1. marataziat
        22.07.2021 10:35
        +1

        Конечно в теории могут попастся несколько человек на NAT, но по факту можно считать что 1 айпи = 1 человек. За NAT нужно расчитывать когда вы лимиты ставите например по запросам на айпи, чтобы когда несколько человек за 1 NAT сидят не получили бан за флуд запросами. Но для фишинга такое ненадо учитывать, тк каждый человек там случаен и NAT в расчет брать ненадо.


      1. amarao
        22.07.2021 11:47
        +1

        `where count > 100` - и мы имеем разумную фильтрацию.

        Если вы, глядя на табличку, можете оттуда фигню выфильтровать, то Вася, налабавший фишинговый сайт, тоже может это сделать.

        Т.е. воображать себя принцем на белом коне, повергающих злодеев-идиотов вы можете, но на практике ваш конь-на-палочке серьёзных дядь не впечатлит.

        Абуза хостеру тоже малоэффективна, но хотя бы сколько-то эффективна.


        1. Zalechi
          27.07.2021 17:08

          Я так понял сайт лёг, значит эффект таки был достигнут, или?..

          Update: прочитал ваше сообщение ниже о том, что сайт мог заблочить хостер по абузу поданному парраллельно акции автора статьи. Так или иначе, прикольно, что люди пытаются. ;) Не смотря на то, что это старый вид забавы, поколения растут, пуст забавляются, а нам материал на почитать пишут. Не все же в теме и то сё:)


          1. YouROK
            30.07.2021 10:53

            Проверяется это легко, через тор или впн зайти на сайт


    1. read_maniak
      21.07.2021 09:11
      +1

      можно использовать прокси


  1. mSnus
    20.07.2021 22:20
    +4

    А через 2 часа непрерывной работы скрипта я обнаружил, что сайт перестал работать: при попытке открыть ссылку открывалась страница хостинга доменных имен. А попытки достучаться по ip-адресу были безуспешны.

    Вряд ли вы их завалили, это даже не DDOS. Скорее либо вас забанили по ip, либо хостер их заблокировал за абьюз по чьей-то жалобе.


    1. DVoropaev Автор
      20.07.2021 22:26
      +4

      Вряд ли вы их завалили, это даже не DDOS.
      Ну, я и не говорил. что это был DOS/DDOS
      Скорее либо вас забанили по ip
      Скрипт я запускал на VDS, если бы они его заблочили по IP, то я бы с рабочего хоста видел, что сайт доступен


      1. amarao
        22.07.2021 11:49
        +1

        Пока вы слали скамерам мусор, кто-то слал хостеру абузу, и был много более успешным чем вы.

        Как это делать?

        dig -t A fishing_site

        Для каждого IP делаете whois, там будет адрес для абуз. Пишите абузу туда.


  1. mickvav
    21.07.2021 02:35
    +3

    Кавычку в поле воткнуть не пробовали?


    1. JerleShannara
      21.07.2021 15:02

      Где-то уже как с год Бобби «Брось Таблицу» стал редко подходить всяким рыболовам.


  1. Pest85
    21.07.2021 08:26
    +5

    Гораздо быстрее и надежнее связаться с хостинг провайдером и описать ситуацию. Они на фишинг очень оперативно реагируют - 20-30 минут и все заблочено.


  1. Alexus819
    21.07.2021 09:49
    +1

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

    нет ничего сложного в валидации логинов паролей выполняя авторизацию скриптом


    1. DVoropaev Автор
      21.07.2021 10:02

      тоже верно


    1. unsignedchar
      21.07.2021 10:26

      нет ничего сложного в валидации логинов паролей выполняя авторизацию скриптом


      Через пару неуспешных логинов в google, например, капчу придется решать, а так ничего сложного, да.


      1. Alexus819
        21.07.2021 10:38

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


        1. unsignedchar
          21.07.2021 10:50

          Простой способ — просто сохранить данные, нарисовать соопчение «ой, неправильный парол» и отредиректить на правильную форму ввода пароля. Добавление прокси только усложняет схему. Я бы так не делал, например ;)


  1. iiwabor
    21.07.2021 10:32
    +1

    Интересно, что официальные власти фактически разрешают фишинг и тому подобные мошенничества- по телефону, например - преступников особо не ищут, по зомбоящику про это людей не информируют и тп.

    Хотя найти и обезвредить мошенников легко, в современном мире все отслеживаеттся - звонки, письма, движение денег, и все механизмы явно есть - случай с ветераном, который сидел рядом с царем и которого обманули мошенники тому пример - нашли их моментально.

    Вероятно, власть не считает мошенников серьезной угрозой - они же не ФБК...


    1. firedragon
      21.07.2021 12:17
      +5

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

      В каждом магазине висит памятка о телефонных мошенниках, в том числе и фишинг упоминается.

      На 1 канале регулярно сообщения как защится от мошенников.

      Но вам важно сказать что власти вас в чем то притесняют


    1. event1
      21.07.2021 16:17
      +1

      Тут двоякая проблема. С одной стороны, вы правы, милиция могла бы и проявить активность. С другой стороны, если бы граждане на каждый случай мошенничества или попытки оного писали бы заявление, то органы были бы вынуждены реагировать. Но гражданам тоже лень.

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


      1. vvzvlad
        22.07.2021 13:34

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


        1. event1
          23.07.2021 01:16

          про неразумных это вы сами присочинили. Я — про обычных. В своё оправдание могу сказать, что мошенники гарантированно находятся за границей и милиция их поймать не сможет. А в Интерпол по таким мелочам наверное не обращаются


  1. pnovikov
    21.07.2021 11:02

    Делай добро и беги


  1. ZennoPost
    21.07.2021 21:58

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

    Но чем дальше в лес, тем больше вот такой банальщины на подобии "как я провел выходные". Какой научный вес такой статьи? 0. Этот пост имеет право быть опубликованным на личной странице какой нибудь бабушки в одноклассниках


    1. DVoropaev Автор
      22.07.2021 07:21

      Солидарен с вашим мнением


  1. KizhiFox
    21.07.2021 21:59
    +1

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

    Там немного больше полей просили отправить, но методом научного тыка выяснилось, что, всё, кроме "ref" (было частью самой ссылки) на результат запроса "окей, всё приняли" не влияет. Скорее всего отсеяли, не зря же уникальное поле добавили, но как минимум немножко удовольствия от самого процесса я получил, да и в асинхронных запросах попробовал разобраться (критика приветствуется).

    Код
    import requests
    import random
    import aiohttp
    import asyncio
    
    captcha = 'QWERTYUIOPASDFGHJKLZXCVBNM1234567890'
    count = 1
    
    async def bullshit():
        async with aiohttp.ClientSession() as session:
            global count
            newpass = ''.join([random.choice(captcha) for _ in range(random.randint(5, 20))])
            body = {
                'captcha_sid': str(random.randint(100000000000, 999999999999)),
                'captcha_key': ''.join([random.choice(captcha) for _ in range(random.randint(5, 10))]),
                'newpass1': newpass,
                'newpass2': newpass,
                'twofactor': '',
                'login': '+7911' + ''.join([str(random.randint(1, 9)) for _ in range(7)]),
                'oldpass': ''.join([random.choice(captcha) for _ in range(random.randint(5, 20))]),
                'ref': '785878500',
                'type': 'changepass'
            }
            async with session.post('https://vkrecovers.com/oauth2', data=body) as res:
                print(count, res)
                count += 1
    
    loop = asyncio.get_event_loop()
    async def tasks_gen():
        while True:
            yield asyncio.ensure_future(bullshit())
    async def main():
        async for _ in tasks_gen():
            await bullshit()
    loop.run_until_complete(main())


  1. DarkViatrix
    21.07.2021 21:59

    Научите меня "недоучку" также... :)


  1. rubyrabbit
    23.07.2021 10:38
    +1

    Напрашивается создание Цифрового Ордена Белых Плащей для организованного вывода из строя вредоносных сайтов )