JIT SPRAY ÃÂÃÂÃÂÛØ× TDSS - Xakep Online
JIT SPRAY ÃÂÃÂÃÂÛØ× TDSS - Xakep Online
JIT SPRAY ÃÂÃÂÃÂÛØ× TDSS - Xakep Online
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Siemens подтверждает факт проникновения<br />
в SCADA<br />
продлил жизнь «малваре», прежде, чем ее обнаружили. Как бы<br />
то ни было, после пресс-релиза белорусов, другие антивирусные<br />
компании так же подключились к исследованию, как новой уязвимости,<br />
с помощью которой распространялся червь, так и к боевой<br />
нагрузке.<br />
ÐÀÑÏÐÎÑÒÐÀÍÅÍÈÅ<br />
Механизм размножения червя, казалось бы, не особо-то и оригинальный<br />
— через USB-флешки. Но autorun.inf тут уже ни при чем.<br />
В дело вступает новая уязвимость, которая позволяет загружать<br />
произвольную .DLL-библиотеку, как только флешка будет вставлена,<br />
и пользователь откроет ее содержимое. Дело в том, что на<br />
флешке лежит .DLL-файл с вредоносным кодом (ну, фактически<br />
расширение, в случае с червем, — .TMP) и .LNK-файл. Файл<br />
с расширением .LNK является обычным ярлыком. Но в нашей<br />
ситуации ярлык не совсем обычный. При отображении ярлычка в<br />
стандартной оболочке или Total Commander автоматически выполнится<br />
лежащий рядом .DLL-файл со всеми вытекающими отсюда<br />
последствиями! Как такое могло произойти? Как известно, ярлык<br />
указывает на исполняемый файл и при двойном щелчке вызывает<br />
его. Но тут все без щелчков, да и .DLL-файл так не выполнить.<br />
Если рассмотреть ярлык в HEX-редакторе, можно увидеть, что в его<br />
середине указан путь до нашей .DLL. Кроме того, это не обычный<br />
ярлычок, а ярлычок на элемент панели управления! Эта-то деталь<br />
все и объясняет. Любой элемент панели управления — .CPLапплет.<br />
Но CPL — это, по сути, простая .DLL, поэтому ярлык для<br />
панели управления особый, он как бы понимает, что имеет дело с<br />
.DLL. Кроме того, такой ярлык пытается ВЫТАЩИТЬ иконку из.DLL,<br />
чтобы отобразить ее в проводнике. Но для того, чтобы вытащить<br />
иконку, надо подгрузить библиотеку. Что, собственно, оболочка и<br />
делает с помощью вызова LoadLibraryW().<br />
Справедливости ради стоит отметить, что вызов этой функции<br />
автоматически влечет за собой выполнение функции DllMain()<br />
из подгружаемой библиотеки. Поэтому, если такой ярлычок будет<br />
указывать не на .CPL-апплет, а на злую библиотеку со злым кодом<br />
(в функции DllMain()), то код выполнится АВТОМАТИЧЕСКИ при<br />
просмотре иконки ярлыка. Кроме того, эту уязвимость можно использовать<br />
и с помощью .PIF-ярлыков.<br />
ÁÎÅÂÀß ÍÀÃÐÓÇÊÀ<br />
Кроме интересного метода распространения удивила и боевая<br />
нагрузка — никаких ботнетов, краж банковских паролей, номеров<br />
Symantec расписывает компоненты трояна<br />
CC. Все оказалось куда масштабнее. Уязвимость .LNK провоцирует<br />
загрузку скрытого файла с именем ~wtr4141.tmp, лежащего рядом<br />
с ярлыком. Файл этот исполняемый, но маленький (всего 25 Кб).<br />
Как отметили специалисты из Symantec, очень важно на первых<br />
порах скрыть свое присутствие, пока система еще не заражена. С<br />
учетом специфики 0day-уязвимости, которая действует, как только<br />
пользователь увидит иконки, сработает и ~wtr4141.tmp, который в<br />
первую очередь вешает перехваты системных вызовов в kernel32.<br />
dll. Перехватываемые вызовы:<br />
• FindFirstFileW<br />
• FindNextFileW<br />
• FindFirstFileExW<br />
Хуки также вешаются и на некоторые функции из ntdll.dll:<br />
• NtQueryDirectoryFile<br />
• ZwQueryDirectoryFile<br />
Все эти функции обрабатываются со следующей логикой — если<br />
файл начинается с «~wtr» и заканчивается на «.tmp» (или на<br />
«.lnk»), то удалить его из возвращенного оригинальной функцией<br />
значения, а затем вернуть, что осталось. Другими словами, скрыть<br />
свое присутствие на диске. Поэтому пользователь просто не увидит<br />
файлы на флешке. После этого ~wtr4141.tmp подгружает второй<br />
файл с диска (~wtr4132.tmp). Делает он это не совсем стандартно,<br />
я бы даже сказал, извращенно — установкой хуков в ntdll.dll на<br />
вызовы:<br />
• ZwMapViewOfSection<br />
• ZwCreateSection<br />
• ZwOpenFile<br />
• ZwCloseFile<br />
• ZwQueryAttributesFile<br />
• ZwQuerySection<br />
Затем с помощью вызова LoadLibrary он пытается подгрузить<br />
несуществующий файл со специальным именем, на это дело<br />
XÀÊÅÐ 09 /140/ 10 055