Re: Кто что слышал о Pms... Последние ее дни и т.д.
внесу ясность, Лера ни в чем не виновата)
недавно по инетику начала расползаться спец.прога, подменяющая SteamId у игрока. на
http://c-s.net.ua и других тематических ресурсах это вовсю обсуждается.
как это выглядит:
когда подключается игрок, DPROTO генерирует на основе префикса и основной части SteamId игроку.
так авторизуется клиент у которого Steam:
L 01/20/2014 - 20:17:20: [DPROTO]: Client 6 - Set AuthIdType 1
[Native]; pClient = 0xf389e8c0
L 01/20/2014 - 20:17:20: "techmn<344><STEAM_0:1:78875958><>" connected, address "79.133.117.234:27005"
а вот так с эмуляторов на пиратках:
L 01/20/2014 - 20:17:25: [DPROTO]: Client 10 - Set AuthIdType 1
[dp_RevEmu]; pClient = 0xf38b2490
L 01/20/2014 - 20:17:25: "1st.tm. | Me_1st_pro<345><STEAM_0:0:781180322><>" connected, address "194.28.74.123:27005"
здесь циферка сразу после слова STEAM_ - это префикс, который можно назначать на сервера для разных эмуляторов.
суть уязвимости: по умолчанию в конфиге дпрото
все префиксы = 0, т.е. с точки зрения DPROTO настоящий стим и эмулятор для сервера вообще неотличимы!
Злоумышленник может сгенерировать только последние цифры, а т.к. для всех типов авторизации по умолчанию стоит префикс 0, то можно подобрать и SteamId админа!
на серверах БК (паблик и GG) я для всех эмуляторов выставил префикс 2, в этом случае никакой подбор невозможен!
я посмотрел логи паблика за сегодня, там ТАКОЙ ЖЕ ID, как у админа PMS, но только подобранный с эмулятора и поэтому начинающийся с двоечки:
L 01/20/2014 - 20:40:50: [DPROTO]: Client 6 - Set AuthIdType 1 [dp_RevEmu]; pClient = 0xf39708c0
L 01/20/2014 - 20:40:50: "MarcusTullius<88><STEAM_
2:0:37924088><>" connected, address "46.149.181.143:52150"
а настоящий ситамайди админа STEAM_
0:0:37924088, но благодаря настройке дпрото этот школьник обломался и лососнул тунца на БК (хоть там и пару человек всего было из игроков, он ничего не смог сделать, сервер не распознал в нем админа)
убрал лишние строки из лога, выглядело примерно так:
Код:
зашел на сервер с помененным идентификатором, но DPROTO распознал подвох и вручил ему признак "эмулятора":
L 01/20/2014 - 20:40:58: [DPROTO]: Client 6 - Set AuthIdType 1 [dp_RevEmu]; pClient = 0xf39708c0
L 01/20/2014 - 20:40:58: "MarcusTullius<89><STEAM_2:0:37924088><>" connected, address "46.149.181.143:52150"
L 01/20/2014 - 20:40:58: [VTC] Player 7 speex
вошел на сервер:
L 01/20/2014 - 20:41:01: "MarcusTullius<89><STEAM_2:0:37924088><>" entered the game
зашел за спектров:
L 01/20/2014 - 20:41:04: "MarcusTullius<89><STEAM_2:0:37924088><>" joined team "SPECTATOR"
гаденыш проверяет админку:
L 01/20/2014 - 20:41:19: "MarcusTullius<89><STEAM_2:0:37924088><SPECTATOR>" say "/admin"
свалил, т.к. ничего не работает:
L 01/20/2014 - 20:41:24: "MarcusTullius<89><STEAM_2:0:37924088><SPECTATOR>" triggered "time" (time "0:22")
L 01/20/2014 - 20:41:24: "MarcusTullius<89><STEAM_2:0:37924088><SPECTATOR>" triggered "latency" (ping "39")
L 01/20/2014 - 20:41:24: "MarcusTullius<89><STEAM_2:0:37924088><SPECTATOR>" disconnected
PS: Разумеется, префиксы спасут только если админка через настоящий SteamId. Привязка по паролю тоже спасает