Linux Fundamentals. Pre-Security Path (11)

Introducción a Linux Fundamentals

Bienvenidos a la primera parte de la serie “Linux Fundamentals”. Lo más probable es que utilices un equipo Windows o Mac. Ambos son distintos en diseño visual y en cómo operan. Como Windows, iOS y MacOS, Linux es simplemente otro sistema operativo y uno de los más populares en el mundo gestionando coches inteligentes, dispositivos Android, superordenadores, aplicaciones del hogar, servidores de empresa, y más.

Cubriremos parte de la historia detrás de Linux y después comenzaremos nuestro viaje para convertirnos en magos de este sistema operativo. En esta sala aprenderás:

  • A ejecutar tus primeros comandos en una máquina Linux interactiva en tu navegador.
  • Algunos de los comandos esenciales para interactuar con el sistema de archivos.
  • Cómo trabajan los usuarios y grupos en Linux (y lo que eso significa para nosotros como pentesters).

Un vistazo al trasfondo de Linux

¿Dónde se usa Linux?

Es justo decir que Linux es bastante más intimidante de enfocar que sistemas operativos como Windows. Ambas variantes tienen sus ventajas y desventajas. Por ejemplo, Linux es considerablemente mucho más ligero y te sorprenderías si supieras que hay bastantes posibilidades de que hayas usado Linux de alguna u otra forma cada día. Linux se usa en casos como:

  • Los sitios web que visitas.
  • Entretenimiento en el coche/paneles de control.
  • Sistemas de Punto de Venta, como las cajas registradoras de las tiendas.
  • Infraestructuras críticas como el control de semáforos o sensores industriales.

Sabores de Linux

El nombre “Linux” es actualmente un término que engloba múltiples sistemas operativos basados en UNIX (otro sistema operativo). Gracias a que UNIX es de código abierto, podemos encontrar variantes de Linux en todas las formas y tamaños adecuados según el sistema en el que se vaya a usar.

Por ejemplo, Ubuntu y Debian son algunas de las distribuciones más comunes de Linux debido a que es extensible. Puedes correr Ubuntu como un servidor (para sitios y aplicaciones web) o como un sistema de escritorio. Para estas salas usaremos Ubuntu.

Ubuntu Server puede ejecutarse en sistemas con tan solo 512MB de memoria RAM.

De forma similar a cómo podemos encontrar distintas versiones de Windows (7, 8 y 10), hay distintas versiones/distribuciones de Linux.

Interactuando Con Tu Primera Máquina Linux (Navegador) – Linux Fundamentals

Esta sala de Linux Fundamentals I tiene una máquina Ubuntu con la que puedes interactuar desde tu navegador mientras sigues el material de la sala.

Para ello, simplemente presiona el botón verde “Start Machine” en la esquina superior derecha.

Una vez hecho esto, aparecerá una franja con datos en la parte superior de la sala:

Active Machine Information

Esta contiene toda la información de la máquina desplegada, incluyendo la dirección IP y el tiempo que durará la máquina activada, junto a los botones para gestionar la máquina. Recuerda siempre pulsar sobre “Terminate” una vez hayas acabado con la sala.

Por ahora, presiona “Start Machine” donde podrás interactuar con tu propia máquina Linux en el navegador a lo largo de esta sala:

Start Machine

Ejecutando Tus Primeros Comandos en la sala de Linux Fundamentals I

Como ya hemos dicho anteriormente, una de las principales ventajas de utilizar sistemas operativos como Ubuntu es su ligereza. Esto, por supuesto, no deja de tener sus desventajas, como por ejemplo que a menudo no tienen GUI (Interfaz Gráfica de Usuario) o lo que también se conoce como entorno de escritorio que podemos utilizar para interactuar con la máquina (a menos que se haya instalado). Gran parte de la interacción con estos sistemas se realiza a través de la “Terminal”.

La “Terminal” está basada íntegramente en texto y puede ser intimidante al principio. Sin embargo, si desglosamos algunos de los comandos, después de algún tiempo, se nos hará muy familiar el uso de la misma.

Terminal

Necesitamos poder realizar funciones básicas como navegar por los archivos, dar salida a sus contenidos y crear archivos nuevos. Los comandos para hacerlo se explican por sí solos (una vez que sabes cuáles son, por supuesto).

Comencemos con dos de los primeros comandos que hemos desglosado en la tabla inferior:

ComandoDescripción
echoDa salida a cualquier texto que proporcionemos
whoamiEncuentra con qué usuario estamos logueados en ese momento

Puedes echar un vistazo a las capturas inferiores para ver ejemplos de cada uno de ellos.

echo y whoami

Prueba ahora en tu máquina Linux.

Interactuando Con El Sistema De Archivos

Por ahora solo hemos visto los comandos “echo” y “whoami”. No son tan útiles si tenemos en cuenta todo lo que tenemos que hacer, incluyendo navegar por el sistema de archivos, y leerlos y escribir en ellos.

En esta tarea, vamos a aprender comandos para hacer todo esto. Como en la tarea anterior, mostraré los comandos en una tabla y algunos ejemplos de cómo se utilizan.

Interactuando con el Sistema de Archivos

Como dije anteriormente, el ser capaz de navegar por la máquina en la que estamos logueados sin depender de un entorno de escritorio es muy importante. Después de todo, ¿de qué sirve estar en el equipo si no podemos ir más allá?

ComandoNombre completo
lsListar
cdCambiar directorio
catConcatenar
pwdImprimir directorio actual

Listando Archivos en nuestro Directorio Actual (ls)

Antes de hacer nada como encontrar el contenido de archivos o carpetas, necesitamos saber qué hay en cada lugar. Esto lo podemos conseguir mediante el comando “ls”.

ls

En la captura superior, podemos ver que existen los siguientes directorios/carpetas:

  • Important Files
  • My Documents
  • Notes
  • Pictures

¡Genial! Probablemente puedas averiguar lo que puede contener cada una de las carpetas según su nombre.

Truco Pro: Puedes listar el contenido de un directorio sin tener que navegar hasta él usando ls y el nombre del directorio, por ejemplo, ls Pictures.

Cambiando nuestro Directorio Actual (cd)

Ahora que sabemos qué carpetas existen, necesitamos usar el comando “cd” para cambiar a ese directorio. Digamos que, si quiero abrir el directorio “Pictures”, lo haría con “cd Pictures”. Allí podemos usar de nuevo “ls” para ver el contenido del directorio “Pictures”:

cd

En este caso, parece que hay 4 fotografías de perros.

Dando salida al Contenido de Archivos (cat)

Aunque el hecho de conocer la existencia de los archivos está genial, no es tan útil como el poder ver el contenido de dichos archivos.

Más adelante veremos qué herramientas hay a nuestro abasto para transferir archivos de una máquina a otra. Por ahora, vamos a hablar solo de ver el contenido de los archivos de texto mediante el uso del comando “cat”.

“Cat” es la abreviatura de concatenar y es una forma fantástica de mostrar el contenido de archivos (no solo archivos de texto).

En la captura inferior, puedes ver cómo he combinado el uso de “ls” para listar los archivos de un directorio llamado “Documents”:

cat

Hemos aplicado conocimiento anterior en esta tarea para hacer lo siguiente:

  1. Hemos usado “ls” para averiguar qué archivos están disponibles en la carpeta “Documents” de esta máquina. En este caso, el contenido es “todo.txt”.
  2. Después hemos usado cat todo.txt para concatenar/mostrar el contenido del archivo “todo.txt”, donde el contenido es “Here’s something important for me to do later!”

Truco Pro: Puedes usar cat para mostrar el contenido de un archivo dentro de un directorio sin tener que navegar hasta él usando cat y el nombre del directorio, por ejemplo, cat /home/Ubuntu/Documents/todo.txt

A veces algunas cosas como nombres de usuario, contraseñas (sí, en serio), flags o ajustes de configuración se almacenan dentro de archivos donde podemos usar “cat” para recuperarlos.

Obteniendo la Ruta Completa a nuestro Directorio Actual de Trabajo (pwd)

Notarás que, conforme progresas navegando por tu máquina Linux, el nombre del directorio en el que estás trabajando es listado en la terminal.

Es fácil perder el rastro de dónde estamos exactamente dentro del sistema de archivos, y es por ello por lo que quiero mostrar el comando “pwd”.

Usando la máquina ejemplo anterior, actualmente estamos en la carpeta “Documents” pero, ¿dónde se encuentra exactamente esta carpeta dentro del sistema de archivos de Linux? Podemos encontrar este dato usando el comando “pwd” como en esta captura:

pwd

Desglosemos esto:

  1. Ya sabemos que estamos en el directorio “Documents” gracias a nuestra terminal, pero en este punto, no tenemos ni idea de dónde se almacena “Documents” por si tenemos que volver a él en el futuro.
  2. He usado el comando “pwd” para encontrar la ruta completa a la carpeta “Documents”.
  3. Linux nos ha comunicado que el directorio “Documents” se encuentra en “/home/ubuntu/Documents” en la máquina.
  4. Ahora, de cara al futuro, si nos encontramos en otra ubicación, simplemente podemos usar cd /home/ubuntu/Documents para cambiar nuestro directorio actual al directorio “Documents”.

Buscando Archivos

Aunque no lo parezca hasta ahora, una de las características que redime a Linux es lo eficiente que se puede ser con él. Dicho esto, solo puedes ser eficiente si estás familiarizado con él, por supuesto. Conforme más interactúes con sistemas operativos como Ubuntu, los comandos esenciales como los que ya hemos visto empezarán a quedarse en tu memoria.

Una forma fantástica de mostrar lo eficiente que puedes ser con sistemas como este es usando un conjunto de comandos para buscar archivos por todo el sistema al que tienes acceso. No hay necesidad de usar cd y ls para buscar dónde está algo. En su lugar, podemos usar comandos como find para automatizar este tipo de tareas.

Aquí es donde Linux comienza a convertirse en algo más intimidante, pero lo haremos más sencillo para ti.

Usando Find

El comando find es fantástico en el sentido de que se puede usar tanto de forma simple como compleja, dependiendo de qué es lo que quieres exactamente. Vamos a ver lo principal. Viendo la captura inferior, podemos ver una lista de directorios disponible:

find 1
  1. Desktop
  2. Documents
  3. Pictures
  4. folder1

Ahora, por supuesto, los directorios pueden contener más directorios en su interior. Esto se convierte en un dolor de cabeza cuando tenemos que ir mirando uno a uno buscando un archivo en concreto. Podemos usar find para hacer esto por nosotros.

Empecemos por lo simple y asumamos que ya conocemos el nombre del archivo que estamos buscando, pero no recordamos dónde está exactamente. En este caso, estamos buscando el archivo “passwords.txt”.

Si recordamos el nombre del archivo, simplemente podemos usar find -name passwords.txt donde el comando buscara por todas las carpetas en nuestro directorio actual buscando dicho archivo:

find 2

“Find” ha buscado el archivo (nos devuelve que se encuentra localizado en folder1/passwords.txt”). Pero digamos que no conocemos el nombre del archivo, o queremos buscar todos los archivos con una extensión como “.txt”. Find también nos permite hacer esto.

Simplemente podemos usar lo que se conoce como carácter comodín (*) para buscar cualquier cosa que tenga “.txt” como final. En nuestro caso, queremos encontrar todos los archivos .txt en nuestro directorio actual. Por ello, construiremos el comando como find -name *.txt. Aquí el comando find ha sido capaz de encontrar todos los archivos .txt y nos ha dado la ubicación de cada uno:

find 3

find ha sido capaz de encontrar:

  1. “passwords.txt” ubicado en “folder1”
  2. “todo.txt” ubicado en “Documents”

Usando Grep

Otra gran herramienta que hay que aprender a usar es grep. El comando grep nos permite buscar ciertos valores específicos que estamos buscando en el contenido de los archivos.

Toma como ejemplo el log de acceso a un servidor web. En este caso, el access.log de un servidor web tiene 244 entradas.

Linux Fundamentals grep 1

El uso de un comando como cat no va a ayudarnos aquí. Digamos, por ejemplo, que queremos buscar las visitas de cierta dirección IP o usuario en este archivo de log. Buscar en las 244 entradas no es eficiente, considerando que buscamos un valor específico.

Podemos usar grep para buscar en todo el contenido del archivo las entradas con el valor que estamos buscando. Siguiendo con el ejemplo del log de acceso al servidor web, queremos ver todas las visitas realizadas por la dirección IP “81.143.211.90” (IP ficticia).

Linux Fundamentals grep 2

Grep ha buscado a lo largo de todo el archivo y nos muestra cualquier entrada de la IP proporcionada dentro del archivo de log.

Una Introducción a los Operadores Shell

Los operadores de Linux son una forma fantástica de potenciar tu conocimiento acerca del trabajo con Linux. Existen algunos operadores importantes que conviene destacar. Veremos los básicos y los explicaremos.

Viendo por encima, voy a mostrar los siguientes operadores:

Símbolo / OperadorDescripción
&Este operador te permite ejecutar comandos en segundo plano en tu terminal.
&&Este operador permite combinar múltiples comandos juntos en una sola línea en la terminal.
Este operador es un redireccionador, esto significa que podemos tomar la salida de un comando y dirigirla a donde queramos.
>> Este operador tiene la misma función que el anterior, pero añade la salida al final en lugar de reemplazar (no sobreescribe).

Operador “&”

Este operador nos permite ejecutar comandos en segundo plano. Por ejemplo, digamos que queremos copiar un archivo grande. Esto, obviamente, tomaría bastante tiempo y nos dejaría incapaces de hacer nada más mientras se copia el archivo con éxito.

El operador “&” permite ejecutar un comando y tenerlo en segundo plano permitiéndonos hacer otras cosas mientras.

Operador “&&”

Este operador es un poco engañoso si tenemos en cuenta su parecido con el anterior. A diferencia del operador “&”, podemos usar “&&” para crear una lista de comandos a ejecutar, por ejemplo, command1 && command2. Sin embargo, es importante destacar que command2 solo se ejecutará si command1 se ejecuta con éxito.

Operador “>”

Este operador es lo que se conoce como un redireccionador de la salida. Esto significa, esencialmente, que toma la salida de un comando ejecutado y envía esa salida a otro sitio.

Un gran ejemplo es la redirección de la salida del comando echo que ya hemos visto. Por supuesto, la ejecución de algo como echo howdy devolverá “howdy” a nuestra terminal. Lo que podemos hacer es redireccionar ese “howdy” a algo como un nuevo archivo.

Digamos que queremos crear un archivo llamado “welcome” con el mensaje “hey”. Podemos ejecutar echo hey > welcome donde queramos crear el archivo con dicho contenido:

Linux Fundamentals operadores 1

Nota: Si el archivo “welcome” ya existe, el contenido será sobrescrito.

Operador “>>”

Este operador es también un redireccionador de salida. Sin embargo, lo que lo hace distinto es que, en lugar de sobrescribir cualquier contenido en un archivo, por ejemplo, lo que hace es colocar la salida anterior al final.

Siguiendo con nuestro ejemplo previo donde tenemos el archivo “welcome” con el contenido “hey”. Si queremos usar echo para añadir “hello” al archivo con el operador “>”, el archivo solo tendrá la cadena “hello”, no “hey”.

El operador “>>” nos permitirá añadir la salida al final del archivo, en lugar de reemplazar el contenido:

Linux Fundamentals operadores 2

Conclusiones y Resumen de Linux Fundamentals I

Enhorabuena por haber llegado hasta aquí. Hemos visto solo algunas de las interacciones posibles con Linux. Sin embargo, esto es lo principal que necesitarás usar cuando interactúes con una máquina Linux.

Espero que esta sala no haya sido intimidante para que puedas seguir adelante. Como mencioné anteriormente, te familiarizarás con todo este rápidamente debido a cómo los vas a usar a menudo.

Para recapitular de forma rápida, hemos:

  • Comprendido por qué Linux es muy común a día de hoy.
  • Interactuado con nuestra primera máquina Linux.
  • Ejecutado algunos de los comandos fundamentales.
  • Seguido una introducción a cómo navegar por el sistema de archivos y a cómo usar comandos para buscar archivos y datos de forma más eficiente.
  • Potenciado nuestros comandos aprendiendo un poco sobre los operadores shell más importantes.

Próximamente publicaré la segunda sala de esta serie de Linux Fundamentals.

Aquí podéis visitar el anterior capítulo de la serie de traducciones de la ruta Pre-Security de TryHackMe.

1 comentario en «Linux Fundamentals. Pre-Security Path (11)»

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Ads Blocker Image Powered by Code Help Pro

¡¡¡Ads Blocker Detectado!!!

Hemos detectado que usas extensiones para bloquear anuncios. Por favor, si te interesa el contenido, no bloquees los anuncios, que son lo que nos ayuda a poder publicar más contenido como este 😊