Ransomware (¿seguro que tu empresa no está en peligro?)

Lamentablemente, nos estamos acostumbrando a ver noticias constantes de ciberataques desde hace ya demasiado tiempo. Parece que la gente tomó conciencia del problema tras el ataque hace unos meses del ransomware WannaCry gracias a su alta repercusión sobre Telefónica, los centros NHS del Reino Unido y otras organizaciones de todo el mundo (de hecho, las ofertas de empleo se triplicaron en la bandeja de entrada de LinkedIn…).

Es evidente que la amenaza planteada por los ciberdelincuentes está en constante evolución, ya que casi a diario se lanzan nuevos tipos de malware cada vez más inteligentes. De hecho, desde entonces hemos visto múltiples ataques a gran escala en Europa, paralizando los sistemas de información sin discreción.

Todo el espectro de pymes y grandes empresas han sido víctimas de los brotes de WannaCry, de hecho hemos visto como empresas de toda Europa fueron atacadas por un ataque ransomware conocido como «Bad Rabbit».

¿Pero esto pasa mucho?

Es habitual pensar que son las empresas más grandes con marcas conocidas las que están más expuestas a estos ataques, ya que poseen una gran cantidad de datos, lo que podría ser un objetivo claro para los ciberdelincuentes. Pero en realidad las empresas más pequeñas son más vulnerables a los ciberataques, ya que no cuentan con los recursos, tecnología y formación necesarios para prevenirlos.

El informe sobre el estado global de seguridad de la información de PwC indica que las empresas tienen que desembolsar un promedio de 980.000 € cada año como resultado de violaciones de seguridad cibernética.

Con menos recursos, muchas PYMES corren el riesgo de fracasar si no hacen más para protegerse.

Para hacernos una idea, una encuesta de violaciones de seguridad de la empresa EY indicaba que una cuarta parte de las empresas se ven afectadas por una violación de la seguridad cibernética cada mes. No debemos tomarlo como un dato exacto, pero debería servir como una señal de advertencia para las empresas tanto grandes como pequeñas.

¿Cómo me protejo?

A las PYMES no les queda más remedio que aumentar el presupuesto de defensa de seguridad cibernética, pero mientras eso ocurre, al menos deberían pensar en:

  • Asegurarse de haber instalado software antivirus y antimalware en todos los dispositivos de la organización.
  • Adquirir software de forma legal y, por supuesto, asegurarse de instalar regularmente cada actualización.
  • Teniendo en cuenta que la gran mayoría de los ciberataques son el resultado de un error humano, asegurarse de capacitar a su personal sobre cómo evitar que el negocio sea vulnerable a los ataques.
  • Echar un vistazo a los consejos de SecurityInside.info para PYMES sin dinero.

La mejor opción es emplear expertos

Las empresas que no lo tengan, deberían considerar la contratación de profesionales que tengan la experiencia para defenderse de estos ataques. Hay un número creciente de empresas a las que pueden subcontratar, en caso de que no tengan los fondos para contratar a un Responsable de Seguridad.

En cualquier caso, está claro que el problema está ahí y ha venido para quedarse. Como empresa o PYME no puedes quedarte esperando, el momento de actuar es ahora.

La webcam no deja de mirarme… ¿la tapo?

A pesar de que a día de hoy existe todavía gente que no cree en estas cosas, el espionaje vía webcam es un hecho que ocurre a diario. Atrás quedaron las películas de suspense o los mitos urbanos donde se asustaba a los usuarios de pc para que hicieran un uso responsable de éstos. La webcam no es sólo una herramienta de la que tú dispones, sino que puede ser interceptada, robada o controlada por alguien que accede ilegalmente a tu ordenador. Y, casi aún más importante, también en tu móvil.

Y es que el espionaje no existe sólo en las teorías conspiratorias que hablan sobre Gobiernos que observan a su población. Hace años ya conocimos la noticia de que se usaba el espionaje por webcam para recabar información sobre los usuarios del portal Yahoo en el Reino Unido.

El espionaje va mucho más allá en la actualidad. Ahora, cualquier persona que quiera sacar información puede tener una razón más que suficiente para intentar hacerse con el control de tu cámara. Podrá ser una persona de tu entorno que busca chantajearte, un acosador que quiere observarte o sencillamente un personaje anónimo de internet que pretende conseguir dinero a cambio de información confidencial.

Todo esto toma especial relevancia cuando hablamos de chantaje a menores. Yo soy padre, me preocupa mucho este problema y quiero poner las medidas necesarias para cuando mi enana mayor quiera ser parte activa de las redes sociales.

Pero, ¿cómo sé si me están espiando por mi webcam?

Aunque no es la única manera, puedes poner atención a estos consejos:

  • Luz webcam encendida. No hace falta ser un genio con ésta: si la webcam tiene la luz encendida y tú no estás usándola, ya sabes que hay alguien más que sí lo está haciendo. Pero ojo, algunos ciberdelincuentes saben saltarse ese paso y podrán espiarte por tu webcam sin que la luz se encienda.
  • Mensajes sospechosos, aunque existe la posibilidad de que te espíen sin más, lo normal es que quien lo hace intente sacar algo a cambio. Si no la conoces, te invito a leer la historia de Taylor Cooper a quien chantajearon a través de Facebook, engañándole para que mostrara imágenes íntimas por la webcam. Poco después, se encontró con que dichas imágenes circulaban por Youtube y le pedían mucho dinero si no quería que llegaran a su familia.

La privacidad en internet es un tema complicado, todos tenemos que tener cuidado con las cosas que mostramos en una conversación privada, porque algún día podrían dejar de serlo.

Entonces, ¿cómo evito que me espíen por la Webcam?

  • Escoge un buen antivirus. La exploración que suelen ofrecer para buscar software sospechoso podría advertirte de que alguien está entrando en tu ordenador para espiarte por la webcam, para espiar tu actividad, …
  • Desconecta la webcam. Evidentemente, si está integrada en tu ordenador esta opción no es la más adecuada, y si no lo está podrás pensar que es un fastidio tener que desconectarla cada vez que la usas. El que debe valorar el riesgo es el propio usuario, y por tanto, la elección también es suya. Algunas aplicaciones te permitirán bloquear tu webcam si está integrada en tu ordenador.
  • Tapa la webcam. Ésta es la forma más sencilla de protegerte. Si usas una webcam externa, gírala hacia la pared o tápala con algún objeto, y si está integrada en tu ordenador una simple pegatina bastará para taparla. Así, en caso de que alguien finalmente acceda remotamente a tu ordenador, sólo conseguirá ver una buena pantalla en negro.

Que los ciberdelincuentes están ahí es algo que deberíamos aceptar como inevitable y por tanto deberíamos encarar nuestras acciones a que no nos conviertan en víctimas de chantajes o robos de información. De esta forma, conseguiremos hacer un uso responsable de nuestra webcam, navegando por internet con la tranquilidad de quien se sabe en puerto seguro.

phishing

Phishing: cómo identificarlo

De acuerdo al Código Penal español, un fraude (o estafa) es aquel en el que se usa el engaño para producir un error en otro y conseguir lucrarse con ello. Pero lo que es realmente nuevo y nos interesa si somos de los que usamos el ordenador para cualquier cosa, es el delito considerado como “fraude informático”, especificado en el artículo 248.2 del Código Penal.

En él, se explican las estafas de índole informática:

  1. Los que se valgan de alguna manipulación informática o artificio semejante, consiguiendo transferencias no consentidas de cualquier activo patrimonial.
  2. Los que posean programas informáticos destinados específicamente a la estafa.
  3. Aquellos que usen tarjetas o cheques de viaje o cualquier dato de cualquiera de ellos, realizando operaciones que produzcan un perjuicio en sus dueños.

De esta forma vemos cómo la estafa se ha modernizado y ha avanzado tanto que puede llegar a ser imperceptible para las personas que la sufren. Algunas, de hecho, podrían tardar en darse cuenta de que han sido víctimas de un fraude.

En este artículo hablaremos del phishing

Según Wikipedia, Phishing o suplantación de identidad es un término informático que denomina un modelo de abuso informático y que se comete mediante el uso de algún tipo de ingeniería social, caracterizado por intentar adquirir información confidencial de forma fraudulenta (como puede ser una contraseña, información detallada sobre tarjetas de crédito u otra información bancaria). El cibercriminal, conocido como phisher, se hace pasar por una persona o empresa de confianza en una aparente comunicación oficial electrónica, por lo común un correo electrónico, o algún sistema de mensajería instantánea o incluso utilizando también llamadas telefónicas

El caso más normal ocurre cuando un usuario recibe un email de su banco instándole a dirigirse a una web externa. Dicha web es maliciosa y sirve para recabar los datos del cliente y obtener su contraseña de acceso.

¿Cómo puedo saber que se trata de phising?

Éste tipo de estafas no abarcan sólo el fraude bancario. Pueden vestirse de muchas formas: emails de redes sociales (Facebook, Twitter…), tiendas de productos (cosméticos, ropa, gafas de sol…), encuestas para páginas webs externas. En definitiva,  éstos son los rasgos que suelen tener en común las estafas de pishing informático:

  • Faltas de ortografía o de formato: a menudo estas estafas vienen traducidas de otros idiomas o se han hecho sin considerar el aspecto gramatical. Si ves que aparecen palabras mal escritas y la redacción es pobre y con tiempos verbales extraños, ándate con ojo.
  • Enlaces externos: tal vez la parte más importante de toda estafa de pishing informático. Te intentarán dirigir a otras páginas webs que, aunque tengan la apariencia de ser originales y auténticas, no lo serán.
  • Datos personales: algunas podrán ser peligrosas sólo con el hecho de que entres en ellas, pero la mayoría pretenderán acceder a tus datos bancarios o cuentas personales. En algún momento, te pedirán que introduzcas tus datos de acceso para alguna de tus páginas webs de uso frecuente.
  • Estafador lejano: ocurre cuando el delincuente se hace pasar por alguien que generalmente vive lejos, en algún país diferente al tuyo. Podrás detectarle fácilmente si ya desde el principio el remitente es desconocido.

¿Cómo detecto, interrumpo o denuncio el fraude?

En la entrada en la que hablábamos de delitos informáticos te dimos diferentes opciones para denunciar este tipo de ataques, no dudes en echarle un vistazo si te encuentras en esa situación. Siempre podrás presentarte en cualquier comisaría y te indicarán qué acciones debes tomar, pero mi consejos es:

  • Corta toda comunicación: sea cual sea el tipo de fraude, lo primero que tienes que hacer es cortarlo de raíz.
  • Avisa a tu banco: si es una estafa de tipo bancario y están usando información de una entidad real, lo mejor que puedes hacer es avisarles. A ellos les ayudará en caso de que ocurran más problemas con fraude informático, y a ti te permitirá proteger tu información por si alguien intenta hacerse con ella.
  • Cambia tus datos de acceso: si te has dado cuenta tarde o simplemente quieres estar más seguro, intenta cambiar los datos de acceso que creas que estén en peligro.
  • Algunos servidores de correo electrónico te permiten marcar el correo como posible fraude. Al menos así se evitará que la estafa se extienda.
  • Hazte con una buena aplicación anti-virus y anti-malware que trate de advertirte en caso de que a ti se te pase algún detalle sospechoso.

Recuerda que no sólo es importante el saber cómo actuar tras una estafa, sino también el saber identificarla antes de que ocurra. ¡Toda precaución es poca!

security-api

Security API – Dale a tus empleados lo que necesitan (de forma segura)

Hace poco vimos en SecurityInside consejos a tener en cuenta para revisar la seguridad de tu API. Como comentamos, ofrecer servicios de información en el mundo de hoy si no tienes API, te da una desventaja considerable que podría terminar por arruinar tu negocio.

Es por eso que tu departamento de desarrollo debe tener en mente trabajar en una buena api (sencilla y segura) que de servicio tanto a clientes como a las plataformas y herramientas internas.

Hay muchas formas de desarrollar APIs, pero en mi caso me he decantado últimamente por Flask para Python sobre Elastic Beanstalk de Amazon Web Services.

Security API, ¿por qué?

Cada vez que arranco un proyecto de seguridad con una nueva empresa, me presento desde el punto de vista de vida laboral. Cuento mis años como becario, desarrollador, jefe de proyecto, consultor y luego el paso al mundo de la seguridad. Me miran como diciendo «¿para qué todo este rollo?». Sencillo, es la forma de introducir que soy un apasionado de la seguridad y que mi objetivo principal es asegurar los activos de la empresa, pero siempre tratando de hacer la vida sencilla a los compañeros que tienen que lidiar con todas las medidas y controles de seguridad que se implanten.

Conozco profesionales de la seguridad que nunca se han manchado las manos picando código y que aplican medidas maravillosas que fortifican los activos mientras complican el trabajo diario. Lo importante es la seguridad, pero mi perfil de desarrollador me hace pensar siempre en hacerlo de forma que ellos tengan todas las facilidades para trabajar. Seguros, pero trabajando.

Por todo esto, hace no mucho empecé a dar vueltas a la idea de crear una «security api» que diera servicio a determinadas necesidades de los compañeros de los diferentes departamentos. De esta forma, aplico medidas de seguridad generales y les doy la posibilidad de solicitar ciertos permisos, accesos, … de forma automática en base a roles.

¿Cómo funciona?

Básicamente todo funciona en base a usuarios que se autentican con login, password y 2fa (Google Authenticator, Android, iOS). Cada usuario tiene un rol y subrol con el que se indica qué cosas tienen permitidas y todo se gestiona mediante JSON Web Tokens.

Flask api template

Os he dejado en Github un nuevo repositorio que contiene el esqueleto de una api desarrollado en Python utilizando la biblioteca Flask.

Podéis lanzarlo en local para desarrollo y hacer pruebas de forma sencilla utilizando Postman, ya que os he dejado también un fichero con ejemplos de uso. Tendréis queja… 😀

Vamos viéndo cosillas

En el fichero principal (flask_api.py) veréis unas cuantas cosas que os voy a ir explicando.

Al principio, tenéis una función que se lanza tras arrancar el server, ahí se pueden configurar diferentes cosas (dar de alta la ip del server en determinados grupos de seguridad, enviar notificaciones, …):

##########################################################################################
# This function makes initial tasks.
##########################################################################################
@application.before_first_request
def _run_on_start():

    if not DEBUG:
        print "Flask started!"
        
        # Here you can do some initial tasks

##########################################################################################

Después se incluyen dos apartados para la gestión de códigos 404 y 405:

##########################################################################################
# This function returns happy 404.
##########################################################################################
@application.errorhandler(404)
def page_not_found(e):
    
    return redirect("https://goo.gl/LuKygx", code=302)

##########################################################################################

##########################################################################################
# This function returns happy 405.
##########################################################################################
@application.errorhandler(405)
def method_not_allowed(e):
    
    ret_html = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>'
    ret_html = ret_html + '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">'
    ret_html = ret_html + '<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'
    ret_html = ret_html + '<title>Flask API SecurityInside.info Template</title>'
    ret_html = ret_html + '<style type="text/css" media="screen">'
    ret_html = ret_html + 'h1 {text-align:left; color: #444;}'
    ret_html = ret_html + '</style></head><body>'
    ret_html = ret_html + '<h1>Flask API <a href="http://www.securityinside.info" target="blank">SecurityInside.info</a> Template</h1>'
    ret_html = ret_html + 'Method not allowed or missing params, check API doc to solve the problem.'
    ret_html = ret_html + '</body></html>'

    return flask_api_functions.ret_content_type(ret_html, 'html', 405) 

##########################################################################################

Una siempre interesante función ping para comprobar rápidamente si el server está vivo:

##########################################################################################
# This function shows API alive info. 
##########################################################################################
@application.route('/' + API_VERSION + '/ping', methods=['GET'])
def ping():
    
    response = {'code': 200, 'message': 'pong'}    
    return flask_api_functions.ret_content_type(response, 'json', 200)

##########################################################################################

La parte más interesante del ejemplo, la gestión del login y creación del token:

##########################################################################################
# This function checks auth user and return JWT.
##########################################################################################
@application.route('/' + API_VERSION + '/login', methods=['POST'])
def login():
    
    # Check preconditions
    ##################################################################################
    response = flask_api_functions.check_preconditions(request, False)
    
    if (response['code'] != 200):
        return flask_api_functions.ret_content_type(response, 'json', response['code'])
    ##################################################################################
    
    # Check for user credentials
    ##################################################################################
    response = flask_api_functions.check_auth(request)
    return flask_api_functions.ret_content_type(response, 'json', response['code'])
    ##################################################################################

##########################################################################################

Y la implementación concreta dentro del fichero flask_api_functions.py:

##########################################################################################
# This function checks user authorization header request.
#
# @param request - User request data.
#
# @return Formatted response.
# 
##########################################################################################
def check_auth(request):
    
    try:
        auth = base64.b64decode(request.headers['Authorization'].split()[1])
    
    except:
        response = {'code': 401, 'message': 'Invalid basic authorization header.'}
        return response

    if len(auth.split(':')) != 2:
        response = {'code': 401, 'message': 'Invalid basic authorization header.'}
        return response
    else:
        """
        Here you have to check user credentials and optional totp value.
        """

        # If user credentials is ok, then generate jwt
        if(True): 
            
            # User with valid credentials
            token = jwt.encode({
                'user_id': '<insert_here_user_id>',
                'user_name': '<insert_here_user_name>',
                'user_roles': '<insert_here_user_roles>',
                'other_fields': '<insert_here_other_fields>',
                'exp': datetime.datetime.utcnow() + datetime.timedelta(minutes=1)}, 
                SECRET)
                                
            response = {'code': 200, 'message': None, 'token': token}
            return response

        # If user credentials is not ok, then return error message
        else:
            response = {'code': 401, 'message': '(d\'oh!) Wrong user, password, totp value or maybe user is not active.'}
            return response

##########################################################################################

Para entender ciertas cosas como la forma de enviar el header «Authentication», pásate por el README.md del repositorio y ejecuta las pruebas con postman, verás que es la mar de sencillo.

El ejemplo es sólo parte del script completo. Si quieres utilizarlo o modificarlo, puedes descargarlo desde nuestro repositorio en GitHub.

 

Importante antes de terminar

Flask no está preparado para funcionar directamente en un entorno de producción, para hacerlo tienes que tener en cuenta un par de cosas (está todo en la documentación del repositorio).

En mi caso particular, ya os he dicho que lo tengo montado en Elastic Beanstalk de Amazon Web Services, si queréis os puedo contar cómo lo he hecho en otra entrada.

Por supuesto, si tenéis alguna duda sobre esta entrada, preguntad que estaré encantado de echar una mano.

Saludos!

delito-informatico

Delito informático: denúncialo!

Hasta hace apenas unos años la figura conocida como «delito informático» ni si quiera formaba parte de algo tan importante como el Código Penal. Como tal, sólo podían denunciarse aquellos delitos que ya tenían una forma física o que existían previamente.

Con la nueva reforma del Código Penal se hicieron, además de algunos estropicios, algunos cambios más que interesantes.

 

Tipos de delitos informáticos reconocidos por el código penal Español

  • Robo, suplantación, usurpación, estafa, fraude, y básicamente todos aquellos relacionados con el bolsillo. Dado que hoy en día forma parte de la normalidad contar con cuentas bancarias, tarjetas de crédito, o sencillamente con dinero on-line en cualquiera de sus versiones, ya venía siendo necesario que se recogiera algún tipo de garantía legal capaz de defendernos.
  • Aquellos que vulneren nuestra intimidad en cualquiera de sus formas. Ya sea accediendo a documentos secretos, interceptando nuestras comunicaciones, realizando transcripciones o copias de las mismas, etc.
  • Calumnias e injurias. Conocidas ya fuera del aspecto cibernético, se ven aumentadas exponencialmente debido a las nuevas tecnologías, que facilitan que la información se divulgue en cuestión de segundos, sea contrastada o no.
  • Amenazas o acoso. Éste sí que es un nuevo paso en nuestro Código Penal. Aunque las amenazas sólo son creíbles si existe un peligro real tras ellas y el acoso debe ser contrastado antes de poder denunciarlo, al menos tenemos la protección que nos hacía falta en casos donde antes no podíamos hacer nada. ¿Tienes un blog y recibes amenazas por lo que publicas? ¿Un chico pesado que te conoció en un foro te ha investigado hasta saber dónde vives? Da igual que las fronteras de internet lleven el rastro hasta el extranjero; la policía lo investigará, tomando las medidas pertinentes.
  • Daños o ataques a la propiedad intelectual. A menudo la información que tenemos en nuestros ordenadores puede valer más que el oro; ya sea con el desarrollo de aplicaciones, por usar un soporte determinado, o porque eres el autor de un nuevo tipo de invento revolucionario y quieres patentarlo. Los delitos contra la propiedad intelectual, industrial, revelación de secretos o simplemente contra el daño hacia la información o contenido de datos que querías proteger, ahora forman parte de algunos de los delitos más comunes, y la policía se ha puesto las pilas para poder hacerles frente.
  • Delitos de tenencia. Muchos más fáciles de denunciar, debido probablemente a su naturaleza. Aquí encajan delitos como la pornografía infantil o el chantaje.
  • Acoso escolar o Bullying. Éste es un reciente tipo de delito que no es considerado en muchas ocasiones como denunciable. Los menores, como tales, no son penalmente responsables y por tanto es fácil pensar que los autores menores de delitos informáticos (el más común el acoso escolar) no serán perseguidos por la justicia. NADA más lejos de la verdad. Existe una cosita maravillosa llamada Ley de Responsabilidad Penal del Menor (LRPM) según la cual existen los mismos delitos que podría cometer un adulto pero con diferentes consecuencias. Papá, mamá, no tengáis miedo de que los niños malos queden impunes: la policía también sabe cómo actuar en estos casos.

 

¿Cómo denuncio un delito informático?

Pues bien, dado que ya forman parte del Código Penal, se pueden denunciar de cualquier forma. Las Fuerzas y Cuerpos de Seguridad del Estado permiten denuncias por teléfono, página web, en comisarías, o incluso en hospitales mediante atestado.

Para tener algo más concreto, podéis dirigiros a éstas páginas webs ofrecidas por la Policía Nacional y la Guardia Civil.

Policía Nacional:

Ir al portal de denuncia de la Policía Nacional

 

Guardia Civil:

Ir al portal de denuncia de la Guardia Civil

 

Consejo final

Ante la duda… no dudéis y denunciad. El anonimato que a veces ofrece internet ha conseguido que muchos delincuentes se crean inpunes y piensen que no dejan huella a su paso. La verdad es bien distinta, los peritos informáticos forenses pueden obrar maravillas (que se lo pregunten al amigo Lorenzo Martínez) y descubrir que, el que se cree a salvo porque usa el Ciber-Café del pueblo para acosar a la chica que le gusta del instituto, en realidad…no lo está.