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<User>Local SettingsTemp
два файла — драйвер и скрипт для самоудаления. Для работы троян использовал технику Dynamic forking (Process hollowing), то есть образ его исполняемого файла в памяти размещался в адресном пространстве другого, уже существующего процесса. То есть зловредный код исполняется во вполне безобидном контейнере и при этом успешно скрывается от проактивной защиты (кстати сказать, пользуясь рядом других антиотладочных техник). Далее троян прописывает себя в автозагрузку через MBR и начинает собирать данные. Для этого он создает скрытый каталог с рандомным именем типа C:WindowsInstaller{49FD463C-18F1-63C4-8F12-49F518F127}
, куда сохраняет скриншоты, данные кейлоггинга, пароли (извлекаемые из браузеров и чат-клиентов), записи звонков по Skype и многое другое. Раз в десять минут троян пересылает собранные данные на сервер по заданному IP (в анализируемом случае это был 77.69.140.194) через порты 22, 53, 80, 443, 4111 (в основном — через два последних).
Результаты анализа действий малвари таковы:
- Сокрытие от 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 будут работать медленно. Их лучше запускать со взломанных серверов или купленных за биткойны
Поиск цели
Для этого я обычно использую 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
и по выданному диапазону адресов узнаем, что сайт
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
перестал обновлять статистику, так что, вероятно, это и есть корень проблемы. Но в любом случае, все, чем занимается этот сервер, — это
Изучение сети
Следующим шагом было осмотреть локальную сеть, к которой подключена взломанная машинка. Этот во многом аналогичен описанному в главе Сканирование и взлом, за исключением того, что перед файрволлом можно обнаружить еще больше интересных сервисов. Здесь нам снова пригодится статически слинкованный 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.
Другие обсуждения:
Полезные ссылки
- https://www.pentesterlab.com/exercises/
- http://overthewire.org/wargames/
- http://www.hackthissite.org/
- http://smashthestack.org/
- http://www.win.tue.nl/~aeb/linux/hh/hh.html
- http://www.phrack.com/
- http://pen-testing.sans.org/blog/2012/04/26/got-meterpreter-pivot
- http://www.offensive-security.com/metasploit-unleashed/PSExec_Pass_The_Hash
- https://securusglobal.com/community/2013/12/20/dumping-windows-credentials/
- https://www.netspi.com/blog/entryid/140/resources-for-aspiring-penetration-testers (и другие публикации этого автора)
- https://www.corelan.be/ (начните с Exploit writing tutorial part 1)
- http://websec.wordpress.com/2010/02/22/exploiting-php-file-inclusion-overview/
- http://www.dest-unreach.org/socat/
Книги:
- 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
Автор: siomi