• Немного на тему разработки веб-архивов

      Веб-архив — это система, которая периодически сохраняет сайт (или часть сайта) в его оригинальном виде. Чаще всего это делается для потомков, чтобы они могли «поиграться, покликать и поностальгировать».

      Основное требование к веб-архиву звучит просто и всеобъемлюще.

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


      Для нас, разработчиков, выражение «полнофункциональная офлайн-версия» звучит очень, очень подозрительно. Можно даже сказать — крамольно звучит. Ведь современный сайт без скриптов не бывает, а скрипты всегда порождают неопределенность в поведении. Но, как говаривал один персонаж: «Не нужно спешить с выводами, не то выводы на тебя набросятся».

      Читать дальше →
    • Дело о пропавшем индексе

        Дело, конечно, не такое интересное, как у Руссиновича, но, надеюсь, будет полезно некотроым разработчикам. Основная цель изложения — показать средства, с помощью которых мы можем анализировать поведение программы на самом низком уровне.

        Итак, имеется приложение, написанное на C#, которое использует .net framework 1.1 (да-да). Приложение после некоторых внесенных изменений начало выбрасывать такое малоинформативное исключение:
        Читать дальше →
      • Мал, да удал: Trojan-Downloader.Win32.Tiny

          Доброго дня всем.
          В сегодняшнем выпуске много технических подробностей. Так что уж извините, если их слишком много :)

          Письмо


          Итак, начинаем. На входе у нас письмо с текстом «Journalist shot in Georgia! See attached video. Password is 123» и с приложенным файлом «Georgia.zip».

          Для более или менее полного анализа нам понадобятся:
          — Самый Лучший дизассемблер в мире IDA
          — Неплохой Отладчик Windbg
          — python 2.5 (строго говоря, подойдет любой, просто у меня 2.5)
          — Visual Studio какая-нибудь и Microsoft SDK, чтобы собрать небольшую программу на с++.
          — упаковщик программ upx
          — ну и чего-то еще по мелочи.

          Распаковываем присланный нам файл, и видим, что наши подозрения оправданы: видео там и рядом не ночевало.
          joined.exe (md5:607af96b03addadf28cf9280701df191)
          Dr.Web: Trojan.Packed.151
          Kaspersky: Trojan-Downloader.Win32.Agent.abqe
          

          Читать дальше →
        • Trojan-Dropper.Win32.Agent.rek: «легальный» руткит

            В заметке описывается драйвер, который загружается вирусом, рассмотренным в предыдущей части. Драйвер работает на уровне ядра операционной системы, и обеспечивает «привилегированное» прикрытие основной функциональности трояна, которая работает в режиме пользователя (авторское название компоненты — winnt32.dll. Подробнее о ней см. habrahabr.ru/blog/virus/43787.html).

            Краткое описание.
            Программа представляет собой nt-драйвер (так же известны, как legacy-драйвера, то есть не связанные ни с каким физическим устройством). Является руткитом: используя механизмы ядра ОС, лишает другие программы доступа к некоторым файлам и ключам реестра.
            Детектируется касперским как Trojan-Dropper.Win32.Agent.rek. Размер 27548 байтов.
            Лирическое отсутпление. «Обычный» руткит может использовать недостатки в реализации ОС для сокрытия объектов: файлов, сетевых соединений, и так далее вплоть до секторов жесткого диска. Для этого в простейшем случае делается перехват системного вызова. Системный вызов по сути — это вызов функции, а вызов функции — это передача управления по указанному адресу. Руткит записывает по этому адресу свой код, который трансформирует результат оригинальной функции. К примеру, проверяет, пытается ли кто-то открывать файл с телом вируса, и возвращает какой-нибудь код ошибки, например «доступ заперещен».
            Руткит перехватывает обращения с реестру и файлам, используя легальные методы самой ОС.
            Читать дальше →