Q: Как снизить риск заражения Android-устройства какой-нибудь малварью?
A: Самым эффективным способом предотвратить заражение как на десктопных системах, так и на мобильных устройствах многие считают антивирусные средства. Безусловно, обнаружение и предупреждение запуска зловредов позволяет значительно оградить себя от нежелательных последствий. Но мы посмотрим на эту проблему несколько иначе.
Если вредоносному приложению все-таки посчастливится и оно будет запущено, главной его целью будет повышение привилегий (по возможности UID = 0) путем эксплуатации одной из уязвимостей ОС или компонентов. Выяснить же, насколько дыряв твой андроид, тебе поможет сканер известных уязвимостей X-Ray от американской ИБ-конторы Duo Security. Приложение имеет механизм обновления базы уязвимостей, а на момент написания этого текста обучено выявлению восьми критических багов. И если какой-нибудь из тестов дает положительный результат, то это повод призадуматься над внеочередным системным обновлением.
К сожалению, правила Google Play не позволяют разработчикам добавить утилиту в официальный магазин приложений. Придется ставить из APK-файла.
Q: В одном из прошлых номеров для защиты от атак типа ARP-poisoning предлагалось использовать программу ARPFreeze. А есть ли аналоги для Linux?
A: Конечно же, существует масса подобного софта и для Linux — от совсем незамысловатых скриптов, приглядывающих за ARP-таблицей, до самых настоящих систем предотвращения вторжений. Из общей массы по соотношению «простота / интересные возможности» выделяется демон по имени etherwall. Сразу после старта происходит очистка ARP-кеша, детектирование шлюза и создание статической записи в таблице, после чего сетевой интерфейс переводится в прослушивающий режим для реагирования в режиме реального времени. Управление демоном осуществляется утилитой etwconsole, посредством которой можно задать разрешающие правила для определенных хостов (по умолчанию взаимодействие разрешено только со шлюзом). Помимо команд настройки, в комплекте идет ряд средств, позволяющих не только обезопасить себя в агрессивной сети, но и выявить потенциальные источники опасности. Например, командой promiscop можно определить, на каких хостах включен promiscous mode, а linktype определит, подключен другой конец патчкорда к свитчу или хабу. При обнаружении в «подслушанном» трафике поддельных ARP-сообщений (исходя из ранее сохраненных соответствий IP-MAC) или при попытке отравления кеша будет выдано окно с предупреждением.
Q: Подскажите, как можно упростить поиск уязвимостей во Flex-приложениях, общающихся с сервером при помощи AMF?
A: Напомню, что AMF (Action Message Format) — это бинарный протокол взаимодействия фронтенда, написанного на ActionScript, с серверной частью. Как и большинство подобных (SOAP, JSON, etc.), он реализуется поверх HTTP и позволяет передавать данные различных типов. Как и для любого основанного на HTTP взаимодействия, для работы с AMF незаменимым инструментом является хорошо известный burp suite, который, начиная еще с версии 1.2.16, умеет декодировать бинарные сообщения и представлять их в виде удобочитаемого дерева объектов. Также не стоит забывать про старый добрый метод автоматизации процесса поиска багов — фаззинг. Тем более что после представления на Black Hat 2012 арсенал боевых дополнений для хакерского прокси обогатился плагином под названием Blazer (bit.ly/burpamf). После запуска дополненного burp’a:
java -classpath burp.jar; Blazer.jar burp.StartBurp
в контекстном меню на вкладке прокси появится пункт для вызова Blazer’a. Для полноценного исследования не помешает иметь образец сервлета, обрабатывающего запросы на серверной стороне. Получив такой JAR, Blazer автоматически вытащит из него все возможные точки входа, то есть публичные методы и принимаемые ими параметры. Далее останется только выбрать из списка нужные и задать стандартные для фаззера опции — множество валидных подставляемых значений для различных типов данных, количество потоков и набор нестандартных значений, потенциально приводящих к выявлению уязвимостей (например, для SQLi — символ апострофа). Запустив процесс генерации запросов, можно приступать к анализу серверных ответов с помощью штатных инструментов burp suit, вычленяя из массы однотипных интересующие нас. Признаками аномальной реакции на запрос могут быть как размер ответа, так и MIME-тип или код ошибки.
Q: Иногда нужно, чтобы какой-нибудь файл (или статичная страничка) был некоторое время доступен по HTTP. Можно ли как-нибудь обойтись без установки и настройки веб-сервера?
A: Прекрасно тебя понимаю! Если под рукой нет никакого веб-сервера, а из функционала требуется лишь отдавать статический контент (например, для эксплуатации Remote File Inclusion и заливки шелла в недра атакуемого сайта), то можно обойтись без именитых решений и написать простейший сервак самому. В этом нам поможет всеми любимый швейцарский нож для работы с TCP — Netcat или Ncat (виндовый брат-близнец, неизменно идущий в комплекте с уже упоминавшимся Nmap). Для Linux это займет не более одной строчки:
while true ; do nc -l 80 < index.html ; done
Батник для Windows — целых три :).
:loop
ncat -l 80 < index.html
goto loop
Все, в index.html помещаем все, что хотели бы отдавать. После запуска можно смело коннектиться на стандартный 80-й порт при помощи браузера.
Q: Как определить уровень защищенности RDP-сервиса, имея лишь внешний анонимный доступ?
A: Вполне резонное желание. Обнаружив на сканируемом хосте открытый 3389-й порт, разумеется, ты заинтересуешься, насколько он защищен. Поддерживает ли сервис шифрование и если да, то какое? Ведь от этого будет зависеть, имеет ли смысл пассивное прослушивание сетевого трафика в ожидании удаленного логина. Расставить точки над ё нам поможет несложный скрипт rdp-enum-encryption из состава незаменимого сканера Nmap. Если у тебя стоит не самая свежая версия, рекомендую для получения максимального функционала загрузить сырцы из официального SVN-репозитория и провести сборку самостоятельно. Скрипт запускается, как и все стандартные nse-расширения, путем старта Nmap’a с параметром --script:
nmap -p 3389 --script \
rdp-enum-encryption 192.168.13.37
При наличии запущенного RDP-сервиса по адресу 192.168.13.37 Nmap попробует подключиться с использованием всех методов различной защищенности (их на самом деле не так уж и много — Native RDP, с использованием SSL или CredSSP) и различных криптопрофилей. В результате будет выведен список поддерживаемых механизмов обеспечения безопасности.
Q: Посоветуйте, пожалуйста, средство для быстрой отладки сложных регулярных выражений.
A: Регулярные выражения — очень мощный и удобный инструмент для обработки различной информации, но зачастую в процессе создания выражение принимает на первый взгляд пугающий вид. Но пугаться не стоит, а разобраться, какая часть для чего, поможет замечательная утилита Regex Pixie. В одну из текстовых областей главного окна помещается предмет парсинга (текст или любой другой набор символов), и по мере задания или правки регулярного выражения обнаруженные соответствия будут подсвечиваться. Все происходит в режиме реального времени, что позволяет быстро обнаруживать и исправлять допущенные ошибки. Функционал также позволяет работать со сложными выражениями для «умной» замены найденных соответствий, причем результат, как и подсветка вхождений, не заставит себя ждать, и в области Output отобразится текст с произведенными согласно правилу замещениями. Специальная область OutputOnly содержит только затронутые правилами данные, на случай, если необходимо отделить соответствия от остального текста. Иными словами, Pixie — весьма приятный инструмент, способный облегчить написание регулярок, и, безусловно, будет полезен, если ты недавно встал на путь постижения хитрых RegExp’ов :).
Q: В прошлом номере для исследования USB-взаимодействия описывался способ для Linux. А как же Windows?
A: Windows не стоит в стороне, и, конечно, есть способы отснифать USB и в этой ОС. Единственная загвоздка заключается в том, что большинство соответствующих инструментов распространяется под коммерческими лицензиями, а значит, платные. Тем не менее для знакомства с миром информации, циркулирующей в USB-шине, можно воспользоваться утилитой USBlyzer. Триальная версия не содержит каких-либо существенных ограничений и работает целых 30 дней с момента установки. Впрочем, если за отведенный месяц интерес к анализу устройств не угаснет, ты сможешь найти решение на просторах Сети :). В процессе инсталляции будет установлен драйвер для перехвата данных на уровне ядра, и после перезагрузки можно приступать к работе. Интерфейс интуитивно понятен — в древовидном списке отмечаем устройства, за которыми будем наблюдать, жмем Start Capture и в области лога наблюдаем проносящиеся от корневого контроллера к драйверам устройств пакеты.
Q: Как работают устройства для считывания магнитных карт, подключаемые к смартфонам через аудиоразъем?
A: Предоставляемый с недавних пор некоторыми банками сервис оплаты прямо с кредитки действительно из аппаратного обеспечения требует лишь смартфон с подключенным вместо гарнитуры ридером. Но никакой сложной электронной начинки внутри этого специального девайса на самом деле нет. Все, что прячется за слоем пластика, — обыкновенная считывающая магнитная головка, наподобие тех, что есть в любом кассетном плеере, напрямую подключенная к контактам, обычно предназначающимся для микрофона в гарнитуре. Приложение, запущенное на смарте, принимает аудиопоток, приходящий с этого специфичного микрофона. Колебания в микрофоне возбуждаются не звуком, а изменениями магнитного поля при проведении магнитной полосой вдоль считывающей головки. Если отобразить осциллограмму полученной звукозаписи, станет заметно, что частота сигнала непостоянна, именно ее изменением и кодируются биты информации. В начале каждой дорожки всегда размещается несколько нулей, задающих эталонную частоту, относительно этого значения увеличение вдвое означает появление единицы. Далее таким образом считанные и распознанные биты компонуются в немного необычные байты по пять штук и преобразуются в один из 16 допустимых для кодирования символов (цифры и спецсимволы разделения полей).
Q: Для подтверждения заказа, сделанного в США через интернет, требуется телефонный звонок с американского номера, а звонки через скайп не обрабатываются. Как быть?
A: Довольно распространенная ситуация. Простейший способ — попросить позвонить кого-нибудь из знакомых американцев. Но можно обойтись и без них, воспользовавшись одним из сервисов предоставления анонимного телефонного номера, например Burner. Burner представляет собой приложение для iPhone, реализующее пользовательский интерфейс для работы с голосовыми вызовами и SMS, подобный стандартному. За умеренную плату для использования предлагается обычный с виду телефонный номер с международным кодом +1. С этого номера можно производить и принимать звонки, а также полноценно работать с сообщениями посредством мобильного приложения. В нашем случае при обращении к такому сервису к плате за предоставленный заморский номер прибавится еще и тариф до него. Но цель будет достигнута: конечный абонент увидит на своем определителе номера американский CallerID.
Что можно сделать, чтобы весь трафик системы шел исключительно через Tor?
Разумная параноидальность не бывает лишней, особенно когда речь заходит об анонимности в Сети. Tor уже сам по себе достаточно защищенное средство анонимизации, которая достигается за счет многократной пересылки данных между случайными узлами сети и шифрованного туннелирования трафика. Для уверенности в том, что ни байта значимых данных не будет передано в Сеть не через точку выхода луковичной сети, можно использовать виртуальную машину, весь трафик которой «торифицировать» за ее пределами. Также этот способ будет полезен, если нужное приложение не поддерживает работу с прокси.
5 шагов
- На хост-систему устанавливаем точку входа в Tor-сеть Vidalia Bundle, затем в конфиге (%USERPROFILE%\AppData\Local\Vidalia\torrc) уточняем, что порты для прокси-сервиса и DNS нужно открывать на интерфейсе, который смотрит в виртуальную машину.
# 192.168.207.1 — адрес, присвоенный # виртуальному адаптеру VMware SocksListenAddress 192.168.207.1 DNSListenAddress 192.168.207.1 DNSPort 53
- Для гостевой системы назначаем тип сетевого подключения host-only и задаем статический IP и маску.
- Также нам понадобится виртуальный сетевой интерфейс, через который мы сможем соксифицировать наш трафик внутри виртуалки перед пробросом его на прокси Tor’а. Для этого установим OpenVPN. После установки в сетевых подключениях появится новое Tap-подключение, для которого зададим параметры: IP-адрес 10.0.0.1, в качестве адреса шлюза укажем адрес виртуального роутера, который создадим далее, — 10.0.0.2. В качестве DNS-сервера выступит Tor DNS на хостовой системе — 192.168.207.1.
- Теперь создадим виртуальный роутер, который будет соксифицировать трафик и пробрасывать его на прокси Tor’а. В этом нам поможет утилита badvpn-tun2socks, идущая вместе с вовсе не плохим BadVPN. Распаковав полученный архив, выполним следующее:
badvpn-tun2socks.exe \ --tundev tap0901:<имя Tap сетевого адаптера> \ :10.0.0.1:10.0.0.0:255.255.255.0 \ --netif-ipaddr 10.0.0.2 \ --netif-netmask 255.255.255.0 \ --socks-server-addr 192.168.220.1:9050
В результате статус Tap сетевого адаптера должен измениться на «Подключено».
- Теперь можно проверить работоспособность нашей хитрой связки! Что касается доступности ресурсов в теневой доменной зоне .onion, то в упоминавшийся выше конфиг torrc нужно добавить следующие строки:
AutomapHostsOnResolve 1 AutomapHostsSuffixes .onion VirtualAddrNetwork 10.192.0.0/10