http://www.igalia.com
Pg. 2
Agenda
● Teoría de virus informáticos● Análisis de un virus informático● Sistemas antivirus privativos y libres● Un sistema antivirus libre : ClamAV● Ideas, pensamientos ...
http://www.igalia.com
Pg. 3
Teoría de virus informáticosIntroducción (I)
● http://www.webopedia.com/TERM/v/virus.html– “Virus. A program or piece of code that is loaded onto your
computer without your knowledge and runs against your wishes. Viruses can also replicate themselves. All computer viruses are manmade ... a simple virus is dangerous because it will quickly use all available memory and bring the system to a halt ...”
¿ es esta definición “correcta” ?
http://www.igalia.com
Pg. 4
Teoría de virus informáticosIntroducción (II)
● Otra definición ...– “Virus. Un virus informático es un programa que puede
infectar a otros programas, modificándolos de tal manera que incluyan una copia suya, quizás desarrollada. Hay que tener en cuenta que un programa no tiene porqué causar daño en el acto (borrar o corromper ficheros) para ser considerado como un virus ...”
http://www.igalia.com
Pg. 5
Teoría de virus informáticosIntroducción (y III)
● Un ejemplo ...
for i in *.sh; doif test “./$i” != $0; then
tail n 5 $0 | cat >> $i;fi
done
http://www.igalia.com
Pg. 6
Teoría de virus informáticosFormalización (I)
● Lógica matemática– Cuestiona con el mayor rigor los conceptos y las
reglas de deducción utilizados en matemáticas● Teoría de la computabilidad.
– Estudia los problemas de decisión que pueden ser resueltos con un algoritmo
http://www.igalia.com
Pg. 7
Teoría de virus informáticosFormalización (II)
● Un problema de decisión es un problema en donde las respuestas posibles son SI o NO
● Un problema puede tener solución o no tenerla
http://www.igalia.com
Pg. 8
Teoría de virus informáticosFormalización (III)
● Alan Mathison Turing (19121954)– Matemático, científico, criptógrafo y filósofo– Influyente formalización de los conceptos de
algoritmo y computación– Tesis de ChurchTuring.
● Cualquier modelo computacional existente tiene las mismas capacidades algorítmicas, o un subconjunto, de las que tiene una máquina de Turing
http://www.igalia.com
Pg. 9
Teoría de virus informáticosFormalización (IV)
● Máquina de Turing– Modelo computacional– Modelo formal de computador– Demostró que existían problemas que una
máquina no podía resolver– Formaliza el concepto de algoritmo
http://www.igalia.com
Pg. 10
Teoría de virus informáticosFormalización (V)
● Máquina de Turing– Cabezal lector/escritor– Cinta infinita– Tabla de estados
● (estado, valor) > (nuevo estado, nuevo valor, dirección)
http://www.igalia.com
Pg. 11
Teoría de virus informáticosFormalización (VI)
● Máquina de Turing Universal– Es posible realizar una codificación de la tabla
que representa a una máquina de Turing, a su vez, como una secuencia de símbolos en un determinado alfabeto; por ello, podemos construir una máquina de Turing que acepte como entrada la tabla que representa a otra máquina de Turing, y, de esta manera, simule su comportamiento.
http://www.igalia.com
Pg. 12
Teoría de virus informáticosFormalización (VII)
● Problema de la parada– ¿Puede decidirse si la máquina M arbitraria
parará con una entrada arbitraria?– Herramienta
http://www.igalia.com
Pg. 13
Teoría de virus informáticosFormalización (VIII)
● Fred Cohen (1986)– Computer Viruses, Ph. D Thesis, University of
Southern California– Formaliza el concepto de conjunto viral (M,V)– Experimentos con virus y código autoreplicante– Establece los primeros resultados formales
http://www.igalia.com
Pg. 14
Teoría de virus informáticosFormalización (y IX)
● Conclusiones– No es posible decidir por simple enumeración si
un conjunto (M,V) es viral– Evolución viral– Computabilidad viral
● Máquina de Turing universal evolucionando desde una secuencia viral => Máquina viral universal
http://www.igalia.com
Pg. 15
Teoría de virus informáticosConceptos básicos (I)
Host
Virus+
Programa infectado
http://www.igalia.com
Pg. 16
Teoría de virus informáticosConceptos básicos (y II)
programa infectado
http://www.igalia.com
Pg. 17
Teoría de virus informáticosEstructura algorítmica
● Rutina de búsqueda● Rutina de copia● Rutina antiantiviral● Rutina de manifestación (“payload”)
http://www.igalia.com
Pg. 18
Teoría de virus informáticosCiclo de vida
● Fase de infección● Fase de incubación● Fase de manifestación
http://www.igalia.com
Pg. 19
Teoría de virus informáticosInfección ilustrada (I)
● Sobreescritura
http://www.igalia.com
Pg. 20
Teoría de virus informáticosInfección ilustrada (II)
● Añadiendo código viral
(1) (2)
L
L
http://www.igalia.com
Pg. 21
Teoría de virus informáticosInfección ilustrada (y III)
● Entrelazando código
http://www.igalia.com
Pg. 22
Teoría de virus informáticosClasificación
● Por objetivo– ejecutables, documentos ...
● Por lenguaje de programación● Por comportamiento
– retrovirus, residentes, polimórficos ... ● Por método de infección● Por “payload”
http://www.igalia.com
Pg. 23
Teoría de virus informáticosOtros conceptos
● Bombas lógicas● Troyanos● Señuelos● Spyware● Rootkits● ...
http://www.igalia.com
Pg. 24
Análisis de un virus informáticoPreliminares (I)
● Sí, en Linux existen virus ... aunque ...– Perfil del usuario medio
● Técnico, cuidadoso, difícil de engañar ...– Filosofía del software
● Libre, abierto, transparente ...– Windows es más atractivo
● Privativo, cerrado ...
http://www.igalia.com
Pg. 25
Análisis de un virus informáticoPreliminares (II)
● Arquitectura i386
http://www.igalia.com
Pg. 26
Análisis de un virus informáticoPreliminares (y III)
● Syscalls en Linux/i386– Interfaz ofrecida por el SO– INT 0x80– Parámetros de entrada
● Código de servicio en %eax (include/asmi386/unistd.h)● Orden : %ebx, %ecx ...
– Código de retorno en %eax
http://www.igalia.com
Pg. 27
Análisis de un virus informáticoVirus Linux.Siilov
● Descripción– Linux x86 (ELF virus)– 95% C – 5% ASM– 2 métodos de infección
● PLT● Directorio actual
– Sección de datos .data1– El punto de entrada no aparece alterado
http://www.igalia.com
Pg. 28
Análisis de un virus informáticoVirus Linux.Siilov
● Veamos el código fuente
http://www.igalia.com
Pg. 29
SAV privativos y libres¿Qué es un sistema antivirus?
● Sistema Antivirus– Software capaz de detectar, frustrar y/o eliminar
código viral
http://www.igalia.com
Pg. 30
SAV privativos y libresAntivirus comerciales (I)
● Evolución– Scanners de primera/segunda generación– Emulación de código– Análisis heurístico– Inoculación (vacuna)– Análisis de comportamiento– Sandboxing
http://www.igalia.com
Pg. 31
SAV privativos y libresAntivirus comerciales (II)
● Enfoque– Diccionario de firmas
● En criptografía funciones resumen (hash) :– Números generados con la misma función tienen el mismo
tamaño independientemente de la longitud del texto base– Cálculo fácil y rápido– Imposible reconstruir texto base a partir del número resumen– “No presenta colisiones”
– Comportamientos sospechosos
http://www.igalia.com
Pg. 32
SAV privativos y libresAntivirus comerciales (y III)
● Ejemplos– Bitdefender– Kaspersky Antivirus– Trend Micro– FSecure– Norman– ...
http://www.igalia.com
Pg. 33
SAV privativos y libresModelo de negocio (I)
● Modelo de negocio– Software de código cerrado– Diccionario de firmas propietario y cerrado– Licencia privativa– Actualizaciones frecuentes– Distribución “online”
http://www.igalia.com
Pg. 34
SAV privativos y libresModelo de negocio (y II)
● Modelo de negocio– Mercado horizontal– Usuarios corporativos, profesionales y domésticos– Enfoque. Workstation vs Server– Marketing. Trials, Crippleware, boletines ...– Valor diferencial. Firewall, integración, anti
phishing
http://www.igalia.com
Pg. 35
SAV privativos y libresAntivirus libres
● Proyectos– Open Antivirus http://www.openantivirus.org
● ScannerDaemon, VirusHammer, PatternFinder, squidvscan, sambavscan, VirusHammer
– ClamAV http://www.clamav.net
http://www.igalia.com
Pg. 36
SAV privativos y libresProyecto ClamAV (I)
“Clam AntiVirus is a GPL antivirus toolkit for UNIX. The main purpose of this software is the integration with mail servers (attachment scanning). The package provides a flexible and scalable multithreaded daemon, a command line scanner, and a tool for automatic updating via Internet. The programs are based on a shared library distributed with the Clam AntiVirus package, which you can use with your own software. Most importantly, the virus database is kept up to date”
http://www.igalia.com
Pg. 37
SAV privativos y libresProyecto ClamAV (II)
● Disponible versión para Windows– ClamWin + Winpooch
http://www.igalia.com
Pg. 38
SAV privativos y libresProyecto ClamAV (III)
● Ventajas– Solución madura y estable para servidores de
mail, web, proxy, repositorios ...– Solución libre– Acceso al código fuente– Comunidad internacional con alta capacidad de
reacción
http://www.igalia.com
Pg. 39
SAV privativos y libresProyecto ClamAV (IV)
● Instalación– Resolver dependencias. GNU MP 3, gcc 2.9x o 3.x,
bzip2, zlib ...– $ ./configure prefix=/home/yourhome/clamav –
disableclamav– $ make– $ make install
http://www.igalia.com
Pg. 40
SAV privativos y libresProyecto ClamAV (V)
● Scanning$./clamscan ~/home/sandbox/.bash_history: OK/home/sandbox/.viminfo: OK/home/sandbox/.lesshst: OK
SCAN SUMMARY Known viruses: 61224Engine version: devel20060710Scanned directories: 1Scanned files: 3Infected files: 0Data scanned: 0.01 MBTime: 1.470 sec (0 m 1 s)$
http://www.igalia.com
Pg. 41
SAV privativos y libresProyecto ClamAV (VI)
● Actualización del diccionario de firmas
$./freshclamClamAV update process started at Mon Jul 10 19:40:54 2006Downloading main.cvd [100%]main.cvd updated (version: 39, sigs: 58116, flevel: 8, builder: tkojm)Downloading daily.cvd [100%]daily.cvd updated (version: 1590, sigs: 3108, flevel: 8, builder: sven)Database updated (61224 signatures) from database.clamav.net (IP: 195.214.240.53)$
http://www.igalia.com
Pg. 42
SAV privativos y libresProyecto ClamAV (VII)
● CVD (ClamAV Virus Database)– ClamAVVDB:build time:versihon:number of signatures:functionality level
required:MD5 checksum:digital signature:builder name:build time (sec)
– MD5 (md5)● hdb
– Hexadecimal (hexdump)● Wildcards● Basic signature format (db)● Extended signature format (ndb)
http://www.igalia.com
Pg. 43
SAV privativos y libresProyecto ClamAV (VIII)
● Ejemplo
$ sigtool –md5 test.exe > test.hdb
$ cat test.hdb483a34f23a66323428374334a439dd41:17387:test.exe
$ clamscan d test.hdb test.exe
http://www.igalia.com
Pg. 44
SAV privativos y libresProyecto ClamAV (y IX)
● Graphic User Interface + ClamAV– AVScan. GIMP ToolKit y Endeavour Mark II– BeClam. BeOS– ClamMail. Windows (Outlook, Pegasus,
Thunderbird ...)– ClamXav. Mac OS X– KlamAV. Linux
http://www.igalia.com
Pg. 50
SAV privativos y libresMejores prácticas
● Controlar el nivel de funcionalidad actual● Actualizar a nuevas versiones (OUTDATED)● Programar actualizaciones automáticas
– 2 opciones soportadas!● Revisar los diccionarios de firmas digitales
http://www.igalia.com
Pg. 51
SAV privativos y libresExtendiendo ClamAV
● Soporte ISO 9660– http://blogs.igalia.com/jmunhoz/2006/06/01/clamaviso9660/
http://www.igalia.com
Pg. 52
SAV privativos y libres¿Quién está usando ClamAV?
● Apple, Linux.org, IBM, OnLAMP, Institut Pasteur, SourceForge ...
● Univs. en Italia, Brasil, USA, España, ...– Ej. Loyola University Chicago
● ~ 30 000 usuarios● ~ 100 000 scans/día
● Pequeños y medianos negocios
http://www.igalia.com
Pg. 53
Conclusiones
● Software antivirus libre– Ventajas software libre– Investigación.
● Nuevos algoritmos de detección no supervisados– Innovación
● Firmas virales libres– Diccionario libre y abierto