By QuasaR - UNDERSEC Security Team
Revision 22-Diciembre-20001
Alla por marzo del 96 la compaņia 3com se invento una aparatito de lo mas curioso que cumplia perfectamente las labores de la agenda electronica aparecida aņos antes (vease casio) pero que ademas iba mas alla con caracteristicas mas acercadas a las necesidades de hoy en dia. La politica 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 caracteristicas de estos dispositivos.
Una de las posibilidades mas grandes que ofrecen las palm pilot es su posibilidad de interconexion independientemente del Hardware o OS el que la deseemos conectar. Si alguien sabe de las mismas posibilidades con pocketwin que me envie un email.
Los textos sobre palm pilot (& howto's) que podemos encontrar por ahi, en su mayoria en ingles, nos tocaran temas muy concretos. Basados principalmente en instalacion & 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 interconexion de la palm, mucho menos documentado en ingles y casi cero en castellano.
Una de las posibilidades inicales que ha traido palm desde siempre ha sido el proceso de sincronizacion. Es el proceso mediante el cual es posible realizar instalacion & backups de la palm al ordenador y viceversa mediante el cradle o base. No existe ningun 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 sincronia de la palm. Ademas en la propia pagina de Palm (http://www.palm.com) esta disponible todos los updates de este sofware 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 sincronizacion, 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 mayoria de las operaciones desde un mismo programa (no asi en consola). Y la posibilidad de dejar en segundo plano un applett que reconozca la pulsacion del boton de sincronia 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 segun 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 informacion 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 aki un par de detalles facilmente pasables por alto. A partir del Palm OS 3.3 la sincronia se puede realizar a una velociadad de 57600. En windows accediendo a un simple menu es posible variar la velocidad. Para linux y FreeBSD hay que asignar un valor a una variable de entorno:
Linux:
ln -s /dev/pilot /dev/ttyS0 (o ttyS1)
FreeBSD:
ln -s /dev/pilot /dev/ttyd0 (o ttyd1)
Y ahora pasamos a una de las opciones mas interesantes de palm...
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 traves de IR (IRDA) sobre un movil (o portatil) o bien al serie de otro
equipo.
La interconexion 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 interconexion 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 reunion.... 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:
La conexion de la palm a traves de plataformas windows es muy sencilla. Todo se resume a bajarse el programilla Mochappp (http://www.mochasoft.dk) y configurarlo, sin ningun misterio, adecuadamente. El programa espera una
conexion 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 menu de configuracion de red de
la palm:
Prefer (preferencias) -> Red -> Detalles
Otra cosa que tambien recalcare mas adelante, es que esta posibilidad de conexion 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 evolucion, el programa es de dudoso funcionamiento. Iba cuando queria. Pero bueno, es lo que hay.
Llegamos a plataformas Linux. Las pruebas se realizaron sobre debian y un 2.2.17 y todo funciona perfectisimanente.
Para poder realizar la conexion ppp necesitaremos tener habilitado el forwarding y el masquerade en nuestro sistema.
Habra 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
echo '1' > /proc/sys/net/ipv4/ip_forward
cd /lib/modules/2.2.1x/ipv4
-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
enmascaramiento (masquerade). Bastara con:
ipchains -A forward -s 0/0 -d 0/0 -j MASQ
Bien, ahora lo que haremos es crear el server pppd y que espere una conexion punto a punto en el serie que le digamos. La linea de comandos a utilizar seria, en su formato mas basico, algo como:
pppd /dev/serie velocidad :ipdepalm parametros
pppd /dev/pilot 57600 :10.0.0.2 local debug passive crtscts nodetach proxyarp auth &
Prefer (preferecias) -> red -> detalles -> kitar checkbox de dns autmaticas
ya no, por culpa del gateway o que los dns son inalcanzables. Ahi van diferentes opciones:
route add gateway dev dispositivo-inet
ejemplos:
route add 10.0.0.2 dev ppp0 gw 10.0.0.1
route del default
route add default dev ppp0
quasar * password *
NOTA: los * son necesarios.
Una vez hecho todo esto (muy engorroso de explicar, muy facil de realizar) tendremos
una conexion ppp con la palm. Solo hay que darle al connect de la palm para
que funcione... Pasemos a la explicacion con FreeBSD y luego expondre datos
curiosos y conclusiones....
La configurracion para la conexion de la palm y la Free es muy similar a la de Linux, pero no igual. De hecho, por la poca documentacion 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
En la opcion:
options IPFIREWALL_VERBOSE_LIMIT=10
el numero seria acertado que estuviere entre 10 y 100.Ahora creamos el enlace simbolico ya comentado anteriormente:
ln -s /dev/pilot /dev/ttyd0 (o ttyd1)
Lo curioso de la FreeBSD es que cuando se activa la opcion de firewalling, el nucleo, 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 ningun lado. NO como en linux. Por lo que nos toca dar un paso intermedio. Dos opciones pues. La primera es modificando la configuracion script del firewall. Un ejemplo viene a continuacion.
En el fichero /etc/rc.conf tenemos que aņadir lo siguiente:
gateway_enable=''YES''
firewall_enable=''YES''
firewall_script=''/etc/firewall/fwrules''
Una vez aņadidas estas lineas creamos directorio en /etc llamado 'firewall':
mkdir /etc/firewall
-- CUT --
# Firewall rules
# QuasaR of UNDERSEC Security Team
# Gracias a Marc Silver (marcs@draenor.org)
# 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 --
options IPFIREWALL_DEFAULT_TO_ACCEPT
pppd /dev/pilot 57600 :ipdepalm local crtscts passive proxyarp noauth
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 (entiendase Linux y FreeBSD) al asignarle una ip e incluso una direccion MAC a la palm, esta se considera como un dispositivo aparte, puediendose acceder a traves 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?:
NOTESE que estoy desde quasar (RH) pasa por nekroid (FreeBSD) y llega a INET.
traceroute to palm.undersec.org (192.168.2.5), 30 hops max, 38 byte packets
1 nekroid (192.168.2.4) 2.212 ms 1.129 ms 1.233 ms
2 palm (192.168.2.5) 35.443 ms 36.549 ms 34.745 ms
[root@quasar ]#
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.... ;)
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 continuacion:
Palm V - Palm OS 3.3
FreeBSD 4.0 STABLE
Linux Debian 2.2.17
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@netsearch-ezine.com hasta que me vuele el correo.Ta otra....
This document was generated using the LaTeX2HTML translator Version 2K.1beta (1.47)
Copyright © 1993, 1994, 1995, 1996,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999,
Ross Moore,
Mathematics Department, Macquarie University, Sydney.
The command line arguments were:
latex2html -split 0 conexpalm_22122000.tex
The translation was initiated by on 2001-03-06