Как была взломана Gamma International
3 августа в сабреддите /r/Anarchism некто пользователь PhineasFisher создал тред, в котором сообщил о том, что ему удалось украсть 40 гигабайт различных данных компании Gamma International. Возможно, подобная история могла оказаться не столь громкой, если бы не бизнес, которым занимается эта европейская фирма — создание и продажа программных средств для взлома и скрытой слежки (а иными словами — самой настоящей малвари), заказчиками которых обычно выступали государственные структуры. Через несколько дней после первого сообщения взломщик выложил длинный рассказ о том, как ему удалось проникнуть на сервера Gamma International и что удалось там найти.
Подробнее о FinFisherВ начале небольшое лирическое отступление и рассказ о том, чем хакера заинтересовала Gamma International. Помимо всего прочего, эта компания занимается дистрибуцией комплекта ПО FinFisher, который описывается как «программное решение для вторжения и удаленного мониторинга, созданное для использования правительственными структурами». Несколько государств преимущественно Ближнего Востока были уличены в переговорах или использовании этой шпионской системы, но большой огласки и расследования эти факты не получили.Сначала малварь попадала на компьютеры через дырку в iTunes (любая сторонняя программа могла воспользоваться автообновлением этого медиацентра со всеми доступными операциями и вытекающими последствиями), которую Apple не закрывала более трех лет.
В 2012 году многие оппозиционные активисты Бахрейна по электронной почте получили письма с вложениями — .rar-архивами с фотографиями или другими документами, под видом которых на их машины проникал многофункциональный троян. Примечательно, что названия файлов, например, exe.Image.jpg на первый взгляд казались «правильными», но в локализованных для арабских стран системах они, как положено, переворачивались справа налево и у файл для системы оказывался не картинкой, а исполняемым файлом gpj.egamI.exe. Исследованием этой атаки занялись ребята из CitizenLab, и вот что им удалось выяснить.
Троян копировал в папку C:\Documents and Settings\
Результаты анализа действий малвари таковы:
Сокрытие от 40 самых популярных антивирусных систем Скрытая связь с контролирующим сервером Полный мониторинг Skype (звонки, чаты, переданные файлы, видео, список контактов) Сохранение сообщений основных средств общения (email, чаты, VoIP) Онлайн трансляция при наличии веб-камеры и микрофона Слежение за своим геоположением Исследование локальных файлов Кейлоггинг Открытие удаленного доступа к системе Сложные фильтры для сбора необходимой информации Поддежка самых распространенных ОС (Windows, Mac OSX и Linux) Со времени этого исследования прошло более двух лет, и создатели FinFisher явно не сидели на месте. Учитывая даже громкие публичные утечки, у них было достаточно времени и ресурсов, чтобы дотачивать и расширять функцинальность своих шпионских систем.
Но теперь давайте перейдем собственно ко взлому. Хакер расписал этот процесс очень подробно, хотя для опытных пен-тестеров в нем нет никаких ноу-хау. Но для новичков в теме компьютерной безопасности эта инструкция может дать много пищи для размышления.
Рассказ для удобства будет вестись от первого лица.
Собственная безопасность прежде всего Разумеется, все описанные действия — уголовно-наказуемое преступление, поэтому стоит предпринять основные способы обеспечения анонимности:
Для начала создаем скрытый зашифрованный том с помощью утилиты Truecrypt 7.1a. Далее устанавливаем на него Whonix. Это дистрибутив на основе Debian, все сетевые соединения в котором осуществляются только через анонимную сеть Tor. Вполне достаточно и того, что Whonix будет гонять весь наш трафик через Tor, но все-таки лучше, если мы не станем использовать свое домашнее интернет-соединение. В поиске доступных беспроводных подключений вам помогут инструменты aircrack-ng и reaver, а также самодельная антенна cantenna.
Следуйте здравому смыслу и не проявляйте подозрительную активность вне Whonix, а под ним — наоборот, не занимайтесь своими повседневными сетевыми делами, а также никогда не рассказывайте в хакерской тусовке о своих занятиях в обычной жизни, а друзьям — о своих грандиозных взломах. Если вы придерживаетесь этих правил — можете не переживать за свою анонимность.
Примечание: вообще, я не советую заниматься взломом исключительно через Tor. Он полезен для многого, включая браузинг веб-страниц, но когда дело доходит до пен-теста и использования инструментов вроде nmap, sqlmap и nikto, которые генерируют тысячи обращений к внешним узлам, через Tor будут работать медленно. Их лучше запускать со взломанных серверов или купленных за биткойны VPS. В этом случае через Tor вы будете лишь управлять этими средствами, которые, в свою очередь, будут работать через быстрое соединение.
Поиск цели Для этого я обычно использую fierce, а также данные прямых и инверсных whois-запросов по IP-адресам и доменным именам.
Для примера возьмем частную военную компанию Blackwater. Что мы знаем изначально — доменное имя их сайта (academi.com). Найдем все поддомены:
fierce.pl -dns academi.com
67.238.84.228 email.academi.com 67.238.84.242 extranet.academi.com 67.238.84.240 mail.academi.com 67.238.84.230 secure.academi.com 67.238.84.227 vault.academi.com 54.243.51.249 www.academi.com Теперь сделаем whois-запрос по www.academi.com и по выданному диапазону адресов узнаем, что сайт хостится на Amazon Web Service.
NetRange: 67.238.84.224 — 67.238.84.255 CIDR: 67.238.84.224/27 CustName: Blackwater USA Address: 850 Puddin Ridge Rd whois-запрос на academi.com также сообщил, что сайт зарегистрирован по этому же адресу (850 Puddin Ridge Rd), поэтому эту строчку можно использовать для инверсных whois-запросов. Вообще, такие сервисы с актуальными данными берут деньги за услуги, поэтому можно исхитриться и использовать Google:
»850 Puddin Ridge Rd» inurl: ip-address-lookup »850 Puddin Ridge Rd» inurl: domaintools Мы получили диапазоны IP-адресов, для которых fierce.pl подскажет нам доменные имена, а fierce.pl -dns — поддомены и их IP-адреса. Итерации можно выполнять до тех пор, пока вы не найдете все, что вас интересует.
Можно поискать организацию в Google и найти другие относящиеся к ней вебсайты. Например, для academi.com можно найти портал вакансий, онлайн-магазин и раздел для сотрудников:
54.236.143.203 careers.academi.com 67.132.195.12 academiproshop.com 67.238.84.236 te.academi.com 67.238.84.238 property.academi.com 67.238.84.241 teams.academi.com После очередных whois-запросов и дальнейших поисков выясняется, что academiproshop.com не относится к объекту исследования, так что мы вычеркиваем его из списка.
В случае FinFisher к уязвимому ресурсу finsupport.finfisher.com меня привел простой whois-запрос по finfisher.com, который сообщил наименование зарегистрировавшей его организации «FinFisher GmbH». Поиск «FinFisher GmbH» inurl: domaintools выдал gamma-international.de, который редиректил на finsupport.finfisher.com.
Я думаю, вы поняли принцип поиска цели. Вообще, это одна из важнейших частей атаки, поскольку чем больше площадь, которую вы смогли обнаружить, тем проще найти в ней подходящую дырку.
Сканирование и взлом Просканируем nmap-ом все найденные IP-диапазоны и обнаружим запущенные на узлах сервисы. Кроме стандартного сканирования не станет забывать и о SNMP-сканировании.
Теперь надо определиться с каждым найденным сервисом:
Выставляет ли он наружу что-то, чего выставлять не должен? Иногда компании выявляют сервисы, которые не требуют авторизации, и это считается безопасным, так как этот URL или IP используется только для внутренних нужд. Возможно у вас fierce найдет поддомен с git-ом, и пройдя в git.companyname.come/gitweb/ вы получите исходные коды сервиса как на ладони. Если ли ошибки конфигурации? Возможно, вам попадется FTP-сервер, который позволяет анонимный доступ для чтения или даже записи в важный каталог. Или сервер базы данных с пустым паролем администратора. Или встроенные устройства (VOIP-маршрутизаторы, IP-камеры, роутеры…) используют заводской аккаунт с паролем по умолчанию. Насколько стара версия и есть ли для нее публичные эксплойты? Веб-сервера попадают в отдельную категорию. Для них, включая те, которые nmap нашел на нестандартных портах, я обычно делаю следующее:
Хожу по веб-страницам. На найденных fierce поддоменах, которые явно не предназначаются для публичного взора, например test.company.com или dev.company.com можно найти много интересного, просто открыв их в браузере. Запускаю nikto. Он произведет поиск доступных каталогов webserver/.svn/, webserver/backup/, webserver/phpinfo.php и еще тысячи обычных ошибок в настройке. Определяю, какое ПО используется на вебсайте. В этом помогает WhatWeb. В зависимости от обнаруженного ПО можно использовать специализированные инструменты, вроде wpscan, CMS-Explorer и Joomscan. Сначала исследуйте те сервисы, для которых проще найти известную уязвимость или публичный эксплойт. Если таких не наблюдается, баг надо искать самому. Самописные веб-приложения — более благодатная почва для поиска багов, чем широко используемые проекты, поэтому начнем с них. В этом случае я использую комбинацию автоматических тестов ZAP и ручной поиск через его перехватывающий прокси. В случае использования сторонних систем достаньте их копию и изучите ее. Если это свободное ПО, вы сможете просто его найти и скачать. Если проект проприетарный, найдите пиратскую версию. Если вдобавок эта система еще и так надежно защищена, что никто не выложил ее пиратскую версию, вы можете либо купить себе лицензию (отстойный вариант), либо через Google найти другие использующие ее сайты, в которые будет проще проникнуть и достать ее копию. Для finsupport.finfisher.com процесс выглядел так:
В фоне запустил nikto. Зашел на сайт. Увидел форму логина. Быстро проверил на наличие SQL-инъекции. Запустил WhatWeb с целью определить используемое ПО. WhatWeb ничего не нашел, поэтому следующий вопрос, с которым следовало разобраться, — это сайт, написанный в Gamma или есть другие вебсайты, которые используеют аналогичное ПО? Я открыл исходный код страницы, чтобы найти URL, по которому выполнить поиск (index.php, как вы понимаете, не настолько уникален). Я выбрал Scripts/scripts.js.php и обратился к Google: allinurl: «Scripts/scripts.js.php» Выяснил, что существует множество сайтов, которые используют аналогичную систему, написанную в небольшой веб-конторе. Кажется, что все они с самописными движками, но на самом деле у них общий код. Я хакнул пару таких сайтов и скачал себе исходные тексты их движка. На этом этапе я представляю себе огромные статьи, в которых журналисты пишут что-то воде: «В результате сложной, многоходовой атаки хакеры сначала взломали веб-контору и получили конфиденциальную информацию, которая помогла им атаковать Gamma Group…«Но на самом деле, когда вы овладеете этой техникой, все делается довольно просто, почти на автопилоте. Заняло всего пару минут:
Нашел другие сайты через Google: allinurl: «Scripts/scripts.js.php» Выяснил, что все они имеют SQL-инъекцию в первом параметре, который я проверил. Понял, что веб-сервер использует Apache ModSecurity, поэтому я запустил sqlmap с аргументом --tamper='tamper/modsecurityversioned.py' Получил логин и пароль администратора, зашел в админку, залил PHP-шелл (проверка на допустимые расширения загружаемых файлов делалать на клиентской стороне JavaScript-ом) и скачал исходный код веб-сайта. Просмотрев исходный код, подумал, что этому движку можно было дать название Чертовски Уязвимый.
Теперь ко второму найденному сайту. В нем то же самое: инъекция, LFI, загружаемый файл проверяется на клиенте JavaScript-ом, а если вы не залогинены — страница админки отправляет вас обратно на страницу логина с заголовком Location, но вы можете отфильтровать этот заголовок через свою перехватывающую прокси и войти в админку без данных аккаунта.
Вернемся к сайту finsupport. Админка по адресу /BackOffice/ возвращает 403 Forbidden, возникают сложности с чтением локальных файлов и я решаю воспользоваться SQL-инъекцией (хорошо иметь несколько вариантов действий). Другие сайты на этом движке имели уязвимый сценарий print.php, и пара быстрых запросов к
https://finsupport.finfisher.com/GGI/Home/print.php? id=1 and 1=1 https://finsupport.finfisher.com/GGI/Home/print.php? id=1 and 2=1 обрадовала меня тем, что print.php присутствует и здесь, и так же уязвим. И полученные данные администратора подошли и к базе данных! В случае MySQL это означает возможность читать и создавать файлы. Оказалось, что на сайте были включены magicquotes, поэтому я не смог писать в файлы через MySQL-команду INTO OUTFILE. Здесь я воспользовался небольшим скриптом, который через sqlmap --file-read читает исходный код PHP-скрипта по заданному URL и совершает обычный запрос к веб-странице, чтобы получить HTML-код, потом ищет другие подключенные к скрипту файлы или PHP-страницы по ссылкам в HTML-коде, чтобы рекурсивно скачать весь движок.
Изучив исходные тексты, я понял, что клиенты могут прикреплять файлы к тикетам, и при этом расширения файлов никак не проверяются. Из базы данных я выбрал логин и пароль одного из пользователей, создал тикет с прикрепленным шеллом и попал внутрь.
Повышение прав (которое не состоялось) ___________ < got r00t? > ----------- \ ^__^ \ (oo)\_______ (__)\)\/\ ||----w | || || ^^^^^^^^^^^^^^^^ Получение прав root на 50% Linux-серверов в дикой природе осуществляется с помощью двух простых скриптов: Linux_Exploit_Suggester и unix-privesc-check.
Сервер finsupport работал на последней версии Debian, под которую нет эксплойтов для получения прав суперпользователя, но unix-privesc-check сообщил:
WARNING: /etc/cron.hourly/mgmtlicensestatus is run by cron as root. The user www-data can write to /etc/cron.hourly/mgmtlicensestatus WARNING: /etc/cron.hourly/webalizer is run by cron as root. The user www-data can write to /etc/cron.hourly/webalizer В /etc/cron.hourly/webalizer я добавил следующие строки:
chown root: root /path/to/my_setuid_shell chmod 04755 /path/to/my_setuid_shell Подождал час, и… ничего. Оказалось, что процесс cron на самом деле не выполняет запланированные задания. Если посмотреть в каталог webalizer, то видно, что статистика не обновляется уже месяц. Очевидно, после обновления заданного часового пояса cron либо не запускал задания вообще, либо запускал их в неправильное время, поэтому нам следует поменять часовой пояс и перезапустить cron. ls -l /etc/localtime сообщил, что часовой пояс менялся 6-го июня, в это же время webalizer перестал обновлять статистику, так что, вероятно, это и есть корень проблемы. Но в любом случае, все, чем занимается этот сервер, — это хостинг сайта, и я уже имею доступ ко всему, что меня интересует. Root-доступ не добавил бы ничего нового, поэтому я начал исследовать другие узлы сети.
Изучение сети Следующим шагом было осмотреть локальную сеть, к которой подключена взломанная машинка. Этот во многом аналогичен описанному в главе Сканирование и взлом, за исключением того, что перед файрволлом можно обнаружить еще больше интересных сервисов. Здесь нам снова пригодится статически слинкованный nmap со всеми имеющимися скриптами. Очень полезными оказываются различные nse-скрипты с именами nfs-* и особенно smb-*. Единственной интересной находкой в локальной сети finsupport-а был еще один веб-сервер, раздававший папку qateam, в которой находился их шпионский софт для мобильных.
Веселимся Настоящее веселье начинается, когда ты попадаешь в их сеть. Используйте свое воображение. Не обязательно нужно ограничиваться сливом документов. Изначально я планировал:
Взломать Gamma и получить копию серверной части FinSpy Найти в ней уязвимости Просканировать интернет в поисках установленных FinSpy C&C серверов Определить, кто их использует Использовать C&C-сервер для загрузки и запуска программы на всех объектах слежения, чтобы сообщить им, что за ними следят Также с помощью C&C-сервера удалить FinFisher с их устройств Объединить C&C-сервера в ботнет и DDoS-ить Gamma Group. Но полностью взломать Gamma у меня так и не получилось, я добыл лишь несколько интересных документов, но никакой копии серверной части FinSpy, на которую я так рассчитывал, найти не удалось, поэтому пришлось перейти к менее веселому плану Б, который заключался в публикации их документов и высмеивании этого в Twitter-е.
Примечание: на самом деле слито много зашифрованных файлов, так что направляйте свои GPU на файл FinSpy-PC+Mobile-2012–07–12-Final.zip (magnet-ссылка, 38,7 Гб) и расшифруйте его, чтобы я смог перейти ко второму пункту!
Другие методы Еще один метод взлома, который я бы выделил наряду со сканированием и применением эксплойтов, больше подходит тем, кто имеет опыт программирования. Здесь нет четкой инструкции, но все способы хороши.
1) Эксплойты в веб-браузере, Java, Flash или Microsoft Office совместно с отправлением сотрудникам компании email-рассылки, в которой нужно убедить их кликнуть на ссылку или открыть прикрепленный файл. Либо взломать сайт, на который часто посещают эти самые сотрудники и добавить в него браузерный/Java/Flash эксплойт.
Таким методом обычно пользуются команды хакеров, работающие на правительство, но вам не обязательно быть правительством, тратящим миллионы на поиск 0day-уязвимостей или подписку на FinSploit или VUPEN, чтобы это провернуть. За пару тысяч долларов можно купить качественный набор эксплойтов от русских хак-групп, либо арендовать его за еще меньшую сумму. Существует еще Metasploit-browser autopwn-сценарий, но, скорее всего, вы добьетесь большего успеха безо всяких эксплойтов, но с фейковым Flash-обновлением.
2) Воспользуйтесь тем, что в 95% случаев люди вежливы, доверительны и готовы помочь. Индустрия компьютерной безопасности даже изобрела для этого термин: «Социальная инженерия». Можно попробовать покопать в этом направлении, если вы не сильно разбираетесь в технических вопросах, и этого может быть вполне достаточно, чтобы стать успешным хакером.
Послесловие Целиком все добытые материалы занимают около 40 Гб и сидируются активистами и просто небезразличными людьми. Многие файлы зашифрованы, и хотя некоторых владельцев PGP-ключей удалось вычислить, ничего особо секретного раскрыть не удалось. Довольно быстро часть украденного кода используемых эксплойтов была залита на GitHub, где находится и сейчас: https://github.com/FinFisher.
Другие обсуждения: Полезные ссылки Книги: The Web Application Hacker’s Handbook Hacking: The Art of Exploitation The Database Hacker’s Handbook The Art of Software Security Assessment A Bug Hunter’s Diary Underground: Tales of Hacking, Madness, and Obsession on the Electronic Frontier TCP/IP Illustrated