<?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>El rincón de Zerial &#187; GNU/Linux</title>
	<atom:link href="http://blog.zerial.org/category/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.zerial.org</link>
	<description>Informática, GNU/Linux, Seguridad, Hacking, Programación, Ocio</description>
	<lastBuildDate>Wed, 08 Feb 2012 20:48: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>Manipular volúmenes lógicos (LVM) en discos virtuales</title>
		<link>http://blog.zerial.org/linux/manipular-volumenes-logicos-lvm-en-discos-virtuales/</link>
		<comments>http://blog.zerial.org/linux/manipular-volumenes-logicos-lvm-en-discos-virtuales/#comments</comments>
		<pubDate>Wed, 14 Sep 2011 07:48:50 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Documentacion]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[kpartx]]></category>
		<category><![CDATA[losetup]]></category>
		<category><![CDATA[lvm]]></category>
		<category><![CDATA[virtual machine]]></category>
		<category><![CDATA[virtualizacion]]></category>
		<category><![CDATA[vm]]></category>
		<category><![CDATA[xen]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2673</guid>
		<description><![CDATA[Me refiero a discos virtuales a los que creamos usando dd. Cuando creamos un disco utilizando por ejemplo dd if=/dev/zero of=imagen.img y lo usamos para crear una máquina virtual, en este caso con Xen, luego le instalamos un sistema operativo que maneje ya sea CentOS, RHEL, Debian o cualquier otro que maneje LVM en la [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.zerial.org/wp-content/uploads/2011/09/quantum-bigfoot.jpg"><img class="alignleft size-full wp-image-2680" style="margin: 4px;" title="quantum-bigfoot" src="http://blog.zerial.org/wp-content/uploads/2011/09/quantum-bigfoot.jpg" alt="" width="181" height="154" /></a>Me refiero a <strong>discos virtuales</strong> a los que creamos usando <strong>dd</strong>. Cuando creamos un disco utilizando por ejemplo <em>dd if=/dev/zero of=imagen.img</em> y lo usamos para crear una máquina virtual, en este caso con Xen, luego le instalamos un sistema operativo que maneje ya sea CentOS, RHEL, Debian o cualquier otro que maneje LVM en la instalación, hay veces que necesitamos manipularlo ya sea para clonarlo, hacerle mantención o simplemente montarlo para ver los archivos. En mi caso, tuve que clonar la máquina virtual en caliente y quedó el FS corrupto, por lo que tuve que corregirlo, tambien sirve para hacer tareas de mantención como aumentar o disminuir el tamaño del disco o volúmenes lógicos.</p>
<p>Tengo mi disco original llamado &#8220;<em>vm1.img</em>&#8221; y la clono simplemente con un <strong>cp</strong> o bien con &#8220;<strong>dd if=vm1.img vm1_clon.img</strong>&#8220;, paso a paso, lo que tenemos que hacer es:</p>
<ol>
<li>Crear un dispositivo &#8220;loop&#8221; en base a nuestro disco virtual</li>
<li>Mapear el dispositivo loop creado</li>
<li>Revisar los dispositivos creados en /dev/mapper/</li>
<li>Activar el volúmen y realizar las tareas necesarias</li>
</ol>
<p>Las herramientas que usé son <a href="http://linux.die.net/man/8/losetup">losetup</a>, <a href="http://linux.die.net/man/8/kpartx">kpartx</a> y <a href="http://linux.die.net/man/8/vgchange">vgchange</a>.</p>
<p><span id="more-2673"></span></p>
<p>Primero, ya tenemos nuestro disco creado, en este caso lo llamaré &#8220;testing&#8221; y tiene un tamaño de 80GB.<br />
<code># fdisk -l testing</p>
<p>Disk testing: 85.9 GB, 85899345920 bytes<br />
255 heads, 63 sectors/track, 10443 cylinders, total 167772160 sectors<br />
Units = sectors of 1 * 512 = 512 bytes<br />
Sector size (logical/physical): 512 bytes / 512 bytes<br />
I/O size (minimum/optimal): 512 bytes / 512 bytes<br />
Disk identifier: 0x0007759f</p>
<p>  Device Boot      Start         End      Blocks   Id  System<br />
testing1   *          63      208844      104391   83  Linux<br />
testing2          208845   167766794    83778975   8e  Linux LVM</code></p>
<p>Para comenzar vamos a usar el comando <strong>losetup</strong> para crear un dispositivo &#8220;loop&#8221; en base a nuestra imagen de disco, para esto ejecutamos:</p>
<p><code># losetup -f testing</code></p>
<p>Y verificamos con el mismo comando losetup que se haya creado</p>
<p><code># losetup -a<br />
/dev/loop0: [fe01]:24577 (/mnt/vardata/testing)</code></p>
<p>Ya tenemos nuestro dispositivo &#8220;loop&#8221; en /dev/loop0 mapeado a la imagen de disco virtual ubicada en /mnt/vardata/testing. </p>
<p>Ahora debemos usar la herramienta <strong>kpartx</strong> para <em>mapear</em> ese dispositivo que hemos mapeado a nuestro disco virtual hacia nuestro administrador de volúmenes lógicos</p>
<p><code># kpartx -a -v /dev/loop0<br />
add map loop0p1 (254:2): 0 208782 linear /dev/loop0 63<br />
add map loop0p2 (254:3): 0 167557950 linear /dev/loop0 208845</code></p>
<p>Ahora tenemos otros dispositivos creados en /dev/mapper, corresponden a &#8220;loop0p1&#8243; y &#8220;loop0p2&#8243; correspondientes a las particiones de nuestro disco virtual. Así debería ser presentarse:</p>
<p><code># ls -lia /dev/mapper/<br />
total 0<br />
   1072 drwxr-xr-x  2 root root     140 sep 13 15:19 .<br />
      3 drwxr-xr-x 15 root root    3260 sep 13 15:19 ..<br />
   1073 crw-------  1 root root 10, 236 ago 11 12:12 control<br />
2672529 lrwxrwxrwx  1 root root       7 sep 13 15:19 loop0p1 -&gt; ../dm-2<br />
2671232 lrwxrwxrwx  1 root root       7 sep 13 15:19 loop0p2 -&gt; ../dm-3<br />
   3655 lrwxrwxrwx  1 root root       7 ago 11 12:12 VolGroup_ID_15211-backup -&gt; ../dm-0<br />
   3672 lrwxrwxrwx  1 root root       7 ago 11 12:12 VolGroup_ID_15211-vardata -&gt; ../dm-1</code></p>
<p>Y el comando <strong>vgdisplay</strong> debería mostrar la información del grupo</p>
<p><code># vgdisplay<br />
  --- Volume group ---<br />
  VG Name               VolGroup00<br />
  System ID<br />
  Format                lvm2<br />
  Metadata Areas        1<br />
  Metadata Sequence No  3<br />
  VG Access             read/write<br />
  VG Status             resizable<br />
  MAX LV                0<br />
  Cur LV                2<br />
  Open LV               0<br />
  Max PV                0<br />
  Cur PV                1<br />
  Act PV                1<br />
  VG Size               79,88 GiB<br />
  PE Size               32,00 MiB<br />
  Total PE              2556<br />
  Alloc PE / Size       2556 / 79,88 GiB<br />
  Free  PE / Size       0 / 0<br />
  VG UUID               yAIBPd-1PD6-IN1U-aoK7-bLSW-rz08-ERktCp</code></p>
<p>Y con <strong>lvdisplay</strong> revisamos la información de los volúmenes dentro del grupo VolGroup00</p>
<p><code># lvdisplay VolGroup00<br />
  --- Logical volume ---<br />
  LV Name                /dev/VolGroup00/LogVol00<br />
  VG Name                VolGroup00<br />
  LV UUID                Du8Hwj-BUff-RhS3-lNTZ-KsxS-jvEp-S71om4<br />
  LV Write Access        read/write<br />
  LV Status              NOT available<br />
  LV Size                77,84 GiB<br />
  Current LE             2491<br />
  Segments               1<br />
  Allocation             inherit<br />
  Read ahead sectors     auto</p>
<p>  --- Logical volume ---<br />
  LV Name                /dev/VolGroup00/LogVol01<br />
  VG Name                VolGroup00<br />
  LV UUID                Sg3KQG-F3Ad-kgIx-yJi0-OSxm-fBUg-bKUR3O<br />
  LV Write Access        read/write<br />
  LV Status              NOT available<br />
  LV Size                2,03 GiB<br />
  Current LE             65<br />
  Segments               1<br />
  Allocation             inherit<br />
  Read ahead sectors     auto</code></p>
<p>Si te fijan en un detalle, en ambos volúmenes, el estado es &#8220;<strong>NOT available</strong>&#8220;, pues debemos activarlo</p>
<p><code># vgchange VolGroup00 -a y<br />
  2 logical volume(s) in volume group "VolGroup00" now active</code></p>
<p>Y volvemos a revisar</p>
<p><code># lvdisplay VolGroup00<br />
  --- Logical volume ---<br />
  LV Name                /dev/VolGroup00/LogVol00<br />
  VG Name                VolGroup00<br />
  LV UUID                Du8Hwj-BUff-RhS3-lNTZ-KsxS-jvEp-S71om4<br />
  LV Write Access        read/write<br />
<strong>  LV Status              available</strong><br />
  # open                 0<br />
  LV Size                77,84 GiB<br />
  Current LE             2491<br />
  Segments               1<br />
  Allocation             inherit<br />
  Read ahead sectors     auto<br />
  - currently set to     256<br />
  Block device           254:4</p>
<p>  --- Logical volume ---<br />
  LV Name                /dev/VolGroup00/LogVol01<br />
  VG Name                VolGroup00<br />
  LV UUID                Sg3KQG-F3Ad-kgIx-yJi0-OSxm-fBUg-bKUR3O<br />
  LV Write Access        read/write<br />
<strong>  LV Status              available</strong><br />
  # open                 0<br />
  LV Size                2,03 GiB<br />
  Current LE             65<br />
  Segments               1<br />
  Allocation             inherit<br />
  Read ahead sectors     auto<br />
  - currently set to     256<br />
  Block device           254:5</code></p>
<p>Ya los tenemos disponibles y ahora podemos trabajar con ese volúmen como si fuese un &#8220;lvm&#8221; normal, realizar tareas de mantención, montar el volumen, disminuir o aumentar su tamaño, etc.</p>
<p>Cuando ya terminemos de hacer todo lo que queramos con el disco virtual, hay que volver todo a la normalidad, haciendo los pasos inversos:</p>
<p><strong>Desactivar el volumen</strong><br />
<code># vgchange VolGroup00 -a n<br />
  0 logical volume(s) in volume group "VolGroup00" now active</code></p>
<p><strong>Remover el mapeo de los dispositivos loop0p1 y loop0p2</strong> creados desde loop0<br />
<code># kpartx -d /dev/loop0</code></p>
<p><strong>Remover el mapeo de /dev/loop0</strong> creado desde nuestro disco virtual &#8220;testing&#8221;<br />
<code># losetup -v -d /dev/loop0</code></p>
<p>Ya dejamos todo como estaba y podemos volver a utilizar nuestro disco virtual.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Fmanipular-volumenes-logicos-lvm-en-discos-virtuales%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/manipular-volumenes-logicos-lvm-en-discos-virtuales/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/manipular-volumenes-logicos-lvm-en-discos-virtuales/"  data-text="Manipular volúmenes lógicos (LVM) en discos virtuales" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/manipular-volumenes-logicos-lvm-en-discos-virtuales/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Búsqueda de servicios DNS con Transferencia de Zona abierta (AXFR)</title>
		<link>http://blog.zerial.org/seguridad/busqueda-de-servicios-dns-con-transferencia-de-zona-abierta-axfr/</link>
		<comments>http://blog.zerial.org/seguridad/busqueda-de-servicios-dns-con-transferencia-de-zona-abierta-axfr/#comments</comments>
		<pubDate>Thu, 11 Aug 2011 18:00:39 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[axfr]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[bind]]></category>
		<category><![CDATA[dig]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[transferencia de zona]]></category>
		<category><![CDATA[zone transfer]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2572</guid>
		<description><![CDATA[Ya vimos que los servidores mal configurados que permiten realizar transferencias de zona sin restricciones desde cualquier IP son muchos. Para saber si un servidor DNS es &#8220;vulnerable&#8221; a este tipo de ataque usamos la herramienta dig, primero obtenemos los dns que estan asociados al dominio, para este ejemplo usaremos el dominio zerial.org. $ dig [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.zerial.org/seguridad/axfr-una-vulnerabilidad-que-pasa-desapercibida/">Ya vimos</a> que los servidores mal configurados que permiten realizar transferencias de zona sin restricciones desde cualquier IP son muchos.</p>
<p>Para saber si un servidor DNS es &#8220;vulnerable&#8221; a este tipo de ataque usamos la herramienta <strong>dig</strong>, primero obtenemos los dns que estan asociados al dominio, para este ejemplo usaremos el dominio <em>zerial.org</em>.</p>
<p><code>$ dig NS zerial.org<br />
; &lt; &lt;&gt;&gt; DiG 9.7.3 &lt; &lt;&gt;&gt; NS zerial.org<br />
;; global options: +cmd<br />
;; Got answer:<br />
;; -&gt;&gt;HEADER&lt; &lt;- opcode: QUERY, status: NOERROR, id: 64152<br />
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 6</p>
<p>;; QUESTION SECTION:<br />
;zerial.org.			IN	NS</p>
<p>;; ANSWER SECTION:<br />
zerial.org.		86400	IN	NS	ns1.linode.com.<br />
zerial.org.		86400	IN	NS	ns3.linode.com.<br />
zerial.org.		86400	IN	NS	ns2.linode.com.<br />
zerial.org.		86400	IN	NS	ns5.linode.com.<br />
zerial.org.		86400	IN	NS	ns4.linode.com.</code></p>
<p>Ya tenemos la lista de los servidores dns de <em>zerial.org</em>, para probar la transferencia de zona cambiamos <strong>NS</strong> por <strong>AXFR</strong> y forzamos que use el DNS que nosotros elijamos, en este caso probaremos <em>ns3.linode.com</em>:</p>
<p></code><code>$ dig AXFR zerial.org @ns3.linode.com</p>
<p>; &lt; &lt;&gt;&gt; DiG 9.7.3 &lt; &lt;&gt;&gt; AXFR zerial.org @ns3.linode.com<br />
;; global options: +cmd<br />
; Transfer failed.</code></p>
<p><strong>Failed</strong>. No hemos logrado transferir la zona desde ns3.linode.com, lo que nos indica que aparentemente se encuentra bien configurado.<br />
Otro ejemplo usando un dominio que sepamos que tiene esta falla: <strong>finanzas.gov.ar</strong>.<br />
Obtenemos los dos:</p>
<p><code>$ dig NS finanzas.gov.ar</p>
<p>; &lt; &lt;&gt;&gt; DiG 9.8.0-P4 &lt; &lt;&gt;&gt; NS finanzas.gov.ar<br />
;; global options: +cmd<br />
;; Got answer:<br />
;; -&gt;&gt;HEADER&lt; &lt;- opcode: QUERY, status: NOERROR, id: 38476<br />
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 2</p>
<p>;; QUESTION SECTION:<br />
;finanzas.gov.ar.		IN	NS</p>
<p>;; ANSWER SECTION:<br />
finanzas.gov.ar.	7006	IN	NS	ns3.zoneedit.com.<br />
finanzas.gov.ar.	7006	IN	NS	ns9.zoneedit.com.</code></p>
<p>Probamos el segundo dns, <strong>ns9.zoneedit.com</strong>.</p>
<p></code><code>$ dig AXFR finanzas.gov.ar @ns9.zoneedit.com</p>
<p>; &lt; &lt;&gt;&gt; DiG 9.8.0-P4 &lt; &lt;&gt;&gt; AXFR finanzas.gov.ar @ns9.zoneedit.com<br />
;; global options: +cmd<br />
finanzas.gov.ar.	7200	IN	SOA	ns3.zoneedit.com. soacontact.zoneedit.com. 2011266765 2400 360 1209600 300<br />
finanzas.gov.ar.	7200	IN	NS	ns3.zoneedit.com.<br />
finanzas.gov.ar.	7200	IN	NS	ns9.zoneedit.com.<br />
finanzas.gov.ar.	7200	IN	A	201.253.123.35<br />
finanzas.gov.ar.	7200	IN	MX	10 ALT1.ASPMX.L.GOOGLE.COM.<br />
finanzas.gov.ar.	7200	IN	MX	10 ALT2.ASPMX.L.GOOGLE.COM.<br />
finanzas.gov.ar.	7200	IN	MX	0 ASPMX.L.GOOGLE.COM.<br />
finanzas.gov.ar.	7200	IN	MX	20 ASPMX2.GOOGLEMAIL.COM.<br />
finanzas.gov.ar.	7200	IN	MX	20 ASPMX3.GOOGLEMAIL.COM.<br />
finanzas.gov.ar.	7200	IN	MX	20 ASPMX4.GOOGLEMAIL.COM.<br />
finanzas.gov.ar.	7200	IN	MX	20 ASPMX5.GOOGLEMAIL.COM.<br />
mail.finanzas.gov.ar.	7200	IN	CNAME	ghs.google.com.<br />
googleffffffff85ca3fa2.finanzas.gov.ar.	7200 IN	CNAME google.com.<br />
asignaciones.finanzas.gov.ar. 7200 IN	A	186.136.205.252<br />
docs.finanzas.gov.ar.	7200	IN	CNAME	ghs.google.com.<br />
www.finanzas.gov.ar.	7200	IN	A	201.253.123.35<br />
mapas.finanzas.gov.ar.	7200	IN	A	201.253.123.35<br />
finanzas.gov.ar.	7200	IN	SOA	ns3.zoneedit.com. soacontact.zoneedit.com. 2011266765 2400 360 1209600 300<br />
;; Query time: 355 msec<br />
;; SERVER: 66.240.231.42#53(66.240.231.42)<br />
;; WHEN: Thu Aug 11 13:49:31 2011<br />
;; XFR size: 18 records (messages 18, bytes 1138)</code></p>
<p>La transferencia de zona se hizo de forma exitosa.</p>
<p>Para poder analizar de forma automatica un listado de dominios, hice un script en bash que usa DIG para obtener los dns de cada dominio y prueba realizar AXFR por cada dominio en todos sus dns.</p>
<pre name="code" class="c">#!/bin/bash

digcmd=$(which dig)
domain=$1
echo -n "[+] Getting NS domains from $1 ..."
ns_domains=$(dig NS $domain @4.2.2.2|grep ^$domain|awk {'print $5'}|sed 's/.$//g')
echo -e "\t[OK]"
for ns in $ns_domains; do echo "[-] Found: "$ns; done
for ns in $ns_domains
do
	echo -n "Trying Zone Transfer from $ns: "
	$digcmd AXFR $domain @$ns|egrep 'Transfer failed|timed out|end of file'>/dev/null
	if [ $? -eq 1 ]
	then
		echo -e "\tSuccess."
	else
		echo -e "\tFail."
	fi
done</pre>
<p><span id="more-2572"></span></p>
<p>La forma de ejecucion es:</p>
<p><code>]$ sh zonetransfer.sh finanzas.gov.ar<br />
[+] Getting NS domains from finanzas.gov.ar ...	[OK]<br />
[-] Found: ns9.zoneedit.com<br />
[-] Found: ns3.zoneedit.com<br />
Trying Zone Transfer from ns9.zoneedit.com: 	Success.<br />
Trying Zone Transfer from ns3.zoneedit.com: 	Success.</code></p>
<p>Nos indica que es posible realizar una transferencia de zona desde ns3.zoneedit.com y ns9.zoneedit.com para el dominio finanzas.gov.ar.<br />
Tambien podemos pasarle un archivo que contenga una lista de dominios que queramos analizar de forma masiva. Por ejemplo, tenemos un archivo llamado dominios.txt con los dominios:<br />
<code>finanzas.gov.ar<br />
transparencia.cl<br />
gobierno.cl<br />
argentina.gov.ar<br />
gobierno.es<br />
microsoft.com</code></p>
<p>Ejecutamos:</p>
<p><code>$ for dom in $(cat dominios.txt); do sh zonetransfer.sh $dom; done<br />
[+] Getting NS domains from finanzas.gov.ar ...	[OK]<br />
[-] Found: ns9.zoneedit.com<br />
[-] Found: ns3.zoneedit.com<br />
Trying Zone Transfer from ns9.zoneedit.com: 	Success.<br />
Trying Zone Transfer from ns3.zoneedit.com: 	Success.<br />
[+] Getting NS domains from transparencia.cl ...	[OK]<br />
[-] Found: ns02.000webhost.com<br />
[-] Found: ns01.000webhost.com<br />
Trying Zone Transfer from ns02.000webhost.com: 	Fail.<br />
Trying Zone Transfer from ns01.000webhost.com: 	Fail.<br />
[+] Getting NS domains from gobierno.cl ...	[OK]<br />
[-] Found: ga.interior.gov.cl<br />
[-] Found: gb.interior.gov.cl<br />
[-] Found: ns1.presidencia.cl<br />
Trying Zone Transfer from ga.interior.gov.cl: 	Fail.<br />
Trying Zone Transfer from gb.interior.gov.cl: 	Fail.<br />
Trying Zone Transfer from ns1.presidencia.cl: 	Success.<br />
[+] Getting NS domains from argentina.gov.ar ...	[OK]<br />
[-] Found: nsii.arcert.gov.ar<br />
[-] Found: nsii.sgp.gov.ar<br />
Trying Zone Transfer from nsii.arcert.gov.ar: 	Fail.<br />
Trying Zone Transfer from nsii.sgp.gov.ar: 	Fail.<br />
[+] Getting NS domains from gobierno.es ...	[OK]<br />
[-] Found: sun.rediris.es<br />
[-] Found: chico.rediris.es<br />
[-] Found: dns1.mpr.es<br />
[-] Found: dns2.mpr.es<br />
Trying Zone Transfer from sun.rediris.es: 	Fail.<br />
Trying Zone Transfer from chico.rediris.es: 	Fail.<br />
Trying Zone Transfer from dns1.mpr.es: 	Fail.<br />
Trying Zone Transfer from dns2.mpr.es: 	Fail.<br />
[+] Getting NS domains from microsoft.com ...	[OK]<br />
[-] Found: ns3.msft.net<br />
[-] Found: ns4.msft.net<br />
[-] Found: ns1.msft.net<br />
[-] Found: ns2.msft.net<br />
[-] Found: ns5.msft.net<br />
Trying Zone Transfer from ns3.msft.net: 	Fail.<br />
Trying Zone Transfer from ns4.msft.net: 	Fail.<br />
Trying Zone Transfer from ns1.msft.net: 	Fail.<br />
Trying Zone Transfer from ns2.msft.net: 	Fail.<br />
Trying Zone Transfer from ns5.msft.net: 	Fail.</code></p>
<p>Ya tenemos el <em>output</em> del script, donde nos dice que los dns de <em>finanzas.gov.ar</em> y uno de <em>gobierno.cl</em> permite AXFR.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Fseguridad%2Fbusqueda-de-servicios-dns-con-transferencia-de-zona-abierta-axfr%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/seguridad/busqueda-de-servicios-dns-con-transferencia-de-zona-abierta-axfr/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/seguridad/busqueda-de-servicios-dns-con-transferencia-de-zona-abierta-axfr/"  data-text="Búsqueda de servicios DNS con Transferencia de Zona abierta (AXFR)" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/seguridad/busqueda-de-servicios-dns-con-transferencia-de-zona-abierta-axfr/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>[Tip] bzip2 vs pbzip2: Comprimir con bzip2 en forma paralela</title>
		<link>http://blog.zerial.org/linux/tip-bzip2-vs-pbzip2-comprimir-con-bzip2-en-forma-paralela/</link>
		<comments>http://blog.zerial.org/linux/tip-bzip2-vs-pbzip2-comprimir-con-bzip2-en-forma-paralela/#comments</comments>
		<pubDate>Sat, 11 Jun 2011 04:36:45 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[bzip]]></category>
		<category><![CDATA[bzip2]]></category>
		<category><![CDATA[compresion]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[pbzip2]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2331</guid>
		<description><![CDATA[Ya todos conocemos &#8220;bzip2&#8220;, un algoritmo de compresión sin perdida, pero no todos conocen la existencia del proyecto &#8220;pbzip2&#8220;, una implementación &#8220;paralela&#8221; del anterior; un algoritmo de compresión, basado en bzip2, que aprovecha los recursos de una máquina con SMP (Symmetric Multi-Processing). PBZIP2 is a parallel implementation of the bzip2 block-sorting file compressor that uses [...]]]></description>
			<content:encoded><![CDATA[<p>Ya todos conocemos &#8220;<a href="http://www.bzip.org/">bzip2</a>&#8220;, un algoritmo de compresión sin perdida, pero no todos conocen la existencia del proyecto &#8220;<a href="http://www.compression.ca/pbzip2/">pbzip2</a>&#8220;, una implementación &#8220;paralela&#8221; del anterior; un algoritmo de compresión, basado en bzip2, que aprovecha los recursos de una máquina con SMP (Symmetric Multi-Processing).</p>
<blockquote><p>PBZIP2 is a parallel implementation of the bzip2 block-sorting file compressor that uses pthreads and achieves near-linear speedup on SMP machines. The output of this version is fully compatible with bzip2 v1.0.2 or newer</p></blockquote>
<p><a href="http://blog.zerial.org/wp-content/uploads/2011/06/intro.png"><img class="aligncenter size-full wp-image-2333" title="pbzip2 - bzip2 multi hilo" src="http://blog.zerial.org/wp-content/uploads/2011/06/intro.png" alt="" width="624" height="125" /></a><center>(<em>Intel(R) Core(TM)2 Duo CPU     P8700  @ 2.53GHz</em>)</center></p>
<p>En la imagen pueden ver los 3 procesos de pbzip2 consumiendo los 2 CPUs al 100%, de esta forma el tiempo de compresión es practicamente la mitad.<br />
A simple vista, si bzip2 se demora 30 segundos, pbzip2 demora 15. Por ejemplo, con un archivo de texto (el típico dump sql) de tamaño 137Mb:<br />
<code>$ time bzip2 poc.sql </p>
<p>real	0m33.010s<br />
user	0m32.788s<br />
sys	0m0.147s</code></p>
<p>Y con pbzip2:<br />
<code>$ time pbzip2 poc.sql </p>
<p>real	0m19.827s<br />
user	0m36.868s<br />
sys	0m0.960s</code></p>
<p><span id="more-2331"></span></p>
<p>Parallel-bzip2 se encuentra oficialmente en la mayoría de los repositorios, por ejemplo en:<br />
- <a href="http://packages.debian.org/squeeze/pbzip2">Debian</a><br />
- <a href="http://www.archlinux.org/packages/community/i686/pbzip2/">Archlinux</a><br />
- <a href="http://software.opensuse.org/search?q=pbzip2&#038;baseproject=openSUSE%3A11.4&#038;lang=en&#038;exclude_debug=true">OpenSuSe</a></p>
<p>El software se instala y se usa identico al bzip2 normal.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Ftip-bzip2-vs-pbzip2-comprimir-con-bzip2-en-forma-paralela%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/tip-bzip2-vs-pbzip2-comprimir-con-bzip2-en-forma-paralela/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/tip-bzip2-vs-pbzip2-comprimir-con-bzip2-en-forma-paralela/"  data-text="[Tip] bzip2 vs pbzip2: Comprimir con bzip2 en forma paralela" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/tip-bzip2-vs-pbzip2-comprimir-con-bzip2-en-forma-paralela/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Tip: Destrucción de archivos y datos en GNU/Linux</title>
		<link>http://blog.zerial.org/seguridad/tip-destruccion-de-archivos-y-datos-en-gnulinux/</link>
		<comments>http://blog.zerial.org/seguridad/tip-destruccion-de-archivos-y-datos-en-gnulinux/#comments</comments>
		<pubDate>Sun, 01 May 2011 20:03:22 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[dd]]></category>
		<category><![CDATA[destruccion]]></category>
		<category><![CDATA[eliminacion]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[shred]]></category>
		<category><![CDATA[wipe]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2108</guid>
		<description><![CDATA[Cuando digo &#8220;destrucción&#8221; de información no me refiero a simpemente eliminarla o purgarla del disco duro, sino a sobrescribirla y hacer imposible su restauración. Existen varias utilidades y formas de hacerlo, pero yo les mostraré tres utilidades/herramientas que nos ayudarán: dd, shred y wipe. La primera, nos ayudará a zero-izar un sector de nuestro disco [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-2207" style="margin: 3px;" title="data-loss" src="http://blog.zerial.org/wp-content/uploads/2011/05/data-loss.jpg" alt="" width="107" height="108" />Cuando digo &#8220;destrucción&#8221; de información no me refiero a simpemente eliminarla o purgarla del disco duro, sino a sobrescribirla y hacer imposible su restauración. Existen varias utilidades y formas de hacerlo, pero yo les mostraré tres utilidades/herramientas que nos ayudarán: <strong>dd</strong>, <strong>shred</strong> y <strong>wipe</strong>. La primera, nos ayudará a zero-izar un sector de nuestro disco duro, memoria o lo que sea. Las otras dos son herramientas que nos permitiran sobreescribir y eliminar definitivamente un archivo para que sea irrecuperable. <strong>shred</strong> viene por defecto en <em>casi</em> todas las distribuciones unixlike, <strong>wipe</strong> se puede instalar en cualquiera.</p>
<p>Según los <em>manpages</em>,</p>
<blockquote><p><strong>wipe:</strong><br />
Wipe  is  a  secure file wiping utility. There are some low level issues that must be taken into consideration. One of these is that there must be some sort of write barrier between passes. Wipe uses fdatasync(2) (or fsync(2)) as a write barrier, or if fsync(2) isn&#8217;t available, the file is opened with the O_DSYNC or O_SYNC flag. For wipe to be effective, each pass must be completely  written.  To ensure this, the drive must support some form of a write barrier, write cache flush, or write cache disabling. SCSI supports ordered command tags, has a force media access bit for commands, and write cache can be disable on mode page 8. IDE/ATA drives support write cache flushes and write cache disabling. Unfortunetly, not all drives actually disable write cache when asked to.  Those  drives  are broken. Write caching should always be disabled, unless your system is battery backed and always powers down cleanly.</p></blockquote>
<blockquote><p><strong>shred:</strong><br />
Overwrite the specified FILE(s) repeatedly, in order to make it harder for even very expensive hardware probing to recover the data.</p></blockquote>
<blockquote><p><strong>dd: </strong><br />
Copy a file, converting and formatting according to the operands</p></blockquote>
<p>Vamos a lo practico.</p>
<p><span id="more-2108"></span></p>
<h3>dd</h3>
<p>Nos servirá cuando queramos eliminar información de un sector del disco, partición o disco completo, llenandolo de <em>zeros</em>. Es muy simple, basta con ejecutar:<br />
<code># dd if=/dev/zero of=/dev/sda</code><br />
En este caso, llenaremos de <em>zeros</em> el disco <strong>sda</strong>, eliminando el mbr, tabla de particiones, data, etc. Tambien podemos aplicarlo a una partición especifica<br />
<code># dd if=/dev/zero of=/dev/sdb1</code><br />
O bien a un archivo,<br />
<code># dd if=/dev/zero of=my_file.iso</code><br />
Podemos jugar con los parametros <strong>bs</strong>, <strong>count</strong>, <strong>seek</strong>, etc.</p>
<h3>wipe &#038; shred</h3>
<p>La ejecución de estas dos herramientas es sencilla, basta con ejecutar el comando y luego el nombre del archivo:<br />
<code># shred file.jpg</code><br />
o<br />
<code># wipe file.jpg</code></p>
<p>Ambos comando son bien personalizables, puedes decirle que al terminar lo complete con zeros, que los elimina, que los sobre escriba una cantidad X de veces y luego lo elimine, o que no lo elimine, etc.</p>
<p>Para más detalles recomiendo leer el manpage de cada uno.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Fseguridad%2Ftip-destruccion-de-archivos-y-datos-en-gnulinux%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/seguridad/tip-destruccion-de-archivos-y-datos-en-gnulinux/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/seguridad/tip-destruccion-de-archivos-y-datos-en-gnulinux/"  data-text="Tip: Destrucción de archivos y datos en GNU/Linux" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/seguridad/tip-destruccion-de-archivos-y-datos-en-gnulinux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>simple-pytweet: El reemplazo de twitsh</title>
		<link>http://blog.zerial.org/linux/simple-pytweet-el-reemplazo-de-twitsh/</link>
		<comments>http://blog.zerial.org/linux/simple-pytweet-el-reemplazo-de-twitsh/#comments</comments>
		<pubDate>Sat, 23 Apr 2011 20:04:10 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Mis cosas]]></category>
		<category><![CDATA[Proyectos]]></category>
		<category><![CDATA[aplicacoines]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[scripts]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2175</guid>
		<description><![CDATA[Hace un tiempo publiqué un script que servia para twittear de forma rapida y sin tener ninguna &#8220;aplicación&#8221; aparatosa, el script estaba escrito en bash y en ese tiempo usaba metodo de autenticación &#8220;plana&#8221; e &#8220;insegura&#8221;. Ahora reescribí el código en python y usando OAuth. El nuevo script se llama simple-pytweet y si usar Archlinux [...]]]></description>
			<content:encoded><![CDATA[<p>Hace un tiempo publiqué un script que servia para twittear de forma rapida y sin tener ninguna &#8220;aplicación&#8221; aparatosa, el script estaba escrito en bash y en ese tiempo usaba metodo de autenticación &#8220;plana&#8221; e &#8220;insegura&#8221;. Ahora reescribí el código en python y usando OAuth.<br />
El nuevo script se llama simple-pytweet y si usar Archlinux puedes usar el <a href="http://aur.archlinux.org/packages/simple-pytweet/PKGBUILD">PKGBUILD</a> que <a href="http://aur.archlinux.org/packages.php?ID=48445">publiqué en AUR</a>, sino puedes descargar el tarball desde <a href="http://dev.zerial.org/simple-pytweet">http://dev.zerial.org/simple-pytweet</a>.</p>
<p>El código es simple, requiere <em>python-twitter</em> y <em>pyzenity</em> y lee los parametros de OAuth como TOKEN y SECRET etc desde un archivo llamado <em>.simple-pytweet</em> en tu $HOME.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Fsimple-pytweet-el-reemplazo-de-twitsh%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/simple-pytweet-el-reemplazo-de-twitsh/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/simple-pytweet-el-reemplazo-de-twitsh/"  data-text="simple-pytweet: El reemplazo de twitsh" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/simple-pytweet-el-reemplazo-de-twitsh/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tip: Mantener sesiones ssh activas con autossh</title>
		<link>http://blog.zerial.org/linux/tip-mantener-sesiones-ssh-activas-con-autossh/</link>
		<comments>http://blog.zerial.org/linux/tip-mantener-sesiones-ssh-activas-con-autossh/#comments</comments>
		<pubDate>Mon, 07 Mar 2011 14:25:04 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[autossh]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[tuneles]]></category>
		<category><![CDATA[tunneling]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2116</guid>
		<description><![CDATA[autossh (1) &#8211; monitor and restart ssh sessions Esta herramienta es muy util cuando queremos mantener las sesiones activas y mantener los tuneles que hemos hecho con ssh. En simples palabras lo que hace este programita es monitorear la sesión y cuando se pierde la conexion, vuelve a conectarse. Lo ideal es trabajar con llaves [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>autossh (1)          &#8211; monitor and restart ssh sessions</p></blockquote>
<p>Esta herramienta es muy util cuando queremos mantener las sesiones activas y mantener los <a href="http://blog.zerial.org/seguridad/ssh-port-forwarding-y-tunneling-saltarse-las-restricciones-del-firewall/">tuneles</a> que hemos hecho con ssh. En simples palabras lo que hace este programita es monitorear la sesión y cuando se pierde la conexion, vuelve a conectarse.<br />
Lo ideal es trabajar con llaves públicas/privadas para autenticarse con el servidor, para que al intentar restablecer la conexion no pida la contraseña. Le pasamos a &#8220;autossh&#8221; los mismos parámetros que a ssh, por ejemplo:<br />
<code>autossh -L5022:10.0.0.11:22 -L5023:10.0.0.15:22 -L5024:10.0.0.20:22 10.0.0.1</code><br />
Para hacer un <em>bind</em> de puertos locales a distintas maquinas remotas. O<br />
<code>autossh -R2200:localhost:22 example.com</code><br />
Para hacer <em>bind</em> de puertos remotos hacia nuestra maquina local.</p>
<p>Link: <a href="http://www.harding.motd.ca/autossh/">http://www.harding.motd.ca/autossh/</a></p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Ftip-mantener-sesiones-ssh-activas-con-autossh%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/tip-mantener-sesiones-ssh-activas-con-autossh/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/tip-mantener-sesiones-ssh-activas-con-autossh/"  data-text="Tip: Mantener sesiones ssh activas con autossh" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/tip-mantener-sesiones-ssh-activas-con-autossh/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[PoC] Cifrado del historial de bash (.bash_history)</title>
		<link>http://blog.zerial.org/linux/poc-cifrado-del-historial-de-bash-bash_history/</link>
		<comments>http://blog.zerial.org/linux/poc-cifrado-del-historial-de-bash-bash_history/#comments</comments>
		<pubDate>Thu, 03 Feb 2011 14:18:16 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Documentacion]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Privacidad]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[bash_history]]></category>
		<category><![CDATA[cifrado]]></category>
		<category><![CDATA[comandos]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[gnupg]]></category>
		<category><![CDATA[gpg]]></category>
		<category><![CDATA[pgp]]></category>
		<category><![CDATA[privacidad]]></category>
		<category><![CDATA[root]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2077</guid>
		<description><![CDATA[El otro día, en mis momentos de ocio, se me ocurrio buscar una forma de cifrar el historial de comandos que guarda bash. Hay servidores que sólo tenemos -o hemos ganado- acceso como usuarios, y no nos gusta que el administrador (root) vea lo que hacemos o los comandos que hemos ejecutado. Existen varias formas [...]]]></description>
			<content:encoded><![CDATA[<p>El otro día, en mis momentos de ocio, se me ocurrio buscar una forma de cifrar el historial de comandos que guarda bash. Hay servidores que sólo tenemos -o hemos ganado- acceso como usuarios, y no nos gusta que el administrador (root) vea lo que hacemos o los comandos que hemos ejecutado. Existen varias formas de ir contra eso, por ejemplo eliminar el bash_history o bien editarlo cada vez que hacemos algo que no queremos que sepan. Esta forma es un poco mas rebuscada y busca cifrar mediante GPG el historial, de manera tal que el root no podrá leer lo que dice el archivo.</p>
<p>La logica es bastante simple:</p>
<ol>
<li>Cuando ingresamos (login) a nuestra cuenta desciframos el bash history usando nuestra clave privada</li>
<li>Cuando salimos (logout) ciframos el archivo con nuestra clave publica.</li>
</ol>
<p>Para lograrlo vamos a necesitar tener una clave gpg y configurar el comportamiento del login y logout con unos scripts que les mostraré a continuación.</p>
<p><span id="more-2077"></span></p>
<p>Vamos a usar el usuario &#8220;usuario&#8221; de prueba. Primero, creamos la clave GPG:</p>
<p><code>[usuario@belcebu ~]$ gpg --gen-key</code></p>
<p>En mi caso, generé una clave de 2048 bits con el UID<strong> Usuario de Prueba (Historial Cifrado) &lt;test@zerial.org&gt;</strong></p>
<p>Editamos el archivo .<strong>bashrc</strong> y agregamos las siguientes lineas</p>
<pre class="c" name="code">gpg -d -r "Usuario de Prueba (Historial Cifrado) &lt;test@zerial.org>" $HISTFILE >$HOME/._bash_history
mv $HOME/._bash_history $HISTFILE</pre>
<p>Luego creamos el siguiente script, lo llamaremos <strong>.crypt_history.sh</strong>:</p>
<pre class="c" name="code">#!/bin/bash

sleep 2;
gpg -e -r "Usuario de Prueba (Historial Cifrado) &lt;test@zerial.org>" $HOME/.bash_history
mv $HOME/.bash_history.gpg $HOME/.bash_history</pre>
<p>Y agregamos la línea</p>
<pre name="code" class="c">nohup sh $HOME/.crypt_history.sh &#038;</pre>
<p>Al archivo <strong>.bash_logout</strong></p>
<p>De esta forma, al ingresar como <em>usuario</em> se ejecutará automaticamente el comando que descifra el .bash_history y cuando salimos, será cifrado.</p>
<blockquote><p>[root@belcebu ~]# cat /home/usuario/.bash_history<br />
zå¬ÈùrèÿJx¨¸QÕ{¥	±5#ºcHb¶÷çFÀ®ú4ÞÃØÝ­xbZúF çïkågµNÒ¸5îÅ£	³KÝ0U¯º±YHú#ÙÞ©Ù&#038;¶þ¢Lyug<br />
                                                                                                þ<br />
ÓL¹ðú®&#038;°í¾vI?V\9Õx&#8217;{4hÐaÜdÛPÅ©²¦öcñm¾O&#8217;µÔ2Éªðá¸ó²ëÕÁ²Nª<n æq#È`>OÈ`A²U´¬Uîkï<br />
u:÷ÛASþdè¶]1ê¬GBXLT¥3þ0Ñ_8uóâEQ¯`.¾Kn3AÒy»çÌ¡øyà$ßÙkíKzÜ§¸×&#8217;Øx¿S¥<br />
                                                                 ÂâÆâveó´Î/¸)aýü4µÅ:mCú}1Á$äãÑõæ>¥ÈM9IÈÛ³=PË^q{Ñ<br />
3º ë]Å¿74ë*Ø<br />
Öuå¦<br />
   [root@belcebu ~]#</n></p></blockquote>
<p>Y si ingresamos como usuario &#8230;</p>
<blockquote><p>gpg: encrypted with 2048-bit RSA key, ID C8F972E8, created 2011-02-03<br />
      &#8220;Usuario de Prueba (Historial Cifrado) <test @zerial.org>&#8221;<br />
[usuario@belcebu ~]$ history<br />
    1  cat nohup.out<br />
    2  vim .bashrc<br />
    3  vim .crypt_history.sh<br />
    4  ls<br />
    5  history<br />
    6  ls -lia<br />
    7  history<br />
[usuario@belcebu ~]$ </test></p></blockquote>
<p>Existe un pequeño detalle, es que el root puede ingresar como usuario y de esta forma poder el historial. Pero para esto, nosotros debemos proteger nuestro cifrado con un passphrase, asi cuando el root quiera ingresar como usuario, éste le pedira una clave para poder descifrar el archivo bash_history, si el root no maneja esa clave no podrá ver lo que hay.</p>
<p>Esto es solo una prueba de concepto (PoC), se puede hacer cualquier modificación a los scripts usados para adaptarlos a otras necesidades y obviamente mejorar el cifrado mismo del bash_history.<br />
<strong>Nota: </strong>Existen varios <em>peros</em> en esta forma de cifrar, que obviamente pueden ser mejoradas, por ejemplo, podria existir algun conflicto cuando se inicia mas de una vez la sesion del usuario.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Fpoc-cifrado-del-historial-de-bash-bash_history%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/poc-cifrado-del-historial-de-bash-bash_history/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/poc-cifrado-del-historial-de-bash-bash_history/"  data-text="[PoC] Cifrado del historial de bash (.bash_history)" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/poc-cifrado-del-historial-de-bash-bash_history/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Tethering con un BlackBerry 8520 en Archlinux via bluetooth</title>
		<link>http://blog.zerial.org/linux/thethering-bluetooth-usar-como-modem-telefono-gnu-linux/</link>
		<comments>http://blog.zerial.org/linux/thethering-bluetooth-usar-como-modem-telefono-gnu-linux/#comments</comments>
		<pubDate>Wed, 05 Jan 2011 17:09:10 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Documentacion]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[wireless]]></category>
		<category><![CDATA[3g]]></category>
		<category><![CDATA[archlinux]]></category>
		<category><![CDATA[blackberry]]></category>
		<category><![CDATA[bluetooth]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[manual]]></category>
		<category><![CDATA[modem]]></category>
		<category><![CDATA[movil]]></category>
		<category><![CDATA[tethering]]></category>
		<category><![CDATA[trucos]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2058</guid>
		<description><![CDATA[Si bien lo probé con Archlinux, tambien hay evidencias que funciona en Debian aunque, independiente de la distribución, debería funcionar para cualquiera. Tambien debería funcionar con cualquier celular que soporte &#8220;Dial Up&#8220;. Debemos tener instaladas las herramientas de bluetooth: bluez-utils bluez-libs dbus wvdial Primero, debemos poner el bluetooth del teléfono en modo escucha y escanearlo [...]]]></description>
			<content:encoded><![CDATA[<p>Si bien lo probé con Archlinux, tambien hay evidencias que funciona en Debian aunque, independiente de la distribución, debería funcionar para cualquiera. Tambien debería funcionar con cualquier celular que soporte &#8220;<em>Dial Up</em>&#8220;.<br />
Debemos tener instaladas las herramientas de bluetooth: <strong>bluez-utils bluez-libs dbus wvdial</strong></p>
<p>Primero, debemos poner el bluetooth del teléfono en modo <em>escucha</em> y escanearlo con nuestro disponisitivo, para ver si soporte el modo.</p>
<p><code>[root@balcebu zerial]# hcitool scan<br />
Scanning ...<br />
        F4:0B:93:DB:90:FF       BlackBerry 8520<br />
[root@balcebu zerial]#</code></p>
<p>Y vemos si soporta el modo <em>Dial Up</em></p>
<p><code>root@balcebu zerial]# sdptool browse F4:0B:93:DB:90:FF<br />
Browsing F4:0B:93:DB:90:FF ...<br />
[...]<br />
Service Name: Dialup Networking<br />
Service RecHandle: 0x10000<br />
Service Class ID List:<br />
  "<strong>Dialup Networking</strong>" (0x1103)<br />
  "Generic Networking" (0x1201)<br />
Protocol Descriptor List:<br />
  "L2CAP" (0x0100)<br />
  "RFCOMM" (0x0003)<br />
<strong>    Channel: 1</strong><br />
Profile Descriptor List:<br />
  "<strong>Dialup Networking</strong>" (0x1103)<br />
    Version: 0x0100<br />
[...]</code></p>
<p>En este caso soporta, en el canal 1.</p>
<p><span id="more-2058"></span></p>
<p>Hay que configurar el archivo /etc/bluetooth/rfcomm.conf</p>
<pre name="code" class="c">#
# RFCOMM configuration file.
#

rfcomm0 {
#       # Automatically bind the device at startup
        bind yes;
#
#       # Bluetooth address of the device
        device F4:0B:93:DB:90:FF;
#
#       # RFCOMM channel for the connection
        channel 1;
#
#       # Description of the connection
        comment "BlackBerry 8520";
}</pre>
<p>&#8220;device&#8221; corresponde a la MAC encontrada al hacer el scan, es decir, la de nuestro dispositivo movil y Channel, el canal en el cual está soportado el &#8220;Dial Up&#8221;.</p>
<p>Luego ejecutamos <strong>hidd &#8211;connect F4:0B:93:DB:90:FF</strong> y <strong>rfcomm connect 0</strong> para establecer la conexion con el telefono.</p>
<p><code>[root@balcebu bluetooth]# hidd --connect F4:0B:93:DB:90:FF<br />
[root@balcebu bluetooth]# rfcomm connect 0<br />
Connected /dev/rfcomm0 to F4:0B:93:DB:90:FF on channel 1<br />
Press CTRL-C for hangup</code></p>
<p>En el telefono debería aparecer la opción de &#8220;emparejamiento&#8221;. Ahora debemos configurar <strong>wvdial</strong>, editamos el archivo <strong>/etc/wvdial.conf</strong> y agregamos:</p>
<pre name="code" class="c">[Dialer blackberry]
Modem = /dev/rfcomm0
Baud = 115200
Dial Command = ATDT
Init2 = AT+CGDCONT=1,"IP","imovil.entelpcs.cl"
FlowControl = crtscts
Modem Type = Analog Modem
Username = entelpcs
Password = entelpcs
Stupid Mode = 1
New PPPD = yes
Phone = *99#</pre>
<p>En este caso, estoy conectado con el operador &#8220;entelpcs&#8221; y los datos corresponden a ésta compañía, en el caso de pertenecer a otro proveedor, deben camiar los datos&#8221; Init2, Username y Password por los que correspondan.<br />
Una vez añadida la configuración al archivo, ejecutamos</p>
<p><code># wvdial blackberry<br />
--&gt; WvDial: Internet dialer version 1.61<br />
--&gt; Cannot get information for serial port.<br />
--&gt; Initializing modem.<br />
--&gt; Sending: ATZ<br />
ATZ<br />
OK<br />
--&gt; Sending: AT+CGDCONT=1,"IP","imovil.entelpcs.cl"<br />
AT+CGDCONT=1,"IP","imovil.entelpcs.cl"<br />
OK<br />
--&gt; Modem initialized.<br />
--&gt; Sending: ATDT*99#<br />
--&gt; Waiting for carrier.<br />
ATDT*99#<br />
CONNECT<br />
--&gt; Carrier detected.  Starting PPP immediately.<br />
--&gt; Starting pppd at Wed Jan  5 09:52:13 2011<br />
--&gt; Pid of pppd: 24392<br />
--&gt; Using interface ppp0<br />
--&gt; pppd: Ð¶·¸[12][10]<br />
--&gt; pppd: Ð¶·¸[12][10]<br />
--&gt; pppd: Ð¶·¸[12][10]<br />
--&gt; pppd: Ð¶·¸[12][10]<br />
--&gt; local  IP address 186.10.247.119<br />
--&gt; pppd: Ð¶·¸[12][10]<br />
--&gt; remote IP address 169.254.1.1<br />
--&gt; pppd: Ð¶·¸[12][10]<br />
--&gt; primary   DNS address 200.63.56.3<br />
--&gt; pppd: Ð¶·¸[12][10]<br />
--&gt; secondary DNS address 200.63.56.4<br />
--&gt; pppd: Ð¶·¸[12][10] </code></p>
<p>Listo, el proveedor ya me asignó una ip publica y puedo navegar a traves de mi celular.</p>
<p>Referencias:</p>
<p>Bluetooth GPRS Howto: <a href="https://wiki.archlinux.org/index.php/Bluetooth_GPRS_Howto">https://wiki.archlinux.org/index.php/Bluetooth_GPRS_Howto</a><br />
Configurando un Blackberry como Modem en Debian: <a href="http://apostols.net/?p=176">http://apostols.net/?p=176</a><br />
Guía Bluetooth de Gentoo Linux: <a href="http://www.gentoo.org/doc/es/bluetooth-guide.xml">http://www.gentoo.org/doc/es/bluetooth-guide.xml</a></p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Fthethering-bluetooth-usar-como-modem-telefono-gnu-linux%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/thethering-bluetooth-usar-como-modem-telefono-gnu-linux/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/thethering-bluetooth-usar-como-modem-telefono-gnu-linux/"  data-text="Tethering con un BlackBerry 8520 en Archlinux via bluetooth" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/thethering-bluetooth-usar-como-modem-telefono-gnu-linux/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>[Tip] AND (&amp;&amp;) y OR (&#124;&#124;) en bash</title>
		<link>http://blog.zerial.org/linux/tip-and-y-or-en-bash/</link>
		<comments>http://blog.zerial.org/linux/tip-and-y-or-en-bash/#comments</comments>
		<pubDate>Fri, 17 Dec 2010 01:24:05 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[tip]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2021</guid>
		<description><![CDATA[Parece algo muy simple, pero estoy seguro que muchos no lo saben: Usar los operadores lógicos &#38;&#38; y &#124;&#124; al momento de crear scripts o ejecutar comandos en bash. Podemos condicionar la ejecución de un comando en función de otro; por ejemplo, si falla el primer comando, entonces no ejecuto el segundo, o bien, si [...]]]></description>
			<content:encoded><![CDATA[<p>Parece algo muy simple, pero estoy seguro que muchos no lo saben: Usar los operadores lógicos <strong>&amp;&amp;</strong> y <strong>||</strong> al momento de crear scripts o ejecutar comandos en bash.<br />
Podemos condicionar la ejecución de un comando en función de otro; por ejemplo, si falla el primer comando, entonces no ejecuto el segundo, o bien, si no se ejecuta el primero entonces ejecuto el segundo, dependiendo de lo que necesitemos.<br />
Ejemplos:</p>
<p>Ejecutar el comando2 solo si se ejecuta el comando1:<br />
<code>$ comando1 &amp;&amp; comando2</code></p>
<p>Ejecutar el comando2 solo si <strong>no</strong> se ejecuta el primero<br />
<code>$ comando1 || comando2</code></p>
<p>Sería así:<br />
<code>[zerial@balcebu ~]$ comando1 || echo "Como comando1 no existe, entonces ejecuto el echo"<br />
bash: comando1: command not found<br />
Como comando1 no existe, entonces ejecuto el echo<br />
[zerial@balcebu ~]$ echo "El primer echo se ejecuta, pero el segnudo no" || echo "Como comando1 no existe, entonces ejecuto el echo"<br />
El primer echo se ejecuta, pero el segnudo no<br />
[zerial@balcebu ~]$ </code></p>
<p>Es muy útil cuando queremos programar scripts para ejecutar tareas condicionadas a otros comandos.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Ftip-and-y-or-en-bash%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/tip-and-y-or-en-bash/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/tip-and-y-or-en-bash/"  data-text="[Tip] AND (&#038;&#038;) y OR (||) en bash" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/tip-and-y-or-en-bash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Esteganografía: Ofuscación de archivos (parte 3)</title>
		<link>http://blog.zerial.org/seguridad/esteganografia-ofuscacion-de-archivos-parte-3/</link>
		<comments>http://blog.zerial.org/seguridad/esteganografia-ofuscacion-de-archivos-parte-3/#comments</comments>
		<pubDate>Thu, 02 Dec 2010 15:59:06 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[esconder archivos]]></category>
		<category><![CDATA[esteganografia]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[ofuscacion]]></category>
		<category><![CDATA[ofuscacion de archivos]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[split]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1981</guid>
		<description><![CDATA[Luego de haber presentado la primera y segunda parte de este post, les presentaré un script que automatiza el proceso de &#8220;esconder&#8221; y &#8220;encontrar&#8221; el archivo y además mostrar como podemos solucionar el problema de los &#8220;bytes&#8221; para poder separar el archivo original. Es un simple script en bash, que usa los mismos comandos y [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-1984" style="margin: 3px;" title="Steganography" src="http://blog.zerial.org/wp-content/uploads/2010/12/Steganography.jpg" alt="" width="85" height="85" />Luego de haber presentado la <a href="http://blog.zerial.org/seguridad/ofuscacion-de-archivos-parte-1/">primera</a> y <a href="http://blog.zerial.org/seguridad/esteganografia-ofuscacion-de-archivos-parte-2/">segunda</a> parte de este post, les presentaré un script que automatiza el proceso de &#8220;esconder&#8221; y &#8220;encontrar&#8221; el archivo y además mostrar como podemos solucionar el problema de los &#8220;bytes&#8221; para poder separar el archivo original. Es un simple script en bash, que usa los mismos comandos y técnicas mostradas en los <a href="http://blog.zerial.org/?s=Esteganograf%C3%ADa">post anteriores</a>, con comandos basicos como cat, split, etc. Para &#8220;marcar&#8221; la división entre el archivo oculto dentro del archivo original lo haremos de una forma bien simple.</p>
<p><strong>Marcar la división entre los archivos</strong></p>
<p>Para saber exactamente el byte donde debemos cortar con split el archivo para poder separarlo, vamos a agregar, al final de nuestro archivo ofuscado, una linea en texto plano con un numero X = bytes. Puede sonar absurdo por lo simple que es, pero es posible.</p>
<p><span id="more-1981"></span></p>
<p>¿Cómo hacerlo? Es muy simple, tambien usamos <em>echo</em>:<br />
<code>$ echo XXXX &gt;&gt;archivo_ofuscado.jpg"</code><br />
Donde XXXXX corresponde a la cantidad de bytes que la puedes saber por ejemplo con &#8220;ls -l&#8221; sobre el archivo.</p>
<p>Entonces el procedimiento para &#8220;separar&#8221; los archivos sería leer la última línea del archivo y hacer un <em>split -b XXXX</em>.</p>
<p>Ya habiendo aprendido a ocultar y a encontrar archivos, podemos automatizarlo y usar el siguiente script:</p>
<p><strong>esconder.sh</strong></p>
<pre name="code" class="c">
#!/bin/bash

if [ $# -eq 3 ]; then
        separador=$(ls -l $1|awk -F ' ' '{print $5}');
        cat $1 $2 > $3
        echo -e "\n$separador" >>$3
        echo "Archivo $3 creado.";
else
        echo "Sintaxis: $0 archivo1 archivo2 salida"
        exit 1;
fi
</pre>
<p><strong>encontrar.sh</strong></p>
<pre name="code" class="c">
#!/bin/bash

if [ $# -eq 1 ]; then
        separador=$(tail -1 $1);
        sed -i 's/^$separador$//g' $1
        split -b $separador $1
else
        echo "Sintaxis: $0 archivo"
fi
</pre>
<p>Pueden descargar los scripts desde aca:<br />
  * <a href="http://blog.zerial.org/files/esconder.sh.gz">esconder.sh.gz</a> (4Kb)<br />
  * <a href="http://blog.zerial.org/files/encontrar.sh.gz">encontrar.sh.gz</a> (4Kb)</p>
<p>Como pueden ver, para esconder archivos y poder &#8220;separarlos&#8221;, ya sea para enviar informacion ilegible o escondida a otras personas basta con saber usar algunos comandos basicos de unix. Si bien no es una forma an &#8220;profesional&#8221; de hacerlo, es muy simple y no se necesita un programa robusto, simplemente un par de líneas en bash.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Fseguridad%2Festeganografia-ofuscacion-de-archivos-parte-3%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/seguridad/esteganografia-ofuscacion-de-archivos-parte-3/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/seguridad/esteganografia-ofuscacion-de-archivos-parte-3/"  data-text="Esteganografía: Ofuscación de archivos (parte 3)" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/seguridad/esteganografia-ofuscacion-de-archivos-parte-3/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Esteganografía: Ofuscación de archivos (parte 2)</title>
		<link>http://blog.zerial.org/seguridad/esteganografia-ofuscacion-de-archivos-parte-2/</link>
		<comments>http://blog.zerial.org/seguridad/esteganografia-ofuscacion-de-archivos-parte-2/#comments</comments>
		<pubDate>Fri, 19 Nov 2010 14:10:22 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Documentacion]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[esconder archivos]]></category>
		<category><![CDATA[esteganografia]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[ofuscacion]]></category>
		<category><![CDATA[ofuscacion de archivos]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[split]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1935</guid>
		<description><![CDATA[Luego de haber enseñado como ofuscar un archivo dentro de otro, llegó el momento de saber como &#8220;separarlos&#8221;. En la primera parte, hubo comentarios de quienes tenian problemas porque se corrompía el archivo y no todas las versiones de unrar o unzip lo podían descomprimir, ya que obviamente, el archivo tiene muchos bits y bytes [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-1970" style="margin: 3px;" title="Microsoft Word - Document1" src="http://blog.zerial.org/wp-content/uploads/2010/11/fsplit.jpg" alt="" width="128" height="83" />Luego de haber enseñado como<em> ofuscar</em> un archivo dentro de otro, llegó el momento de saber como &#8220;separarlos&#8221;. En la primera parte, hubo comentarios de quienes tenian problemas porque se corrompía el archivo y no todas las versiones de unrar o unzip lo podían descomprimir, ya que obviamente, el archivo tiene muchos bits y bytes extras que no corresponden al zip, al rar o al archivo que escondimos. Una vez <em>separado</em> el archivo que hemos <em>escondido</em>, evitaremos todos estos problemas y tendremos nuestro archivo íntegro.</p>
<p>Para separar el archivo vamos a usar el comando <strong>split</strong>, que nos permite &#8220;dividir&#8221; o &#8220;cortar&#8221; un archivo por líneas, bytes, etc. En este caso, separaremos por bytes el archivo.<br />
La sintaxis de split para separar un archivo es tan simple como:</p>
<p><code>$ split --bytes=XXX archivo</code><br />
o tambien<br />
<code>$ split -b XXX archivo</code></p>
<p>De esta forma, el <strong>split</strong> separará el <strong>archivo</strong> cada <strong>XXX</strong> bytes, creando archivos de la forma <em>xab, xac, xad, &#8230; xaN</em>.<br />
Ejemplo:<br />
<code>[zerial@balcebu ejemplo_split]$ du -sh archivo.jpg<br />
48K	archivo.jpg<br />
[zerial@balcebu ejemplo_split]$ split -b 10000 archivo.jpg<br />
[zerial@balcebu ejemplo_split]$ ls<br />
archivo.jpg  xaa  xab  xac  xad  xae<br />
[zerial@balcebu ejemplo_split]$  du -csh *<br />
48K	archivo.jpg<br />
12K	xaa<br />
12K	xab<br />
12K	xac<br />
12K	xad<br />
8.0K	xae<br />
104K	total<br />
[zerial@balcebu ejemplo_split]$ </code></p>
<p>Para poder separar el archivo <em>ofuscado</em>, vamos a necesitar saber de antemano el tamaño del archivo original, para poder separarlo por esa cantidad de bytes.</p>
<p><span id="more-1935"></span></p>
<p>Siguiendo con el mismo ejemplo del primer post, aquí vamos:</p>
<p>Tenemos los tres archivos; el archivo principal, el archivo que queremos ofuscar y el archivo ya ofuscado<br />
<code>[zerial@balcebu ofuscar]$ ls -l<br />
total 816<br />
-rw-r--r-- 1 zerial users 408482 Oct 27 09:54 archivo.zip<br />
-rw-r--r-- 1 zerial users 414523 Oct 27 09:54 archivo_ofuscado.jpg<br />
-rw-r--r-- 1 zerial users   6041 Oct 27 09:52 dummie.jpg<br />
[zerial@balcebu ofuscar]$ </code></p>
<p>Nuestro fin es separar el archivo &#8220;archivo.zip&#8221; de &#8220;archivo_ofuscado.jpg&#8221;.<br />
<code>[zerial@balcebu ofuscar]$ mv archivo_ofuscado.jpg separacion/<br />
[zerial@balcebu ofuscar]$ cd separacion/<br />
[zerial@balcebu separacion]$ ls<br />
archivo_ofuscado.jpg<br />
[zerial@balcebu separacion]$ </code></p>
<p>Vemos el tamaño en bytes del archivo principal &#8220;dummie.jpg&#8221;<br />
<code>-rw-r--r-- 1 zerial users 6041 Oct 27 09:52 dummie.jpg</code></p>
<p>6041 bytes. Por tanto, tenemos que decirle a split, que nos divida el archivo_ofuscado.jpg en pequeños trozos de 6041 bytes cada uno.</p>
<p><code>[zerial@balcebu separacion]$ split -b 6041 archivo_ofuscado.jpg<br />
[zerial@balcebu separacion]$ ls -l<br />
total 956<br />
-rw-r--r-- 1 zerial users 414523 Oct 27 09:54 archivo_ofuscado.jpg<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xaa<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xab<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xac<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xad<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xae<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xaf<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xag<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xah<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xai<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xaj<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xak<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xal<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xam<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xan<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xao<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xap<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xaq<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xar<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xas<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xat<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xau<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xav<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xaw<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xax<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xay<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xaz<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xba<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xbb<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xbc<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xbd<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xbe<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xbf<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xbg<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xbh<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xbi<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xbj<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xbk<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xbl<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xbm<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xbn<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xbo<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xbp<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xbq<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xbr<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xbs<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xbt<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xbu<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xbv<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xbw<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xbx<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xby<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xbz<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xca<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xcb<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xcc<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xcd<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xce<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xcf<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xcg<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xch<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xci<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xcj<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xck<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xcl<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xcm<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xcn<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xco<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 xcp<br />
-rw-r--r-- 1 zerial users   3735 Nov 19 10:57 xcq<br />
[zerial@balcebu separacion]$ </code></p>
<p>Ya tenemos dividido el archivo_ofuscado en pequeños trozos. Como nuestro archivo dummie.jpg teina un tamaño de 6041 bytes y es este archivo el que está por sobre el archivo ofuscado, el primer archivo que nos extrajo split corresponde a dummie.jpg; por tanto, renombramos <strong>xaa</strong> a <strong>dummie.jpg</strong> y concatenamos todos los demas archivos y lo llamamos <strong>archivo.zip</strong> (corresponde a nuestro archivo ofuscado)</p>
<p><code>[zerial@balcebu separacion]$ mv xaa dummie.jpg<br />
[zerial@balcebu separacion]$ cat x* &gt;archivo.zip<br />
[zerial@balcebu separacion]$ rm x*<br />
[zerial@balcebu separacion]$ ls -l<br />
total 816<br />
-rw-r--r-- 1 zerial users 408482 Nov 19 10:59 archivo.zip<br />
-rw-r--r-- 1 zerial users 414523 Oct 27 09:54 archivo_ofuscado.jpg<br />
-rw-r--r-- 1 zerial users   6041 Nov 19 10:57 dummie.jpg<br />
[zerial@balcebu separacion]$ </code></p>
<p>Con esto ya hemos extraído nuestro archivo ofuscado. Para comparar que está íntegro y que realmente corresponde al original, comparemos los md5:</p>
<p><code>5c29dbb3975a5ffe31768b79548e1884  archivo.zip<br />
ded467af5a22134c44da18bc8d4fed1b  dummie.jpg<br />
5c29dbb3975a5ffe31768b79548e1884  ../archivo.zip<br />
ded467af5a22134c44da18bc8d4fed1b  ../dummie.jpg</code></p>
<p>Los dos primeros archivos corresponden a los archivos extraídos con split y los dos últimos a los archivos originales. Los md5 coinciden, por lo que lo hemos conseguido. Si ahora <em>unzipeamos</em> nuestro <strong>archivo.zip</strong>, no nos mostrará ningun warning, lo mismo pasara con winrar, etc.</p>
<p><code>[zerial@balcebu separacion]$ unzip archivo.zip<br />
Archive:  archivo.zip<br />
   creating: tipografias/<br />
  inflating: tipografias/Aller_Bd.ttf<br />
  inflating: tipografias/Aller_BdIt.ttf<br />
  inflating: tipografias/Aller_It.ttf<br />
  inflating: tipografias/Aller_Lt.ttf<br />
  inflating: tipografias/Aller_LtIt.ttf<br />
  inflating: tipografias/Aller_Rg.ttf<br />
  inflating: tipografias/AllerDisplay.ttf<br />
[zerial@balcebu separacion]$ </code></p>
<p>Sin warnings ni errores.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Fseguridad%2Festeganografia-ofuscacion-de-archivos-parte-2%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/seguridad/esteganografia-ofuscacion-de-archivos-parte-2/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/seguridad/esteganografia-ofuscacion-de-archivos-parte-2/"  data-text="Esteganografía: Ofuscación de archivos (parte 2)" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/seguridad/esteganografia-ofuscacion-de-archivos-parte-2/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Jornadas Regionales del Software Libre 2010 en San Luis (.ar)</title>
		<link>http://blog.zerial.org/linux/jornadas-regionales-del-software-libre-2010-en-san-luis-ar/</link>
		<comments>http://blog.zerial.org/linux/jornadas-regionales-del-software-libre-2010-en-san-luis-ar/#comments</comments>
		<pubDate>Thu, 18 Nov 2010 12:18:50 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Anecdotas]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Historias]]></category>
		<category><![CDATA[Mis cosas]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[argentina]]></category>
		<category><![CDATA[jornadas regionales del software libre]]></category>
		<category><![CDATA[jrsl]]></category>
		<category><![CDATA[jrsl2010]]></category>
		<category><![CDATA[san luis]]></category>
		<category><![CDATA[sl]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1961</guid>
		<description><![CDATA[Hace dos semanas asistí y participé de las Jornadas Regionales del Software Libre (JRSL) en San Luis, Argentina. Fue una experiencia muy buena, estuve con gente que ya había conocido antes en otros eventos allá en Argentina y en Chile. A este evento asistió gente de Uruguay, Chile, EE.UU y obviamente Argentina. Una amplia variedad [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-1963" style="margin: 2px;" title="jrsl2010" src="http://blog.zerial.org/wp-content/uploads/2010/11/jrsl2010.jpg" alt="" width="204" height="79" />Hace dos semanas asistí y participé de las <a href="http://www.jornadasregionales.org/jrsl2010v2">Jornadas Regionales del Software Libre (JRSL) en San Luis, Argentina</a>. Fue una experiencia muy buena, estuve con gente que ya había conocido antes en otros eventos allá en Argentina y en Chile. A este evento asistió gente de Uruguay, Chile, EE.UU y obviamente Argentina. Una amplia variedad de charlas y talleres de muy buena calidad.<br />
En esta oportunidad asistí como charlista/expositor y como asistente a otras charlas como criptografía, la <em>típica</em> charla sobre redes mesh, python/web2py, entre otras. Debido a que el publico no era muy &#8220;técnico&#8221; y el enfoque del evento no es algo netamente de seguridad, sino de difusión y de filosofía del SL, mi charla fue muy justa, 35 o 40 minutos que pasaron muy rapido, mostrando scripts y técnicas para apoderarse de los WordPress de un servidor, hacer peticiones automaticas para la extracción de información de sitios los cuales <strong>no protegen</strong> los datos de sus usuarios, etc.</p>
<p><center><a href="http://blog.zerial.org/wp-content/uploads/2010/11/SAM_2771.jpg"><img class="alignnone size-medium wp-image-1965" style="margin: 2px;" title="SAM_2771" src="http://blog.zerial.org/wp-content/uploads/2010/11/SAM_2771-300x225.jpg" alt="" width="300" height="225" /></a><a href="http://blog.zerial.org/wp-content/uploads/2010/11/SAM_2772.jpg"><img class="alignnone size-medium wp-image-1966" style="margin: 2px;" title="SAM_2772" src="http://blog.zerial.org/wp-content/uploads/2010/11/SAM_2772-300x225.jpg" alt="" width="300" height="225" /></a></center></p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Fjornadas-regionales-del-software-libre-2010-en-san-luis-ar%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/jornadas-regionales-del-software-libre-2010-en-san-luis-ar/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/jornadas-regionales-del-software-libre-2010-en-san-luis-ar/"  data-text="Jornadas Regionales del Software Libre 2010 en San Luis (.ar)" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/jornadas-regionales-del-software-libre-2010-en-san-luis-ar/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Esteganografía: Ofuscación de archivos (parte 1)</title>
		<link>http://blog.zerial.org/seguridad/ofuscacion-de-archivos-parte-1/</link>
		<comments>http://blog.zerial.org/seguridad/ofuscacion-de-archivos-parte-1/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 13:03:13 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[cat]]></category>
		<category><![CDATA[concatenar]]></category>
		<category><![CDATA[concatenar archivos]]></category>
		<category><![CDATA[esconder archivos]]></category>
		<category><![CDATA[esteganografia]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[ofuscacion de archivos]]></category>
		<category><![CDATA[ofuscamiento]]></category>
		<category><![CDATA[ofuscar]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1923</guid>
		<description><![CDATA[Entendamos como &#8220;ofuscación de archivos&#8221; el hecho de esconder un archivo dentro de otro. Es posible, usando comandos básicos de Unix, ofuscar un archivo y que pase desapercibido. En esta etapa solo usaremos el comando para concatenar archivos cat. Teóricamente, lo que haremos será concatenar dos tipos de archivos, en este caso un archivo de [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-1924" title="archivos" src="http://blog.zerial.org/wp-content/uploads/2010/10/archivos-150x150.jpg" alt="" width="150" height="150" />Entendamos como &#8220;<em>ofuscación de archivos</em>&#8221; el hecho de <em>esconder</em> un archivo dentro de otro. Es posible, usando comandos básicos de Unix, ofuscar un archivo y que pase desapercibido. En esta etapa solo usaremos el comando para concatenar archivos <strong>cat</strong>.</p>
<p>Teóricamente, lo que haremos será concatenar dos tipos de archivos, en este caso un archivo de imagen junto con un zip o un rar. Si ponemos nuestro fichero comprimido al final de un archivo de imagen, podremos ver la imagen sin problemas y poder debajo tener nuestro archivo ofuscado. Hice algunas pruebas en M$ Windows con distintos antivirus enviando el archivo por correo electrónico y descargandolo, sin que se detectara el archivo ofuscado.</p>
<p>El comando es ultra sencillo, lo único que haremos sera concatenar dos (o más) archivos al final de nuestro fichero de imágen. Tenemos una nuestra imagen &#8220;<strong>imagen.jpg</strong>&#8221; y nuestro zip &#8220;<strong>archivo.zip</strong>&#8220;:</p>
<p><code>$ cat imgen.jpg archivo.zip &gt;archivo_ofuscado.jpg</code></p>
<p>Ahora &#8220;<strong>archivo_ofuscado.jpg</strong>&#8221; tiene un tamaño igual a la suma de <em>imagen.jpg</em> con <em>archivo.zip</em>.</p>
<p><span id="more-1923"></span></p>
<p>Ejemplo practico:</p>
<p><code>[zerial@balcebu ofuscar]$ ls -l<br />
total 408<br />
-rw-r--r-- 1 zerial users 408482 Oct 27 09:54 archivo.zip<br />
-rw-r--r-- 1 zerial users   6041 Oct 27 09:52 dummie.jpg<br />
[zerial@balcebu ofuscar]$ cat dummie.jpg archivo.zip &gt;archivo_ofuscado.jpg<br />
[zerial@balcebu ofuscar]$  ls -l archivo_ofuscado.jpg<br />
-rw-r--r-- 1 zerial users 414523 Oct 27 09:54 archivo_ofuscado.jpg<br />
[zerial@balcebu ofuscar]$ </code></p>
<p>El tamaño de archivo_ofuscado.jpg es la suma de los dos anteriores. Tambien podemos ver el tipo de archivo que son cada uno:<br />
<code>[zerial@balcebu ofuscar]$ file *<br />
archivo.zip:          Zip archive data, at least v1.0 to extract<br />
archivo_ofuscado.jpg: JPEG image data, JFIF standard 1.01<br />
dummie.jpg:           JPEG image data, JFIF standard 1.01<br />
[zerial@balcebu ofuscar]$ </code></p>
<p>Tanto nuestro archivo de imagen original como nuestro archivo ofuscado son JPEG. Si lo abrimos con el navegador o con un editor o visor de imágenes podemos ver ambos archivos sin problemas. Además, podemos descomprimir con &#8220;unzip&#8221; nuestra imagen y archivo ofuscado <strong>archivo_ofuscado.jpg</strong>.</p>
<p><code>[zerial@balcebu ofuscar]$ unzip archivo_ofuscado.jpg<br />
Archive:  archivo_ofuscado.jpg<br />
warning [archivo_ofuscado.jpg]:  6041 extra bytes at beginning or within zipfile<br />
  (attempting to process anyway)<br />
   creating: tipografias/<br />
  inflating: tipografias/Aller_Bd.ttf<br />
  inflating: tipografias/Aller_BdIt.ttf<br />
  inflating: tipografias/Aller_It.ttf<br />
  inflating: tipografias/Aller_Lt.ttf<br />
  inflating: tipografias/Aller_LtIt.ttf<br />
  inflating: tipografias/Aller_Rg.ttf<br />
  inflating: tipografias/AllerDisplay.ttf<br />
[zerial@balcebu ofuscar]$ </code></p>
<p>El comando nos da una advertencia diciendonos que hay bytes de sobra en el archivo, los omite y continua con la descompresión exitosamente. Unzip (tambien probado con WinZip y WinRar) advierte que hay bytes de sobra, pero lo descomprime satisfactoriamente y sin errores. Podemos hacer lo mismo con cualquier tipo de archivos; videos, musica, documentos de texto, etc.</p>
<p><strong>nota:</strong> Gracias a la aclacarión de <a href="http://blog.zerial.org/seguridad/ofuscacion-de-archivos-parte-1/#comment-85657">Alejandro Saez</a>, he agregado el termino &#8220;Esteganografía&#8221; al título, para evitar confusiones.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Fseguridad%2Fofuscacion-de-archivos-parte-1%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/seguridad/ofuscacion-de-archivos-parte-1/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/seguridad/ofuscacion-de-archivos-parte-1/"  data-text="Esteganografía: Ofuscación de archivos (parte 1)" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/seguridad/ofuscacion-de-archivos-parte-1/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Filtrar inyecciones SQL y XSS con Mod_Rewrite en Apache</title>
		<link>http://blog.zerial.org/seguridad/filtrar-inyecciones-sql-y-xss-con-mod_rewrite-en-apache/</link>
		<comments>http://blog.zerial.org/seguridad/filtrar-inyecciones-sql-y-xss-con-mod_rewrite-en-apache/#comments</comments>
		<pubDate>Wed, 06 Oct 2010 17:47:38 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[mod_rewrite]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1909</guid>
		<description><![CDATA[Revisando un servidor me encontré con la siguientes reglas para el módulo ModRewrite de apache, que nos ayudan a filtrar las URLs potencialmente maliciosas. Este codigo nos va a ayudar a proteger el servidor de las aplicaciones que tengan fallas de seguridad. RewriteEngine On  ########## Begin - Rewrite rules to block out some common exploits [...]]]></description>
			<content:encoded><![CDATA[<p>Revisando un servidor me encontré con la siguientes reglas para el módulo ModRewrite de apache, que nos ayudan a filtrar las URLs potencialmente maliciosas. Este codigo nos va a ayudar a proteger el servidor de las aplicaciones que tengan fallas de seguridad.</p>
<pre>RewriteEngine On 
########## Begin - Rewrite rules to block out some common exploits
        #
        # Block out any script trying to set a mosConfig value through the URL
        RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
        # Block out any script trying to base64_encode crap to send via URL
        RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
        # Block out any script that includes a &lt;script&gt; tag in URL
        RewriteCond %{QUERY_STRING} (\&lt;|%3C).*script.*(\&gt;|%3E) [NC,OR]
        # Block out any script trying to set a PHP GLOBALS variable via URL
        RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
        # Block out any script trying to modify a _REQUEST variable via URL
        RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
        # Send all blocked request to homepage with 403 Forbidden error!
        RewriteRule ^(.*)$ index.php [F,L]
######### End - Rewrite rules to block out some common exploits</pre>
<p>Nos protegerá de ataques XSS y SQL Injection. Este script podría afectar el funcionamiento de algunas aplicaciones.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Fseguridad%2Ffiltrar-inyecciones-sql-y-xss-con-mod_rewrite-en-apache%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/seguridad/filtrar-inyecciones-sql-y-xss-con-mod_rewrite-en-apache/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/seguridad/filtrar-inyecciones-sql-y-xss-con-mod_rewrite-en-apache/"  data-text="Filtrar inyecciones SQL y XSS con Mod_Rewrite en Apache" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/seguridad/filtrar-inyecciones-sql-y-xss-con-mod_rewrite-en-apache/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>[Tip] Limitar el uso de ancho de banda con Trickle</title>
		<link>http://blog.zerial.org/linux/tip-limitar-el-uso-de-ancho-de-banda-con-trickle/</link>
		<comments>http://blog.zerial.org/linux/tip-limitar-el-uso-de-ancho-de-banda-con-trickle/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 14:01:38 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[aplicaciones]]></category>
		<category><![CDATA[bandwidth]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[herramientas]]></category>
		<category><![CDATA[limitar ancho de banda]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[trickle]]></category>
		<category><![CDATA[utilidad]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1876</guid>
		<description><![CDATA[trickle is a portable lightweight userspace bandwidth shaper. It can run in collaborative mode (together with trickled) or in stand alone mode. Con esta herramienta podemos limitar la velocidad de subida y bajada de cualquier aplicación. Como dice en la descripción, puede trabajar &#8220;solo&#8221; y tambien como demonio. Si ejecutamos el demonio, todas las aplicaciones [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><strong><a href="http://monkey.org/~marius/pages/?page=trickle">trickle</a></strong> is a portable lightweight userspace bandwidth shaper. It can run  in collaborative mode (together with <em>trickled</em>) or in stand alone mode.</p></blockquote>
<p>Con esta herramienta podemos limitar la velocidad de subida y bajada de cualquier aplicación. Como dice en la descripción, puede trabajar &#8220;solo&#8221; y tambien como demonio. Si ejecutamos el demonio, todas las aplicaciones que se corran usando trickle (sin especificar subida ni bajada) correrán con el límite señalado. Por ejemplo, si corremos el demonio con los parametros:</p>
<p><code>trickled -d 150 -u 20</code><br />
 Establecemos que la velocidad de bajada y subida será de 150 y 20 Kb/s, respectivamente. Desde ahora, todas las aplicaciones corridas con <strong>trickle</strong> tendran esa configuración, por ejemplo:</p>
<p><code>trickle axel http://domain.com/download.tbz2</code><br />
Limitará la bajada a 150kb/s.</p>
<p>Podemos pasarle parametros a trickle directamente, por ejemplo <strong>trickle -d 100 -u 100 wget http://domain.com/file.tbz2</strong>, de esta forma se limitara a wget solo descargar a 100kb/s.</p>
<p>Aunque <strong>wget</strong> tiene la opción <strong>&#8211;limit-rate</strong> que nos permite limitar el RATE, y <strong>&#8211;max-speed</strong> que nos permite limitar la máxima velocidad en <strong>axel</strong>, trickle nos puede servir para limitar el ancho de banda de cualquier aplicación.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Ftip-limitar-el-uso-de-ancho-de-banda-con-trickle%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/tip-limitar-el-uso-de-ancho-de-banda-con-trickle/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/tip-limitar-el-uso-de-ancho-de-banda-con-trickle/"  data-text="[Tip] Limitar el uso de ancho de banda con Trickle" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/tip-limitar-el-uso-de-ancho-de-banda-con-trickle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

