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»)

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

 

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

Check Also

На что способна ада. Делаем утилиту для детекта гипервизора на полузабытом языке

Лучше всего познавать язык на реальном проекте, поэтому, когда я решил поэкспериментироват…