Раздел: Документация
0 ... 6 7 8 9 10 11 12 ... 102 fAeqajvS!pOflTH0r0 внедРения вирусов Ниже в качестве примера приведен фрагмент вируса I-Worm.Kiliez.e, на малоизвестное™ которого жаловаться не приходится (Вах! Как трудно взглянуть на дамп того, что вы запускаете!) (листинг 1.1). Текстовые строки, содержащиеся в теле I-Worm.Kiliez.e, выдают агрессивные намерения последнего с головой! Листинг 1.1- Фрагмент вируса I-Worm.Kilez.e data:0040Е048 aQui:db QUIT .OQh.OAh.C data:0040E05Cdb . .ODr.OAh.O data:0040E058 aDacadb DATA .0D1.OAh.0 data:0040E060 aHeloSdb HELO %s.ODh.OAh.O data: 0040E06C asc 40db >-.ODh.OAn.0 data:0040E070 aMailFromdb MAIL FROM: <\0 data:004CE080 aRcptTodb RCPTTOiV.O data:0040F244 aSoftwareMicrosdb Softwa~e\№crosoft\Hindows\CurrentVersion\ .0 data:004CF279 aRundbRun.C data:0040F27D aRunoncedb RunOnce.O data:0040F285 aSystemCurrentcdb "SystemXCurrentControlSetVServices" .0 data:0040F2A7 aSoftwareMicr 0db Software\№crosoft\WAB\WAB4\Wab File Name.O data:0C40F2Dl aRunservicesdb RunServices.0 data-.0040F2DD alnternetSettindb Internet Settings\CacHe\Pa№s.0 data:0040F302 aHidb Hi..O data: 0040F306 aHel 1 оdb Hel 1 о.. 0 data:0040F30D aRedb Re: .0 data:0040F311 aFwdb Fw: .0 data-.0040F315 aUndeliverableMdb Undel iverable mail-"Ss" .0 data:0040F32E aReturnedMai ISdb Returned mail-s".0 ИДЕНТИФИКАЦИЯ УПАКОВЩИКА И АВТОМАТИЧЕСКАЯ РАСПАКОВКА Упаковка исполняемых файлов «навесными» упаковщиками была широко распространена еще во времена господства MS-DOS и преследовала собой следующие пели: • Уменьшение размеров программы на диске; сокрытие текстовых строк от посторонних глаз; затруднение анализа программы; *°слеиление» сигнатурного поиска. Упа "°След,1их пункта стоит отметить особо. Напрямую дизассемблировать ся с Ванную программу нельзя. Прежде исследователю предстоит разобрать-Л)е11УПаковШиком, зачастую основанным на весьма нетривиальном алгорит-чИков°ДеРЖа,ЦИМ °°льшое количество разнообразных приемов против отлад-(чап И/,ИЛ11 Дизассемблеров. Также существуют и полиморфные упаковщики ИдедИМеР Elock), генерирующие машинный род распаковщика на «лету» ЖиМиаЮЦИе зашифрованные экземпляры одной и той же программы не похо-ДрУг на друга. Для борьбы с упаковщиками было создано большое количество автоматических распаковщиков, работающих по принципу трассировки исполняемого кода и отслеживания момента передачи управления на оригинальный код. Для борьбы с антиотладочными приемами использовалась технология эмуляции процессора, обхитрить которую было не так-то просто, хотя все-таки возможно, ц0 на этот случай в некоторых из распаковщиков был предусмотрен режим руц. ной распаковки, в котором распаковывалось все, что только было можно распаковать. С переходом на Windows многое изменилось. Количество упаковщиков резко возросло, но ни одного универсального распаковщика до сих нор так и не появилось, а потому анатиз упакованных файлов представляет собой одну из актуальнейших проблем современной антивирусной индустрии. ПРИМЕЧАНИЕ--- Если при дизассемблировании исследуемого файла большую часть исполняемого кода дизассемблер представил в виде дампа или выдал на выходе бессмысленный мусор (неверные опокоды команд, обращения к портам ввода/вывода, привилегированные команды, несуществующие смещения и т. д.), то файл, скорее всего, упакован и/или зашифрован. Зачастую расшифровщик крайне примитивен и состоит из десятка-другого машинных команд, смысл которых понятен с первого взгляда. В таком случае распаковать файл можно и самостоятельно. Для этого вам даже не придется выходить из дизассемблера — всю работу можно выполнить и на встроенном языке (если, конечно, ваш дизассемблер поддерживает такой язык). Для расшифровки простейших «ксорок» хорошо подходит HIEW, а задачи посложнее решаются с помощью IDA (листинг 1.2). Подробное изложение методики расшифровки исполняемых файлов вы найдете в книге Криса Каснерски «Образ мышления — дизассемблер IDA». Листинг 1.2. Пример типичного «ксорного» расшифровщика с комментариями
Если же код расшифровщика но своей дремучести напоминает непроходимый таежный лес, у исследователя есть все основания считать, что подопытная программа упакована одним из навесных упаковщиков, к которым, в частности, принадлежат ASPack, UPX, NeoLite н другие. Отождествить конкретный упаковщик при наличии достаточного опыта можно и самостоятельно (даже полиморфные упаковщики легко распознаются визуально, стоит только столкнуться с ними три-пять раз кряду), а во всех остатьных случаях вам помогут ВНИМАНИЕ-—- Установка программной точки останова с кодом CCh в подавляющем большинстве случаев приведет к краху распаковщика, для предотвращения которого следует воспользоваться аппаратными точками останова; за подробностями обращайтесь к руководству пользователя вашего отладчика, в частности, в soft-ice установка аппаратной точки останова осуществляется командой ВРМ адрес X. pe-scan:: msbJast.exe ! detected.: signage LI 3EZL op&ns gut Рис. 1.2. РЕ-SCAN в действии А как быть, если РЕ-SCAN не сможет определить оригинальную точку входа или ни один из найденных вами распаковщиков не справляется с данным файлом? Если исследуемый файл хотя бы однократно запускался (то есть ваша Машина уже потенциально заражена), можно взять procdump (http://proc-dump32.cjb.net) и, запустив распаковываемый файл еще раз, снять с него полный дамп памяти (task ► имя процесса ► dump fill). Конечно, чтобы полученный Дамп превратился в полноценный РЕ-файл, над ним придется как следует поработать, но для дизассемблирования сойдет и так. Шансы распаковать файл без его запуска средствами procdump относительно невелики, да и качество Распаковки оставляет желать лучшего. Зачастую распакованный файл не пригоден даже для дизассембл ирования, не то что запуска! 1 Упаковщик UNPX также содержит в себе п распаковщик, хотя это скорее исключение, чем "Равило. специальные сканеры, самым известным (и мощным!) из которых является бесплатно распространяемый РЕ-SCAN (http://k-Iine.cjb.netytools/pe-scan.zip). Давайте возьмем файл с вирусом Worm.Win32.Lovesan (также известный под именем MSblast) и «натравим» на него РЕ-SCAN (рис. 1.2). Сканер тут же сообщит, что вирус упакован упаковщиком UPX, который можно скачать с сервера upx.sour-ceforge.net а при нажатии на кнопку ОЕР определит и адрес оригинальной точки входа в файл (в данном случае она равна HCBh). Ну, коль скоро мы знаем имя упаковщика, найти готовый распаковщик не составит больших проблем («UPX» + «ипраск» в любом поисковике)1. Вместе с тем. знание оригинальной точки входа в файл позволяет установить на этот адрес точку останова, и тогда в момент передачи управления только что распакованному файлу отладчик немедленно отреагирует. 0 ... 6 7 8 9 10 11 12 ... 102
|