Blog sobre seguridad informática, privacidad, anonimato, hacking ético, programación y sistemas operativos en general.

domingo, 18 de junio de 2017

Como recuperar contraseña root en GNU/Linux (Cualquier distribución) y como configurar tu sistema para evitarlo.


Buenos días, queridos lectores. El día de hoy les queremos mostrar la manera de recuperar una contraseña root de un sistema GNU/Linux, la cual muchas veces hemos olvidado o en el momento de cambiarla, debido a una codificación diferente del teclado no ha querido como queríamos, les traemos la solución. Para realizar este cambio no necesitamos discos o software adicional, absolutamente nada y es muy pero muy sencillo, solo deben seguir los pasos que explicaré a continuación.

Importante: Para que este modo de recuperación de contraseña funcione es necesario que el GRUB no tenga contraseña (Más adelante explicaré como añadirle protección a nuestro GRUB).

1) Lo primero que debemos hacer es reiniciar nuestra PC y esperar a que cargue el GRUB, donde nos aparece la tipica pantall de acuerdo a nuestra distribución.


2) Presionamos la tecla 'e' para entrar en modo edición de las entradas del GRUB, nos debe aparecer algo similar a esto:


3) Buscamos la línea que inicia con "linux   /boot/vmlinuz-linux-* root=UUID=*** rw quiet" y al final añadimos "init=/bin/bash" como vemos a continuación.



4) Presionamos F10 para volver a nuestras opciones del grub y presioamos <Enter> para que nuestro sistema arranque, una vez inicia obtendremos una shell con privilegios root para realizar el cambio de contraseña que queramos, tanto de root como cualquier usuario.


Y como observamos tenemos todos los privilegios root y podemos realizar los cambios que deseemos.


Ahora que ya hemos cambiado nuestra contraseña root, reiniciamos nuestra PC, dejamos que inicie normalme y ya podemos ingresar con la contraseña que acabamos de asignar, así de sencillo es recuperarla.

Talvez muchas personas están pensando que la seguridad de GNU/Linux puede ser burlada de una manera tan fácil, esto no es un error de diseño o una falla de seguridad, esto es un error de configuración en el GRUB, un error nuestro. A continuación mostraremos como proteger nuestro sistema para evitar este cambio.

Como proteger nuestro sistema para evitar que nos cambien la contraseña con el procedimiento anterior.
Para los hackers, programadores, especialistas en seguridad informática y usuarios preocupados por su privacidad y seguridad, esto puede significar un riesgo inminente, pero como dije, es un error de configuración de nuestro GRUB y podemos corregirlo para que nadie pueda cambiar nuestra contraseña root de esta manera (Este cambio también puede realizarse con discos externos en un entorno chroot en discos que no estén cifrados). Para configurar de manera correcta nuestro GRUB, debemos realizar lo siguiente:

1) Creamos una contraseña que pueda ser reconocida por el GRUB, usando el comando #grub-mkpasswd-pbkdf2, escribimos la contraseña que deseemos y la confirmamos, si todo sale bien saldrá algo similar a lo que se muestra en la imagen:


2) Abrimos el archivo /etc/grub.d/40_custom con nuestro editor de texto favorito y añadimos las siguientes líneas en el final:

set superusers='user'
password_pbkdf2 'user' 'password'

Importante: El '$user' puede ser cualquiera, a tu gusto pero debes colocar el mismo user en los dos campos requeridos. En el campo password colocamos la contraseña generada en el paso anterior, esta comprende todo lo que aparece desde grub.pbkdf2.sha512.10000.* hasta el final. Las comillas no son necesarias.

3) Una vez que tengamos todo esto hecho, generamos un archivo de configuración de nuestro GRUB con los nuevos parámetros, utilizamos el comando grub-mkconfig -o /boot/grub/grub.cfg y esperamos a que finalize el proceso.

Una vez realizados estos pasos, cada vez que queramos iniciar nuestro sistema o modificar algún parametro en el GRUB al inicio, debemos proporcionar las credenciales asignadas anteriormente, solucionando de este modo el problema anterior.

Con esto damos por finalizado este post, esperamos que sea de su agrado y quedamos pendientes a comentarios. Si les gustó siguenos en Facebook, Twitter y unete a nuestra charla en Riot.

jueves, 15 de junio de 2017

Instalación y configuración de I2P (Invisible Internet Project) en Sistemas GNU/Linux.


El proyecto I2P (Invisible Internet Protocol) nació en el año 2003 de la mano de un grupo de hackers, desarrolladores y arquitectos del software con la finalidad de crear una red virtual privada que no pudiera ser censurada y contara con buenos niveles de protección y seguridad. El funcionamiento de I2P es similar al de conocidas redes como Tor el cual consiste en enrutar el tráfico de la red por varios puntos utilizando cadenas de proxys, sin embargo aunque posea similitudes con otras redes, la red I2P está basada en el concepto de túneles entrantes y salientes, lo cual ofrece facilidad para la adaptación de programas preexistentes a la red I2P. Cada túnel está compuesto por una secuencia de nodos padres, los cuales transportan la información en un sentido unidireccional. La red I2P no se molesta por el anonimato o por ocultar a sus usuarios como las demás, todo usuario puede ser visto por los demás usuarios pero nunca saber lo que envía, hace, su contenido y con quien se comunica. De esta manera aunque no sea su finalidad, brinda un gran nivel de anonimato al momento de establecer comunicaciones con otros usuarios I2P.

I2P está escrito en Java y es complementado con modulos escritos en C y C++, lo que lo hace multiplataforma y compatible con casi todos los sistemas operativos actuales. I2P facilita al usuario la creación de servidores HTTP, FTP, SSH o SMB sin necesidad de que este posea conocimientos avanzados, estos servicios se ejecutarán de forma anonima dentro de la red.

INSTALACIÓN.

Para realizar la instalación de I2P necesitamos descargar el paquete .jar desde https://geti2p.net/en/download#unix y luego usar la orden $java -jar i2pinstall_version.jar -console desde nuestra terminal de comandos.

Descarga.


 Instalación desde la línea de comandos.


Importante: Crear una carpeta llamada "i2p" dentro de /home/$user y realizar este proceso con un usuario diferente a #root.

Durante este proceso el instalador te preguntará tres cosas, aunque dos son obvias. La primera es si deseas iniciar el proceso de instalación, para ello escribes "1" y das enter, la segunda la ruta de instalación allí debes elegir una ruta dentro del sistema donde el usuario que se está utilizando tenga permisos de lectura/escritura/ejecución, la ruta más conveniente es /home/$user/i2p y la tercera pregunta es si realmente deseas realizar la instalación, repetimos los pasos de la primera. Ya hecho esto empezará el proceso de instalación y si todo sale bien nos mostrara al final un mensaje [ Console installation done ]. La instalación mostrada en el screenshot, fue realizada con Java versión "1.8.0_131".

[shl@SecHackLabs Descargas]$ java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)

Luego de realizada esta operación, debemos ir a la carpeta /home/$user/i2p y ejecutar el siguiente comando $sudo sh i2proute install y esperar a que finalize, seguido de esto abrimos el script i2proute con nuestro editor de texto favorito y desmarcamos la línea que dice RUN_AS_USER= y luego del = colocamos el nombre de nuestro usuario, en nuestro caso shl, lo cual quedaría así: RUN_AS_USER=shl, lo guardamos, salimos y ejecutamos $sh i2proute restart, e ingresamos a la siguiente dirección en nuestro navegador http://127.0.0.1:7657 y debe aparecernos esto en nuestro navegador.


Verificamos que los servicios que necesitemos, dependiento de lo que queramos estén activos abriendo la siguiente dirección http://127.0.0.1:7657/i2ptunnelmgr.


Más abajo tenemos la opción de iniciar otros servicios alternativos.


Para tener un mejor rendimiento del servicio, es altamente recomendable configurar el ancho de banda en http://127.0.0.1:7657/config, y ajustando los parámetros de salida/entrada de acuerdo a nuestra velocidad de internet teniendo en cuenta el tope máximo que allí referencian. Cabe aclarar que el valor debe ser dado en KiloBytes (Kb)


En la parte inferior damos en "Guardar cambios" y con eso estará todo listo.


CONFIGURACIÓN DEL NAVEGADOR PARA ABRIR ENLACES .I2P.

Llegamos al momento que todos esperábamos, luego de tener instalado I2P e iniciado el servicio ¿Como hago para navegar dentro de la red i2p? Sencillo, lo primero que debes hacer es configurar el proxy de tu navegador de la siguiente manera: Para conexiones HTTP - servidor proxy: 127.0.0.1 puerto. 4444, para conexiones HTTPS - servidor proxy: 127.0.0.1 puerto: 4445, si usas Mozilla Firefox, debe quedar así:
Y listo! Ahora podremos abrir direcciones .i2p en nuestro navegador tales como son:









Con esto damos por concluído este post, en otro post explicaremos el uso de otros protocolos i2p tales como IRC, FTP y similares. Esperamos que sea de su agrado, si les gustó siguenos en Facebook, Twitter y unete a nuestra charla en Riot.

martes, 13 de junio de 2017

¿Cómo podemos bloquear ataques web común y proteger nuestro sitio web?



R: Inyección SQL

-> Tipos
Formulario de acceso Anulación
de inyección SQL UNION

B: Cross Site Scripting

-> Cross Site Request Falsificación

C: File Inclusion

Tipos-> Inclusión de archivos remotos y ejecución remota de código

En este post les digo unos cinco tipos de ataques web comunes, que se utilizan en la mayoría de tipos de desfiguraciones o vertederos de bases de datos.

Los cinco vulnerabilidades mencionadas anteriormente son la inyección de SQL, XSS, RCE, RFI y LFI. La mayoría de las veces, nos perdimos algunas etiquetas de código de página web ..

coz de este obtenemos ataques de sitios web y permite al hacker para el ataque en el sitio web vulnerables.

R: Inyección SQL

-> INICIO DE FORMA ANULACIÓN

Este es un ejemplo del código vulnerable que podemos pasar por alto fácilmente:

archivo index.html:
<form action = método de”login.php” =”POST” />
<p> Contraseña: <input type = nombre de “pase””texto” = /> <br />
<input type =”submit ”value =” Autenticar”/> </ p>
</ form>

login.php archivo:
<? php
// EJEMPLO DE CÓDIGO
$ ejecutar = “SELECT * desde la base de datos donde password = '{$ _POST [' pass'])”;
$ resultado = mysql_query ($ ejecutar);
?>

Simplemente podemos evitar esto mediante el uso 'o '1 = 1', que ejecutará ‘password =’ o' 1 = 1” ;”.

Alternativamente, el usuario también puede eliminar la base de datos ejecutando “' gota base de datos de la tabla; - “.

PREVENCIÓN:

Utilizar mysql_real_escape_string en el código php.

Ejemplo:

<? php
$ badword = “ 'OR 1'”;
$ badword = mysql_real_escape_string ($ badword);
$ mensaje = “SELECT * desde la base de datos donde password =‘ '$ badword'’;
echo “bloqueados”. $ mensaje. “;
?>

-> UNION SQL Injection

inyección SQL UNION es cuando el usuario utiliza el comando UNION. Los controles de usuario para la vulnerabilidad mediante la adición de una garrapata al final de un “= .php? Id” archivo. Si se vuelve con un error de MySQL, el sitio más probable es vulnerable a la inyección SQL UNION. Se procede a utilizar ORDER BY para encontrar las columnas, y al final, utilizan la UNION ALL comando SELECT. Un ejemplo se muestra a continuación.

http://www.site.com/website.php?id=1 '

Usted tiene un error en su sintaxis SQL cerca”en la línea 1 SELECT SUM (cantidad)
como el tipo de las órdenes de donde (estado = 'completado' O estado = 'confirmados' O estado = 'pendiente') Y user_id = 1 '

Sin error-> http://www.site.com/website.php?id=1 ORDER BY 1-

Dos columnas, y se vuelve con un error! Esto significa que hay una columna.
http://www.site.com/website.php?id=1 ORDER BY 2-

Selecciona las todas las columnas y ejecuta el comando version () en la única columna.
http://www.site.com/website.php?id=-1 versión UNION SELECT ALL () -

SOLUCIÓN:

Añadir algo parecido a continuación para evitar la inyección SQL UNION.

$ = malo “(eliminar) | (actualización) | (unión) | (inserto) | (gota) | (http) | (-) | (/ *) | (seleccionar)”;
$ parche = eregi_replace ($ mal “”, $ parche);

B: Cross Site Scripting

Cross site scripting es un tipo de vulnerabilidad utilizada por los hackers para inyectar código en páginas web vulnerables.

Si un sitio es vulnerable a este tipo de ataque, más probables los usuarios tratan de inyectar el sitio con javascript malicioso o tratan de usuarios de estafa mediante la creación de un formulario donde los usuarios tienen que escribir su información en.

Dos tipos de XSS (cross site scripting) son XSS persistente y no persistente XSS.

Ejemplo:
http://www.site.com/search.php?q=”>

SOLUCIÓN

(JavaScript) (Gracias, Microsoft!):

function RemoveBad(strTemp) {
strTemp = strTemp.replace(/\<|\>|\”|\’|\%|\;|\(|\)|\&|\+|\-/g,””);
return strTemp;
}

C: File Inclusion

Tipos: de inclusión remota de archivos / Inclusión de archivos locales, y la ejecución remota de código

La inclusión de archivos remoto permite a un hacker para incluir un archivo remoto a través de un script (por lo general de PHP). Este código está parcheado sobre todo en los sitios web, pero algunos sitios web siguen siendo vulnerables a la vulnerabilidad. RFI generalmente conduce a la ejecución remota de código Javascript o ejecución.

Ejemplo del código vulnerable:

<? php
include ($ _ [ 'page'] GET);
?>

Explotando sería algo como esto:
http://www.site.com/page.php?page=../../../../../etc/passwd o
http://www.site .com / page.php page = http: //www.site.com/xyz.txt?

SOLUCIÓN:

Validar la entrada.
$ page = $ _GET [ 'página'];
$ permitido = array ( 'index.php', 'games.php' 'ip.php');
$ iplogger = ( 'ip.php');
si (in_array página $, $ páginas)) {
incluir la página $ {
demás
{
incluir $ iplogger
die ( “IP registrada.”);
}

Para la ejecución remota de código, el sitio tendría que tener un php ejecutar comandos. Se podría arreglar esto de hacer la misma cosa.

Si les gustó siguenos en Facebook, Twitter y unete a nuestra charla en Riot.

martes, 6 de junio de 2017

Servicios de auditoría de seguridad para garantizar la protección de vulnerabilidades de aplicaciones Web



En estos días, los sitios web son el blanco de constantes ataques, que pueden ser iniciadas desde cualquier lugar en todo el mundo. En resumen, la seguridad Web consiste en garantizar niveles adecuados de los aspectos fundamentales tales como la confidencialidad, integridad, disponibilidad y no la reputación con respecto a los datos o la información almacenada en las computadoras.

Auditoría de seguridad Web es reconocido como uno de los temas más de moda en tecnologías de la información. Debido al creciente número de hackers y spammers cada día, la seguridad web se está convirtiendo en una preocupación primordial y reto para las organizaciones. 

Existen vulnerabilidades en la Web si la seguridad de aplicaciones web no se tiene cuidado. Esto significa que no sólo toda su base de datos de información sensible está en riesgo, pero su sitio web también puede convertirse en el lugar de lanzamiento de las actividades delictivas como el phishing o se puede utilizar para transferir contenido ilegal.

Algunos de los métodos utilizados por los hackers para atacar sitios web son:

1: Inyección SQL
El proceso de inserción de sentencias SQL en alguna consulta a través de la interfaz de usuario de la aplicación web, que luego es ejecutado por el servidor.

2: Cross Site Scripting (XSS)
Cuando un usuario inserta HTML o script del lado del cliente en la interfaz de usuario de una aplicación web, que es visible para otros usuarios también.

3: Vulnerabilidad
Se identifica como una falla en la aplicación web, causada debido a los errores en la aplicación o la presencia de virus.

Beneficios de la Auditoría Seguridad del sitio web:

Detección Temprana Etapa: Reducción del coste, el riesgo y la complejidad mediante la detección y solución de vulnerabilidades de seguridad de aplicaciones temprano en el ciclo de vida del software de desarrollo.


· Seguro SDLC: Posibilidad de insertar los controles de seguridad en cada etapa del SDLC.
· Altos estándares de seguridad: Aumenta la confianza del usuario final en la seguridad de aplicaciones web mediante el cumplimiento de los estándares de seguridad más altos.
· Equipo de expertos: mejorar los conocimientos especializados para sus equipos de seguridad.
La finalidad de la prueba de seguridad es descubrir las vulnerabilidades de la aplicación web para que los desarrolladores puedan eliminarlos y hacer que la aplicación web y segura de datos del acceso no autorizado.

¿Cuál es exactamente el SDLC?

Organizaciones en desarrollo aplicaciones tienen en el lugar un proceso por el que cada aplicación está diseñado, desarrollado, probado, y desplegado. Esta secuencia de etapas que definen estos procesos se denomina el ciclo de vida de desarrollo de software, a menudo referido como el SDLC.

SDLC de una organización ayuda a dar forma a la manera en que sus aplicaciones se construyen y se definen los procesos exactos de cada aplicación debe ir a través, así como los hitos de una aplicación necesita para golpear antes de ir a la siguiente etapa del SDLC.

¿Qué es exactamente un seguro SDLC?

Un seguro SDLC es un proceso que tiene puntos de contacto con la seguridad en todas las etapas, así como los hitos de seguridad. Ir seguro de SDLC más allá de la estructura actual SDLC con el fin de asegurar que las aplicaciones que se despliegan son seguras después de la liberación, sin crear un retraso en el SDLC originales.

Las mayores ventajas de las organizaciones que adoptan un seguro SDLC es la creación de una alta calidad, producto de seguro

Tanto SDLC y protegido SDLC normalmente giran en torno a cinco etapas, donde en cada etapa del SDLC (Requisitos, diseño, desarrollo, prueba y despliegue) existen procesos de seguridad que hay que hacer durante ese tiempo: La evaluación de riesgos, el modelado de amenazas y la revisión del diseño, el análisis estático, las pruebas de seguridad y revisión de código, y finalmente la evaluación de la seguridad y la configuración segura.

Análisis estático para un SDLC 
análisis de código estático (SCA) es una de las fuerzas impulsoras detrás de la filosofía seguro SDLC  después de que los requisitos han sido claramente definido y aclarado a los desarrolladores.

Una de las mayores ventajas del uso de análisis de código estático en todo el SDLC es que la prueba puede ser totalmente automatizado, lo que permite a los desarrolladores implementar prácticas de codificación segura y desinfectar todo el proceso de desarrollo con el mínimo esfuerzo. los plazos de lanzamiento de productos pueden ser fácilmente satisfechas sin reducir la calidad o la liberación de los problemas de seguridad de riesgo.

En un SDLC, herramientas de análisis de código estático se pueden encontrar de forma rápida y desarrolladores de ayudar a proteger contra SQL Inyecciones, Cross-Site Scripting (XSS), Cross-Site Request Falsificación (CSRF) y otros ataques maliciosos. Sin un SDLC seguro mediante análisis de código estático, no hay garantía de que una aplicación está en libertad sin vulnerabilidades de seguridad.

Las mejores prácticas para el establecimiento de un seguro SDLC para la Seguridad desarrollo de aplicaciones:

Crear una política de romper la acumulación cuando se descubre una vulnerabilidad media o de alto nivel. No ponga su aplicación y la organización en riesgo - asegurarse de que las aplicaciones que estés liberando están libres de vulnerabilidades de alto riesgo.

Entender su negocio y proteger a los que con seguridad las aplicaciones. Si conoces los riesgos a que se enfrenta su empresa entonces es más fácil desarrollar software que protege contra esos riesgos. Desarrollo de aplicaciones de seguridad puede ofrecer la prevención de riesgos en la forma de frenar un enfoque de mercado (como la aplicación de los frenos en un coche) o acelerarlo (como empujar el acelerador) el truco es saber qué se necesita y cuándo.

Conocer la tecnología de su aplicación.  Es necesario tener en cuenta la tecnología a través de su plataforma. El idioma de su entorno puede ser dictado por preocupaciones de seguridad - por ejemplo, código de la ONU gestionados pueden ofrecer una mayor susceptibilidad a desbordarse ataques que los entornos de código administrado. Es necesario examinar los anfitriones, la segregación de la red y la infraestructura de clave, además del entorno de codificación y garantizar que no haya agujeros obvios (o no evidentes).

El cumplimiento es clave.  Asegúrese de que los requisitos de cumplimiento se cumplen a través de su seguro SDLC asegurando todas las pruebas, revisiones de código y pen-pruebas se incluyen dentro de su proceso. El SDLC seguro va más allá de la seguridad para incluir también de gobierno, los reglamentos y el cumplimiento marco de privacidad según lo requiera su entorno.

Educar a los desarrolladores.  Es esencial que los desarrolladores a entender la importancia de los conceptos de seguridad en aplicaciones tales como la confidencialidad, integridad, disponibilidad, autenticación y autorización.

Integración en el entorno de desarrollo. Más allá de los desarrolladores de enseñanza acerca de las prácticas de codificación segura y cuál es su papel en el SDLC seguro será, es igualmente importante para asegurar las herramientas que decide y uso se adapta bien para el entorno de desarrollo, la integración con el mayor número de procesos establecidos como sea posible.

Análisis de código fuente es su amigo. Entornos ágiles que buscan actualizar a un SDLC seguro son el lugar perfecto para análisis de código fuente para ser implementado. Una herramienta de análisis de código fuente sólida ofrece las ventajas de la lectura de códigos incrementales, la exploración de múltiples idiomas, una información rápida y asistencia desarrollador en la mitigación de vulnerabilidades en su código. Con el análisis de código fuente en su tubería, las aplicaciones pueden ser asegurados antes incluso de estar en la producción - a pesar de post-producción, la seguridad sigue siendo muy importante.

Mantener el aprendizaje. La seguridad es un campo en evolución. Desarrollo de aplicaciones de seguridad requiere un ciclo constante de revisión, la educación y la aplicación. Las mejores prácticas de hoy puede no ser las mejores prácticas mañana. Lo más importante es que es vital que todos los miembros de su equipo reconoce que la seguridad es tarea de todos y comprometerse a su parte en esto.

¿Por qué las empresas deben integrar las herramientas de pruebas de seguridad en un SDLC  para aplicaciones seguras?

Amenazas Web son uno de los mayores riesgos potencialmente devastadora que las empresas con una cara presencia en la web hoy en día. El malware es la principal amenaza para las empresas, y los costos asociados con la defensa desde y recuperarse de los ataques de malware se extiende en los mil millones de dólares cada año. Sin embargo, la seguridad de la red se ha vuelto increíblemente eficiente en los últimos años, lo que ha causado a los atacantes dirigen su atención a otras zonas vulnerables - especialmente la capa de aplicación. El código de aplicación con fallas de seguridad puede ser explotado para tener consecuencias devastadoras, no deseados en una organización y sus clientes. Las brechas de datos cuestan a las empresas millones de dólares al año, pero las herramientas de pruebas de software ofrecen una línea útil de defensa contra este tipo de ataques maliciosos.