COPS(Computer Oracle and Password System) - UNAM-CERT

Anuncio
COPS(Computer Oracle and Password System)
COPS
COPS significa Computer Oracle and password system, que pretende descubrir
posibles riesgos de seguridad dentro de un sistema Unix.
¿Quien desarrolló COPS?
Esta herramienta fue desarrollada por Daniel Farmer y Eugene H.
Spafford,en los laboratorios COAST de la Universidad de Purdue.
¿Qué problemas resuelve?
El principal objetivo de cops es la detección de una gran variedad de posibles
problemas de seguridad particulares de Unix como pueden ser:
• Permisos de archivos, directorios y dispositivos del sistema.
• Cuentas sin password.
• Contenido, formato y seguridad de los archivos de grupos y password
• Los programas y archivos que corren en /etc/rc* y en la tabla de cron.
• La existencia de archivos SUID propiedad de root, y sus
características
• Verificación CRC de binarios.
• ftp anónimo habilitado.
• Posibles vulnerabilidad en los binarios.
¿Qué es COPS?
COPS significa Computer Oracle and password system, y como ya se
mensionó pretende descubrir posibles riesgos de seguridad dentro de un
sistema Unix.
Ultima versión de COPS
La última versión liberada fue la 1.04 junto con la noticia que sería la última
versión disponible.
¿Donde obtener COPS?
Existen varios lugares de donde es seguro obtener via ftp la herramienta
COPS:
ftp://ftp.asc.unam.mx/pub/tools/cops.tar.gz
ftp://ftp.cert.org/pub/tools/cops/cops.1.04.tar.gz
ftp://coast.cs.purdue.edu/pub/tools/unix/cops/cops.1.04.tar.gz
IMPORTANTE!!
Asegurarse de obtener la herramienta de un lugar seguro, ya que de obtenerlo
1
COPS(Computer Oracle and Password System)
de un servidor no seguro exponemos nuestro sistema innecesariamente.
Configuración
Cops está integrado por una serie de programas especializados en la búsqueda
de algún tipo de vulnerabilidad dentro del sistema.
Esta herramienta está integrada básicamente en los siguientes módulos:
• Un conjunto de programas que intentan de forma automática detectar
potenciales riesgos de seguridad.
• Documentación.
• El Script COPS de ejecución en shell y perl.
Para construir los binarios de cops se requiere realizar los siguientes pasos:
a)Obtener las rutas de dependencia entre archivos, y compiladores. (gcc, nroff,
troff, etc.)
$ ./reconfig
b) Editar el shell script de cops y realizar las siguientes modificaciones según
se requieran.
$vi ./cops
b.1) Cops requiere obtener la ruta completa donde se encuentran los módulos
de cops, para esto debemos modificar la directiva SECURE de cops, esta
directiva se localiza sobre la línea 93 y tiene la siguiente ruta por default.
SECURE = /usr/foo/bar
debe quedar:
SECURE=/herramientas/cops_104
b.2) Cops requiere obtener información sobre el usuario que está ejecutando la
herramienta y esta la obtiene de la variable SECURE_USERS, con la
dirección electrónica por default:
SECURE_USERS="[email protected]"
modificar esta línea por el correo electrónico del usuario que
ejecutará cops.
Ejemplo:
SECURE_USERS="usuario@maquina"
2
COPS(Computer Oracle and Password System)
c) Si nuestro sistema tiene habilitado /etc/shadow, deshabilitar esta opción del
cops se requiere comentar (usando el simbolo #) el módulo pass.chk, sobre la
línea 198 dentro de cops.
Se ve de la forma siguiente el código que se necesita
comentar.
if $TEST −n "$verbose" ; then
$ECHO "**** pass.chk ****" >> $VERBUCKET ; fi
$SECURE/pass.chk "−w ./pass.words
d) Una cuenta valida en la mayoria de los sistemas es la cuenta ftp
anonymous, para verificar su correcto funcionamiento si existe, podemos
indicarlo dentro de cops.
Sobre la línea 192 se encuentra el código que llama a la rutina de verificación
de ftp.chk, se debe habilitar una bandera para lograr que esta verifique las
opciones de ftp anonymous.
if $TEST −n $verbose ; then
$ECHO **** ftp.chk **** >> $VERBUCKET ; fi
$SECURE/ftp.chk −a >>$RESULT 2>> $BIT_BUCKET
e) Verificación del estado de los binarios del sistema mediante el módulo
crc.chk.
Ya que por default cops lo trae deshabilitado. La ejecución de este módulo se
encuentra sobre la línea 218, para esto descomentamos (eliminando #) lo
siguiente:
#if $TEST −n $verbose ; then
# $ECHO **** crc.chk **** >> $VERBUCKET ; fi
#$SECURE/crc.chk 2>> $BIT_BUCKET
# crc.chk puts it´s results in a file called crc.results ...
#if $TEST −s $SECURE/crc_results ; then
# $CAT $SECURE/crc_results >> $RESULT
#fi
f) La verificación de los binarios con SUID activados por default (passwd, su,
lpr, etc.) En la línea 70 se activa el módulo suid.chk, por default no se realiza
esta verificación.
RUN_SUID=NO
debe quedar:
RUN_SUID=YES.
Tambien descomentar 230−232 modificar el direcccionamiento.
3
COPS(Computer Oracle and Password System)
# if $TEST "$RUN_SUID" = "YES" ;then
# $SECURE/suid.chk > /dev/null 2>&1
# fi
g) Por ultimo salvar los cambios realizados en el script cops.
Compilación de los fuentes de COPS
Como ya mencionamos cops está integrado por una serie de módulos
programados en C, los cuales realizan la verificación fuerte del sistema, estos
archivos se localizan en:
/ruta/a/cops_104/src/
Para obtener el código ejecutable se requiere solamente de ejecutar:
$ make all
TIP!!
En el caso de linux es necesario activar la bandera BRAINDEADFLAGS
descomentando la linea siguiente:
#BRAINDEADFLAGS= −lcrypt
dentro del archivo makefile.
Operación
Después de haber compilado los fuentes de cops, solo se necesitará ejecutar el
scripts cops el cual tiene la siguiente sintaxis:
cops [−a architecture] [−b bit_bucket] [−s secure_dir] [−m
user] [−f filter_file] [−dxvV]
donde:
−a
: Especifica el subdirectorio arquitectura que deseamos
ejecutar, Al ejecutar make install se generarán los
binarios adecuados.
−b : Especifica el bit bucket, donde se almacenarán todos
los mensajes de error.
−d : Enviará un reporte por correo electrónico si existen
cambios desde la ultima vez que se ejecuto cops.
−f : Especifica el archivo de filtro que cops usará para
filtrar los mensajes de advertencia extraños.
−m : Cops envía la salida por correo electrónico al usuario
especificado.
−x : Muestra la versión de cops.
4
COPS(Computer Oracle and Password System)
−vV : Activa el modo de verbose.
Ejemplo:
Como ejecutar cops y obtener un reporte de la forma año_mes_dia.
$ ./cops −v&
Nota: Al terminar la ejecución de cops este generará un reporte con los
resultados encontrados este resultado se encontrará sobre un directorio en la
ruta que definimos dentro del script de cops el directorio tendrá el nombre de
la máquina y dentro de este directorio se encontrará un archivo con la fecha de
la auditoria con la característica siguiente:
año_mes_dia.
Tips
Ejemplo:
Ejecución de cops sobre una línea de crontab para verificar el estado en que se
encuentra el sistema:
0 0 * * * /herramientas/cops_104/cops −v
Otros sitios relacionados
• Center for Education and Research in Information Assurance and
Security (CERIAS)
• Computer Emergency Response Team (CERT)
5
Descargar