Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Problemática de la seguridad
y conceptos básicos
Leobardo Hernández Audelo
Enrique Daltabuit Godás
Introducción
La Segunda Guerra Mundial fue un parteaguas histórico, en más de un sentido,
para la seguridad informática. Las técnicas de ocultamiento no sólo se aplicaron
al ámbito estrictamente militar sino también a las relaciones diplomáticas con los
gobiernos, a la información sobre secretos comerciales e industriales, a la infor
mación científica y técnica y, sobre todo, a mantener la información almacenada
en las grandes computadoras que surgieron en esa época, oculta de accesos no
autorizados, entre otras aplicaciones.
La protección que la información guardada en las computadoras requería
en ese entonces pudiera parecer sencilla a la luz de la época actual, ya que los
equipos eran centralizados y las computadoras eran de propósito específico.
Pero el hecho de que esas computadoras empezaran a ser multiusuario y multi-
tarea, inició el camino sin retorno de las preocupaciones de seguridad informá
tica y computacional actuales.
Después de la Segunda Guerra, cuando las computadoras se hicieron de
propósito general y multiusuario, el panorama de la seguridad de la información
empezó a cambiar de manera compleja. Ya las computadoras no procesaban
información solamente militar, de estado, o científica. Se trataba ahora de prote
75
76 P r o b lem á t ic a d e la seg u r id a d y c o n c e p t o s bá sico s
ger información tan diversa, dependiendo de las aplicaciones, que bien podían
ser de tipo bancaria, nóminas, comercio de diferente naturaleza, etc.
La situación se tornó aún más compleja al surgir las microcomputadoras y
con ello la necesidad de proteger información particular en distintos y numero
sos ámbitos y lugares.
Con el surgimiento de las redes de computadoras, la situación se volvió
patológica, ya que ahora había que proteger la información también durante su
viaje por canales públicos y abiertos.
Actualmente el problema no termina aquí. Hoy, muchas de las actividades
de la sociedad se realizan a través de redes de todo tipo. Estas actividades van
desde comunicaciones y transferencia, proceso y acceso de información, hasta
servicios bancarios, dinero y comercio electrónicos, entre otros. Igualmente se
tienen tecnologías de código distribuible, que obligan a proteger no sólo la in
formación sino también los recursos físicos y lógicos de las computadoras y
redes contra usos ilícitos. De la misma forma se debe proteger la información y
los recursos de cómputo contra programas malignos como son los virus, gusa
nos y otras calamidades lógicas que proliferan en las redes.
1957. Olsen y Anderson, quienes habían participado en este trabajo sobre SAGE,
crean una empresa para fabricar y vender computadoras interactivas. Apa
rece Digital Equipment Corporation, y su primer producto es la PDP-1 que
se empieza a vender en I960. Su arquitectura era abierta o sea que todos
los detalles de su funcionamiento eran conocidos por todos. Luego DEC se
lanza a diseñar y fabricar la primera computadora “de mesa” que fue la
pdp -8, que cabía en un Volskwagen.
1973. Bob Metcalfe inventa Ethernet, diseño de una red que permite a las com
putadoras heterogéneas comunicarse en una red local.
1975. Aparece la primera terminal con tubo de rayos catódicos, la VT521 de Di
gital Equipment.
EVOLUCIÓN TEMPRANA DEL CÓMPUTO 79
Computadoras multiusuario
Al aparecer la ENIAC y computadoras subsecuentes, éstas ejecutan un programa
a la vez. Si varios usuarios requieren del uso de los recursos, se inicia y termina
con el primer trabajo presentado, y después se procesa el siguiente, y así suce
sivamente. La entrada de programas y datos a las computadoras se realiza me
diante tarjetas perforadas, y la salida es mediante listados impresos.
Esto implica que el procesador está ocioso mientras se leen las tarjetas y se
imprimen los listados. Se empezaron a usar computadoras pequeñas para efec
tuar estas operaciones de entrada y salida, que colocaban los programas y datos
en dispositivos de almacenamiento más rápidos (cintas). Se colocaban varios
trabajos en esos dispositivos. Además, muchos programas no se escriben con la
eficiencia óptima, y entre los pasos de ejecución el procesador, y otros recursos,
está ocioso.
Esto lleva a la operación en forma de “tiempo compartido”, multiáreas o
multiprocesos, lo cual consiste en asignar recursos en forma alternada a varios
programas, usando diversas técnicas para evitar el ocio de los recursos. Además,
los usuarios adquieren la percepción de que se les está atendiendo más eficien
temente. Esto ocurrió en los Laboratorios Bell mediante una colaboración de MIT
y General Electric, quienes originaron un sistema operativo llamado MULTICS,
que nunca se llegó a comercializar y que es el antecesor directo de Unix.
Esto da origen a los grandes problemas de seguridad informática. Si se
comparten recursos (procesador, memoria, impresora, etc.), un programa mali
cioso puede enterarse de los datos y operaciones que está realizando un pro
grama que se esté ejecutando “simultáneamente”.
P rim era r ev o l u c ió n : La c o m p u t a d o r a perso n a l 81
crosoft. En este ambiente residen aplicaciones de todo tipo, entre las que se
puede encontrar desde las computadoras que utilizan las aerolíneas para regis
trar a los pasajeros, hasta los sistemas de administración de acciones, valores,
líneas de ensamble controladas mediante PC y sistemas de información médica,
entre otras aplicaciones.
Problemas de seguridad de la PC
1. Ninguno de los sistemas de escritorio, como la PC, fue diseñado con la segu
ridad en mente.
2. No todos los usuarios de las PC son expertos en cómputo, por lo que el mal
uso de sus equipos frecuentemente compromete la seguridad de la informa
ción o servicios que residen en éstos.
3. La amplia disponibilidad de los sistemas personales de cómputo pone la
capacidad de amenaza en las manos de más personas, incrementando el
riesgo para las organizaciones.
Los programas
La facilidad con la que se pueden instalar nuevos programas o compartir infor
mación en la PC, trajo consigo problemas relacionados con códigos maliciosos.
Este aspecto constituye una de las mayores y más frecuentes amenazas a la in
84 P r o b lem á t ic a d e la se g u r id a d y c o n c e p t o s b á sic o s
Respaldos
Al extenderse la infraestructura de cómputo a los sistemas de escritorio, surgieron
problemas relacionados con la pérdida y recuperación de información en caso de
algún desastre o eventualidad. La complejidad ahora reside en que este equipo se
encuentra ampliamente difundido y mucha gente está involucrada. A pesar de
que los usuarios de los sistemas son exhortados a proteger sus datos mediante
la ejecución de respaldos periódicos, generalmente no se cuenta con respaldos, y
cuando ocurre un problema se llega a perder casi la totalidad de la información.
Otros factores propios del ambiente de Web que contribuyen a incrementar las
vulnerabilidades de seguridad en Internet son:
Además de los problemas relativos a tcp/ip , existen otros factores que contribu
yen a los problemas de seguridad en Internet, entre los que se encuentran los
siguientes:
a) Facilidad de acceso a recursos. Hoy, más que nunca, los sistemas de cóm
puto se han hecho más sensibles a accesos no autorizados. Dada la combina
ción adecuada de motivación, experiencia, recursos, tiempo e ingeniería social,
un intruso puede ser capaz de acceder a cualquier computadora que se encuen
tre en Internet. Esto, aunado al hecho de que se puede tener acceso desde la
casa, escuela, bibliotecas, etc., conforman una infinidad de puntos desde los
cuales se puede perpetuar un ataque.
En el ambiente abierto de Internet, los estudiantes curiosos, adolescentes
vándalos, criminales, espías, o personas curiosas pueden ser los riesgos. Sobre
todo conforme ha ido avanzando el uso de redes públicas para comercio elec
trónico y funciones críticas de negocios.
90 P ro b lem á t ic a d e la se g u r id a d y c o n c e p t o s b á sic o s
siones del mercado y los problemas de las deficiencias en las habilidades de los
programadores. La mayoría de los programas y/o sistemas de software se basan
en código que nunca se pensó que tuviera la calidad de “producción”. Eran sola
mente implementaciones para prueba que se convirtieron en programas base.
La seguridad en Internet ha cobrado particular importancia a partir del
hecho de que muchas organizaciones gastan una considerable cantidad de di
nero para poner su imagen corporativa y sus servicios en Internet. Esto pone en
juego la imagen y reputación de la misma, ya que los hace objeto de vandalismo
y ataques. Los atacantes aprovechan las debilidades en los sistemas operativos
base de los senadores Web y entran en el servidor con facilidad, modificando
información o añadiendo material pornográfico, por ejemplo.
En el caso anterior, el efecto más negativo es con relación a la imagen de
la organización. Sin embargo, los ataques en Internet también tienen fuertes
consecuencias desde el punto de vista económico.
En el caso de México, resulta ser uno de los países favoritos para los ata
cantes, tanto por motivos políticos, como por la facilidad con la que los ataques
pueden ser perpetrados.
Flujo normal
Interrupción
Intercepción
0
Modificación
Cuando una parte no autorizada logra acceso al activo del sistema y puede
manipular ese activo, se trata de una amenaza por m odificación. Por ejemplo,
el intruso puede cambiar datos en una base de datos, alterar un programa para
que realice alguna computación adicional o distinta a la que realiza, modificar
datos en una comunicación, entre otras acciones.
Por último, una parte no autorizada puede fa b r ic a r objetos falsos en un
sistema. Ejemplo de ello es la inserción de transacciones espurias en un sistema
de comunicación en red, o agregar registros a una base de datos ya existente.
En la figura siguiente se muestra cómo pueden afectar estas amenazas a los
activos o recursos de un sistema de cómputo.
Intercepción
(robo)
Interrupción
negación de Hardware
servicio
Interrupción Interrupción
(borrado) (pérdida)
Intercepción
Intercepción
Fabricación
Bombas lógicas
Caballo de Troya
Modificación Virus
Trampa
Filtro de información
96 P ro b lem á t ic a d e la se g u r id a d y c o n c e p t o s b á sic o s
Servicios de seguridad
El objetivo de la seguridad informática es, pues, lograr adquirir, almacenar, pro
cesar y transmitir información en un entorno de este tipo, preservando lo más
que se pueda los servicios de: con fiden cialidad (que la información sólo la
conozcan quienes tienen derecho a ello), integridad (que la información no sea
98 P ro b lem á t ic a d e la se g u r id a d y c o n c e p t o s bá sic o s
Específicos:
• Cifrado.
• Firma digital.
• Control de acceso.
• Integridad.
• Autenticación.
• Trafico espurio (protección contra análisis de tráfico).
• Control de encaminamiento.
• Notarización.
A r q u it e c t u r a d e se g u r id a d OSI 101
Confidencialidad
Este servicio de seguridad consiste en garantizar que la información sólo pueda
ser accedida por las partes autorizadas para ello, por nadie más. En algunos
contextos este servicio se conoce también como privacía.
Este servicio y su implementación constituyen uno de los principales obje
tivos de la seguridad informática, resultado de las técnicas más ancestrales de
ocultamiento de información.
Actualmente, una de las técnicas más importantes para implementar este
servicio es la criptografía; los algoritmos correspondientes se revisarán con de
talle en los capítulos correspondientes a Criptografía y Aplicaciones cripto
gráficas.
El estándar ISO 7498-2 identifica los siguientes tipos de servicios de confi
dencialidad:
Autenticación
Este servicio consiste en garantizar que las partes o entidades participantes en
una comunicación sean las que dicen ser. Es decir, consiste básicamente en el
proceso de identificación de una parte ante las demás, de una manera no con
troversial y demostrable.
102 P r o b lem á t ic a d e la seg u r id a d y c o n c e p t o s bá sic o s
Verificación de integridad
Este servicio protege a los activos del sistema contra modificaciones, alteracio
nes, borrado, inserción y, en general, contra todo tipo de acción que atente
contra la integridad de los activos. Se debe aclarar que, estrictamente hablando,
la integridad como tal no se puede garantizar. Lo que sí se puede garantizar es
que si la información sufre alteración, ésta pueda ser detectada.
La arquitectura ISO 7498-2 identifica los siguientes servicios de integridad:
Control de acceso
Este servicio protege a los activos del sistema contra accesos y uso no autoriza
dos. Este es de los servicios que normalmente no utilizan técnicas criptográficas
para su implementación; en cambio, existe un gran número de técnicas propias
y tipos de control de acceso, así como también modelos específicos para su
implementación, tales como los de Bell y LaPadula, Clark y Wilson, entre otros.
104 P r o b lem á t ic a d e la seg u r id a d y c o n c e p t o s b á sic o s
Todo este conjunto de técnicas, tipos y modelos de control de acceso serán es
tudiados con detalle en el capítulo correspondiente a Control de acceso.
Este servicio está cercanamente relacionado al de autenticación, ya que un
usuario debe ser autenticado antes de tener acceso a los activos del sistema. Por
esta razón, su estudio detallado se integra con el de autenticación, en algunas
de sus partes.
No repudio
El no repudio proporciona protección contra la posibilidad de que alguna de las
partes involucradas en una comunicación niegue haber enviado o recibido un
mensaje u originado o haber sido el destinatario de una acción. Los servicios de
no repudio identificados por ISO son:
Capa
o- Presentación
^ Transporte
~»t Aplicación
Servicio de seguridad c
Enlace
*-* Física
TJ u"So
0)
pí i/ j
3 5
Autenticación de
Sí Sí Sí
identidad
Autenticación de
Sí Sí Sí
origen
Control de acceso Sí Sí Sí
Confidencialidad con
Sí Sí Sí Sí Sí
conexión
Confidencialidad sin
Sí Sí Sí Sí
conexión
Confidencialidad
Sí
selectiva de campo
Confidencialidad de
Sí Sí Sí
flujo de tráfico
Integridad con
conexión y con Sí Sí
recuperación
Integridad con
conexión y sin Sí Sí Sí
recuperación
Integridad con
conexión selectiva de Sí
campo
Integridad sin
Sí Sí Sí
conexión
Integridad sin
conexión selectiva de Sí
campo
No repudio con
Sí
prueba de origen
No repudio con
Sí
prueba de entrega
106 P ro b lem á t ic a d e la seg u r id a d y c o n c e p t o s bá sic o s
Mecanismos
Control de acceso
Control de ruteo
Traffic padding
Servicio de seguridad
Autenticación
Firma digital
Notarización
Integridad
Cifrado
Autenticación de
Sí Sí Sí
identidad
Autenticación de origen
Sí Sí
de datos
Control de acceso Sí
Confidencialidad con
Sí Sí
conexión y sin conexión
Confidencialidad
Sí
selectiva de campo
Confidencialidad de flujo
Sí Sí Sí
de tráfico
No repudio: origen y
Sí Sí Sí
entrega
Capítulo 8
Código malicioso
Guillermo Mallén Fullerton
Introducción
Como cualquier otra herramienta, la computación no es en sí ni buena ni mala,
es el uso que los hombres le damos lo que le confiere bondad o maldad.
Desde el punto de vista histórico, el uso de la computadora como una
herramienta del mal de manera más o menos común, es relativamente reciente.
Durante los años cincuenta a setenta, el gremio de los especialistas en
computación era bastante pequeño y esto propiciaba un control interno estricto:
cualquiera que tuviera una conducta inapropiada era rápidamente denunciado
ante sus colegas y veía cerradas las puertas de la mayoría de los empleos en una
sanción social automática.
Por otro lado, el perfil de las personas que entraban a ejercer la computa
ción electrónica era poco propicio para la entrada de delincuentes. Había que
hacer un enorme esfuerzo para aprender ante la ausencia de carreras profesio
nales en esta área y, aunque los salarios eran buenos, no había dinero fácil, los
horarios de trabajo eran infames, el trabajo pesado y había que estar en alerta
permanente.
Asimismo, el ambiente de desarrollo de programas y sistemas era suma
mente rígido. El tiempo de máquina era muy escaso y había horarios específicos
para compilación y prueba de programas, y mecanismos estrictos para controlar
el uso de ese valioso recurso que era el tiempo CPU. Difícilmente un programa
455
456 CÓDIGO MALICIOSO
dor podía hacer un programa que no fuera aquel que se le había ordenado y
mucho menos podía probar en secreto programas como un virus o un caballo
de Troya que borraba archivos.
Con la rápida expansión de la computación, la entrada de nuevos especia
listas creció en forma explosiva. Por un lado, cada vez se necesitaba más perso
nal capacitado y por la otra, se pusieron de moda las carreras profesionales
asociadas a las tecnologías de información. Al iniciarse el siglo xxi existían en
México más de 500 carreras profesionales en esta área en tanto que sólo cinco
años antes eran alrededor de la mitad.
Debido a la aparición de la computadora personal en los años setenta y su
popularización con la ubicua PC en la siguiente década, muchas personas em
pezaron a tener conocimientos de computación sin tener que pasar por una
universidad. De hecho, muchos adolescentes aprenden en forma autodidacta
más que lo que se enseña en las carreras profesionales.
La conclusión de este fenómeno es un aparente anonimato, que permite
que los delincuentes entren al medio de las tecnologías de información y las
usen para sus fines sin que sea fácil detectarlos.
La proliferación de la PC no sólo trajo mucha gente con conocimientos,
sino que también evitó los ambientes rígidamente controlados de los m ainfra-
mes de las décadas anteriores. Cualquier persona en s li propia casa puede hacer
cualquier clase de programas sin que haya nadie que lo supervise o controle.
Aun en las oficinas es relativamente fácil usar la PC del escritorio para programar
cosas que nada tienen que ver con el trabajo.
Uno de los primeros delitos informáticos lúe la venganza por supuestas o
reales ofensas. Entre los primeros casos estaban una serie de “bombas de tiem
po" dejadas en sistemas clave para la operación de las empresas por empleados
que se enteraban que iban a ser removidos de sus puestos o en desquite contra
alguna llamada de atención del jefe o una promoción que no llegaba.
También se dieron algunos fraudes en los años iniciales, aunque estos en
realidad tenían que ver más con la forma en la que operaban las organizaciones
que con problemas de seguridad informática propiamente dicha. Los atacantes
normalmente obtenían una contraseña real mediante ingeniería social o por
simple descuido de los usuarios y luego la usaban para generar transacciones
I n t r o d u c c ió n 457
fraudulentas. Pocos casos hubo en los que había programas especialmente dise
ñados para hacer el fraude.
La existencia del anonimato dio paso a otro tipo completamente diferente
de delincuente. Así, encontramos que actualmente muchos de los atacantes eli
gen aleatoriamente a su víctima y no buscan venganzas particulares ni enrique
cimiento rápido. Se trata más bien de una especie de deporte ilícito cuya
recompensa es el reconocimiento dentro del inframundo, el temor de las vícti
mas potenciales y lugares preferentes en las noticias. Esto, desde luego, no eli
mina a aquellos que lo hacen por dinero o aun por razones políticas.
Otro elemento que añade complejidad a este asunto es la existencia de
Internet.
Como herramienta de comunicación existieron antes de la red de redes los
llamados BBSs (Bulletin Board Systems o Sistemas de Tableros de Avisos).
En estos servicios los usuarios de conectaban mediante módem a una má
quina, generalmente una PC, en la que había tableros de avisos sobre diferentes
temas en los que podían dejar preguntas o contestar las que otros habían colo
cado. También había áreas de archivos en las que se intercambiaban desde re
cetas de cocina hasta programas.
Muchos de los BBSS eran gratuitos y anónimos y se conocía a quienes en
traban por un apodo (han dle le llamaban en inglés), lo que daba la oportunidad
tanto de expresarse libremente, como de cometer toda clase de atropellos.
Entre los archivos más comunes en los BBSs anónimos estaban programas
piratas, programas para deshabilitar los sistemas de protección contra copia de
los programas comerciales y mucha información del funcionamiento interno del
sistema operativo de la PC, el DOS de esa época.
Los elementos para el desarrollo del hacker adolescente estaban dados y
no es extraño que hayan surgido en forma relativamente simultánea en diversas
ciudades, Justo de esa época (mediados de los ochenta) vienen los primeros
virus informáticos.
Hacia fines de los ochenta los bbss se comunicaban de una ciudad a otra
formando una red por la que fluían los mensajes y archivos. Si bien su eficiencia
era bastante mediocre, ya que un mensaje podía tardar varios días en llegar a su
destino, permitió compartir información entre personas de diferentes países.
458 CÓDIGO MALICIOSO
Un fenómeno que salta a la vista es la facilidad con la que los backers lo
graron una buena comunicación formando toda una red subterránea.
La popularización del Internet, desde fines de los ochenta con programas
como gopher, y luego su crecimiento vertiginoso en los noventa con la aparición
de la World Wide Web, facilitaron enormemente la comunicación entre hackers
e hicieron que lo que había sido un problema relativamente manejable se con
virtiera en el tremendo dolor de cabeza que hoy tenemos.
Como consecuencia de la WWW vino el comercio electrónico y junto con
él, la oportunidad del fraude masivo y las ganancias jugosas para los delincuen
tes. Sin embargo, el problema no sólo es el comercio electrónico, sino que te
nemos muchos sitios que por su visibilidad son blancos frecuentes de los
delincuentes. Para colmo, esta infraestructura hace posible realizar un ataque
literalmente desde el otro lado del mundo, de manera que los ataques se multi
plican. Los problemas de jurisdicción policial y diferencias legales de un país a
otro son una pesadilla.
También tenemos ahora un enorme número de aprendices de delincuente
informático, conocidos en Internet como ivannabees o script kiddies, que si bien
no tienen buenas habilidades técnicas, atacan usando programas hechos por
otros y generan un alud de problemas.
Del lado de la ley, lo que se ha hecho —y lo que prácticamente se puede
hacer— es verdaderamente patético. En muchos países se han hecho leyes tre
mendamente drásticas contra esta clase de delincuentes, que van sin duda más
allá de lo razonable y justo, y que son tan excesivas como inútiles. Por ejemplo,
en el código penal de México se castiga con cinco años de prisión la destrucción
de información, sin ninguna atenuante, de manera que si por un real y verdade
ro accidente alguien destruye información, aun irrelevante, puede enfrentar car
gos que potencialmente lo enviarían a la cárcel por media década, y si la
información pertenece al sector público, la pena son seis años sin derecho a
fianza. Sin embargo, estas leyes son inútiles debido a la impunidad que existe.
Aun en países con agencias investigadoras altamente eficientes, como Es
tados Unidos con su FBI, el nivel de impunidad es enorme. De hecho, el porcen
taje de delincuentes informáticos atrapados es normalmente inferior a 0.1%.
V irus 459
• Virus.
• Ataques de penetración de servidores y estaciones de trabajo.
• Ataques de negación de servicios.
• Programas de espionaje.
• Caballos de Troya.
• Bombas de tiempo.
De todos estos tipos el más abundante y que genera mayores costos para la
sociedad es sin duda alguna el de los virus y por ello, le pondremos un mayor
énfasis.
Virus
El tamaño del problema
La primera pregunta que surge es ¿qué tan grande es el problema de los virus
informáticos?
460 CÓDIGO MALICIOSO
1 www.icsalabs.com/
V irus 461
*0 g N K t -tQ )
100 %
0%
tiempo
Hay desde luego, un número grande de virus que hacen esfuerzos inauditos por
ocultarse y para ello han inventado técnicas sumamente ingeniosas, algunas de
las cuales tienen potencial para ser usadas en cosas productivas.
Las características distintivas de un virus son entonces que residen en un
programa y que son capaces de infectar a otros programas. Los mecanismos de
daño, cambio de forma y ocultamiento son opcionales en los virus, aunque por
desgracia son muy comunes. En teoría pueden existir virus buenos bajo alguna
circunstancia, aunque en la práctica esto no se da.
V irus 469
Ejemplos de virus
En esta sección exploraremos algunas clases de virus que nos servirán para cla
rificar los conceptos hasta ahora introducidos.
Los ejemplos se presentan en seudocódigo de acuerdo a las siguientes
convenciones:2
El símbolo “:=0=” se utiliza en las definiciones de programas y subrutinas,
usamos s'f al final de un nombre para usarlo como etiqueta de una instrucción.
El separa instrucciones y el “=” se usa tanto para asignar valores a las varia
bles como en las comparaciones. El implica negación y se usan “{“ y ”}” para
agrupar instrucciones.
Un virus elemental hace lo mínimo necesario para caer dentro de nuestra
definición de virus: busca un programa, lo infecta y pasa el control al programa
infectado. El virus más pequeño que se conoce en las computadoras PC y com
patibles hace exactamente esto y ocupa solo 45 bytes.
El funcionamiento de este virus no puede ser más simple: busca un archi
vo ejecutable y se coloca antes de la primera instrucción del programa recién
infectado. Luego brinca al final del virus, que es donde está la primera instruc
2 Seguimos las mismas convenciones que el doctor Fred Cohén en su tesis doctoral ti
tulada “Computer Víruscs”
472 CÓDIGO MALICIOSO
ción del programa original, de manera que se ejecuta como si nada hubiera
ocurrido. En muchos procesadores y sistemas operativos esto no puede hacerse
directamente debido a problemas de corrimiento en las direcciones de las ins
trucciones y sus operandos, sin embargo, hay otros casos en que este mecanis
mo trabaja sin problemas.
Programa virus_elemental :=
{
Procedimiento infecta: —
{
archivo = archivo_ejecutable_toniado_al_azar;
inserta_virus_al_inicio_del_archivo;
regresa;
}
Programa_principal: =
{
infecta;
brinca final;
}
final:
}
inserta_virus_al_principio_de_archivo;
regresa;
}
si (hay_otro_archivo_ejecutable) entonces
{
archivo = siguiente_archivo_ejecutable:
brinca ciclo:
}
regresa;
}
Procedimiento hacer_daño :=
{
cualquier_daño_programado;
regresa;
}
Procedimiento dañar_ahora :=
{
si {condicion_para_daño} entonces
{
devolver verdadero;
}
devolver falso:
}
Programa_principal :=
{
infecta;
si dañar_ahora entonces
{
hacer_daño;
}
brinca final;
}
final:
474 CÓDIGO MALICIOSO
La inmensa mayoría de los virus hechos hasta 1990 tenían una estructura similar
a la del virus ordinario. Esto ha ido cambiando gradualmente al introducirse de
una manera generalizada una serie de procedimientos orientados a evitar que el
virus sea detectado (virus invisibles o stealth viruses) y a generar un número
enorme de variantes en lo que popularmente se conoce como virus “mutantes”,
aunque su nombre correcto es el de virus polimórficos.
Sólo como ejemplo de la posibilidad de virus benéficos incluimos aquí un
virus compresor de archivos, haciendo la aclaración de que hay mejores mane
ras de lograr resultados similares, como lo hacen algunos productos comerciales
incluyendo la opción D oubleSpace de Windows:
Programa virus_compresor :=
{
12345678;
Procedimiento infecta :=
{
archivo=primer_archivo_ejecutable;
ciclo:
si ~(primera_!ínea_de_archivo = 12345678) entonces
í
comprime_archivo;
inserta_virus_al_principio_de_archivo;
regresa;
}
si hay_otro_archivo_ejecutable entonces
{
archivo =? siguiente_archivo_ejecutable;
brinca ciclo;
}
regresa;
}
Programa_principal: =
si usuario_da_permiso entonces
V irus 475
{
infecta;
descomprime_resto_deLprograma;
brinca final;
}
final:
}
Segunda definición
Vayamos ahora a una definición más avanzada definiendo el conjunto de los
virus como el conjunto de secuencias de símbolos que cuando son interpretadas
en un medio ambiente determinado, tienen la propiedad de hacer aparecer otra
secuencia de símbolos que pertenece al conjunto de virus en otra parte del sis
tema.
Tenemos aquí algunos elementos nuevos que son de interés. El primero se
refiere a que se trata de secuencias de símbolos que son interpretadas en un
medio ambiente dado. Esto se refiere simplemente a que hay diferentes compu
tadoras y sistemas operativos y a que para que un virus computacional funcione
tiene que estar en la computadora y sistema operativo apropiado. Con cierta
frecuencia hemos visto que se usan como servidores de archivos para redes de
I
PCs con Windows computadoras que no son PC o usan otro sistema operativo,
típicamente Linux. En estos casos, ocurre con frecuencia que aunque un virus
3 La diferencia esencial entre la propuesta de Cohén para este virus y la que aquí pre
sentamos estriba en que Cohén hace la descompresión en un archivo temporal y
luego lo manda ejecutar, en tanto que nosotros proponemos la descompresión en
memoria ahorrando así operaciones especialmente lentas, como los accesos a disco.
476 CÓDIGO MALICIOSO
Virus reales
Las definiciones de virus que hemos venido manejando hasta ahora sirven muy
bien desde el punto de vista teórico, en que es importante encontrar las propie
dades generales de los virus y demostrar algunos teoremas, sin embargo, en el
mundo real estas definiciones son poco prácticas.
Veamos un ejemplo que ilustra por qué necesitamos una definición de
trabajo más restringida: si en un diskette tenemos el antiguo programa de DOS
diskcopy, que sirve para copiar diskettes, y lo usamos para copiar el contenido
de ese mismo diskette a otro, de acuerdo con las definiciones expuestas, el pro
grama diskcopy será un virus, o más concretamente, un gusano. Lo mismo pue
de decirse de muchos otros programas, de manera que se necesita, en términos
de la práctica diaria, otra definición.
Desde hace ya bastantes años, Alan Solomon acuñó el término de “virus
reales” para designar a un subconjunto de los virus que realmente nos pueden
dar problemas. La dificultad para definir los virus reales consiste en que no hay
una manera clara, siij ambigüedades, de separar el subconjunto de interés.
El primer criterio de diferenciación consiste en que los virus reales fueron
hechos por sus autores con la intención específica de ser virus. En otras pala
5 Aunque hay algunas diferencias sutiles entre las definiciones dadas por Cohén y las
aquí presentadas, mucho del trabajo de ese autor es también aplicable a nuestras
definiciones. En particular el primer teorema de Cohén que establece que la unión de
dos conjuntos de virus es también un conjunto de virus, se aplica tal cual a nuestro
caso.
478 CÓDIGO MALICIOSO
bras, los virus reales no son virus por accidente, a diferencia de los programas
como diskcopy. En muchos casos, al analizar un virus y entender cabalmente su
funcionamiento queda claro que fue desarrollado precisamente con esa inten
ción. Nadie pensaría que el Slam m er o el Witty son programas hechos para otro
fin y que de casualidad caen en la clasificación de virus, sin embargo, la posibi
lidad de que haya casos en la enorme zona gris que potencialmente hay entre
el diskcopy y el Slamm er hace que muy probablemente nos encontremos en un
futuro no muy lejano con programas o pedazos de programa difíciles de clasifi
car. Después de todo, no es posible, al menos en todos los casos, saber cuál fue
la intención del autor de un pedazo de programa.
• Bromas.
• Destrucción de información.
• Alteración de información.
• Saturación de recursos.
• Bloqueo de los equipos.
• Otros daños.
^^^^rigid;
tores del teclado que envían el resultado a una dirección de correo de Internet
cuando el usuario se conecta.
Es importante hacer notar que muchos de los daños que puede generar un
virus serían acciones que legítimamente podría realizar un usuario común, de
manera que algunas defensas que se basan en la detección de acciones anorma
les fallan completamente como medidas preventivas de daño.
Mientras más indirecta es la acción del virus y más explicaciones alternati
vas haya, más difícil será darse cuenta de que se trata de un virus.
También ocurre lo contrario, achacamos muchos problemas a los virus que
en realidad no fueron producidos por ellos. Frecuentemente se usa como pre
texto para no entregar un trabajo a tiempo que un virus borró la información.
Lo mismo ocurre cuando por error se borraron archivos importantes.
Por encima de todos los daños mencionados hay otro que no está progra
mado en ningún virus, pero que resulta de todos ellos: se trata del daño psico
lógico que generan y su impacto en las organizaciones.
Imaginemos a una secretaria en los niveles altos de una empresa o institu
ción. Su trabajo exige alta calidad en los resultados y una enorme eficiencia. Con
frecuencia tendrá que entregar documentos importantes mecanografiados en
tiempos muy cortos. Para ello cuenta con una computadora personal último
modelo. Si un virus destruye o corrompe sus archivos en el momento inapropia
do se llevará al menos un gran regaño. Un par de veces que le ocurra y pode
mos asegurar que regresará, con el beneplácito de su jefe, a su rudimentaria
pero fiel máquina de escribir, echando por la borda el adelanto tecnológico que
en materia de automatización de oficinas se pudiera haber logrado.
El pánico y la psicosis colectiva que se produce cuando por los medios se
anuncia que en una cierta fecha algún virus dañará la información almacenada
en los discos duros produce más estragos que los virus mismos. ¿Cuántas PCs
dejaron de usarse al inicio del año 2000 por temor a una infección? No lo sabe
mos, pero nos consta el esfuerzo que hicieron algunos vendedores de antivirus
por asustar a los usuarios diciendo que había muchos virus que borrarían infor
mación en esa fecha.
Virus 483
hemos usado por meses o años con la fecha de hoy o cualquiera digamos del
mes pasado, haría obvio que ha sido alterado.
Aquí necesitamos ya de algunas herramientas para detectar el problema. A
nivel muy elemental, un programa que registre las longitudes y fechas de los
archivos ejecutables de nuestra máquina y guarde una copia de las rutinas de
carga para hacer una comparación contra ellas, sería suficiente.
La realidad, sin embargo, no es tan benigna. Pronto surgieron una serie de
virus en los que no se generaban efectos tan fáciles de detectar. Se trata, obvia
mente, de la tercera generación. Su detección y caracterización requiere de
programas de alta especialización. Algunos de ellos ni siquiera alteran las áreas
de memoria en las quie se almacenan las direcciones de las rutinas de servicio,
o el registry, que les dan el control del equipo. Muchos de ellos están “encripta-
dos”, de manera que tampoco es fácil detectarlos por las instrucciones de que
están constituidos.
La forma ordinaria de combatir estos virus es la búsqueda de una secuen
cia de instrucciones que forma parte del virus en memoria, programas, docu
mentos con código ejecutable, bibliotecas compartidas, buzones de correo
electrónico y áreas del sistema.
Algunos virus de transición entre la tercera y la cuarta generación son ca
paces de adoptar diferentes formas e invadir diferentes clases de programas, o
trabajar coordinando las acciones de diferentes partes del virus almacenadas por
separado. Éstos son los virus multipartitas.
Relacionados con los virus multipartitas están aquellos virus capaces de
trabajar en más de una plataforma, como el Winnux que trabaja en Windows y
Linux y que entró en circulación en marzo de 2001.
La tecnología sigue su marcha y ya han aparecido los virus de la cuarta
generación. Esta generación es la de los llamados virus polimórficos a los que
popularmente se les conoce con el sobrenombre de virus “mutantes”. Contienen
una serie de pequeñas rutinas que ensamblan como si fueran piezas de m ecca-
no para hacer cada vez que se reproducen un virus diferente. Uno de los virus
detectados es capaz de hacer 4.3 x 109 variantes. Es obvio que empleando el
enfoque de buscar secuencias de bytes únicas para detectar un virus polimórfico
no es prácticamente posible ya que, para el caso anterior, tendríamos que bus
v ir u s 485
car 4.3 X 109 secuencias diferentes, cosa imposible en términos prácticos. Hay
que usar un mecanismo un tanto más refinado.
Se ha hecho toda una leyenda en torno a la detección de los virus polimór-
ficos, haciendo creer al público que se trata de algo poco menos que imposible
y que requiere tecnología de punta. Esto desde luego que no es cierto, hacer
algún detector algorítmico para alguno de estos virus es algo que está al alcance
de cualquier fabricante de detectores. La manera de detectarlos es buscando las
diferentes rutinas que se pueden ensamblar y viendo si las piezas encontradas
forman un conjunto de rutinas de las que el virus puede generar. Esto implica
haber desensamblado del virus y analizado a fondo su funcionamiento. De aquí
se pueden deducir cuáles son las diferentes piezas que hay que buscar y cuáles
pueden ir asociadas y cuáles no, con lo que es relativamente fácil deducir si un
conjunto de piezas encontrado forma una variante del virus o no. El único pro
blema real es el tiempo que se requiere para elló, junto con el costo y la canti
dad de personal necesaria para desarrollar los algoritmos de detección.
Virus polifórmico
1 a copia Porción encriptada
l iI l i Rutina
de
armado
Piezas para ensamblar
Porción encriptada
486 CÓDIGO MALICIOSO
En algunos virus polimórficos las piezas de que están hechos son de uso común
en programas normales, de manera que si no está bien hecho el algoritmo que
los detecta, se pueden producir numerosas falsas alarmas.
Generación Características
muchos virus, pero no sirve cuando un virus es nuevo ya que no está cataloga
do en la lista de virus que el detector maneja.
En la naturaleza encontramos que una de las estrategias más importantes
para la sobrevivencia de las especies es la diversidad genética. Así, epidemias de
males tan terribles como la peste o el cólera o aun el sida son incapaces de erra
dicar a todos los individuos, ya que algunos serán inmunes a esa enfermedad.
En general esto no ocurre así en los usuarios de Internet, ya que casi no
hay variedad de programas y sistemas operativos: la inmensa mayoría usa para
correo electrónico el programa Outlook y el sistema operativo Windows de Mi
crosoft, combinación que para colmo ofrece numerosas facilidades para la exis
tencia y propagación de los virus. No es nada extraño que la inmensa mayoría
de los virus que se propagan por correo electrónico estén escritos para esta
combinación y exploten ampliamente sus facilidades.
Una medida sorprendentemente fácil para evitar desastres mayores en or
ganizaciones con muchas pcs conectadas en red es usar un programa de correo
que no sea Outlook. Esta medida está al alcance de las organizaciones simple
mente cambiando la norma en cuanto a programa de correo y borrando el
Outlook de las máquinas de los usuarios.
Otra medida trivial y que no tiene ningún costo es que los usuarios no den
click sobre los anexos de correo a menos que se trate de un remitente conocido
y para asuntos de negocios, sin embargo, este es un caso perdido en general,
pues la inmensa mayoría de los usuarios no hacen caso a esta recomendación.
Ocurre aquí algo similar a lo que pasa con el sida: si todos tomáramos las me
didas higiénicas básicas contra ese virus, desaparecería de la faz de la tierra en
una década aproximadamente, sin embargo, si cuando lo que va de por medio
es la propia vida, muchas personas no toman las más elementales medidas de
seguridad, ¿qué podemos esperar cuando lo que va de por medio es la informa
ción de la PC o los datos de la organización?
La otra vertiente de los virus en Internet está relacionada con los servido
res. Aunque aquí la variedad de programas y sistemas operativos es más grande,
hay suficientes servidores de cada tipo como para poder sostener una epidemia,
ya el virus Witty demostró que bastan 12,000 máquinas vulnerables en la inmen
sidad de Internet para sostener una epidemia.
V irus 489
También hay algunos programas para los que casi no hay variedad. Tal vez
los ejemplos más notables sean el servidor de nombres BIN, el agente de correo
sendm ail y el servidor de Web OS y el de correo Exchange, ambos de Mi
crosoft,
La sofisticación de los virus de servidor tiende a ser mayor que la de los
virus de usuario. En general, un virus de servidor aprovecha alguna debilidad
existente en algún programa común, la explota para ganar el control del servi
dor victima y, una vez adentro, transfiere una serie de archivos, oculta su exis
tencia, con frecuencia deja una puerta trasera para el autor del virus, y aprovecha
el servidor para lanzar ataques sobre otros servidores, todo automáticamente y
sin que tenga que mediar acción alguna por parte del administrador del servidor
o de sus usuarios.
Un ejemplo de este comportamiento es el virus Witty aparecido en marzo
de 2004 al día siguiente de la publicación de vulnerabilidades en varios corta
fuegos (firewalls).
Aquí el peor enemigo a vencer es la falta de cuidado de los administrado
res de los nodos que normalmente no reciben las circulares que indican cuáles
versiones de los programas son vulnerables y, por lo tanto, no actualizan sus
servidores con versiones seguras.
Desde luego que si un virus aparece al día siguiente de anunciada la vul
nerabilidad, es muy difícil pedir que todos los administradores de servidor ha
gan los parches necesarios a sus sistemas.
El futuro
Dada la falta de cuidado de los usuarios, el anonimato derivado del número
creciente de usuarios de la red, la naturaleza destructiva de algunas personas, la
inutilidad de las leyes y policías cibernéticos, y la incorporación de facilidades
mal diseñadas en las aplicaciones y servicios de red, lo único seguro es que el
problema de virus se agravará.
En un plan realista, lo mejor que podemos pronosticar es que mejoraremos
los mecanismos de protección de manera que podamos paliar el problema,
aunque no resolverlo de raíz. La necesidad de mantener bajo control la situación
de virus generará toda una especialidad de la informática muy apreciada por las
492 CÓDIGO MALICIOSO
Las críticas llovieron sobre Dewdney diciendo que lo que había escrito era
sumamente destructivo, al dar malas ideas a los programadores. La presión fue
tal que en 1985 Dewdney publicó una apología en su columna diciendo que
Core Wars no era el origen de los programas destructivos, aun cuando en las
cartas de los lectores se planteaba la posibilidad de usar técnicas similares a
las de los programas que luchaban en Core Wars para fines destructivos.
Culpar a Dewdney de la existencia de virus y caballos de Troya sería tanto
como echar la culpa de la guerra al inventor del ajedrez. El problema reside en
la destructividad humana y no en inocentes juegos intelectuales. Core Wars es
una excelente herramienta educativa para la enseñanza del lenguaje ensam
blador.
La historia de Creeper y Reaper estaba inspirada, de acuerdo a Dewdney,
en el programa Darwin desarrollado por Douglas Mcllroy en los Laboratorios
Bell, cuya descripción aparece en la revista Software: Practice a n d Experience
Vol. 2, 1972, y el programa Worm escrito por John F. Shoch del Xerox Palo Alto
Research Center.
En Darwin, que es un juego más o menos parecido a Core Wars, los pro
gramas, llamados organismos, tratan de reproducirse lo más posible, a veces a
expensas de sus contrincantes, ya que al transcurrir un cierto tiempo, el organis
mo más abundante es el que gana, por lo tanto, para triunfar hay que programar
los organismos más resistentes y prolíficos.
Worm es un experimento diseñado para explorar la posibilidad de proceso
paralelo en redes de computadoras. Bajo la supervisión de un programa coordi
nador, Worm penetra en las máquinas de la red para realizar un pedazo de la
tarea en cada una de ellas. Esto es en realidad un antecedente del proceso en
paralelo que hoy se lleva a cabo en redes de computadoras, como el proceso
de la información recabada en el proyecto SF.TI que aprovecha PCs de usuarios
en Internet y trabaja mediante un protector de pantalla.
Así pues, estos programas, que de alguna manera pueden considerarse los
antecedentes de los virus computacionales, tenían objetivos bien definidos ya
sea de investigación o de enseñanza y diversión.
El primer experimento con virus informáticos propiamente dichos del que
tenemos noticia fue concebido por Fred Cohén, el 3 de noviembre de 1983, y
V ir u s 495
Aun cuando el tiempo que tarda el virus en adquirir la totalidad de los privile
gios en el segundo experimento es tres veces mayor que en el primero, resulta
pavoroso pensar que basta un cuarto de hora en un equipo muy lento compa
rado con los actuales, para que un virus adquiera el control del sistema. En
términos prácticos resultaría muy difícil verificar la integridad de la totalidad de
los programas de un sistema multiusuario cada 10 o 15 minutos. Si acaso resul
ta práctico hacerlo dos o tres veces al día y el resultado de esta práctica sería
simplemente saber que hay que reponer casi la totalidad de los programas del
sistema, cosa que podemos calificar como un desastre mayor.
Así pues, en un sistema multiusuario necesitamos mejores medidas que
simplemente revisar la inexistencia de virus de vez en cuando.
Los experimentos de Cohén permanecieron dentro de los medios científi
cos un buen tiempo. En realidad, los virus informáticos fueron descubiertos por
diversos programadores en forma independiente, antes y después de los expe
rimentos de Cohén.
resumen de las cartas que los lectores le enviaron a raíz del artículo mencionado
más arriba.
Aquí aparecen ya una serie de referencias del “mundo real” en el que se
mencionan y describen dos virus. Los autores del primer virus son Roberto Ce-
rruti y Marco Morocutti, de Brescia, Italia. Se trata de un virus para computado
ras Apple II. La ingenuidad de estos programadores resulta evidente cuando
mencionan que no pudieron hacer funcionar su virus hasta que se dieron cuen
ta que debería transmitirse mediante un diskette infectado con el DOS. Este virus
nunca fue liberado y por lo tanto no generó ninguna epidemia. Su importancia
radica en que fue desarrollado fuera de los laboratorios de investigación y en
una máquina sumamente populares en ese tiempo.
Otro virus descrito en el artículo de 1985 de Dewdney fue hecho por Ro-
bert Skrenta Jr., estudiante de high school, que causó toda una epidemia entre
sus amigos y maestros, marcando el primer problema con virus sufrido por va
rios usuarios.
En el año 1985 se desarrollaron otros viais. Tal vez el más importante sea
el Pakistán Brain hecho por dos hermanos de Labore (Pakistán) y que fue in
troducido en Estados Unidos y en el resto del mundo en copias ilegales de
programas famosos que los hermanos vendían a los turistas en tan sólo 1.50
dólares.
La lista de los virus ha crecido rápidamente desde entonces hasta la fecha.
A fines de 1992 se reportaban ya alrededor de 1,600 virus diferentes para el
ambiente pc/ dos y a principios de 1994 la cifra era de alrededor de 4,000, aun
que hay severas discusiones en la manera de efectuar la cuenta de virus diferen
tes. A fines de siglo se estimaban más de 40,000 y para fines del 2004, 100,000.
De hecho, la cifra real no es crítica, lo importante es el rápido crecimiento del
problema.
Ataques de penetración
Mucho es el código desarrollado por atacantes para obtener el control de una
máquina ajena. Aquí tenemos diferentes enfoques por parte de los atacantes:
pueden buscar las contraseñas de los usuarios, particularmente del súper usua
rio £Adm inistrador en Windows o root en Linux/Unix), pueden aprovechar
errores en el diseño de los protocolos usados en las redes y en algunos progra
mas clave de uso generalizado, o aprovechar el acceso físico a la máquina víc
tima.
La obtención de contraseñas será tratada en la sección de programas
espías, en tanto que aquí nos concentraremos en las otras formas de pene
tración.
Los ataques de penetración requieren de dos fases, la penetración inicial y
luego el mantenimiento del control del servidor, es decir, mantener una puerta
abierta para el atacante.
Cuando el ataque se hace a través de una red generalmente se aprovecha
de algún error de diseño en algún protocolo de comunicación o en algún pro
grama de uso común, aunque es posible también utilizar un virus que introduce
los programas necesarios para la segunda fase del ataque.
At a q u e s d e pe n e tr a c ió n 499
mente esto se hace mediante un rastreo de los puertos del servidor. En cada
puerto abierto que pueda estar sujeto a una vulnerabilidad hay un segundo
cuestionamiento para determinar si el programa que atiende el puerto corres
ponde a alguna versión vulnerable. Si podemos detectar estas actividades, podre
mos prevenir muchos ataques. En este tipo de fenómenos se basan los llamados
IDS (Intrusión Detection System) y los ips (Intrusión Prevention System).
Gran parte de los programas atacados tienen un tipo común de vulnerabi
lidad llamada “buffer overflow" y que consiste en que carecen de los controles
adecuados para evitar que demasiada información enviada a ellos llene las áreas
destinadas a recibir datos y se encime con otras partes del mismo programa.
Los programas de ataque simplemente mandan cantidades grandes de in
formación en la que incluyen código en lenguaje de máquina para terminar el
programa o cargar en su lugar un shell que automáticamente tendrá los dere
chos del usuario que lanzó el programa original —root o Administrador en
muchos casos— , dando acceso al atacante.
A pesar de que es un error muy fácil de prevenir existe en muchos progra
mas, tanto de dominio público como comerciales. Son ya legendarias las nume
rosas fallas de este tipo en el lis de Microsoft.
Otros programas de ataque aprovechan errores en trayectorias y nombres
de archivo y permisos, de manera que sustituyen algún programa de uso gene
ral por el del atacante y simplemente esperan a que un usuario, preferentemen
te con privilegios, los ejecute. Este tipo de ataques solía ser común usando
servicios públicos de FTP y hoy se ve con frecuencia en scripts de servicio de
Web mal diseñados.
Lo más adecuado es prevenir, hasta donde es posible, el primer ataque. Un
detector de exploración de puertos, como los tcpwrappers de Unix, adecuada
mente configurados, pueden ayudar muchísimo, aunque la mejor manera de
defenderse es teniendo abiertos el menor número de puertos posibles y mante
niendo las versiones de los programas actualizadas o con las correcciones que
eliminan o mitigan el peligro.
Aunque no es lo mejor, detectar la segunda fase nos puede ayudar cerrar
las puertas abiertas. Esto se puede hacer con programas que revisan la integri
dad de archivos de configuración y programas. Aquí es importante mantener
ATAQUES DE PENETRACIÓN 501
Programas de espionaje
Tradicionalmente los ingenieros en comunicaciones han usado programas que
revisan todos los paquetes de datos que circulan en una cierta porción de una
red a fin de determinar si trabaja correctamente, diagnosticar fallas y medir su
rendimiento, son los analizadores de protocolos.
En una red ethernet ordinaria es muy fácil espiar el tráfico debido al propio
diseño de esta tecnología, cuando una máquina “habla”, las demás “escuchan” y
si el paquete de información no va dirigido a ellas simplemente lo ignoran. Un
programa de escucha simplemente registra la totalidad de los paquetes de datos
y los procesa de acuerdo con las necesidades del ingeniero en comunicaciones.
Recientemente se han usado programas de este tipo para detectar virus en co
rreo electrónico y otros servicios de red.
Estos mismos programas pueden ser usados por un atacante para espiar lo
que pasa por la red, especialmente nombres de usuario y contraseñas.
La defensa contra este tipo de ataques es la criptografía, que cae fuera del
ámbito de este documento.
Se dice que cuando en una LAN se usan switches en vez hubs no es posible
que haya programas escuchando el tráfico de la red. Esto es falso, ya que hay al
menos tres técnicas que lo permiten. La más común es el llamado “envenena
miento ARP” en que una máquina suplante a otra enviando datos erróneos a la
504 CÓDIGO MALICIOSO
Caballos de Troya
Un caballo de Troya no es más que un programa dado a alguien como regalo,
que al menos en teoría provee algo interesante para el usuario, pero que tiene
ocultas otras funciones, desde el espionaje hasta la destrucción y cualquier otra
cosa que se le ocurra al programador. La variedad de cosas que puede hacer un
caballo de Troya está limitada sólo por la febril imaginación de los atacantes, y
no hay una técnica común para detectar cuando un programa es un caballo de
Troya.
Aquí cabría la prudencia del usuario de no ejecutar un programa que no
provenga de una fuente confiable, pero esto en la práctica no funciona. Algunos
programas antivirus detectan algunos de estos caballos de Troya, pero es muy
factible que el atacante haya hecho uno específicamente para la víctima y este
caso no será detectado por los programas antivirus.
Bombas de tiempo
Tal vez estos fueron de los primeros programas malignos existentes. Se trata de
un programa normal que hace su función correctamente y que en cierta fecha/
hora genera algún problema. Estos solían ponerlos en sistemas desarrollados
dentro de las organizaciones programadores disgustados por alguna razón.
Con frecuencia los virus computacionales contienen una bomba de
tiempo.
Las defensas corresponden a las aplicadas contra virus y en el caso de los
programas desarrollados internamente, la única solución es un excelente control
de calidad y auditoría. Un programa detector de cambios en los programas pue
de también ser de utilidad.
506 CÓDIGO MALICIOSO
Referencias
1. “The Bulgarian and Soviet Virus factories”, Bontechvm Vesselin, 11-3-1992,
Proceedings of the Fifth Inernational Computer Virus and Security Conferen
ce, http://www.essayworld.com/essays/computer/723.shtml
2. “Annual ICSA Labs Computer Virus Prevalence Survey”, Bridwell L. M,, 2004,
ICSA Labs, a division of Cybertrust, http://www.icsa.net;https://www.icsalabs.
com/icsa/docs/html/library/whitepapers/vps2003.pdf
3- “Computer Viruses”, Cohen F., 1985, Tesis, Universidad del Sur de California
(use).
4. “Computer Recreations” Dewdney, A. K., Scientific American, May 1984, 1-5-
1984.
5. “Can Computers and Epidemiology Get Along? Health Problems in Compu
ters”, Mallen G. M., Daltabuit E., Vargas-Vorakova F., 10-10-1995, 10th Natio
nal Computer Security Conference, National Bureau of Standards/National
Computer Security Center.
URL
http://www.eaida.org/outreach/papers/2002/eodered/
http://www.caida.org/outreach/papers/2003/sapphire/
http ://www. caida.org/outreach/papers/2004/wi tty/
http://www.caida.org/outreach/papers/2002/codered/
http ://www. cai da.org/outreach/papers/2003/sapphire/
http ://www. caida.org/outreach/papers/2004/witty/