tag:blogger.com,1999:blog-5915250519627236162024-02-21T11:51:22.539+01:00CiberentropíaSeguridad, inseguridad, administración y destrucción informática.mmsystemshttp://www.blogger.com/profile/04338319361390716656noreply@blogger.comBlogger11125tag:blogger.com,1999:blog-591525051962723616.post-47848126963244781742014-06-26T21:43:00.000+02:002014-06-26T21:44:28.914+02:00Oktoberfail! pwned!<div style="text-align: justify;">
El otro día me pasé por una conocida fiesta de la cerveza que hace una gira por determinadas ciudades de España, a tomarme una jarrita de cerveza con unos amigos, y entre las bondades tecnológicas del recinto, se encontraba una máquina para dispensar los tiques de comida/bebida de forma automática y así no tener que hacer cola en las taquillas de la entrada. La máquina en cuestión es <a href="http://www.inzacard.com/linked/terminales%20punto%20de%20venta%20autom%E1tica.pdf" target="_blank">esta</a>, pero sin lector de tarjetas.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Bueno, el caso es que alguien no hizo demasiado bien su trabajo, y este es el resultado:</div>
<div style="text-align: justify;">
<br /></div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaI082qcekdl1nvQs6GYVe5i5dSUegOdbsBET4V5unOI1ayIs2GdqLuEmaNLyYSTQASvlf3deCD2cCucwLxMUESybhlBFGsc51zT8hhRqFqz6xjg4-sf99hVM-RxFw8thBVP4d3GC8I-w/s1600/IMG_20140622_010329.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaI082qcekdl1nvQs6GYVe5i5dSUegOdbsBET4V5unOI1ayIs2GdqLuEmaNLyYSTQASvlf3deCD2cCucwLxMUESybhlBFGsc51zT8hhRqFqz6xjg4-sf99hVM-RxFw8thBVP4d3GC8I-w/s1600/IMG_20140622_010329.jpg" height="240" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Cmd para realizar las maldades habituales (Don't be evil!)</td></tr>
</tbody></table>
<a name='more'></a><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6KLmDrC-KKesaLiEcmAL-mAVjbl02OrXMOR8ivQB-aybOi4itgMOlxlWtFdlJYPee5qVPN0Y1OTcm4l4uOwPSWe8IaqRhRhxtAUmAvja4twM-WN_PvjqiPNfVwBTa2t4bz2eDWG259Cw/s1600/IMG_20140622_010317.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6KLmDrC-KKesaLiEcmAL-mAVjbl02OrXMOR8ivQB-aybOi4itgMOlxlWtFdlJYPee5qVPN0Y1OTcm4l4uOwPSWe8IaqRhRhxtAUmAvja4twM-WN_PvjqiPNfVwBTa2t4bz2eDWG259Cw/s1600/IMG_20140622_010317.jpg" height="240" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Cmd y explorador de archivos</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1IPPY1SruyUyBuE2_72AAO4QaFx1EXSyB02MH7m7ns_A-Oy0L4EEmMEhTNgUbPO7Yq8_GF4JPm_vyibocBYfxd-vCIfzwYBira_OoYyzVQ-G3iR9DPNZ1Wpn52RcRJUpELeZspUQkVwA/s1600/IMG_20140622_011324.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1IPPY1SruyUyBuE2_72AAO4QaFx1EXSyB02MH7m7ns_A-Oy0L4EEmMEhTNgUbPO7Yq8_GF4JPm_vyibocBYfxd-vCIfzwYBira_OoYyzVQ-G3iR9DPNZ1Wpn52RcRJUpELeZspUQkVwA/s1600/IMG_20140622_011324.jpg" height="320" width="240" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Caballitos galopando por la playa (Video de cortesía ;D)</td></tr>
</tbody></table>
<div style="text-align: justify;">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIbKFhePyAe-tjCFLZLHM3JfD2wE3e-D9YAwySnhOOE_5pNRWje76Ppjrm7IS3EqKObFzqq43KTflNARc4HxYElnj5f2CDzy8iv4V7qiAE_qQUGWRVp_fPyZWPWGYufymPSlSk9_RhVOE/s1600/IMG_20140622_010947_2.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIbKFhePyAe-tjCFLZLHM3JfD2wE3e-D9YAwySnhOOE_5pNRWje76Ppjrm7IS3EqKObFzqq43KTflNARc4HxYElnj5f2CDzy8iv4V7qiAE_qQUGWRVp_fPyZWPWGYufymPSlSk9_RhVOE/s1600/IMG_20140622_010947_2.jpg" height="320" width="240" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">La máquina igual que al principio tras finalizar el proceso</td></tr>
</tbody></table>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
He de recalcar que la máquina siguió funcionando con normalidad, y la gente del recinto y nuestro grupo de amigos siguió sacando tiques de comida y bebida sin problemas, y menos mal que no tenía lector de tarjetas... que sino ni me acerco a ella...¿o si...? }:P</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Alguien que quisiera ir "más allá" podría haber utilizado la web creada por Paul Craig <a href="http://ikat.ha.cked.net/">ikat.ha.cked.net</a> para ganar información del sistema (aunque todo quedaba bastante expuesto), lanzar un nmap para reconocer equipos y dispositivos de red o ejecutar un exploit que concluyera en una escalada de privilegios, las posibilidades son muy amplias.</div>
<div style="text-align: justify;">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguweggpSB_K2l0Eo2igRtSTNR2ISWFkLV-_Sn6suQTrVERg1L2B7UYAbSbQimCG8ZyzzfmRdRSjBy-0cdhwksxjzJRahkz-D9CYFWIJgcVvvsq1l8WR7UUE2pEfZDBIVzWjZeDyMOJ4k8/s1600/ikat.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguweggpSB_K2l0Eo2igRtSTNR2ISWFkLV-_Sn6suQTrVERg1L2B7UYAbSbQimCG8ZyzzfmRdRSjBy-0cdhwksxjzJRahkz-D9CYFWIJgcVvvsq1l8WR7UUE2pEfZDBIVzWjZeDyMOJ4k8/s1600/ikat.png" height="299" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Algunas opciones de Kiosk Attack Tool</td></tr>
</tbody></table>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Por todo esto, creo que la máquina mostrada no siguió ningún proceso de auditoría antes de salir al mercado, supongo que los test del departamento de calidad se basan en que la impresión sea rápida y nítida, que la pantalla no se rompa con facilidad o que cuente bien los billetes y monedas que el usuario introduce, pero quizá, y solo quizá, a determinadas empresas no les están quedando claras las prioridades de funcionamiento de un sistema informático. Llamadme radical, pero, aunque los tiempos de entrega suelen ser muy apretados, <b>primero que el sistema sea seguro, luego que funcione. </b>Y con esta declaración tan ultra-sec me despido.</div>
mmsystemshttp://www.blogger.com/profile/04338319361390716656noreply@blogger.com0tag:blogger.com,1999:blog-591525051962723616.post-25833572128061378302014-06-14T16:08:00.002+02:002014-09-09T15:51:14.583+02:00Iniciar y detener servicios desde la WEB en Linux - BASH CGI<u><b>Necesidades:</b></u><br />
<br />
Manejar el inicio / detención de servicios mediante una interfaz WEB con un botón.<br />
<br />
<br />
<u><b>Descripción del entorno:</b></u><br />
<br />
<b>· Servidor:</b> apache2 en una raspberry-pi con <a href="http://www.raspbian.org/" target="_blank">raspbian</a><br />
<b>· Directorio</b> <b>CGI:</b> /usr/lib/cgi-bin<br />
<b>· Archivo de sudoers:</b> /etc/sudoers<br />
<b>· Binario utilizado:</b> /usr/sbin/service<br />
<br />
Vamos a crear un <a href="http://es.wikipedia.org/wiki/Interfaz_de_entrada_com%C3%BAn" target="_blank">CGI</a> simple en Bash:<br />
<br />
<pre class="brush:shell;">#!/bin/bash
cat << _EOF
Content-type: text/html
<html>
$(echo "Hola Mundo!")
</html>
_EOF
</pre>
<br />
<a name='more'></a><br />
<div style="text-align: justify;">
Copiamos el contenido del ejemplo anterior para luego pegarlo en un archivo que ubicaremos en '/usb/lib/cgi-bin' (o en el directorio que hayamos definido en la configuración de apache para nuestros cgi's) y lo guardamos como prueba.cgi.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Cambiamos el propietario y el grupo de prueba.cgi a www-data, de la siguiente forma:</div>
<br />
<pre class="brush:plain;">chown www-data:www-data prueba.cgi
</pre>
<br />
<br />
Cambiamos los permisos a una máscara 744 con el siguiente comando:<br />
<br />
<pre class="brush:plain;">chmod 744 prueba.cgi
</pre>
<br />
Ahora accedemos a nuestro cgi para comprobar que funciona, mediante la url:<br />
<br />
<pre class="brush:plain;">http://127.0.0.1/cgi-bin/prueba.cgi
</pre>
<br />
Y nos debería mostrar algo similar a lo de la foto:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy0b7xr81xp60KyyzDeKzxbDIU3DeY8dXgOQ3RogUoXXLhZKkpQ4698QXpvvwAo8-pi-msmbcL9OsAdKzMxD6s4n-xlFy6sFYx-lfzbedzX0ZNc6Q9TdK-z8a9s0u6Zsr0mzM2d-X5jTc/s1600/servicios_web.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy0b7xr81xp60KyyzDeKzxbDIU3DeY8dXgOQ3RogUoXXLhZKkpQ4698QXpvvwAo8-pi-msmbcL9OsAdKzMxD6s4n-xlFy6sFYx-lfzbedzX0ZNc6Q9TdK-z8a9s0u6Zsr0mzM2d-X5jTc/s1600/servicios_web.png" height="130" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b> <u>Breve explicación:</u></b></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
- La primera línea define el shell que va a utilizar el script</div>
<div class="separator" style="clear: both; text-align: justify;">
- Entre las líneas 'cat << _EOF y _EOF' irá todo nuestro contenido en html y el procesado con instrucciones de la shell.</div>
<div class="separator" style="clear: both; text-align: justify;">
- Bajo el renglón: Content-type: text/html ha de ir una línea en blanco, sino nos dará un error al cargar la página.</div>
<div class="separator" style="clear: both; text-align: justify;">
- Para ejecutar instrucciones de la shell, y que lo mostrado en la WEB sea el resultado de esa instrucción, utilizamos la siguiente sintaxis: $(instrucción a realizar)</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Para ejecutar un 'echo' por pantalla no necesitamos de ningún permiso especial, pero para utilizar el comando 'service' necesitaremos permisos de Superusuario, por lo que tendremos que modificar el archivo '/etc/sudoers' para dar permisos a www-data, que es el "usuario web" de apache, para ejecutar el comando service. Para editar este archivo, escribiremos en consola:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<pre class="brush:plain;">sudo visudo
</pre>
<br />
Visudo nos abrirá el archivo directamente con el editor que tengamos configurado por defecto y entonces copiaremos dentro:<br />
<br />
<pre class="brush:plain;">www-data ALL = NOPASSWD:/usr/sbin/service
</pre>
<br />
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Quedando conformado mi sudoers como muestra la siguiente imagen:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYM-XrETFH614-HapFj_s-JDFzDpBwaQnFpGeSvCEVKcte2IGgdL0t18saBTE-Ca3nPfV7aDvQpelW2EoP0jiYKisnrvS9ERGcxMX9qchwpb1RZ93HMwqOhoDJLHNOmqPBavnAUSDl414/s1600/servicios_web4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYM-XrETFH614-HapFj_s-JDFzDpBwaQnFpGeSvCEVKcte2IGgdL0t18saBTE-Ca3nPfV7aDvQpelW2EoP0jiYKisnrvS9ERGcxMX9qchwpb1RZ93HMwqOhoDJLHNOmqPBavnAUSDl414/s1600/servicios_web4.png" height="275" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Ahora vamos a crear el CGI llamado <b>service.cgi</b> para iniciar o detener, en nuestro caso, el servicio de OpenVPN, pero con cambiar el nombre del servicio dentro del siguiente código se podría extrapolar a cualquier otro, como ssh, rsync o myql.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<pre class="brush:shell;">#!/bin/bash
read POST_DATA
POST_DATA=`echo "$POST_DATA" | awk -F= '{ print $2 }'`
cat << _EOF
Content-type: text/html
<html>
<head>
<center>
<div id="superior" style="width:500px;border:5px solid #559CE2;border-radius:10px">
<font face='helvetica'>
<h1>MANAGE OpenVPN SERVICE </h1>
<br>
$(sudo service openvpn $POST_DATA > /dev/null)
<br>
$(echo -e "Status: ")
<font color='$(if [ "`sudo service openvpn status | awk '/VPN/ { print $4 }'`" == "not" ]; then echo "#FF5353"; else e$
<strong>
$(sudo service openvpn status | awk '/VPN/ { print $2, $3, $4, $5 }')
</strong>
</font>
<table border="0">
<tr>
<td>
<form name="input" action="http://192.168.1.100/cgi-bin/service.cgi" method="post">
<input type="text" value='start' name="Service start" size="10" style="display:none"></input>
<input type="submit" value="START OpenVPN"></input>
</form>
</td>
<td>
<form name="input" action="http://192.168.1.100/cgi-bin/service.cgi" method="post">
<input type="text" value='stop' name="Service stop" size="10" style="display:none"></input>
<input type="submit" value="STOP OpenVPN"></input>
</form>
</td>
</tr>
</table>
</font>
</div>
</center>
</head>
</html>
</pre>
<br />
Y el resultado que nos mostrará al entrar en nuestro CGI vía Web es:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZpLoy72IeL84SPYhCYNWHu4_xb1Ld80kADMmBp51N3xYyOAkYYVHei62mvQ9RXL2yc_EK_B0v22WC5SYaEHWn64kR7av6no-HKcZm5_6jmKFW66XN2VbvYuaiGE2IN_azFdX5RShhx4Q/s1600/servicios_web2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZpLoy72IeL84SPYhCYNWHu4_xb1Ld80kADMmBp51N3xYyOAkYYVHei62mvQ9RXL2yc_EK_B0v22WC5SYaEHWn64kR7av6no-HKcZm5_6jmKFW66XN2VbvYuaiGE2IN_azFdX5RShhx4Q/s1600/servicios_web2.png" height="172" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
O en caso de estar desactivado al cargar el CGI:</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiL3t536-4n34APHXdZ8Kr8f0tkoTgawlG2VmhBlwSoWcU7f-JtVnWOjDIxCqNybrPaJ7w7oeIyOhUt9svGQ0KG4rqylIgIzuyWx-R38nZXeY0gDVotH5h7iPjDGa4iw8R1bRX9OZLeqGo/s1600/servicios_web3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiL3t536-4n34APHXdZ8Kr8f0tkoTgawlG2VmhBlwSoWcU7f-JtVnWOjDIxCqNybrPaJ7w7oeIyOhUt9svGQ0KG4rqylIgIzuyWx-R38nZXeY0gDVotH5h7iPjDGa4iw8R1bRX9OZLeqGo/s1600/servicios_web3.png" height="175" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
El estado actual del servicio se actualiza instantáneamente al presionar el botón elegido.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
En caso de querer interactuar con otro servicio que no sea OpenVPN, tendríamos que modificar la línea 18 del script para poner "sudo service <b>ElServicioQueQuieras</b>" o "sudo service <b>ElServicioQueQuieras</b>"</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<br />mmsystemshttp://www.blogger.com/profile/04338319361390716656noreply@blogger.com0tag:blogger.com,1999:blog-591525051962723616.post-66231979716700261492014-06-02T10:00:00.000+02:002014-06-02T10:50:41.641+02:00Tareas programadas en Linux (cron)<div style="text-align: justify;">
En linux las tareas programadas las controla un 'demonio' llamado <a href="http://es.wikipedia.org/wiki/Cron_(Unix)" target="_blank"><b>CRON</b></a>. La configuración es principalmente en modo texto, aunque también podemos utilizar alguna aplicación GUI que modifique los archivos de texto donde se guardan las tareas programadas (<a href="http://userbase.kde.org/KCron/es" target="_blank">kcron</a>, <a href="http://gnome-schedule.sourceforge.net/" target="_blank">gnome-schedule</a>).</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Existen dos entornos de CRON, el de sistema, y el de usuario. Para modificar las tareas de sistema, tendremos que editar el archivo <b>'/etc/crontab' </b>y para las tareas de cada usuario, lanzaríamos el comando <b>'crontab -e'</b> desde el login del usuario, o <b>'crontab -u <i>usuario</i> -e'</b> desde la consola de root, por ejemplo.</div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Las tareas generadas con el comando<b> 'crontab -e'</b> se guardan en: <b>'/var/spool/cron/<i>usuario</i>'</b> que será el archivo que se genera automáticamente al guardar la tarea en el documento que lanza el comando, documento que se abrirá con nuestro editor de consola predeterminado.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Los campos del documento donde editaremos la tarea cambian ligeramente dependiendo de si es un cron de sistema o un cron de usuario, en el cron de sistema tenemos los siguientes campos:</div>
<div style="text-align: center;">
<span class="Apple-style-span" style="color: #3d85c6;"><br /></span></div>
<div style="text-align: center;">
<span class="Apple-style-span" style="color: #3d85c6;">m</span> <span class="Apple-style-span" style="color: #e06666;">h</span> <span class="Apple-style-span" style="color: #3d85c6;">dom</span> <span class="Apple-style-span" style="color: #e06666;">mon</span> <span class="Apple-style-span" style="color: #3d85c6;">dow</span> <span class="Apple-style-span" style="color: #e06666;"><span class="Apple-style-span" style="background-color: #cccccc;">user</span></span> <span class="Apple-style-span" style="color: #3d85c6;">command</span></div>
<div style="text-align: center;">
<span class="Apple-style-span" style="color: #3d85c6;"><br /></span></div>
<div style="text-align: center;">
<span class="Apple-style-span" style="color: #3d85c6;"> minutes</span> <span class="Apple-style-span" style="color: #e06666;">hours</span> <span class="Apple-style-span" style="color: #3d85c6;">DayOfMonth</span> <span class="Apple-style-span" style="color: #e06666;">Month</span> <span class="Apple-style-span" style="color: #3d85c6;">DayOfWeek</span> <span class="Apple-style-span" style="color: #e06666;"><span class="Apple-style-span" style="background-color: #cccccc;">User</span></span> <span class="Apple-style-span" style="color: #3d85c6;">command/script</span></div>
<div style="text-align: center;">
<span class="Apple-style-span" style="color: #3d85c6;"></span><br />
<a name='more'></a><span class="Apple-style-span" style="color: #3d85c6;"><br /></span></div>
<div style="text-align: justify;">
En el cron de sistema se utilizarán todos los campos descritos arriba, pero en el cron de usuario se omitirá el campo "user", ya que se ejecutará directamente como el usuario que crea el trabajo.</div>
<div style="text-align: justify;">
Esto es MUY importante, <b>si en un cron de sistema omitimos el usuario, o en un cron de usuario le incluimos, el trabajo NO funcionará.</b></div>
<div style="text-align: justify;">
<b><br /></b></div>
<div style="text-align: justify;">
Veamos unos comandos útiles para establecer tareas de CRON:</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span class="Apple-style-span" style="color: #3d85c6;"><b>crontab -e </b><span class="Apple-style-span" style="color: black;">:</span></span> Edita el archivo de tareas de CRON del usuario actual.</div>
<div style="text-align: justify;">
<b><span class="Apple-style-span" style="color: #3d85c6;">crontab -l <span class="Apple-style-span" style="font-weight: normal;"><span class="Apple-style-span" style="color: black;">:</span></span> </span></b>Muestra las tareas del usuario actual.</div>
<div style="text-align: justify;">
<b><span class="Apple-style-span" style="color: #3d85c6;">crontab -u </span></b><i><b><span class="Apple-style-span" style="color: #6aa84f;">usuario</span></b></i><b><span class="Apple-style-span" style="color: #3d85c6;"> -e </span></b>: Edita las tareas de un usuario específico.</div>
<div style="text-align: justify;">
<b><span class="Apple-style-span" style="color: #3d85c6;">crontab -u </span></b><i><b><span class="Apple-style-span" style="color: #6aa84f;">usuario</span></b></i><b><span class="Apple-style-span" style="color: #3d85c6;"> -l</span></b> : Lista las tareas de un usuario específico.</div>
<div style="text-align: justify;">
<b><span class="Apple-style-span" style="color: #3d85c6;">nano /etc/crontab</span></b> : Abrimos el archivo de CRON del sistema para definir o borrar tareas.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="text-align: justify;">
Vamos a poner como ejemplo una tarea, que reinicie un servidor cada sábado a las cinco de la mañana, teclearemos:</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<pre class="brush:plain;">sudo nano /etc/crontab
</pre>
</div>
<div style="text-align: justify;">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlR6r3VjVt-819kdxoXWjCp76fnmhWECn8Ut2cJAgqUm2X-VEj88N_OlCIuIzE7_0xZ3F3GBHdJ4oLvbZe0aqmhKODmbeYjRCV9VvS8lR_ic86tFM0WPu4RbtHDqlk5RVvS9B58xZBJII/s1600/cron.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlR6r3VjVt-819kdxoXWjCp76fnmhWECn8Ut2cJAgqUm2X-VEj88N_OlCIuIzE7_0xZ3F3GBHdJ4oLvbZe0aqmhKODmbeYjRCV9VvS8lR_ic86tFM0WPu4RbtHDqlk5RVvS9B58xZBJII/s1600/cron.png" height="95" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Cron de Sistema (por eso lleva el usuario 'root' definido)</td></tr>
</tbody></table>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Hay que prestar atención a la sintaxis de cron, ya que <b>comienza con los minutos</b>, en este caso a 'en punto', osea, 00. Después viene la hora, 05. Luego los días del mes y/o los meses, en ambos casos tendremos que establecer "todos" con un *, y por último el día de la semana. Los días de la semana en formato numérico se corresponden con:</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<b><span class="Apple-style-span" style="color: #3d85c6;">0</span></b> - Domingo</div>
<div style="text-align: justify;">
<b><span class="Apple-style-span" style="color: #3d85c6;">1</span></b> - Lunes</div>
<div style="text-align: justify;">
<b><span class="Apple-style-span" style="color: #3d85c6;">2</span></b> - Martes</div>
<div style="text-align: justify;">
<b><span class="Apple-style-span" style="color: #3d85c6;">3</span></b> - Miércoles</div>
<div style="text-align: justify;">
<b><span class="Apple-style-span" style="color: #3d85c6;">4</span></b> - Jueves</div>
<div style="text-align: justify;">
<b><span class="Apple-style-span" style="color: #3d85c6;">5</span></b> - Viernes</div>
<div style="text-align: justify;">
<b><span class="Apple-style-span" style="color: #3d85c6;">6</span></b> - Sábado</div>
<div style="text-align: justify;">
<b><span class="Apple-style-span" style="color: #3d85c6;">7</span></b> - Domingo</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Y si, 0 y 7 son el Domingo, podemos utilizar <b>cualquiera</b> de los dos.<br />
<br />
Mediante este mismo procedimiento podríamos lanzar un script para backups, descarga de archivos programada, comprobaciones del sistema o actualización del equipo mediante un 'apt-get update; apt-get -y upgrade', etc.<br />
<br />
Dentro de las opciones de Cron, existen por defecto <b>cuatro directorios</b> donde podemos incluir un script o programa para que se ejecute con periodicidad horaria, diaria, semanal o mensual. Estos directorios son:<br />
<br />
<b>/etc/cron.hourly</b><br />
<b>/etc/cron.daily</b><br />
<b>/etc/cron.weekly</b><br />
<b>/etc/cron.monthly</b></div>
<div style="text-align: justify;">
<br />
La hora exacta a la que se ejecutan los contenidos de estos directorios está controlada por el sistema.<br />
<br />
Para obtener más información sobre el uso de cron podemos poner en la terminal:<br />
<br />
<pre class="brush:plain;">man 5 crontab
</pre>
<br />
<br />
<b> ** BONUS **</b><br />
<br />
Podemos generar una linea de cron específica utilizando <a href="http://www.corntab.com/pages/crontab-gui" target="_blank">esta 'Web GUI'</a>, y así sólo tendríamos que copiar el resultado obtenido en nuestro '/etc/crontab' o en el archivo de cron correspondiente al usuario.<br />
<br /></div>
mmsystemshttp://www.blogger.com/profile/04338319361390716656noreply@blogger.com0tag:blogger.com,1999:blog-591525051962723616.post-54591883909804135702014-05-26T10:00:00.000+02:002014-05-26T10:00:00.981+02:00Atacando SSH con THC-Hydra<div style="text-align: justify;">
Hydra es un programa creado por la gente de 'The Hacker Choice' (<a href="https://www.thc.org/thc-hydra/" target="_blank">THC</a>) para auditar el login contra diversos servicios como FTP, HTTP, SSH, LDAP, MYSQL, etc... En este caso vamos a ver como atacar un login SSH con un usuario conocido previamente.</div>
<br />
<span class="Apple-style-span" style="color: #3d85c6;"><b><u>Ataque mediante diccionario:</u></b></span><br />
<br />
<pre class="brush:plain;">hydra -V -l juan -P /pentest/passwords/wordlists/rockyou.txt 192.168.1.20 ssh
</pre>
<div>
<br />
Significado de los flags:<br />
<br />
<a name='more'></a><br />
<b>-V:</b> Muestra los intentos de login, con usuario y contraseña a través de pantalla.<br />
<b> -l:</b> El usuario que estamos atacando por fuerza bruta.<br />
<b>-P: </b>El diccionario de contraseñas a probar. (<a href="https://downloads.skullsecurity.org/passwords/" target="_blank">Colección de diccionarios</a>)<br />
<b>192.168.1.20:</b> La IP que estamos atacando (int_IP || ext_IP || DynamicDNS)<br />
<b>ssh:</b> Protocolo, carga el módulo de conexión SSH de hydra.<br />
<br />
<div style="text-align: justify;">
Cuando el programa encuentre un login correcto, mostrará algo similar a lo que podemos ver en la siguiente imagen:</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuqOzRZ_2Ifx7qq5c24WSAv-eY7WimmJYK7zqLbayDcm8RbUwNaZb9DTyEGbMKE1hO1T4Y9DxyILZbc4M6wVO8q3G_bOaoWW2lithi0gg8TAdFMJQeTQhAE8svFd41ro_EIKLcug87_jY/s1600/hydra.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuqOzRZ_2Ifx7qq5c24WSAv-eY7WimmJYK7zqLbayDcm8RbUwNaZb9DTyEGbMKE1hO1T4Y9DxyILZbc4M6wVO8q3G_bOaoWW2lithi0gg8TAdFMJQeTQhAE8svFd41ro_EIKLcug87_jY/s1600/hydra.png" height="207" width="320" /></a></div>
<div class="" style="clear: both; text-align: justify;">
<br />
En la imagen se muestra en el cuadro rojo, el HOST (192.168.1.20), el USUARIO (juan) y la contraseña válida encontrada (monkey12) y en naranja aparece el mensaje de que unas credenciales válidas han sido encontradas. Ahora sólo nos quedaría conectarnos para comprobar si todo está bien:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
</div>
<pre class="brush:plain;">ssh juan@192.168.1.20
</pre>
<div class="" style="clear: both; text-align: justify;">
<br />
<b><span class="Apple-style-span" style="color: #3d85c6;"><u>Ataque por fuerza bruta:</u></span></b></div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
</div>
<pre class="brush:plain;">hydra -V -l juan -x 5:5:1 192.168.1.20 ssh
</pre>
<div class="" style="clear: both; text-align: justify;">
<br />
Significado de los flags:<br />
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
</div>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<b>-V:</b> Muestra los intentos de login, con usuario y contraseña a través de pantalla.</div>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<b> -l:</b> El usuario que estamos atacando por fuerza bruta.</div>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<b>192.168.1.20:</b> La IP que estamos atacando (int_IP || ext_IP || DynamicDNS)</div>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<b>ssh:</b> Protocolo, carga el módulo de conexión SSH de hydra.</div>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<b>-x 5:5:1 : Máscara para fuerza bruta:</b></div>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<b> </b>- El primer 5 significa desde cinco caracteres.</div>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
- El segundo 5 significa hasta cinco caracteres.</div>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
- El 1significa numérico.</div>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<br /></div>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="text-align: justify;">
Por lo tanto las contraseñas a probar, serán todas las numéricas de cinco caracteres, desde 00000 hasta 99999, osea, 100.000 contraseñas posibles. Lo cual es una cantidad viable, y como podemos ver en la imagen inferior el resultado es positivo en poco más de media hora:</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNmP_3G1fgdyi0yw87cEoLM1VK4ngVn_1wwZHAc0LPKtn3lIuN8lj6IGV_lDLNU-4pq_wh3NtzhsYhFj1q331OiEW3qC0_Avs-YxMVksFUpM9ksBwOJw35WBadt5XMzf9GCczCUEMedkc/s1600/hydra2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNmP_3G1fgdyi0yw87cEoLM1VK4ngVn_1wwZHAc0LPKtn3lIuN8lj6IGV_lDLNU-4pq_wh3NtzhsYhFj1q331OiEW3qC0_Avs-YxMVksFUpM9ksBwOJw35WBadt5XMzf9GCczCUEMedkc/s1600/hydra2.png" height="128" width="320" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Otros posibles ejemplos serían:</div>
</div>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="text-align: justify;">
<b>-x 6:8:a1</b> : Contraseñas desde 6 hasta 7 caracteres, con letras minúsculas y números.</div>
</div>
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<div style="text-align: justify;">
<b>-x 5:6:aA1*=%</b> : Contraseñas desde 5 hasta 6 caracteres, con letras mayúsculas, minúsculas, números y los símbolos: * = %</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Cuanto más compleja sea la máscara, mas intentos habrá que realizar para encontrar la clave correcta, por ejemplo la última máscara mostrada se traduce en un total teórico de intentos de: 76.579.181.250.</div>
<div style="text-align: justify;">
<br /></div>
En mis pruebas, atacando al equipo local, se consiguen una media de 276 intentos/minuto:<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBmDOpM6TKSKFlfIaRGcfTFkKUCbbewya1g0W4tl4KrjEXNvZLtdZwy56jHzHT6rJapMY_Kixp7nVBA2eNRAAuEAYl777hStLghDRRsSjqaDPotk81Xk0gZ2D6vMM5QHf-ZYGibYV5-ls/s1600/hydra1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBmDOpM6TKSKFlfIaRGcfTFkKUCbbewya1g0W4tl4KrjEXNvZLtdZwy56jHzHT6rJapMY_Kixp7nVBA2eNRAAuEAYl777hStLghDRRsSjqaDPotk81Xk0gZ2D6vMM5QHf-ZYGibYV5-ls/s1600/hydra1.png" height="90" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: justify;">
Lo que se traduce en:</div>
<div class="separator" style="clear: both; text-align: justify;">
<br /></div>
<center>
<div id="superior" style="border: 10px; border: 4px solid #559CE2; width: 400px;">
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<b>TIEMPO TEÓRICO NECESARIO </b></div>
<br />
<table border="1" style="border-bottom-width: 4px; border-color: initial; border-left-width: 4px; border-right-width: 4px; border-style: initial; border-top-width: 4px; color: black; text-align: center; width: 100%;">
<tbody>
<tr>
<td>INTENTOS
</td>
<td>76.579.181.250
</td>
</tr>
<tr>
<td>Minutos
</td>
<td>277.460.801,63
</td>
</tr>
<tr>
<td>Horas
</td>
<td>4.624.346,7
</td>
</tr>
<tr>
<td>Días
</td>
<td>192.681,11
</td>
</tr>
<tr>
<td>Años
</td>
<td>527,9</td></tr>
</tbody></table>
</div>
</center>
<br />
<br />
<div style="text-align: justify;">
Si nos fijamos en el cuadro anterior veremos que el ataque tiene muy pocas probabilidades de éxito debido a la cantidad de tiempo que tenemos que invertir para comprobar todas las posibles contraseñas, incluso cuando lo más seguro es que no tengamos que comprobar la totalidad de intentos, supongamos, un 10% (el 10% de 527.9 años serían 52.79 años), seguiría siendo algo inviable.</div>
<br />
Esto nos lleva a la necesidad de establecer <b>contraseñas seguras</b> en nuestros servicios, basadas en cinco puntos a tener en cuenta:<br />
<br />
<b>1)</b> Contraseñas que no se basen en palabras de diccionario (casa, Computer, madrid, arboleda...)<br />
<b>2)</b> Tengan una longitud mínima de 12 caracteres<br />
<b>3)</b> Contengan mayúsculas (A), minúsculas (a), números (1) y al menos dos símbolos (!$%&=?*_:-;/)<br />
<b>4)</b> No correspondan con ningún patrón de predicción (4lbert0, L0v3, $4l4m4nc4...)<br />
<b> 5)</b> Evitas fechas y números de teléfono<br />
<br />
Como ejemplo de contraseña segura: <b><span class="Apple-style-span" style="color: #134f5c;">A_r2j=btS3$BL2</span></b><br />
- 14 caracteres<br />
- 3 símbolos<br />
- Mayúsculas<br />
- Minúsculas<br />
- Números<br />
<br />
<div style="text-align: justify;">
Hydra solo llega a probar contraseñas por fuerza bruta de hasta 11 caracteres, por lo que en este ejemplo ni siquiera podríamos comprobar a crackear el password del usuario, pero suponiendo que nuestra contraseña contara con once caracteres, mayúsculas, minúsculas y los símbolos: _=$, el número de combinaciones sería de: <b>13.931.233.916.552.734.720, </b>haz tus propias cuentas ;)</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Para establecer una contraseña siempre hay que tener en cuenta el <b>nivel de criticidad</b> de lo que se está protegiendo. No es lo mismo una contraseña establecida para un servicio solo accesible internamente desde la organización, que un portal de acceso a la intranet, publicado y accesible desde todo internet, con esto no quiero decir que se haga más hincapié en unas en detrimento de las otras, todas deberían ser contraseñas seguras.</div>
</div>
</div>
mmsystemshttp://www.blogger.com/profile/04338319361390716656noreply@blogger.com0tag:blogger.com,1999:blog-591525051962723616.post-25748860743132826002014-05-19T10:00:00.000+02:002018-03-27T12:48:10.134+02:00OpenVPN - ¿Enviar todo el tráfico, o sólo el necesario? (II de II)<div style="text-align: center;">
<b><u><a href="http://ciberentropia.blogspot.com.es/2014/05/openvpn-enviar-todo-el-trafico-o-solo.html" target="_blank">OpenVPN - ¿Enviar todo el tráfico, o sólo el necesario? (I de II)</a></u></b></div>
<div style="text-align: center;">
<b><u>OpenVPN - ¿Enviar todo el tráfico, o sólo el necesario? (II de II)</u></b></div>
<b><u><br /></u></b>
<b><u><br /></u></b>
<b><u>ENVÍO DE TRÁFICO RUTEADO POR LA VPN</u></b><br />
<br />
<div style="text-align: justify;">
En el post anterior hablamos de cómo enviar todo el tráfico generado por un cliente en un entorno OpenVPN (excepto las <a href="http://es.wikipedia.org/wiki/Servidor_DNS" target="_blank">consultas DNS</a>, que se harán directamente a los servidores 8.8.8.8 y 8.8.4.4 de google). Ahora vamos a ver cómo sería para que sólo el tráfico dirigido explícitamente a direcciones dentro del rango de IP's donde se encuentra el servidor de OpenVPN sea enviado a través del túnel seguro VPN, pero que el resto del tráfico siga su curso habitual por la puerta de enlace configurada en nuestro equipo cliente.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Para ilustrar lo descrito en el párrafo anterior, podemos observar las siguiente imágenes:</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi15o_MXU-sVfwDuwKsAEo43RTAoKPoeNmsr1eP8ul0p0h7IUP2vUvI9pnmA45boG9sQdx0BznyuvY7m3HfJWBQITTBZWbmkQSSJoZTx0dgBV2DzIgd9cwsNy_yovuKK-NBu7EY7FMwFlY/s1600/OpenVPN_Only_necesary.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="190" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi15o_MXU-sVfwDuwKsAEo43RTAoKPoeNmsr1eP8ul0p0h7IUP2vUvI9pnmA45boG9sQdx0BznyuvY7m3HfJWBQITTBZWbmkQSSJoZTx0dgBV2DzIgd9cwsNy_yovuKK-NBu7EY7FMwFlY/s1600/OpenVPN_Only_necesary.gif" width="320" /></a></div>
<div style="text-align: justify;">
<br />
<a name='more'></a><br /></div>
<div style="text-align: justify;">
La imagen superior muestra en <span class="Apple-style-span" style="color: #cc0000;">rojo</span> el camino que seguirá cualquier consulta al rango de IP's 192.0.1.0, automáticamente la configuración de OpenVPN redirigirá el tráfico para que "viaje" por el túnel VPN crado. Así, podríamos entrar a un servicio web configurado en 'Server1' de forma similar a si estuviéramos trabajando en local: http://192.0.1.250 o a un Servicio de Escritorio Remoto configurado en el PC1 con la ventaja de no tener abiertos, y por tanto expuestos, múltiples puertos dirigidos a diferentes servicios dentro de nuestra infraestructura. Hasta el momento solo hemos necesitado abrir el puerto 1194 UDP y tenemos acceso de forma cifrada a todos los recursos de nuestra red.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Hasta este punto el modo de funcionamiento de la VPN es similar al descrito en el post de <a href="http://ciberentropia.blogspot.com.es/2014/05/openvpn-enviar-todo-el-trafico-o-solo.html" target="_blank">OpenVPN - ¿Enviar todo el tráfico, o sólo el necesario? (I de II)</a> pero a partir de aquí la operativa cambia.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Lo que queremos en este método de configuración es que únicamente el tráfico dirigido explícitamente a la VPN sea enviado por el túnel, no así el resto de tráfico con destino 'internet'. El siguiente diagrama indica lo que ocurrirá cuando se intenta un acceso a un servicio de la web, en este caso google.com:</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2k8vYa7hWZY0YXqHuBY7lEL8Hgq26BwDWnpXw4G4BvVBt-wZyCI9bvkvdV6v-mhNl7rPu7gJpw409VJf23_pYxDFYkhddvhx7jWGwcra1LA2p16KICeE3wKMCmZN0NaAfyrvCeavWcCk/s1600/OpenVPN_Only_necesary_2.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="190" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2k8vYa7hWZY0YXqHuBY7lEL8Hgq26BwDWnpXw4G4BvVBt-wZyCI9bvkvdV6v-mhNl7rPu7gJpw409VJf23_pYxDFYkhddvhx7jWGwcra1LA2p16KICeE3wKMCmZN0NaAfyrvCeavWcCk/s1600/OpenVPN_Only_necesary_2.gif" width="320" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Este tráfico general representado en <span class="Apple-style-span" style="color: #e69138;">naranja</span>, viajará de forma normal, como si no hubiera VPN alguna configurada.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Para poner en funcionamiento este esquema, tenemos que modificar el archivo de configuración del servidor de OpenVPN "openvpn.conf" donde añadiremos la siguiente línea:</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<pre class="brush:plain;">push "route 192.0.1.0 255.255.255.0"
</pre>
<br />
La dirección IP y la Máscara están definidas para este ejemplo en particular, la descripción general consiste en establecer el rango de IP's definido en el lugar donde se encuentre el servidor VPN y la Máscara correspondiente a dicha red. Con esta instrucción conseguiremos que al conectarse el cliente a la VPN en la interfaz virtual que se crea se asigne una ruta de acceso a las IP's correspondientes al rango 192.0.1.X consiguiendo que todo el tráfico enviado hacia dichas direcciones se envíe a través del canal seguro creado por OpenVPN.<br />
<br />
Un archivo 'openvpn.conf' en el servidor OpenVPN válido para este cometido sería:<br />
<br />
<br />
<pre class="brush:plain;">dev tun
proto udp
port 1194
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh1024.pem
user nobody
group nogroup
server 10.8.0.0 255.255.255.0
persist-key
persist-tun
status /var/log/openvpn-status.log 15
verb 3
client-to-client
#Para conectarse a la VPN pero no navegar a traves de ella
push "route 192.0.1.0 255.255.255.0"
log-append /var/log/openvpn
comp-lzo
</pre>
<br />
<br />
<b>PROS:</b><br />
<br />
Rapidez en la navegación por internet, al ser un acceso más selectivo, la red donde se encuentra configurado el servidor de OpenVPN no se saturará demasiado, sobre todo si hubiera varios clientes al mismo tiempo.<br />
<br />
<b>CONTRAS:</b><br />
<br />
En redes de poca confianza como HotSpots públicos podemos ser vulnerables a <a href="http://es.wikipedia.org/wiki/Ataque_Man-in-the-middle" target="_blank">ataques MITM</a>, el acceso a cualquier servicio web dejará una huella digital con nuestra dirección IP Externa real, lo que puede llevar a localizarnos incluso geográficamente en el mapa.<br />
<div>
<br /></div>
</div>
mmsystemshttp://www.blogger.com/profile/04338319361390716656noreply@blogger.com0tag:blogger.com,1999:blog-591525051962723616.post-43168803552582532352014-05-12T14:19:00.002+02:002014-05-19T19:50:37.496+02:00OpenVPN - ¿Enviar todo el tráfico, o sólo el necesario? (I de II)<div style="text-align: justify;">
<div style="text-align: center;">
<b><u>OpenVPN - ¿Enviar todo el tráfico, o sólo el necesario? (I de II)</u></b></div>
<div style="text-align: center;">
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">
<b><u><a href="http://ciberentropia.blogspot.com.es/2014/05/openvpn-enviar-todo-el-trafico-o-solo_19.html" target="_blank">OpenVPN - ¿Enviar todo el tráfico, o sólo el necesario? (II de II)</a></u></b></div>
</div>
<div style="text-align: center;">
<br /></div>
<br />
Cuando implementamos un servidor de OpenVPN tenemos dos mecanismos de conexión diferentes principalmente. En uno de ellos todo el tráfico del cliente es redirigido a través de la VPN, en el otro únicamente el tráfico con destino a un determinado rango de IP's (ruta) es encaminado por el túnel VPN. Vamos a explicar ambos escenarios gráficamente, con sus similitudes y sus diferencias.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<b><u>TODO EL TRÁFICO A TRAVÉS DE LA VPN</u></b></div>
<div style="text-align: justify;">
<b><u><br /></u></b></div>
<div style="text-align: justify;">
Este método es el utilizado por los servicios VPN anonimizadores de IP, ya que nuestra dirección de red se mostrará a los servicios web, como la del servidor VPN al que estemos conectados y no como la nuestra propia.<br />
<br />
<a name='more'></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQJlfFzgMV2ND-R8bduz9lfwBNs7639Hct5W4fd8eMwzz3r744Oq4JHjilBhZ5Jy_P1L-2Crui0ZmvpShjy3lMexl33k3r6c2Yq3uZx3BjyDXCVXkEu2VL4_akvVLguPEg4WVE_N1YCy4/s1600/OpenVPN_all_traffic.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQJlfFzgMV2ND-R8bduz9lfwBNs7639Hct5W4fd8eMwzz3r744Oq4JHjilBhZ5Jy_P1L-2Crui0ZmvpShjy3lMexl33k3r6c2Yq3uZx3BjyDXCVXkEu2VL4_akvVLguPEg4WVE_N1YCy4/s1600/OpenVPN_all_traffic.gif" height="237" width="400" /></a></div>
<div style="text-align: justify;">
<br />
En la imagen superior vemos como hay dos "carriles" de comunicación diferenciados por colores, el <span class="Apple-style-span" style="color: #cc0000;">rojo</span> corresponde a un canal cifrado que es el que pertenece a la comunicación VPN, y el <span class="Apple-style-span" style="color: #e69138;">naranja</span> sería la salida de nuestros datos hacia internet, sin el cifrado ofrecido por nuestro túnel, aunque puede seguir cifrado de igual forma, si nuestra conexión es contra un servidor SSL (https://....), pero por lo que respecta al destino de nuestra comunicación, en este caso google.com, la IP de origen de la conexión que percibe es la IP externa del router de la red en la que se encuentra el servidor de OpenVPN. Por lo tanto, para google.com o cualquier otro servicio que utilicemos, nuestra identidad estará definida por la IP: 82.47.X.X.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Este es un esquema recomendable en el caso de que utilicemos redes Wifi en entornos públicos o de seguridad "dudosa", ya que el tráfico viajará cifrado hasta el servidor VPN.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Para poner en marcha este funcionamiento en un servidor OpenVPN tenemos que añadir algunas líneas a nuestro 'openvpn.conf' del servidor:<br />
<br />
<pre class="brush:plain;">push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
</pre>
<div>
<br />
Por lo que un ejemplo válido de "openvpn.conf", sería:<br />
<br />
<br />
<pre class="brush:plain;">dev tun
proto udp
port 1194
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh1024.pem
user nobody
group nogroup
server 10.8.0.0 255.255.255.0
persist-key
persist-tun
status /var/log/openvpn-status.log 15
verb 3
client-to-client
#Para conectarse a la VPN y navegar a traves de ella
push "redirect-gateway def1"
#Establecemos los servidores DNS
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
log-append /var/log/openvpn
comp-lzo
</pre>
</div>
<br />
<br />
<b>PROS:</b><br />
<b><br /></b>
Seguridad de la información en entornos no controlados como son las redes Wifi en cafeterías o centros comerciales, anonimización del posicionamiento basado en IP que utilizan servicios como Google, acceso a recursos de la red remota de forma transparente, como si estuvieran en local.<br />
<br />
<b>CONTRAS:</b><br />
<b><br /></b>
Lentitud de conexión, ya que los paquetes tienen que hacer un recorrido de más para llegar a su destino, y al volver lo mismo ya que todo pasa por el servidor VPN, por lo que algunos servicios como el streaming de vídeo puede verse afectado por ese retardo. Si el servidor VPN se ve comprometido, toda nuestra navegación también lo estará.</div>
mmsystemshttp://www.blogger.com/profile/04338319361390716656noreply@blogger.com0tag:blogger.com,1999:blog-591525051962723616.post-6780574747276581852014-05-01T16:32:00.000+02:002014-05-01T18:19:44.330+02:00Fuerza bruta mediante diccionario a cifrados GPG<div style="text-align: justify;">
En archivos cifrados de forma simétrica (con una contraseña) en gpg podemos proceder a su desfrizado diréctamente poniendo:</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<pre class="brush:plain;">gpg DocumentoCifrado.gpg
</pre>
</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Pero si no conocemos/recordamos la clave, podemos automatizar un proceso de pruebas para que intente pasar todas las claves contenidas en un diccionario sobre el archivo cifrado, y con un poco de suerte, recuperar la clave. Para hacer todo este proceso automático, comparto con vosotros el script para Bash que he creado:</div>
<div style="text-align: justify;">
</div>
<a name='more'></a><br />
<br />
<div style="text-align: justify;">
<pre class="brush:bash;">#!/bin/bash
#Dictionary attack to gpg encrypted file
#Color definition
colorbase="\E[0m"
rojo="\033[1;31m"
verdefluo="\033[1;32m"
naranja="\033[0;33m"
#User variables. You must change DICT and FILE variables
DICT="/pentest/passwords/wordlists/rockyou.txt"
FILE="prueba.txt.gpg"
#Program variables. DO NOT TOUCH
TOTAL=$(wc -l < $DICT)
CONT="1"
PERCENT="0"
#Loop to probe all the words in dictionary against the gpg encrypted file
for word in $(cat $DICT)
do
echo "$word" | gpg --batch --passphrase-fd 0 --decrypt-files $FILE
if [ "$?" == "0" ]
then
clear
echo -e ""$verdefluo"\n\nPassword is: $word\n\n"$colorbase""
exit 0
else
clear
echo -e ""$rojo" $CONT/$TOTAL - "$colorbase""$naranja"$PERCENT%"$colorbase""$rojo" - ERROR - $word"$colorbase""
let CONT=$CONT+1
let PERCENT=$CONT*100/$TOTAL
#Control if the dictionary ends
if [ "$CONT" == "$TOTAL" ]
then
echo -e ""$rojo"\n\n -- TERMINATED -- Password not found :(\n"$colorbase""
exit 1
fi
fi
done
</pre>
Una vez copiado el contenido del script en vuestro equipo, lo guardamos como 'gpg-crack.sh' y damos permisos de ejecución:
<br />
<pre class="brush:text;">chmod +x gpg-crack.sh
</pre>
Antes de ejecutar el script, teneis que cambiar las variables DICT y FILE por las que correspondan en vuestro caso. Una vez configuradas estas variables, ejecutamos con:<br />
<pre class="brush:text;">./gpg-crack.sh
</pre>
Y el proceso mostrará algo como:
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioKgcwio0ZYuurj3lFIDTTIp4RA4s-ByE4lgHAM0Jl6JsLZCpRX4JDTzLbn0oQrFXXW4rwqz4u3AQXbm-0rrGI6ONW-VriMLZCo8XjUfmIWdi8eeyot2O31cskj46-Ftp2KsjN3BaOiUM/s1600/gpg-crack1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioKgcwio0ZYuurj3lFIDTTIp4RA4s-ByE4lgHAM0Jl6JsLZCpRX4JDTzLbn0oQrFXXW4rwqz4u3AQXbm-0rrGI6ONW-VriMLZCo8XjUfmIWdi8eeyot2O31cskj46-Ftp2KsjN3BaOiUM/s1600/gpg-crack1.png" /></a></div>
<br />
La imagen muestra, en el primer término, la palabra por la que el script se llega probando de las palabras totales que contiene el diccionario, que en este caso son: 14.344.391, el porcentaje representado como un entero, el error derivado de que la contraseña no coincide con la del .gpg y la palabra exacta a la que se llega probando, 'princess' en este caso.<br />
<br />
Si la contraseña de cifrado está contenida en el diccionario que utilicemos, llegará un momento en el que el script mostrará por pantalla que ha tenido éxito:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNvCp90ghLACCMfhhpJea4ELbsCh4hSyi_k15r0vyv6lMLbqe9xoUWdK3ZNhVybbXiI_OeUSIBPf2F4Gfwsd3ZK73NYGORI7yi-4NJeqJxrLJJW4RRZagZXwrZS4c2sKUlvLMr8uI_qcM/s1600/gpg-crack2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNvCp90ghLACCMfhhpJea4ELbsCh4hSyi_k15r0vyv6lMLbqe9xoUWdK3ZNhVybbXiI_OeUSIBPf2F4Gfwsd3ZK73NYGORI7yi-4NJeqJxrLJJW4RRZagZXwrZS4c2sKUlvLMr8uI_qcM/s1600/gpg-crack2.png" /></a></div>
<br />
<b><u>BONUS:</u></b><br />
Os dejo una buena colección de diccionarios para trabajar con el script:<br />
<a href="https://downloads.skullsecurity.org/passwords/">https://downloads.skullsecurity.org/passwords/</a><br />
<br />
<br />
<br /></div>
mmsystemshttp://www.blogger.com/profile/04338319361390716656noreply@blogger.com0tag:blogger.com,1999:blog-591525051962723616.post-48214390664017276252013-09-29T20:18:00.000+02:002014-05-21T23:27:18.994+02:00MSSql, XP_CmdShell & SET<div style="text-align: justify;">
En esta entrada veremos como una instalación "descuidada" o prescindir de contraseñas seguras en nuestros servicios, pueden crear un pasillo con una bonita y cómoda alfombra roja para un potencial atacante. </div>
<br />
<div style="text-align: justify;">
Hace unos días me encontraba haciendo una auditoría interna en una empresa de la cual conozco el uso de varios equipos con Windows Server + MSSql, por lo que una de las primeras cosas que me vino a la mente fue <a href="http://es.wikipedia.org/wiki/Anexo:N%C3%BAmeros_de_puerto" target="_blank">1433</a>, un flash que me recordó aquel número 42 que debía representar algo tan abstracto como el sentido de la vida en "<a href="http://es.wikipedia.org/wiki/El_sentido_de_la_vida,_el_universo_y_todo_lo_dem%C3%A1s" target="_blank">Guía del Autoestopista Galáctico</a>", pero tranquilos, en este caso todo queda más claro que en la ficción de Douglas Adams.</div>
<br />
<a name='more'></a><br />
<div style="text-align: justify;">
Para ir avanzando, diré que las herramientas con las que contaba eran numerosas, pero sólo hizo falta el uso de tres grandes desarrollos para llegar a tener absoluto control sobre el sistema. Esas tres herramientas son:</div>
<br />
<a href="http://nmap.org/" target="_blank">Nmap</a> - Uno de los imprescindibles, que novedad... :·)<br />
<a href="http://www.social-engineer.org/framework/Computer_Based_Social_Engineering_Tools:_Social_Engineer_Toolkit_(SET)" target="_blank">SET</a> - Social Engineering Toolkit (<a href="https://www.trustedsec.com/downloads/social-engineer-toolkit/" target="_blank">Download</a>)<br />
<a href="http://sourceforge.net/projects/winexe/" target="_blank">Winexe</a> - Desarrollo similar a PSExec, pero para entornos *NIX.<br />
<br />
<div style="text-align: justify;">
Todo el proceso se realizó desde la distribución Back-Track 5 R2, en una tarde lluviosa de Agosto, allá <span style="font-size: x-small;">por</span> <span style="font-size: xx-small;">el...</span></div>
<br />
<div style="text-align: justify;">
Lo primero que se hizo fue un escaneo del puerto 1433 a toda la red, a ver en que equipos ese puerto estaba abierto, para poder tener un trocito de carnaza de donde tirar, hasta que arrancásemos un usuario Administrador de las entrañas de alguna de aquellas máquinas, pues bien, coge una lata fría de redbull del frigo y al lío:</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN-tnQKxpgvr55cR2ojUbPPQyw-RWre6-2DTR1VFSygWUKU5XW17v6GteZ5Tddem81rBt9v0IvqMm47eobWxVE4IvXqz9bxnxng1uVqffOdbJlU9OMogepESTyFujbUEWAUHjS7z6ahjY/s1600/set1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN-tnQKxpgvr55cR2ojUbPPQyw-RWre6-2DTR1VFSygWUKU5XW17v6GteZ5Tddem81rBt9v0IvqMm47eobWxVE4IvXqz9bxnxng1uVqffOdbJlU9OMogepESTyFujbUEWAUHjS7z6ahjY/s1600/set1.png" height="306" width="400" /></a></div>
<br />
<div style="text-align: justify;">
Como muestra la imagen, hay varios equipos con el servicio de Microsoft SQL activo, y funcionando en el puerto 1433, nosotros nos centraremos en el que está enmarcado en rojo, vamos a llamarle 231, por acortar (No es que los otros tres no sean vulnerables, que si lo son, valla chapuza eh?...). Pues bien, vamos a ver si a nuestro amigo 231 lo han dotado de alguna medida de seguridad <i>"insensata"</i> como ponerle una contraseña alfanumérica y con simbolitos tal que <b>jQs&9jd44_d(*2</b>. En éste punto es donde entra en juego el estupendo desarrollo en <a href="http://www.python.org/" target="_blank">Python</a> de Social Engineering Toolkit (aka SET). </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
SET es una herramienta que tiene un montón de funcionalidades para la explotación de sistemas, muchas de ellas trabajándose a uno de los mayores puntos de fallo en sistemas de seguridad, que es ese que está entre la silla y el monitor, de ahí su nombre (Kit de Herramientas de Ingeniería Social, mas o menos...), pero también tiene algunos ataques "directos", en nuestro caso utilizaremos uno de estos ataques, el denominado 'Microsoft SQL Bruter' para, mediante un usuario conocido (en MSSql, por defecto, el usuario administrador es 'sa') y un diccionario de contraseñas, podamos conseguir un par usuario-clave válido.</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiz5jU6dhQILZ9Ou8qoeOxS6_LpCAkPGSZQpgtgsBm5LP8QFzJWRdweiZgWTHgNu_cj2Qtq3R7PAD6q8R7gI8B4-1U-VO67eWaazggphvSzrmxiJ7wtukxuC6fTHWtqKUIX_Y2jR_jYsmM/s1600/set2.png" height="400" width="240" /></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
SET tiene un bonito interfaz interactivo, limpio y fácil de usar. Para pasar a la acción de una vez por todas, elegiremos la opción 2, Fast-Track Penetration Testing (que mal suena esto en <a href="https://translate.google.es/?hl=es&tab=wT#en/es/fast%20track%20penetration%20testing." target="_blank">Castellano de toda la vida</a>...).</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCEtX7uU3FPVAeSI52Nr_lE7hxm7Uy0ZoJgdEi7wNu6Uvq8oJ1LZE5bTz_HTrh-eoNXkSdGvjMWlTliG6vrF7M6mQspiftgtItT6aaVYLQEbv4BoQ9Pv7qYeSt9hjtNGRJWSCVImQ_woI/s1600/set3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCEtX7uU3FPVAeSI52Nr_lE7hxm7Uy0ZoJgdEi7wNu6Uvq8oJ1LZE5bTz_HTrh-eoNXkSdGvjMWlTliG6vrF7M6mQspiftgtItT6aaVYLQEbv4BoQ9Pv7qYeSt9hjtNGRJWSCVImQ_woI/s1600/set3.png" height="127" width="400" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKtIij3vCYgtgs2FKzYE4DqRDJ9z8BDlCqKs9H4AhJvwg6Zgi4WrYidSuvfB-eHE8CmoWlqRc3QYDzZiHjZasgENTFgfc2T4wpkmUmDtl4HHViX3Wj_ISqeFtdm7rQPpiYIVW4ux-S_Z4/s1600/set4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKtIij3vCYgtgs2FKzYE4DqRDJ9z8BDlCqKs9H4AhJvwg6Zgi4WrYidSuvfB-eHE8CmoWlqRc3QYDzZiHjZasgENTFgfc2T4wpkmUmDtl4HHViX3Wj_ISqeFtdm7rQPpiYIVW4ux-S_Z4/s1600/set4.png" height="116" width="400" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Elegimos el punto número 1, ataque de fuerza bruta a MSSql y en la siguiente pantalla "Scan and Attack MSSQL". Lo próximo que nos pide es si queremos que el proceso de fuerza bruta se realice sobre un objetivo en particular, o si tenemos una lista de objetivos en un archivo de texto. Como nosotros ya tenemos a nuestro "elegido", al que bautizamos como 231, pues elegimos la opción número 1 como se muestra en la siguiente imagen:</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgC05LBHNizSbl-jBm1kPA3U44pcXxI-W4EHjmLsTlvu_VyOZJZuxvLToYflqzHMm4u3F2Yuin_l2uSokhr0Ymbkq85aG7Svtwg1XgqT_SNEI4-SnPzFb5nctsFN9vhcmxlTkavCDG22yI/s1600/set5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgC05LBHNizSbl-jBm1kPA3U44pcXxI-W4EHjmLsTlvu_VyOZJZuxvLToYflqzHMm4u3F2Yuin_l2uSokhr0Ymbkq85aG7Svtwg1XgqT_SNEI4-SnPzFb5nctsFN9vhcmxlTkavCDG22yI/s1600/set5.png" height="143" width="320" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Ahora rellenamos los campos que nos pide, que son: la IP, el puerto y un diccionario, en mi caso solo he puesto la IP, el puerto es el 1433 por defecto y he usado el diccionario por defecto que trae SET (muy escaso por cierto, pero efectivo en esta situación), y el resultado es:</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeQsWfYOrJJRgfvMVhmKLRKNrSHrihnF5HX3zxnXG5NJiSK4GA2uw_0aTVBOb0jJvtjRjEvykn2WV1Dj4EJ6f6UzPvIasRLYgsTZktIt2wf9vnt6peqNym2eheFbXE9jkKzmsZjHGawnI/s1600/set6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeQsWfYOrJJRgfvMVhmKLRKNrSHrihnF5HX3zxnXG5NJiSK4GA2uw_0aTVBOb0jJvtjRjEvykn2WV1Dj4EJ6f6UzPvIasRLYgsTZktIt2wf9vnt6peqNym2eheFbXE9jkKzmsZjHGawnI/s1600/set6.png" height="166" width="400" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
BINGO!! El usuario 'sa' de MSSql no tiene contraseña!, bien, ¿y ahora qué?, pues ahora elegimos la sesión a la que SET dice que puede traernos una línea de comandos, osea la 1, y tras darle un toquecito al enter y elegir de entre las siguientes tres opciones la tercera 'Standard Windows Shell', veremos esto:</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxPoX_c4kUVT-ijE2QEmxdkP2DOc6_g_1pmKopUe-vPqPr9yqqp2WO5CUzMULpP2KkJkGyUQZsdxZGB78WLcZAHqXh_RLJRrGVAtYyzuUAbU4lgw73jCfFAODyG-GjYxit-ih5_oLVx2U/s1600/set7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxPoX_c4kUVT-ijE2QEmxdkP2DOc6_g_1pmKopUe-vPqPr9yqqp2WO5CUzMULpP2KkJkGyUQZsdxZGB78WLcZAHqXh_RLJRrGVAtYyzuUAbU4lgw73jCfFAODyG-GjYxit-ih5_oLVx2U/s1600/set7.png" height="123" width="400" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
¿Y que es eso de 'xp_cmdshell'? Pues es un recurso de MSSql para poder ejecutar comandos del sistema, si quieres saber más, échale un vistazo a <a href="http://technet.microsoft.com/es-es/library/ms175046.aspx" target="_blank">éste</a> apartado de las TechNet de Microsoft.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Bien, ahora vamos a probar hasta donde podemos llegar, pero lo primero, y aunque suene algo filosófico, me gustaría saber quién soy, así que se lo voy a preguntar a 231, que fijo él lo sabe:</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3-K4JpKYnp_rjlhHcVXx07346_tuMQ1ng3WObmklJwzt31lkUAzzBUJe7cItsOhN2Aci7slCg9A65Dh_ov25RfeYEnwkdLOfoKsvCCGt7cjhOuxzCd7C9jjEuT8lPG7WFN3ei_bpjFFY/s1600/set8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3-K4JpKYnp_rjlhHcVXx07346_tuMQ1ng3WObmklJwzt31lkUAzzBUJe7cItsOhN2Aci7slCg9A65Dh_ov25RfeYEnwkdLOfoKsvCCGt7cjhOuxzCd7C9jjEuT8lPG7WFN3ei_bpjFFY/s1600/set8.png" height="92" width="400" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
NT AUTORITY\SYSTEM !!! hemos heredado los privilegios con los que está corriendo MSSql en la máquina, y estos son nada más y nada menos que los de, en un entorno técnico los denominamos: "The Fucking Boss", permisos TFB así, sin contraseñas, y con un tiempo invertido en el proceso ridículo para el punto en el que nos encontramos .</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Pero no todo podían ser buenas noticias, esta shell está bastante limitada, no puedo navegar de forma interactiva por el sistema de archivos con 'cd..', aunque si puedo utilizar rutas completas para hacer un dir 'dir C:\Documents and Settings', tampoco puedo utilizar el comando 'ftp.exe' de forma interactiva ni muchas mas cosas, por lo que me encuentro levemente enjaulado en 'C:\Windows\System32'.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
En éste punto podríamos pensar en subir un Troyano, RAT, o Backdoor mediante la <a href="http://support.microsoft.com/kb/96269/es" target="_blank">automatización de un script para el comando 'ftp'</a> (ftp -s:comandos.txt <ip_servidor_ftp>), pero nos encontraríamos con el problema de un muy probable antivirus hambriento de sangre de Troyano, ¿entonces que?, seamos mas sutiles. Como ya hemos dicho, tenemos permisos TFB, y una línea de comandos, aunque algo limitada, perfectamente funcional. Vamos a crear un usuario y pasarle al grupo de Administradores.</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsBND0v66ZlbOe4I7QjUgTEF8uPDY8HRE8NfJehT-r6MFbOxnXUS9k_6jrWOZVt2F7HdAZcGCv5sV3gONe8SkY5lieo7dgVpEOjoHhxTUNJiWv5e74xNDBpW4FqxlkLxKpFeCOq8ZgSjc/s1600/set9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsBND0v66ZlbOe4I7QjUgTEF8uPDY8HRE8NfJehT-r6MFbOxnXUS9k_6jrWOZVt2F7HdAZcGCv5sV3gONe8SkY5lieo7dgVpEOjoHhxTUNJiWv5e74xNDBpW4FqxlkLxKpFeCOq8ZgSjc/s1600/set9.png" height="400" width="286" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
En la imagen anterior vemos el proceso de creación del usuario. Como hemos visto que existe un usuario llamado McAfeeMVSUser, entonces existe la sospecha de que el equipo utiliza una suit de seguridad de McAfee, por lo tanto y para que "no se note" al nuevo usuario lo hemos bautizado como "McAfistro" :·). A McAfistro le asignamos la contraseña 123456 y vemos como al escribir de nuevo el comando 'net user' se ha creado sin problemas. Ahora sólo nos queda añadir a nuestro nuevo usuario al grupo de administradores del sistema, lo cual vemos en la siguiente imagen:</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK8eZCVjrVGV81OBu4_ixX9qauVClkD1tON8HxBcE3dqViHlynRght9VYAsZ7H1yUhiAf4ne4qo3qKLHMiopoDXYvAz5ifW_MTeEsoTh0X0YEeOjTVA_ujgyFHXlxrtrLW2VEi1XLyanA/s1600/set10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK8eZCVjrVGV81OBu4_ixX9qauVClkD1tON8HxBcE3dqViHlynRght9VYAsZ7H1yUhiAf4ne4qo3qKLHMiopoDXYvAz5ifW_MTeEsoTh0X0YEeOjTVA_ujgyFHXlxrtrLW2VEi1XLyanA/s1600/set10.png" height="75" width="320" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Vale, pues ya hemos acabado con 'xp_cmdshell' y con 'SET', tipeamos "exit" y volvemos a nuestra propia shell, desde dónde trataremos de conseguir una línea de comandos completamente funcional haciendo login con el nuevo usuario que hemos creado.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Aquí es donde entra en juego Winexe, programa similar a PSExec, pero en este caso funciona desde entornos *NIX, y mas concretamente en nuestro escenario, Linux. La sintaxis de winexe es:</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="background-color: #ffe599; color: #38761d;">
</span>
<br />
<pre class="brush:text;">$winexe --user=<usuario> --password=<contraseña> //IP_del_equipo <Programa_a_ejecutar</pre>
</div>
<div style="text-align: justify;">
<span style="color: #38761d;"><br /></span></div>
<div style="text-align: justify;">
Ahora, podemos ver como lo utilizamos en nuestro pentest en particular:</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhUFSXq3fBa7MPF0jrDz2IuGkQ8v1p-OLhU_Tm7hPdBDk326kW67McruIDmlw3EbyNvNXQsfw4889Z_NzoI3BTscH_mscxJgV0uLa9ZeyCNd8L9TJ23eqxi3N4tRuigkzi-GJQZ53I8Aw/s1600/set11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhUFSXq3fBa7MPF0jrDz2IuGkQ8v1p-OLhU_Tm7hPdBDk326kW67McruIDmlw3EbyNvNXQsfw4889Z_NzoI3BTscH_mscxJgV0uLa9ZeyCNd8L9TJ23eqxi3N4tRuigkzi-GJQZ53I8Aw/s1600/set11.png" height="400" width="370" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
En la cabezera enmarcada en verde, podemos ver como nos da la bienvenida un Windows Server 2003 SBS (ese dato no se saca de esta captura, pero si habéis estado atentos, lo podéis deducir de alguna de las anteriores...), luego podemos ver el nombre del equipo y el usuario con el que estamos conectados. También se ve como podemos movernos tranquílamente por el árbol de directorios, como si de una sesión de telnet se tratara, y como se puede obtener información de la red con ipconfig.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Ahora entra en juego la imaginación o las intenciones de cada uno, yo que soy malo que te cagas, intenté un pequeño truquillo, que fue mandar un mensaje a todos los usuarios conectados con el comando 'msg', tal que así:</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="background-color: #ffe599; color: #38761d;">
</span>
<br />
<pre class="brush:text;">msg * [ Microsoft Alert: El sistema se ha recalentado, por favor, apague el equipo ]</pre>
<span style="background-color: #ffe599; color: #38761d;">
</span>
<span style="background-color: #ffe599; color: #38761d;">
</span></div>
<div style="text-align: justify;">
<span style="background-color: #fff2cc; color: #38761d;"><br /></span></div>
<div style="text-align: justify;">
<span style="color: #38761d;"> </span>Pero no coló...</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<u><b>CONCLUSIONES:</b></u></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<b>1) </b>Si no vas a utilizar xp_cmdshell, <u>deshabilítalo</u>.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<b>2)</b> Si SÍ lo vas a utilizar, haz incapié en que los usuarios de MSSql (todos) tengan una contraseña lo suficientemente fuerte como para hacer frente a un ataque de fuerza bruta.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<b>3)</b> Realiza o contrata una auditoría periódica de tus sistemas, un fallo de éste tipo te puede hacer perder mucho tiempo y dinero si se topa con él la persona equivocada.</div>
mmsystemshttp://www.blogger.com/profile/04338319361390716656noreply@blogger.com0tag:blogger.com,1999:blog-591525051962723616.post-12228051527425987422013-07-01T16:40:00.000+02:002013-09-29T20:20:19.629+02:00Crear, ver y borrar usuarios de SAMBA<div style="text-align: justify;">
Esto es un manual rápido de cómo crear, consultar y eliminar usuarios en nuestro servidor de archivos SAMBA. Partimos de la base de que SAMBA ya está instalado y sus recursos compartidos configurados correctamente. Los pasos que seguiremos serán:</div>
<br />
<ul>
<li>Crear el usuario en el sistema</li>
<li>Crear una contraseña para ese nuevo usuario</li>
<li>Crear ese usuario en SAMBA</li>
<li>Ver usuarios creados en SAMBA</li>
<li>Eliminar usuarios</li>
</ul>
<div>
<br /></div>
<div>
<br /></div>
<b><u>CREAR USUARIO EN EL SISTEMA</u></b> (Orientado al uso <u>solo</u> en SAMBA)<br />
<br />
<span style="background-color: #ffe599; color: #38761d;"><b>useradd -s /usr/sbin/nologin usuario</b></span><br />
<br />
<b><u>CREAR UNA CONTRASEÑA PARA EL NUEVO USUARIO</u></b><br />
<br />
<b><span style="background-color: #ffe599; color: #38761d;">passwd usuario</span></b><br />
<br />
<b><u>CREAR EL USUARIO EN LA BBDD DE SAMBA</u></b><br />
<a name='more'></a><br />
<b><span style="background-color: #ffe599; color: #38761d;">smbpasswd -a usuario</span></b><br />
<br />
<b><u>VER USUARIOS CREADOS ACTUALMENTE EN SAMBA</u></b><br />
<br />
<span style="background-color: #ffe599; color: #38761d;"><b>pdbedit -L</b></span><br />
<br />
<b><u>BORRAR UN USUARIO DE LA BBDD DE SAMBA</u></b> (no se borra el usuario del sistema)<br />
<br />
<b><span style="background-color: #ffe599; color: #38761d;">smbpasswd -x usuario</span></b><br />
<b><span style="background-color: #ffe599; color: #38761d;"><br /></span></b>
<b><span style="background-color: #ffe599; color: #38761d;"><br /></span></b>
<span style="background-color: white;"> Para realizar todo el proceso de creación de usuarios un poco más ameno, podemos utilizar un pequeño script que haga parte del trabajo:</span><br />
<span style="color: #38761d;"><br /></span>
<br />
<pre><span style="background-color: white;"><i><span style="color: #6fa8dc;">#!/bin/bash
#Creación de usuarios en servidor SAMBA ------------------
#------ Marcos Españadero ----- ciberentropia.blogspot.com
#---------------------------------------------------------
#Comprobamos que se le pase un parametro usuario al script</span></i><span style="color: #38761d;">
<b>if [ "$1" = "" ]; then
echo -e "\n # ERROR #"
echo -e "\n Uso: "
echo -e "\n $0 NombreUsuario\n"
exit 0
fi</b>
</span><i><span style="color: #6fa8dc;">#Creamos el usuario del sistema</span></i><span style="color: #38761d;">
<b>echo -e "Creando usuario del sistema"
useradd -s /usr/sbin/nologin $1</b>
</span><span style="color: #6fa8dc;"><i>#Establecemos una contraseña para ese usuario</i></span><span style="color: #38761d;">
<b>passwd $1
</b>
</span><span style="color: #6fa8dc;"><i>#Creamos ese usuario en SAMBA</i></span><span style="color: #38761d;">
<b>echo -e "\nCreando usuario de SAMBA"
smbpasswd -a $1</b>
</span><span style="color: #6fa8dc;"><i>#Mostramos los usuarios que actualmente están creados en SAMBA</i></span><span style="color: #38761d;">
<b>echo -e "\nUsuarios actuales de SAMBA:"
echo -e "---------------------------"
pdbedit -L
echo -e "---------------------------"</b></span></span></pre>
<pre><span style="background-color: white;"><span style="color: #38761d;"><b>
</b></span></span></pre>
<div style="text-align: justify;">
<b style="background-color: white; color: #38761d;"></b><span style="background-color: white;"> Guardaremos el script como '<b>usamba.sh</b>' y le daremos permisos de ejecución con '<b>chmod +x usamba.sh</b>', despues sólo tendremos que escribir '<b>./usamba.sh UsuarioSMB</b>' para comenzar a crear el usuario, y tras esto habrá que poner la contraseña CUATRO (aaaala...) veces, dos para el usuario del sistema y otras dos para el usuario de SAMBA. En los cuatro casos escribiremos la misma contraseña (Aunque realmente la contraseña del sistema y la de SAMBA pueden ser diferentes).</span>
</div>
<pre><span style="background-color: #cfe2f3; color: #38761d;">
</span></pre>
<div style="text-align: justify;">
<span style="font-family: inherit;"><span style="color: #38761d;"></span> Todos estos pasos son sólo para crear usuarios, luego todo el tema de la asignación de usuarios a un recurso compartido concreto se hará mediante la modificación del fichero '/etc/samba/smb.conf' cuyo funcionamiento trataremos más adelante.</span> </div>
<div style="text-align: justify;">
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"> Para <b>borrar por completo un usuario</b> de nuestro servidor, primero habrá que borrarlo de la BBDD de SAMBA y luego del sistema:</span><br />
<span style="font-family: inherit;"><br /></span>
<br />
<ol>
<li><span style="background-color: #ffe599; font-family: inherit;"><b><span style="color: #38761d;">smbpasswd -x usuario</span></b></span></li>
<li><span style="background-color: #ffe599; font-family: inherit;"><b><span style="color: #38761d;">userdel usuario</span></b></span></li>
</ol>
<br />
<span style="font-family: inherit;"><br /></span></div>
<div style="text-align: justify;">
<span style="font-family: inherit;">Un saludo y espero que os sirva esta pequeña <i>chuleta.</i></span>
</div>
mmsystemshttp://www.blogger.com/profile/04338319361390716656noreply@blogger.com2tag:blogger.com,1999:blog-591525051962723616.post-90129536955601469512013-06-27T19:03:00.003+02:002013-09-29T20:21:07.828+02:00Configurar VNC en Debian 6 (LXDE Desktop)<div style="text-align: justify;">
Hace ya tiempo que me topé con la idea de instalar un servidor VNC sobre un equipo Debian, pero al final no salió adelante y el proyecto quedó ahí. Ahora me han pedido lo mismo, para un servidor Debian con el gestor de escritorio <a href="http://lxde.org/es" target="_blank">LXDE</a>, la instalación es relativamente fácil, el problema viene cuando queremos que el servicio VNC se arranque en cada inicio del sistema, de forma desatendida. He optado por <a href="http://www.karlrunge.com/x11vnc/" target="_blank">x11vnc </a>ya que me parece el mas flexible y fácil de configurar debido a su extensa documentación. Bueno, comenzamos. Lo primero será instalar x11vnc, con nuestro tan querido 'apt-get':</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="color: #999999;">*Para introducir los comandos puedes utilizar sudo en cada uno, o cambiarte a 'root' con el comando su y trabajar tranquilamente sin tener que introducir la contraseña a cada paso. Los comandos serán explicados partiendo de la base de que se está trabajando como usuario 'root'.</span></div>
<div>
<br />
<div>
<span style="background-color: #ffe599;"><span style="color: #38761d;"><b>apt-get install x11vnc</b></span></span></div>
</div>
<div>
<br /></div>
<div>
Lo siguiente será crear una contraseña para la conexión al VNC-Server:</div>
<div>
<a name='more'></a><br /></div>
<div>
<span style="color: #38761d;"><b style="background-color: #ffe599;">x11vnc -storepasswd MiPassword /etc/x11vnc.pass</b></span></div>
<div>
<br /></div>
<div>
<div style="text-align: justify;">
Una vez creada la contraseña (no es obligatorio...pero está claro que es MUY recomendable, lo dejo a vuestro juicio) los parámetros que hemos de pasar, o al menos, que en mi caso se pasan a x11vnc son:</div>
</div>
<div>
<br /></div>
<div>
<span style="color: #38761d;"><b style="background-color: #ffe599;">x11vnc -noxrecord -noxfixes -noxdamage -rfbauth /etc/x11vnc.pass -bg -o /var/log/x11vnc.log -forever -rfbport 5900 -display :0 -auth /var/lib/gdm/:0.Xauth</b></span></div>
<div>
<br /></div>
<div>
<div style="text-align: justify;">
Una visita a 'man x11vnc' os dará una explicación detallada de todos los parámetros usados, pero yo os voy a decir los tres que me parecen más importantes:</div>
</div>
<div>
<br /></div>
<div>
<div style="text-align: justify;">
<b>-forever:</b> Por defecto, x11vnc se cierra al terminar una conexión VNC, con lo que la siguiente no podrá ejecutarse a menos que se repita el comando superior, este modificador es para evitar eso precisamente, y así quedará a la escucha de conexiones siempre.</div>
</div>
<div>
<br /></div>
<div>
<div style="text-align: justify;">
<b>-display :0:</b> Indicamos el display al que queremos que se conecte x11vnc. (:0 por defecto).</div>
</div>
<div>
<br /></div>
<div>
<div style="text-align: justify;">
<b>-auth /var/lib/gdm/:0.Xauth:</b> Cargamos la coockie de autenticación del servidor X (este parametro varía dependiendo del sistema, recuerda: esto sería para Debian 6 LXDE!)</div>
</div>
<div>
<br /></div>
<div>
<div style="text-align: justify;">
Ahora, para hacer más comodo el proceso de arranque, he incluido el contenido del comando con todos los modificadores en un pequeño script que guardaremos en<b> /usr/bin</b> con el nombre<b> startvnc.sh</b>:</div>
</div>
<div>
<br /></div>
<div>
<div>
<i><span style="color: #0b5394;">#!/bin/sh</span></i></div>
<div>
<i><span style="color: #0b5394;"># Script para inicio automatico del servidor VNC</span></i></div>
<div>
<i><span style="color: #0b5394;">/usr/bin/x11vnc -noxrecord -noxfixes -noxdamage -rfbauth /etc/x11vnc.pass -bg -o /var/log/x11vnc.log -forever -rfbport 5900 -display :0 -auth /var/lib/gdm/:0.Xauth</span></i></div>
</div>
<div>
<br /></div>
<div>
*Aseguraos de que el comando esté en una sola línea, aquí no entra de esa manera :(<br />
<br />
Hay que hacer el script ejecutable con:<br />
<br />
<span style="background-color: #ffe599; color: #38761d;"><b>chmod +x /usr/bin/startvnc.sh</b></span></div>
<div>
<br /></div>
<div>
<div style="text-align: justify;">
Ahora lo que mas quebraderos de cabeza me ha dado: ARRANCAR EN CADA REINICIO EL SERVIDOR VNC, para esto he tenido que hacer dos cosas:</div>
</div>
<div>
<br /></div>
<div>
<div style="text-align: justify;">
1) En 'menu -> preferences -> login window', ir a la pestaña 'seguridad' y activar la entrada automática. Elegimos el usuario al que nos conectaremos por VNC y le damos a 'cerrar'.</div>
</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigkWi0GoYAq5Z5KOXcmfKbIIzfZQ-u8z7BfvdU4pSaTD-qQtWEoBufmBUzO6_dlCej140VdGsPj0iICQmsQtaa71M9Z3bWKIt18dsyO0qH7lKJhxGeqmEChx6bC4a_hsQIWhUTiZYpSDs/s956/login_window.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigkWi0GoYAq5Z5KOXcmfKbIIzfZQ-u8z7BfvdU4pSaTD-qQtWEoBufmBUzO6_dlCej140VdGsPj0iICQmsQtaa71M9Z3bWKIt18dsyO0qH7lKJhxGeqmEChx6bC4a_hsQIWhUTiZYpSDs/s956/login_window.png" height="320" width="400" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<div style="text-align: justify;">
2) El segundo paso es ejecutar el script antes creado al inicio de la sesión de LXDE. Tendremos que situarnos en la ruta:</div>
</div>
<div>
<br /></div>
<div>
<b style="background-color: #ffe599;"><span style="color: #38761d;">cd /etc/gdm/PostLogin/</span></b></div>
<div>
<br /></div>
<div>
Aquí encontraremos un archivo llamado 'Default.sample', lo renombramoscon un:</div>
<div>
<br /></div>
<div>
<span style="background-color: #ffe599; color: #38761d;"><b>mv Default.sample Default </b></span></div>
<div>
<br /></div>
<div>
Luego editamos el archivo:</div>
<div>
<br /></div>
<div>
<b><span style="background-color: #ffe599; color: #38761d;">nano Default</span></b></div>
<div>
<br /></div>
<div>
<div style="text-align: justify;">
Al final de este archivo tendremos que escribir la ruta a nuestro script, que como antes definimos, era '/usr/bin/startvnc.sh'.</div>
</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqhmUFsn1cndVrZQLgFd2n3FR35IVAk3TBVjBekpyxzs34rDJQIsuSd7j5kPx5shQch6UL3mG6JwqRI4P7fcgZc87orwkLWHImrxJk1UGkbEEE23Gq1bB-K2gbaEOg6pkDWNIu1Jx9I_E/s643/Default.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqhmUFsn1cndVrZQLgFd2n3FR35IVAk3TBVjBekpyxzs34rDJQIsuSd7j5kPx5shQch6UL3mG6JwqRI4P7fcgZc87orwkLWHImrxJk1UGkbEEE23Gq1bB-K2gbaEOg6pkDWNIu1Jx9I_E/s643/Default.png" height="122" width="400" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<div style="text-align: justify;">
Llegados a este punto, sólo nos falta reiniciar nuestro servidor Debian, y comprobar el acceso mediante algún cliente VNC, yo he usado "<a href="http://www.uvnc.com/downloads/ultravnc.html" target="_blank">UltraVNC Viewer</a>" desde Windows 7, y este es el resultado:</div>
</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjO_AcZxui38pIjavVvY6XWHlN5VslKA-xcgR7EoTlcvZcH7aC-nEgOSSrCAxG2pIGFjzMGNDcW104-b1u79rdDA_fw-pSrDVAEShbtf1xpizkctvnzRKz2IA6odhAT2t2mXgqV5q0K5po/s1038/vnc.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjO_AcZxui38pIjavVvY6XWHlN5VslKA-xcgR7EoTlcvZcH7aC-nEgOSSrCAxG2pIGFjzMGNDcW104-b1u79rdDA_fw-pSrDVAEShbtf1xpizkctvnzRKz2IA6odhAT2t2mXgqV5q0K5po/s1038/vnc.png" height="320" width="400" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<div style="text-align: justify;">
Se que no es la única forma de hacerlo, pero espero que os sea de utilidad y que no os deis tantos cabezazos como yo con el tema de el inicio desatendido.</div>
</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
Un saludo!</div>
<div>
<br /></div>
<div>
<br /></div>
mmsystemshttp://www.blogger.com/profile/04338319361390716656noreply@blogger.com0tag:blogger.com,1999:blog-591525051962723616.post-65189907239846546672013-06-27T17:29:00.002+02:002014-05-01T18:46:42.550+02:00Comenzamos!<div style="text-align: justify;">
Os damos la bienvenida a nuestro pequeño espacio, donde iremos escribiendo sobre nuestras soluciones a problemas informáticos, así como manuales y guías de actuación a aplicar en determinadas circunstancias (eso sí, siempre con algún 'cacharro' tecnológico de por medio...)</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Un saludo, y COMENZAMOS!!</div>
mmsystemshttp://www.blogger.com/profile/04338319361390716656noreply@blogger.com0