Интернет под угрозой военных ботов!
Master-lame-master
Xakep, номер #056, стр. 056-050-3
Хакер открыл скрипт и был удивлен странным кодом. Дело в том, что программинг бота осуществлялся весьма нерационально и запутанно. Посидев с часок, он составил для себя небольшой список команд, при помощи которых можно проводить флуд-атаки. Разумеется, прежде чем передавать боту какие-либо команды, необходима была авторизация от ботмастера. Для это надо добиться выполнения трех условий:
1) идент мастера должен быть cafeteam;
2) мастеру нужен оп на канале;
3) мастеру необходимо передать хеш, который каким-то образом дешифровал бот.
Хакер очень заинтересовался этими ботами и захотел порулить ими на полную катушку (читай - за3.14DoSить несколько крупных серверов). Ему предстояло обмануть ботов по всем трем пунктам. Первое условие и условием-то трудно назвать - обычная смена идента. Как выполнить второе условие, взломщик также теоретически знал. Судя по коду, при передаче боту в приват строку !op "пароль", бот должен опнуть чела на канале.
С третьим условием пришлось немного попотеть. Хакер нарыл в коде процедуру дешифровки хеша, но ему предстояло написать обратную процедуру, то есть функцию по составлению последовательности магических цифр. На кодинг этого самого модуля взломщик потратил 5 часов. Давай остановимся на алгоритме составления хеша (узнаем умные методы шифрования :)).
Зашифровал? Расшифровывай!
Смысл шифрования заключался в следующем: бот просматривает полную маску чела, пусть это будет "master!cafeteam@warbots.net". Затем происходит порождение цикла по каждому символу этого хоста. Этот символ преобразуется в эквивалентный ему ASCII-код, который делится на текущую длину строки, а потом округляется. Затем происходит дозапись цифрового хеша в суммарную строку. Через определенное число символов происходит вставка в хеш некоторой посторонней цифры. Этот процесс повторяется до истечения длины полной маски. В завершение процедуры банальное сравнение. Если хеш, созданный ботом, совпал с последовательностью, переданной извне, то человек становится ботмастером, и боты переходят в его подчинение.
После изнурительных тестов хакер написал обратную процедуру. Это давало возможность взять под контроль тысячи ботов. Кстати, последовательность посторонних цифр оказалось очень простой - 31337 ;). Теперь предстояло подконнектиться к серваку и протестить возможности ботов.
Убедившись, что, кроме него самого, на ircd не было живых обитателей, хакер запросил у бота статус оператора. Затем передал заветный хеш и получил в ответ около тысячи приветствий ;). Как было сказано выше, у взломщика уже был список команд, одну из которых ты знаешь - !udp :). Ее родимую он и протестил на одном серваке. Как и предполагалось, сервер стал недоступным в считанные секунды. Все бы хорошо, но хакер не знал, как остановить флуд ;). Из-за этого сервер поливался грязью аж целых 10 минут. Это время наш герой потратил на то, чтобы перерыть горы скриптов в поисках команды по отмену udp-флуда.