Table of Contents
ToggleAcceder a su máquina Linux usando SSH
La funcionalidad del navegador usa exactamente el mismo protocolo que vamos a usar hoy. Este protocolo se llama Secure Shell o SSH para abreviar y es el medio común para conectarse e interactuar con la línea de comando de una máquina Linux remota.
¿Qué es SSH y cómo funciona?
Secure Shell o SSH simplemente es un protocolo entre dispositivos en forma encriptada. Al usar criptografía, cualquier entrada que enviamos en un formato legible por humanos se cifra para viajar a través de una red, donde luego se descifra una vez que llega a la máquina remota, como en el diagrama a continuación.
Necesitamos entender que:
- SSH nos permite ejecutar comandos de forma remota en otro dispositivo.
- Todos los datos enviados entre los dispositivos se cifran cuando se envían a través de una red como Internet.
Implementación de su máquina Linux
Uso de SSH para iniciar sesión en su máquina Linux
La sintaxis para usar SSH es muy simple. Sólo tenemos que proporcionar dos cosas:
1. La dirección IP de la máquina remota
2. Corrija las credenciales a una cuenta válida para iniciar sesión en la máquina remota
Para esta sala, iniciaremos sesión como «tryhackme», cuya contraseña es «tryhackme» sin las comillas («»). Usemos la dirección IP de la máquina que se muestra en la tarjeta en la parte superior de la sala como la dirección IP y este usuario, para construir un comando para iniciar sesión en la máquina remota usando SSH. El comando para hacerlo es ssh
y luego el nombre de usuario de la cuenta, @
la dirección IP de la máquina.
Pero primero, necesitamos abrir una terminal en TryHackMe AttackBox. Hay un icono colocado en el escritorio llamado «Terminal». Y ahora, podemos proceder a ingresar comandos.
Por ejemplo: ssh tryhackme@MACHINE_IP
. Reemplazar la dirección IP con la dirección IP de su máquina de destino Linux . Una vez ejecutado, se nos pedirá que confiemos en el host y luego proporcionemos una contraseña para la cuenta « tryhackme «, que también es » tryhackme «.
Ahora que estamos conectados, cualquier comando que ejecutemos ahora se ejecutará en la máquina remota, no en la nuestra.
Nota: cuando ingresa una contraseña en un indicador de inicio de sesión de ssh, no hay comentarios visibles; no podrá ver ningún texto o símbolo que aparezca mientras ingresa la contraseña. Sin embargo, todavía funciona, así que simplemente escriba la contraseña y presione Intro para iniciar sesión.
Introducción a banderas e interruptores
La mayoría de los comandos permiten proporcionar argumentos. Estos argumentos se identifican con un guion y una determinada palabra clave conocida como banderas o interruptores. Al usar un comando, a menos que se especifique lo contrario, realizará su comportamiento predeterminado. Por ejemplo, ls
enumera el contenido del directorio de trabajo. Sin embargo, los archivos ocultos no se muestran. Podemos usar banderas e interruptores para extender el comportamiento de los comandos.
Sin embargo, después de usar el -a
argumento (abreviatura de --all
), de repente tenemos una salida con algunos archivos y carpetas más, como «. carpeta oculta». Los archivos y carpetas con «. » son archivos ocultos.
Los comandos que los acepten también tendrán una opción--help
. Esta opción enumerará las posibles opciones que acepta el comando, proporcionará una breve descripción y un ejemplo de cómo usarlo.
Esta opción es, de hecho, una salida formateada de lo que se llama la página del manual (abreviatura de manual), que contiene documentación para comandos y aplicaciones de Linux.
Las páginas del manual
Son una gran fuente de información tanto para los comandos del sistema como para las aplicaciones y están disponibles tanto en una máquina Linux, a la que se puede acceder en la propia máquina como en línea.
Para acceder a esta documentación, podemos usar el comando man y luego proporcionar el comando para el que queremos leer la documentación. Usando nuestro ejemplo de ls, usaríamos man ls para ver las páginas del manual de ls la siguiente manera:
Continuación de la interacción del sistema de archivos
En esta tarea, aprenderemos algunos comandos más para interactuar con el sistema de archivos que nos permitan:
- crear archivos y carpetas
- mover archivos y carpetas
- eliminar archivos y carpetas
Más específicamente, los siguientes comandos:
Comando | Nombre completo | Objetivo |
touch | touch | Crea un archivo |
mkdir | make directory | crear una carpeta |
cp | copy | Copiar un archivo o carpeta |
mv | move | Mover un archivo o carpeta |
rm | remove | Eliminar un archivo o carpeta |
file | file | Determinar el tipo de un archivo. |
Consejo profesional: de manera similar al uso de cat, podemos proporcionar rutas de archivo completas, es decir, directorio1/directorio2/nota para todos estos comandos.
Creación de archivos y carpetas (touch, mkdir)
Crear archivos y carpetas en Linux es un proceso simple. Primero, cubriremos la creación de un archivo. El comando touch toma exactamente un argumento: el nombre que queremos darle al archivo que creamos. Por ejemplo, podemos crear el archivo «nota» usandotouch nota
. Vale la pena señalar que tocar simplemente crea un archivo en blanco. Necesitará usar comandos como echo o editores de texto como nano para agregar contenido al archivo en blanco.
Es igual para crear una carpeta, que solo implica usar mkdir
y nuevamente proporcionar el nombre que queremos asignar al directorio. Por ejemplo, crear el directorio «mydirectory» usando mkdir mydirectory
.
Eliminación de archivos y carpetas (rm)
Simplemente puede eliminar archivos usando rm
. Sin embargo, debe proporcionar el -R
para eliminar un directorio.
Copiar y mover archivos y carpetas (cp, mv)
Copiar y mover archivos es una funcionalidad importante en una máquina Linux. Comenzando concp
, este comando toma dos argumentos:
1. el nombre del archivo existente
2. el nombre que deseamos asignar al nuevo archivo al copiar
cp
copia todo el contenido del archivo existente en el nuevo archivo. En la captura de pantalla a continuación, estamos copiando «nota» a «nota2».
Mover un archivo requiere dos argumentos, al igual que el comando cp. Sin embargo, en lugar de copiar y/o crear un nuevo archivo, mv fusionará o modificará el segundo archivo que proporcionamos como argumento. No solo puede usar maura mover un archivo a una nueva carpeta, sino que también puede usar mv para cambiar el nombre de un archivo o carpeta. Por ejemplo, en la captura de pantalla a continuación, estamos cambiando el nombre del archivo «nota2» para que se llame «nota3». «note3» ahora tendrá el contenido de «note2».
Determinación del tipo de archivo
Lo que a menudo es engañoso y sorprende a la gente es hacer suposiciones a partir de los archivos sobre cuál puede ser su propósito o contenido. Los archivos suelen tener lo que se conoce como una extensión para hacerlo más fácil. Por ejemplo, los archivos de texto suelen tener una extensión de «.txt». Pero esto no es necesario.
Hasta ahora, los archivos que hemos usado en nuestros ejemplos no tenían extensión. Sin conocer el contexto de por qué el archivo está allí, realmente no sabemos su propósito. Usaremos file
para confirmar si el archivo de «nota» en nuestros ejemplos es realmente un archivo de texto, así file note
.
Permisos 101
Ciertos usuarios no pueden acceder a ciertos archivos o carpetas. Anteriormente exploramos algunos comandos que se pueden usar para determinar qué acceso tenemos y hacia dónde nos lleva.
En nuestras tareas anteriores, aprendimos cómo extender el uso de comandos a través de indicadores e interruptores. Tomemos, por ejemplo, el comando ls
, que enumera el contenido del directorio actual. Al usar el -l
, podemos ver diez columnas, como en la captura de pantalla a continuación. Sin embargo, solo nos interesan las tres primeras columnas:
Estas tres columnas son muy importantes para determinar ciertas características de un archivo o carpeta y si tenemos o no acceso a él. Un archivo o carpeta puede tener un par de características que determinan qué acciones están permitidas y qué usuario o grupo tiene la capacidad de realizar la acción determinada, como las siguientes:
- Leer
- Escribe
- Ejecutar
Usando su para cambiar a usuario2
Usemos el archivo «cmnatic.pem» en nuestra captura de pantalla. Tiene el indicador «-» resaltando que es un archivo y luego «rw» seguido. Esto significa que solo el propietario del archivo puede leer y escribir en este archivo «cmnatic.pem», pero no puede ejecutarlo.
Las diferencias entre usuarios y grupos
Lo mejor de Linux es que los permisos pueden ser tan granulares que, aunque técnicamente un usuario posee un archivo, si se han establecido los permisos, un grupo de usuarios también puede tener los mismos o diferentes conjuntos de permisos para exactamente lo mismo archivo sin afectar al propio propietario del archivo.
Pongamos esto en un contexto del mundo real; el usuario del sistema que ejecuta un servidor web debe tener permisos para leer y escribir archivos para una aplicación web eficaz. Sin embargo, las empresas como las de alojamiento web tendrán que permitir que sus clientes carguen sus propios archivos sin ser el usuario del sistema del servidor web, lo que compromete la seguridad de todos los demás clientes.
Cambiar entre usuarios
Cambiar entre usuarios en una instalación de Linux es un trabajo fácil gracias al comando su. A menos que sea el usuario root (o use permisos de root a través de sudo), debe saber dos cosas para facilitar esta transición de cuentas de usuario:
El usuario al que deseamos cambiar
La contraseña del usuario
Al proporcionar -l a su, iniciamos un shell que es mucho más similar al usuario real que inicia sesión en el sistema: heredamos muchas más propiedades del nuevo usuario como variables de entorno y similares. Por ejemplo, cuando se usa su
para cambiar a «usuario2», nuestra nueva sesión nos lleva al directorio de inicio de nuestro usuario anterior.
Después de usar -l
, nuestra nueva sesión nos ha llevado automáticamente al directorio de inicio de «usuario».
Directorios comunes
/etc
Este directorio raíz es uno de los directorios raíz más importantes de su sistema. La carpeta etc (abreviatura de etcétera) es una ubicación común para almacenar archivos del sistema que utiliza su sistema operativo.
Por ejemplo, el archivo sudoers resaltado en la siguiente captura de pantalla contiene una lista de los usuarios y grupos que tienen permiso para ejecutar sudo o un conjunto de comandos como usuario raíz.
También se destacan a continuación los archivos » passwd » y » shadow «. Estos dos archivos son especiales para Linux, ya que muestran cómo su sistema almacena las contraseñas de cada usuario en un formato cifrado llamado sha512.
/var
El directorio «/var», siendo «var» la abreviatura de datos variables, es una de las principales carpetas de la raíz que se encuentran en una instalación de Linux. Esta carpeta almacena datos a los que los servicios o aplicaciones que se ejecutan en el sistema acceden o escriben con frecuencia.
Por ejemplo, los archivos de registro de los servicios y aplicaciones en ejecución se escriben aquí ( /var/log ), u otros datos que no están necesariamente asociados con un usuario específico (bases de datos y similares).
/ root
A diferencia del directorio /home, la carpeta /root es en realidad el hogar del usuario del sistema «raíz». No hay nada más en esta carpeta aparte de entender que este es el directorio de inicio para el usuario «raíz». Pero vale la pena mencionarlo, ya que la presunción lógica es que este usuario tendría sus datos en un directorio como » /home/root » por defecto.
/tmp
Abreviatura de » temporal «, el directorio /tmp es volátil y se usa para almacenar datos a los que solo se necesita acceder una o dos veces. Similar a la memoria de su computadora, una vez que la computadora se reinicia, el contenido de esta carpeta se borra.
Lo que nos resulta útil en el pentesting es que cualquier usuario puede escribir en esta carpeta de forma predeterminada. Lo que significa que una vez que tenemos acceso a una máquina, sirve como un buen lugar para almacenar cosas como nuestros scripts de enumeración.
Task 3 Introduction to Flags and Switches
What directional arrow key would we use to navigate down the manual page?
What flag would we use to display the output in a «human-readable» way?
Task 4 Filesystem Interaction Continued
How would you create the file named «newnote»?
What are the contents of this file?
Task 5 Permissions 101
Output the contents of «important», what is the flag?
Task 6 Common Directories
What is the directory path that would we expect logs to be stored in?
What root directory is similar to how RAM on a computer works?
Name the home directory of the root user
Felicidades has finalizado – Happy Hacking! Nos vemos en la parte 3