Содержание статьи
- Q: Меня часто разные люди спрашивают: как восстановить случайно удаленный файл? Не знаю, что отвечать. Ведь не рекомендовать же чайникам — R-Studio. Инструмент отличный — спору нет, но он платный и требует некоторого понимания процесса. Подскажи, какая прога была бы понятна любой домохозяйке, удалившей файл и захотевшей его сразу восстановить. Без лишней возни и слез.
- Q: Хочу отреверсить протокол взаимодействия между компьютером и одним необычным устройством, подключенным к нему по USB. Как это сделать?
- Q: Как найти программу или процесс, которая блокирует некоторый файла в системе?
- Q: Слышал, что с помощью SSH можно получить доступ не только к консоли удаленной машины, но и к графическим приложениям. Подскажи, как это сделать?
- Q: Есть ли способ автоматически запустить авторан с USB-флешки (с произвольным exe-файлам), если в системе любой автозапуск грамотно отключен?
- Q: Есть ли способ синхронизировать документы Microsoft Office и Google Docs? Уж больно надоедает каждый раз их вручную заливать на сервер. Хочется использовать привычный «офис», но размещать документы в облачном хранилище от Google.
- Q: Есть ли способ узнать, какие Firefox расширения установлены на удаленном браузере пользователя?
- Q: По какой причине некоторые веб-приложения используют AJAX-ответы, в которых первой инструкцией являются бесконечные циклы вроде "while(1);" или "for(;;);". Для чего они нужны?
- Q: Какие основные проблемы могут возникнуть с долго выполняющимися PHP-процессами?
- Q: Существуют ли сейчас какие-то серьезные недоделки в веб-серверах, которые может эксплуатировать злоумышленник для усиления DDoS-атаки?
- Q: Подскажи прокси-сервер, который мог бы инъектировать в HTTP-трафик необходимые мне данные, а также модифицировать часть пакетов «на лету» по заданным правилам?
- Q: А какую программу в команде ][ использует в качестве дампера памяти?
- Q: Как работает репутационная система сайтов, которую один за другим сейчас реализуют различные производители антивирусов? При посещении любого сайта, у меня в браузере отображается рейтинг – «безопасный», «небезопасный», «требующий внимания».
Q: Меня часто разные люди спрашивают: как восстановить случайно удаленный файл? Не знаю, что отвечать. Ведь не рекомендовать же чайникам — R-Studio. Инструмент отличный — спору нет, но он платный и требует некоторого понимания процесса. Подскажи, какая прога была бы понятна любой домохозяйке, удалившей файл и захотевшей его сразу восстановить. Без лишней возни и слез.
A: Смею предположить, что домохозяйка, скорее всего, сидит под виндой. В этом случае самый идеальный вариант - бесплатная программа NTFS Undelete (www.ntfsundelete.com). Она не сильно отличается от какого-нибудь проводника: выбрав диск, Утилита быстро просканирует таблицы файловой системе и покажет все недавно удаленные файлы. Несколько кликов мыши - и выбранные данные будут восстановлены в указанное место. Конечно, это не профессиональный инструмент для восстановления данных (как тот же самый R-Studio), но в большинстве случаях, когда необходимо оперативно восстановить случайно удаленный файл, NTFS Undelete справится блестяще. Тут главное не забыть, что "трогать" диск, где находятся удаленные файлы, нельзя. Поэтому и устанавливать, и восстанавливать данные необходимо в какое-то другое место. Под Linux и MacOS, впрочем, как и под Windows, можно также воспользоваться утилитой PhotoRec (www.cgsecurity.org).
Q: Хочу отреверсить протокол взаимодействия между компьютером и одним необычным устройством, подключенным к нему по USB. Как это сделать?
A: Понятно, что единственный способ - изучить данные, которые передаются между компьютером и устройством. Для этого есть специальные программы-сниферы. Например, USBTrace (www.sysnucleus.com) или USB Monitor (www.hhdsoftware.com). Обе утилиты умело мониторят все транзакции с хост-контроллером, USB-хабами и девайсами. Если по какой-то причине из чистого любопытства или с конкретной целью (например, реверсинга) ты хочешь узнать, как происходит обмен данными между подключенным к компьютеру устройством и операционной системой (а вернее, соответствующим драйвером), то данные утилиты - то, что доктор прописал. Аналогичный инструмент, к слову, был использован для реверсинга нового гаджета от Microsoft – Kinect. На основе отснифанных данных был разработан открытый драйвер OpenKinect (openkinect.org).
Q: Как найти программу или процесс, которая блокирует некоторый файла в системе?
A: Для этого стоит взять на вооружение программу Process Explorer из набора системных утилит Марка Руссиновича. С ее помощью для любого процесса можно получить список DLL и хэндлов, которые с ним связаны. Но самое полезное в нашей ситуации - это функция поиска. Чтобы выяснить, кто блокирует файл, достаточно ввести часть его пути и таким образом найти все процессы, которые работают с подходящими по маске объектами в системе.
Q: Слышал, что с помощью SSH можно получить доступ не только к консоли удаленной машины, но и к графическим приложениям. Подскажи, как это сделать?
A: Да, действительно есть такая возможность. Допустим, у нас есть удаленный комьютера с Linux и машина с Windows.
- Прежде всего, надо сконфигурировать ssh-демон на удаленной машине для форвардинга X11: для этого достаточно прописать в конфиге /etc/ssh/sshd_config строчку "Ensure X11Forwarding yes".
- После этого устанавливаем на Windows-машине локальный Х-сервер, например, Xming (www.straightrunning.com/XmingNotes). Запускаем его и переходим в настройки, где находим раздел "Display". Здесь необходимо установить параметр "Multiple windows and set the Display" равным нулю.
- Далее понадобится любимый нами SSH-клиент PuTTY. Запускаем его и переходим в настройки "Connection > SSH > X11". Включаем опцию "Enable X11 forwarding" и в поле "X display location" указываем ":0.0".
- Все, теперь можно открывать новую сессию с удаленной машиной, как ты это делаешь при обычном подключении по SSH-протоколу. Логинемся в систему и через консоль пробуем запустить GUI-приложения (например, Firefox). Все должно работать.
Q: Есть ли способ автоматически запустить авторан с USB-флешки (с произвольным exe-файлам), если в системе любой автозапуск грамотно отключен?
A: Самым прогрессивным способом, который был представлен на последнем Defcon'е является Teensy USB HID Attack Vector. Эта атака основывается на использовании гибрида обычной флешки и микроконтроллера, который эмулирует ввод с клавиатуры. Вернемся к нашим исходным данным: если автозапуск отключен, то обращения файлу autorun.inf во время монтирования флешки не происходит и код автоматически не выполняется. Новый подход обхода этого ограничения основывается на использовании крошечного USB-девайса, построенного на базе простого микроконтроллера, который определяется в системе как HID-устройство (Human Interface Device). Таким образом эмулируется необходимая последовательность нажатия клавиш и движения мыши, чтобы выполнить автозапуск. Слово «микроконтроллер» может испугать, но на сам деле заготовку (Teensy USB Board) можно приобрести всего за $18, а залить в нее необходимую программу не составит труда. Все подробности описаны на сайте bit.ly/programmable-hid-usb-keystroke-dongle.
Q: Есть ли способ синхронизировать документы Microsoft Office и Google Docs? Уж больно надоедает каждый раз их вручную заливать на сервер. Хочется использовать привычный «офис», но размещать документы в облачном хранилище от Google.
A: Я лично давно так и делаю, используя OffiSync (offisync.com). Это специальный плагин для Microsoft Office, который реализует именно то, что нужно – связывает между собой Microsoft Office и Google Docs. После установки в офисных приложения появляется новый тулбар, с помощью которого и реализуется синхронизация с серверами Google. Что это дает? Возможность обращаться к файлам, находящимся в облаке, и коллективно работать над документами с другими людьми в режиме реального времени. Кстати, в официальном блоге Google появилось сообщения, что компания сама близка к реализации аналогичного инструмента (рабочее название - Google Cloud Connect), но пока он находится в стадии закрытого тестирования. Для OpenOffice также есть похожее решение, я говорю о ooo2gd (code.google.com/p/ooo2gd). Последний умеет работать не только с Google Docs, но еще и сервисом Zoho (www.zoho.com), а также собственным WebDAV сервером (на случай, если не доверяешь сторонним сервисами).
Q: Есть ли способ узнать, какие Firefox расширения установлены на удаленном браузере пользователя?
A: Последний публичный баг в огненном лисе, который позволял выполнить такой fingerprinting, был исправлен еще в 2008 году. Суть используемой тогда техники хорошо описана исследователем из команды WhiteHat Security в него блоге (jeremiahgrossman.blogspot.com/2006/08/i-know-what-youve-got-firefox.html). Сейчас ни одного универсального способа определить установленные аддоны не существует. Я, конечно, не беру в расчет случай, когда сам плагин хочет стать видимым и, к примеру, добавляет в хедер User-Agent какой-то особый модификатор. Присутствие некоторых плагинов можно также выявить, если они особым образом модифицирует страницы и используют JavaScript API. Например, если в браузере клиента установлен популярный среди разработчиков плагин Firebug, то с большой вероятностью на странице будет создан JavaScript-объект console. Такие проверки могут быть использованы для прицельного определения конкретных установленных плагинов, но никак не тянут на полноценный вариант получения списка подключенных к браузеру аддонов.
Q: По какой причине некоторые веб-приложения используют AJAX-ответы, в которых первой инструкцией являются бесконечные циклы вроде "while(1);" или "for(;;);". Для чего они нужны?
A: Этот прием используется для того, чтобы избежать некоторых междудоменных атак (cross domain attacks). Для большей ясности вот пример атаки, которой помешает дополнительный «for/while» цикл в начале ответа. Предположим некий Вася залогинен на Facebook. Дальше Василий переход на сайт malware.com. Это не очень хороший ресурс, потому что в нем содержится опасный код:
<script src="facebook.com/ajax/friends.php" />
Соответственно, при посещении malware.com, Васин браузер отправит запрос сценарию friends.php, используя куки, которые для Васи создал в системе Facebook. Получается, malware.com мог бы получить доступ к списку Васиных друзей, но… Если поставить в начало AJAX-ответа бесконечный цикл, то выполнение malware.com попросту зависнет во время выполнения тега script, повернувшись «for/while» циклом. Но как тогда не зависает сам Facebook? Выполняя AJAX-запрос, он предварительно обрабатывает ответ и убирает оттуда первые несколько символов с опасной инструкцией. Сторонний ресурс вроде malware.com, в свою очередь, не может выполнить такую пост-обработку, потому что использует функцию XMLHTTPRequest между доменами.
Q: Какие основные проблемы могут возникнуть с долго выполняющимися PHP-процессами?
A: Управление памятью в PHP не очень сложное, но... Поймать утечку памяти очень просто. Среда не занимается каким-либо уплотнением памяти (это специальные приемы, используемые для перемещения информационных блоков в основной памяти для обеспечения максимального свободного пространства в памяти), так что тебе придется заниматься фрагментацией самому. К тому же у PHP весьма ограниченные возможности по контролю над распределением и освобождением памяти. Проблемы могут возникнуть также из-за дырявых модулей, хотя это вряд ли уникально именно для PHP.
Q: Существуют ли сейчас какие-то серьезные недоделки в веб-серверах, которые может эксплуатировать злоумышленник для усиления DDoS-атаки?
A: Увы, да. Исследователи Wong Onn Chee и Tom Brennan из организации OWASP недавно опубликовали статью (www.owasp.org/images/4/43/Layer_7_DDOS.pdf), в которой рассказали подробности реализации нового типа DDoS-атаки на веб-серверы. Самая большая угроза в этой атаке состоит в том, что проблема касается не каком-то конкретного веб-демона, а кроется непосредственно в HTTP-протоколе. Поэтому, чтобы полностью исправить ситуацию, скорее всего, придется внести поправки в сам протокол, а это, как понимаешь, крайне нежелательно. Так о какой атаке идет речь?
Атакующий устанавливает некоторое количество подключение с веб-сервером. Каждое из этих подключение содержит заголовок Content-Length, равным какому-то большому числу (например, Content-Length: 10000000). Таким образом, веб-сервер ожидает 10000000 байт для каждого такого коннекта. Трюк состоит в том, чтобы не отправлять все эти данные разом, а пересылать один символ за другом в течение долгого времени: скажем, по одному байту каждые 10-100 секунд). Это приведет к тому, что веб-сервер будет поддерживать подключения в течение долгого времени (до тех пор, пока не получить все данные). В это время доступ к веб-серверу для других клиентов будет ограничен. И больше того, они могут вообще остаться без возможности подключения, если пул возможных подключений будет занят.
Атаке подвержен любой сайт, который содержит формы, т.е. может принимать HTTP POST запросы. Впрочем, если речь идет об Apache, то в его случае это не является обязательным условием. Демон в любом случае уязвим. Разработчики сканнера безопасности Acunetix WVS написали скрипт (www.acunetix.com/blog/wp-content/uploads/post/2010/11/wvs-scripting1.png), который создает 256 сокетов и устанавливает TCP-подключение к веб-серверу, после чего, используя каждый из сокетов, начинает медленно отправлять данные (1 символ в секунду). Для атаки используется HTTP POST запрос на несуществующий файл (POST /aaaaaaaaaaaa HTTP/1.1). Уже через несколько секунд такого DDoS’а, веб-сервер начинает зависать. Авторы оригинально статьи утверждают, что для реализации атаки необходимо около 20000 подключений. Однако если посмотреть конфиг Apache'а несложно найти параметр MaxClients. По умолчанию он устанавливает 256 клиентов в качестве максимального лимита одновременных подключений. Делаем выводы.
Q: Подскажи прокси-сервер, который мог бы инъектировать в HTTP-трафик необходимые мне данные, а также модифицировать часть пакетов «на лету» по заданным правилам?
A: Можно попробовать использовать Sergio Proxy (spareclockcycles.org/downloads/code/sergio_proxy_v0.1.tar.gz). Код полностью написан на Python и работает только под линуксом.
Q: А какую программу в команде ][ использует в качестве дампера памяти?
A: Насколько мне известно, никто велосипед не изобретает и использует вполне привычные инструменты: LordPE и OllyDump. Для непонимающих о чем идет речь объясню: эти утилиты позволяют получить защищенный код, находящийся в памяти и сохранить его на диск. Это процедура особенно полезна, когда необходимо проанализировать упакованные exe-шники, которые кодируют и криптуют свои инструкции и извлекает их в ОЗУ только во время выполнения.
Q: Как работает репутационная система сайтов, которую один за другим сейчас реализуют различные производители антивирусов? При посещении любого сайта, у меня в браузере отображается рейтинг – «безопасный», «небезопасный», «требующий внимания».
A: В основе этого механизма лежит, прежде всего, статистическая система, которая анализирует переходы пользователей на определенные сайты. Плюс анализируется содержимое страницы. Если какой-то пользователь перешел на страничку, а там, к примеру, оказался код, загружающий трой, этот факт добавляется в базу антивируса. Соответственно, ресурс автоматически получает "красный" (опасный) рейтинг. Если же пользователи антивируса часто посещают страницу и она "чиста", ресурсу присваивается "зеленая" (безопасная) репутация. Чем больше пользователей антивируса соглашаются участвовать в этой программе (а разрешение всегда спрашивается), тем лучше работает система. Помимо этого, антивирусные компании сами обходят популярные сайты и проверяют их содержимое. Это выглядит примерно так. Есть достаточно мощный сервер, на котором запущено достаточно большое количество виртуальных машин. На виртуальной машине ставится непропатченный Windows XP, и эта виртуальная машина автоматически ходит на разные сайты. С чистой машины делается слепок. После посещения каждого сайта snapshot создается повторно – слепки сверяются между собой. Если с системой ничего не произошло, кроме обновления Temporary Internet Files (куписы, кэш и т.д.), стало быть, сайт чистый. Но если на компьютере появится какой-то файл или запись в реестре, ресурс отправляется в лабораторию для анализа. Чем чаще на сайт происходит посещение пользователями, тем выше он поднимается в очереди на сканирование. Соответственно сканирование наиболее популярных ресурсов осуществляется постоянно.
Данные о репутации сайтов доступны онлайн: Norton Safe Web (safeweb.norton.com), WOT (www.mywot.com), McAfee Site Advisor (www.siteadvisor.com). Последний особенно крут, потому что помимо непосредственно оценки сайта, ресурс выдает для опасных сайтов отчет, за что собственно они получили неприличный рейтинг. К примеру, для xakep.ru можно получить список файлов, которые антивирус считает опасными (их закачивали пользователи и потому они были просканированы). Более того, если кликнуть по одному из файлов - пускай это будет какой-нибудь файл-инсталлятор - сервис выдает сведения об изменениях в системе, которые происходят после его запуска. Нельзя не сказать и про еще одну фичу: Site Advisor строит схему связанных доменов, на которых отображает связи сайта и рейтинг прилинкованных с ним "соседей".