0.1 Escaneado de puertos en Linux
Los puertos se utilizan en redes de computadoras para que dos o m’as procesos
puedan comunicarse. En el TCP/IP los puertos se enumeran utilizando un n’umero
entero positivo de 16 bits (0 - 65535). Por convenio, los puertos inferiores al 1024 se
utilizan para ofrecer servicios conocidos como la Web, Telnet, SSH, etc.
[2].
El t’ermino “escaneo de puertos” se refiera a la t’ecnica de ir (normalmente
secuencialmente) contactando (usando peticiones de conexi’on TCP o mediante
datagramas UDP) con los diferentes puertos de una m’aquina y ver si hay alg’un tipo
de respuesta [4]. Dependiendo de dichas respuestas puede conocerse qu’e servicios
ofrece dicho host, sistema operativo, modelo del host, etc.
0.1.1 Cuidado cuando escaneamos una m’aquina ...
Muchos cortafuegos detectan autom’aticamente los procesos de escaneo porque son la
primera herramienta que utilizan los hackers de redes para acceder ilegalmente a los
sistemas. Por tanto, es muy posible que si escanemos un host podamos enfadar a
alg’un administrador que contactar’a con el nuestro para qujarse. Si nuestra acci’on
no es maliciosa lo m’as prudente es contactar primero con dicho administrador para
pedirle permiso.
0.1.2 netstat
/bin/netstat imprime informaci’on sobre el sistema de red en el host donde se
ejecuta. Esto ’ultimo implica que tenemos que tener cuenta en la m’aquina que
escaneamos si deseamos usar esta utilidad.
Con netstat, dependiendo de los argumentos usados podemos:
-
Conexiones:
- Esta es la forma de uso m’as corriente de netstat. Ejemplos:
# Mostrando las conexiones TCP establecidas
usuario$ ssh usuario@gogh.ace.ual.es
usuario$ netstat | grep ESTABLISHED
tcp 0 0 192.168.213.133:3841 gogh.ace.ual.es:ssh ESTABLISHED
# Mostrando los servicios escuchando a trav’es de puertos TCP
usuario$ netstat --listening | grep tcp
tcp 0 0 *:sunrpc *:* LISTEN
tcp 0 0 *:1488 *:* LISTEN
tcp 0 0 *:auth *:* LISTEN
tcp 0 0 localhost:ipp *:* LISTEN
tcp 0 0 *:nessus *:* LISTEN
tcp 0 0 localhost:smtp *:* LISTEN
tcp6 0 0 *:www *:* LISTEN
tcp6 0 0 *:ssh *:* LISTEN
# Mostrando los servicios escuchando a trav’es de puertos UDP
usuario$ netstat --listening | grep udp
udp 0 0 *:1024 *:*
udp 0 0 *:1026 *:*
udp 0 0 *:826 *:*
udp 0 0 *:bootpc *:*
udp 0 0 *:mdns *:*
udp 0 0 *:sunrpc *:*
udp 0 0 *:ipp *:*
udp6 0 0 *:1025 *:*
Muestre las conexiones TCP establecidas en su host. Se pueden
conocer las conexiones UDP establecidas?
-
La tabla de routing:
- Ejemplo:
# Mostrando la tabla de routing
usuario$ netstat --route
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.213.0 * 255.255.255.0 U 0 0 0 eth0
default 192.168.213.2 0.0.0.0 UG 0 0 0 eth0
Muestre la tabla de routing usando netstat y route.
-
Informaci’on sobre los interfaces:
- Ejemplo:
# Mostrando la informaci’on sobre los interfaces de red
usuario$ netstat --interface
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 191678 0 0 0 87617 0 0 0 BMRU
lo 16436 0 44677 0 0 0 44677 0 0 0 LRU
Con el anterior comando tenemos una buena idea de la calidad
de las transmisiones en la red local. Qu’e campos mirar’ia para
conocer si hay alg’un problema f’isico (como ruido en la red)?
-
Estad’isticas sobre los protocolos:
- Ejemplo:
# Mostrando las estad’isticas de la red por protocolo
usuario$ netstat --statistics
Ip:
236706 total packets received
13 with invalid addresses
0 forwarded
0 incoming packets discarded
236693 incoming packets delivered
132642 requests sent out
3 outgoing packets dropped
Icmp:
140 ICMP messages received
1 input ICMP message failed.
ICMP input histogram:
destination unreachable: 125
echo requests: 3
echo replies: 12
61 ICMP messages sent
0 ICMP messages failed
ICMP output histogram:
destination unreachable: 58
echo replies: 3
Tcp:
37328 active connections openings
182 passive connection openings
30011 failed connection attempts
50 connection resets received
4 connections established
236131 segments received
131732 segments send out
371 segments retransmited
0 bad segments received.
15052 resets sent
Udp:
328 packets received
58 packets to unknown port received.
0 packet receive errors
455 packets sent
TcpExt:
207 TCP sockets finished time wait in fast timer
128 time wait sockets recycled by time stamp
268 delayed acks sent
5 delayed acks further delayed because of locked socket
Quick ack mode was activated 18 times
5665 packets directly queued to recvmsg prequeue.
33578 of bytes directly received from prequeue
168068 packet headers predicted
41 packets header predicted and directly queued to user
906 acknowledgments not containing data received
7266 predicted acknowledgments
6 congestion windows recovered after partial ack
0 TCP data loss events
334 other TCP timeouts
4 times receiver scheduled too late for direct processing
22 connections reset due to unexpected data
18 connections reset due to early user close
2 connections aborted due to timeout
Pruebe el anterior comando. C’omo incrementar’ia el n’umero
de paquetes ICMP recibidos?
-
Conexiones de tipo “mascarada”:
- Las conexiones de tipo “masquerade” son las
que se establecen cuando usamos la funcionalidad ip_masquerade del kernel
con el objetivo de dise nar una NAT box con nuestro Linux. Ejemplo (cuando
no se ha habilitado el ip_masquerade):
# Mostrando las conexiones masquerade. Para que este comando
# muestre informaci’on relevante el kernel ha debido ser configurado
# con la funcionalidad ip_masquerade.
usuario$ netstat --masquerade
netstat: no support for ‘ip_masquerade’ on this system.
-
Pertenencias multicast:
- Ejemplo:
# Mostrando los grupos multicast a los que estamos suscritos
usuario$ netstat --groups
IPv6/IPv4 Group Memberships
Interface RefCnt Group
--------------- ------ ---------------------
lo 1 ALL-SYSTEMS.MCAST.NET
eth0 1 224.0.0.251
eth0 1 ALL-SYSTEMS.MCAST.NET
lo 1 ip6-allnodes
eth0 1 ff02::1:ff14:bcf6
eth0 1 ip6-allnodes
Encuentre los grupos multicast a los que actualmente est’a
apuntada su computadora.
0.1.3 Nmap
Nmap (Network MAPper) es una utilidad Open Source (y por tanto, no hay que
pagar por usarla) para la exploraci’on de redes y la auditor’ia de seguridad
[3]. Actualmente se puede ejecutar (al menos) bajo los siguientes sistemas
operativos: Linux (http://www.linux.org/http://www.linux.org/), Microsoft
Windows (http://www.microsoft.com/spain/windows/default.mspx),
FreeBSD (http://www.freebsd.org/), OpenBSD (http://www.openbsd.org/),
Solaris (http://www.sun.com/software/solaris/), IRIX
(http://www.sgi.com/products/software/irix/), Mac OS X
(http://www.apple.com/es/macosx/), HP-UX (http://www.hp.com/products1/unix/operating),
NetBSD (http://www.netbsd.org/), Sun OS (http://en.wikipedia.org/wiki/SunOS)
y AmigaOS (http://www.amiga.com/amigaos/).
Instalaci’on
-
Debian Linux:
-
root# apt-get install nmap
-
Fedora Core Linux:
-
root# yum install nmap nmap-frontend
-
Gentoo Linux:
-
root# emerge nmap
Utilizaci’on b’asica
Nmap puede utilizarse desde la l’inea de comandos (nmap) o desde una GUI (xnmap).
Aqu’i interactuaremos s’olo con la versi’on de consola y explicaremos algunos
ejemplos muy b’asicos. Nmap es increiblemente rico en opciones y posibilidades que
deben consultarse en el manual online (http://insecure.org/nmap/man/).
Sondeo de puertos TCP
El sondeo de puertos consiste en ver si pueden establecerse conexiones TCP con
los diferentes puertos, y sirve para conocer los servicios activos que se basan en este
protocolo. Este escaneo puede realizarse realizando conexiones est’andar o un tipo de
conexiones que en Nmap llama “SYN sigiloso” que no llega a establecer realmente las
conexiones y por lo tanto no le aparecen al usuario de la m’aquina escaneada cuando
“hace” un netstat.
El primer tipo (conexi’on est’andar) puede realizarse como usuario normal y es el
tipo de sondeo por defecto. El segundo (que utiliza el flag -sS) s’olo puede realizarlo
el usuario root. Ejemplos:
usuario$ nmap localhost
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2006-12-28 10:44 CET
Interesting ports on localhost (127.0.0.1):
Not shown: 1675 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
53/tcp open domain
953/tcp open rndc
Nmap finished: 1 IP address (1 host up) scanned in 0.152 seconds
# M’as info!!!
usuario$ nmap -v localhost
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2006-12-28 10:44 CET
Initiating Connect() Scan against localhost (127.0.0.1) [1680 ports] at 10:44
Discovered open port 21/tcp on 127.0.0.1
Discovered open port 25/tcp on 127.0.0.1
Discovered open port 53/tcp on 127.0.0.1
Discovered open port 22/tcp on 127.0.0.1
Discovered open port 953/tcp on 127.0.0.1
The Connect() Scan took 0.04s to scan 1680 total ports.
Host localhost (127.0.0.1) appears to be up ... good.
Interesting ports on localhost (127.0.0.1):
Not shown: 1675 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
53/tcp open domain
953/tcp open rndc
Nmap finished: 1 IP address (1 host up) scanned in 0.154 seconds
# Ahora s’olo algunos puertos
usuario$ nmap -v -p 22,53 localhost
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2006-12-29 08:40 CET
Initiating Connect() Scan against localhost (127.0.0.1) [2 ports] at 08:40
Discovered open port 22/tcp on 127.0.0.1
Discovered open port 53/tcp on 127.0.0.1
The Connect() Scan took 0.00s to scan 2 total ports.
Host localhost (127.0.0.1) appears to be up ... good.
Interesting ports on localhost (127.0.0.1):
PORT STATE SERVICE
22/tcp open ssh
53/tcp open domain
Nmap finished: 1 IP address (1 host up) scanned in 0.110 seconds
# Ahora un rango de m’aquinas, s’olo puerto 80
usuario$ nmap -v -p 80 193.147.118.128-255
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2006-12-29 08:45 CET
Machine 193.147.118.154 MIGHT actually be listening on probe port 80
Machine 193.147.118.131 MIGHT actually be listening on probe port 80
Machine 193.147.118.176 MIGHT actually be listening on probe port 80
Machine 193.147.118.170 MIGHT actually be listening on probe port 80
Machine 193.147.118.174 MIGHT actually be listening on probe port 80
Machine 193.147.118.192 MIGHT actually be listening on probe port 80
Machine 193.147.118.195 MIGHT actually be listening on probe port 80
Machine 193.147.118.196 MIGHT actually be listening on probe port 80
Machine 193.147.118.199 MIGHT actually be listening on probe port 80
Machine 193.147.118.220 MIGHT actually be listening on probe port 80
Machine 193.147.118.218 MIGHT actually be listening on probe port 80
Machine 193.147.118.217 MIGHT actually be listening on probe port 80
DNS resolution of 18 IPs took 0.00s.
Initiating Connect() Scan against 18 hosts [1 port/host] at 08:45
Discovered open port 80/tcp on 193.147.118.170
Discovered open port 80/tcp on 193.147.118.174
Discovered open port 80/tcp on 193.147.118.176
Discovered open port 80/tcp on 193.147.118.199
Discovered open port 80/tcp on 193.147.118.154
Discovered open port 80/tcp on 193.147.118.196
Discovered open port 80/tcp on 193.147.118.217
Discovered open port 80/tcp on 193.147.118.220
Discovered open port 80/tcp on 193.147.118.192
Discovered open port 80/tcp on 193.147.118.218
Discovered open port 80/tcp on 193.147.118.195
Discovered open port 80/tcp on 193.147.118.131
The Connect() Scan took 0.00s to scan 18 total ports.
Host 193.147.118.131 appears to be up ... good.
Interesting ports on 193.147.118.131:
PORT STATE SERVICE
80/tcp open http
Host 193.147.118.145 appears to be up ... good.
Interesting ports on 193.147.118.145:
PORT STATE SERVICE
80/tcp closed http
Host tornasol.ual.es (193.147.118.154) appears to be up ... good.
Interesting ports on tornasol.ual.es (193.147.118.154):
PORT STATE SERVICE
80/tcp open http
Host 193.147.118.170 appears to be up ... good.
Interesting ports on 193.147.118.170:
PORT STATE SERVICE
80/tcp open http
Host invernadero.ual.es (193.147.118.174) appears to be up ... good.
Interesting ports on invernadero.ual.es (193.147.118.174):
PORT STATE SERVICE
80/tcp open http
Host sauce.ual.es (193.147.118.176) appears to be up ... good.
Interesting ports on sauce.ual.es (193.147.118.176):
PORT STATE SERVICE
80/tcp open http
Host 193.147.118.192 appears to be up ... good.
Interesting ports on 193.147.118.192:
PORT STATE SERVICE
80/tcp open http
Host www.dgpaa.ual.es (193.147.118.195) appears to be up ... good.
Interesting ports on www.dgpaa.ual.es (193.147.118.195):
PORT STATE SERVICE
80/tcp open http
Host indalo.ual.es (193.147.118.196) appears to be up ... good.
Interesting ports on indalo.ual.es (193.147.118.196):
PORT STATE SERVICE
80/tcp open http
Host acacia.ual.es (193.147.118.199) appears to be up ... good.
Interesting ports on acacia.ual.es (193.147.118.199):
PORT STATE SERVICE
80/tcp open http
Host 193.147.118.201 appears to be up ... good.
Interesting ports on 193.147.118.201:
PORT STATE SERVICE
80/tcp closed http
Host 193.147.118.206 appears to be up ... good.
Interesting ports on 193.147.118.206:
PORT STATE SERVICE
80/tcp closed http
Host aer.ual.es (193.147.118.217) appears to be up ... good.
Interesting ports on aer.ual.es (193.147.118.217):
PORT STATE SERVICE
80/tcp open http
Host lsi.ual.es (193.147.118.218) appears to be up ... good.
Interesting ports on lsi.ual.es (193.147.118.218):
PORT STATE SERVICE
80/tcp open http
Host 193.147.118.220 appears to be up ... good.
Interesting ports on 193.147.118.220:
PORT STATE SERVICE
80/tcp open http
Host libras.ual.es (193.147.118.234) appears to be up ... good.
Interesting ports on libras.ual.es (193.147.118.234):
PORT STATE SERVICE
80/tcp closed http
Host desaveal.ual.es (193.147.118.238) appears to be up ... good.
Interesting ports on desaveal.ual.es (193.147.118.238):
PORT STATE SERVICE
80/tcp closed http
Host cabezon.ual.es (193.147.118.244) appears to be up ... good.
Interesting ports on cabezon.ual.es (193.147.118.244):
PORT STATE SERVICE
80/tcp closed http
Nmap finished: 128 IP addresses (18 hosts up) scanned in 1.317 seconds
Sonde del SO S’olo como root. Nmap env’ia una colecci’on de paquetes
espec’ifico al sistema remoto para tratar de adivinar el sistema operativo que ejecuta.
Ejemplo:
root# nmap -O localhost
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2006-12-28 10:48 CET
Interesting ports on localhost (127.0.0.1):
Not shown: 1675 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
53/tcp open domain
953/tcp open rndc
Device type: general purpose
Running: Linux 2.4.X|2.5.X|2.6.X
OS details: Linux 2.4.0 - 2.5.20, Linux 2.5.25 - 2.6.8 or Gentoo 1.2\
Linux 2.4.19 rc1-rc7, Linux 2.6.3 - 2.6.10
Nmap finished: 1 IP address (1 host up) scanned in 2.049 seconds
Pruebe los anteriores comandos. Sea imaginativo y no enfade a nadie
:-)
Sondeo de puertos UDP Hay determinados servicios que s’olo se ofrecen a
trav’es de UDP. Para descubirlos se utiliza este tipo de escaneo. Un ejemplo (s’olo
root):
usuario$ nmap -sU localhost
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2006-12-29 08:56 CET
Interesting ports on localhost (127.0.0.1):
Not shown: 1486 closed ports
PORT STATE SERVICE
53/udp open|filtered domain
Nmap finished: 1 IP address (1 host up) scanned in 1.288 seconds
Descubriendo los hosts encendidos en un rango de IPs Ahora damos otro
ejemplo donde escaneamos un rango de direcciones IP utilizando el mensaje Echo
Request del protocolo ICMP. Ejemplo:
usuario$ nmap -sP 193.147.118.*
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2006-12-29 08:59 CET
Host 193.147.118.1 appears to be up.
Host 193.147.118.2 appears to be up.
Host 193.147.118.3 appears to be up.
Host 193.147.118.5 appears to be up.
Host 193.147.118.21 appears to be up.
Host 193.147.118.24 appears to be up.
Host 193.147.118.25 appears to be up.
Host 193.147.118.26 appears to be up.
Host 193.147.118.27 appears to be up.
Host 193.147.118.28 appears to be up.
Host 193.147.118.29 appears to be up.
Host 193.147.118.30 appears to be up.
Host 193.147.118.38 appears to be up.
Host indalog.ual.es (193.147.118.39) appears to be up.
Host 193.147.118.40 appears to be up.
Host 193.147.118.43 appears to be up.
Host 193.147.118.45 appears to be up.
Host europa.ace.ual.es (193.147.118.46) appears to be up.
Host 193.147.118.47 appears to be up.
Host 193.147.118.48 appears to be up.
Host 193.147.118.49 appears to be up.
Host vermeer.ace.ual.es (193.147.118.50) appears to be up.
Host iron.ace.ual.es (193.147.118.54) appears to be up.
Host dali.ace.ual.es (193.147.118.56) appears to be up.
Host gogh.ace.ual.es (193.147.118.57) appears to be up.
Host renoir.ace.ual.es (193.147.118.61) appears to be up.
Host caesarg.ace.ual.es (193.147.118.67) appears to be up.
Host 193.147.118.73 appears to be up.
Host davinci.ace.ual.es (193.147.118.77) appears to be up.
Host 193.147.118.80 appears to be up.
Host 193.147.118.81 appears to be up.
Host io.ace.ual.s (193.147.118.89) appears to be up.
Host 193.147.118.92 appears to be up.
Host 193.147.118.131 appears to be up.
Host 193.147.118.145 appears to be up.
Host tornasol.ual.es (193.147.118.154) appears to be up.
Host 193.147.118.170 appears to be up.
Host invernadero.ual.es (193.147.118.174) appears to be up.
Host sauce.ual.es (193.147.118.176) appears to be up.
Host 193.147.118.192 appears to be up.
Host www.dgpaa.ual.es (193.147.118.195) appears to be up.
Host indalo.ual.es (193.147.118.196) appears to be up.
Host acacia.ual.es (193.147.118.199) appears to be up.
Host 193.147.118.201 appears to be up.
Host 193.147.118.206 appears to be up.
Host aer.ual.es (193.147.118.217) appears to be up.
Host lsi.ual.es (193.147.118.218) appears to be up.
Host 193.147.118.220 appears to be up.
Host libras.ual.es (193.147.118.234) appears to be up.
Host desaveal.ual.es (193.147.118.238) appears to be up.
Host cabezon.ual.es (193.147.118.244) appears to be up.
Nmap finished: 256 IP addresses (51 hosts up) scanned in 1.892 seconds
Encuentre los hosts encendidos en su red privada.
0.1.4 Nessus
Nessus [1] es una herramienta para en an’alisis de la vulnerabilidad en redes. Ejecuta
una colecci’on de “ataques” contra un host con el origen de conocer los posibles
agujeros de seguridad en un host que est’a encendido y conectado a Internet. Si
Nmap es la herramienta por excelencia para conocer qu’e servicios pueden ser
“atacados”, Nessus es la utilidad que permite conocer qu’e agujeros de seguridad
pueden tener dichos servicios.
Nessus es un programa compuesto por un cliente y un servidor y (como es de
esperar) ambos programas pueden ejecutarse en hosts diferentes. El servidor realiza
todo el trabajo de escaneo que especifica el cliente. Un servidor puede ser usado por
varios clientes y generalmente los clientes adem’as tienen la posibilidad de utilizar
varios servidores en diferentes sesiones.
Instalaci’on (cliente y servidor)
-
Debian Linux:
-
Descargar los ficheros Nessus-<ultima_version>.deb y
NessusClient-<ultima_version>.deb de http://www.nessus.org/download/.
root# dpkg -i Nessus-<ultima_version>.deb
root# dpkg -i NessusClient-<ultima_version>.deb
-
Fedora Core Linux:
-
Descargar el fichero Nessus-<ultima_version>.rpm y
NessusClient-<ultima_version>.rpm de http://www.nessus.org/download/.
root# rpm -Uvh Nessus-<ultima_version>.rpm
root# rpm -Uvh NessusClient-<ultima_version>.rpm
Configuraci’on del servidor
-
Crear un usuario en el servidor de Nesus:
-
root# /opt/nessus/sbin/nessus-add-first-user
Se nos pregutar’an tres cosas: (1) un nombre de usuario, (2) la forma de
autentificaci’on (elegir “pass”-word) y (3) un password.
-
Crear un certificado de usuario:
- Sirve para aseguranos que nos conectamos con
el servidor que estamos instalando cuando accedamos a ’el desde un cliente
Nessus.
root# /opt/nessus/sbin/nessus-mkcert
-
Registrarnos como usuario de Nessus:
- Cuando nos hemos descargado el
paquete Nessus se nos ha enviado a la direcci’on de correo especificada un
c’odigo de activaci’on. Activar la descarga de los plugins utilizando:
root# /opt/nessus/sbin/nessus-fetch --register <el_c’odigo_de_activaci’on>
-
Actualizar los plugins:
- Para utilizar los ’ultimos ataques que existen es
recomendable mantener actualizada la lista de plugins que Nessus va a
utilizar:
root# /opt/nessus/sbin/nessus-update-plugins
Este paso deber’ia realizarse peri’odicamente (una vez a la semana m’as o
menos) para disponer de los ’ultimos plugins. Un detalle importante.
Nessus puede ser utilizado bajo una licencia comercial (pagando) y bajo
una licencia libre. La ventaja de utilizar la versi’on comercial es que
tendremos acceso a los plugins una semana antes que para la versi’on
libre.
-
Ejecutar el servidor:
-
root# /etc/init.d/nessus start
Configure el servidor Nessus.
Uso del cliente
El cliente Nessus tiene un interfaz de texto (nessus-text) y otro gr’afico
(nessus), mucho m’as f’acil de utilizar. Para ejecutarlo:
usuario$ /usr/X11R6/bin/NessusClient
El cliente puede ser ejecutado en cualquier host, diferente o no del que ejecuta el
servidor. Los pasos b’asicos que deberemos realizar son:
- Acceder al servidor (usaremos el login y password anteriormente creados).
- Seleccionar los plugins que deseamos ejecutar.
- Seleccionar el host “Target” que vamos a escanear.
- Pinchar en el bot’on de iniciar el escaneo.
Tras el escaneo obtendremos una lista de servicios disponibles en el host
escaneado y comentarios acerca de la vulnerabilidad de dichos servicios.
Pruebe alguno de los “exploits” que posee Nessus para comprobar
la seguridad de alguno de los servicios que ofrece su computadora.
Bibliography