‹®œì; make.html Ô<[S·šÏ{ªÎÐâŠSC7ÛIp†‰CƒwOjkË¥é3²{Z©×þ˜ýk~ÌC¶ò–§ý.R·zbàœÂN3Ý’¾ûEú>mýûÞÑîéOÇ}1ªÆ…8~óâ`W,¤énì¦éÞéžøñôÕx’¬®‰S+K§+mJY¤iÿpéù_ÿ²…ãè§’9üølU%aÖj²¢~®õùöÒ®)+UV+§Ó‰ZÚ^ªÔe•â,߉l$SÕö….ssáVÖÖŸ®/]´”cµ½ô²Ø½szô:šë•άqæ¬?XøîX‚~íÇÖ÷óh‚fXÒÏuel²g²zxŠJW…z¾“Uµ,ô™é‡Ffu¥¾+E®`Q¥^œì )*+Ï•Ãïöaf[ªj+å± Ð+m¶50ùIxk§? `€öÖÀÒãÛ©M±Ô´êl{i,uQ™Í÷æþ[¦ÊV*“IfÆKÏÿßm¥'ó£P@ÔM±º–
|
Website templates are pre-designed websites all you need to do is add your own personal content and you're ready to jump start your own website. Website templates by Vooweb |
|
Revisión 22-Diciembre-2000
INTERCONEXIÓN PALM PILOT III/V/VII
By QuasaR - UNDERSEC Security Team
INTRODUCCIÓN
Allá por marzo del 96 la compañía 3com se invento una aparatito de lo mas
curioso que cumplía perfectamente las labores de la agenda electrónica
aparecida años antes (véase casio) pero que además iba mas allá con
características mas acercadas a las necesidades de hoy en dia. La política le
ha funcionado bien, porque el numero de ventas de Palms se ha ido incrementando
notablemente, al igual que se han ido ampliando las posibilidades y
características de estos dispositivos.
Una de las posibilidades mas grandes que ofrecen las palm pilot es su
posibilidad de interconexión independientemente del Hardware o OS
el que la deseemos conectar. Si alguien sabe de las mismas posibilidades con
pocketwin que me envíe un email.
Los textos sobre palm pilot (& howto's) que podemos encontrar por ahí, en su
mayoría en ingles, nos tocaran temas muy concretos. Basados principalmente en
instalación & programacion de aplicaciones sobre palm. Por lo que echando un
detenido vistazo me he decantado por este texto (mini-howto a fin de cuentas)
sobre interconexión de la palm, mucho menos documentado en ingles y casi cero
en castellano.
SINCRONIZACION
Una de las posibilidades iniciales que ha traído palm desde siempre ha sido el
proceso de sincronización. Es el proceso mediante el cual es posible
realizar instalación & backups de la palm al ordenador y viceversa mediante
el cradle o base.
No existe ningún misterio bajo plataforma windows, mas que nada porque el
software que trae la propia palm en su caja, ya es mas que suficiente para
abastecer todas las necesidades de sincronía de la palm. Ademas en la
propia pagina de Palm (http://www.palm.com) esta disponible todos los updates
de este software para plataformas windows.
El tema se vuelve un pelin mas exigente para plataformas Linux y FreeBSD.
Para ambos existen un paquete de utilidades+librerias para una correcta
sincronización, tanto en modo consola como en modo grafico.
No he probado utilidades como Kpilot (http://www.slac.com/pilone/kpilot_home/)
y similares sobre entorno grafico. Lo que si esta claro es que ofrecen mayor
comodidad y ciertas mejoras sobre las de consola. Entre ellas la posibilidad de
realizar la mayoría de las operaciones desde un mismo programa (no así en
consola). Y la posibilidad de dejar en segundo plano un applett que reconozca
la pulsacion del botón de sincronía de la base y realice el proceso
automaticamente.
Para consola en este apartado tenemos las pilot-link
(ftp://ryeham.ee.ryerson.ca/pub/PalmOS/).
Un paquete de herramientas bastante completo. El problema es que según lo que
queramos hacer necesitaremos de un programa u otro. Aunque las posibilidades
son practicamente, quitando algunos detallitos, las mismas que sobre la
plataforma windows.
Para información mas detallada sobre las pilot-link hay ya que leerse las man
(man pilot-link) una vez instalado el paquete. Existe tambien el port con
el patch para versiones de FreeBSD q funciona correctisivamente.
Solo nombrar aqui un par de detalles facilmente pasables por alto. A partir del
Palm OS 3.3 la sincronía se puede realizar a una velocidad de 57600. En
windows accediendo a un simple menú es posible variar la velocidad. Para linux
y FreeBSD hay que asignar un valor a una variable de entorno:
export PILOTRATE=57600 (o la velocidad que deseemos)
El segundo es también para plataformas linux & FreeBSD. Es muy recomendable
un simbólico al serie donde tengamos la palm metida:
Linux:
ln -s /dev/pilot /dev/ttyS0 (o ttyS1)
FreeBSD:
ln -s /dev/pilot /dev/ttyd0 (o ttyd1)
Para mas información sobre sincronía hay que buscar ya en sitios
oficiales (http://www.palm.com) o menos oficiales (http://www.handango.com)
Y ahora pasamos a una de las opciones mas interesantes de palm...
CONEXION PPP
La palm lleva una pila TCP/IP bastante resumida pero con enormes posibilidades
y ademas es capaz de soportar conexiones punto a punto. Ya sea con un modem,
a través de IR (IRDA) sobre un móvil (o portátil) o bien al serie de otro
equipo.
La interconexión de la palm al movil/modem nos da la posibilidad de acceder a
cualquier sitio desde cualquier lugar que nos encontremos mientras tengamos
cobertura. Existen clientes de telnet, web, wap, vnc, correo.... para poder
consultar lo que queramos.
La interconexión de la palm desde otro ordenador por ejemplo es mas discutida.
Para que queremos usar la palm, si ya tenemos el ordenador? Pues nunca se sabe.
En casa de un amigo que el tio esta ocupando el ordenador todo el rato. O en
una party o en una reunión.... el caso es que tenemos un acceso transparente
desde ese ordenador al resto de la red o internet.
Y ahora nos vamos a centrar en este segundo punto:
a) Conexion ppp + palm + windows
La conexión de la palm a través de plataformas windows es muy sencilla.
Todo se resume a bajarse el programilla Mochappp (http://www.mochasoft.dk) y
configurarlo, sin ningún misterio, adecuadamente. El programa espera una
conexión ppp de la palm y le asigna la ip y las dns que posee a la palm.
De esta forma la palm es completamente transparente a todo y todos.
Ya veremos que no ocurre lo mismo en otras plataformas, donde la palm se
comportara como una maquina mas.
Tan solo hay que tener en cuenta que en el menú de configuración de red de
la palm:
Prefer (preferencias) -> Red -> Detalles
Debemos seleccionar que todo este asignado automaticamente y en PPP.
En windows 98 el Mochappp con Palm OS 3.3 funciona perfectamente.
Otra cosa que también recalcare mas adelante, es que esta posibilidad de
conexión ppp a velocidades por encima de 19200 es viable siempre que se tenga
el OS 3.3 o superior. En caso de no ser asi, existe la utilidad linkdirect.prc
(http://http://www.vmlinuz.org/palmos/linkdirect.html) para palm que soluciona
esta decadencia en Palm OS anteriores. Yo tuve la posibilidad de probarlo con
OS 3.0 y salvo evolución, el programa es de dudoso funcionamiento. Iba cuando
quería. Pero bueno, es lo que hay.
b) ppp + palm + linux
Llegamos a plataformas Linux. Las pruebas se realizaron sobre debian y un
2.2.17 y todo funciona perfectisimanente.
Para poder realizar la conexión ppp necesitaremos tener habilitado el
forwarding y el masquerade en nuestro sistema.
Habrá que tener compilado en el kernel o como modulo todo
lo relacionado con el forwarding y el masquerade. Ejemplillo de turno:
#
# Networking options
#
# CONFIG_CIPE is not set
CONFIG_PACKET=y
CONFIG_NETLINK=y
CONFIG_RTNETLINK=y
CONFIG_NETLINK_DEV=m
CONFIG_FIREWALL=y
# CONFIG_NET_SECURITY is not set
# CONFIG_FILTER is not set
CONFIG_UNIX=y
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_RTNETLINK=y
CONFIG_NETLINK=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_IP_ROUTE_MULTIPATH=y
# CONFIG_IP_ROUTE_TOS is not set
CONFIG_IP_ROUTE_VERBOSE=y
# CONFIG_IP_ROUTE_LARGE_TABLES is not set
CONFIG_IP_ROUTE_NAT=y
# CONFIG_IP_PNP is not set
CONFIG_IP_FIREWALL=y
# CONFIG_IP_FIREWALL_NETLINK is not set
# CONFIG_IP_ROUTE_FWMARK is not set
CONFIG_IP_TRANSPARENT_PROXY=y
CONFIG_IP_MASQUERADE=y
# CONFIG_IP_MASQUERADE_ICMP is not set
# CONFIG_IP_MASQUERADE_MOD is not set
# CONFIG_IP_ROUTER is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
CONFIG_IP_ALIAS=y
# CONFIG_ARPD is not set
CONFIG_SYN_COOKIES=y
# CONFIG_INET_RARP is not set
CONFIG_SKB_LARGE=y
# CONFIG_IPV6 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_BRIDGE is not set
# CONFIG_LLC is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_NET_FASTROUTE is not set
# CONFIG_NET_HW_FLOWCONTROL is not set
# CONFIG_CPU_IS_SLOW is not set
Ahora y después de recompilar hay que activar la opción del forwarding:
echo "1" > /proc/sys/net/ipv4/ip_forward
Y cargar los módulos pertinentes según el servicio que vayamos a usar....
cd /lib/modules/2.2.1x/ipv4
Ahí tenemos todos los módulos de los servicios a enmascarar. Ejemplillo
de turno:
-rw-r--r-- 1 root root 11308 Oct 25 15:26 ip_gre.o
-rw-r--r-- 1 root root 4832 Oct 25 15:26 ip_masq_autofw.o
-rw-r--r-- 1 root root 2632 Oct 25 15:26 ip_masq_cuseeme.o
-rw-r--r-- 1 root root 4888 Oct 25 15:26 ip_masq_ftp.o
-rw-r--r-- 1 root root 3548 Oct 25 15:26 ip_masq_irc.o
-rw-r--r-- 1 root root 6276 Oct 25 15:26 ip_masq_mfw.o
-rw-r--r-- 1 root root 4904 Oct 25 15:26 ip_masq_portfw.o
-rw-r--r-- 1 root root 3216 Oct 25 15:26 ip_masq_quake.o
-rw-r--r-- 1 root root 5260 Oct 25 15:26 ip_masq_raudio.o
-rw-r--r-- 1 root root 5244 Oct 25 15:26 ip_masq_user.o
-rw-r--r-- 1 root root 3080 Oct 25 15:26 ip_masq_vdolive.o
-rw-r--r-- 1 root root 9324 Oct 25 15:26 ipip.o
Hay que cargar el que queramos (modprobe).
Una vez cargados los modulos correspondientes tenemos que activar el
enmascaramiento (masquerade). Bastara con:
ipchains -A forward -s 0/0 -d 0/0 -j MASQ
Si se requiere de un mayor control sobre el masquerade es mejor que os
leáis cierta documentación sobre ipchains.
Bien, ahora lo que haremos es crear el server pppd y que espere una conexión
punto a punto en el serie que le digamos. La línea de comandos a utilizar seria,
en su formato mas básico, algo como:
pppd /dev/serie velocidad :ipdepalm parametros
Ejemplillo:
pppd /dev/pilot 57600 :10.0.0.2 local debug passive crtscts noauth
/dev/pilot -> pilot es link a nuestro serie
57600 -> velocidad que queramos
:10.0.0.2 -> Aquí metemos la ip que la palm va a tener (inventada pero en
nuestra misma subred). Es un hecho muy curioso ver como sobre
linux la palm se va a comportar como un dispositivo
completamente distinto y que va a formar parte de nuestra red.
local -> lo usamos para que no espere el tono de la linea telefonica.
debug -> muestra todo el proceso de conexión (syslog)
crtscts -> para el control de la comunicación, la palm lo soporta.
passive -> Cuando el LCP no envía un paquete correcto en vez de salir
aguanta hasta un reset by peer.
noauth -> sin solicitar autorización para el uso de la línea ppp.
En principio con estos parámetros el server ppp (pppd) deberia de quedar a la
escucha. Siempre podremos enriquecer mas nuestro pppd añadiéndole mas
parámetros.
pppd /dev/pilot 57600 :10.0.0.2 local debug passive crtscts nodetach proxyarp
auth &
nodetach -> para mantener el terminal ocupado mientras se ejecuta pppd
proxy-arp -> asigna una dirección mac a la ip de la palm. A fin de
cuentas es una alias de la del ordenador al que esta conectada.
auth -> Pide autorización para el uso de la línea. Utiliza el
pap-secrets.
& -> al tener el nodeatch esto hará que se meta en segundo plano
;)
La opción ms-dns aparece en algunos documentos como valida para asignar
unas dns's a la palm (la palm soporta esto), sin embargo no nos funciono
por lo que recomiendo asignar manualmente las dns desde la propia palm:
Prefer (preferecias) -> red -> detalles --> kitar checkbox de dns autmaticas
El siguiente paso es asegurar que las rutas son las correctas. Hay que pensar
que vamos a realizar una conexión ppp y que por lo tanto uno de nuestros
dispositivos PPPx va a ser usado (sea ppp0 o ppp1... dependiendo de las
conexiones punto a punto que tengamos establecidas).
En principio, lo adecuado seria que la ruta por defecto de la palm utilizara
a nuestra maquina de gateway por defecto, y debería funcionar. Igual lo que
viene a continuación no es necesario. Sin embargo, por las diferentes
configuraciones de las rutas estáticas del route puede ser que no haga el
acceso hasta internet o no pase mas allá de nuestra maquina. Es decir, puede
que llegue el caso de que con nuestro ordenador si funcione pero fuera de el
ya no, por culpa del gateway o que los dns son inalcanzables. Ahí van
diferentes opciones:
route add ipdepalm dev dispositivo gw ipmaquina
o bien tambien tengamos que reconfigurar la ruta por defecto del gateway.
route del gateway
route add gateway dev dispositivo-inet
OJO!!!! aquí el dispositivo es el de acceso a internet!. No el que la palm va a
crear.
ejemplos:
route add 10.0.0.2 dev ppp0 gw 10.0.0.1
o tambien:
route del default
route add default dev ppp0
En este segundo caso, ppp0, es el de inet, el de la palm entonces seria de ppp1
en adelante.
y como pap-secrets de ejemplo:
quasar * password *
NOTA: los * son necesarios.
Una vez hecho todo esto (muy engorroso de explicar, muy fácil de realizar)
tendremos una conexión ppp con la palm. Solo hay que darle al connect de la
palm para que funcione...
Pasemos a la explicación con FreeBSD y luego expondré datos curiosos y
conclusiones....
c) ppp + palm + FreeBSD
La configuración para la conexión de la palm y la Free es muy similar a la de
Linux, pero no igual. De hecho, por la poca documentación existente casi los
mismos pasos han costado un poco mas.
Para empezar, y al igual que en Linux, necesitamos que el kernel traiga
soporte para gateway osease, firewalling y forwarding.
options INET #InterNETworking
options IPFIREWALL #packet filtering
options IPFIREWALL_VERBOSE #logging of packets through syslogd
options IPFIREWALL_VERBOSE_LIMIT=10 #num max logging packets
El resto de opciones necesarias ya vienen en el fichero de conf del núcleo
genérico. Las tres ultimas se deben de poner porque con el generico, por lo
menos en la versión 4.0 de la FreeBSD, no vienen.
En la opción:
options IPFIREWALL_VERBOSE_LIMIT=10
el numero seria acertado que estuviere entre 10 y 100.
Ahora creamos el enlace simbólico ya comentado anteriormente:
ln -s /dev/pilot /dev/ttyd0 (o ttyd1)
Y activamos la opción de forwarding. Dos maneras:
a) Añadir linea: gateway_enable="YES" al fichero
/etc/rc.conf
b) O desde la shell: sysctl -w net.inet.ip.fw.enable=1
La diferencia reside en que con el a) esta ya para siempre activado, no así en
el b) que habrá que teclearlo cada vez que se encienda el ordenador.
Lo curioso de la FreeBSD es que cuando se activa la opción de firewalling, el
núcleo, por defecto, pilla el file por defecto de /etc que
normalmente filtra todos los paquetes de todos los dispositivos y no
deja pasar absolutamente nada por ningún lado. NO como en linux. Por lo que nos
toca dar un paso intermedio.
Dos opciones pues. La primera es modificando la configuración script del
firewall. Un ejemplo viene a continuación.
En el fichero /etc/rc.conf tenemos que añadir lo siguiente:
gateway_enable="YES"
firewall_enable="YES"
firewall_script="/etc/firewall/fwrules"
La primera línea ya la habíamos puesto anteriormente. En las otras dos, la
primera nos permite trabajar con ipfw (ipchains en linux) y la segunda
nos permite pasarle las rules al ipfw desde un file (ipchains-restore en linux)
Una vez añadidas estas lineas creamos directorio en /etc llamado 'firewall':
mkdir /etc/firewall
y creamos allí el fichero 'fwrules' que va a contener:
--- CUT ----
# Firewall rules
# QuasaR of UNDERSEC Security Team
# Gracias a Marc Silver (marcs)
# Definimos un alias sobre el que trabajar
fwcmd="/sbin/ipfw"
# Borramos las rules que podamos tener establecidas de antemano. Nunca se
# sabe y asi nos ahorramos un huevo de problemas.
$fwcmd -f flush
# Y ahora voy a piñon, lo dejo pasar absolutamente todo
$fwcmd add allow ip from any to any via lo0
$fwcmd add allow ip from any to any via ed0
$fwcmd add allow ip from any to any via ppp0
--- EOF ----
Si, ya se que he dejado pasar todo. Pero es que no me quiero enrollar ahora
explicando rules y tal. Que cada uno se lo haga a medida.
La segunda opción es mas rápida y posiblemente practica, pero menos
segura. Hay que recompilar el kernel con la opción:
options IPFIREWALL_DEFAULT_TO_ACCEPT
Ahora ya podemos ejecutar el pppd al serial. Funciona exactamente igual
que en linux. Por lo que la opción seria (mas info ver sección linux):
pppd /dev/pilot 57600 :ipdepalm local crtscts passive proxyarp noauth
Y con esto, la palm debería de funcionar perfectamente. Salvo follones con las
rutas estáticas del route. Estad atentos. Pero ya digo que debería de
funcionar. Solo le hace falta el connect de la palm para que se conecte.
CURIOSIDADES
Una vez conectada la palm al ordenador, en plataformas windows no permite
encontrar la palm como un dispositivo a parte del propio windows.
Sin embargo , no ocurre igual desde el resto de plataformas.
En el resto de plataformas (entiéndase Linux y FreeBSD) al asignarle una ip
e incluso una dirección MAC a la palm, esta se considera como un dispositivo
aparte, pudiéndose acceder a través de la ip. Esto nos permite usar scaneos,
pings, traceroutes y cualquier otra utilidad de red contra la palm. Y es
entonces cuando nos encontramos con las cosas mas curiosas.
Es divertido ver como un traceroute desde la RH pasa por la FreeBSD y
llega hasta la palm. O el camino contrario, Ver como la palm accede al IRC
desde la FREEBSD pasando por NAT por la RH.
Ejemplillo?:
NÓTESE que estoy desde quasar (RH) pasa por nekroid (FreeBSD) y llega a
INET.
[root@quasar ~]# traceroute palm
traceroute to palm.undersec.org ), 30 hops max, 38 byte packets
1 nekroid ms 1.129 ms 1.233 ms
2 palm ) 35.443 ms 36.549 ms 34.745 ms
[root@quasar ~]#
Mas cosillas. La palm es ahora un terminal en la red y claro, soporta tcp.
MMMMMmm... sera nukeable?. Correcto si. Cualquier nuke con igmps o flood deja
la palm completamente tostada!. La pila TCP/IP no es ninguna maravilla y claro
sale a relucir. De hecho, hasta un scanneo de fingerprints del nmap la deja
tostada.
Hablando de tostamientos, recomiendo la utilidad crash.prc que detecta un crash
y resetea la palm en caliente por ti, sin darle la vuelta y darle al
boton de reset. Busquese la susodicha utilidad en http://www.palmgear.com
por ese mismo nombre.
Podria seguir explicando cosillas, como lo de las passwords vulnerables en
el backup de la palm en el file Unsaved_Preferences.prc pero casi que esto
es otra historia.... ;)
CONCLUSIONES
El bichito llamado palm es una maravilla y eternamente flexible aunque debe
quedar claro que esta concebida como agenda personal y nunca hay que olvidar
esa idea.
Las pruebas han dado siempre resultado positivo. Se realizaron con los
los elementos indicados a continuación:
Palm V - Palm OS 3.3
FreeBSD 4.0 STABLE
Linux Debian 2.2.17
AGRADECIMIENTOS Y SALUDOS
Pues tengo que agradecer eternamente aquellas primeras pruebas que se hicieron
en la benagua party con el superportatil a Pope.
Tengo que agradecer casi el resto de las pruebas sobre Linux a Sp4rk y su
Debian chunga cuando la Hackmeeting.
Tengo que agradecer a mi madre que me diera pelas para poder ir a los sitios
anteriores y poder haber hecho las pruebas.
Y tengo que agradecer a personas mas indirectas el dar animos cuando estas en
momentos de bajon y sin ganas de hacer nada... Neko^_^ , Raise :*
Y ahora los saludos: UNDERSEC :* (http://www.undersec.com) & Netsearch
(http://www.netsearch-ezine.com) ..... guarris!
DESPEDIDA
Espero que el articulo sirva a muchas personas y contribuya para que alguien
no se tenga que dejar los cuernos mas....ya me los he dejado yo.
Para cualquier sugerencia o duda estoy en: quasar hasta que
me vuele el correo.
Ta otra....
----
Original: 25 - Octubre - 2000
1ª Revisión: 22 Diciembre - 2000