На днях кто-то решил пошатать мои сервера. Из анализа трафика следовало что прилетает сравнительно небольшое число (6000 pps) UDP пакетов, содержащих XML данные. Атака Web Services Dynamic Discovery, о которой писали в прошлом году. Это когда атакующий отправляет поддельные запросы на разные узлы, а ответы от этих узлов намного больших размеров (амплификация) бомбят атакуемую машину, раньше делались через DNS сервкера и даже через HLDS. Такие атаки - популярное явление, а вот WS-Discovery в живой природе вижу впервые.
Проблема возникла следующая: дата-центр имеет какие-то хитроумные алгоритмы защиты от DDoS, которые не столько защищают атакуемую машину сколько защищают соседей. В результате даже от каких-то 50 Mbps при таком PPS (пакеты в секунду) IP адрес отправляется в блекхол (то есть сервер становится недоступен).
Со стороны игрового сервера это выглядит следующим образом. Во время атаки у игроков на сервере небольшие (а может и большие) лаги, через минуту-две трафик блокируется дата-центром, игрокам показывает connection problem, а на сервере в логе - сообщение что игрок который не двигался был перемещен за spectator или kickнут.
Все бы ничего, при спуфинге пакеты идут от каких-то устройств, даже если удастся перехватить контроль над входящим трафиком к одному из этих устройств, запросы будут регистрироваться якобы от атакуемого адреса потому установить источник атаки довольно сложно. Но в нашем случае атакующий страдает прогрессирующим ФГМ, потому захожит на игровой сервер, затем подрубает атаку, убеждается что сервер лег и выходит (точнее, вылетает из-за connection problem). Более того, заходит он с одного и того же Steam аккаунта, номер которого в логах говорит "я идиот, убейте меня кто-нибудь".
Вот как всё было. 2 буквы перед названием лога - кодовое имя сервера, в названии лога дата. Все логи под спойлерами чтобы не засорять эфир. Ниже ВСЕ случаи захода с данным SteamID на мои сервера:
05.05.202005.03.2020 17:30:36: Игра, потом первая атака. Все вылетели.
Код
03/05/2020 - 17:30:36: "Яблочко<633><STEAM_0:1:243679100><>" connected, address "176.103.236.134:27005"
03/05/2020 - 17:30:36: "Яблочко<633><STEAM_0:1:243679100><>" STEAM USERID validated
03/05/2020 - 17:30:39: "Яблочко<634><STEAM_0:1:243679100><>" connected, address "176.103.236.134:27005"
03/05/2020 - 17:30:39: "Яблочко<634><STEAM_0:1:243679100><>" STEAM USERID validated
03/05/2020 - 17:30:42: "Яблочко<634><STEAM_0:1:243679100><>" entered the game
03/05/2020 - 17:30:59: "Яблочко<634><STEAM_0:1:243679100><>" joined team "TERRORIST"
03/05/2020 - 17:31:21: "Яблочко<634><STEAM_0:1:243679100><TERRORIST>" say "эх яблочко" (dead)
03/05/2020 - 17:31:28: "Яблочко<634><STEAM_0:1:243679100><TERRORIST>" say "да на тарелочке" (dead)
03/05/2020 - 17:31:43: "Яблочко<634><STEAM_0:1:243679100><TERRORIST>" say "Яблочко" (dead)
03/05/2020 - 17:31:48: "Яблочко<634><STEAM_0:1:243679100><TERRORIST>" say "Да на тарелочке" (dead)
03/05/2020 - 17:31:57: "Яблочко<634><STEAM_0:1:243679100><TERRORIST>" triggered "Spawned_With_The_Bomb"
03/05/2020 - 17:32:12: "***<635><STEAM_ID_LAN><CT>" killed "Яблочко<634><STEAM_0:1:243679100><TERRORIST>" with "famas"
03/05/2020 - 17:32:12: "Яблочко<634><STEAM_0:1:243679100><TERRORIST>" triggered "Dropped_The_Bomb"
03/05/2020 - 17:32:15: "Яблочко<634><STEAM_0:1:243679100><TERRORIST>" say "(" (dead)
03/05/2020 - 17:32:44: "Яблочко<634><STEAM_0:1:243679100><TERRORIST>" say "Эх яблочко" (dead)
03/05/2020 - 17:32:47: "Яблочко<634><STEAM_0:1:243679100><TERRORIST>" say "да на тарелочке" (dead)
03/05/2020 - 17:33:48: "***@<621><STEAM_0:0:***><CT>" killed "Яблочко<634><STEAM_0:1:243679100><TERRORIST>" with "grenade"
03/05/2020 - 17:34:58: "Яблочко<634><STEAM_0:1:243679100><TERRORIST>" say "?voteban" (dead)
03/05/2020 - 17:35:35: "***@<621><STEAM_0:0:***><CT>" killed "Яблочко<634><STEAM_0:1:243679100><TERRORIST>" with "m4a1"
03/05/2020 - 17:37:56: "Яблочко<634><STEAM_0:1:243679100><TERRORIST>" disconnected
05.03.2020 17:44:11: зашел за ТТ и достаточно быстро вышел
Код
03/05/2020 - 17:44:11: "Яблочко<277><STEAM_0:1:243679100><>" connected, address "176.103.236.134:27005"
03/05/2020 - 17:44:12: "Яблочко<277><STEAM_0:1:243679100><>" STEAM USERID validated
03/05/2020 - 17:44:13: "Яблочко<278><STEAM_0:1:243679100><>" connected, address "176.103.236.134:27005"
03/05/2020 - 17:44:14: "Яблочко<278><STEAM_0:1:243679100><>" STEAM USERID validated
03/05/2020 - 17:44:16: "Яблочко<278><STEAM_0:1:243679100><>" entered the game
03/05/2020 - 17:44:17: "Яблочко<278><STEAM_0:1:243679100><>" joined team "TERRORIST"
03/05/2020 - 17:44:47: "Яблочко<278><STEAM_0:1:243679100><TERRORIST>" disconnected
05.03.2020 17:44:55: через минуту после его входа началась атака. Машина ушла в оффлайн на час.
Код
03/05/2020 - 17:44:55: "Яблочко<278><STEAM_0:1:243679100><>" entered the game
03/05/2020 - 17:44:56: "Яблочко<278><STEAM_0:1:243679100><>" joined team "TERRORIST"
03/05/2020 - 17:44:56: "Яблочко<278><STEAM_0:1:243679100><TERRORIST>" triggered "Spawned_With_The_Bomb"
03/05/2020 - 17:45:24: "Яблочко<278><STEAM_0:1:243679100><TERRORIST>" triggered "Got_The_Bomb"
03/05/2020 - 17:45:46: "Яблочко<278><STEAM_0:1:243679100><TERRORIST>" killed "***@<271><STEAM_0:0:***><CT>" with "glock18"
03/05/2020 - 17:45:51: "Яблочко<278><STEAM_0:1:243679100><TERRORIST>" triggered "Spawned_With_The_Bomb"
03/05/2020 - 17:46:29: "Яблочко<278><STEAM_0:1:243679100><TERRORIST>" triggered "Dropped_The_Bomb"
03/05/2020 - 17:47:19: "Яблочко<278><STEAM_0:1:243679100><TERRORIST>" committed suicide with "world"
03/05/2020 - 17:47:19: "Яблочко<278><STEAM_0:1:243679100><TERRORIST>" joined team "SPECTATOR"
03/05/2020 - 17:47:34: "Яблочко<278><STEAM_0:1:243679100><SPECTATOR>" disconnected
05.03.2020 17:47:08 заходил на еще один из моих серверов. Там логи не ведутся, только коннекты. IP и SteamID те же. Сразу же на сервер полетел трафик, что видно на графике нагрузки на сеть. Серверу было по барабану, там датацентр по таким пустякам не отключает. Атакующий на этот сервер больше не возвращался.
05.03.2020 19:05:54: зашел и началась атака
Код
03/05/2020 - 19:05:49: "one tak - ya 23<24><STEAM_0:1:243679100><>" connected, address "176.103.236.134:27005"
03/05/2020 - 19:05:54: "one tak - ya 23<24><STEAM_0:1:243679100><>" entered the game
03/05/2020 - 19:06:05: "one tak - ya 23<24><STEAM_0:1:243679100><>" joined team "TERRORIST"
03/05/2020 - 19:07:40: "one tak - ya 23<24><STEAM_0:1:243679100><TERRORIST>" triggered "Spawned_With_The_Bomb"
03/05/2020 - 19:10:03: "one tak - ya 23<24><STEAM_0:1:243679100><TERRORIST>" committed suicide with "world"
03/05/2020 - 19:10:03: "one tak - ya 23<24><STEAM_0:1:243679100><TERRORIST>" joined team "SPECTATOR"
03/05/2020 - 19:10:14: "one tak - ya 23<24><STEAM_0:1:243679100><SPECTATOR>" disconnected
05.03.2020 19:08:31: повисел в спектрах и вышел.
Код
03/05/2020 - 19:08:31: "one tak - ya 23<720><STEAM_0:1:243679100><>" connected, address "176.103.236.134:27005"
03/05/2020 - 19:08:32: "one tak - ya 23<720><STEAM_0:1:243679100><>" STEAM USERID validated
03/05/2020 - 19:08:37: "one tak - ya 23<721><STEAM_0:1:243679100><>" connected, address "176.103.236.134:27005"
03/05/2020 - 19:08:37: "one tak - ya 23<721><STEAM_0:1:243679100><>" STEAM USERID validated
03/05/2020 - 19:08:41: "one tak - ya 23<721><STEAM_0:1:243679100><>" entered the game
03/05/2020 - 19:08:50: "one tak - ya 23<721><STEAM_0:1:243679100><>" joined team "SPECTATOR"
03/05/2020 - 19:12:20: "one tak - ya 23<721><STEAM_0:1:243679100><SPECTATOR>" say "re"
03/05/2020 - 19:12:21: "one tak - ya 23<721><STEAM_0:1:243679100><SPECTATOR>" say "q"
03/05/2020 - 19:15:11: "one tak - ya 23<721><STEAM_0:1:243679100><SPECTATOR>" disconnected
05.03.2020 19:18:53: через минуту после его входа начинается атака, игроки жалуются на лаги, после этого все вылетают. Файл лога оборван из-за перезагрузки.
Код
03/05/2020 - 19:18:53: "one tak - ya 23<732><STEAM_0:1:243679100><>" connected, address "176.103.236.134:27005"
03/05/2020 - 19:18:54: "one tak - ya 23<732><STEAM_0:1:243679100><>" STEAM USERID validated
03/05/2020 - 19:18:56: "one tak - ya 23<732><STEAM_0:1:243679100><>" entered the game
03/05/2020 - 19:18:57: "one tak - ya 23<732><STEAM_0:1:243679100><>" joined team "TERRORIST"
03/05/2020 - 19:20:04: "***<714><STEAM_1:0:***><TERRORIST>" say "ШО ЗА ЛАГИ"
03/05/2020 - 19:20:11: "***<723><STEAM_1:0:***><CT>" say "ряльно , чо сервером"
03/05/2020 - 19:20:28: "***<727><STEAM_1:0:***><TERRORIST>" say "ЧО ЗА ДИЧ"
03/05/2020 - 19:22:09: "one tak - ya 23<732><STEAM_0:1:243679100><TERRORIST>" committed suicide with "world"
03/05/2020 - 19:22:09: "one tak - ya 23<732><STEAM_0:1:243679100><TERRORIST>" joined team "SPECTATOR"
05.03.2020 23:19:20: история все та же, атака
Код
03/05/2020 - 23:19:20: "one tak - ya 23<138><STEAM_0:1:243679100><>" connected, address "176.103.236.134:27005"
03/05/2020 - 23:19:20: "one tak - ya 23<138><STEAM_0:1:243679100><>" STEAM USERID validated
03/05/2020 - 23:19:27: "one tak - ya 23<139><STEAM_0:1:243679100><>" connected, address "176.103.236.134:27005"
03/05/2020 - 23:19:28: "one tak - ya 23<139><STEAM_0:1:243679100><>" STEAM USERID validated
03/05/2020 - 23:19:30: "one tak - ya 23<139><STEAM_0:1:243679100><>" entered the game
03/05/2020 - 23:19:32: "one tak - ya 23<139><STEAM_0:1:243679100><>" joined team "TERRORIST"
03/05/2020 - 23:19:56: "one tak - ya 23<139><STEAM_0:1:243679100><TERRORIST>" joined team "CT" (auto)
03/05/2020 - 23:23:11: "one tak - ya 23<139><STEAM_0:1:243679100><CT>" disconnected
05.03.2020 23:21:57: снова атака
Код
03/05/2020 - 23:21:57: "one tak - ya 23<112><STEAM_0:1:243679100><>" connected, address "176.103.236.134:27005"
03/05/2020 - 23:21:57: "one tak - ya 23<112><STEAM_0:1:243679100><>" STEAM USERID validated
03/05/2020 - 23:22:00: "one tak - ya 23<112><STEAM_0:1:243679100><>" entered the game
03/05/2020 - 23:22:01: "one tak - ya 23<112><STEAM_0:1:243679100><>" joined team "TERRORIST"
03/05/2020 - 23:22:26: "***<103><STEAM_1:0:***><CT>" killed "one tak - ya 23<112><STEAM_0:1:243679100><TERRORIST>" with "m4a1"
03/05/2020 - 23:23:05: "one tak - ya 23<112><STEAM_0:1:243679100><TERRORIST>" triggered "Spawned_With_The_Bomb"
03/05/2020 - 23:23:43: "***<103><STEAM_1:0:***><CT>" killed "one tak - ya 23<112><STEAM_0:1:243679100><TERRORIST>" with "m4a1"
03/05/2020 - 23:24:03: "one tak - ya 23<112><STEAM_0:1:243679100><TERRORIST>" killed "***<103><STEAM_1:0:***><CT>" with "ak47"
03/05/2020 - 23:24:23: "one tak - ya 23<112><STEAM_0:1:243679100><TERRORIST>" triggered "Spawned_With_The_Bomb"
03/05/2020 - 23:24:48: "one tak - ya 23<112><STEAM_0:1:243679100><TERRORIST>" triggered "Dropped_The_Bomb"
03/05/2020 - 23:25:38: "one tak - ya 23<112><STEAM_0:1:243679100><TERRORIST>" committed suicide with "world"
03/05/2020 - 23:25:38: "one tak - ya 23<112><STEAM_0:1:243679100><TERRORIST>" joined team "SPECTATOR"
03/05/2020 - 23:25:55: "one tak - ya 23<112><STEAM_0:1:243679100><SPECTATOR>" disconnected
06.05.202006.03.2020 10:43:33: вход, атака, все как вчера
Код
03/06/2020 - 10:43:33: "one tak - ya 23<261><STEAM_0:1:243679100><>" connected, address "185.160.61.211:27005"
03/06/2020 - 10:43:33: "one tak - ya 23<261><STEAM_0:1:243679100><>" STEAM USERID validated
03/06/2020 - 10:43:57: "one tak - ya 23<261><STEAM_0:1:243679100><>" entered the game
03/06/2020 - 10:44:03: "one tak - ya 23<261><STEAM_0:1:243679100><>" joined team "SPECTATOR"
03/06/2020 - 10:46:42: "one tak - ya 23<261><STEAM_0:1:243679100><SPECTATOR>" disconnected
03/06/2020 - 10:46:42: Kick: "one tak - ya 23<261><STEAM_0:1:243679100><>" was kicked by "Console" (message "HIGH PING")
06.03.2020 10:47:11: играли, потом ддос, снова сеть отключена
Код
03/06/2020 - 10:47:11: "one tak - ya 23<493><STEAM_0:1:243679100><>" connected, address "185.160.61.211:27005"
03/06/2020 - 10:47:12: "one tak - ya 23<493><STEAM_0:1:243679100><>" STEAM USERID validated
03/06/2020 - 10:47:15: "one tak - ya 23<493><STEAM_0:1:243679100><>" entered the game
03/06/2020 - 10:47:16: "one tak - ya 23<493><STEAM_0:1:243679100><>" joined team "SPECTATOR"
03/06/2020 - 10:47:23: "one tak - ya 23<493><STEAM_0:1:243679100><SPECTATOR>" say "ЭХ ЯБЛОЧКО"
03/06/2020 - 10:47:26: "one tak - ya 23<493><STEAM_0:1:243679100><SPECTATOR>" joined team "TERRORIST"
03/06/2020 - 10:47:26: "one tak - ya 23<493><STEAM_0:1:243679100><SPECTATOR>" say "ДА НА ТАРЕЛОЧКЕ"
03/06/2020 - 10:49:30: "one tak - ya 23<493><STEAM_0:1:243679100><TERRORIST>" disconnected
03/06/2020 - 10:49:30: Kick: "one tak - ya 23<493><STEAM_0:1:243679100><>" was kicked by "Console" (message "HIGH PING")
06.03.2020 21:13:40: все как всегда, атака
Код
03/06/2020 - 21:13:40: "one tak - ya mudak<636><STEAM_0:1:243679100><>" connected, address "178.217.208.8:27005"
03/06/2020 - 21:13:40: "one tak - ya mudak<636><STEAM_0:1:243679100><>" STEAM USERID validated
03/06/2020 - 21:13:44: "one tak - ya mudak<637><STEAM_0:1:243679100><>" connected, address "178.217.208.8:27005"
03/06/2020 - 21:13:45: "one tak - ya mudak<637><STEAM_0:1:243679100><>" STEAM USERID validated
03/06/2020 - 21:13:47: "one tak - ya mudak<637><STEAM_0:1:243679100><>" entered the game
03/06/2020 - 21:14:03: "one tak - ya mudak<637><STEAM_0:1:243679100><>" joined team "TERRORIST"
03/06/2020 - 21:14:31: "***<631><STEAM_1:0:***><CT>" killed "one tak - ya mudak<637><STEAM_0:1:243679100><TERRORIST>" with "m3"
03/06/2020 - 21:15:29: "***<603><STEAM_1:0:***><CT>" say "лагает у всех?"
03/06/2020 - 21:16:32: "one tak - ya mudak<637><STEAM_0:1:243679100><TERRORIST>" disconnected
03/06/2020 - 21:16:32: Kick: "one tak - ya mudak<637><STEAM_0:1:243679100><>" was kicked by "Console" (message "HIGH PING")
06.03.2020 21:16:21: еще одна атака
Код
03/06/2020 - 21:16:21: "one tak - ya mudak<378><STEAM_0:1:243679100><>" connected, address "178.217.208.8:27005"
03/06/2020 - 21:16:22: "one tak - ya mudak<378><STEAM_0:1:243679100><>" STEAM USERID validated
03/06/2020 - 21:16:26: "one tak - ya mudak<378><STEAM_0:1:243679100><>" entered the game
03/06/2020 - 21:16:37: "one tak - ya mudak<378><STEAM_0:1:243679100><>" joined team "TERRORIST"
03/06/2020 - 21:16:58: "one tak - ya mudak<378><STEAM_0:1:243679100><TERRORIST>" triggered "Spawned_With_The_Bomb"
03/06/2020 - 21:17:24: "one tak - ya mudak<378><STEAM_0:1:243679100><TERRORIST>" triggered "Dropped_The_Bomb"
03/06/2020 - 21:19:34: "one tak - ya mudak<378><STEAM_0:1:243679100><SPECTATOR>" disconnected
03/06/2020 - 21:19:34: "one tak - ya mudak<378><STEAM_0:1:243679100><TERRORIST>" committed suicide with "world"
03/06/2020 - 21:19:34: "one tak - ya mudak<378><STEAM_0:1:243679100><TERRORIST>" joined team "SPECTATOR"
То есть видно что практически каждый вход этого игрока с говорящим ником на сервер сопровождается последующей атакой именно этого сервера. Также моя база говорит о том, что раньше этого SteamID или IP на сервере замечено не было. Точнее, какой-то из IP адресов был замечен год-два назад но я считаю что у человека динамика и сложно представить отсутствие перезагрузки роутера хотя бы 1 раз за более чем 3 месяца. Я искал обиженных, возможно какого-то читера забанили мои админы и он решил доказать существование своего диагноза.
На сервер начиналась атака, ДЦ отключал сервер, атакующий видел что сервер лежит надежно, отключал атаку и шел класть следующий сервер. Интервал между атаками был несколько минут, это не один сплошной поток на все сервера одновременно.
Цитата
Пчёлы не трогали толстую девочку, которая гуляла на пасеке, потому что думали, что они её уже трогали.
07.03.2020 я заблокировал IP адреса дудосера на уровне железа, только на одном сервере (KH) и запасся попкорном. Что и следовало ожидать - он заходил только на один сервер, сразу началась атака. Второй сервер никто не трогал поскольку думал что он еще лежит. Вот как глупо надеяться на список серверов в игре, когда можно проверить жив ли сервер ping'ом через командную строку.
Код
03/07/2020 - 15:46:31: "one tak - ya 23<211><STEAM_0:1:243679100><>" connected, address "178.217.208.8:27005"
03/07/2020 - 15:46:32: "one tak - ya 23<211><STEAM_0:1:243679100><>" STEAM USERID validated
03/07/2020 - 15:46:35: "one tak - ya 23<211><STEAM_0:1:243679100><>" entered the game
03/07/2020 - 15:46:42: "one tak - ya 23<211><STEAM_0:1:243679100><>" joined team "SPECTATOR"
03/07/2020 - 15:47:11: "one tak - ya 23<211><STEAM_0:1:243679100><SPECTATOR>" say "Так может спать пойти лучше?"
03/07/2020 - 15:48:53: "one tak - ya 23<211><STEAM_0:1:243679100><SPECTATOR>" say "джокушка ловушкера"
Цитата
Совпадение? Не думаю!
Ну а дальше анализ данных. Вот его User-Agent:
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36 OPR/66.0.3515.115"
В январе он же использовал предыдущую версию хрома (автообновление включено):
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36 OPR/66.0.3515.36"
Информация по SteamID:
STEAM_0:1:243679100
steamcommunity.com/id/mamba137229/
IP:
176.103.236.134 - Харьков Онлайн
185.160.61.211 - VELTON.TELECOM, Харьков
178.217.208.8 - Орбита ТВ, г.Первомайский, Харьковская область, Украина
По этим данным простым поиском пробивается его ВК:
(постов о разбане много, человека банили на многих проектах за читы)
vk.com/felicandrew
На странице написано, что его зовут "Андрей Феличенко", она "заходила 9 минут назад", слабости - блестки и единороги.
Да и вообще скайп у этого человека terandodik (додик согласно Викисловарю - это молодой пассивный гомосексуалист). Ну, тут всё ясно и с причиной атак тоже всё ясно, мне статус модератора форума не позволяет выражаться нецензурно потому все в рамках литературного языка.
Страницы этого пациента:
vk.com/chromo_sale
vk.com/esport.project
Судя по датам заявок на разбаны - внешний IP адрес у него всё таки статика, похоже на сегмент домашней сети размером в несколько домов или один квартал частного сектора.
Ну а теперь выдержки из переписки с пациентом.
Если кратко, то
1. Признает что это его Steam аккаунт (даже не переспрашивал какой)
2. Признает что когда-то баловался XFakePlayers (таких у меня много было, в бан уходили) именно на моих серверах, я их даже не запоминаю.
3. В принципе, понимает в технических вопросах.
3. Прикидывается дурачком и заявляет что DDoS атаки это не его, он не знает, он не умеет, у него нет ботнета, а есть только 2 ноутбука и роутер (видимо, продал почку).
Осторожно, возможна нецензурная брань
Вообщем, тут далеко не вся информация а ровно то что нужно для полноты картины. Человек, выбравший себе соответствующий ник на игровом сервере и логин в Skype, пытается спрятать голову в песок. Первомайский, конечно, далековато от Харькова находится, это не Малая Даниловка, но когда мне скинут подробную информацию о пациенте - в адрес поедут проповедники, так сказать наставить человека на Путь Истинный.
На сегодня всё.
Полезные публикации - ссылки у меня в профиле. Ссылка на плагин против спама на сервере StopServerSpam там же.