Install Kubernetes Goat (ES)

En estos dos ultimos años estoy muy involucrado en proyectos revisando intraestructuras basadas en contenedores Docker y Kubernetes, en esta busqueda encontré con este genial proyecto que facilita el aprendizaje de vulnerabilidades en Kubernetes.
Kubernetes Goat está diseñado para ser un entorno de clúster intencionalmente vulnerable para aprender y practicar la seguridad de Kubernetes. Es un proyecto creado por Madhu Akula.
En este articulo, veremos como realizar la instalación sobre un equipo con Ubuntu 20.04 y VirtualBox. Kubernetes Goat necesita una instalación previa de Minikube el cual facilita tener un cluster local de Kubernetes.
A.- Instalar Minikube
1.- Descarga de Minikube
Podemos descargar la última versión o una versión específica de la página de versiones de Minikube. Una vez descargado, necesitamos hacerlo ejecutable y agregarlo a nuestra RUTA:
$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
2.- Iniciar Minikube
Podemos iniciar Minikube con el comando de inicio de minikube, que inicia un clúster de un solo nodo con la última versión estable de Kubernetes.
$ minikube start

3.- Comprobar el estado
Con el comando de estado de minikube, mostramos el estado de Minikube:
$ minikube status

B.- Instalar Kubernetes Goat
1.- Descargar el proyecto
# git clone https://github.com/madhuakula/kubernetes-goat.git
# cd kubernetes-goat/
2.- Configurar la cuenta helm2 rbac e inicializar tiller
# kubectl apply -f scenarios/helm2-rbac/setup.yaml
# helm2 init –service-account tiller

3.- Desplegar Helm chart para verificar la configuración ,
implementación del escenario helm chart metadata-db
# helm2 install –name metadata-db scenarios/metadata-db/

4.- Desplegar los manifiestos de escenarios vulnerables
# kubectl apply -f scenarios/batch-check/job.yaml
# kubectl apply -f scenarios/build-code/deployment.yaml
# kubectl apply -f scenarios/cache-store/deployment.yaml
# kubectl apply -f scenarios/health-check/deployment.yaml
# kubectl apply -f scenarios/hunger-check/deployment.yaml
# kubectl apply -f scenarios/kubernetes-goat-home/deployment.yaml
# kubectl apply -f scenarios/poor-registry/deployment.yaml
# kubectl apply -f scenarios/system-monitor/deployment.yaml
# kubectl apply -f scenarios/hidden-in-layers/deployment.yaml

5.- Crear el forwardeo de puertos en los PODS para permitir el acceso local.
# bash access-kubernetes-goat.sh

6.- Igresar a Kubernetes Goat
Si todo salio bien , ahora podremos ingresar a la aplicación de la siguiente forma:
Ingresar a : http://127.0.0.1:1234/

Finalmente, Si desean practicar los escenarios pueden revizarlos aqui : https://madhuakula.com/kubernetes-goat/index.html
Espero les siva
Pre-Commit Hooks con Talisman[DevSecOps]
Luego de unas semanas de receso obligatorio por que me infecte del COVID mas feo de este mundo, casi no la cuento, pero ya estoy bien!! no se preocupen 😀 , haciendo lo que mas gusta 😀
Es asi que retomamamos el tema de #DevSecOps, El integración continua de código (CI) hace que muchas veces se tengan almacenadas de forma equivocada información confidencial, como claves de acceso, tokens de acceso, claves SSH, entre otros elementos que aveces son necesarios almacenar localmente para luego subir al repositorio.
Talisman es una herramienta que instala un enlace al local y cuando trabajemos con GIT/GITLAB etc,etc. para garantizar que estos elementos llamados «secretos» o la información confidencial no salgan de la estación de trabajo del desarrollador al realizar los comits.
1.- Configuracion de Repositorio GIT
Vamos a configurar un reporsitorio llamado «prueba1»
- Crear llave
# ssh-keygen
# cat ~/.ssh/id_rsa.pub

- Agregar SSH KEYS en GITGUB (de su cuenta)
https://github.com/settings/keys
- Crear nuevo repositorio
https://github.com/new
- Creo un reporsitorio «prueba1»
prueba1 / como privado.

- Descargar un proyecto de prueba, vamos a elegir DVWA
# git clone https://github.com/digininja/DVWA.git
- Ahora configurar finalmente el repositorio local con el repositorio remoto en GITBUB
git init
git add .
git config –global user.email «tuemail@gmail.com»
git config –global user.name «tuuser»
git commit -m «first commit»
git branch -M master
git remote add origin git@github.com:jrolivaeh/prueba1.git
git push -u origin master

Hasta aqui tenemos nuestro repositorio local enlazado con nuestro repositorio remoto en GIT.
2.- Instalación de Talisman en Centos 7
# yum install perl-Digest-SHA git
# curl https://raw.githubusercontent.com/thoughtworks/talisman/master/global_install_scripts/install.bash > ~/install-talisman.sh
# chmod +x ~/install-talisman.sh
# ~/install-talisman.sh
Definir donde se configuraran las variables de entorno , la definimos en el ~/.bashrc

Definimos el modo interactivo haciendo uso del archivo .talismanrc para manejo de excepciones.

Finalmente se define la ubicacion de los repositorios, en este caso de «demo» estamos trabajando en /root/DVWA/ de la VM

3.- Probando Talisman dentro del CI.
Ahora agregamos unos «secretos» que no deberian subirse el repositorio.
# vim secretos
aws_access_key_id = 2367921901012
aws_secret_access_key = vKbptOYlkDFMI/L9NEIMP/bIsEkoQWEJEMKEY
aws_session_token = BWlEJEMPLOK9fgGH0pMPAPuRqw5MoERRpQWE98YUfg5PasR+FvwqnKwRcOIfrRh3c
Finalmente agregaremos el archivo a la rama y finalmente haremos un commit
# git add secretos
# git commit -m «Agregando secretos»

Como vemos Talisman detecto los «secretos» y nos manda una advertencia y alertas.
4.- Agregando excepciones en Talisman.
Si necesitamos crear una excepción por ejemplo de lo que se ha detectado, tenemos que agregar un archivo .talismanrc en el directorio root del proyecto como se muestra a continuación.

cd /root/DVWA
vim .talismanrc
fileignoreconfig:
- filename: secretos
checksum: 2502eb040033bd44080fb385ae8b794b808f25542e1e9075d5ed65d4a976c014
Ahora nuevamente mandamos el «comit» y veremos que Talisman aceptara la escepcion.

Espero les sirva, esperemos seguir escribiendo sobre #DevSecOps
Este post va para todos mis amigos que me brindaron apoyo incondicional en superar el virus, Muchas gracias!!
Saludos
@Juan Oliva
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
Estadísticas de llamadas de Asterisk con Grafana. ( Asterisk + Zabbix + Grafana)
Es increible como Docker ha cambiado todo, sobre todo la forma como ha reducido los tiempos de configuracion y despliegue en las instalaciones, a continuacion veremos como desplegar una arquitectura de monitoreo grafico con Grafana para las troncales SIP de Asterisk. para ello usaremos como intermediario a Zabbix que nos ayudara a extraer los datos de Asterisk con ayuda de Algunos scripts personalizados.
El Entorno
Maquinas virtuales con Centos 7
01 Maquina virtual de Asterisk / IP 192.168.0.252
01 Maquina virtual para Zabbix y Grafana / IP 192.168.0.251
El Escenario de trabajo.
1.- Instalacion Docker y Docker Compose
yum install -y yum-utils device-mapper-persistent-data lvm2 nano vim net-tools
yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce -y
systemctl enable –now docker
docker –version
docker-compose –version
2.- Instalacion de Zabbix en contenedor Docker.
yum install -y git
git clone https://github.com/zabbix/zabbix-docker.git
cd zabbix-docker/
git checkout 5.2
/usr/local/bin/docker-compose -f docker-compose_v3_alpine_mysql_latest.yaml up -d
Luego ingresar a Zabbix : http://192.168.0.251
3.- Instalacion de Grafana en contenedor Docker
3.1.- Crear el archivo para crear el contenedor de Grafana.
mkdir grafana ; cd grafana
nano docker-compose.yml
# docker-compose.yml
version: ‘2’
#Define volumes variables
volumes:
grafana_data: {}
#Define services
services:
grafana:
image: grafana/grafana
volumes:
– grafana_data:/root/grafana:rw
environment:
– GF_SECURITY_ADMIN_PASSWORD=admin
ports:
– «3000:3000»
3.2.- Iniciar el contenedor.
docker-compose up -d
3.3.- Instalar el plug-in de Zabbix en el contenedor de Grafana.
docker exec -it grafana_grafana_1 bash
grafana-cli plugins install alexanderzobnin-zabbix-app
exit
Finalmente reiniciar el contenedor.
docker restart grafana_grafana_1
Finalmente ingresar a Grafana y activar el Plug-in de Zabbix :
4.- Integrar Asterisk con Zabbix
4.1.- Dialplan de Asterisk.
Ahora que tenemos todo el entorno, es necesario empezar a integrar todos los componentes lo primero es necesario trabajar en el servidor Asterisk, para conseguir las llamadas totales y simultaneas de una troncal SIP. para este ejemplo la troncal que vamos a monitorear y posteriormente generar graficas es la troncal SIP 7973430 la cual ingresa por el contexto trunkinbound
En el extensions.conf vamos a modificar
####################################
[trunkinbound]
exten=>_7973430,1,Set(GROUP(trunkinbound)=7973430)
same => n,Set(COUNT=${GROUP_COUNT(7973430@trunkinbound)})
same => n,NoOp(Hay ${COUNT} llamadas simultaneas en la trocal 7973430.)
same => n,System(/bin/echo ${COUNT} > /etc/asterisk/trunksip-7973430-llamadas-simultaneas.txt)
same => n,System(/bin/bash /etc/asterisk/trunksip-7973430-prog-llamadas-totales.sh)
same => n,Playback(demo-congrats)
##################################
Esto lo que va hacer es :
- Guardar las llamadas simultaneas en la variable ${COUNT} y luego la guardara en el archivo trunksip-7973430-llamadas-simultaneas.txt
- Luego para el conteo de las llamadas totales de la troncal va ejecurar el script en bash trunksip-7973430-prog-llamadas-totales.sh
4.2.- Crear scripts.
Script para guardar llamadas totales
vim trunksip-7973430-prog-llamadas-totales.sh
#!/bin/bash
while read linea; do
declare -i linea
linea=$((linea + 1))
echo -e «Línea: $linea»
echo $linea > /etc/asterisk/trunksip-7973430-llamadas-totales.txt
done < /etc/asterisk/trunksip-7973430-llamadas-totales.txt
El script lo que hace es leer la linea actual , declararlo como integer , sumar 1 al a la variable $linea , finalmente agregarlo al archivo trunksip-7973430-llamadas-totales.txt
4.3.- Instalar el agente de Zabbix y configurar los parametros de lectura.
Instalar el agente
rpm -ivh https://repo.zabbix.com/zabbix/5.2/rhel/7/x86_64/zabbix-release-5.2-1.el7.noarch.rpm
yum -y install zabbix-agent
Configurar la direccion IP del servidor Zabbix
vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.0.251
ServerActive=192.168.0.251
Hostname=Zabbix server
Activar el servicio.
systemctl start zabbix-agent
systemctl enable zabbix-agent
systemctl status zabbix-agent
Configurar los parametros para leer la informacion de llamadas guardadas en los archivos TXT.
cd /etc/zabbix/zabbix_agentd.d/
vim asterisk.conf
UserParameter=ast.trunksip1simultaneas,cat /etc/asterisk/trunksip-7973430-llamadas-simultaneas.txt
UserParameter=ast.trunksip1totales,cat /etc/asterisk/trunksip-7973430-llamadas-totales.txt
Validar que el agente de Zabbix puede leer los datos correctamente es necesario ejecurar los siguiente :
zabbix_agentd -t ast.trunksip1simultaneas
zabbix_agentd -t ast.trunksip1totales
Si hasta este punto todo salio bien, el agente sera capas de leer los datos almacenados en los TXT de la siguiente forma :
5.- Integrar Zabbix con Asterisk.
5.1.- Agregar el «host» de Asterisk en Zabbix
5.2.- Agregar los parametros definidos en el agente , Para ello sera necesario agregar un nuevo «item» en Zabbix de la siguiente forma.
Donde «ast.trunksip1totales» es el parametro definido en el agente instalado en el servidor Asterisk
Donde «ast.trunksip1simultaneas» es el parametro definido en el agente instalado en el servidor Asterisk.
Finalmente tendremos la informacion de Asterisk en Zabbix de la siguiente forma
6.- Integrar Grafana con Zabbix
Una vez que hemos conseguidor mostrar los datos de Asterisk en Zabbix ahora es necesario graficarlo con Grafana.
6.1.- Enlazar Grafana para que pueda consumir la API de Zabbix.
Finalmente al realizar el test de conexion tendremos el siguiente resultado:
6.2.- Crear los Panel de Graficas consumiendo la API de Zabbix.
7.- Notas y consideraciones Finales
- Realizar todas las conexiones via HTTPS
- Crear un usuario individual en Zabbix para que se conecte Grafana.
- Ejecutar los conenedores Docker con un usuario sin privilegios.
- En Asterisk en vez de usar archivos TXT usar una API que almacene y consulte los datos.
- Existe un sin numero de informacion que es posible recabar usando SNMP de Asterisk , Agente de Zabbix y el plug-in en Zabbix Asterisk by HTTP : https://www.zabbix.com/la/integrations/asterisk
Espero les sirva
@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 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
Vulnerabilidades de XXE y RCE en ZIMBRA
No hay duda que Zimbra es uno de los software para implementar correos electrónicos sobre Linux mas usados, debido a ello no es ajeno a vulnerabilidades, recientemente un investigador de seguridad ha descubierto que mediante la explotación en secuencia de vulnerabilidades recientemente descubiertas, es posible lograr ejecución remota de comandos «RCE» sobre una plataforma Zimbra para tomar el control completo de esta.
Las vulnerabilidades se han catalogado como CVE-2016-9924, CVE-2018-20160 y CVE-2019-9670, las versiones afectadas son todas sin embargo ZIMBRA ha lanzado los parches para la versiones 8.7.11 y 8.8x, las cuales las pueden ubicar aquí :
https://wiki.zimbra.com/wiki/Zimbra_Releases
https://wiki.zimbra.com/wiki/Zimbra_Releases/8.7.11/P10
https://wiki.zimbra.com/wiki/Zimbra_Releases/8.8.9/P9
El exploit realizado en python al parecer a la fecha aún no es publico ( si lo encuentran me avisan 😀 ), ya que se ha publicado un vídeo del P.O.C. de la explotación hace unos días :
Zimbra ha emitido un comunicados y parches a las vulnerabilidades por versión especifica, como la 8.8.x y 8.7.11 sin embargo hasta que el exploit este disponible no se sabrá certeramente si las otras versiones también son afectadas.
Este seria el procedimiento para aplicar el parche en la versión 8.7.11
Descargar el parche:
Descomprimir :
Reiniciar los servicios :
Espero que cuando ubique el exploit poder realizar las pruebas para verificar la vulnerabilidad por ahora solo toca aplicar los parches respectivos.
Saludos
Asterisk Rest Interface (ARI) en Issabel
Una de las cosas que me gusta hacer junto con el Ethical Hacking es instalar/programar aplicaciones de Voz para ello hace mucho tiempo que uso Asterisk, evidentemente esto a evolucionado gratamente para los que nos gusta esta área, a partir de Asterisk 12 apareció ARI o «Asterisk REST Interface» API que permite programar cualquier tipo de aplicación y que se ejecute en Asterisk.
Realmente ARI desde mi punto de vista ha cambiado la forma de ver lo que se puede hacer con Asterisk ya que no solo es pensar en una PBX, si no que ahora puedes tomar las librerías de ARI de los lenguajes mas importantes como python, C#, Java, Javascript, para conectarte a la API y empezar a desarrollar usando la aplicación que implementa Asterisk a nivel de dialplan llamada «Statis».
En esa linea de ideas, debido a que Issabel trae Asterisk 13 podemos usar ARI sin problemas, a continuación veremos como realizar la configuración del mismo y realizar una prueba básica usado la herramienta wscat para conectarnos vía Websocket hacia la API en este caso ARI.
1.- Configurar ARI en Issabel
Ingresar al archivo http_custom.conf y activar ARI e indicarle en que puerto va funcionar de la siguiente forma:
Luego ingresar al archivo «ari.conf» el usuario y contraseña con el cual usaremos ARI
2.- Crear el dialplan
Ahora crearemos un dialplan para consumir y/o conectarse hacia ARI , para ello sera necesario declarar una extension 9000 donde invocaremos la aplicacion «Stasis» que es el mecanismo que utiliza Asterisk para entregar el control de un canal desde el plan de marcado hacia ARI.
En el archivo «extensions_custom.conf» incluimos un nuevo contexto llamado «ariwebsoket» de la siguiente forma:
Luego agregamos el final del archivo el nuevo conexto:
3.- Pruebas con ARI sobre Issabel.
Vamos a preparar una prueba muy sencilla de como nos podemos conectar mediante una petición de websoket hacia ARI para visualizar un evento en concreto, para ello sera necesario instalar wscat mediante nodejs.
curl -sL https://rpm.nodesource.com/setup_8.x | bash –
yum install -y nodejs
npm install -g wscat
Ahora desde una terminal nos conectamos a Issabel y ejecutamos
wscat -c «ws://localhost:8088/ari/events?api_key=ari:tucontrasena&app=hello-world»
Veremos que estamos conectados hacia ARI, de igual forma en el CLI veremos lo siguiente:
Lo cual nos indica que hay una conexión vía WebSocket hacia la aplicación «Hello-world»
Ahora al llamar a la extensión 9000 sera posible ver los detalles del evento mediante ARI de la siguiente forma
Esto es un test muy sencillo para validar que ARI funciona correctamente en Issabel, en un post nuevo veremos como desarrollar una aplicación con Nodejs haciendo uso de una cliente ARI para controlar Issabel.
Saludos
Juan Oliva.