Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Функции работы с потоками недокументированы и доступны только через Native-API. Это NtCreateFile, NtQuery EaFile и NtSetEaFile, описание которых можно найти, в частности, в книге «The Undocumented Functions Microsoft Windows NT/2000» Tomasz Nowak, электронная копия которой может быть бесплатно скачана с сервера NTinterlnals.net.
Создание нового потока осуществляется вызовом функции NtCreateFile, среди прочих аргументов принимающий указатель на структуру FILE_FULL_EA_INFORMATION, передаваемый через EaBuffer. Вот она-то нам и нужна! Как вариант можно воспользоваться функцией NtSetEaFile, передав ей дескриптор, возвращенный NtCreateFile, открывающей файл обычным образом. Перечислением (и чтением) всех имеющихся потоков занимается функция NtQueryEaFile. Прототипы всех функций и определения структур содержатся в файле NTDDK.H, в котором присутствует достаточное количество комментариев, чтобы со всем этим хозяйством разобраться, однако до тех пор, пока Windows 9x не будет полностью вытеснена с рынка, подобная техника внедрения, судя по всему, останется невостребованной.
Идентификация пораженных объектов. По непонятным маркетинговым соображениям штатные средства Windows не позволяют просматривать расширенные атрибуты файлов, мне также неизвестна ни одна утилита сторонних производителей, способная справиться с этой задачей, поэтому необходимый минимум программного обеспечения приходится разрабатывать самостоятельно. Наличие посторонних потоков внутри файла однозначно свидетельствует о его зараженности.
Другой, не менее красноречивый признак внедрения, – обращение к функциям NtQueryEaFile/NtSetEaFile, которое может осуществляться как непосредственным импортом из NTDLL.DLL, так и прямым вызовом:
INT 2Eh.EAX=067h/INT 2Eh.EAX = 9Ch
а в Windows XP еще и машинной командой syscall. Возможен также вызов по прямым адресам NTDLL.DLL или динамический поиск экспортируемых функций в памяти.
Восстановление пораженных объектов. Если после обработки упаковщиком/архиватором или иных внешне безобидных действий файл неожиданно отказал в работе, одним из возможных объяснений является гибель расширенных атрибутов. При условии, что потоки не использовались для хранения оригинального содержимого файла, у нас неплохие шансы на восстановление. Просто загрузите файл в дизассемблер и, проанализировав работу X-кода, примите необходимые меры противодействия. Более точной рекомендации дать, увы, не получается, поскольку такая тактика внедрения существует лишь теоретически и своего боевого крещения еще не получила.
Для удаления ненужных потоков можно воспользоваться уже описанной функцией NtSetEaFile.
Категория B: раздвижка заголовка
Никакой уважающий себя X-код не захочет зависеть от наличия свободного места в подопытном файле, поскольку это унизительно и вообще не по-хакерски.