<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Волчьи IT-мысли &#187; rootkit</title>
	<atom:link href="http://sww-it.ru/tag/rootkit/feed" rel="self" type="application/rss+xml" />
	<link>http://sww-it.ru</link>
	<description>Компьютерная безопасность, IT, антивирусная индустрия.</description>
	<lastBuildDate>Wed, 18 Jan 2012 11:20:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Легальные буткиты</title>
		<link>http://sww-it.ru/2011-11-28/558?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25d0%25bb%25d0%25b5%25d0%25b3%25d0%25b0%25d0%25bb%25d1%258c%25d0%25bd%25d1%258b%25d0%25b5-%25d0%25b1%25d1%2583%25d1%2582%25d0%25ba%25d0%25b8%25d1%2582%25d1%258b</link>
		<comments>http://sww-it.ru/2011-11-28/558#comments</comments>
		<pubDate>Mon, 28 Nov 2011 12:02:25 +0000</pubDate>
		<dc:creator>SWW</dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[bootkit]]></category>
		<category><![CDATA[rootkit]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://sww-it.ru/?p=558</guid>
		<description><![CDATA[<p align="justify">Ни для кого не секрет, что в некоторых легальных продуктах используются руткит-технологии.</p> <p align="justify">В антивирусных продуктах различные проактивные механизмы защиты применяют перехваты системных функций в том или ином виде. Вредоносный код также использует подобные алгоритмы, однако, антивирусное ПО, в отличие от вредоносного кода, не пытается скрыть модификации, произведенные в системе.</p> <p align="justify">Насколько вообще оправдано [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Ни для кого не секрет, что в некоторых легальных продуктах используются руткит-технологии.</p>
<p align="justify">В антивирусных продуктах различные проактивные механизмы защиты применяют перехваты системных функций в том или ином виде. Вредоносный код также использует подобные алгоритмы, однако, антивирусное ПО, в отличие от вредоносного кода, не пытается скрыть модификации, произведенные в системе.</p>
<p align="justify">Насколько вообще оправдано использование руткит-технологий в легальном программном обеспечении? Насколько при использовании таких технологий в легальных продуктах велик риск компрометации операционной системы и пользовательских данных? Насколько тонка грань между легальными и киберкриминальными методами?</p>
<p><a href="http://www.securelist.com/ru/analysis/208050726/Legalnye_butkity">Дальше</a></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fsww-it.ru%2F2011-11-28%2F558&amp;title=%D0%9B%D0%B5%D0%B3%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5%20%D0%B1%D1%83%D1%82%D0%BA%D0%B8%D1%82%D1%8B" id="wpa2a_2"><img src="http://sww-it.ru/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://sww-it.ru/2011-11-28/558/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>MYBIOS. Возможно ли заразить BIOS?</title>
		<link>http://sww-it.ru/2011-09-15/550?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mybios-%25d0%25b2%25d0%25be%25d0%25b7%25d0%25bc%25d0%25be%25d0%25b6%25d0%25bd%25d0%25be-%25d0%25bb%25d0%25b8-%25d0%25b7%25d0%25b0%25d1%2580%25d0%25b0%25d0%25b7%25d0%25b8%25d1%2582%25d1%258c-bios</link>
		<comments>http://sww-it.ru/2011-09-15/550#comments</comments>
		<pubDate>Thu, 15 Sep 2011 09:37:54 +0000</pubDate>
		<dc:creator>SWW</dc:creator>
				<category><![CDATA[Вирусный анализ]]></category>
		<category><![CDATA[mybios]]></category>
		<category><![CDATA[rootkit]]></category>

		<guid isPermaLink="false">http://sww-it.ru/?p=550</guid>
		<description><![CDATA[<p align="justify">Возможность заражения BIOS существует довольно-таки давно. Одна из лучших, на мой взгляд, статей на эту тему размещена в журнале Phrack, а на ресурсе pinczakko расположено много полезной информации. В данный момент прослеживается очевидная тенденция, которую я бы обозначил как «возвращение к истокам». Заражение MBR, перехваты указателей в различных системных таблицах операционной системы, заражение системных [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Возможность заражения BIOS существует довольно-таки давно. Одна из лучших, на мой взгляд, статей на эту тему размещена в журнале <a href="http://www.phrack.org/issues.html?issue=66&#038;id=7">Phrack</a>, а на <a href="http://sites.google.com/site/pinczakko/bios-articles">ресурсе</a> pinczakko расположено много полезной информации. В данный момент прослеживается очевидная тенденция, которую я бы обозначил как «возвращение к истокам». Заражение MBR, перехваты указателей в различных системных таблицах операционной системы, заражение системных компонентов — все это уже было, и очень давно.</p>
<p align="justify">Как и в случае с MBR заражение BIOS позволяет вредоносному коду инициализироваться очень рано, сразу после включения компьютера. С этого момента появляется возможность контролировать все этапы загрузки компьютера и операционной системы. Очевидно, что такой метод загрузки привлекателен для вирусописателей, однако очевидны и трудности, с которыми они сталкиваются. Прежде всего — это неунифицированный формат BIOS: создателю вредоносной программы необходимо поддержать BIOS от каждого производителя и разобраться с алгоритмом прошивки в ROM.</p>
<p><a href="http://www.securelist.com/ru/analysis/208050716/MYBIOS_Vozmozhno_li_zarazit_BIOS">Дальше</a></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fsww-it.ru%2F2011-09-15%2F550&amp;title=MYBIOS.%20%D0%92%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%20%D0%BB%D0%B8%20%D0%B7%D0%B0%D1%80%D0%B0%D0%B7%D0%B8%D1%82%D1%8C%20BIOS%3F" id="wpa2a_4"><img src="http://sww-it.ru/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://sww-it.ru/2011-09-15/550/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ring-3 руткиты</title>
		<link>http://sww-it.ru/2011-04-21/528?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ring-3-%25d1%2580%25d1%2583%25d1%2582%25d0%25ba%25d0%25b8%25d1%2582%25d1%258b</link>
		<comments>http://sww-it.ru/2011-04-21/528#comments</comments>
		<pubDate>Thu, 21 Apr 2011 09:04:30 +0000</pubDate>
		<dc:creator>priv8v</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[anti-rootkit]]></category>
		<category><![CDATA[ring-3]]></category>
		<category><![CDATA[rootkit]]></category>

		<guid isPermaLink="false">http://sww-it.ru/?p=528</guid>
		<description><![CDATA[<p>Публикую статью автора priv8v. Мнение редакции может не совпадать с мнением автора и т.д. и т.п.</p> <p align="justify">Казалось бы, что о user-mode руткитах уже все давно сказано, и добавить тут нечего. С распространением зловредных драйверов все внимание антивирусных специалистов и хакеров переключилось туда, поэтому ring-3, по крайней мере, на три года остался практически без внимания&#8230; [...]]]></description>
			<content:encoded><![CDATA[<p><em>Публикую статью автора priv8v. Мнение редакции может не совпадать с мнением автора и т.д. и т.п.</em></p>
<p align="justify">Казалось бы, что о user-mode руткитах уже все давно сказано, и добавить тут нечего. С распространением зловредных драйверов все внимание антивирусных специалистов и хакеров переключилось туда, поэтому ring-3, по крайней мере, на три года остался практически без внимания&#8230; А зря. Появились новые технологии, новые методы защиты и нападения. Если задуматься, то изменились даже некоторые цели у конкретных технологий, поменялось поведение зловредов на компьютере, изменился и их внешний облик &#8212; теперь некоторые из них имеют красивые кнопочки и &#171;ищут вирусы&#187;. На этой ноте стоит прекратить ностальгировать и приступить непосредственно к изложению темы.</p>
<p><span id="more-528"></span></p>
<p align="justify">Открыв любую статью пятилетней давности про руткиты можно прочитать о том, что использование rootkit-технологий имеет перед собой две цели: скрытие вредоноса на ПК и усложнение его удаления (второе является следствием первого). На сегодняшний день эта информация неактуальна: удалить библиотеку/ехе-файл с диска (при условии его сигнатурного детектирования) для нормального антивируса не является проблемой, а найти его&#8230; собственно, его искать и не требуется, при работе с уровня ядра антивирус даже не будет и подозревать, что это скрытые файлы. В таком случае можно задаться вопросами:</p>
<ul>
<li>зачем применять сегодня user-mode руткиты?</li>
<li>целесообразно ли это?</li>
<li>а они часом не вымерли?</li>
</ul>
<p align="justify">Применять их можно для скрытия чего-либо на компьютере пользователя и при отсутствии сигнатурного детекта со стороны антивируса, есть возможность оставаться незамеченным сколь угодно долгое время, даже если пользователь является продвинутым и знает что такое антируткит – о том, как этого добиться далее и пойдет речь.</p>
<p align="justify">Для начала необходимо кое о чем договориться и сделать некоторые допущения:</p>
<ul>
<li>в статье не будет рассмотрен обход эмуляторов и поведенческих анализаторов;</li>
<li>обход антивирусного эвристического/сигнатурного детекта также не рассматривается;</li>
<li>основное внимание будет уделено сплайсингу;</li>
<li>в статье будет использована анти-script-киддис защита;</li>
<li>панды бамбук не курят, они им питаются;</li>
</ul>
<p align="justify">При разговоре о руткитах просто нельзя ничего не сказать о драйверах, тем более, когда не планируешь уделить им даже строки. Создание и использование Kernel-mode руткита сопряжено с определенными трудностями, из-за которых они не смогли полностью вытеснить с рынка собратьев на два кольца выше:</p>
<p><br /></p>
<p><strong>
<p align="justify">Сложность написания</p>
<p></strong></p>
<p align="justify">Конечно, можно воспользоваться готовыми исходными кодами из интернета/книг/статей, но на них, скорее всего, будет детект всеми возможными способами (начиная от сигнатурного) и подобный руткит будет расстреливаться из главных орудий еще на подлете, поэтому готовые исходные коды или модифицируются, или заново переписываются, что в любом случае сложнее этих же манипуляций с сорцами пользовательского режима.</p>
<p><br /></p>
<p><strong>
<p align="justify">Обход HIPS</p>
<p></strong></p>
<p align="justify">Каждая вторая антивирусная компания под &#171;HIPS&#187; понимает что-то свое (несмотря на то, что расшифровка аббревиатуры у всех одинаковая). У кого-то вообще этой технологии нет, у кого-то есть только галочка в настройках (типа &#171;Да, по умолчанию использовать эту супер-HIPS&#187;), но у многих эта технология присутствует и включает в себя анализ поведения и эмуляцию кода. Говоря простым языком, могут быть проблемы с установкой драйвера, т.к некоторые комбайны спрашивают совета у пользователя даже если драйвер пытается ставить доверенное приложение. Если вы не найдете какого-нибудь неведомого способа установки драйвера, то ядра вам не видать как своих ушей (и зеркало при проникновении в ring-0 не поможет). Хотя в последнее время и наблюдается некий мнимый упадок технологий в этой области, связанный с прогибом антивирусов под знания среднего юзера.</p>
<p><br /></p>
<p><strong>
<p align="justify">&#171;Бельмо на глазу&#187;</p>
<p></strong></p>
<p align="justify">Если вы будете использовать какие-то давно известные и проверенные rootkit-технологии, то обязательно будете обнаружены даже простеньким антируткитом (например, пандой). Поэтому без чего-то нового наедятся скрыться от Gmer&#8217;a, или AVZ с его километровым логом, просто бессмысленно.</p>
<p><br /></p>
<p><strong>
<p align="justify">Права на установку драйвера</p>
<p></strong></p>
<p align="justify">Для установки драйвера должны быть соответствующие права в системе, при их отсутствии, конечно, можно попытаться воспользоваться эксплоитом для повышения прав, но это создает дополнительные трудности.</p>
<p><br /></p>
<p><strong>
<p align="justify">Различия систем</p>
<p></strong></p>
<p align="justify">Прежде всего, это связано с увеличением популярности Windows 7 и х64-систем.</p>
<p align="justify">Современные антируткиты можно условно разделить на две категории:</p>
<ul>
<li>Рассчитанные на продвинутых пользователей. Это целые комбайны для убийства и извращений. Они показывают перехваты с подробной информацией о них, позволяют их снимать, могут работать с реестром, файловой системой, причем сами делают их разбор. В качестве примера можно привести Gmer или XueTr.</li>
<li>Рассчитанные на User Classic  &#8212; как правило, имеют пять кнопок, включая &#171;выход&#187; и &#171;справка&#187;, еще две это &#171;найти&#187; и &#171;уничтожить&#187;, а пятая кнопка не всегда и имеется. Подобные утилиты ничего не показывают пользователю, просто ищут скрытые на их взгляд файлы/ключи/процессы и предлагают их прибить. Образчиком этой категории может быть антируткит от Panda.</li>
</ul>
<p align="justify">Пару слов необходимо сказать пару общих слов о том, какой антируткит, где ищет и что отображает пользователю: Rootkit Unhooker и Gmer просматривают на предмет хуков все процессы в системе и ищут перехваты во всех функциях (хотя могли бы проверять только критичные) – находят даже перехват MessageBox’a. Идентифицируют тип перехвата достаточно четко (&#8230;Jump, PushRet и т.д) и указывают полный путь до библиотеки с кодом перехватчика. С помощью XueTr можно получить аналогичную информацию, только метод перехвата будет описан не столь подробно (inline, и все тут&#8230;).</p>
<p align="justify">Но анализировать перехваты в ring-3 умеют не все антируткиты (зачем руки-то марать?), к примеру, Vba32 AntiRootKit является одним из лучших на сегодняшний день антируткитов и находит хитрые заковырки в ядре, но в ring3 не видит ничего. Аналогично и DwShark.</p>
<p><br /></p>
<p align="justify">Для начала зададимся вопросом о том, как скрыть или замаскировать перехваты от тех немногих программ, которые их все-таки показывают, и рассмотрим несколько способов:</p>
<p align="justify"><strong>1)</strong> Антируткит, как правило, не может распознать какой перехват «хороший», а какой нет. Под «хорошим» имеется в виду перехват, установленный каким-либо вполне законным приложением (например, антивирус). И весь груз ответственности за вынесения вердикта свой/чужой остается на долю пользователя, который это делает либо сам, либо с помощью коллективного разума на форуме. Именно поэтому имеет право на жизнь такой глупый способ маскировки как расположение внедренной dll по похожему на лигитимный пути, а не в папку темп или в system32 с рандомным названием. Чем плохо: C:\Program Files\Agnitum\нормальное_имя.dll – подсмотреть пути, подсмотреть названия и все. При этом к библиотеке можно даже через редактор ресурсов прилепить описание и в отчете антируткита будет видно именно оно.</p>
<p align="justify"><strong>2)</strong> Перехват можно сделать целевым – в определенном процессе/процессах. Или наоборот – внедряться во все процессы, кроме строго определенных. Благодаря этому про какие-то скрытые объекты антируткит не будет и знать – если в его приложение-дразнилку ничего не внедрено и не перехвачено, то и отличий от того, что спущено свыше (с уровня ядра, хотя правильнее будет сказать «сниже», но такого слова нет) с уровня ядра не будет, то есть в системе все будет видно со всех уровней, а раз ничего антируткит не нашел скрытого, то и панику поднимать не будет. Естественно, не защита от всех антируткитов, Gmer’а этим не смутить.</p>
<p align="justify"><strong>3)</strong> На всех компьютерах с защитным ПО обязательно будут какие-то перехваты, и практически всегда, хоть небольшая часть из них (для разных целей) зиждется на ring-3 перехватчике. Поэтому будет просто некультурно не воспользоваться этим. Идея в маскировке наших перехватов под перехваты библиотеки антивируса, а там попробуй, разберись какие функции и зачем какой антивирус перехватывает. Поэтому свой jmp мы будем ставить не на свою библиотеку, а на хорошую библиотеку ав-продукта, а уже в ней будет стоять jmp на код в нашей библиотеке.</p>
<p>Перехватываемая API-функция: jmp good_library.address<br /><br />
good_library.address: jmp our_evil_library.address<br /></p>
<p align="justify"> В антирутките данный перехват будет выглядеть как родной для этого антивируса, и обнаружить подвох можно будет только при детальном изучении вручную с отладчиком в руках. Такой изврат не раскусывает ни один антируткит.</p>
<p align="justify"><strong>4)</strong> Насколько много приложений работает с системой не прямыми вызовами API-функций, а, используя функции языка программирования, на котором они написаны? Много. Вызов API-функции несомненно будет, но не сразу, поэтому и перехват можно делать в этой самой надстройке. Наиболее наглядный пример можно привести из языка С: при перехвате функции printf в библиотеке msvcrt.dll перехват не углядел ни Gmer, ни Rootkit Unhooker, при этом XueTr гордо опознал перехват и даже имя перехваченной функции. Надеюсь, что данная мысль понятна без дальнейших примеров с другими языками.</p>
<p align="justify"><strong>5)</strong> Для лучшего понимания следующего способа сокрытия перехватов необходимо рассмотреть то, как их обнаруживают.</p>
<p align="justify">Антируткит делает допущение, что лежащая на диске в system32 библиотека оригинальна, а так как все модификации ее функций находятся исключительно в памяти процессов, то механизм работы в упрощенном виде выглядит так: прочитать библиотеку с диска, принять ее за эталон чистоты и, перебирая процессы сравнивать код библиотеки в адресном пространстве с эталоном и при обнаружении отличий пытаться опознать в них метод перехвата, адрес куда ведет перехват и приложение, в которое перехват привел, таким образом антируткит покажет расхождение между оригиналом и тем, что в памяти (перехват) и куда совершается прыжок (перехватчик).
</p>
<p align="justify">Как вы уже догадались, вектор атаки будет направлен как раз на сделанное допущение:</p>
<ul>
<li>Библиотека патчится не только в памяти, но и на диске (предварительно скопированная).</li>
<li>После отключения WFP оригинал заменяется патченной. В зависимости от того, как будет реализовано отключение WFP и как выполнен перехват (в скольких процессах, как сделана обработка и т.д) библиотека заменяется на патченную или только на время работы антируткита, или на относительно вечно (здесь можно послать привет установке глобальных перехватов в user-mode).</li>
</ul>
<p align="justify"><strong>6)</strong> Если jmp отодвинуть от начала функции, к примеру, байт на 30, то Gmer все равно будет видеть перехват и правильно его отображать. Rootkit Unhooker перехват также будет видеть, но имя функции не отображает (будет показывать dll_name.dll+xxx).<br />
Следует помнить, что Gmer ругается даже при изменении одного байта в функции.</p>
<p align="justify"><strong>7)</strong> Замаскировать перехватчик. Если адрес нашего обработчика на начале функции класть в стек, а потом выполнять ret или просто поставить на него jmp, то не стоит удивляться, если антируткит покажет, куда ведет перехват, но если адрес немного обработать (прибавить, отнять, поболтать по регистрам), то это даст результат – перехватчик не будет определен.</p>
<p align="justify">Выше были рассмотрено пассивное противодействие антируткитам, но известно, что лучшая защита это нападение&#8230;</p>
<p align="justify">Философия примерно такая: в зависимости от способа противодействия собирается информация о популярных антируткитах (имена исполняемых файлов/библиотек/драйверов, классы/имена окон и т.д), затем пишется функция обнаружения руткит-детекторов в системе и разработка методов борьбы с ними. </p>
<p align="justify">При грубой реализации эти методы направлены не на скрытие себя в системе, а на противодействие удалению, т.е пользователь будет знать, что какая-то зловредная живность на ПК имеется и она мешает работе лечащих утилит, при более тонком исполнении пользователь или не заметит ничего подозрительного или спишет на &#171;глюки&#187;.</p>
<p align="justify">Рассмотрим пару приемов этого противостояния.</p>
<p><br /></p>
<p align="justify"><strong>Блокировка запуска и работы</strong></p>
<p align="justify">Этот метод достаточно популярен и путей его реализации также достаточно много, поэтому большинство антируткитов (наученные горьким опытом) как могут пассивно этому мешают. Суть: найти файл и не дать ему работать, а сделать это можно через запись в соответствующий ключ реестра имени исполняемого файла, модифицировать (побить) файл на диске, удалить нужную библиотеку/драйвер, установить в системе перехваты на запуск процессов/загрузку библиотек и сравнивать имена&#8230; </p>
<p align="justify">В ответ на это разработчики утилит используют рандомные имена файлов и пути их инсталляции, сведение к минимуму файлов вне основного исполняемого (т.е все нужные библиотеки/драйвера зашиты внутрь), рандомные имена драйверов и ключей реестра.</p>
<p align="justify">Так что все достаточно интересно.</p>
<p><br /></p>
<p align="justify"><strong>Прекращение работы</strong></p>
<p align="justify">Как правило, все достаточно банально &#8212; процесс находится и завершается. Процесс поиска процесса аналогичен предыдущему методу (нахождение по характерным признакам). Это может хорошо продемонстрировать следующий исходный код, на котором можно еще пояснить и некоторые аспекты грубого/тонкого противодействия.</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">int</span> HideXueTr <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// флаг было ли уже скрыто окно или нет</span>
  <span style="color: #666666; font-style: italic;">// ..... code.... </span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>HideXueTr<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  HWND XueTr <span style="color: #339933;">=</span> FindWindow <span style="color: #009900;">&#40;</span>NULL<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;XuеTr 0.39&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>XueTr<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                  MessаgeBox <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;XueTr найден и будет скрыт!&quot;</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;OK&quot;</span><span style="color: #339933;">,</span> MB_OK<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                  ShоwWindow <span style="color: #009900;">&#40;</span>XueTr<span style="color: #339933;">,</span> SW_HIDE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// скрываем окно</span>
                  HideXueTr <span style="color: #339933;">=</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// взводим флаг</span>
               <span style="color: #009900;">&#125;</span>
      <span style="color: #009900;">&#125;</span></pre></div></div>

<p align="justify">В данном примере показана блокировка уже активного XueTr: находится по имени главного окна, после чего окно скрывается, причем только один раз. Пропажа окна будет воспринята пользователем как &#171;глюк&#187;, и XueTr будет запущен повторно, при этом он больше скрываться не будет в виду того, что никакие перехваты он показать уже не сможет, все данные поступают в скрытое окно, а в новом можно будет только обозреть сервисы и файловую систему. Антируткит работает, но показывает &#171;местами&#187;, что будет воспринято пользователем как несовместимость с его ОС, глюками, неумением работать с этой программой и т.д, но никаких подозрений у него не возникнет.</p>
<p><br /></p>
<p align="justify">При глюках обычно тянет на философию, чем и предлагаю заняться. Поразмышляем…</p>
<p align="justify">В логике работы всех антируткитов присутствует следующая аксиома: если скрытый &#8212; значит руткит. Соответственно найденный скрытый объект выделяется всеми цветами радуги (в данном случае для меня все цвета это красный) и уведомляет пользователя о том, что руткит найден. Далее в работе антируткитов имеется небольшая, но существенная разница, о которой мы уже говорили выше, а именно подробность отчета. Те утилиты, которые дают подробный отчет, покажут все что смогут (перехваты, перехватчик) и сам скрытый объект выделят, а те, что попроще в общении с пользователем просто покажут руткит и на выбор предложат: &#171;Удавить его? Утопить его? Стереть в порошок?&#187;. В целом, подход, конечно, правильный, но при большом желании и везении можно использовать его слабое место, ведь не все то золото, что блестит &#8212; не все то руткит, что скрывается, тем более в данном случае между словами &#171;скрывается&#187; и &#171;скрыт&#187; нет никакой разницы. По сути, руткиту (назовем так код, который что-то скрывает) нет никакой разницы, что скрывать &#8212; что ему сказали прятать, то он и прячет. Скажут скрывать readme.txt, и будет это делать. К чему это? А все к тому&#8230; В расчете на применение антируткита или при нахождении его активности (например, процесса) в системе, можно скрыть что-то специально для него. Возьмем и легким движением руки сделаем процесс/файл антивируса злостным руткитом, причем сам антивирус будет сильно удивлен, если вдруг прознает это, а вот антируткит будет этому только рад. Раз руткит &#8212; приговор &#171;Расстрел!&#187;. Особым цинизмом будет скрытие процесса/файла самого антируткита от него же. McAfee Rootkit Detective при обнаружении скрытого процесса предлагает только два способа борьбы с ним &#8212; завершить или переименовать. При скрытии его самого, прекрасно себя переименовывает. Панда также не ожидает, что ему подложат такую свинью и предлагает два варианта: удалять руткит и не удалять руткит. При выборе первого варианта мишка с успехом самовыпиливается: после перезагрузки бамбуковый мишка начинает использовать бамбук по назначению.</p>
<p><br /></p>
<p align="justify">Напоследок мне бы хотелось напомнить о том, что файл от юзера можно спрятать и в ADS – даже если антируткит их показывает, то покажет он их очень много, вот среди этого множества можно и затесаться. Атаку на GUI антируткитов также никто не отменял, взяли и как нужно отредактировали данные в его окошке, или не допустили их туда, аналогично и с диспетчером задач.</p>
<p align="justify">Закончить статью хотелось бы пожеланиями разработчикам антируткитов:</p>
<p align="justify"><strong>1)</strong> Еще больше рандомизировать (а тем, у кого этого нет &#8212; сделать) имена файлов/путей/окон/размера/и т.д.</p>
<p align="justify"><strong>2)</strong> Сделать более читабельной информацию об установленном перехвате:</p>
<ul>
<li>улучшить распознавание имен функций;</li>
<li>информацию о перехвате выводить не только набором байт, но и мнемоникой вида jmp xxx, а при невозможности определить четко перехватчик, выводить мнемоникой весь код установленного перехвата, например:</li>
</ul>

<div class="wp_syntax"><div class="code"><pre class="asm" style="font-family:monospace;"><span style="color: #00007f; font-weight: bold;">xor</span> <span style="color: #00007f;">eax</span><span style="color: #339933;">,</span> <span style="color: #00007f;">eax</span>
<span style="color: #00007f; font-weight: bold;">mov</span> <span style="color: #00007f;">eax</span><span style="color: #339933;">,</span> xxx
<span style="color: #00007f; font-weight: bold;">push</span> <span style="color: #00007f;">eax</span>
<span style="color: #00007f; font-weight: bold;">ret</span></pre></div></div>

<p align="justify"><strong>3)</strong> Выполнять сравнение библиотек в system32 и в dllcache. Для повышения точности определения чистоты библиотеки можно носить с собой в массиве т.н базу чистых &#8212; хэш суммы проверяемых библиотек с разных систем (хотя бы популярных). Размер базы будет следующим: количество_проверяемых_в_системе_библиотек * количество_популярных_систем.</p>
<p align="justify"><strong>4)</strong> Выполнять поиск перехватов не только в своем процессе/некоторых, а во всех.</p>
<p align="justify"><strong>5)</strong> Научиться (тем, кто не умеет) опознавать перехваты, установленные антивирусными программами. Тут, собственно, три основных пути:</p>
<ul>
<li>иметь на борту базу чистых;</li>
<li>проверять подписи (хотя в свете последних событий тут следует быть осторожным);</li>
<li>подгружать базу чистых из &#171;облака&#187;;</li>
</ul>
<p align="justify"><strong>6)</strong> Для получения слепка файлов/процессов/ключей из user-mode для последующего сравнения со списком из ядра, пользоваться не консольной программой, а чем-то имитирующим обычную программу &#8212; нужно хотя бы user32.dll подгружать&#8230;</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fsww-it.ru%2F2011-04-21%2F528&amp;title=Ring-3%20%D1%80%D1%83%D1%82%D0%BA%D0%B8%D1%82%D1%8B" id="wpa2a_6"><img src="http://sww-it.ru/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://sww-it.ru/2011-04-21/528/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>IsDebug-ли?</title>
		<link>http://sww-it.ru/2011-03-21/520?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=isdebug-%25d0%25bb%25d0%25b8</link>
		<comments>http://sww-it.ru/2011-03-21/520#comments</comments>
		<pubDate>Mon, 21 Mar 2011 17:10:02 +0000</pubDate>
		<dc:creator>SWW</dc:creator>
				<category><![CDATA[Вирусный анализ]]></category>
		<category><![CDATA[rootkit]]></category>
		<category><![CDATA[драйвер]]></category>
		<category><![CDATA[юмор]]></category>

		<guid isPermaLink="false">http://sww-it.ru/?p=520</guid>
		<description><![CDATA[<p align="justify">Пришлось мне тут анализировать один элементарный руткит, никак не срасталось у нашего анти-руткита кое-что с ним. Ерунда в принципе, бага не критичная, но разобраться все-таки стоило. В последнее время не часто выпадает возможность проанализировать что-либо, но тут повезло, можно немного отвлечься от процесса исследования/кодинга. </p> <p></p> <p align="justify">Для дальнейшего понимания сути поста надо запомнить [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Пришлось мне тут анализировать один элементарный руткит, никак не срасталось у нашего анти-руткита кое-что с ним. Ерунда в принципе, бага не критичная, но разобраться все-таки стоило. В последнее время не часто выпадает возможность проанализировать что-либо, но тут повезло, можно немного отвлечься от процесса исследования/кодинга.
</p>
<p><span id="more-520"></span></p>
<p align="justify">Для дальнейшего понимания сути поста надо запомнить то, что дата компиляции дроппера &#8212; <strong>27 февраля 2011 года</strong>, т.е. сэмпл далеко не старый.</p>
<p align="justify">В процессе <strong>динамического анализа</strong> я натолкнулся на полнейший отказ руткита работать, во-первых, под виртуальной машиной, а во-вторых, под виртуальной машиной с отладчиком ядра. Дроппер, кстати, также использовал парочку элементарных и устаревших проверок виртуальной машины, но не о дроппере речь.</p>
<p>Вот такой код я обнаружил в драйвере:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">char</span> __cdecl IsDebug<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  UNICODE_STRING DestinationString<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// [sp+4h] [bp-Ch]@4</span>
  PVOID Object<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// [sp+Ch] [bp-4h]@4</span>
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> KdDebuggerEnabledAddr <span style="color: #339933;">&amp;&amp;</span> <span style="color: #339933;">*</span><span style="color: #009900;">&#40;</span>_BYTE <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>KdDebuggerEnabledAddr <span style="color: #009900;">&#41;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
  RtlInitUnicodeString<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>DestinationString<span style="color: #339933;">,</span> L<span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\\</span>Driver<span style="color: #000099; font-weight: bold;">\\</span>NTICE&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span>ObReferenceObjectByName<span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span>DestinationString<span style="color: #339933;">,</span> 0x40u<span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> 0x1F01FFu<span style="color: #339933;">,</span> IoDriverObjectType<span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>Object<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    ObfDereferenceObject<span style="color: #009900;">&#40;</span>Object<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p align="justify">Способ, основанный на проверке переменной <strong>KdDebuggerEnabled</strong>, известен очень давно, однако, проверка на наличие в системе активного отладчика Soft(Win)Ice (наличие драйвера NTICE) &#8212; это что-то из ряда вон выходящее. Неужели авторы думают, что антивирусные лаборатории до сих пор используют этот устаревший инструмент?</p>
<p align="justify">Что ж, живы еще олдскул разработчики в родных селениях!</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fsww-it.ru%2F2011-03-21%2F520&amp;title=IsDebug-%D0%BB%D0%B8%3F" id="wpa2a_8"><img src="http://sww-it.ru/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://sww-it.ru/2011-03-21/520/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>TDSS. TDL-4</title>
		<link>http://sww-it.ru/2010-12-13/508?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=tdss-tdl-4</link>
		<comments>http://sww-it.ru/2010-12-13/508#comments</comments>
		<pubDate>Mon, 13 Dec 2010 12:27:06 +0000</pubDate>
		<dc:creator>SWW</dc:creator>
				<category><![CDATA[Вирусный анализ]]></category>
		<category><![CDATA[rootkit]]></category>
		<category><![CDATA[tdl]]></category>
		<category><![CDATA[tdss]]></category>

		<guid isPermaLink="false">http://sww-it.ru/?p=508</guid>
		<description><![CDATA[<p>Прошло совсем немного времени после публикации нашей аналитической статьи о рутките TDSS. Как мы и предполагали, TDSS продолжает совершенствоваться. В июле-августе появилась совершенно новая модификация данного руткита — TDL-4, — которая способна заражать не только x86 (32-х битные) операционные системы, но и x64 (64-х битные). В данной статье мы расскажем о новом способе загрузки руткита, [...]]]></description>
			<content:encoded><![CDATA[<p>Прошло совсем немного времени после публикации нашей аналитической <a href="http://www.securelist.com/ru/analysis/208050642/TDSS">статьи</a> о рутките TDSS. Как мы и предполагали, TDSS продолжает совершенствоваться. В июле-августе появилась совершенно новая модификация данного руткита — TDL-4, — которая способна заражать не только x86 (32-х битные) операционные системы, но и x64 (64-х битные). В данной статье мы расскажем о новом способе загрузки руткита, а также о его возможности концептуально обойти защиту, встроенную в 64-х битные операционные системы Windows, — <a href="http://en.wikipedia.org/wiki/Kernel_Patch_Protection">PatchGuard</a> и механизм проверки целостности.</p>
<p><a href="http://www.securelist.com/ru/analysis/208050674/TDSS_TDL_4">Дальше</a></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fsww-it.ru%2F2010-12-13%2F508&amp;title=TDSS.%20TDL-4" id="wpa2a_10"><img src="http://sww-it.ru/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://sww-it.ru/2010-12-13/508/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stuxnet Memory Analysis and IOC creation</title>
		<link>http://sww-it.ru/2010-07-22/499?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=stuxnet-memory-analysis-and-ioc-creation</link>
		<comments>http://sww-it.ru/2010-07-22/499#comments</comments>
		<pubDate>Thu, 22 Jul 2010 09:11:57 +0000</pubDate>
		<dc:creator>SWW</dc:creator>
				<category><![CDATA[Без перевода]]></category>
		<category><![CDATA[malware]]></category>
		<category><![CDATA[myrtus and guava]]></category>
		<category><![CDATA[rootkit]]></category>
		<category><![CDATA[stuxnet]]></category>

		<guid isPermaLink="false">http://sww-it.ru/?p=499</guid>
		<description><![CDATA[<p align="justify">The stuxnet malware has been making the press recently for two reasons. First it contains two drivers signed with a legitimate (at the time) cert. Second is it’s targeting SCADA systems. The malware is cool for a host of other geeky reasons. Nick Harbour, Stephen Davis, and I started looking at the malware Sunday [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">The stuxnet  malware has been making the press recently for two reasons.  First it contains two drivers signed with a legitimate (at the time) cert. Second  is it’s targeting SCADA systems. The malware is cool for a host of other geeky reasons. Nick Harbour, Stephen Davis, and I started looking at the malware Sunday afternoon. We had hoped to write a blog post about the specifics of the malware before we left for Vegas on Friday. However, in the short term I thought this malware would provide a great opportunity to demonstrate how memory analysis can be leveraged to find malware easily, and how the MANDIANT’s Indicator of Compromise editor (IOCe) tool can be used to describe the malware and what to look for.</p>
<p><a href="http://blog.mandiant.com/archives/1236">Вся статья</a></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fsww-it.ru%2F2010-07-22%2F499&amp;title=Stuxnet%20Memory%20Analysis%20and%20IOC%20creation" id="wpa2a_12"><img src="http://sww-it.ru/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://sww-it.ru/2010-07-22/499/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Мирт и Гуава. Эпизоды. Свежие новости.</title>
		<link>http://sww-it.ru/2010-07-20/497?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25d0%25bc%25d0%25b8%25d1%2580%25d1%2582-%25d0%25b8-%25d0%25b3%25d1%2583%25d0%25b0%25d0%25b2%25d0%25b0-%25d1%258d%25d0%25bf%25d0%25b8%25d0%25b7%25d0%25be%25d0%25b4%25d1%258b-%25d1%2581%25d0%25b2%25d0%25b5%25d0%25b6%25d0%25b8%25d0%25b5-%25d0%25bd%25d0%25be%25d0%25b2%25d0%25be%25d1%2581%25d1%2582%25d0%25b8</link>
		<comments>http://sww-it.ru/2010-07-20/497#comments</comments>
		<pubDate>Tue, 20 Jul 2010 14:25:28 +0000</pubDate>
		<dc:creator>SWW</dc:creator>
				<category><![CDATA[Вирусный анализ]]></category>
		<category><![CDATA[malware]]></category>
		<category><![CDATA[myrtus and guava]]></category>
		<category><![CDATA[rootkit]]></category>
		<category><![CDATA[stuxnet]]></category>

		<guid isPermaLink="false">http://sww-it.ru/?p=497</guid>
		<description><![CDATA[<p>Мне нечего добавить, просто читайте по ссылке.</p> ]]></description>
			<content:encoded><![CDATA[<p>Мне нечего добавить, просто читайте по <a href="http://www.securelist.com/en/blog/2234/Stuxnet_and_stolen_certificates">ссылке</a>.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fsww-it.ru%2F2010-07-20%2F497&amp;title=%D0%9C%D0%B8%D1%80%D1%82%20%D0%B8%20%D0%93%D1%83%D0%B0%D0%B2%D0%B0.%20%D0%AD%D0%BF%D0%B8%D0%B7%D0%BE%D0%B4%D1%8B.%20%D0%A1%D0%B2%D0%B5%D0%B6%D0%B8%D0%B5%20%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B8." id="wpa2a_14"><img src="http://sww-it.ru/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://sww-it.ru/2010-07-20/497/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Мирт и Гуава. Эпизоды</title>
		<link>http://sww-it.ru/2010-07-19/491?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25d0%25bc%25d0%25b8%25d1%2580%25d1%2582-%25d0%25b8-%25d0%25b3%25d1%2583%25d0%25b0%25d0%25b2%25d0%25b0-%25d1%258d%25d0%25bf%25d0%25b8%25d0%25b7%25d0%25be%25d0%25b4%25d1%258b</link>
		<comments>http://sww-it.ru/2010-07-19/491#comments</comments>
		<pubDate>Mon, 19 Jul 2010 18:45:52 +0000</pubDate>
		<dc:creator>SWW</dc:creator>
				<category><![CDATA[Вирусный анализ]]></category>
		<category><![CDATA[malware]]></category>
		<category><![CDATA[myrtus and guava]]></category>
		<category><![CDATA[rootkit]]></category>
		<category><![CDATA[stuxnet]]></category>

		<guid isPermaLink="false">http://sww-it.ru/?p=491</guid>
		<description><![CDATA[<p align="justify">Может быть вы еще не в курсе, но был найден довольно интересный вредоносный код, заточенный под промышленные системы. Драйверы-руткиты подписаны подписью компании Realtek, а распространяется вредоносная программа через уязвимость нулевого дня. На вопрос &#171;Где деньги?&#187; пока не ответил ни один вендор. На текущий момент в этой истории очень много белых пятен. Почему сэмпл был [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Может быть вы еще не в курсе, но был найден довольно интересный вредоносный код, заточенный под промышленные системы. Драйверы-руткиты подписаны подписью компании Realtek, а распространяется вредоносная программа через уязвимость нулевого дня. На вопрос &#171;Где деньги?&#187; пока не ответил ни один вендор. На текущий момент в этой истории очень много белых пятен. Почему сэмпл был обнаружен компанией VBA? Почему обнаружен тогда, когда истекла подпись? <strong>Собственно говоря, где деньги?</strong></p>
<p align="justify">Пока мы в ЛК анализируем (я &#8212; руткит компоненты), можете прочесть первые 3 записи в блоге:</p>
<p><a href="http://www.securelist.com/ru/blog/34291/Mirt_i_guava_Epizod_1">Эпизод 1</a><br />
<a href="http://www.securelist.com/ru/blog/34293/Mirt_i_guava_Epizod_2">Эпизод 2</a><br />
<a href="http://www.securelist.com/ru/blog/34302/Mirt_i_guava_Epizod_3">Эпизод 3</a></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fsww-it.ru%2F2010-07-19%2F491&amp;title=%D0%9C%D0%B8%D1%80%D1%82%20%D0%B8%20%D0%93%D1%83%D0%B0%D0%B2%D0%B0.%20%D0%AD%D0%BF%D0%B8%D0%B7%D0%BE%D0%B4%D1%8B" id="wpa2a_16"><img src="http://sww-it.ru/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://sww-it.ru/2010-07-19/491/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TDSS</title>
		<link>http://sww-it.ru/2010-06-26/469?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=tdss</link>
		<comments>http://sww-it.ru/2010-06-26/469#comments</comments>
		<pubDate>Fri, 25 Jun 2010 21:39:30 +0000</pubDate>
		<dc:creator>SWW</dc:creator>
				<category><![CDATA[Вирусный анализ]]></category>
		<category><![CDATA[rootkit]]></category>
		<category><![CDATA[tdl]]></category>
		<category><![CDATA[tdss]]></category>

		<guid isPermaLink="false">http://sww-it.ru/?p=469</guid>
		<description><![CDATA[<p>Руткит TDSS, появившийся еще в 2008 году, со временем стал намного популярнее нашумевшего руткита Rustock, а по своему функционалу и сложности для анализа практически приблизился к буткиту. В бутките использовался механизм заражения загрузочной области диска, приводивший к загрузке вредоносного кода раньше операционной системы. TDSS взял на вооружение функцию заражения драйверов, которые обеспечивают его загрузку и [...]]]></description>
			<content:encoded><![CDATA[<p><em>Руткит TDSS, появившийся еще в 2008 году, со временем стал намного популярнее нашумевшего руткита Rustock, а по своему функционалу и сложности для анализа практически приблизился к буткиту. В бутките использовался механизм заражения загрузочной области диска, приводивший к загрузке вредоносного кода раньше операционной системы. TDSS взял на вооружение функцию заражения драйверов, которые обеспечивают его загрузку и работу на самых ранних этапах работы ОС. Как следствие, идентификация руткита TDSS в системе является нелегкой задачей, а его лечение — серьезной проблемой.</em></p>
<p><a href="http://www.securelist.com/ru/analysis/208050642/TDSS">Анализ семейства TDSS</a></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fsww-it.ru%2F2010-06-26%2F469&amp;title=TDSS" id="wpa2a_18"><img src="http://sww-it.ru/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://sww-it.ru/2010-06-26/469/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Вернуть все как было</title>
		<link>http://sww-it.ru/2009-06-19/258?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25d0%25b2%25d0%25b5%25d1%2580%25d0%25bd%25d1%2583%25d1%2582%25d1%258c-%25d0%25b2%25d1%2581%25d0%25b5-%25d0%25ba%25d0%25b0%25d0%25ba-%25d0%25b1%25d1%258b%25d0%25bb%25d0%25be</link>
		<comments>http://sww-it.ru/2009-06-19/258#comments</comments>
		<pubDate>Fri, 19 Jun 2009 15:02:13 +0000</pubDate>
		<dc:creator>SWW</dc:creator>
				<category><![CDATA[Вирусный анализ]]></category>
		<category><![CDATA[bootkit]]></category>
		<category><![CDATA[rootkit]]></category>

		<guid isPermaLink="false">http://sww-it.ru/?p=258</guid>
		<description><![CDATA[<p style="text-align: justify;">Борьба с вредоносными программами осложнена не только тем, что их необходимо обнаружить, но и тем, что после обнаружения необходимо провести корректное лечение найденного вредоносного кода и его модулей. Детектируемые объекты совершенно не желают быть обнаруженными и уничтоженными, поэтому они активно сопротивляются лечению.</p> <p style="text-align: justify;">Мешать антивирусному продукту можно различными способами. Можно использовать руткит-технологии [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Борьба с вредоносными программами осложнена не только тем, что их необходимо обнаружить, но и тем, что после обнаружения необходимо провести корректное лечение найденного вредоносного кода и его модулей. Детектируемые объекты совершенно не желают быть обнаруженными и уничтоженными, поэтому они активно сопротивляются лечению.</p>
<p style="text-align: justify;">Мешать антивирусному продукту можно различными способами. Можно использовать руткит-технологии для предотвращения обнаружения и удаления, а можно следить за своими компонентами и, в случае удаления, восстанавливать их. Рассмотрим те, которые восстанавливают компоненты в случае их лечения антивирусным продуктом.</p>
<p><span id="more-258"></span></p>
<p style="text-align: justify;">Некоторые из  способов, которые используются в современных вредоносных программах под Windows:</p>
<ul>
<li>нотификации (информационные сообщения ОС) на изменение ключей реестра или значений реестра и восстановление их в случае лечения антивирусом;</li>
<li>следящий поток в цикле проверяющий ключи реестра, значения реестра или файлы;</li>
<li>второстепенный процесс, поток или внедренный код, следящий за основным процессом или потоком и перезапускающий его в случае уничтожения антивирусом;</li>
</ul>
<p style="text-align: justify;">Вышеперечисленные способы &#8212; основные, однако, вариаций существует намного больше.</p>
<p style="text-align: justify;">15 мая мы <a href="http://www.securelist.com/ru/analysis/204007655/Butkit_2009">представили</a> статью о вредоносной программе, вернее ее новой модификации, носящей кодовое название &#8216;буткит&#8217;. В бутките используется метод заражения загрузочной записи диска, но не обошлось и без использования способа восстановления MBR в случае лечения его антивирусным продуктом.</p>
<p style="text-align: justify;">Авторы данного руткита подошли к вопросу о перепроверке MBR с интересной стороны. На ранней стадии загрузки операционной системы запускается поток в режиме ядра, который в цикле проверяет наличие в памяти системного процесса explorer.exe и ожидает его завершения. После инициации перезагрузки операционная система завершает все процессы, в том числе и explorer.exe. Схематично этот код выглядит так:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">NTSTATUS InitThreadWithExplorer<span style="color: #009900;">&#40;</span>...<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">// выделяем память под MBR</span>
        status <span style="color: #339933;">=</span> AllocateAndZeroMemory<span style="color: #009900;">&#40;</span> <span style="color: #339933;">&amp;</span>g_MainMbrBuf<span style="color: #339933;">,</span> <span style="color: #0000dd;">512</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">' kdD'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// читаем зараженный MBR в глобальный буфер</span>
        status <span style="color: #339933;">=</span> SendIrpMjRead<span style="color: #009900;">&#40;</span> g_MainMbrBuf <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
&nbsp;
        <span style="color: #666666; font-style: italic;">// запускаем поток, который находит explorer.exe и ждет</span>
        status <span style="color: #339933;">=</span> RunSystemThread<span style="color: #009900;">&#40;</span> FindExplorerWaitAndCallOnReboot<span style="color: #339933;">,</span> ... <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
NTSTATUS FindExplorerWaitAndCallOnReboot<span style="color: #009900;">&#40;</span>...<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">// запускаем цикл поиска explorer.exe</span>
        <span style="color: #b1b100;">do</span>
        <span style="color: #009900;">&#123;</span>
                explorerpid <span style="color: #339933;">=</span> ReturnProcessPidByName<span style="color: #009900;">&#40;</span> L<span style="color: #ff0000;">&quot;explorer.exe&quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
                <span style="color: #666666; font-style: italic;">// если найден explorer.exe, то выходим из цикла</span>
                <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> explorerpid <span style="color: #009900;">&#41;</span>
                        <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span>...<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// получаем объект процесса explorer.exe по его идентификатору</span>
        status <span style="color: #339933;">=</span> PsLookupProcessByProcessId<span style="color: #009900;">&#40;</span> explorerpid<span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>pProcess  <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// ожидаем завершения процесса explorer.exe</span>
        KeWaitForMultipleObjects<span style="color: #009900;">&#40;</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>Objects<span style="color: #339933;">,</span> WaitAny<span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span> <span style="color: #009900;">&#41;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// если explorer.exe завершился, то вызываем функцию проверки MBR</span>
        CallOnReboot<span style="color: #009900;">&#40;</span>...<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p style="text-align: justify;">Функция CallOnReboot сравнивает текущий MBR с эталоном (зараженной загрузочной записью). Делается это для того, чтобы на момент перезагрузки системы восстановить вылеченную антивирусом загрузочную запись:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">NTSTATUS CallOnReboot<span style="color: #009900;">&#40;</span>...<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
        pMBR <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// выделяем память под MBR</span>
        status <span style="color: #339933;">=</span> AllocateAndZeroMemory<span style="color: #009900;">&#40;</span> <span style="color: #339933;">&amp;</span>pMBR<span style="color: #339933;">,</span> <span style="color: #0000dd;">512</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">' kdD'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// читаем MBR</span>
        status <span style="color: #339933;">=</span> SendIrpMjRead<span style="color: #009900;">&#40;</span> pMBR <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// запускаем цикл проверки</span>
        <span style="color: #b1b100;">do</span>
        <span style="color: #009900;">&#123;</span>
                k <span style="color: #339933;">=</span> i<span style="color: #339933;">;</span>
                l <span style="color: #339933;">=</span> i<span style="color: #339933;">;</span>
&nbsp;
                <span style="color: #666666; font-style: italic;">// если какой-либо байт MBR отличается, то выходим из цикла</span>
                <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">*</span><span style="color: #009900;">&#40;</span>_BYTE <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span>pMBR <span style="color: #339933;">+</span> i<span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #339933;">*</span><span style="color: #009900;">&#40;</span>_BYTE <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span>g_MainMbrBuf <span style="color: #339933;">+</span> i<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
                        <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
                k <span style="color: #339933;">=</span> i<span style="color: #339933;">++</span> <span style="color: #339933;">+</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span> l <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">432</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// если был найден отличающийся байт</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> k <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">432</span> <span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
                <span style="color: #666666; font-style: italic;">// копируем в pMBR зараженный MBR</span>
                memmove<span style="color: #009900;">&#40;</span> pMBR<span style="color: #339933;">,</span> g_MainMbrBuf<span style="color: #339933;">,</span> <span style="color: #0000dd;">432</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
                <span style="color: #666666; font-style: italic;">// перезаписываем вылеченный MBR</span>
                status <span style="color: #339933;">=</span> SendIrpMjWrite<span style="color: #009900;">&#40;</span> pMBR <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p style="text-align: justify;">Для борьбы с таким вредоносным кодом каждый раз приходится придумывать что-нибудь оригинальное, но мы не унываем и продолжаем вас защищать.</p>
<p style="text-align: justify;">
<p style="text-align: justify;"><a href="http://www.securelist.com/ru/weblog/35129/Vernut_vse_kak_bylo" target="_blank">Оригинал</a></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fsww-it.ru%2F2009-06-19%2F258&amp;title=%D0%92%D0%B5%D1%80%D0%BD%D1%83%D1%82%D1%8C%20%D0%B2%D1%81%D0%B5%20%D0%BA%D0%B0%D0%BA%20%D0%B1%D1%8B%D0%BB%D0%BE" id="wpa2a_20"><img src="http://sww-it.ru/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://sww-it.ru/2009-06-19/258/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

