Q: Подскажите — как можно упростить эксплуатацию уязвимости типа BXI?

A: Напомню, что уязвимость Blind XPath injection заключается в возможности внесения изменений в XPath-запрос к XML базе данных, выполняемый на стороне сервера. Практически сестра-близнец всем известной SQL-инъекции, только с использованием не SQL, а языка XPath. В случае слепой инъекции мы можем формировать исполняемые запросы и довольствоваться лишь информацией об успехе выполнения. Немного, но достаточно, чтобы байт за байтом перебрать на серверной стороне содержимое XML-хранилища. Делать это вручную, разумеется, занятие неблагодарное. Особенно когда под рукой есть отличная утилита для эксплуатации BXI — XPATH Blind Explorer (bit.ly/BXIExplorer). Не перегруженный опциями интерфейс позволяет очень гибко настроить программу. Помимо обычной работы посредством генерации GET или POST, программа дает возможность добавлять к запросам пользовательские заголовки, что значительно расширяет границы применения тулзы. Все, что потребуется задать, кроме URL уязвимого скрипта и опционального прокси, — это значение, которое содержится в получаемом ответе и сигнализирует об успешном или нет выполнении запроса. Остается нажать кнопку «GET XML» и наблюдать, как символ за символом тайное становится явным.

Q: Есть сервис, позволяющий загрузку пользовательских изображений, в том числе и SVG. Как это можно использовать для атаки на пользователей?

A: Цифровые изображения вообще опасная штука! 🙂 Рассмотрим пример проведения банальной XSS при помощи специально сформированной SVG-картинки. И попутно окунемся в воспоминания о не таких уж и далеких, но, к всеобщему счастью, уже отошедших к истории временах, когда популярные браузеры грешили игнорированием MIME-типов, получаемых от сервера. Для начала вспомним, что SVG представляет собой не что иное, как XML-представление, интерпретируемое впоследствии рендером. На самом деле можно было бы просто включить в описание скрипт (спецификация нас тут ничем не ограничивает), но мы используем технику хамелеонного поведения при помощи XSL-трансформации. Так, наша вредоносная нагрузка будет выполнена лишь в случае прямого обращения браузера к файлу, например посредством <iframe>. При попытке же отобразить его с помощью тега <img> пользователь получит безобидное изображение.

    <?xml version="1.0"?> 
    <?xml-stylesheet type="text/xml" href= "#stylesheet"?> 
    <!DOCTYPE doc [ 
    <!ATTLIST xsl:stylesheet 
     id ID #REQUIRED>]> 
    <svg xmlns="http://www.w3.org/2000/svg"> 
     <xsl:stylesheet id="stylesheet" version="1.0" \
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
     <xsl:template match="/"> 
     <iframe xmlns="http://www.w3.org/1999/xhtml" \
     src="javascript:alert(1)"></iframe> 
     </xsl:template> 
     </xsl:stylesheet> 
     <circle fill="red" r="40"></circle> 
    </svg> 

Q: Имеется некий файл, используемый для хранения данных приложения. В hex-редакторе признаков строковых значений и других зацепок нет. Можно ли как-то узнать, является это просто бинарным представлением каких-то структур или было использовано шифрование?

A: Действительно, разобраться в закрытом формате хранилища или дампе — задача не из простых. Особенно если нет даже предположений, в каком направлении копать и стоит ли копать вообще. Ведь если было использовано шифрование, то шансов обнаружить в итоге искомые данные при таком подходе не остается вовсе. На помощь в этой ситуации приходит простой инструмент из сложного математического аппарата — информационная энтропия. Именно эта волшебная функция поможет навскидку отделить данные с намеком на структурность от криптоконтейнера. Не вдаваясь в подробности, энтропия — это величина, характеризующая неопределенность информации, то есть теоретически наибольшее значение энтропии должен иметь белый шум или вывод /dev/urandom. Cовременные шифры и алгоритмы сжатия также в большинстве своем выдают данные с высоким значением энтропии. Вычислять на бумажке, конечно, ничего не придется, получить искомую цифирь для файла можно утилитой, носящей скромное имя ent (bit.ly/enthropy).

Q: Как, зная параметры криптосистемы RSA, проще всего расшифровать сообщение?

A: Для того чтобы расшифровать RSA-сообщение, достаточно знать так называемые модуль (N) и закрытую экспоненту (D), или, как все это вместе называют, закрытый ключ. Если удалось каким-то образом им завладеть, то дело за малым. Для наших целей идеально подойдет Python, на котором проблема расшифрования сводится к паре строк. А именно:

#Заюзаем стандартную криптобиблиотеку
import Crypto.PublicKey.RSA
#N и D, как правило, очень большие \
числа, о чем сообщит интерпретатору \
флаг L в конце значения. \
d=0x63e74967eaea2025c98c69f6ef07\
#...Здесь было много строк хексов 
2c6e6bd27eaa71cc0288df1ecc3b062bL
n=0x95daee1be05f3038ae529ef2668a
#...И здесь тоже =)
772888f1fd71aa08f08502a141b611fL

#Инициализируем криптосистему.  \
Второй параметр — открытая      \
экспонента, не используемая     \
при расшифровании. 
key=Crypto.PublicKey.RSA.construct((n,0,d))
#Все, остается лишь вызвать метод   \
 decrypt от шифртекста 
key.decrypt(chiphertext) 

Q: При использовании Python в режиме интерактивной командной строки очень не хватает автодополнения по нажатию на . Есть ли какие-нибудь решения именно для консоли?

A: Python Shell очень удобный инструмент и, как видно из предыдущего вопроса, идеален для быстрого решения задач в несколько строк. Держать в голове все доступные методы и функции, конечно же, невозможно, и каждый раз вызывать help() совсем не круто :-). Повысить интерактивность и скорость работы с интерпретатором нам поможет модуль rlcompleter в связке с readline. Достаточно подключить их и назначить действие автодополнения на нужную клавишу.

import rlcompleter
import readline
readline.parse_and_bind("tab: complete")

Все, можно, нажав , получать список возможных вариантов завершения команды! Чтобы не заморачиваться с подключением модулей, каждый раз открывая новую консоль, можно прописать эти строки в файл инициализации шелла. Для этого в домашней директории создадим файл .pyrc и поместим в него эти строки. А в .bashrc добавим переменную окружения, дающую Python знать, откуда брать команды, исполняемые при запуске.

cat >> ~/.bashrc
export PYTHONSTARTUP="~/.pyrc"

Любопытно, что с использованием библиотеки readlinе работает и замечательная утилитка clink (bit.ly/clinkcmd), делающая возможным полноценное использование стандартного Windows-шелла cmd.exe, расширяя интерпретатор автодополнениями и bash-подобными функциями оперирования с историей команд. (Подробнее о подобных инструментах можно прочитать в статье «Есть ли жизнь в консоли Windows» в этом номере.)

5 «шагов»: Распознаем криптоалгоритмы при анализе исполняемого файла

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

  1. FindCrypt Плагин для не нуждающегося в особом представлении дизассемблера-комбайна IDA Pro от его же создателя. В отличие от самого дизассемблера свободно распространяется вместе с исходным кодом, что дает возможность при необходимости дополнить функционал в соответствии с конкретной задачей. Обладает внушительным набором сигнатур и высокой скоростью работы. Иными словами — musthave-дополнение к IDA.
  2. Immunity Debugger searchcrypt Расширение, входящее в стандартный набор, написанное на Python и моментально доступное из командной строки отладчика. Для вызова достаточно набрать «!searchcrypt», после чего будет произведено сканирование открытого в отладчике файла. Ход выполнения и результаты, включающие названия обнаруженных алгоритмов и адреса в памяти, выводятся в общий лог, доступный в отдельном окне. По функционалу схож с FindCrypt, но проигрывает в скорости.
  3. SnD Crypto Scanner Еще одно дополнение для семейства отладчиков OllyDbg / Immunity Debugger. Распространяется в виде динамической библиотеки, подгружаемой при запуске, после чего запустить плагин можно, выбрав соответствующий пункт в меню «Plugins». Позволяет в один клик выставить точки останова на секции памяти, содержащие найденные сигнатуры. Немаловажно и то, что SnD единственный справился с обнаружением нестандартной индексной таблицы в реализации base64.
  4. Hash & Crypto Detector Просто удобный standalode-криптосканер. Позволяет выявлять множество полезных свойств исследуемого файла, среди которых информация об использованном компиляторе, реализованных методах защиты и упаковщиках. Традиционный сигнатурный поиск дополнен функционалом эвристического анализа, что выгодно отличает этот детектор. Приятным бонусом является возможность производить запуск приложения и анализ уже распакованного исполняемого кода.
  5. bfcrypt Быстрый криптосканер, распространяемый под лицензией GPLv2. Одно из немногих действительно кроссплатформенных решений для поиска криптосигнатур. Консольный интерфейс чрезвычайно прост — в качестве параметров достаточно предоставить лишь имя исследуемого файла. Ничего лишнего — в лучших традициях принципа KISS, сканер, готовый выручить, в случае необходимости реверсинга в среде, отличной от Windows.

Прослушивание USB-взаимодействия в WIreshark
Прослушивание USB-взаимодействия в WIreshark

Q: Посоветуйте легковесный файрвол для Windows.

A: Межсетевой экран — компонент системы, выбору которого, безусловно, стоит уделять достаточное внимание. B выборе для рабочей станции или домашнего компа я советую остановиться на TinyWall (bit.ly/tinyfirewall).

Нетребовательный к ресурсам, он просто выполняет возложенные на него функции — блокирует сетевой трафик согласно гибко настраиваемым правилам. В несколько кликов позволяет переключаться между режимами защиты, поддерживает вайтлистинг по процессам или приложениям. Одно из главных достоинств — TinyWall практически не привлекает к себе внимания пользователя: есть лишь иконка контроллера в системном трее, а постоянные информирующие окна и подсказки отсутствуют. Из дополнительных фич — наличие поддержки IPv6 и мониторинг изменений hosts-файла.

Q: Я получил админский доступ к удаленному виндовому серверу. Как наиболее незаметно и без заморочек организовать прослушивание трафика?

A: С такой проблемой приходится сталкиваться довольно часто. Однако, к счастью, спецы по сетевой безопасности и компьютерной криминалистике из Netresec написали консольный пакетный сниффер RawCap (bit.ly/rawcap). Мало того что она весит всего 17 килобайт, так еще и не требует абсолютно никаких зависимостей: не надо дополнительно ни библиотек, ни сетевых драйверов типа WinPcap! Просто запускаешь с админскими правами из какой-нибудь директории, спрятанной в дебрях системного диска, и наслаждаешься простотой и гениальностью. После старта тебе будет представлен в удобном виде список всех сетевых интерфейсов, где надо выбрать номер прослушиваемого интерфейса и имя для pcap-файла.

«А что же с этим дампом делать дальше?» — спросишь ты. Но и тут за тебя уже позаботились. Сайт CloudShark.org представляет собой не что иное, как онлайн-версию знаменитого сниффера Wireshark. Загружаешь pcap-файл и анализируешь пакеты в до боли знакомом интерфейсе. К твоим услугам привычные фильтры и инструменты для анализа. Кроме того, все, что ты видишь на экране монитора, будет сохранено в облаке и доступно по постоянной ссылке, как и сам оригинал дампа пакетов.

Q: Что можешь посоветовать, когда нужно срочно продиагностировать систему, а нужного софта как назло нет под рукой?

A: В этом вопросе, без сомнения, Марку Руссиновичу нет равных. Его легендарные утилиты должны быть в аптечке каждого хакера :). Ну а если вдруг у тебя их не оказалось, то ты можешь заюзать их прямо с сайта SysInternals! Просто подключи сетевой диск \live.sysinternals.com\tools\ или введи этот текст в адресной строке твоего файлового менеджера. Со всеми утилитами можно ознакомиться по ссылке bit.ly/sysintools.

Q: Заинтересовался поиском уязвимостей в программах. Где бы взять материалы для экспериментов?

A: Ты наверняка уже слышал про дистрибутивы типа Damn Vulnerable Linux, которые созданы специально для того, чтобы их ломать. Однако следует оговориться, что большинство таких сборок основаны на операционной системе Linux и содержат, как правило, слишком тривиальные баги, которые ты вряд ли встретишь в реальной жизни. Чтобы разнообразить кругозор и приноровиться к поиску дыр в популярном софте, который используют миллионы людей ежедневно, советую учиться сразу на этих программах. Прошло то время, когда информацию для обучения приходится искать по крупицам, словно 15 лет назад. В наши дни в Сети можно найти море информации о поиске уязвимостей. Алгоритм простой: найти отчет об уязвимости и распотрошить подопытную программу согласно этому отчету. Результаты своего исследования хакеры обычно выкладывают на сайты, которые представляют собой базу данных эксплойтов. Самыми популярными являются 1337day.com иexploit-db.com. Там ты можешь найти информацию об авторе и его исследовании, ссылки по теме, а самое главное — технические детали уязвимости. Выяснив версию приложения, следует скачать его с официального сайта и начать эксперименты. Очень часто разработчики выкладывают только самую последнюю стабильную версию, тогда на помощь приходят архивы старого софта. Рекомендую oldversion.com и oldapps.com, где можно найти практически любые программы под большинство популярных платформ. Ну и добавим в коллекцию каталог образов виртуальных машин osvirtual.net, куда уже установлены старые версии различных, в том числе экзотических операционных систем.

Q: С помощью чего можно анализировать взаимодействие системы с различными устройствами по USB?

A: Для изучения такого низкоуровневого взаимодействия предпочтительнее использовать аппаратный сниффер. К сожалению, только так можно обеспечить абсолютную прозрачность наблюдения для исследуемого устройства. Но если нет желания расставаться с сотнями условных единиц, для пробы пера можно обойтись и программным решением. В Linux для этих целей имеется замечательный модуль ядра с говорящим названием usbmon, который позволяет получать данные, циркулирующие между драйверами устройств и драйвером USB Host Controller. Несмотря на то что все это происходит уже в ядре ОС, этого вполне достаточно для получения картины происходящего обмена данными или даже ловли багов в юзерспейс драйверах :). Чтобы все это заработало, достаточно подгрузить наш модуль и смонтировать debugfs (в BackTrack 5 R2 по умолчанию эти операции уже проделаны заботливыми разработчиками):

modprobe usbmon
mount -t debugfs none_debugs /sys/kernel/debug 

Как ни странно, но для разбора USB-протокола как нельзя лучше подойдет всеядный Wireshark, способный захватывать поток с интересующей нас шины и представлять его в подходящем для восприятия человека виде.

Q: Я много времени провожу за работой в BackTrack Linux, иногда голова просто кипит. Как можно отвлечься, не прекращая свою деятельность?

A: Специально для таких случаев разработчики Linux и других входящих в дистрибутив программ подготовили несколько пасхальных яиц. Серьезные парни тоже могут веселиться :).

Если ты вдруг ошибешься при вводе пароля, то программа будет стебать тебя :). Например, так:

I have been called worse.
Maybe if you used more than just two fingers...
Listen, burrito brains, I don’t have time to listen to this trash.

Для этого отредактируй файл sudoers, добавив в конец строки Defaults слово insults. Выглядит примерно так:

Defaults !lecture,tty_tickets,!fqdn,insults

Для редактирования советую использовать не обычный редактор, а visudo, который проверяет синтаксис файла перед сохранением.

Если ты опечатаешься при вводе одной из самых частых команд ls и введешь sl, то на экране проедет паровозик! Иногда требуется самому установить этот пакет:

apt-get install sl

Почерпнуть знания о зарождении нового мира можно, если в Firefox ввести в адресную строку «about:mozilla». А если этот мир тебя не привлекает, ты можешь увидеть робота с другой планеты, введя «about:robots». Ну а если ты считаешь, что роботы — это неинтересно, то тебя ждет игра Spase Invaders. Для этого в программе Calc из пакета Open Office введи =Game(«StarWars»)

В общем, разработчики тоже люди и, конечно же, позаботились о том, чтобы наполнить приятными мгновениями твои тяжелые хакерские будни.

 

Теги:


Оставить мнение