История рассказывает о том, как ряд простых ошибок сложились в один ряд и обернулись ощутимыми неприятностями для одной компании. Впрочем, компания промышляла мошенничеством и спамом, так что, может быть, это и неплохо.
Все лица и события конечно вымышлены, однако автор предпочел остаться анонимом из Tor :) Главного героя будем называть «автор».
Был обычный день. Автор в очередной раз получил sms-сообщение от какого-то сервиса выдачи денег. Будем называть его РосКапитал. Неожиданно автор понял, что это его достало, и решил отплатить спамеру той же монетой.
Автор зашел на сайт сервиса, нашел там форму обратной связи и решил обеспечить туда поток запросов обратной связи. Был написан скрипт, который регулярно отправлял запросы, подставляя случайные имена, фамилии и телефонные номера, а затем запущен в постоянную работу через большой пул прокси (так сложилось, что у автора был под рукой такой пул прокси).
Стоит отметить, что при изучении сайта автор понял, что РосКапитал является типичной финансовой пирамидой.
Через какое-то время автор для разнообразия решил просмотреть логи работы своего скрипта. В логи попадали ответы сервера на отправленные запросы обратной связи. В логах автор заметил, что некоторое время сервер возвращал ошибку. Суть ошибки была в невозможности получить доступ к документу Google. К ошибке любезно прилагался стек вызовов, в котором был виден логин и пароль аккаунта Google. Очевидно, что РосКапитал просто записывал запросы обратной связи в документ Google, к которому у используемого аккаунта забрали доступ или что-то подобное.
Используя эти логин и пароль (ну и конечно же Tor), автор вошел в этот аккаунт. На почте были в основном сообщения, связанные с работой сервиса – заказы рекламы, оплата сервера, сообщения от платежной системы. Сообщения от платежной системы заинтересовали автора больше всего.
На сайте платежной системы автор сделал запрос на восстановление пароля. На почту успешно пришли и новый пароль, и новый платежный пароль. То есть, если злоумышленник получает доступ к почте, то он получает оба пароля и никакой двухфакторности не остается.
После этого автор успешно обменял большую часть средств с аккаунта на биткоины.
Вскоре владелец аккаунта поменял пароль.
Дело происходило во время обнаружения уязвимости «Heartbleed» в OpenSSL. Автор уже закрыл эту уязвимость на серверах, за которые он отвечал, и решил поискать, кто ее еще не закрыл. На ум автору, конечно же, пришел тот самый сервис.
Уязвимость там не была закрыта.
Был написан скрипт, который регулярно дергал сервер РосКапитала и выуживал 64 КБ из его памяти, а затем запущен в постоянную работу (опять же через прокси).
Через какое-то время в логах появилась сессия администратора.
Используя эту сессию и выставив соответствующий useragent в браузере, автор свободно попал в админку. Там он создал «депозит» на большую сумму и сразу же вывел его в биткоины.
Вскоре админка стала возвращать код ошибки 403, видимо к ней закрыли доступ по IP.
Уязвимость Heartbleed на том сайте по-прежнему не была закрыта, и скрипт продолжал собирать данные из памяти сервера. В частности, был получен кусок конфига nginx.
В конфиге было видно, что доступ к админке ограничен подсетью IP-адресов. После тщательного поиска в сети, автор выяснил, что есть VPN-сервис, который использует несколько IP из этой подсети.
Автор приобрел доступ к этому VPN и… снова попал в админку и снова вывел некоторую сумму денег в биткоины.
После этого доступ к админке был ограничен каким-то одним конкретным IP, а вскоре была закрыта сама уязвимость Heartbleed.
Автор уже не мог остановиться и решил просто поискать уязвимости в сервисе.
В результате был найден URL-ресурс, который просто считывал и отдавал содержимое файла, имя которого было передано в запросе к ресурсу.
Уязвимость по сути была слепой, т.е. найти интересные файлы можно было только методом тыка.
Но на помощь пришла FreeBSD. Во FreeBSD можно прочитать каталог как файл. При этом отдается запись о каталоге из файловой системы – там видны все файлы и вложенные каталоги.
Так изучение структуры файлов стало намного интереснее. Однако автору не удавалось найти ничего вкусного. Загрузить свои файлы не представлялось возможным. Реквизиты доступа к базе были найдены, но подключиться к базе было невозможно. PHPMyAdmin был только на отдельном поддомене, который был запаролен.
Однако в итоге на сервере был найден управляющий скрипт (шелл), пароль к которому был указан прямо в его коде открытым текстом.
Автор, используя этот шелл, тут же оставил свои закладки в разных местах кода сервиса. Утилита touch помогла сменить временные метки измененных файлов, чтобы по возможности затруднить обнаружение закладок.
Далее оставалось дело техники. Из базы были извлечены ключи доступа к API платежных систем, из которых затем были благополучно слиты все средства и переведены в биткоины.
После этого автор через API наблюдал, как все поступающие в платежные системы средства каждые несколько минут выводятся на другие кошельки. Очевидно, владельцы сервиса пытались спасти как можно больше средств. Вообще это была довольно популярная финансовая пирамида, и входящие переводы шли постоянно. Вскоре РосКапитал прекратил свою работу. В принципе это в любом случае было их целью, однако автор явно серьезно уменьшил объем их средств. Для понимания масштабов – объем похищенных средств составил порядка 140-150 BTC. Выяснить курс BTC на то время наверняка не составит труда у читателей.
С тех пор вымышленного автора этой вымышленной истории мучает вопрос: хорошо ли воровать у мошенников, особенно с учетом того, что мошенники в конечном итоге получили деньги от людей, которые виноваты только в том, что верят в сказки?
Все лица и события конечно вымышлены, однако автор предпочел остаться анонимом из Tor :) Главного героя будем называть «автор».
Не рассылайте спам. Особенно sms-спам
Был обычный день. Автор в очередной раз получил sms-сообщение от какого-то сервиса выдачи денег. Будем называть его РосКапитал. Неожиданно автор понял, что это его достало, и решил отплатить спамеру той же монетой.
Автор зашел на сайт сервиса, нашел там форму обратной связи и решил обеспечить туда поток запросов обратной связи. Был написан скрипт, который регулярно отправлял запросы, подставляя случайные имена, фамилии и телефонные номера, а затем запущен в постоянную работу через большой пул прокси (так сложилось, что у автора был под рукой такой пул прокси).
Стоит отметить, что при изучении сайта автор понял, что РосКапитал является типичной финансовой пирамидой.
Отключайте вывод ошибок в публичной (продакшн) версии своего сервиса
Через какое-то время автор для разнообразия решил просмотреть логи работы своего скрипта. В логи попадали ответы сервера на отправленные запросы обратной связи. В логах автор заметил, что некоторое время сервер возвращал ошибку. Суть ошибки была в невозможности получить доступ к документу Google. К ошибке любезно прилагался стек вызовов, в котором был виден логин и пароль аккаунта Google. Очевидно, что РосКапитал просто записывал запросы обратной связи в документ Google, к которому у используемого аккаунта забрали доступ или что-то подобное.
По возможности используйте двухфакторную авторизацию для своих аккаунтов. Не используйте важные аккаунты для автоматизированного доступа к различным ресурсам
Используя эти логин и пароль (ну и конечно же Tor), автор вошел в этот аккаунт. На почте были в основном сообщения, связанные с работой сервиса – заказы рекламы, оплата сервера, сообщения от платежной системы. Сообщения от платежной системы заинтересовали автора больше всего.
Платежные системы должны обеспечивать полностью двухфакторную защиту платежей
На сайте платежной системы автор сделал запрос на восстановление пароля. На почту успешно пришли и новый пароль, и новый платежный пароль. То есть, если злоумышленник получает доступ к почте, то он получает оба пароля и никакой двухфакторности не остается.
После этого автор успешно обменял большую часть средств с аккаунта на биткоины.
Вскоре владелец аккаунта поменял пароль.
Вовремя устанавливайте пакеты обновлений и исправлений. Это же должны делать все ваши контрагенты
Дело происходило во время обнаружения уязвимости «Heartbleed» в OpenSSL. Автор уже закрыл эту уязвимость на серверах, за которые он отвечал, и решил поискать, кто ее еще не закрыл. На ум автору, конечно же, пришел тот самый сервис.
Уязвимость там не была закрыта.
Был написан скрипт, который регулярно дергал сервер РосКапитала и выуживал 64 КБ из его памяти, а затем запущен в постоянную работу (опять же через прокси).
Стоит привязывать сессию на сайте к IP (хотя с этим могут быть другие подводные камни)
Через какое-то время в логах появилась сессия администратора.
Используя эту сессию и выставив соответствующий useragent в браузере, автор свободно попал в админку. Там он создал «депозит» на большую сумму и сразу же вывел его в биткоины.
Вскоре админка стала возвращать код ошибки 403, видимо к ней закрыли доступ по IP.
Бывает, что VPN понижает безопасность (!)
Уязвимость Heartbleed на том сайте по-прежнему не была закрыта, и скрипт продолжал собирать данные из памяти сервера. В частности, был получен кусок конфига nginx.
В конфиге было видно, что доступ к админке ограничен подсетью IP-адресов. После тщательного поиска в сети, автор выяснил, что есть VPN-сервис, который использует несколько IP из этой подсети.
Автор приобрел доступ к этому VPN и… снова попал в админку и снова вывел некоторую сумму денег в биткоины.
После этого доступ к админке был ограничен каким-то одним конкретным IP, а вскоре была закрыта сама уязвимость Heartbleed.
О банальном: пишите безопасный код
Автор уже не мог остановиться и решил просто поискать уязвимости в сервисе.
В результате был найден URL-ресурс, который просто считывал и отдавал содержимое файла, имя которого было передано в запросе к ресурсу.
Уязвимость по сути была слепой, т.е. найти интересные файлы можно было только методом тыка.
Во FreeBSD есть особенность, которая потенциально снижает ее безопасность по сравнению с Linux (!)
Но на помощь пришла FreeBSD. Во FreeBSD можно прочитать каталог как файл. При этом отдается запись о каталоге из файловой системы – там видны все файлы и вложенные каталоги.
Так изучение структуры файлов стало намного интереснее. Однако автору не удавалось найти ничего вкусного. Загрузить свои файлы не представлялось возможным. Реквизиты доступа к базе были найдены, но подключиться к базе было невозможно. PHPMyAdmin был только на отдельном поддомене, который был запаролен.
Пароли открытым текстом – всегда зло
Однако в итоге на сервере был найден управляющий скрипт (шелл), пароль к которому был указан прямо в его коде открытым текстом.
Автор, используя этот шелл, тут же оставил свои закладки в разных местах кода сервиса. Утилита touch помогла сменить временные метки измененных файлов, чтобы по возможности затруднить обнаружение закладок.
Далее оставалось дело техники. Из базы были извлечены ключи доступа к API платежных систем, из которых затем были благополучно слиты все средства и переведены в биткоины.
После этого автор через API наблюдал, как все поступающие в платежные системы средства каждые несколько минут выводятся на другие кошельки. Очевидно, владельцы сервиса пытались спасти как можно больше средств. Вообще это была довольно популярная финансовая пирамида, и входящие переводы шли постоянно. Вскоре РосКапитал прекратил свою работу. В принципе это в любом случае было их целью, однако автор явно серьезно уменьшил объем их средств. Для понимания масштабов – объем похищенных средств составил порядка 140-150 BTC. Выяснить курс BTC на то время наверняка не составит труда у читателей.
С тех пор вымышленного автора этой вымышленной истории мучает вопрос: хорошо ли воровать у мошенников, особенно с учетом того, что мошенники в конечном итоге получили деньги от людей, которые виноваты только в том, что верят в сказки?
Комментарии (7)
spiritms
14.05.2015 18:25Красиво, конечно. Но чую, что Вымышленный Автор ранее работал в РосКапитал и только поэтому смог бы это провернуть.
anonymous1 Автор
14.05.2015 20:47Нет, он никогда не работал ни с ними, ни с другими подобными «организациями».
А почему вы решили, что работал?
Zifix
14.05.2015 18:40+2С тех пор вымышленного автора этой вымышленной истории мучае вопрос: хорошо ли воровать у мошенников
Идти на сделку с совестью — идея плохая, так что можно потратить на благотворительность, это точно будет хорошо)
prolis
14.05.2015 19:00автор свободно попал в админку. Там он создал «депозит» на большую сумму и сразу же вывел его в биткоины.
— т.е. еще до прямого доступа к бд нашлась веб-админка к учетной системе с возможностью управления остатками и реквизитами. Но зачем она была создана с таким функционалом?anonymous1 Автор
14.05.2015 20:50На самом деле все немного сложнее — в админке можно было регулировать сроки и проценты депозитов. Автор создал себе мгновенный депозит под миллионы процентов.
anonymous1 Автор
14.05.2015 20:52Ну и еще вывод требовал одобрения администратора. Автор соответственно мог сам себе его одобрять.
BatR00t
То, что перевёл Вымышленный Автор — это ещё не все потери. Нужно еще прибавить расходы на наем прямых рук для закрытия дыр.