En la actualidad en las entidades públicas del Ecuador es masivo el uso del servicio de correo usando Zimbra generalmente la versión de la comunidad. En la experiencia que he tenido en dos entidades públicas puedo asegurar que aún cuando se han desarrollado actividades como informar al usuario, charlas, correos, boletines, aún existen los usuarios que entregan sus credenciales al intento más básico de phishing.
Lo que ha ocasionado esto es que el top de los incidentes de seguridad se relacionen con robo de credenciales de correo. De acuerdo al comportamiento del incidente, se ha identificado el siguiente proceso, envían correo informando al usuario que su cuenta será cerrada si no se efectúa un procedimiento en el cual incluye ingresar a un enlace que conduce a un formulario en algún sitio que provee este servicio gratuitamente, en el formulario se pide llenar nombre de usuario y por supuesto la contraseña.
Una vez que el usuario provee los datos solicitados por el atacante, lo más seguro es que este usuario esté siendo usado para enviar más correos de este tipo, un común denominador es que los correos llegan de instituciones publicas, con el subfijo gob.ec. Además se ha identificado que cuando se realizan los envíos desde un usuario válido por parte del atacante sube el número de colas de envío de los usuarios, es por esto que se a elaborado un script que controla e informa cuando un usuario tiene un número excesivo de colas. Si el script detecta el número de colas especificado en la cuarta linea del script automáticamente, borra las colas y bloquea al usuario.
/opt/zimbra/postfix/sbin/postqueue -p > out.txt
/opt/zimbra/postfix/sbin/postqueue -p | grep @dominiodetuempresa.com | awk '{print($7)}'|sort |uniq -c |sort > test1
awk ' $1 > 6 { print $2} ' test1 > usuarios
cat usuarios > colausr
i=1
while read usuarios
do
su zimbra -c '/opt/zimbra/bin/zmprov ma '$usuarios' zimbraAccountStatus closed'
#### envio de mail ####
#msg=$(cat test1)
SUBJECT="ENVIO DE CORREO NO DESEADO DETECTADO"
# Email To ?
EMAIL="[email protected]"
# Email text/message
# send an email using /bin/mail
from="[email protected]"
mail="subject:$SUBJECTnfrom:$fromn"
#mail="subject:$SUBJECTnfrom:$fromn'$msg'"
echo -e $mail | /opt/zimbra/postfix-2.11.1.2z/sbin/sendmail "$EMAIL" "$EMAIL2" < test1
########################
i=$((++i))
done < usuarios
j=1
while read colausr
do
/opt/zimbra/postfix/sbin/postqueue -p | awk '{print($1,$7)}' |sort |uniq -c |sort | grep $colausr | awk '{print($2)}' > cola
j=$((++j))
done < colausr
k=1
while read cola
do
/opt/zimbra/postfix/sbin/postsuper -d $cola
k=$((++k))
done < cola
Otro comportamiento es que una vez que se obtiene las credenciales de usuario se hace envío de spam usando las credenciales válidas, pero esto por el protocolo SMTPS por lo que también se elaboró un script para que se alerte al administrador cuando haya un número no convencional autenticaciones externas.
tail -1000 /var/log/zimbra.log | grep sasl_username |grep @dominiodetuempresa.com | awk '{print($9)}'|sort |uniq -c |sort > usuariosh.txt
awk ' $1 > 5 { print $2} ' usuariosh.txt > usuariosi
awk '{ gsub(/sasl_username=/,"") ; print }' usuariosi > usuariodetectado
while read usuariodetectado
do
su zimbra -c '/opt/zimbra/bin/zmprov ma '$usuariodetectado' zimbraAccountStatus closed'
#### envio de mail ####
msg=$(cat usuariodetectado)
SUBJECT="CREDENCIALES VULNERADAS"
# Email To ?
EMAIL="[email protected]"
#Email text/message
# send an email using /bin/mail
from="[email protected]"
#mail="subject:$SUBJECTnfrom:$fromn"
mail="subject:$SUBJECTnfrom:$fromn'$msg'"
echo -e $mail | /opt/zimbra/postfix-2.11.1.2z/sbin/sendmail "$EMAIL"
###############################
done < usuariodetectado
El script se configuró que se ejecute cada 5 minutos con la ayuda de cron. No es una solución óptima pero ha ayudado a no caer a cada momento en listas negras, así como también identificar a los usuarios afectados antes de que el envío total se consume.
Una consulta este script donde lo guarda para hacerlo correr
Puedes guardarlo en la misma carpeta de Zimbra, lo importante es que pongas una linea en el cron donde lo ejecutes cada cierto tiempo. Puede ser cada 10 minutos.
Gracias por tu ayuda te comento cuando ya lo tenga corriendo al script