1/10/2013

Infraestructura de clave publica I

Bueno vamos a hablar un poco de las infraestructuras de clave publica, y ya que algunos alumnos las han instalado sin existo, en nuestro caso hablaremos sobre EJBCA que  haciendo referencia a un post del blog de un amigo Software PKI Opensource. me parece a mi punto de vista la infraestructara de clave publica open source mas completa para algunas implementaciones .

 Y como bien dijo nuestros amigos de Security By Default que algun dia subire fotos de la camisa, vamos a montar nuestro PKI de "Calvin klein".Para empezar desde 0 dejo la referencia a la Wikipedia sobre la explicación de los usos y deficion de PKI, para los que no tiene conocimiento puedan referirse .

Ademas de ello la instalacion de la guia rapida que siempre dejaba como trabajo la pueden encontrar en : http://www.ejbca.org/installation.html

Pero como se que algunos les gusta entrar en la jungla con machete y arco entonces vamos adelante. Ademas esta serie de post van para un amigo que queria montar su tesis de "tarjetitas" entonces espero que esta serie de post de infraestructuras de clave publica que terminaran con DNIe les sirva para sus "tarjetitas" :)..

Vamos a hacer la instalación con Ubuntu asi que entremos como root!. (recuerden tener mas de 2048MB de memoria ram en su Ubuntu Server o Desktop igual deberia funcionar para Debian)

Entonces empezemos..


$apt-get install unzip openjdk-6-jdk ant libmysql-java
instalaremos las utilidades de descompresion , el jdk de java el mysql JDBC conector y apache Ant.

Luego le podemos meter mano para agregar UTF8 a MySQL y quitarnos algunos dolores de cabeza mas adelante.
 $ nano /etc/mysql/conf.d/utf-8.cnf

----BEGIN----
[client]
default-character-set=utf8

[mysqld]
default-character-set=utf8
default-collation=utf8_unicode_ci
character-set-server=utf8
init-connect='SET NAMES utf8'
character-set-client = utf8
-----END-----


Despues de escribir ell archivo debemos reiniciar la BD's
 $ service mysql restart                                                   
$/etc/init.d/mysql restart

Para gustos estan los sabores, cualquiera de los dos comandos anteriores les deberia servir, si no consulten a su cardiologo.

Ok ahora vamos a agregar unas cuentas de usuarios para darle un poco de seguridad a la instalación, una cuenta para correr la instancia de jboss por encima de ejbca y la segunda para restringir los accesos a la instalación y los archivos de instalación

$ adduser --system --shell /bin/bash --group ejbca
$ adduser --system --shell /bin/bash --group jboss
$ usermod -a -G jboss ejbca

 Descargen y descompriman en un directorio de trabajo elegido por ustedes o para el proyecto. en mi caso /opt sera mi directorio..

$ wget http://sourceforge.net/projects/jboss/files/JBoss/JBoss-5.1.0.GA/jboss-5.1.0.GA-jdk6.zip
$ unzip ~/packages/bin/jboss-5.1.0.GA.zip -d /opt/
$ chown -R jboss.jboss /opt/jboss-5.1.0.GA
$ chmod -R o= /opt/jboss-5.1.0.GA


Luego creamos un link simbolico apuntando a la instalacion del jboss
$ cd /opt/
$ ln -s jboss-5.1.0.GA jboss


En la mayoria de intalaciones de PKI se requiere que la instalacion inicialice junto con el boteo del sistema operativo

$nano ejbca
 _____________________________________________________________________________
#!/bin/bash

. /lib/lsb/init-functions

jbossInstance="$(basename $0 | sed -e 's/^[SK][[:digit:]]*//')"
configFile="/etc/jboss/$jbossInstance.conf"
daemonName="$jbossInstance"
pidFile="/var/run/$jbossInstance.pid"

function checkEnvironment() {
  
    local binaries=(env)

    for bin in "${binaries[@]}"; do
        if ! which "$bin" > /dev/null; then
            log_failure_msg "Binary '$bin' is not available. Please install \
package containing it."
            exit 5
        fi
    done
}

function checkConfig() {
    
    if ! [[ -f $configFile ]]; then
        log_failure_msg "Please populate the configuration file '$configFile' \
before running."
        exit 6
    fi
    local reqOptions=(user group javaHome javaOpts jbossHome jbossConf)
    for option in "${reqOptions[@]}"; do
        if ! grep -q -e "^[[:blank:]]*$option=" "$configFile"; then
            log_failure_msg "Mandatory option '$option' was not specified in \
'$configFile'"
            exit 6
        fi
    done
}

function configure() {
    . "$configFile"

    env="$(which env)"
    
    java="$javaHome/bin/java"

    jbossEndorsedDirs="$jbossHome/lib/endorsed"

    if [[ -n $jbossClasspath ]]; then
        jbossClasspath="$jbossClasspath:$jbossHome/bin/run.jar"
    else
        jbossClasspath="$jbossHome/bin/run.jar"
    fi
    if [[ -n $javacJar && -f $javacJar ]]; then
        jbossClasspath="$jbossClasspath:$javacJar"
    elif [[ -f $javaHome/lib/tools.jar ]]; then
        jbossClasspath="$jbossClasspath:$javaHome/lib/tools.jar"
    fi

    javaOpts=("${javaOpts[@]}" '-Djava.net.preferIPv4Stack=true')
    if "$java" -version 2>&1 | grep 'HotSpot' > /dev/null; then
        javaOpts=("${javaOpts[@]}" '-server')
    fi

    if [[ -n $jbossNative ]]; then
        javaOpts=("-Djava.library.path=$jbossNative" "${javaOpts[@]}")
    fi
    if [[ -n $jbossNative && -z $LD_LIBRARY_PATH ]]; then
        LD_LIBRARY_PATH="$jbossNative"
    elif [[ -n $jbossNative ]]; then
        LD_LIBRARY_PATH="$jbossNative:$LD_LIBRARY_PATH"
    fi

    jbossOpts=("-c" "$jbossConf")
    if [[ -n "$jbossBind" ]]; then
        jbossOpts=("${jbossOpts[@]}" "-b" "$jbossBind")
    fi
    if [[ -n "$jbossPart" ]]; then
        jbossOpts=("${jbossOpts[@]}" "-g" "$jbossPart")
    fi
    if [[ -n "$jbossUdpIp" ]]; then
        jbossOpts=("${jbossOpts[@]}" "-u" "$jbossUdpIp")
    fi

    daemonExec="$env"
    daemonArgs=(-i $java "${javaOpts[@]}" -Djava.endorsed.dirs="$jbossEndorsedDirs" -classpath "$jbossClasspath" org.jboss.Main "${jbossOpts[@]}")
}


function start() {
    start-stop-daemon --start --quiet --oknodo --pidfile "$pidFile" \
        --make-pidfile --chuid "$user:$group" -b --name java --startas \
        "$daemonExec" -- "${daemonArgs[@]}"
}

function stop() {
    start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile "$pidFile" \
        --chuid "$user:$group" --exec "$java"
}

function status() {
    status_of_proc -p "$pidFile" "$daemonExec" "$jbossInstance"
}


checkConfig
configure
checkEnvironment

case "$1" in
    start)
        log_daemon_msg "Starting daemon" "$jbossInstance"
        start && log_end_msg 0 || log_end_msg $?
        ;;
    stop)
        log_daemon_msg "Stopping daemon" "$jbossInstance"
        stop && log_end_msg 0 || log_end_msg $?
        ;;
    restart)
        log_daemon_msg "Restarting daemon" "$jbossInstance"
        stop
        
        /bin/sleep 1
        start && log_end_msg 0 || log_end_msg $?
        ;;
    force-reload)
        log_daemon_msg "Restarting daemon" "$jbossInstance"
        stop
        start && log_end_msg 0 || log_end_msg $?
        ;;
    status)
        status && exit 0 || exit $?
        ;;
    *)
        echo "jboss (start|stop|restart|force-reload|status|help)"
        ;;
esac
 ______________________________________________________________________________
Copienlo y pegenlo en su archivo  
 
 
Ahora le metemos los permisos para los archivos
$ chown root.root /etc/init.d/ejbca
$ chmod 755 /etc/init.d/ejbca


Change the init script so that it provides the EJBCA service:
# /etc/init.d/ejbca
----BEGIN----p
--- # Provides: jboss
+++ # Provides: ejbca
-----END-----p

El Script en si mismo se configura desde /etc , pero como todavia no tenemos nada configurado alli vamos a empezar a crear un directorio de trabajo para la instancia de Jboss,
 $mkdir /etc/jboss
$chmod 750 /etc/jboss

Creamos el archivo de conifguración para el EJBCA dentro de la instancia de Jboss

# /etc/jboss/ejbca.conf
----BEGIN----
user=ejbca
group=ejbca
javaHome=/usr/lib/jvm/java-6-openjdk/
javaOpts=(-XX:PermSize=96m -XX:MaxPermSize=128m -Xms128m -Xmx512m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000)
jbossHome=/opt/jboss
jbossConf=ejbca
jbossBind=0.0.0.0
jbossClasspath=/usr/share/java/mysql.jar
-----END-----
Ojo con los permisos del archivo!!
$ chmod 640 /etc/jboss/ejbca.conf
Bueno en Jboss tenemos un archivo donde podemos crear varias configuraciones donde podemos instalar varias aplicaciones dentro del mismo jboss..Entonces vamos a crear un archivo de configuración por defecto para nuestro ejbca

$ cd /opt/jboss/server/
$ cp -pr default ejbca
$ chown -R ejbca.ejbca ejbca
Unas configuraciones recomendadas para entornos de producción son estos ajustes de seguridad dentro del Jboss eliminar algunas apps.
$ rm -rf /opt/jboss/server/ejbca/deploy/ROOT.war/
$ rm -rf /opt/jboss/server/ejbca/deploy/jmx-console.war/
$ rm -rf /opt/jboss/server/ejbca/deploy/management/

$ rm -rf /opt/jboss/server/ejbca/deploy/admin-console.war/

Ademas de ello podemos tener mejores precuaciones conifgurando Jboss mas seguro o añadir reglas de IPTABLES, generalmente los usuario sin privilegios que van a correr el Jboss Ejbca no podran iniciar servicios con puertos inferiores a 1024 pero lo podemos resolver con:


-t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
-t nat -A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8443

Ojo estas reglas no te seviran si accedes de una instalacion local solo son para accesos remotos, para el acceso local deberan usar los puertos 8080 y 8443.


Ahora vamos a instalar nuestra Central de PKI

$ wget http://sourceforge.net/projects/ejbca/files/ejbca4/ejbca_4_0_10/ejbca_4_0_10.zip
$ unzip ~/packages/src/ejbca_4_0_10.zip -d /opt/
$ chown -R ejbca.ejbca /opt/ejbca_4_0_10/
$ chmod -R o= /opt/ejbca_4_0_10/

$ cd /opt
$ ln -s ejbca_4_0_10 ejbca

Ahora vamos a configurar los archivos de configuración del EJBCA, dentro del directorio /opt/ejbca/conf donde se encuentran no solo los archivos de conifugracion de la instalacion sino ademas achivos para linkear un HSM o un Base de Datos a nuestra PKI en producción,
La mayoria de archivos de configuracion terminan con la palabra "sample" , pero para nuestra configuracion deberemos renonbrar el "ejbca.properties.sample" a "ejbca.properties " y tener encuenta las siguientes anotaciones que dejo del archivo, deben de coincidir dentro del archivo que hemos renombrado.


# /opt/ejbca/conf/ejbca.properties
----BEGIN----
# Specify the root directory of the application server that's being used.
appserver.home=/opt/jboss

# Explicitly specify the application server being used. Useful if the root
# (home) directory of the application server doesn't use a standard name.
appserver.type=jboss

# Force deployment only of CA part. OCSP will be deployed on a separate server.
ejbca.productionmode=ca

# Specify the password which will be used for protecting the keystore where the
# CA's private key and certificate will be stored.
ca.keystorepass={{PASSWORD}}

# Specify the configuration of JBoss AS that should be used.
jboss.config=ejbca

# Make the healthchecker a bit more strict than the default. It will trigger an
# alarm once this much of free memory is left (in megabytes).
healthcheck.amountfreemem=32

# Make the healthcheck actually perform signing operation to make sure it's
# working properly.
healthcheck.catokensigntest=true
-----END-----

No se olviden de modificar el campo de "ca.keystorepass" con el password que se necesite para la seguridad de la llave del certificado dentro de la autoridad de certificación, recuerden minimo de  8 caracteres.

Ahora configuraremos el archivo de base de datos, exactamente el mismo procedimiento lo renonmbramos el archivo y revisamos que los parametro esten como los necesitamos.
# /opt/ejbca/conf/database.properties
----BEGIN----
# Specify desired type of database server.
database.name=mysql

# Specify the database connection URL. This property should be set according to
# the JDBC connector used (in this case the MySQL connector). See the MySQL JDBC
# for details on other options.
database.url=jdbc:mysql://127.0.0.1:3306/ejbca?characterEncoding=UTF-8

# Specify the class which should be used for the communication with the
# database. This class should correspond to the select database, and its name is
# dependant on the JDBC implementation for the given database server.
database.driver=com.mysql.jdbc.Driver

# Login credentials for the database which should store the CA information.
database.username=ejbca
database.password={{password_ejbca_mysql}}
-----END-----

Recuerden en el parametro "database.password "  debera ser el mismo password que elijieron en la creación del usuario ejbca dentro de la BD MySQL

Otro Archivo importante que vamos a meterele mano es al "install,properties", el cual especifica mucha de la información para la autoridad de certificación.   El archivo debemos verificar que contenga estas configuraciones.

# /opt/ejbca/conf/install.properties
----BEGIN----
# Name of the temporary CA used for initial configuration and access (before the
# proper CA hierarchy is in place).
ca.name=PKICyttek

# Distinguished name of the temporary admin CA
ca.dn=CN=PKICyttek,O=Cyttek Group.,C=RS

# Software tokens should have this set to null
ca.tokenpassword=null

# Type of the temporary admin CA private key. (default value listed)
ca.keytype=RSA

# RSA key size for the temporary admin CA.
ca.keyspec=4096

# Default signing algorithm for the temporary admin CA.
ca.signaturealgorithm=SHA256WithRSA

# Validity period for the temporary admin CA in days.
ca.validity=30

# Policy for the temporary admin CA.
ca.policy=null

-----END-----


Ademas de ello debemos de configurar las propiedades archivo para el servidore Web que servira la aplicacion, Entonces debemos de verificar que contenga lo siguiente:


# /opt/ejbca/conf/web.properties
----BEGIN----
# Password for the Java truststore used by EJBCA.
java.trustpassword={{ejbca_truststore_password}}

# Common and distinguished name for the temporary super-administrator.
superadmin.cn=TempSuperAdmin
superadmin.dn=CN=${superadmin.cn}

# Password for the temporary super-administrator's p12 keystore.
superadmin.password={{superadmin_password}}

# Specify that the temporary super-administrator's p12 keystore should be
# generated a part of a 'batch' operation. (otherwise it's useful for storing it
# on a smart-card through the EJBCA public web interface)
superadmin.batch=true

# Password for protecting the keystore containing the application server's
# private key and certificate.
httpsserver.password={{ejbca_https_password}}

# Hostname which will be used for accessing the CA (must be resolvable from
# client stations accessing the web interface).
httpsserver.hostname=ca.cyttek.com

# Distinguished name for the application server.
httpsserver.dn=CN=${httpsserver.hostname},O=Cyttek Group.,C=RS

# Specify external port visible to users of EJBCA.
httpserver.external.privhttps=443

# Specify desired language for the web frontend.
web.availablelanguages=EN

# Error message which should be shown to end users in case of an error.
web.errorpage.notification=An exceptions has occurred while trying to process your request. Please contact the administrators and provide the information presented within this page.
-----END-----
Ojo con los password de configuracion de este achivo deben se remplazados con minimo 8 caracteres y son sensibles a mayusculas y miñusculas. Ademas el parametro "web.availablelanguages" si lo ponen en "ES" tendran la interface en español , pero mejor hacerlo desde la propia interface donde es mas grafico ..

Ademas podemos configurar el archivo de envio de correos  para que EJBCA nos mande correos a nuestro email personal:

# /opt/ejbca/conf/mail.properties
----BEGIN----
# Log-in credentials for sending email notifications from EJBCA.
mail.user={{demo@cyttek.com}}
mail.password={{ejbca_mail_contraseña}}

# Mail server used for sending out email notifications.
mail.smtp.host=mail.cyttek.com

# Specify whether the mail server requires the authentication or not.
mail.smtp.auth=true

# Specify whether STARTTLS should be used or not.
mail.smtp.starttls.enable=true

# Email address used for sending the emails.
mail.from=ejbca-info@cyttek.com
-----END-----

Dentro de esta confijuración recuerde tener el archivo /etc/hosts bien configurado con el nombre de dominio. y modificar el  "ejbca_mail_contraseña " con la contraseña usada para entrar en "demo@cytek.com"  

Luego por ultimo asegurense que los archivos que acabamos de configurar 

$ chown ejbca.ejbca /opt/ejbca/conf/*.properties
$ chmod 640 /opt/ejbca/conf/*.properties
Luego me faltaron algunos archivos como enlazar la pki a un HSM o configurar CMP entre otras configuraciones que se pueden hacer  como en PKI enterprice privadas extraer la Base de datos con en otro servidor y etc.. pero lo dejamos asi :).

En este momento estaran como RAMBO I >> "Charly no siento los dedos...."  jejeje..

pero ahora empezamos a instalar EJBCA,pasemos como el user ejbca que creamos anteriormente

$ su ejbca
$ cd /opt/ejbca/
$ ant bootstrap

Despues de que termine el proce de instalación , necesitamos correr el servicio de Jboss que contiene el EJBCA que configuramos mas arriba. en necesario para seguir mas adelante, pero esta vez como usuario root:

$ sudo su
$ service ejbca start

Ojo, ! Jboss tarda un poco en terminar de arrancar pero podemos saber cuando termino con os siguientes comandos

$ su ejbca
$ tail -f /opt/jboss/server/ejbca/log/server.log

En el Tail buscamos dentro del archivo "log" una linea como estas.

2013-10-1 22:22:40,743 INFO  [org.jboss.bootstrap.microcontainer.ServerImpl] (main) JBoss (Microcontainer) [5.1.0.GA (build: SVNTag=JBoss_5_1_0_GA date=201312011022)] Started in 4m:59s:229ms
no debe ser literal la linea pero muy parecida.Ok una vez el Jboss este corriendo , procedemos con la instalación de EJBCA donde se creara todo lo que hemos configurado anteriormente.

$ su ejbca
$ cd /opt/ejbca/
$ ant install
Ok despues que termine la instalación que tarda lo suyo.. Debemos para la instancia del Jboss para seguir
$ sudo su
$ service ejbca stop

Y terminamos la instalación de Rambo con ;
$ su ejbca
$ cd /opt/ejbca/
$ ant deploy
Ok una vez termine , vamos a configurarlo para que se inicialize cada vez que el server inicialize sus demonios en el proceso de booteo:

$ sudo su
$ update-rc.d ejbca defaults
$ service ejbca start
Entonces "Charly cortame los dedos" e terminado con la instalación. ahora dentro de estas instalacion faltaria las configuraciones que se requieren, de ahora en adelante nos meteremos con unos temas bien interesantes de configuraciones , diseño , creaciones de OSCP, CA, CR, Sub-CA's . Esto era el abra bocas ahora viene Rambo I , II, III, IV, V y luego vendra la etapa de Rocky de la configuración.. asi que no se vallan..


 Ahora vamos a acceder al panel Administrador, como anteriormente hemos configurado el certificado del superadministrador con su password para acceder en el servidor Web. entonces desde el archivo "/opt/ejbca/p12/superadmin.p12 " el cual debe ser copiado a al computador de trabajo desde el servidor por "scp" o "sftp" , tengan cuidado con mandar el certificado por protocolos no seguros posublemente todavia no hemos hablado del diseño y las politicas pero en algunos casos estaria vulnerando las politicas de implementación de una infraestructura de clave publica en producción.

En el caso de Firefox para importarlo vamos a  Edit -> Preferences -> Security -> Advanced -> Encryption -> Show Certificates . y importamos el certificado superadmin.p12 ahora les preguntara el passwor dque hemos configurado anteriormente en "web.properties" lo insertan  y como hemos configurado los IPTABLES y enviado el .p12 a un cliente para configurar el servidor PKI deberemos entrar a la siguiete URL

>>  http://ca.cyttek.com/ejbca/


Ok, asta el momento tenemos instalado correctamente nuestro infraestructura de clave publica, todavia no hemos entrado en las configuraciones ni emisión ni diseño que correctamente en un desarrollo el diseño es la parte mas compleja de la infraestructura, pero esta serie de post , van enfocados , en esos proyectos, que constantemente veo, de implementación de infraestructuras de clave publica, donde las empresas de cierto calibre estafan una cantidad risoria  de millones de dolares a los gobiernos para sus PKI, sus tarjetitas sus OSCP , como ENTRUST, RSA, entre otras, viene y decontruyen millones de USD para implementar sus infraestructuras, con estos post intento que los gobiernos con sus presupuestos publicos se asesoren mejor en las implementaciones  y al final de esta seria consegiremos crear DNIe , publicar una OSCP , entre otros ..

Lo que quiero es esclarecer bien que una infraestructura de clave publica no es simple su diseño y su  configuración, pero estoy cansado de esas estafas que alfinal se reparte algun politico  como la de Perú, o OpenCA de venezuela a saber como manejan el Timestamping, y esperemos que colombia, ecuador, y bolivia no caigan en los mismos ejes de proyectos con estafas, aqui pueden ver. que se puede remplazar una PKI enterprice, con los ajustes correctos...

Saludos

Bl4ck_D4wn


¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬|||

Infraestructura de clave publica I
Infraestructura de clave publica II (proximamente.)
Infraestructura de clave publica III
Infraestructura de clave publica IV
Infraestructura de clave publica V

¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬|||

Propiedades de la Ciber Guerra

El problema del concepto de la ciber guerra , como lo vamos a  atacar por pedazos, la realidad es que como muchos sabrán es un campo para los gobiernos nuevo; el meterle la mano a Exploits, 0days, Rootkits, Troyanos, super complejos,.. Pero en realidad es un nuevo denominador que se  vende como que crea un mercado de soluciones nuevas a proveedores de seguridad por que en la ciber guerra se vende un problema asociado a un concepto en unidad. 

La ciber guerra no es un todo no es un producto que puede defender contra todo, la ciber guerra tiene unas propiedades en los ataques en las defensas y en las implicaciones que se deben de tomar para mediante algún fin político, Social, Económico, Cultural o religioso impulsar una serie de actos 

En la ciber guerra también tenemos leyes, leyes que afectan, a las estrategias y a las tecnicas usadas  para medir los ataques que no tienen fronteras en el mundo cibernético , al cual un atacante puede desplazarse y falsear su locacalizacion por innumerables proxys, y desaparecer , por que las leyes también influirán en las operaciones de logística que los gobiernos llevan a cabo.

Ok, ¿¿Aquienes Tenemos en estos campos.?? ¿Quienes son los actores del juego?

1) Ciber Terroristas
2) Ciber Espías
3) Ciber Guerreros
4) Ciber Criminales

El Ciber Terrorista tiene unas motivaciones diferentes,  enfocadas en ideológicas , la cual se centren en un mayor daño en mínimo tiempo, con ataque que causen el mayor daño.
El cual ataques a la bolsa financiera mediante Protocolos FIX, ataques a las fallas de los sistemas de anti-choche de aviones,  ataques a sistemas SCADA, 0days, bloqueos de radio frecuencia pueden tener un campo dentro del mundo del ciber terrorista de muy buen uso

El Ciber Espia general mente tiene un sistema de operaciones piramidal  el cual una vez identificado el agente puedes saber de que gobierno proviene ya pueda ser mediante puntos finales y generalmente en software, existen formas de relacionarlos con los origenes, y sus objetivos van mas enfocados en la adquisición de datos , del objetivo a largo plazo. Un ciber Espia sus funciones dentro de la ciber guerra tiene otro campo de productos que requiere..
El cual Rootkits, Backdoors, exploits remotos y ataques de ing. Social tienen un vector de uso mas grande para este campo de profesionales el cual general mente van a pertenecer a instituciones gubernamentales en su mayoría.

Los Ciber Guerreros son  al final y al cabo capital humano "entrenado" (palabra clave) para desarrollar operaciones cibernéticas complejas como pentesting/ethical hacking, protección , detección y forense, sus objetivos en operaciones deben ser a un largo termino, con operaciones de alto coste y alto valor para el objetivo, campos como la contra-inteligencia también estarán dentro de sus limites. Un ciber guerrero la problematica que afronta es  bastante compleja y su nivel de preparación debe ser mas alto. 
En este enfoque basicamente ese capital humano de un ciber comando y de un ejercito debe estar preparado para casi todo.

Los Ciber Criminales son un marco de personas que son desplazadas por el afán de económico, son general mente y técnicamente de operaciones de corto tiempo , son muy creativos y con nuevas metodologías en cada golpe, es un mal que no se puede erradicar, es un negocio el cual se focalizan en puntos vulnerables, este tipo de problematica no tiene punto de vista sobre el sistema que penetra solo busca un beneficio económico de ese acto.
Herramientas como RATs, 0days, ExploitPacks, malware, mas genéricos son un mercado muy fructuoso para ese marco de la ciber guerra.


Para resumir los perfiles:
Ciber Terrorista: Perfil de extremistas
Ciber criminal: beneficios económicos
Ciber Espía: Tacticas de encubierta
Ciber guerrero: Estrategias Destructivas/ofensivas-Defensivas

En definitiva este campo genera un nuevo marco de negocio y implicancias entre gobiernos, y personas comunes desde mi experiencia, en la creación de algunos programas de ciber entrenamiento y herramientas para sus juegos en campos específicos  creo que desde  un punto de vista objetivo, esto va a moverse cada vez mas, el generar un problema humano cada vez entre gobiernos va a ser mas difícil por las regulaciones internacionales, pero segregar un desgaste económico a infraestructuras que contengan inversiones fuertes de capital, proyectos  , bolsas de valores, banca, etc.. va a ser la nueva estrategia política para ataque entre países, por que bajas humanas hoy en día tiene un impacto mediatico muy fuerte.

Y el problema es que los países latinos, donde supuestamente esta la siguiente economía en evolución no consideran que un impacto terrorista podria generarles perdidas incalculables, no consideran en que mediante ciber armas tienen mejor campo de actuación los gobiernos que las operaciones a la vieja "usanza", que sus sistemas de defensa son vulnerados por grupos de hackers constantemente.
No solo esta una falta de cultura para esos cargos diligentes, sino un impulso credulidad hacia estos campos que actualmente sostienen la economía, la política, y la automatización de procesos en cualquiera de los campos que se requieran.

No quiero inferir en otro tema "ciber burracos"(que da para otro post) pero como reseña dejare que Gobiernos se que todavía es un tema nuevo para ustedes, pero los tanques ya se acabaron hace años, es mas eficiente desarrollar un Stuxnet de 1,000,000 USD que adquirir un porta aviones de 100,000,000 USD y gastos de armamento, aviones personal , no solo por temas político/económicos, sino por impacto en el país objetivo y eso estados unidos lo a demostrado muy bien.
Es mas eficiente desarrollar armas de ciber inteligencia para espiar a narcotraficantes, y operadores de otros países, que tener grupos de controles de personal.
Es mas eficiente encontrar fallas en los sistemas de transporte aéreo que entrar con un arma de fuego a un avión en estados unidos .
Algún día dará tiempo para un post de diseño de armas de ciber guerra, pero por el momento, lo dejaremos así. }:)

Para resumir estas propiedades de la ciber guerra sera y son los futuros y actuales jugadores en este juego. y se tienen que tomar en cuanta no solo los personajes sino las herramientas.

Saludos

Bl4ck_D4wn


1/09/2013

Bancos Seguridad por estupidez publicitaria

Cuantos no habéis visto las presentaciones de CISCO, IBM, ,Symmantec, ESET , entre otros (los primeros que se me pasan por la cabeza).. o de grandes empresas de seguridad o de IT de vuestros países , en donde un producto hace de todo , es contra la ciber guerra, es antivirus, para 0days, es firewall, IDS, o tienes DLP , vente con nosotros por nuestra red inteligente donde nosotros sabemos todo, tenemos las mejores soluciones del mercado.

Miren este esta enfocado para ustedes Bancos, se que nadie es profeta en su casa, pero el conocimiento no se centrifuga terminando la espiral en el mismo punto, no le pertenece todo a un solo producto o proveedor, y menos a una solución. "Le pertenece a un proceso constante , técnico bien ejecutado y con los parámetros de evaluación correctos y con los profesionales correctamente cualificados"

Pretendo enfatizar en ustedes , que mueven "X" cantidad de transacciones online, transacciones internacionales, inversiones de miles de clientes, Ladrones y usurpadores del control económico mundial (algunos bancos).

Bueno siguiendo uno de los post Anteriores que igual también puede aplicar para bancos aunque están un poco mas regulados las empresas privadas.

Al grano, Bueno me parece que se están llevando por la estupidez publicitaria cada vez veo mas gerentes que por cambiar a un producto que les vendieron que era mejor están mas seguros , pues Sr's no es así especialmente me voy a enfocar en la Banca de Latam, Tienen problemas de phising , su seguridad web (mejor dicho la web que hacen outsourcing) no la verifican  adquieren productos que ni siquiera saben si es lo que necesitan para el caso de Firewalls, NGF, UTMs, Balanceadores de carga , IDS, Etc..


  • En Venezuela el 90% de la banca online en vulnerable. y me remito a las experiencias dictando una clase de seguridad e la información encontramos el banco con mas transacciones online de todo el país con SQL injection , entre muchas otras..
  • En Colombia son tan recelosos y quieren mantener tanta discrepción y secretismo que la seguridad por ofuscación no funciona no son las políticas que deberían llevar y los outsourcing la mayoría de aplicaciones web son CMS que no tienen dinero para desarrollar con buenas políticas .
  • En Perú, creo que ni lo voy a comentar, no perderé muchas lineas de este post explicando como realmente funciona.
  • Ecuador, para que les ponen directrices sin parcialmente ni las siguen o las engañan para quedar bien con la superintendencia de banca.
Y podríamos ir mas países pero no quiero "romper los huevos para hacer tortillas", quiero enfatizar en su visión , Sr's se que mensualmente ven a muchos proveedores  de diferentes soluciones pero tomen el tiempo de escuchar atender , localizar y probar las soluciones con sólidos pases a producción, están jugando con nuestro dinero con el dinero del resto .

Ademas que las políticas para ascender en un banco en el área de seguridad sean tener ISO, COBIT, ITIL,PMP  y donde quedan SANS? EC_Council ?, Infosec.??? osea que al final quien decide es una persona que no sabe ni lo que adquiere.

Haber si con esto lo ven quiero que miren la foto y vean si alguna de esas certificaciones cubre todo el espectro tanto de procedimiento el ¿Como? y el ¿Que?


No pretendo que las que propongo son buenas pero una mezcla de todo , para esa gente que asegura el dinero del resto no estaría nada mal, que una persona que no sabe ni lo que es linux este en un área de seguridad de un banco y que en su vida a programado me parece un insulto a mi fé por la seguridad de las operaciones de ese banco.

He visto Bolsas de valores que intercambian mediante protocolos FIX 3.5 y claves Wifi en WEP( los Stocks de miles de clientes.) y luego se quejan de la ciber Guerra; si tu entidad que mueves mas de 1,000,000 USD al día tienes una clave web que con Aircrack cualquiera sentado en el café que esta en tu esquina puede acceder. (no pongo el nombre por que seria muy jugoso)

O Bancos con aplicaciones Web como estas 

La primera Foto es para que habrán los ojos.



















Ya abrieron los ojos.??


Al parecer nadie les explico que usar Drupal con FckEditor no es lo mas optimo.. y que el .htcaccess puede ejecutar archivos con las extensiones que queramos. y que parchean 30 veces y 30 veces lo siguen teniendo igual.

Oque Jboss y Oracle se pueden hacer mejores configuraciones

Al parecer pueden infravalorar la bolsa hacer estafas bursátiles y  nunca han escuchado de OWASP TOP 10 al parecer

ATMs que solo falta que te pongan el puerto USB y no quiero pensar las nuevas adquisiciones del BCP del solidCORE o otros bancos que andan a pelo o con con Antivirus.


*no pongo mas fotos por que se volvería en una pasarela de parís con tantas fotos .
y tampoco pretendo que sea un bug party..

  •  Usar OpenCMS antiguo y mal configurado para un Banco?
  •  Delegar a un firewall de capa 3 la seguridad de la capa de aplicación?
  •  Dejar aplicaciones de transacciones bancarias entre bancos publicas a la intemperie.
  •  Aplicaciones de banca mobil con bugs..?
  •   Seguridad en los ATMs con windows XP?
  • Usar aplicaciones donde la seguridad de los inputs se las dejas a los clientes?
Un sin fin de diferentes problemas que encuentras en el día a día y te hacen pensar muchas cosas..


Podríamos hacer las publicaciones esas de 30 días un día por falla y todavía faltarían días para cubrir todas las aberraciones que se encuentran en LATAM. pero ni ustedes entenderían que es ni cual es su fin, ni tampoco perdería yo tanto tiempo para que ustedes vallan corriendo a "big providers" a pedirle ayuda o despidan a la gente que no tiene la culpa, y al final terminaría con un espectro de lectores que solamente buscarían fallas en el blog que no es el objetivo..

He visto de todo y en muchos casos hemos recomendado pero como dijo un dicho "maduramos con los daños no con los años" ,Y creo que para ustedes también sera así..

Espero que alguna reflexión levante se que el día a día de los procesos operaciones y otros comen el tiempo a cualquiera pero  tomen su tiempo en mejorar las políticas , para que tomen en cuenta las recomendaciones ,  por que si no al final terminaran madurando con los daños que les costaran de su bolsillo. :)

y para Terminar.. por que podríamos seguir :

y eso también aplica para todos esos ing. que se ven por ahí sueltos..

Saludos

Bl4ck_D4wn










1/06/2013

Burocracia y malversación en La seguridad de la Información

No soy economista , ni político, ni adivinador de cartas pero lo mismo que esta pasando en España todo los políticos roban descaradamente, blindan sus jubilaciones y pensiones, aumentan sus sueldos y sus chalets. Me parece una insolencia y una falta de bases morales que alguna vez defendían, que se malversen fondos públicos después que mucha gente aporta para que la calidad de vida promedia en el territorio en el que vives aumente  y te encuentras a unas familias que se enriquecen y que dirigen el "cotarro". Que Movistar España deba unos tributos escalofriantes al estado español que los bancos y sus jugadas y bonos basuras controlen la economía mundial me parece de los mas infame, y pongo ejemplos del estado español por que me hierve la sangre todo eso y en casos en latino américa podría seguir y creo que no habría suficiente espacio en bits en Amazon para registrar los robos y malversaciones,

Pero para los que nos movemos por los lares de la seguridad de la información creo que al final desde la piramine de políticos baja a todas las áreas y afecta a la nuestra también, en nuestro caso también luchamos contra la conocida estupidez o el desconocimiento muchas veces de lo que realmente necesitan los clientes..

Si eso va para todos, Grandes empresas que tiene un área de seguridad, pequeñas , medianas, estés enfocado 100% en seguridad o solo sea una rama de tu negocio,seamos claros ustedes nosotros todos jodemos y nos lo ponemos mas difícil cada vez pero difícil no para la gente sin talento, sino difícil para la gente con talento. y eso en verdad me hierve la sangre la malversación de oportunidades laborales , miren trabajo ahí y para todos..

Pero encontramos a las grandes empresas(Nacionales o internacionales) desde europa asta Latam y otros que sub-contratan y contratan a gente no experta, que corre herramientas automatizadas reducen presupuesto ofrecen servicios pensando que son expertos, seamos claros tener un titulo no les asegura nada ser "experto es saber lo que estas haciendo en ese campo", e visto demasiados casos ya informes de Penetration Test que solo se encuentra basura donde queda la calidad el ROSI, los parámetros que realmente requiere una empresa ,e visto sustentaciones de esas "Por que si , por que yo soy el experto y digo eso".
Bueno y no solo para los que ejecutan servicios de seguridad ofensiva, esta también va para integradores , instaladores de firewalls IDS, IPS, balanceadores de carga anti-ddos y todo eso..

No entienden que si yo sigo una política de instalar le basura a uno de mis clientes cuando el mercado rote y busque otros proveedores contratara también basura y afecta a todos. 

Ver En presentaciones listas de herramientas y herramientas ( como snort para pentest Externo), sustentar proyectos por amistades, en empresas privadas y publicas. (desde Europa asta américa latina Colombia, peru , ecuador, venezuela etc..etc..)

No estoy en contra ni a favor de grandes como Cisco , ibm, y 33.000* empresas mas medianas y pequeñas (*33,000 es una expresión) todos jodemos esto es una balanza, y estoy empezando a ver que para el mercado mediano común en latino américa esta empezando a aparecer el "efecto doopler" en este campo y me horroriza que termine en mas..

Sr's todos buscamos el lucro unos administrando otros desarrollando proyectos y otros que nos gusta la parte técnica, pero seamos consecuentes, con lo que hacemos  si en promedio mejoramos la calidad al final el mercado terminara pidiendo calidad.

Se que muchos no entenderán este mensaje no se darán por aludidos ni siquiera pretendo que comprendas lo que esta pasando mas allá de lo que escribo, y espero que algún día tus 2 dedos de frente lo entienda.
Lo que quiero expresar es que debemos encontrar una solución donde el mercado sea igual de competitivo para los nuevos y los talentos que estén por llegar contra los grandes amasadores de dinero y corporaciones por que el talento no es algo que se adquiere con dolares el talento y las ideas nacen cada día, por que alguien que recién empieza tiene el mismo derecho que alguien que esta en esto años, y veo a muchos talentos sin futuro y gente sin talento con futuro 

Veo dinero de estados públicos perderse con proyectos que no saben ni siquiera para que les sirven esos Hardware que les vendieron, veo empresas privadas que solo reclutan a amistades para proyectos al final terminando en sub-contratas, veo contratos ganados por simple desconocimiento y ignorancia del cliente , veo tantas cosas que me empieza a molestar un poco..

Sr's para dedicarse a algo te tiene que gustar, tienes que saber donde te metes, y tienes que ponerle los huevos para sacarlo..

Creo que de todas esas asociaciones que ahí ISSA, ISACA, OWASP, etc..etc.. ninguna centra y concentra un foro de trabajo y eso es muy importante para potenciar la sociedad  y el trabajo (ojo no pretendo acusar a ninguna de esas asociaciones y infravalorar su trabajo) esclarecer quieren realmente tiene el talento y ofrecen lo que se le llama una calidad valorada para dicha oferta y quien requiere .

No pretendo con esta opinión infravalorar trabajos por que se que ahí muchos y muy buenos, pero pretendo equilibrar poner una balanza desde un punto de vista objetivo para esa gente que empieza y quiere iniciar empresa que tiene talento, que quiere cumplir sus sueños, que quiere salir adelante y equilibrar tanta mala calidad de otras empresas que entran a esto únicamente por lucro, y se mantiene ya ofreciendo basura, automatización de herramientas que no ofrecen ningún valor al cliente o consejos y recomendaciones que no tiene nada de valor.

Esta faltando una cámara de comercio de seguridad de la información si se puede llamar así  un foro donde los oferentes y los que requieren estos trabajos algo como un freenlacer pero mas penetrado en un mercado  de seguridad de la información pero mas penetrada al mercado y a los usuarios locales , exista  una libre competencia y una calidad asegurada.Algo como para los políticos ponerle un requerimiento para ser políticos (aparte de ser brutos y ladrones).

Creo que si lo entendisteis cual es mi punto verán como ahí un equilibrio con esta propuesta , donde generara oportunidad y subirá la calidad y requrira de un mejor nivel para ese promedio que ofrece basura.

Bl4ck_d4wn



VANT Capitulo I

Voy a hacer algo de referencia a la wiki para inicializar la explicaciones de que es un UAV aunque el termino mas correcto para referenciar a los aviones no tripulados y que me a gustado mas es UAS.. y para tocar las pelotas nosotros usaremos el termino VANT :)


Un vehículo aéreo no tripuladoUAV por siglas en inglés (Unmanned Aerial Vehicle), o sistema aéreo no tripuladoUAS (Unmanned Aerial System), conocido en castellano por sus siglas como VANT, es una aeronave que vuela sin tripulación humana a bordo. Son usados mayoritariamente en aplicaciones militares. Para distinguir los UAV de los misiles, un UAV se define como un vehículo sin tripulación reutilizable, capaz de mantener un nivel de vuelo controlado y sostenido, y propulsado por un motor de explosión o de reacción. Por tanto, los misiles de crucero no son considerados UAV porque, como la mayoría de los misiles, el propio vehículo es un arma que no se puede reutilizar, a pesar de que también es no tripulado y en algunos casos guiado remotamente. 
http://es.wikipedia.org/wiki/Veh%C3%ADculo_a%C3%A9reo_no_tripulado

Para continuar vamos a hacer una pequeña parada en este vídeo de los Top 10 VANT, en el mundo militar para sus operaciones..



Ademas de ello esta referencia http://www.theuav.com/uav_types.html es bastante clara y bien explicada de sus tipos y de alguna información Referente Sobre el tipo de VANT que vallamos a investigar.

Luego para ir un poco mas allá de lo que vemos como sabemos que todas las empresas les gusta el ego entonces vamos a escoger el RQ-4 Global hawk entonces hacemos un poco de google hacking :P

Google query >>> global hawk communication system

Podemos encontrar desde el brochure asta alguna información extra:

http://www.as.northropgrumman.com/products/ghrq4a/assets/GHMD-New-Brochure.pdf
http://www.raytheon.com/capabilities/products/globalhawk_gs/
http://www.airforce-technology.com/projects/rq4-global-hawk-uav/
http://www.af.mil/information/factsheets/factsheet.asp?id=13225
http://air-attack.com/page/54/RQ-4-Global-Hawk.html

Para los que no tenían ni idea ahora podemos saber asta como se comunica el Avión.. (esta bien para ser un sistema se operaciones militares.) entraremos en mas detalle en el acercamiento por estos lados, mas adelante.

Pero antes de seguir mas lejos y meterse al tema de las vulnerabilidades de los aviones no tripulado militares y comerciales, Algunas estadísticas de esta búsqueda de los aviones no tripulados por que al parecer están en auge.

Aquí dejo un pequeño estudio echo por mi para el geo-mapeo y las estadísticas del auge que están tomando los aviones no tripulados y sus noticias relacionadas en Internet, como material de apoyo están recolectados y mapeados en las 3 gráficas mas abajo.

1) https://recordedfuture.com/live/sc/118m3RnukGko
2) https://recordedfuture.com/live/sc/2yysCQuFFxnq
3) https://recordedfuture.com/live/sc/5HFBWK43kfor


Como anécdota interesante es que el ejercito de los USA hizo operaciones en Iraq y en el 2009. El ejercito de investigaciones especiales con sus Ingenieros Consiguieron interceptar las imágenes que los AUV/UAS enviaban de sus operaciones de inteligencia en el espacio Iraquí, mas adelante Iraq consiguió tumbar un avión no tripulado como detalla la noticia de la URL que les dejo mas abajo, pero esa primera operación de intersección de comunicaciones de desarrollo con un software de 29 USD (SkyGrabber) con una antena como las que usábamos en los 90's (para el Canal Satélite Digital ) por que en aquel entonces los aviones enviaban los datos de vídeo sobre canales no cifrados.

http://www.dailytech.com/Iran+Yes+We+Hacked+the+USs+Drone+and+Heres+How+We+Did+It/article23533.htm

Bueno la Mega Ingeniería, que han visto en el Link que les deje viene basada en una investigación proveniente de este PDF sobre "Spoffing GPS comunications" ( http://www.syssec.ethz.ch/research/ccs139-tippenhauer.pdf )  y a esa mezcla le añadimos  un poco de Hardware Hacking y consiguieron tumbar un UAS/UAV de los U.S.A. en espacio aireo de Iraq luego Estados Unidos (aquí los llamaremos "los USA") , contrarresto con un Famoso Software Llamado "Stuxnet", pero para no irme por las ramas el acercamiento que vamos a seguir para estos juguetes  sera empezar desde Afuera asta adentro (tendra mas explicación y logica en los Prox. Capitulos) seguiremos los procedimientos como una investigación Forense, primero desenchufa el cable pero del Router , para ir descubriendo las vulnerabilidades que tengan en sus concepciones..

Saludos

Bl4ck_D4wn



1/05/2013

Welcome


Bueno hoy por La calor, de estas vacaciones , mi locura y tiempo libre, voy a iniciar , un blog personal donde , voy a poner algunas experiencias y comentarios y ideas del día a día para mis anotaciones personales..

Si tu lector, del Futuro estas en este momento leyendo esto tal vez sea de uso o no, no lo voy a alimentar el blog con ideas de todos los gustos, tampoco mi meta es ser el blog mas visto..

Pretendo tener un  sitio de referencia donde tener mis ideas ordenadas así sea por días o con la barra lateral de post que iré con el tiempo añadiendo , ademas tomar conciencia de terminar las ideas que me fluyen por la cabeza y como es el inicio del 2013 pues así este año empiezo con algo que ordene mis 1001 ideas de forma estructurada  ,..

Un Saludos Futuro Lector

@Bl4ck_D4wn