Сетевой Пакетный БотУровень угрозы: ВысокийProtocol Audit

L2Net (Packet Sniffer & Automation Suite)

Исторический скриптовый пакетный бот, работающий через перехват трафика сетевой карты (WinPcap) или OOG (Out of Game) клиент.

1. Вектор Угрозы и Принцип Работы

L2Net применяет перехват сетевых пакетов через драйвер WinPcap/Npcap (уровень NDIS) или прямое подключение сокета OOG (Out of Game). Позволяет скриптовать перемещение, таргет, прокачку и спойл без непосредственного взаимодействия пользователя с UI клиента.

Архитектурные Особенности:

L2Net расшифровывает клиент-серверный обмен с помощью подмены Blowfish ключа или инъекции в процесс L2.exe. Обладает встроенным виртуальным движком исполнения скриптов на C# / L2Net Scripting language.

2. Анализ Сетевого Протокола

В режиме перехвата L2Net использует подмену публичного RSA-ключа при инициализации сессии на стадии Auth/LoginServer, что позволяет расшифровать Blowfish ключ сессии игрового сервера. После этого трафик GameServer транслируется в открытом виде через локальный proxy-loopback (127.0.0.1:7777).

Идентифицированные Пакетные Сигнатуры:

ОпкодИмя ПакетаОписание ПоведенияHEX-Дамп Сигнатуры
0x01MoveBackwardToLocationПеремещение персонажа в координаты XYZ с целевыми координатами источника.01 34 12 00 00 56 34 00 00 78 56 00 00 12 00 00 00
0x1FAction / RequestTargetВыбор цели (Monster/NPC/Player) и подтверждение действия атаки/разговора.1F E4 21 00 00 00 00 00 00 00 00 00 00 00
0x48ValidatePositionКоррекция клиентской позиции по тикам таймера. У L2Net дельта времени между пакетами строго фиксирована до миллисекунды.48 34 12 00 00 56 34 00 00 78 56 00 00 00 00

3. Исследование Хуков Памяти (Memory Hooks)

В OOG-режиме память игрового клиента не затрагивается. В IG-режиме (In-Game) L2Net внедряет вспомогательную библиотеку l2net.dll, перехватывающую Winsock-функции send(), recv(), WSASend() и WSARecv() в модуле WS2_32.dll для подмены опкодов на лету.

Методы Детектирования
  • Анализ дельты времени отправки пакетов ValidatePosition и MoveBackwardToLocation
  • Проверка эхо-запросов пинга и флагов фокуса оконного режима User32
  • Выявление отсутствия пакетов перемещения мыши и нажатий клавиш клавиатуры
Контрмеры и Рекомендации
  • Динамическая рандомизация опкодов пакетов при рукопожатии
  • Серверные проверки скорости передвижения и трассировки лучей через геодату
  • Серверные капчи (Interactive verification dialogs) при цикличных фарм-шаблонах

4. Серверные Стратегии Митигации (Реализация)

Пример реализации серверного фильтра валидации для интеграции в ядро игрового сервера (L2J / Java Core):

Java (GameServer Core)
// GameServer Anti-Packet Spoofing Validator
public final class PacketTimingGuard {
    private static final long MIN_VALIDATE_DELTA_MS = 250L;
    private static final double MAX_TOLERATED_SPEED_RATIO = 1.15;

    public static boolean verifyMovementPacket(L2Player player, int targetX, int targetY, int targetZ) {
        long now = System.currentTimeMillis();
        long lastMoveTime = player.getLastMovePacketTimestamp();
        
        // Анализ неестественной регулярности пакетов L2Net скрипта
        long delta = now - lastMoveTime;
        if (delta < MIN_VALIDATE_DELTA_MS && !player.isTeleporting()) {
            player.incrementSuspiciousPacketCount();
            return false; // Отклонение пакета
        }
        
        // Валидация траектории через геодату
        if (!GeoEngine.canMoveToCoord(player.getX(), player.getY(), player.getZ(), targetX, targetY, targetZ)) {
            player.sendPacket(new ValidatePosition(player));
            return false;
        }
        
        player.setLastMovePacketTimestamp(now);
        return true;
    }
}
← Назад к каталогу защит и ботов