Está en la página 1de 6

Seguridad informática

Profesor: José Luis García Cerpas

Alumno: Eduardo Antonio Quiroz Salas Registro: 17310258

Tarea 3.6: Métodos de remediación


Fecha: 04/06/2021
Introducción
Sufrir ataques informáticos está a la orden del día: según Google, más de un 15%
de los usuarios de internet han denunciado haber experimentado el robo de sus
cuentas de email o de sus redes sociales y muchos otros nunca llegan a
reportarlo. Google dice que puso en práctica lo aprendido para evitar el abuso de
67 millones de cuentas vulnerables. A través de esas cuentas, sus clientes no sólo
acceden a Gmail, sino también a otros servicios, como YouTube.
Métodos más comunes de hacking
Ataque de contraseña: Al acceder a la contraseña de una persona, un atacante
puede acceder a datos y sistemas confidenciales o críticos, incluida la capacidad de
actualizar y controlar dichos datos y sistemas. Los atacantes de contraseñas utilizan
una miríada de métodos para identificar una contraseña individual, incluyendo el
uso de ingeniería social, obtener acceso a una base de datos de contraseñas,
probar la conexión de red para obtener contraseñas no cifradas, o simplemente
adivinando.
El último método mencionado se ejecuta de una manera sistemática conocida como
"ataque de fuerza bruta". Un ataque por fuerza bruta emplea un programa para
probar todas las variantes y combinaciones posibles de información para adivinar la
contraseña.
¿Cómo podemos protegernos de éstos ataques?
 Bloqueos de cuenta después de intentos fallidos: Implementar un bloqueo de
cuenta después de varios intentos fallidos de inicio de sesión no es efectivo,
ya que hace que tu servidor sea presa fácil de ataques de denegación de
servicio. Sin embargo, si se realiza con retrasos progresivos, este método se
vuelve mucho más efectivo.
 Hacer que el usuario root sea inaccesible a través de SSH: Los intentos de
fuerza bruta de SSH a menudo se llevan a cabo en el usuario raíz de un
servidor. Asegúrate de hacer que el usuario root sea inaccesible a través de
SSH editando el archivo sshd_config. Establece las opciones ‘DenyUsers
root’ y ‘PermitRootLogin no’.
 Modificar el puerto predeterminado: La mayoría de los ataques SSH
automáticos se intentan en el puerto predeterminado 22. Por lo tanto, ejecutar
sshd en un puerto diferente podría ser una forma útil de lidiar con los ataques
de fuerza bruta.
 Usa CAPTCHA: Todos nos acostumbramos a ver CAPTCHA en Internet. A
nadie le gusta tratar de darle sentido a algo que parece haber sido
garabateado por un niño de dos años, pero herramientas como CAPTCHA
hacen que los bots automáticos sean ineficaces.
 Limita los inicios de sesión a una dirección IP especificada o rango: Si
permites el acceso solo desde una dirección IP o rango designado, los
atacantes de fuerza bruta deberán trabajar arduamente para superar ese
obstáculo y obtener acceso a la fuerza.
 Emplear autenticación de 2 factores (2FA): La autenticación de dos factores
es considerada por muchos como la primera línea de defensa contra los
ataques de fuerza bruta. La implementación de una solución de este tipo
reduce en gran medida el riesgo de una posible violación de datos.
 Usa URL de inicio de sesión únicas: Crea URL de inicio de sesión únicas
para diferentes grupos de usuarios. Esto no detendrá un ataque de fuerza
bruta, pero la introducción de esa variable adicional hace que las cosas sean
un poco más desafiantes y le lleven más tiempo al atacante.
 Controla los registros de tu servidor: Asegúrate de analizar tus archivos de
registro diligentemente. Los administradores saben que los archivos de
registro son esenciales para mantener un sistema. Lo más obvio es una
política de contraseña segura. Cada aplicación web o servidor público debe
exigir el uso de contraseñas seguras. Por ejemplo, las cuentas de usuario
estándar deben tener al menos ocho letras, un número, letras mayúsculas y
minúsculas y un carácter especial. Además, los servidores deben requerir
cambios frecuentes de contraseña.
Inyección SQL: ocurre cuando un atacante inserta código malicioso en un servidor
utilizando el lenguaje de consulta del servidor (SQL), forzando al servidor a entregar
información protegida, enviando código malicioso a un comentario o cuadro de
búsqueda del sitio web no protegido. Cuando un comando SQL utiliza un parámetro
en lugar de insertar los valores directamente, puede permitir que el módulo de
servicio ejecute consultas maliciosas. Además, el intérprete SQL utiliza el parámetro
sólo como datos, sin ejecutarlo como código.
Existen ciertos principios a considerar para proteger nuestras aplicaciones de un
SQL Injection:
No confiar en la entrada del usuario:

 Verificar tanto el tamaño y como el tipo de los datos de las entradas de


usuario:
o Evitando los siguientes tipos caracteres de riesgo para el gestor de
datos:
 El delimitador de consultas: Punto y coma (;)
 Delimitador de datos de tipo cadena de caracteres: Comilla
sencilla (').
 Delimitadores de cometario: Guión doble (--) y "/*..*/" en el
caso de SQL Server.
 Nota: En lugar de evitar los caracteres peligrosos, otro modo
de protegernos es aceptar sólo los caracteres inofensivos.
o Evitando las cadenas con el inicio de nombres de las tablas y los
procedimientos del sistema: "sys" y "xp_" en el caso de SQL Server.
Así como las siguientes palabras: AUX, CLOCK$, COM1, COM8,
CON, CONFIG$, LPT1, LPT8, NUL y PRN
o Utilizar de preferencia controles con valores predefinidos o discretos
tales como cuadros de lista, cuadros combinados, de verificación,
etc. en lugar de cuadros de texto.
 Verificar cualquier tipo de entrada, no sólo lo introducido en los controles IU
sino también aquellas que no son visibles, como parámetros de entrada y
campos tipo hidden de las páginas web.
 Realizar la verificación en todos los niveles y capas de la aplicación, ya que
si sólo protegemos la capa de presentación somos vulnerables a que un
atacante salte a la siguiente capa y realizar su ataque.

No utilizar sentencias SQL construidas dinámicamente.

Aunque de hecho es mejor utilizar Procedimientos Almacenados siempre que sea


posible, así como también:

 Utilizar Parámetros al llamar Procedimientos Almacenados.

Dim myCommand As SqlDataAdapter = _


New SqlDataAdapter("AuthorLogin", myConnection)
myCommand.SelectCommand.CommandType = _
CommandType.StoredProcedure
Dim parm As SqlParameter = _
myCommand.SelectCommand.Parameters.Add("@LoginId", _
SqlDbType.VarChar,11)
parm.Value = Login.Text

No utilizar cuentas con privilegios administrativos.

 Ejecutar las sentencias SQL o invocar Procedimientos Almacenados con


una cuenta con privilegios mínimos. Nunca emplear 'sa' en el caso de MS
SQL Server. Pero de preferencia además...
 Conceder permisos de ejecución únicamente a Procedimientos
Almacenados propios desde los cuales, a manera de "wraper", se realicen
las consultas a las Tablas de Usuario y llamados a los Procedimientos
Almacenados del Sistema que se requieran en las aplicaciones, y negar el
acceso directo a éstos últimos y a las Tablas de Usuario.
No proporcionar mayor información de la necesaria.

 No exponer al usuario final los mensajes de error devueltos por el gestor de


la base de datos, para no brindar mayor información que sea útil al
atacante.
 Implementar un sistema de gestión de errores que notifique del mismo
únicamente a los administradores de la aplicación y el gestor de la base de
datos. Por ejemplo, para el caso de una aplicación web, establecer en el
archivo de configuración web (Web.Config) el valor del atributo debug del
elemento compilation en False y el atributo mode del elemento
customErrors en On o en su defecto en RemoteOnly.

Secuencia de comandos (XSS): El código malicioso se une al contenido dinámico


que se envía al navegador de la víctima. Normalmente, este código malicioso
consiste en código Javascript ejecutado por el navegador de la víctima, pero puede
incluir Flash, HTML y CSS.
Existen dos tipos de ataques XSS:
 XSSPersistente (StoredXSS): ocurre en aquellas partes donde un usuario
introduce datos que puedne ser vistos por otros usuarios. Es decir, cuando
se hace uso de una base de datos o fichero de texto, cuando se almacena
información. Ejemplos de esto son mensajes en foros, comentarios en wikis,
blogs, etc. Aquí lo que debes hacer es comprobar esa inserción de datos en
busca de palabras y caracteres no permitidos a fin de evitar el ataque XSS.
 XSSReflejado(ReflectedXSS): se da cuando se incluyen los scripts en los
parámetros de una petición web. Por ejemplo, cuando un usuario le pasa un
link a tu web a otro, pero ese link contiene un script, o bien un usuario
introduce un script en uno de esos parámetros. En este caso hay que
comprobar las direcciones y los parámetros que recibes a fin de evitar el
ataque. Esto no es lo mismo que phising, no hay que confundirlo.
La forma de proteger el sitio contra XSS es filtrando los datos de entrada que
introduce el usuario, verificando que no lleven etiquetas no deseadas. para ello, lo
mejor es hacer una lista blanca (una lista de cosas permitidas que puede introducir
el usuario) en vez de una lista negra (cosas no permitidas). En este caso, si usas
listas blancas, si te olvidas de algo, simplemente el usuario no podrá introducirlo, en
el caso contrario, puede que te olvides alguna etiqueta y la página sea vulnerable.
Otra forma de protegerse sería utilizando mod_security de Apache, tendrías que
instalarlo y configurarlo para que filtrase todas esas peticiones, pero es
recomendado mejor hacerlo de la primera manera para poder controlar tu todo el
flujo de una mejor manera por código. Esto te serviría para cualquier lenguaje de
programación.
Conclusiones
Para prevenir un ataque, así como para realizar pruebas de vulnerabilidad contra
el mismo en nuestras aplicaciones, no debemos olvidar que cualquier aplicación
que permita una "entrada" que sirva como vulnerabilidad. En este momento
muchas personas piensan que las vulnerabilidades no son peligrosas, pero están
equivocadas en gran medida. Fue Interesante aprender sobre los ataques más
comunes y su forma de defenderse de dichas amenazas.

También podría gustarte