Содержание статьи
- Q: При анализе вредоносных файлов часто оказывается, что они зашифрованы. Можно ли как-то упростить процесс расшифровки, не прибегая к помощи отладчика?
- Q: У меня возникла такая проблема: в Linux необходимо объединить несколько существующих разделов в один без потери информации. Подскажи какоенибудь изящное решение.
- Q: Ковыряю полноэкранное DirectXприложение. Как обычно, ставлю бряки на определенные функции. Однако при срабатывании брейкпоинта не могу переключиться на отладчик, видно только замершее окно приложения. Что делать? Как можно отладить такую программу?
- Q: Подскажи какую-нибудь свежую технику для обфускации URL, которую пока знают не все спам-фильтры.
- Q: Уж очень увесист этот всеми любимый phpMyAdmin. Есть ли другой более простой и шустрый инструмент для управления MySQL на хостинге, который также можно залить на сервер как PHP-сценарий?
- Q: Как проще всего проверить, поддерживает ли удаленный веб-сервер SSL?
- Q: Браузер сохранил пароль для некоторого сайта и подставляет автоматически в форме авторизации (но в виде звездочек). Как его вытащить?
- Q: Хочу прикрутить к своему блогу продвинутую систему комментариев. Есть два критерия: возможность авторизации через различные популярные сервисы (OpenID, Facebook, Twitter и т.д.) и система рейтинга/голосования для комментов. Какие есть варианты?
- Q: Решил сделать апгрейд системы и вместо обычного SATA-винта поставил твердотельный накопитель SSD. Прирост производительности, как говорится, на лицо и заметен невооруженным глазом даже без запуска бенчмарков. Но теперь я переживаю за надежность системы. Ведь у SSD ограничено количество циклов чтения-записи.
- Q: Необходимо сделать из Pythonскрипта бинарник. Утилиты py2exe и py2app не подходят, потому как нужно кроссплатформенное решение. Подошел бы универсальный pyinstaller, но он не обновляется еще с прошлого года и не поддерживает свежие версии Python.
- Q: Есть ли такой LiveCD-дистрибутив, который бы можно было записать на флешку (и с нее, соответственно, загружаться), и который бы шифровал все рабочие файлы? А то как-то страшно потерять флешку со всеми своими рабочими документами. При этом постоянно приходится работать на чужих компьютерах, и без Linux’а мне не обойтись.
- Q: Есть задача: подключить данные с удаленного сервера (есть доступ по SSH) к машине под Windows. Желательно, чтобы файлы отображались в системе в виде отдельного логического диска. Как решить задачку?
- Q: Как запустить exe-бинарник, который находится в альтернативном потоке NTFS (ADS)?
- Q: Спрятал некоторые документы в альтернативных потоках NTFS. Но столкнулся с проблемой: не все приложения с ними совместимы. Скажем, из такого потока никак не открыть doc-документ или txt-файл с помощью Word’а. Есть способ обойти это ограничение?
Есть вопросы — присылай на faq@real.xakep.ru.
Q: При анализе вредоносных файлов часто оказывается, что они зашифрованы. Можно ли как-то упростить процесс расшифровки, не прибегая к помощи отладчика?
A: Ни для кого не секрет, что с помощью криптования малварь защищает себя от обнаружения и отладки. Утилиты, используемые вирусными аналитиками, давно начали обрастать функционалом для расшифровки исполняемых файлов. Возьмем, например, популярный hex-редактор Hiew. Если знать алгоритм для дешифрования файла, можно легко настроить Hiew для получения декриптованного бинарника. Чтобы с его помощью расшифровать данные, необходимо выделить блок зашифрованных данных с помощью клавиши «*», а потом нажать Alt+F3 (CryBlk). В появившемся окне необходимо описать алгоритм распаковки. Тут надо иметь в виду, что Hiew поддерживает ограниченный набор инструкций, список которых можно поглядеть в разделе «Crypt commands» в справочном файле. Написав код декриптора и нажав <F7>, мы получим расшифрованные данные. Часто малварь состоит из нескольких файлов, в этом случае код расшифровщика можно сохранить в файл и использовать для деобфускации остальных файлов. Для этого достаточно вернуться обратно в редактор вызовом <Alt+F3>, после чего нажать <F9>. Часто вирусы шифруют себя с помощью простого XOR и других типовых алгоритмов. В этом случае можно также воспользоваться встроенными в Hiew готовыми инструментами для расшифровки. Необходимо перейти в режим правки клавишей <F3>, нажать <F8> и указать ключ шифрования.
Q: У меня возникла такая проблема: в Linux необходимо объединить несколько существующих разделов в один без потери информации. Подскажи какоенибудь изящное решение.
A: Есть несколько вариантов для решения этой задачи. Один из них — aufs2. Эта файловая система реализует каскадно-объединенное монтирование для файловых систем. По умолчанию в состав ядра она не включена, так что для использования придется его перекомпилировать. Далее необходимо скачать с официального сайта (aufs.sourceforge.net) userspace-утилиты для работы с данной ФС.
Для примера возьмем два раздела: старый с кучей скачанных торрентов (/media/torrents) и новый на недавно приобретенном винте (/media/new_storage). Для того, чтобы эти два раздела были видны как один, выполняем следующую команду:
# sudo mount -t aufs none /media/
storage -o br:/media/torrents=rw:/
media/new_storage=rw,create=mfs,sum
Для большего понимания пройдемся по параметрам:
- br: ветка1=rw: ветка2=rw:… — список веток или, другими словами, смонтированных разделов, которые будут объединены в один;
- create=mfs — главный параметр, указывающий на то, что для записи будет выбираться та ветка, которая имеет больше свободного места;
- sum — указывает, что в утилитах типа df или pydf будет выводиться суммарный размер разделов и свободного места на них для объединенного раздела.
В /etc/fstab такая запись должна иметь вид:
none /media/storage aufs br:/
media/torrents=rw:/media/new_
storage=rw,create=mfs,sum 0 0
Если заморачиваться с компиляцией ядра неохота, всегда можно воспользоваться mhddfs, файловой системой пространства пользователя, работающей через fuse. Монтирование с ее помощью производится следующей командой:
# sudo mhddfs /media/torrents,/
media/new_storage /media/storage
-o default_permissions,allow_other
Какой из способов использовать — решать тебе.
Q: Ковыряю полноэкранное DirectXприложение. Как обычно, ставлю бряки на определенные функции. Однако при срабатывании брейкпоинта не могу переключиться на отладчик, видно только замершее окно приложения. Что делать? Как можно отладить такую программу?
A: Самый первый и самый простой вариант, который приходит в голову — удаленная отладка. В этом случае приложение будет выполняться на одном компьютере, а отладчик будет работать на другом. В таких ситуациях это особенно полезный прием. Покажу, как его провернуть на примере WinDbg.
Итак, запускаем WinDbg и выбираем бинарник. Отладчик запускает его и останавливается, ожидая дальнейших команд. В командной строке набираем «.server tcp:port=1111» (или любой порт на твой выбор). После чего мы можем удаленно отлаживать приложение с другой машины. Для этого, опять же, надо запустить WinDbg, выбрать «File - Connect to Remote Session...», ввести «Connection String» вида «tcp:server=Server ,port=Socket», где в качестве Server указать адрес машины с отлаживаемым приложением, а в качестве Socket — выбранный ранее порт сервера (в нашем случае — 1111). Все, после этого можно удаленно отлаживать приложение.
Q: Подскажи какую-нибудь свежую технику для обфускации URL, которую пока знают не все спам-фильтры.
A: Одним из последних трендов является использование так называемого «мягкого дефиса» — Soft Hyphen (SHY). Этот специальный символ отображается так же, как и обычный дефис, но имеет некоторые особенности в обработке. В стандарте HTML4 мягкий дефис проставляется в странице с помощью слова «», но обрабатывается разными браузерами и почтовыми программами по-разному. В этом и заключается трюк. Многие браузеры и почтовые клиенты его игнорируют. Поэтому в любой линк можно вставить символы «», и они вообще не будут восприниматься. Обфусцированная с помощью «» ссылка отображается пользователю как самый обычный URL-адрес, который ведет на зловредную веб-страницу. Но при этом спам-фильтры пока как-то вяло реагируют на подобный трюк.
Q: Уж очень увесист этот всеми любимый phpMyAdmin. Есть ли другой более простой и шустрый инструмент для управления MySQL на хостинге, который также можно залить на сервер как PHP-сценарий?
A: Я давно использую и всем часто рекомендую Adminer (это бывший phpMinAdmin), который также написан на PHP и позволяет выполнять огромное количество действий с MySQL-базой данных. Скрипт распространяется в виде единственного PHP-файла, который быстро заливается на любой хостинг. Так что развернуть Adminer на удаленной системе гораздо проще, чем phpMyAdmin. Понимаешь, куда я клоню? :). Более того, на сайте www.adminer.org доступны версии не только для «майскуля», но еще и PostgreSQL, SQLite, MS SQL и Oracle.
Q: Как проще всего проверить, поддерживает ли удаленный веб-сервер SSL?
A: Проще всего использовать готовый сценарий gotssl (mjc.me/?p=188). Это очень простой скрипт, в котором используется класс socket. Автор проштудировал RFC SSL протокола и с помощью Wireshark'а посмотрел, что передается между браузером и веб-сервером в случае SSL-подключения. В результате получился сценарий, который отправляет специальную последовательность «SSLv2 Client Hello data» и проверяет наличие TLS-заголовка в ответе. Работает gotssl из командной строки:
bash# ./gotssl.py google.com 443
-{ GotSSL? v0.1 }[*] Checking for SSL on google.
com:443
[!] Yes! google.com:443 does
GotSSL.
Q: Браузер сохранил пароль для некоторого сайта и подставляет автоматически в форме авторизации (но в виде звездочек). Как его вытащить?
A: Для любого браузера есть специальные утилиты, позволяющие извлечь сохраненные пароли. Но существует еще один путь — воспользоваться специальным JS-скриптом, который прямо на странице отобразит данные, спрятанные под «*».
Трюк на самом деле старый, но многими почему-то забытый. Итак, открываем страницу, на которой сохранен пароль, и далее копируем в адресную строку браузера следующий код:
javascript:(function(){var
s,F,j,f,i; s = ""; F = document.
forms; for(j=0; j<F.length; ++j) {
f = F[j]; for (i=0; i<f.length; ++i)
{ if (f[i].type.toLowerCase() ==
"password") s += f[i].value + "n";
} } if (s) alert("<span id="IL_AD7"
class="IL_AD">Passwords</span> in
forms on this page:nn" + s); else
alert("There are no passwords in
forms on this page.");})();
Отправляем запрос и получаем страницу с сохраненными паролями, которые отображаются в открытом виде.
Q: Хочу прикрутить к своему блогу продвинутую систему комментариев. Есть два критерия: возможность авторизации через различные популярные сервисы (OpenID, Facebook, Twitter и т.д.) и система рейтинга/голосования для комментов. Какие есть варианты?
A: Сами недавно столкнулись с такой проблемой, когда прикручивали новую систему комментариев для нашего сайта с анонсами диска (dvd.xakep.ru). Оказалось, что проще всего решить проблему с помощью стороннего сервиса. Есть две конкурирующие системы комментирования: IntenseDebate (www.intensedebate.com) и DISUS Comments (disqus.com).
Обе легко подключаются к блоггерским движкам вроде WordPress'а (с помощью плагина) и блог-сервисам, после чего предлагают ряд полезных фишек:
- древовидную система комментариев;
- систему голосования для комментов (нравится/не нравится);
- аватары и профили пользователей;
- авторизацию через сторонние сервисы (OpenID, Twitter и т.д.).
Системы реализованы максимально просто: необходимо лишь завести аккаунт, подключить к движку плагин и прописать в нем логин и пароль для доступа. Если блог уже некоторое время существовал, необходимо импортировать старые комментарии. Вот здесь могут возникнуть некоторые сложности. В нашем случае пришлось разобраться с MySQL-базой, в которой почему-то оказались ошибки. До этого момента сценарий для импортирования комментариев Intense Debate банально зависал.
Q: Решил сделать апгрейд системы и вместо обычного SATA-винта поставил твердотельный накопитель SSD. Прирост производительности, как говорится, на лицо и заметен невооруженным глазом даже без запуска бенчмарков. Но теперь я переживаю за надежность системы. Ведь у SSD ограничено количество циклов чтения-записи.
A: На самом деле опасаться нечего. Да, некоторые ограничения есть, но ресурс у любого твердотельного накопителя очень большой. Но чтобы не расходовать его понапрасну, необходимо выполнить некоторую настройку системы. Есть множество типовых рекомендаций по оптимальной настройке ОС для продления срока эффективной работы SSD-накопителей. Несмотря на это, даже со знанием дела придется потратить немало времени на поиск и изменение соответствующих параметров, разбросанных по разным местам интерфейса и реестра Windows.
Чтобы облегчить по оптимизации, энтузиасты и создали утилиту SSD Tweak Utility (www.techspot.com/guides/246-ssd-performancetweakutility). Прога обеспечивает быстрый доступ к параметрам службы индексации винды и службы восстановления системы.
Также поддерживается включение сверхбольшого системного кэша (Use Large System Cache), отключение имен файлов в формате 8.3, отключение установки меток даты/времени для измененных файлов и отключение трассировки загрузки, а также всех видов дефрагментации. Помимо этого рекомендую также установить утилиту Intel SSD Toolbox (www.intel.com/go/ssdtoolbox), позволяющую управлять различными параметрами работы накопителя (если он произведен компанией Intel) и просматривать диагностические данные (для SSD любых производителей).
Q: Необходимо сделать из Pythonскрипта бинарник. Утилиты py2exe и py2app не подходят, потому как нужно кроссплатформенное решение. Подошел бы универсальный pyinstaller, но он не обновляется еще с прошлого года и не поддерживает свежие версии Python.
A: Рекомендую попробовать cx_Freeze (cx-freeze.sourceforge.net). Проект активно развивается (в отличие от pyinstaller), и отлично справляется с конвертированием скриптов в бинарники как для Windows, так и для Linux-платформы. На официальном сайте есть инсталляторы для Windows и CentOS -платформ, а также исходники. Важно выбрать сборку cx_Freeze, соответствующую установленной версии интерпретатора Python.
Q: Есть ли такой LiveCD-дистрибутив, который бы можно было записать на флешку (и с нее, соответственно, загружаться), и который бы шифровал все рабочие файлы? А то как-то страшно потерять флешку со всеми своими рабочими документами. При этом постоянно приходится работать на чужих компьютерах, и без Linux’а мне не обойтись.
A: Можно попробовать использовать CloudUSB (www.cloudusb.net). Это основанный на последней версии Ubuntu дистрибутив, использующий файловую систему EncFS, которая прозрачно шифрует данные с помощью AES и BlowFish. А чтобы не оставить свои файлы в каком-нибудь компьютере в универе (и, скорее всего, безвозвратно их потерять), CloudUSB автоматически заливает их через инет в облачное (отсюда и название дистриба) хранилище Dropbox. Тут надо отметить, что в «облаке» данные также хранятся в криптованном виде.
Q: Есть задача: подключить данные с удаленного сервера (есть доступ по SSH) к машине под Windows. Желательно, чтобы файлы отображались в системе в виде отдельного логического диска. Как решить задачку?
A: Одной из самых продвинутых программ является ExpanDrive (www.expandrive.com), которая раньше называлась SFTP Drive. Помимо этого можно использовать Dokan SSHFS (www.dokan-dev.net). Можно также попробовать AnyClient, который является кроссплатформенным клиентом для протоколов FTP/S, SFTP и WebDAV/S. А при небольшой настройке винды удаленную файловую систему можно смонтировать и с помощью обычного PyTTY. Для этого придется выполнить несколько шагов, описанных в подробной инструкции (www.damtp.cam.ac.uk/user/jp107/xp-remote/ssh-map).
Q: Как запустить exe-бинарник, который находится в альтернативном потоке NTFS (ADS)?
A: Для запуска исполняемых файлов необходимо использовать команду «start» или «wmic processs call create», указав в качестве параметра полный путь до бинарника, который находится в альтернативном потоке NFS.
Q: Спрятал некоторые документы в альтернативных потоках NTFS. Но столкнулся с проблемой: не все приложения с ними совместимы. Скажем, из такого потока никак не открыть doc-документ или txt-файл с помощью Word’а. Есть способ обойти это ограничение?
A: Под Windows 7 есть отличный вариант — использовать символические ссылки. Для эксперимента попробуем создать файл в альтернативном потоке NTFS:
C:\temp>echo tst > maindoc.txt
C:\temp>echo ads > maindoc.txt:ads.txt
Теперь открываем файл «c:\temp\maindoc.txt:ads.txt» Word’ом... ничего не выходит.
Что ж, придется создавать симлинк:
C:\temp>mklink txtfile c:\temp\maindoc.txt:ads.txt
symbolic link created for txtfile
<<===>> c:\temp\maindoc.txt:ads.txt
Теперь в качестве файла для открытия указываем не полный путь, а симлинк (c:\temp\txtfile), и убеждаемся, что Word отлично открывает документ. Возвращаясь к предыдущему вопросу, хочу заметить, что символические ссылки легко могут быть использованы и для запуска exe’шников. В этом случае уже не надо использовать вспомогательные команды вроде «start». Но тут, опять же, не надо забывать, что символические ссылки появились только в Windows 7.