sábado, 8 de julio de 2017

Como detectar si un equipo en tu red es vulnerable al virus RANSOMWARE WANNACRYPT

Debidos a los problemas provocados por el RANSOMWARE WANNACRYPT, que secuestras tus archivos de tu pc, me recomendaron escanear la red en busca de posibles equipos con Windows que no tenga el parche que evitar el contagio en la red.

Para esto se requiere utilizar nmap, ya sea para su versión para Linux o Windows junto con el nse de escaneo smb-vuln-ms17-010.nse que se puede encontrar en https://github.com/cldrn/nmap-nse-scripts/tree/master/scripts.

Pasos a seguir:

Para Windows

- Descargar el siguiente link https://nmap.org/dist/nmap-7.40-setup.exe
- Instalar archivo descargado.
- Copiar script  “smb-vuln-ms17-010.nse” en la siguiente carpeta:
         C:\Program Files (x86)\Nmap\scripts
- Ejecutar Nmap, con las siguientes opciones:

nmap -sC -p 445 --max-hostgroup 3 --open --script smb-vuln-ms17-010.nse x.x.x.x/x


Por pantalla te entregara el resultado del escaneo, si aparece algo de la forma

Nmap scan report for 10.10.10.33
Host is up (0.00013s latency).
PORT    STATE SERVICE
445/tcp open  microsoft-ds
MAC Address: A0:D3:C6:64:66:D3 (Hewlett Packard)

Host script results:
| smb-vuln-ms17-010:
|   VULNERABLE:
|   Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010)
|     State: VULNERABLE
|     IDs:  CVE:CVE-2017-0143
|     Risk factor: HIGH
|       A critical remote code execution vulnerability exists in Microsoft SMBv1
|        servers (ms17-010).
|      
|     Disclosure date: 2017-03-14
|     References:
|       https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/
|       https://technet.microsoft.com/en-us/library/security/ms17-010.aspx
|_      https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0143


Ese equipo es vulnerable, debes actualizar los parches de Windows.

Para Linux
- Instalar o actualizar RPM de Nmap:
  rpm -vhU https://nmap.org/dist/nmap-7.40-1.x86_64.rpm
- Copiar script  “smb-vuln-ms17-010.nse” en la siguiente carpeta:
   /usr/share/nmap/scripts/
- Ejecutar el siguiente scan:

nmap -sC -p 445 --max-hostgroup 3 --open --script smb-vuln-ms17-010.nse x.x.x.x/x

Dependiendo del tamaño de la red puede tomar entre 2 minutos a 30 minutos

No olvides dejar tu comentario, duda o sugerencia.

jueves, 6 de julio de 2017

En mi dominio con samba4, los usuarios no ven el sysvol

Para uno de mis clientes debí generar un dominio con samba4, la instalación fue rápida y sin problemas. Se podía crear los usuarios mediante la interfaz de Windows o mediante línea de comandos.
Los PC de los usuarios se unían al dominio en forma fácil y segura. Al crear carpetas compartidas, era posible asignar los usuarios y privilegios sin problemas.
Pero cuando se comenzó a configurar las políticas de grupo para el dominio, están no se podían aplicar, indicando como error que no se tenía acceso al sysvol. (carpeta compartida donde se almacenan las “group policy”).
El error solo aparecía cuando se trata de conectar al recurso de red \\dominio\, si en vez del nombre de dominio se usaba la ip el el nombre del contralador de dominio, el error no ocurría.
Pero las “group policy” solo usaba el nombre del dominio, lo cual no se puede cambiar.
Al buscar solución siempre llegaba a que en el servidor samba se debía ejecutar:

samba-tool ntacl sysvolreset

Pero esto no resolvía el problema, al analizar en mayor detalle como se usa el sysvol, esta es una carpeta especial que usa dfs para distribuir la información en ella, debido a esto se debe agregar el soporte de dfs y los acl de seguridad en el smb.conf, en mi caso quedo de la forma:

[sysvol]
        path = /var/lib/samba/sysvol
        read only = No
        msdfs root = Yes
        nt acl support = No
        directory mask = 0750


en la sección global debi agregar 

        host msdfs = yes

Luego de eso ya pude distribuir las políticas del dominio.

No olvides dejar tu comentario, duda o sugerencia.

sábado, 13 de agosto de 2016

Aritmética en bash

Cada cierto tiempo en los script en bash necesito implementar un contador, sumar dos números o  realizar alguna operación aritmética, buscando descubrí que existe una forma sencilla de realizar estas operaciones dentro de un script bash, con el siguiente formato:
$((expresión aritmética))
Ejemplos
$(( 2 + 3 ))
$(( x *3 ))
$(( 2 / 3 ))
Esto puede realizar tanto con variables que contengan un número como con constantes o números, un ejemplo básico de un script seria:
#!/bin/bash
x=15
y=10
suma=$(( x + y ))
echo "$x + $y = $suma"
Al ejecutar entregaría
15 + 10 = 25
Operaciones con Enteros
Operador
Descripción
Ejemplo
Valor
+
Adición (suma)
echo $(( 20 + 15 ))
35
-
Sustracción (resta)
echo $(( 20 - 7 ))
13
/
División
echo $(( 20 / 4 ))
5
*
Multiplicación
echo $(( 20 * 3 ))
60
 %
Modulo
echo $(( 20 % 6 ))
2
++
post-incremento (agrega 1 a la variable)
x=4
echo $(( x++ ))
echo $(( x++ ))

4
5
--
post-decremento (resta 1 a la variable)
x=7
echo $(( x-- ))
echo $(( x-- ))  

7
6
**
Exponencial
x=2
y=3
echo $(( x ** y ))
8

viernes, 12 de agosto de 2016

Error en configtool - instancia desaparecida



Después de la migración de un portal sap netweaver 7.0, desde aix a Redhat Linux 7.2,  al conectarme con el configtool para modificar un parámetro, la rama de la instancia no existía.
Este es la vista donde falta la instancia


Esta es una vista normal con instancia


Al revisar encontré que en la vista del detalles de la configuración, no existía el “property sheet” instance.properties, este sheet entrega la información de que componentes existe en el cluster java, es decir el dispatches y los servers. Al no existir, el configtool no es capaz de desplegar esta información a pesar que suben los procesos.

La mejor forma de recrear este sheet es realizar un export desde otro portal, el export crea un archivo zip que contiene un archivo xml con los datos de la instancia, se debe ajustar el xml con los datos de la instancia destino, ya que los ID cambian, una vez cambiados se debe comprimir y realizar el import respectivo.

Como base para esta solución utilice la nota SAP

martes, 26 de julio de 2016

Crear un laboratorio con licencias validas de windows

Cuando uno necesita probar un software o producto, necesita una plataforma donde ejecutarlo, en la mayoría de los casos se requiere un servidor Windows con o sin base de datos SQL.

Para estos fines Microsoft permite bajar desde su sitio web, el iso del sistema operativo con una licencia con validez de 180 días, esto permite instalar el sistema operativo sin temor a caer en prácticas ilegales o dudosas, desde el siguiente link, se puede bajar 3 versiones diferentes del Sistema Operativo: Windows server 2012, Windows server 2012 R2 y Windows server 2016.

En esta misma página se puede bajar el hipervisor de Microsoft  "Hyper-V Server 2012 R2", la mejor versión de esta herramienta de virtualización de Microsoft.

Cuando necesito probar en producto en mi pc, uso VMWare Workstation pro o virtualbox de Oracle, instalo el sistema operativo que requiero en evaluación y el software que deseo probar, esto me permite tener un primer acercamiento al producto sin requerir un hardware dedicado para la prueba. Una vez evaluado, puedo migrarlo a una solución más robusta para pruebas de rendimiento y carga.

También Microsoft permite bajar en modo de evaluación su software de base de datos MSSQL, permitiendo de esta forma acercarse a esta herramienta.



lunes, 25 de julio de 2016

Como instalar un certificado digital para tu sitio web - Gratis con letsencrypt

Cada día la seguridad en internet es mas importante y una de las primeras medidas es encriptar las paginas web, cambiando de http a https (apareciendo el candado verde en la url ).

Gracias al proyecto letsencrypt es posible activar el uso de certificado digital en nuestros sitios web de forma gratuita y automática, para esto se deben seguir unos simples pasos.

1.- Bajar desde https://certbot.eff.org/ el programa certbot el cual automatiza el proceso de implementación, en este sitio se debe ingresar el tipo de servidor web y el sistema operativo donde esta alojado. En nuestro ejemplo servidor web apache y sistema operativo Centos 6





Una vez seleccionado aparecen las instrucciones para bajar la aplicación certbot

2.- En el caso de centos es necesario antes de la instalación habilitar el repositorio de epel, como root o utilizando sudo ejecutar
yum install epel-release

3.- Bajar el aplicativo desde la página web dl.eff.org, ya sea en forma manual o vía wget
 
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
 
Recordar dar permisos de ejecución con chmod

4.- ejecutar certbot-auto, el cual instalara todos los prerequisitos desde los repositorios configurados.
 
./certbot-auto


5.- Una vez que termine la instalacion de los prerequisitos  y la generacion de los datos de configuración inicial, y es posible obtener el certificado para nuestro sitio web, previamente el servidor web apache debe estar configurado con el nombre del sitio web, por ejemplo prueba.ejemplo.cl, para que de esta forma la aplicación solicite el certificado respectivo, solo bastara ejecutar

./certbot-auto --apache

Este configurara en forma automática el sitio web con el certificado respectivo, preguntara que se acepte los termino y condiciones, y confirmara las diferentes opciones.

Para una correcta instalacion el puerto 80 y 443 deben estar abiertos a conexiones desde internet.

lunes, 11 de abril de 2016

Software Logistics Toolset 1.0 => Software Provisioning Manager 1.0

SAP genero una evolucion del antiguo sapint para la instalacion y actualizacion de sistemas SAP, llamado: Software Logistics Toolset, que agrupa una seria de herramientas para la instalacion y mantencion de los sistemas:

>

Las herramientas mas comunmente usadas son:
  • Software Update Manager (version al dia de hoy: 1.0 SP16 parche 6)
  • Software Provisioning Manager (version al dia de hoy: 1.0 SP10 parche 3)
Veremos las opciones disponibles para el "Software Provision Manager" que es usado para: instalar, copiar, transformar, dividir, renombrar y des-instalar productos basados en "SAP NetWeaver AS ABAP and AS Java".
Los sistemas operativos soportados son:

  • AIX 64bit
  • HP-UX on IA64 64bit
  • HP-UX on PA-RISC 64bit
  • Linux on IA32 32bit
  • Linux on IA64 64bit
  • Linux on Power BE 64bit
  • Linux on x86_64 64bit
  • Linux on zSeries 64bit
  • OS/400
  • Solaris on SPARC 64bit
  • Solaris on x86_64 64bit
  • Windows Server on IA32 32bit
  • Windows on IA64 64bit
  • Windows on x64 64bit 

Existen dos versiones de la herramienta: para sistemas con SAP Netweaver 7.0X (Ej. 70SWPM10SP10_4-20009707.sar )  y para sistemas de versiones mayores a SAP Netweaver 7.0X (EJ. SWPM10SP10_4-20009707.SAR)

Les presentare las opciones iniciales para las dos versiones
70SWPM

Se puede apreciar las diferentes suites soportadas hasta (7i 2011), desde SAP Netweaver 7.0 a 7.0 EHP3, pasando por SAP Solution Manager 7.1 SP1 y 7.0 EHP1 SP1. La capacidad de dividir un Dual-Stack (la cual ya no es soportada en versiones superiores) y otros componentes adicionales como TREX y los agentes de Diagnosticos. Por ejemplo para la suite 7i 2011, se tiene los siguientes productos ( SAP CRM 7.0 , ERP 6.0, SCM 7.0 y SRM 7.0):




Para SAP NetWeaver 7.0 EHP 2 (PI, MI,  ABAP , JAVA):




SWPM
Donde se pueden apreciar las nuevas suites, productos y la aparición de HANA como repositorio.


En otro post veremos un ejemplo de instalación de un AS ABAP.

miércoles, 6 de abril de 2016

Expect - como integrar un programa interactivo a un script

Expect es una herramienta muy útil para integrar esos programas interactivos, que se ejecutan en una shell, con nuestros o script de administración o páginas web o procesos por lotes.
Una descripción de este seria:

"Expect es un programa que “conversa” con otros programs interativos según un "guión" (o script). Siguiendo el guión, Expect sabe lo que puede esperarse de un programa y cuál debería ser la respuesta correcta. Un lenguaje interpretado proporciona estructuras de ramificación y de control de alto nivel para dirigir el diálogo. Además, el usuario puede tomar el control e interactuar directamente cuando se desea, después de devolver el control al script."

Ejemplo de usos de expect:

  • Se desea automatizar la ejecución de un comando en un servidor Unix o Linux, cuya salida puede variar y se desea analizar.
  • Necesitas repetir la misma configuración en varios switchs que se administran vía ssh. Por ejemplo borrar una vlan.
  • Integrar un viejo menú en una aplicación web.

Para poder comprender su uso, presentare un ejemplo simple de como crear una vlan en varios  switch cisco. La ip del switch es contenido  de un archivo que contiene una lista de ips y se pasa como parámetros el usuario y contraseña común a cada switch.

#!/usr/bin/expect -f
# Al igual que todo script se declara en la primera línea la shell a usar
# en este caso /usr/bin/expect con la opcion -f

# Definicio de variables

# defino la variable f que abre el archivo /home/switch/scripts/listado.txt donde
# están almacenadas las ips de los switch que se configuraran, una ip por línea

set f [open "/home/switch/scripts/listado.txt"]

# defino dos variables basado en los argumentos entregados al script 0 para $1 y 1 para $2 ...
# usuario seria el primer argumento
set usuario [lindex $argv 0]
# passwword seria el segundo argumento
set password [lindex $argv 1]
# en este caso el usuario y contraseña es comun a todos los switch a configurar

# para manejar en mejor forma el contenido del archivo genero una lista usando split y la almaceno
# la variable hosts

set hosts [split [read $f] "\n"]

# cierro el archivo /home/switch/scripts/listado.txt
close $f

# para cada una de las ips genero un bucle
foreach host $hosts {

# ejecuto el comando ssh (spawn, permite ejecutar un comando)
spawn ssh $usuario@$host

# la conexion ssh genera una respuesta, la que generalmente puede ser:
# - Pregunta si se debe aceptar el certificado, si esta es la nueva conexion. Si es este caso
# se espera una linea que termina con "no)?" y se envia (send) la palabra "yes", para indicar
# que se acepta y "\r" para el salto de linea o enter.
# - O pregunta por la contraseña, por lo cual se espera una linea terminada en "assword:"
# el comando expect es el encargado de interpretar la salida del comando anterior
# y segun parametros de busqueda determina la siguiente operacion, para este caso que se envia con send
#
expect {
"no)?" {
send "yes\r"
expect "assword:"
}
"assword:"
}

# se envia la contraseña
send $password\r"

# luego se revisa si se accedio al prompt "#"
expect "#"

# se envia "conf term\r" para ingresar al modo de configuracion del switch
send "conf term\r"

# luego se revisa si se accedio al prompt "#"
expect "#"

# se envia "vlan 96\r" para crear (si no existe) o modificar la vlan 96
send "vlan 96\r"

# luego se revisa si se accedio al prompt "#"
expect "#"

# Se configura el nombre de la vlan a vlan96
send "name vlan96\r"

# luego se revisa si se accedio al prompt "#"
expect "#"

# se envia "end" para termina el modo de configuraci&oacuta;n
send "end\r"

# luego se revisa si se accedio al prompt "#"
expect "#"

# se envia "wr" para grabar la configuraci&oacuta;n
send "wr\r"

# luego se revisa si se accedio al prompt "#"
expect "#"

# se envia "exit" para salidar
send "exit\r"
}

Cada vez que se envia un comando utilizamos "\r" para representar la tecla "Intro" o "Enter"

martes, 5 de abril de 2016

Deshabilitar los pendrive en un windows

Debido a los continuos problemas de seguridad que los pendrive (usb) ocasionaban a un cliente, me solicito deshabilitar los pendrive (usb) de los pc windows de los usuarios.

Luego de una búsqueda en Microsoft encontré lo siguiente: https://support.microsoft.com/en-us/kb/823732

Una opción es cambiar los permisos de los archivos:
  • %SystemRoot%\Inf\Usbstor.pnf
  • %SystemRoot%\Inf\Usbstor.inf 
 A que sea de solo lectura, lo cual previene que se puedan modificar y por lo tanto no se pueden instalar los controladores para el pendrive usb.

La segunda opcion ( que considero mas inteligente) es modificar un registro de windows, para que no se inicie el servicio que monta los discos o pendrive usb, bajo la llave:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR]
Se modifica el registro start de 3 a 4 para deshabilitar.




Si se desea configurar este registro desde una política de dominio, pueden generar un txt (con extensión .adm) con el siguiente contenido:


CLASS MACHINE
CATEGORY !!category
 CATEGORY !!categoryname
  POLICY !!policynameusb
   KEYNAME "SYSTEM\CurrentControlSet\Services\USBSTOR"
   EXPLAIN !!explaintextusb
     PART !!labeltextusb DROPDOWNLIST REQUIRED
       VALUENAME "Start"
       ITEMLIST
        NAME !!Disabled VALUE NUMERIC 3 DEFAULT
        NAME !!Enabled VALUE NUMERIC 4
       END ITEMLIST
     END PART
   END POLICY
 END CATEGORY
END CATEGORY

[strings]
category="Custom Policy Settings"
categoryname="Restrict Drives"
policynameusb="Disable USB"
explaintextusb="Disables the computers USB ports by disabling the usbstor.sys driver"
labeltextusb="Disable USB Ports"
Enabled="Enabled"
Disabled="Disabled"




Y agregarlo como una nueva política. Y esta nueva política aplicarlo al grupo de equipos a ser configurados (se debe cambia a Enabled).

Instalación rapida de kvm manager de oracle

 Para instalar kvm manager de oracle se deben seguir los siguientes pasos: Instalar Oracle Linux 7 configurar el fqdn en el archivo /etc/hos...