Произошло это в начале 2008 года, когда я еще работал в одном крупном украинском банке инженером в IT-департаменте. Только спала новогодняя праздничная суета, и нагрузка на подразделения техподдержки немного поубавилась, как один из подотчетных мне web-серверов сообщил о заканчивающемся на диске месте. Беглый анализ показал, что стремительно росли логи IIS сервера, на котором крутится один из публичных платежных комплексов банка. Мои опасения оправдались – на сервер началась DDOS атака.
Формат атаки был следующим: со скоростью 150-200 запросов в секунду, методом GET, шло обращение к одному и тому же URL с большого количества IP адресов. Т.е. работал небольшой международный ботнет. Сам сервер и фаервол банка с атакой вполне справлялись, поэтому у меня было достаточно времени, чтобы изучить атаку и выработать план мероприятий по ее устранению.
Первым делом я проанализировал географию атакующих IP-адресов. Интенсивность была равномерно размазана по странам, и заблокировать какие-либо регионы было невозможно – банковским web-сервисом пользовались клиенты со всего мира, и блокировка какого-либо сегмента, означала бы для банка финансовые потери. Далее, предполагая возможный рост интенсивности атаки, я оптимизировал размер атакуемой страницы к минимуму. Нагрузка на сервер и фаервол упала, что не заставило себя ждать. Хакер, управлявший ботнетом, сменил адрес атакуемого URL, и атака перестроилась на картинку GIF – один из самых объемных элементов сайта. Эти действия дали мне хорошую зацепку, и я основательно подготовился к контрдействиям. Я написал ряд скриптов с использованием LogParser, обрабатывающие логи web-сервера и выявляющие «аномальное» поведение клиента. «Аномальным» считалось обращение к страницам в последовательности, не присущей ни клиентам банка, ни ботнету. LogParser удачно справлялся с гигабайтными логами, что давало мне хорошие шансы на оперативное реагирование.
На этот момент атака достигла 500 запросов в секунду. Таким образом, я подготовился, и бросил приманку – переименовал атакуемую картинку, сделал возвращаемую страницу с 404-й ошибкой минимальной, и стал ждать. Через какое-то время атака на мгновение остановилась. Так как ее эффективность свелась к нулю, хакер начал вручную, через браузер, «прощупывать» сайт на наличие объемных элеменов – LogParser быстро выявил такое «аномальное» поведение. Этого мне было достаточно – IP-адрес хакера был у меня в руках и он, на удивление, принадлежал не анонимному прокси-серверу, а одному из украинских хостеров, а по совместительству, и хорошему клиенту этого самого web-сервиса банка.
— Алло, Сергей Иванович, добрый день, Вас беспокоят из <%bank_name%>, c вашего сервера идет координация DDOS атаки на наш сайт
— Здравствуйте. Скажите мне IP
— XXX.XXX.XXX.XXX
— Да, клиент сейчас работает в терминальной сессии на этом сервере, я его отключу, и передам вам доступ к серверу. С этими уродами нужно бороться. Кстати у меня есть его контактные данные.
— Спасибо, я сообщу службе безопасности банка, они с Вами свяжутся.
… продолжение следует (диалог с хакером в ICQ, «отрезание» головы червя, мои показания в управлении по борьбе с экономическими преступлениями и, собственно, чем это закончилось)
UPD: по совету banzeg перенесен в Информационная безопасность
UPD: продолжение здесь: Как я ловил хакера 2
Формат атаки был следующим: со скоростью 150-200 запросов в секунду, методом GET, шло обращение к одному и тому же URL с большого количества IP адресов. Т.е. работал небольшой международный ботнет. Сам сервер и фаервол банка с атакой вполне справлялись, поэтому у меня было достаточно времени, чтобы изучить атаку и выработать план мероприятий по ее устранению.
Первым делом я проанализировал географию атакующих IP-адресов. Интенсивность была равномерно размазана по странам, и заблокировать какие-либо регионы было невозможно – банковским web-сервисом пользовались клиенты со всего мира, и блокировка какого-либо сегмента, означала бы для банка финансовые потери. Далее, предполагая возможный рост интенсивности атаки, я оптимизировал размер атакуемой страницы к минимуму. Нагрузка на сервер и фаервол упала, что не заставило себя ждать. Хакер, управлявший ботнетом, сменил адрес атакуемого URL, и атака перестроилась на картинку GIF – один из самых объемных элементов сайта. Эти действия дали мне хорошую зацепку, и я основательно подготовился к контрдействиям. Я написал ряд скриптов с использованием LogParser, обрабатывающие логи web-сервера и выявляющие «аномальное» поведение клиента. «Аномальным» считалось обращение к страницам в последовательности, не присущей ни клиентам банка, ни ботнету. LogParser удачно справлялся с гигабайтными логами, что давало мне хорошие шансы на оперативное реагирование.
На этот момент атака достигла 500 запросов в секунду. Таким образом, я подготовился, и бросил приманку – переименовал атакуемую картинку, сделал возвращаемую страницу с 404-й ошибкой минимальной, и стал ждать. Через какое-то время атака на мгновение остановилась. Так как ее эффективность свелась к нулю, хакер начал вручную, через браузер, «прощупывать» сайт на наличие объемных элеменов – LogParser быстро выявил такое «аномальное» поведение. Этого мне было достаточно – IP-адрес хакера был у меня в руках и он, на удивление, принадлежал не анонимному прокси-серверу, а одному из украинских хостеров, а по совместительству, и хорошему клиенту этого самого web-сервиса банка.
— Алло, Сергей Иванович, добрый день, Вас беспокоят из <%bank_name%>, c вашего сервера идет координация DDOS атаки на наш сайт
— Здравствуйте. Скажите мне IP
— XXX.XXX.XXX.XXX
— Да, клиент сейчас работает в терминальной сессии на этом сервере, я его отключу, и передам вам доступ к серверу. С этими уродами нужно бороться. Кстати у меня есть его контактные данные.
— Спасибо, я сообщу службе безопасности банка, они с Вами свяжутся.
… продолжение следует (диалог с хакером в ICQ, «отрезание» головы червя, мои показания в управлении по борьбе с экономическими преступлениями и, собственно, чем это закончилось)
UPD: по совету banzeg перенесен в Информационная безопасность
UPD: продолжение здесь: Как я ловил хакера 2