Archivo
Integración de Jenkins + SonarQube [DevSecOps]
La Inspección continua de código como parte de la integración continua (CI) se ha hecho cada vez mas importante en la construcción de aplicaciones dentro de una estrategia de seguridad en la metodológica de DevOps o también llamado ahora DevSecOps.
En este escenario, implementaremos para el servidor de integración continua Jenkins como contenedor en Docker. Y la parte de inspección continua de código usaremos SonarQube, finalmente analizaremos el codigo de una Aplicación Web en PHP y sera la archi conocida Dann Vulnerable Web Application o DVWA.
Para lo cual asumiremos que nuestra aplicación se encuentra en GitHub/GitLab y necesitamos evaluar la calidad del código, bugs conocidos, vulnerabilidades,etc.
El Entorno
01 Maquina virtual con Centos 7 / IP 192.168.1.13
Docker y Docker-Compose instalado.
1.- Instalación de Jenkins y SonarQube en contenedor Docker
1.1.- Crear el archivo de docker compose y levantar los contenedores.
mkdir -p jenkins/jenkins_home ; cd jenkins
vim docker-compose.yaml
docker-compose up -d
docker ps
Si todo salió bien, en este punto tendremos levantados los dos contenedores
Jenkins : http://192.168.1.13:8080/
Sonarqube : http://192.168.1.13:9000/
2.- Configurar Jenkins para que se integre con Sonarqube.
2.1.- Establecer contraseña e instalación de plugins recomendados.
Ingrear a Jenkins http://192.168.1.13:8080/
La instalación pedirá el ingreso de la contraseña de inicialización ubicada en
cat jenkins_home/secrets/initialAdminPassword
Luego procederá a instalar los plugins recomendados
Una vez terminanda la instalación y configurar el usuario «admin» habremos ingresado.
2.2.- Agregar el Plugin de Sonarqube en Jenkins
Ingresar : Manage Jenkins / Manage Plugins / Available / SonarQube Scanner
Luego verificar que se instaló correctamente y elegir reiniciar Jenkins
2.3.- Agregar la URL del servidor Sonarqube.
Ingresar : Manage Jenkins / Configure System / SonarQube servers / Add SonarQube installations
Name : sonarqube
URL del servidor : http://192.168.1.13:9000/
2.4.- Agregar la versión del scaner para el servidor Sonarqube.
Ingresar : Manage Jenkins / Global tool configuration / Sonarqube Scanner / Add Sonarqube Scanner
Name : sonarqube
Install from maven central : Sonarqube Scanner 4.2.0.18.73
3.- Crear Job para analizar el codigo de la Aplicacion Web.
Nombre : code-inspection-webapp
Tipo : Freestyle project.
Dentro del Jobs indicar el repositorio donde se buscara el código fuente.
Source Code Management
Git / Repository URL : https://github.com/digininja/DVWA
Luego en «Build» agregar «Sonarqube scanner»
Finalmente indicar las propiedad del escaneo en «Analysis properties»
4.- Ejecurar Job para analisis de código fuente con Sonarqube desde Jenkins
Ingresar al Job «code-inspection-webapp» y hacer clic en «Build Now»
Si todo salio bien, en el «console output» del Job nos mostrara que la tarea se ejecuto correctamente.
Si ingresamos el enlace nos llevará a dashboard de Sonarqube donde nos mostrará el reporte del analisis de codigo de la siguiente forma:
Paso siguiente, analizar todas las vulnerabiidades reportadas y bugs en el código por que esta claro que Sonar al ser una herramienta automatizada, nos arrojará una serie de falsos positivos y negativos se serán necesarios de revisar.
Una reflexión final, un Pentester puede aprender muy rápido conceptos de DevOps pero los DevOps pueden aprender rápido conceptos de seguridad, sobre todo ofensiva? Con capacidad de evaluar reportes en SonarQube o Owasp ZAP ? yo creo que si, pero es evidente que todo ello requiere mucha especialización y perfiles adicionales, tener en cuenta que el mismo concepto de DevOps como tal, requería especialización, y ahora hablar de DevSecOps aún mas, debido a que no es solo agregar “herramientas” dentro del CI/CD si no taimen saber como interpretar y corregir los fallos encontrados, de lo contrario no servira para nada.
En el siguiente post vememos como agregar OWASP ZAP el CI/CD
Espero les sirva.
Saludos
@jroliva
Ciberseguridad en tiempos de Coronavirus (Parte 3)
Recomendaciones para todos, Zoom y el acceso a redes empresariales.
En los post anteriores vimos Ciberataques en el mundo luego Ciberataques en Perú para cerrar este tópico aquí veremos una serie de recomendaciones que todos deberíamos considerar hasta recomendaciones mas especificas para entornos empresariales.
1.- Recomendaciones de uso General
- Hacer respaldos de información
- Use una contraseña segura.
- Use contraseñas diferentes para email personal, email corporativos,
redes sociales, etc. - Bloquee manualmente la pantalla o configurar la pantalla.
- del dispositivo para que se bloquee automáticamente al alejarse o al dejar de usarlo.
- Instalar las últimas actualizaciones de software y aplicaciones todos los dispositivos, Celulares, Tablets, PC, Laptop.
- Uso de software antivirus / anti malware comercial y licenciado.
- Verificar correos electrónicos, SMS o mensajes de redes sociales, si son de contactos conocidos.
- No hacer clic en direcciones de internet sin estar 100% seguro.
- No abrir archivos adjuntos si no esta 100% de su origen.
Aquí un estudio reciente donde se muestra las contraseñas mas comunes encontradas durante análisis de vulnerabilidades a nivel global :
Fuente : Raconteur: https://www.linkedin.com/posts/edgescan_raconteur-cybersecurity-report-activity-6648188015975899136-on2J/
2.- Recomendaciones para Zoom.
Como todos sabemos las plataformas de vídeo conferencia se han intensificados y Zoom se ha vuelto una de las principales, como si bien es cierto a la fecha de este post Zoom ha publicado una nueva versión con muchas mejoras de seguridad ademas de comprar una empresa de ciberseguridad para mejorar el cifrado de las comunicaciones los ciberdelincuentes siguen encontrando problemas de seguridad.
Basado en ello, aquí algunas recomendaciones para «mejorar» la seguridad en las conferencias.
- Agregar una contraseña de reunión.
- Establecer el uso compartido de pantalla en «solo host».
- Deshabilitar transferencia de archivos.
- Deshabilitar «unirse antes del host».
- Deshabilite «Permitir que los participantes eliminados vuelvan a unirse» Habilitar la sala de espera.
- No hacer clic en enlaces sospechosos o aceptar archivos en la sala de chat.
3.- Habilitar autenticación multifactor (2FA)
Adicionar un mecanismo para autentificar el acceso es altamente recomendable, teniendo en cuenta que tarde o temprano la contraseña termina siendo guarda en un archivo de texto ( algo que sabes) y puede ser robada fácilmente, contar con una contraseña dinámica (algo que tienes) es decir que cambia cada momento o es enviado por sms es sumantante importante.
Algunos servicios donde se puede activar :
- Correo electrónico personal, los printicales servicios de email como gmail, outlook, hotmail lo soportan.
- Correo electrónico corporativo ( si esto lo soporta).
- Redes Sociales : Facebook por ejemplo.
- Conexiones VPN (Acceso remoto a la red corporativa).
- Inicio de sesión en computadoras corporativas.
Aquí un ejemplo de como activarlo para Facebook :
Fuente : https://www.facebook.com/notes/facebook-security/two-factor-authentication-for-facebook-now-easier-to-set-up/10155341377090766/?comment_id=10156264397591886
4.- Acceso a redes empresariales
Debido al teletrabajo ha hecho que muchas empresas textualmente «corran» para implementar soluciones que permitan a sus empleados trabajar desde casa, sin embargo se estan perdiendo de vista ciertas cosas que exponemos a continuación.
4.1.- Acceso cifrado a la red empresarial
sea cual sea la solución para ingresar a la red empresarial, esta debe ser cifrada, como por ejemplo el uso de «servicio de escritorio remoto» o RDP en su configuración por defecto hace uso de cifrado, así mismo cuenta con vulnerabilidades como BlueKeep.
4.2.- Permitir el acceso solo a dispositivos de trabajo
Hoy todos están conectados desde casa, pero se esta viendo que el mismo computador/Laptop que venia siendo usado para el hogar, también esta siendo usado para conectarse a la red empresarial, por tanto si ese computador se encuentra comprometido de algun tipo de virus, también esta comprometiendo la red empresaria.
4.3.- Uso de software VPN sin vulnerabilidades.
Ningún software en ningun sistema operativo se «salva» de tener vulnerabilidaes, es importante que a la hora de implementar los servidores VPN el software a usar siempre sea la ultima version y este libre de vulnerabilidades, al menos en ese momento. Por ejemplo este es el reporte de vulnerabilidades OPENVPN a la fecha, el cual es uno de los software mas usados para implementar este tipo de acceso.
4.4.- Uso de protocolos seguros en VPN
Muchas implementaciones de Servidor VPN no tienen en cuenta que de nada sirve los accesos remotos sin hacer uso de un protocolo que brinde el correcto cifrado en la comunicación, es asi que hacer uso de PPTP sobre SSL o L2TP/IPsec SSTP y IKEv2/IPsec. solo por citar algunos es muy importante.
4.5.- De ser posible uso de 2FA.
Adicionar un mecanismo para autentificar el acceso es altamente recomendable, teniendo en cuenta que una contraseña normalmente se copia fisicamente en algún lado ( algo que sabes) contar con una contraseña dinámica es decir que cambia cada momento o es enviado por sms (algo que tienes) es importante.
A continuación una lista de soluciones basadas en software libre enfocadas a controles de seguridad.
Fuente : http://www.eventid.net/docs/open_source_security_controls.asp
5.- Evaluación de aplicaciones Web y visibilidad en la red empresarial
- Análisis de vulnerabilidades de Aplicaciones web y móviles.
- Revisión de visibilidad del perímetro de la red, ejemplo servicios expuestos.
- Actualización de software en servicios.
- Tratar de no usar servicios que no cifren la comunicación, ejemplo Telnet, FTP, RDP por defecto.
Un estudio de la empresa Edgescan revela las vulnerabilidades mas comunes en evaluaciones sin credenciales sobre sistemas expuestos por internet.
Fuente : https://cdn2.hubspot.net/hubfs/4118561/BCC030%20Vulnerability%20Stats%20Report%20(2020)_WEB.pdf
43% en vulnerabilidades en criptografia, implementaciones de servidor, clientes y APIs/Endpoints en el uso de algoritmos debiles.
20% en Aplicaciones Web, vulnerabilidades que comprometen la seguridad en Aplicaciones web, como XSS, CSRF, SQLI,etc.
15% Relacionado a falta de parches de seguridad, en diversas implementaciones como Apache, Cisco, Citrix, Vmware,etc.
Espero les sirva.
@jroliva
Ciberseguridad en tiempos de Coronavirus (Parte 2)
En el post anterior revisamos algunos de los Ciberataques a nivel global, pero esta claro que en el Perú los Ciberatacantes están mas activos que nunca, de hecho un articulo emitido por el Organismo Técnico de la Administración de los Servicios de Saneamiento – OTASS en Perú se han registrado mas de 433 millones de intentos de Ciberataques. El articulo completo lo pueden encontrar aquí
Pero de que forma están atacando en Perú ?
A) Correos Electrónicos engañosos (Phishing)
Esta es la forma clásica, mas antigua y sencilla de realizar valga las verdades, según el diario Gestión de Perú el envío de emails con información engañosa en Perú aumento un 25% en cuarentena y se espera aumento mediante campanas de phishing bastante elaboradas a ciertos públicos objetivos.
B) Mensajes de texto SMS engañosos (SMS Phishing)
Esta forma de envío ha crecido significativamente también, enviando direcciones de internet o URL haciendo pasar por alguna entidad bancaria o empresa, esto es porque aprovechan que las personas hacen clic en los enlaces y no verifican si la dirección de internet es verdadera desde los teléfonos celulares o dispositivos móviles, de esta forma recogen no solo información bancaria si no también información personal que puede ser usada luego en ataques mas focalizados, aquí unos ejemplos:
Es necesario verificar, verificar, verificar mediante los siguientes pasos como se muestra a continuación :
C) Publicidad engañosa en redes sociales.
Como se podría esperar las redes sociales no están ajenas a este tipo de engaño , campañas donde que aprovechan la coyuntura también están a la orden del día siendo focalizadas en las que se leen desde dispositivos móviles (celulares) donde no es usual verificar si son paginas web o direcciones de internet validas.
Es altamente necesario verificar siempre las direcciones de internet como en este caso :
Conclusiones
Es evidente que los medios de banca digital y comercio electrónico sean convertido en estos tiempos de cuarentena y aislamiento social en un medio vital y no es la intensión de esta nota indicar que son malos y no se tienen que usar, todo lo contrario, el uso de estos medios representa un nuevo desafío para todos, en usar de manera correcta estas tecnologías y no caer en engaños como los que se han mostrado. Es así que así como el CODIV-19 nos toca ser muy precavidos para no caer en las redes de los ciberdelincuentes.
En el siguiente post veremos justamente recomendaciones a tener en cuenta para generar protección ante estos evento.
Ciberseguridad en tiempos de Coronavirus (Parte 1)
Para los que me conocen, saben que mi tipo de charla es normalmente técnicas y especializadas, sin embargo hace poco invitaron a brindar una charla denominada Ciberseguridad en tiempos de Coronavirus para el Instituto en el cual soy docente a tiempo parcial, me pidieron que prepare la charla para todo publico, respecto a la problemática actual, entonces se me ocurrió que basado en la charla, realizar este conjunto de publicaciones que de ante mano, espero sea de utilidad para todos, la misma estará dividida en las siguientes partes :
Parte 1 .- Ciberataques en el Mundo.
Parte 2 .- Ciberataques en Perú.
Parte 3.- Recomendaciones , generales y para todos y en el uso de Zoom y para el acceso a redes empresariales.
COVID-19 ha detenido el mundo, los Ciberataques se detuvieron?
Pues la respuesta es NO, de hecho han aumentado, por varios factores, entre ellos, el distanciamiento social y los estados de cuarentena en varios países, representan una gran oportunidad para los ciberdelincuentes, para desarrollar diversos tipos de “engaños” como los que veremos a continuación :
Ataques hacia Organizaciones.
Un ejemplo de ello es el que sufrió la misma Organización Mundial de la Salud (OMS) que enviaron correos electrónicos falsos a los empleados de esta organización, para comprometer o hackear sus equipos de computo, con el objetivo de robar información interna para luego ser comercializada al mejor postor seguramente.
Fuente : https://www.elconfidencial.com/tecnologia/2020-03-23/hackers-oms-salud-coronavirus_2514168/
Ataques hacia plataformas de vídeo conferencias.
Basado en el contexto, en donde se ha tenido que migrar hacia el aprendizaje a distancia, trabajo desde casa y demás usos, el que se ha llevado todos los premios en tener alertas de seguridad es Zoom, esto sin lugar a dudas es por que se convertido en la aplicación mas usada para este fin.
Es por ello, que era casi predecible, que iban a aparecer diversos tipos de “pruebas” de seguridad, recuerden los ciberdelincuentes buscan siempre en lugares/sitios/plataforma de uso masivo. Para aprovechar justamente las debilidades de seguridad, que se el caso de Zoom se encontraron en su momento, a tal punto que el mismo FBI y GOOGLE han recomendado no usarlo.
Cabe señalar que Zoom ha hecho grandes esfuerzos para corregir los problemas de seguridad, su CEO ha salido a dar la cara en varias oportunidades, indicando que están trabajando para corregir estos problemas, ya que son cocientes de la gran responsabilidad que tienen en esta pandemia, al convertirse la principal herramienta de comunicación en estos tiempos, sin embargo ya se pueden apreciar las consecuencias que dejaron estos problemas.
Recientemente, se difundido noticias que ya se comercializan usuarios y contraseñas en la red oscura.
Fuente : https://gbhackers.com/zoom-compromised-credentials/
El el siguiente articulo veremos recomendaciones para mejorar la seguridad en esta popular plataforma.
Malware Bancario que deja abajo servicios en la nube.
Emotet un malware especializado en robar cuentas bancarias tuvo un efecto muy particular en una red de Microsoft, ya que a raíz de que un usuario abrió un correo electrónico con ese malware, causo el sobre calentamiento de CPU de los servidores y consumo excesivo de ancho de banca produciendo in disponibilidad en los servicios de una de las redes de Microsoft Azure.
Fuente : https://computerhoy.com/noticias/tecnologia/malware-emotet-615999
El correo electrónico como transportador del virus.
Virus informático, puntualizando. Los ataques haciendo uso de correos electrónicos son un clásico desde la aparición de internet, a tal punto que en esta época de COVID-19 se han incrementado como hemos visto, así que vale la pena mencionar la siguiente diferenciación.
Phishing, ataque tradicional, haciendo la analogía mas certera, es como cuando un pescador lanza su red para ver cuantos peces puede capturar.
Spear-Phishing, es un envío de correos electrónicos muy focalizado en un individuo en especial o en un grupo es especial como el caso de la OMS, en este caso el Ciberdelincuente se esmera en crear normalmente un escenario de estafa para que los usuarios.
En la segunda parte veremos ataques focalizados en Perú.
Instalación de Cluster de Kubernetes con Vagrant
Como parte de las labores de despliegue de software, la automatizar los procesos de infraestructura como código, es vital, para las actividades de Pentesting / Ethical Hacking tener construir tus entornos y escenarios locales de prueba sirve infinitamente para poder realizar tus P.O.C.
Es así que aquí va el procedimiento para automatizar la instalacion de un Cluster de Kubernetes usando Vagrant en Centos 7, este es el Escenario.
Ubuntu 16.04.6 LTS
Vagrant 2.2.3
Este es Vagantfile
###########################################
# -*- mode: ruby -*-
# vi: set ft=ruby :
VAGRANTFILE_API_VERSION = «2»
##Variables de configuracion ###
INTERFASE_BRIDGE = «wlps01»
DIRECCION_IP_BRIDGE = «192.168.1.151»
MASCARA_RED = «255.255.255.0»
PUERTA_ENLACE = «192.168.1.1»
##Configuracion de la VM master
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = «centos/7»
config.disksize.size = ’50GB’
config.vm.network «public_network», bridge: INTERFASE_BRIDGE, ip: DIRECCION_IP_BRIDGE, netmask: MASCARA_RED, gateway: PUERTA_ENLACE
config.vm.hostname = «k8s-master»
config.vm.provider «virtualbox» do |v|
v.name = «k8s-master»
v.memory = 2048
v.cpus = 2
end
##Insertar llave SSH
config.ssh.insert_key = false
config.ssh.private_key_path = [‘~/.vagrant.d/insecure_private_key’, ‘~/.ssh/id_rsa’]
config.vm.provision «file», source: «~/.ssh/id_rsa.pub», destination: «~/.ssh/authorized_keys»
##Configuracion de SSH, SELINUX, IPTABLES, SWAP, FIREWALLD
config.vm.provision «shell», inline: <<-EOC
sudo sed -i -e «\\#PasswordAuthentication yes# s#PasswordAuthentication yes#PasswordAuthentication no#g» /etc/ssh/sshd_config
sudo sed -i -e «\\#PermitRootLogin prohibit-password# s#PermitRootLogin prohibit-password#PermitRootLogin yes#g» /etc/ssh/sshd_config
sudo sed -i -e «\\#SELINUX=enforcing# s#SELINUX=enforcing#SELINUX=disabled#g» /etc/selinux/config
sudo systemctl restart sshd.service
sudo setenforce 0
sudo modprobe br_netfilter
sudo echo ‘1’ > /proc/sys/net/bridge/bridge-nf-call-iptables
sudo sed -i ‘/swap/d’ /etc/fstab
sudo swapoff -a
sudo systemctl stop firewalld
sudo systemctl mask firewalld
echo «Instalacion de Docker»
sudo yum -y install vim yum-utils net-tools
sudo yum -y install epel-release
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager –add-repo=https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce
echo «Instalacion de Kubernetes»
sudo yum-config-manager –add-repo=http://www.silcom.com.pe/soft/kubernetes.repo
sudo yum-config-manager –enable Kubernetes
sudo yum install -y kubelet kubeadm kubectl
echo «Fin de Instalacion»
EOC
##Reinicio de la VM
config.vm.provision :reload
##Configuracion e inicio de servicio docker y kunernestes
config.vm.provision «shell», env: {«VARIP» => «192.168.1.151»}, inline: <<-EOC
sudo sed -i ‘1i $VARIP k8s-master k8s-master’ /etc/hosts
sudo systemctl start docker && systemctl enable docker
sudo systemctl start kubelet && systemctl enable kubelet
sudo sed -i ‘s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g’ /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
sudo systemctl daemon-reload
sudo systemctl restart kubelet
echo «Inicializacion de Cluster»
sudo kubeadm init –apiserver-advertise-address=$VARIP –pod-network-cidr=10.244.0.0/16
sudo mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
echo «Fin de Inicializacion de Cluster»
echo «Desplegar el pod network»
sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
echo «Pod network creado»
echo «FIN»
EOC
#Fin SSH
end
##############################################################3
Finalmente este es el video donde se muestra el despliegue :
Espero les sirva.
Saludos
@jroliva
búsqueda de vulnerabilidades mediante análisis de código fuente estático
Luego de terminar el año a full, regresar de unas pequeñas vacaciones me pongo al día con el blog ya que lo he tenido un poco descuidado. Como parte de las actividades en los proyectos de Ethical Hacking se tienen requerimientos para buscar vulnerabilidades en el código fuente de manera estática, es decir sin que la aplicación evaluada este ejecutándose, para realizar ello nos podemos ayudar en ciertas herramientas que pueden AYUDAR en realizar esto, y resalto AYUDAR por que ninguna herramienta va hacer el trabajo al 100% , siempre va ser necesario realizar un análisis posterior de los casos.
En este caso, vamos a aprender a instalar , configurar y usar Sonarqube es una herramienta que me a ayudado mucho en estas labores, este procedimiento se puede aplicar en Ubuntu 18.04.1 u otro derivado.
1.- Instalar java
sudo apt install openjdk-8-jdk openjdk-8-jre
2.- Crear directorio
mkdir sonarqube
2. -Descargar Sonarqube
Para ello es necesario ingresar a la pagina : https://www.sonarqube.org/downloads/
También es necesario descargar el escaner de : https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner
Al descomprimir los archivos tendremos lo siguiente :
3.- Luego descargaremos un proyecto opensource como DVWA para analizarlo
Para esto descargaremos un viejo conocido como DVWA
4.- Ahora vamos a configurar el escaner
– Crear una carpeta «main» en la ruta sonar-scanner-3.2.0.1227-linux/bin
cd sonar-scanner-3.2.0.1227-linux/bin
mkdir main
– luego dentro de la carpeta «main» vamos a mover y descomprimir la carpeta de la aplicacion a analizar
mv DVWA-master.zip sonar-scanner-3.2.0.1227-linux/bin/main/
cd sonar-scanner-3.2.0.1227-linux/bin/main/
unzip DVWA-master.zip
– Ahora crear un archivo «sonar-project.properties» indicando la aplicación a evaluar de la siguiente forma
cd sonar-scanner-3.2.0.1227-linux/bin
vim sonar-project.properties
5.- Finalmente iniciamos el panel de sonar y luego escaner para iniciar el análisis
– Iniciar sonar
cd sonarqube/sonarqube-6.7.5/bin/linux-x86-64
./sonar.sh start
Sonar iniciara en el puerto 9000 del localhost de la siguiente forma
– Ahora iniciar el escaner
cd sonarqube/sonar-scanner-3.2.0.1227-linux/bin
./sonar-scanner
Como vemos el análisis del de las paginas se realizo correctamente.
6.- Análisis de resultados
Luego de que el escáner termine el análisis en el panel de sonar aparecerá un nuevo proyecto de la siguiente forma
Como vemos ahora tenemos un proyecto analizado, al ingresar veremos que tenemos catalogadas los bugs, vulnerabilidades, entre otros resultados.
Al ingresar a las vulnerabilidades, tendremos un listado de las mismas.
El siguiente paso es analizar cada una de las vulnerabilidades reportadas en el código para identificar la importancia de las mismas, su importancia en el modelo de negocio y por su puesto como poder corregirlas.
Espero que les sirva.
Saludos
Juan Oliva
Mikrotik Winbox server vulnerability
Hace unos meses recibía llamadas de algunos clientes preocupados debido a que sus empresas proveedoras de servicios de internet y de Voz los llamaban advirtiéndoles que sus equipos Mikrotik fueron comprometidos y que era necesario que revisen sus redes internas ante algún comportamiento «raro».
Así fue como comenzó todo, luego googleando un poco se encontraban muchas notificas referentes a que millones de estos routers fueron comprometidos para ser usados en campanas de «cryptojacking» es decir usaban los equipo para minar crytomendas, sin embargo como siempre todo fue la punta del iceberg.
Buscando el vector del ataque se reportaba que descubrió que servicio Winbox cuenta con una vulnerabilidad que permite a eludir la autenticación y leer archivos al modificar una solicitud para cambiar un byte relacionado con una ID de sesión, lo cual suena a mas de los mismo, fallas en el control de recepción de variables en determinados servicios, el cual fue catalogado como CVE-2018-14847
Valga las verdades el fabricante reporto la vulnerabilidad a fines de marzo de 2018 sin embargo siempre existe un tiempo en que los atacantes elaboran los programas para sacarle provecho a este tipo de vulnerabilidad y por supuesto nadie actualiza 😀 es por ello recién a mediados de agosto se desato el caos en las implementaciones que usaban esto equipos con la aparición de los exploits.
Para los que me conocen saben que Mikrotik no es de mis equipos preferidos, esto es debido a que lo venden como «Firewall de perímetro» es decir proteger a una red empresarial, cuando el equipo no es mas que un router, sabiendo que hoy para proteger una empresa necesita mas que abrir o cerrar puertos o un proxy básico en su mínima expresión como es el que maneja el RouterOS, sin embargo es evidente que el factor costo es importante comparado con equipos UTM, sumado al desconocimiento de los clientes ante integradores oportunistas.
Entonces sin mas, les comparto el procedimiento y el vídeo para hacer el P.O.C. de esta vulnerabilidad sobre Kali Linux
Espero les sirva!!
Saludos
Juan Oliva
SWIFT SWIFTNet Hacking en Redes Bancarias
Luego de ver la noticia del hackeo del banco de chile, lean la publicación de la nota de Cesar Farro que lo detalla desde su perspectiva externa, me animé a escribir algo referente a ello, ya que es casi un año que vengo involucrado en realizar análisis de seguridad y vulnerabilidades a redes SWIFT justamente.
Como detrás de este tipos de servicios existen NDA vigentes, voy a ser bastante pragmático al respecto, emitiendo lineamientos que desde mi punto de vista personal, y que tendrían que ser de sentido común para este tipo de redes y al final conclusiones al respecto.
Al grano, normalmente siempre se tiene la perspectiva por fuera y no necesariamente por dentro, ya que como se entenderá son arquitecturas muy cerradas y no en lo tecnológico necesariamente ( si no pregunten el al banco de Chile 😀 ) digo esto por que al final terminamos hablando de los mismos componentes de siempre, como sistema operativos Windows, Unix, estaciones de trabajo, aplicaciones web, bases de datos, es decir nada que en una red empresarial deja de tener, empecemos desmenuzando la idea.
1.- QUE ES SWIFT ?
De pronto lo que uno mas conoce es el famoso código SWIFT para realizar transferencias internacionales, detrás de ello esta la “Society for Woldwide Interbank Financial” la cual provee hardware/software que articula mediante programas y regulaciones en general toda esta actividad a la cual están afectas las entidades bancarias.
Dentro de los lineamientos se establecen arquitecturas de uso que pueden tener las entidad bancarias que se detallan a continuación :
Arquitectura A1 Full Stack
La interfaz de mensajería como la de comunicación están dentro del entorno del usuario. Este tipo de arquitectura también incluye soluciones alojadas donde el usuario tiene las licencias para la interfaz de mensajería y la interfaz de comunicación.
Arquitectura A2 Partial Stack
La interfaz de mensajería está dentro del entorno del usuario, pero un proveedor de servicios (para ejemplo, una agencia de servicios, SWIFT Alliance Remote Gateway o un centro de grupo) es licencia y administra la interfaz de comunicación. Arquitectura A3 – Connector
La aplicación de software (por ejemplo, Alliance Lite2 AutoClient, soluciones de transferencia de archivos) es utilizado en el entorno del usuario para facilitar la comunicación de aplicación a aplicación con una interfaz en un proveedor de servicios. Arquitectura B – No local user footprint
No se utiliza ningún componente de infraestructura específico de SWIFT dentro del entorno del usuario.
Fuente : https://www.accesspay.com/wp-content/uploads/2017/09/SWIFT_Customer_Security_Controls_Framework.pdf
2.- LOS CONTROLES
Dentro de las regulaciones a nivel de gestión de SWIFT solicita y obliga a cumplir los 27 controles ( obligatorios y recomendados) los mismos que están indicados en el “SWIFT Customer Security Controls Framework” al cual se puede acceder públicamente y además los empleados cursos como por ejemplo el “Customer security programme” entre otros.
Un detalle que se puede identificar en este contexto, es que las entidades tienen que cumplir todos los controles y no solo los obligatorios ya que el común es pensar con eso ya están aprobando, cuando es todo lo contrario.
Sobre el cumplimiento de los controles, desde mi punto de vista, si bien es cierto en general la especificación de los controles es buena, sin embargo también muchos de los controles son muy ambiguos y poco precisos.
Basado en ello, un auditor/empleado que solo conoce la parte de gestión, puede interpretar de manera muy ligera los mismos, por ejemplo hacer cumplir un control determinado con solo con un procedimiento general, por el contrario alguien que maneja de parte de ingeniería/técnica la va interpretar de manera mas puntual, por ejemplo con una captura de pantalla del sistema o componente técnico, donde se muestra que se hace efectivo el control.
Para finalizar este punto indicar que la red SWIFT de la entidad va ser tan antigua como la misma lo permita en funcion a lo de siempre, no actualizar su arquitectura.
3- Evaluaciones de Cyberseguridad
Dentro de los controles de SWIFT se exige que es necesario hacer una evaluación de Ciberseguridad / Ethical Hacking a todos los componentes que involucran la arquitectura SWIFT. Por otro lado también a nivel de regulador bancario en el caso del Perú por ejemplo es la SBC que también lo exige, entonces tienen por lo menos dos servicios que tienen que ejecutar en diferentes ámbitos.
En ese sentido, es clave definir bien los activos a evaluar, sistemas involucrados, las actividades contempladas y horarios de ejecución, es decir es necesario definir bien el alcance, de lo contrario como en otros ámbitos, este punto solo será un puro formalismo a cumplir en el informe como desarrollar un escaneo o un análisis de vulnerabilidades automatizado que pasa a los informes.
4.- CONCLUSIONES Y RECOMENDACIONES
– Contar con la zona segura exclusiva/aislada de todo y textualmente de TODO sin ningún tipo de enlace hacia la red empresarial y hacia internet, esto es fundamental pero es muy difícil sobre todo por temas en primera instancia de flexibilidad, recordar el viejo dicho “mientras mas mas seguro menos flexible” y por otro lado de presupuesto, ya que estamos hablando para comenzar de tener toda la parte de switching, firewall, controladores de dominio y demás dispositivos de la arquitectura, exclusivos para la red SWIFT totalmente separado y con una función única.
– PC de operador de uso exclusivo, es decir solo para uso de SWIFT, evitar uso de servidores de salto, maquinas virtuales, citrix, escritorios remotos y demás elementos, como sabemos la mayor brecha de seguridad la producen los usuarios finales e inevitablemente se tiene que usar Windows (ojo aquí con las actualizaciones de seguridad), es recomendable primero que las PC de operador que acceden a los aplicativos SWIFT sean de uso exclusivo para ello y estén dentro de la zona segura , evidentemente siguiendo estándares de aseguramiento muy rígidos (Que normalmente no lo aplican no solo a nivel del sistema operativo, si no a nivel físico, ejemplo, contraseña de bios, desactivar USB, no tener software innecesario, no tener salida a internet entre otras.
– Uso de doble factor de autenticación, uso de tokens RSA para no solo autenticar hacia las aplicaciones, si no también a nivel de sistema operativo de los PC operador, reduce la brecha de riesgo.
– Servidores de producción SWIFT , Desde mi punto de vista usar servidores Windows para los servidores de producción y respaldo que exige SWIFT, es un error, cuando es sabido que Solaris/Unix ofrecen una menor brecha de seguridad en cuanto a vulnerabilidades reportadas.
– Software de Mensajería SWIFT y arquitectura general SWIFT va ser tan actualizada o no, como la entidad bancaria lo decida, SWIFT provee actualizaciones bastante constantes por ejemplo para el software de mensajería, mediante boletines y es labor de los responsables estar capacitados para realizar ello.
Finalmente basado en lo que he visto la mayor brecha de seguridad esta en no tener una red segura, usuarios operadores con estaciones Windows multiproposito y el y uso Windows en los servidores de mensajería.
Espero les sirva.
Saludos
Juan Oliva