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

 

Q: Подскажи, как можно определить движок сайта, если админ убрал все баннеры, по которым можно было определить CMS.

A: Действительно, определить движок сайта на глаз не всегда представляется возможным, и без использования специальных инструментов тут никак не обойтись. К счастью таковые имеются. Одним из лучших является Whatweb (www.morningstarsecurity.com/research/whatweb) – веб-сканер нового поколения, умеющий идентифицировать системы управления контентом (CMS), платформы для блогов, JavaScript-библиотеки, сервера и т.д. В процессе того, как ты посещаешь какой-либо вебсайт, браузер получает массу невидимой информации о том, как настроен веб-сервер, с помощью какого ПО создавалась страничка и т.д. На данный момент программа поддерживает 250 плагинов, идентифицирующих CMS по различным признакам. Например, даже если админ удалил тэг WordPress, это не собьет сканер с толку, так как плагин для WordPress будет искать еще строку «wp-content». Использовать сканер очень просто, достаточно передать ему в качестве параметра адрес сайта:

$ ./whatweb www.morningstarsecurity.com

 

Q: Подскажи простой способ сгенерировать словарь для подбора пароля к аккаунту конкретного человека.

A: Пентестеры и хакеры сталкиваются с этой задачей практически каждый день. Поэтому уже давно существуют специальные инструменты, которые умеют генерировать списки паролей, принимая в качестве параметра только URL. Например, такой инструмент, как CeWL (www.digininja.org/projects/cewl.php), умеет генерировать словари, путешествуя по заданному сайту до указанной глубины. Однако хакеры – люди ленивые :), и привыкли по максимуму автоматизировать свою работу. Userpass.py (www.pauldotcom.com/userpass.py) – небольшой скриптик на Python, который с помощью Google ищет человека на Linkedin.com, а затем натравливает на найденный профиль CeWL. Если жертва указала в профиле свои аккаунты facebook, myspace и т.д., то данные для создания словаря берутся и оттуда. Работа со скриптом проста: $ python userpass.py "name". Параметр name может быть как именем отдельного человека, так и названием компании (в данном случае будет сгенерирован словарь для всех работников данной компании ). У программы есть несколько интересных опций:

  • g – отвечает за количество страниц, ссылки на которые надо отпарсить после выполнения поискового запроса Гугл;
  • s – с помощью этой опции задаются дополнительные параметры для поиска (например, если компания/человек занимается безопасностью, то можно задать «security»);
  • m – задает минимальную длину слов, передающихся CeWL.

Как видишь, все очень просто. Вдобавок, можно заточить скриптик под свои собственные нужды.

 

Q: Есть ли руткиты для x64?

A: Еще некоторое время назад я был бы не уверен. Но теперь точно могу сказать: «Да». Сейчас совершенно очевидно, что нашумевший руткит TDL3, который надолго поселился в головах исследователей из антивирусных компаний, развивается именно в этом направлении. Напомню, что TDL3 считается одним из самых передовых руткитов на сегодняшний день (подробнее можно прочитать в этой статье – www.nobunkum.ru/issue003/tdss-botnet). Однако количество установок новой Win7 x64 постоянно растет, а руткит до этого момента до сих пор не умел осваиваться в системе. Это странно, потому что механизмы, позволяющие инсталлировать на эту платформу, существуют. Тот же концепт (Disable PatchGuard & Driver signature enforcement) механизма обхода проверки подписи в x64 появился еще в начале года в публичном доступе. Авторы нового TDL4 используют техники заражения MBR и старта вредоносного кода раньше самой операционной системы. Подобные методологии уже активно применялись такой малварью, как Mebroot. Так что, вероятно, в ближайшее время x64 уже перестанет быть помехой.

 

Q: Объясни на пальцах, что за новые атаки – DLL-инъекции?

A: Есть несколько разновидностей этой атаки. Самые распространенные – атаки на основе функции LoadLibrary. Когда приложение динамически загружает библиотеку DLL без указания полного пути, система Windows пытается найти ее путем линейного поиска в определенном наборе каталогов (так называемый порядок поиска DLL). Если библиотеку удается обнаружить в порядке поиска DLL, она загружается. Однако если ее не удается найти ни в одном из каталогов порядка поиска DLL, система Windows сообщает о сбое загрузки DLL. Ниже указан порядок поиска DLL для функций динамической загрузки DLL LoadLibrary и LoadLibraryEx.

  • Каталог, из которого загружено приложение.
  • Системный каталог.
  • Каталог 16-разрядной версии системы.
  • Каталог Windows.
  • Текущий рабочий каталог.
  • Каталоги, указанные в переменной среды РАТН.

Рассмотрим описанную ниже ситуацию.

  • Приложение загружает библиотеку DLL, которая предположительно находится в текущем рабочем каталоге приложения, без указания полного пути.
  • Приложение подготовлено для обработки ситуаций, когда найти библиотеку не удастся.
  • Злоумышленник знает об этом и контролирует текущий рабочий каталог приложения.
  • Он копирует собственную специально созданную версию библиотеки в текущий рабочий каталог. Предполагается, что у злоумышленника есть соответствующее разрешение.
  • Система Windows выполняет поиск библиотеки в соответствии с порядком поиска DLL и обнаруживает нужный файл в текущем рабочем каталоге приложения.

В этом сценарии специально созданная библиотека DLL запускается в приложении и получает права текущего пользователя. Для предотвращения описанной атаки можно удалить текущий рабочий каталог приложения из порядка поиска DLL. Для этого нужно вызвать функцию API SetDllDirectory с пустой строкой (""). Если приложение зависит от загрузки библиотеки DLL из текущего каталога, определите его расположение и используйте с функцией LoadLibrary полный путь. Известно, что некоторые разработчики используют функцию LoadLibrary для проверки наличия отдельных DLL с целью определения текущей версии Windows. Следует помнить, что это может сделать приложение уязвимым. Если соответствующая библиотека в действительности отсутствует в среде Windows, в которой выполняется приложение, злоумышленник может поместить в текущий рабочий каталог библиотеку с таким же именем. Если приложение загружает подключаемые модули сторонних компаний и не может использовать полный путь к ним при вызовах функции LoadLibrary, следует удалить текущий рабочий каталог из порядка поиска DLL с помощью функции SetDllDirectory(""), а затем добавить в порядок поиска каталог установки подключаемого модуля с помощью функции SetDllDirectory("каталог_установки_модуля").

 

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

A: В примере кода ниже приложение выполняет поиск библиотеки «schannel.dll», используя наименее безопасный путь поиска. Если злоумышленник поместит библиотеку с таким именем в текущий рабочий каталог, она будет загружена еще до того, как приложение выполнит поиск нужного файла в каталогах Windows.

DWORD retval = SearchPath(NULL, "schannel", ".dll", err, result, NULL);
HMODULE handle = LoadLibrary(result);

В примере кода ниже приложение пытается загрузить библиотеку из разных расположений приложения и операционной системы, описанных в начале данного документа, с помощью функции LoadLibrary(). Если нужный файл отсутствует, приложение может попытаться загрузить его из текущего рабочего каталога. В этом примере уровень риска немного ниже, чем в предыдущем.

HMODULE handle = LoadLibrary("schannel.dll");

 

Q: А есть ли тулзы, позволяющие отыскать вызовы небезопасных функций загрузки библиотек?

A: Мама-Microsoft зарелизила приложение Process Monitor, которое позволяет разработчикам и администраторам тщательно отслеживать поведение выполняемого процесса. С помощью средства Process Monitor (http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx) можно динамически определять, уязвимы ли приложения для описанных атак. Попробуй запустить приложение, используя определенный каталог в качестве текущего рабочего. Например, дважды щелкни файл с расширением, обработчик которого назначен данному приложению.
Далее необходимо настроить фильтры средства Process Monitor – задай все, как показано на скриншоте. Факт использования уязвимого сразу пути будет отображен программой.

К тому же разработчик Metasploit разработал на Ruby довольно простую утилиту DLLHijackAuditKit (http://bit.ly/DLLHijackAuditKit) для автоматизированного поиска уязвимых приложений. Запускается он следующим образом:

  • распаковываем архив DLLHijackAuditKit;
  • копируем в эту же директорию procmon.exe (это бинарник Process Monitor);
  • устанавливаем интерпретатор Ruby (ruby-lang.org).

Далее через «Пуск» выбираем «Start Command Prompt with Ruby», переходим в директорию DLLHijackAuditKit. Теперь запускаем «audit.bat» и готовимся закрыть множество всплывающих окон! После того, как программа сделает все итерации, необходимо будет экспортировать CSV-лог из ProcMon’а. После этого остается проверить полученные результаты с помощью специального скрипта. Для этого переходим в директорию DLLTest и запускаем там скрипт «ruby generate.rb».

 

Q: Как распознать скрытое сканирование Nmap?

A: Метод скрытого сканирования Nmap используется в том случае, когда нужно скрыть сам факт сканирования. Методика использует нестандартные комбинации флагов TCP-пакетов, поэтому системный журнал редко такое сканирование фиксирует. Если по каким-то (вероятно, параноидальным) причинам ты все-таки хочешь отлавливать подобные прецеденты, это легко делается с помощью firewall’а. В инете можно найти следующие варианты:

iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j LOG --log-prefix "Stealth scan"
iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP

Параметры «—tcp-flags ACK,FIN FIN» описывают комбинацию TCP-флагов. Первый список состояний (ACK,FIN) указывает флаги, которые надо проверить, второй (FIN) проверяет, какие из них установлены. Таким образом, условие соответствует тем пакетам, в которых есть FIN-флаг, но нет ACK. При нормальном TCP-соединении эта комбинация невозможна, что свидетельствует о скрытом сканировании.

 

Q: Можно ли разбить флешку на несколько дисков?

A: Основная проблема в том, что Windows считает: раз это флешка, то у нее может быть только один раздел. Даже если поделить каким-нибудь независимым от винды средством вроде GParted (LiveCD на базе Linux’а), то в системе будет определяться только один из разделов. Одно из решений проблемы – заставить систему определять пендрайв не как флешку, а как сменный жесткий диск. Для этого контроллер флешки нужно перевести в режим HDD, в чем в большинстве случаев может помочь утилита BootIt. Увы, под Vista/Windows7 она по умолчанию не работает, поэтому запускать ее придется в режиме совместимости. Больших знаний и умений она не требует: достаточно выбрать из списка букву нужной флешки и нажать на кнопку «Flip Removable Bit». После этого тулза попросит вытащить флешку и вставить ее обратно. Вуаля, если открыть любым менеджером разделов (скажем, через «Управление дисками» в системе), то мы сможем поделить накопитель на несколько разделов. Правда, стоит заметить, что с некоторыми флешками такой фокус все-таки не проходит.

 

Q: Как бы ускорить выполнения кода на Python? Есть скрипт, которые обрабатывает данные. Написал его быстро, а работает он медленно. Есть ли способ увеличить скорость?

A: Есть. Проект Psyco (psyco.sourceforge.net) показывает, что выполнять код на Python можно на скорости, сравнимой с полностью компилируемыми языками. В результате использования специального модуля на i386 процессорах можно добавиться 2-100-кратного увеличения производительности, в зависимости от кода.

 

Q: Составляю подборку для изучения вредоносных PDF-файлов. Подскажи инструменты.

A: Вот список:

  • PDFiD (blog.didierstevens.com/programs/pdf-tools) – определяет, если PDF-документ содержит строку, ассоциированную со скриптами или действиями;
  • PDF-parser – выявляет ключевые элементы PDF без рендеринга документа (и соответственно возможности заражения);
  • Origami Walker (security-labs.org/origami) – изучает структуру PDF-файла;
  • Origami pdfscan – определяет подозрительные строки;
  • Origami extractjs и Jsunpack-n’s pdf.py – извлекает JavaScript-код из PDF-файлов;
  • Sumatra PDF (blog.kowalczyk.info/software/sumatrapdf) и MuPDF (ccxvii.net/mupdf) – альтернативные просмотрщики, в которых сплоит, возможно, не заработает;
  • Malzilla (www.malzilla.org) – извлекает и декомпрессирует потоки из PDF, а также может быть полезен для деобфускации JavaScript-кода;
  • Jsunpack-n (jsunpack.blogspot.com/2009/06/jsunpack-n-updates-for-pdf-decoding.html) – извлекает и декодирует JavaScript из PCAP-дампов-снифера, а также декодирует PDF-файлы.
 

Q: Есть ли возможность, обращаться к сервисам Google из командной строки? Хочу автоматизировать скачивание фотографий c Picasa Web.

A: Да, совсем недавно появился пакет googlecl (code.google.com/p/googlecl), позволяющий обращаться к сервисам гугла из командной строки. Примеры использования:

Сервис блогов Blogger:

$ google blogger post --title "foo" "command line posting"

Календарь Calendar:

$ google calendar add "Lunch with Jim at noon tomorrow"

Контакты Contacts:

$ google contacts list name,email > contacts.csv

Google Docs:

$ google docs edit --title "Shopping list"

Хранилища фотографий Picasa:

$ google picasa create --title "Cat Photos" ~/photos/cats/*.jpg

Видеохостинг Youtube:

$ google youtube post --category Education killer_robots.avi

Все эти консольные утилиты работают через Google Data API и доступны как для Windows, так и Linux.

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

Check Also

Плохая логика. Выполняем произвольный код в популярном сервере приложений Oracle WebLogic

Новая уязвимость в Oracle WebLogic позволяет выполнять произвольные команды на целевой сис…