Introduccion Al Hacking
Introduccion Al Hacking
08-08-2023
WIN + ENTER.
En el ejemplo anterior, "uid" es el UID del usuario, "gid" es el GID del grupo principal, y "grupos" muestra los grupos
secundarios a los que pertenece el usuario.
sudo su.
El comando "sudo su" se utiliza en sistemas Unix y Linux para obtener acceso temporal de superusuario (root) o cambiar al
usuario root. Aquí tienes una explicación de su uso:
sudo : Es un comando que permite a los usuarios ejecutar comandos con privilegios de superusuario o de otro usuario,
generalmente requiere autenticación (ingresar la contraseña del usuario actual).
su : Este comando se utiliza para cambiar de usuario. Cuando se ejecuta con "sudo", generalmente se usa para cambiar al
usuario root (superusuario).
En conjunto, "sudo su" permite al usuario actual cambiar al usuario root (superusuario) y obtener acceso a todos los
privilegios y permisos de administración del sistema. Por lo tanto, debes tener precaución al usar este comando, ya que
cualquier error o cambio incorrecto puede afectar seriamente el sistema. Se recomienda utilizar con cuidado y solo cuando
sea necesario realizar tareas administrativas específicas.
sudo whoami
El comando "sudo whoami" se utiliza en sistemas Unix y Linux para determinar el nombre del usuario actual con privilegios
de superusuario o root. Aquí tienes una explicación de su uso:
sudo : Es un comando que permite a los usuarios ejecutar comandos con privilegios de superusuario o de otro usuario,
generalmente requiere autenticación (ingresar la contraseña del usuario actual).
whoami : Es un comando que muestra el nombre del usuario actual.
Cuando ejecutas "sudo whoami", estás solicitando al sistema que te muestre el nombre del usuario con privilegios de
superusuario. Por lo tanto, si has autenticado exitosamente con "sudo" y tienes los permisos adecuados, el resultado
mostrará "root" o el nombre del superusuario actual.
Por ejemplo:
$ sudo whoami
root
cat /etc/group
El comando "cat /etc/group" se utiliza en sistemas Unix y Linux para mostrar el contenido del archivo "/etc/group". Este
archivo contiene información sobre los grupos de usuarios del sistema. Aquí tienes una explicación de su uso:
cat : Es un comando que se utiliza para concatenar y mostrar el contenido de archivos de texto.
/etc/group : Es la ubicación del archivo que contiene información sobre los grupos de usuarios en el sistema.
Cuando ejecutas "cat /etc/group", el sistema mostrará el contenido del archivo "/etc/group" en la terminal. El archivo suele
tener un formato similar a este:
nombre_de_grupo:contraseña:GID:lista_de_usuarios
Donde:
"nombre_de_grupo" es el nombre del grupo de usuarios.
"contraseña" generalmente está encriptada y se usa para autenticación (pero a menudo se establece como "x" o "*" para
indicar que se almacena en otro archivo, como "/etc/shadow").
"GID" es el identificador de grupo, un número que identifica de manera única el grupo.
"lista_de_usuarios" es una lista de usuarios que son miembros del grupo, separados por comas.
El comando "cat /etc/group" te permite ver la lista de grupos de usuarios en el sistema y sus respectivos miembros. Ten en
cuenta que este comando generalmente requiere privilegios de superusuario para acceder al archivo "/etc/group".
which cat
El comando "which cat" se utiliza en sistemas Unix y Linux para encontrar la ubicación del ejecutable de un programa o
comando en el sistema. En este caso, estás buscando la ubicación del comando "cat". Aquí está la explicación de su uso:
which : Es un comando que se utiliza para determinar la ubicación del archivo ejecutable de un programa o comando en el
sistema.
cat : Es el comando que deseas buscar.
Cuando ejecutas "which cat", el sistema mostrará la ruta completa hacia el archivo ejecutable del comando "cat". Esto es útil
para saber dónde se encuentra el comando en el sistema y para asegurarte de que se está utilizando el comando correcto si
hay varios con el mismo nombre.
Por ejemplo, la salida podría ser algo como:
/usr/bin/cat
hola mundo
El comando "echo" es útil para mostrar mensajes, variables u otra información en la terminal, y es ampliamente utilizado en
scripts de shell para proporcionar información al usuario o para depuración.
echo $PATH
El comando "echo $PATH" se utiliza en sistemas Unix y Linux para mostrar el valor de la variable de entorno PATH en la
terminal. Aquí está la explicación de su uso:
echo : Como mencioné anteriormente, este comando se utiliza para mostrar texto en la pantalla.
$PATH : Es una variable de entorno que almacena una lista de directorios en los que el sistema busca programas y
comandos ejecutables cuando se ingresa un comando en la terminal.
Cuando ejecutas "echo $PATH", el sistema mostrará en la terminal la lista de directorios separados por dos puntos (":") que
componen la variable PATH. Cada directorio en esta lista representa una ubicación en la que el sistema buscará comandos
para ejecutar cuando se ingresen en la terminal.
La salida puede verse algo así:
/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
Esto significa que, en este caso, el sistema buscará comandos ejecutables en los directorios "/usr/local/bin", "/usr/bin", "/bin",
"/usr/local/sbin", "/usr/sbin" y "/sbin" en ese orden. La variable PATH es esencial en sistemas Unix y Linux para permitir el
acceso rápido a los comandos desde cualquier ubicación en la terminal.
CTRL +L
La combinación de teclas "Ctrl + L" en una terminal se utiliza para borrar la pantalla o limpiar la ventana de la terminal.
Cuando presionas "Ctrl + L", la terminal eliminará todos los comandos y texto previamente mostrados en la pantalla, lo que
hace que la terminal se vea limpia y lista para recibir nuevos comandos.
Este atajo es útil para mantener la terminal ordenada y eliminar el desplazamiento de texto anterior. Sin embargo, ten en
cuenta que no elimina ningún historial de comandos ni afecta los procesos en ejecución; simplemente limpia la pantalla para
una mejor legibilidad.
Es importante destacar que la funcionalidad exacta de "Ctrl + L" puede variar según el emulador de terminal y el sistema
operativo que estés utilizando, pero en la mayoría de los casos, se utiliza para borrar la pantalla de la terminal.
cat /etc/group | grep "floppy" -n
El comando "cat /etc/group | grep "floppy" -n" se utiliza para buscar la cadena de texto "floppy" en el contenido del archivo
"/etc/group" y mostrar todas las líneas que contienen esta cadena, junto con el número de línea en la que se encuentra. Aquí
está la explicación de su uso:
cat /etc/group : Esto muestra el contenido del archivo "/etc/group" en la terminal. Como mencioné anteriormente, este
archivo contiene información sobre los grupos de usuarios en el sistema.
| (tubería): El símbolo de tubería se utiliza para redirigir la salida del comando a su izquierda como entrada al comando a
su derecha. En este caso, está pasando la salida del comando "cat /etc/group" al comando "grep".
grep "floppy" -n : El comando "grep" se utiliza para buscar una cadena de texto específica en la entrada que recibe. En
este caso, está buscando la cadena "floppy". El argumento "-n" se utiliza para que "grep" muestre el número de línea en la
que se encuentra cada coincidencia.
El resultado será una lista de todas las líneas en el archivo "/etc/group" que contienen la palabra "floppy" junto con el número
de línea en el que se encuentra cada coincidencia. Esto es útil para buscar y filtrar información en archivos de texto en
sistemas Unix y Linux.
§
§
CONOCIMIENTO CONCRETO (hoja elaborada).
PRACTICA
!! Como la mayoría de estos conocimientos ya los tengo interiorizados por su uso cotidiano lo que practique su uso
/usr/bin/cat /etc/group | grep "floppy" -n fue de este comando OJO con cat jugué con el buscando en mi
archivo passwd donde están los usuarios filtrando por el tipo de SHELL que utilizan.
COMANDOS
whoami
id
sudo su
exit
cat /etc/group
which
echo $PATH
CTRL + L
DIA 08-08-2023
§
PRIMER CONOCIMIENTO (hoja elaborada).
command -v whoami
El comando "command -v whoami" en Parrot OS se utiliza para verificar la ruta completa del ejecutable del comando
"whoami". Aquí está la explicación:
command -v : Esta parte del comando se utiliza para buscar la ubicación del ejecutable del comando especificado.
whoami : Es el comando cuya ubicación deseas verificar.
Cuando ejecutas "command -v whoami", el sistema mostrará la ruta completa hacia el ejecutable del comando "whoami", lo
que puede ser útil para saber dónde se encuentra ese comando en el sistema. Esto es útil cuando necesitas saber la
ubicación exacta de un comando en Parrot OS para varios propósitos, como scripts o ajustes de configuración.
pwd
El comando "pwd" se utiliza en sistemas Unix y Linux para mostrar la ruta completa (directorio actual) del directorio en el que
te encuentras trabajando en la terminal. Aquí está la explicación:
pwd : Abreviatura de "print working directory", es un comando que muestra la ruta completa del directorio actual en la
terminal.
Cuando ejecutas "pwd", la terminal mostrará la ruta completa del directorio en el que te encuentras, lo que puede ser útil
para saber en qué ubicación del sistema de archivos te encuentras trabajando en ese momento. Esto es especialmente útil
al navegar y trabajar con archivos y directorios en la terminal.
ls
1. ls : Muestra los archivos y directorios en el directorio actual de la terminal. Es el comando más básico para listar contenido.
2. ls -l : Muestra una lista detallada de archivos y directorios en el directorio actual, incluyendo información como permisos,
propietario, grupo, tamaño y fecha de modificación.
3. ls -la : Muestra una lista detallada de archivos y directorios en el directorio actual, incluyendo los archivos y directorios
ocultos que comienzan con un punto ("."). Los archivos y directorios ocultos están generalmente configurados de esta
manera para no aparecer en la lista de "ls" por defecto.
4. ls -lha : Similar al comando anterior, muestra una lista detallada que incluye archivos y directorios ocultos, y la opción "h"
muestra los tamaños de archivo en un formato legible por humanos (por ejemplo, en kilobytes o megabytes en lugar de
bytes).
5. ls -la /etc/ : Lista los archivos y directorios ocultos y no ocultos en el directorio "/etc" (una ubicación importante en
sistemas Unix/Linux que contiene archivos de configuración del sistema) en una forma detallada.
6. ls -lh : Muestra una lista de archivos y directorios en formato largo y con tamaños legibles por humanos (por ejemplo, en
kilobytes o megabytes).
7. ls -t : Lista los archivos y directorios en orden de tiempo de modificación, mostrando primero los más recientes.
8. ls -S : Ordena la lista de archivos por tamaño en orden descendente, mostrando primero los archivos más grandes.
9. ls -R : Muestra los archivos y directorios de forma recursiva, es decir, muestra el contenido de subdirectorios también.
10. ls -d : Muestra solo los nombres de los directorios en lugar de su contenido se puede utilizar de la siguiente manera ls -d
Documentos/
Estos son solo algunos ejemplos de las muchas opciones que puedes utilizar con el comando "ls" para personalizar la
visualización de archivos y directorios según tus necesidades. Puedes consultar el manual del comando "ls" con el comando
man ls para obtener más información sobre sus opciones y cómo usarlo.
cd
1. cd : Simplemente "cd" seguido por el nombre de un directorio te permite cambiar al directorio especificado. Por ejemplo, cd
directorio te llevará al directorio "directorio" si existe en la ubicación actual.
2. cd .. : "cd .." te permite retroceder un directorio, es decir, cambiar al directorio padre del directorio actual.
3. cd ~ o cd : "cd ~" te lleva al directorio de inicio del usuario actual. Puedes usar simplemente "cd" para lograr lo mismo.
4. cd /ruta/directorio : Puedes proporcionar una ruta completa para cambiar a un directorio en cualquier ubicación del
sistema de archivos. Por ejemplo, cd /home/usuario te llevará al directorio "/home/usuario".
5. cd - : "cd -" te lleva de vuelta al directorio al que cambiaste antes del directorio actual. Es útil para alternar entre dos
directorios.
6. cd -- : "cd --" te permite cambiar al directorio de inicio, incluso si hay un directorio llamado "--" en la ubicación actual.
7. cd / : "cd /" te lleva al directorio raíz del sistema, el directorio principal en el que se basan todos los demás directorios.
Estos son algunos ejemplos de cómo utilizar el comando "cd" y sus variantes para navegar por el sistema de archivos en
sistemas Unix y Linux. Cambiar de directorio es fundamental al trabajar en la línea de comandos para acceder y gestionar
archivos y directorios en tu sistema.
echo $HOME
El comando "echo $HOME" se utiliza para mostrar la ruta completa del directorio de inicio del usuario actual en sistemas
Unix y Linux. Aquí está la explicación:
echo : Como se mencionó antes, "echo" se utiliza para mostrar texto en la pantalla.
$HOME : Es una variable de entorno que almacena la ruta completa del directorio de inicio del usuario actual.
Cuando ejecutas "echo $HOME", la terminal mostrará la ruta completa del directorio de inicio del usuario en el sistema. El
directorio de inicio es el directorio principal que se asigna a un usuario cuando inicia sesión en el sistema, y es donde
generalmente se almacenan los archivos personales y la configuración de usuario. Por lo tanto, esta variable es útil para
acceder rápidamente al directorio de inicio del usuario en scripts y comandos.
cat /etc/passwd
El comando "cat /etc/passwd" se utiliza para mostrar el contenido del archivo "/etc/passwd" en sistemas Unix y Linux. Aquí
tienes una explicación de su uso:
cat : Este comando se utiliza para concatenar y mostrar el contenido de archivos de texto en la terminal.
/etc/passwd : Es la ubicación del archivo que contiene información sobre los usuarios del sistema, como sus nombres de
usuario, identificadores de usuario (UID), identificadores de grupo (GID), directorios de inicio, información de contacto y rutas
a las shells predeterminadas.
Cuando ejecutas "cat /etc/passwd", la terminal mostrará el contenido del archivo "/etc/passwd", que es una parte
fundamental de la configuración de usuarios en sistemas Unix y Linux. Este archivo contiene una entrada por usuario y es
utilizado por el sistema para gestionar la información de usuario.
Sin embargo, ten en cuenta que el contenido de este archivo suele ser extenso y contiene información sensible, por lo que
se debe tener cuidado al acceder o modificar este archivo y debe hacerse con permisos adecuados y con conocimiento de lo
que se está haciendo.
echo $SHELL
El comando "echo $SHELL" se utiliza para mostrar la ruta de la shell (intérprete de comandos) que está siendo utilizada por
el usuario actual en sistemas Unix y Linux. Aquí está la explicación de su uso:
echo : Como se mencionó anteriormente, "echo" se utiliza para mostrar texto en la pantalla.
$SHELL : Es una variable de entorno que almacena la ruta completa del programa de la shell utilizada por el usuario.
Cuando ejecutas "echo $SHELL", la terminal mostrará la ruta completa del intérprete de comandos actual que estás
utilizando. Por ejemplo, si estás utilizando la shell Bash, la salida será algo como "/bin/bash".
Es útil para verificar qué shell estás utilizando en un momento dado, ya que diferentes usuarios pueden tener diferentes
intérpretes de comandos predeterminados en un sistema y también es útil al escribir scripts para saber qué shell se usará
para ejecutar el script.
cat /etc/shells
El comando "cat /etc/shells" se utiliza para mostrar el contenido del archivo "/etc/shells" en sistemas Unix y Linux. Este
archivo contiene una lista de las rutas a los intérpretes de comandos o shells disponibles en el sistema. La explicación es la
siguiente:
cat : Como se mencionó antes, "cat" se utiliza para mostrar el contenido de archivos de texto en la terminal.
/etc/shells : Es la ubicación del archivo que contiene la lista de intérpretes de comandos o shells disponibles en el
sistema.
Cuando ejecutas "cat /etc/shells", la terminal mostrará una lista de las rutas a los intérpretes de comandos o shells que están
permitidos en el sistema. Esto es útil para conocer las shells disponibles y permitidas en el sistema.
Para cambiar entre intérpretes de comandos o shells, generalmente puedes usar el comando bash
Esto cambiará tu shell predeterminada a Bash. Sin embargo, ten en cuenta que cambiar la shell Asegúrate de conocer bien
el uso de las diferentes shells antes de cambiar la configuración de tu shell predeterminada.
PRACTICA*
!! Esta practica consiste en un supuesto escenario en donde ingreso a una maquina victima y no tengo el comando
which y debo ir a la raíz del sistema y analizar los bin,etc,opt y realizar búsquedas y filtrar la informaciones ellos.
ls -la /opt/microsoft/powershell/7 | grep "LICENSE.txt" con este comando al fin llegue a comprender el
como utilizar el grep junto al pipeo ya que filtre efectivamente el contenido del ls y también puedo filtrar el contenido
de un cat.
COMANDOS
command -v whoami
pwd
ls
ls -l
ls -la
ls -lha
ls -la /etc/
ls -lh
ls -t
ls -S
ls -R
ls -d Documentos/
cd
cd ..
cd ~
cd /home/usuario
cd -
cd --
cd /
echo $HOME
cat /etc/shells
echo $SHELL
bash
03-CONTROL DEL FLUJO STDERR-STDOUT, OPERADORES Y
PROCESOS EN SEGUNDO PLANO.
DIA 08-08-2023
§
PRIMER CONOCIMIENTO (hoja elaborada).
whoami;ls;pwf
Entonces, la primera y segunda instrucción se ejecutarán correctamente, mientras que la tercera generará un mensaje de
error debido a que no es un comando válido.
whoami && ls
El operador && se utiliza para ejecutar comandos en secuencia, uno tras otro, solo si el comando anterior se ejecuta
correctamente (es decir, si no genera errores o devuelve un código de salida distinto de cero).
El comando whoami && ls se ejecuta de la siguiente manera:
El operador && entre ellos significa que el comando "ls" se ejecutará solo si el comando "whoami" se ejecuta con éxito y no
genera errores. Si "whoami" se ejecuta correctamente, entonces "ls" se ejecutará inmediatamente después y mostrará la lista
de archivos y directorios.
En resumen, este comando mostrará el nombre de usuario actual y, si se ejecuta sin errores, listarán los archivos y
directorios en el directorio actual. El uso de && es útil para ejecutar comandos en secuencia solo si el comando anterior
tiene éxito.
echo $?
El comando "echo $?" se utiliza para mostrar el código de salida del comando anterior en sistemas Unix y Linux. Aquí está la
explicación:
echo : Como se mencionó anteriormente, "echo" se utiliza para mostrar texto en la pantalla.
$? : Es una variable especial que almacena el código de salida del comando ejecutado previamente. El código de salida es
un valor numérico que indica si el comando se ejecutó correctamente o si ocurrió algún error. Un código de salida de 0
generalmente indica éxito, mientras que un valor distinto de 0 indica un error.
Cuando ejecutas "echo $?", la terminal mostrará el código de salida del comando inmediatamente anterior. Esto es útil para
verificar si un comando anterior se ejecutó correctamente o para automatizar acciones basadas en el resultado de un
comando en un script de shell.
whami || ls -la
El operador || se utiliza para ejecutar un segundo comando solo si el primer comando falla, es decir, si el primer comando
genera un código de salida distinto de cero (indicando un error).
El comando whoami || ls -la se ejecuta de la siguiente manera:
El operador || entre ellos significa que si "whoami" genera un error o no se ejecuta correctamente (por ejemplo, si el
comando no existe), entonces "ls -la" se ejecutará en su lugar
En resumen, este comando mostrará el nombre de usuario actual y, si "whoami" genera un error, listarán los archivos y
directorios en formato largo, incluyendo los ocultos. El uso de || es útil para ejecutar un comando alternativo en caso de
que el primer comando falle.
cat /etc/hosts/
El comando "cat /etc/hosts" se utiliza para mostrar el contenido del archivo "/etc/hosts" en sistemas Unix y Linux. Aquí tienes
una explicación de su uso:
cat : Este comando se utiliza para concatenar y mostrar el contenido de archivos de texto en la terminal.
/etc/hosts : Es la ubicación del archivo que contiene información de mapeo entre direcciones IP y nombres de host en un
sistema. Es utilizado para resolver nombres de host a direcciones IP de manera local.
Cuando ejecutas "cat /etc/hosts", la terminal mostrará el contenido del archivo "/etc/hosts". Este archivo es esencial para el
funcionamiento del sistema y es utilizado para resolver nombres de host, lo que es útil, por ejemplo, cuando se desea
asignar nombres de host personalizados a direcciones IP locales o se necesita resolver nombres de host en una red local sin
depender de un servidor DNS externo.
whamiu 2>/dev/null
El comando whamiu 2>/dev/null parece contener un error tipográfico y una redirección de salida. Aquí está la explicación:
whamiu : Esto parece ser un error tipográfico. El comando correcto para mostrar el nombre de usuario actual es "whoami".
2>/dev/null : Esta parte del comando se utiliza para redirigir la salida del canal de error estándar (stderr), que está
denotado por el número 2, hacia el archivo especial /dev/null . /dev/null es un dispositivo especial en sistemas Unix y
Linux que se utiliza para descartar la salida. En otras palabras, esta parte del comando redirige los mensajes de error al
"agujero negro" de /dev/null , lo que significa que cualquier mensaje de error generado por el comando será descartado y
no se mostrará en la salida.
Por lo tanto, si corriges el error tipográfico y ejecutas el comando "whoami 2>/dev/null", mostrará el nombre de usuario actual
y cualquier mensaje de error que genere (si los hay) se descartará y no se mostrará en la salida. Esto es útil cuando deseas
evitar que los mensajes de error interfieran con la salida principal o cuando deseas ejecutar un comando en silencio sin ver
mensajes de error.
whoami >/dev/null
El comando "whoami >/dev/null" se utiliza para redirigir la salida estándar de un comando al archivo especial /dev/null , lo
que resulta en que la salida se descarte. Aquí está la explicación:
whoami : Este comando se utiliza para mostrar el nombre de usuario actual en la terminal.
> /dev/null : Esta parte del comando redirige la salida estándar (stdout) del comando "whoami" al archivo especial
/dev/null . /dev/null es un dispositivo especial en sistemas Unix y Linux que se utiliza para descartar la salida.
Cuando ejecutas "whoami > /dev/null", el comando "whoami" funcionará normalmente y mostrará tu nombre de usuario en la
terminal. Sin embargo, la salida estándar que normalmente se mostraría en la pantalla se redirigirá al archivo /dev/null , lo
que significa que la salida se descartará y no se mostrará en la pantalla. Este enfoque se utiliza cuando deseas ejecutar un
comando pero no estás interesado en su salida y deseas que sea silencioso.
cat /etc/hosts >/dev/null 2>&1
El comando "cat /etc/hosts >/dev/null 2>&1" es una construcción común para redirigir tanto la salida estándar (stdout) como
la salida de error estándar (stderr) a /dev/null , lo que hace que el comando se ejecute en silencio sin mostrar ningún
resultado o mensaje de error. Aquí está la explicación:
cat /etc/hosts : Este comando muestra el contenido del archivo "/etc/hosts", que es un archivo que contiene información
de mapeo entre direcciones IP y nombres de host en sistemas Unix y Linux.
> /dev/null : El operador > se utiliza para redirigir la salida estándar (stdout) del comando a /dev/null . Esto significa
que la salida se descartará y no se mostrará en la pantalla.
2>&1 : Esta parte del comando redirige la salida de error estándar (stderr) hacia el mismo destino que la salida estándar
(stdout), que en este caso es /dev/null . El "2" denota stderr, y ">&1" significa redirigirlo al mismo lugar que stdout, que es
/dev/null .
En conjunto, este comando ejecuta "cat /etc/hosts" pero redirige tanto la salida estándar como la salida de error a
/dev/null , lo que significa que no se mostrará ningún resultado en la pantalla y cualquier mensaje de error generado por el
comando se descartará. Esto se usa comúnmente cuando deseas ejecutar un comando en silencio y no estás interesado en
su salida o mensajes de error.
cat /etc/hosts &>/dev/null
El comando "cat /etc/hosts &>/dev/null" es una forma de redirigir tanto la salida estándar (stdout) como la salida de error
estándar (stderr) a /dev/null , lo que hace que el comando se ejecute en silencio sin mostrar ningún resultado ni mensajes
de error. Aquí está la explicación:
cat /etc/hosts : Este comando muestra el contenido del archivo "/etc/hosts", que es un archivo que contiene información
de mapeo entre direcciones IP y nombres de host en sistemas Unix y Linux.
&>/dev/null : Esta parte del comando redirige tanto la salida estándar (stdout) como la salida de error estándar (stderr) al
archivo especial /dev/null . /dev/null es un dispositivo especial en sistemas Unix y Linux que se utiliza para descartar
la salida.
En conjunto, este comando ejecuta "cat /etc/hosts" pero redirige tanto la salida estándar como la salida de error a
/dev/null , lo que significa que no se mostrará ningún resultado en la pantalla y cualquier mensaje de error generado por el
comando se descartará. Esto se utiliza cuando deseas ejecutar un comando en silencio y no estás interesado en su salida o
mensajes de error.
sudo wiresahrk &>/dev/null & disown
El comando que proporcionaste combina varias funciones para ejecutar WireShark (un analizador de protocolos de red) con
ciertas acciones adicionales. Aquí está la explicación de cada parte:
1. sudo wireshark : Esto ejecuta WireShark con privilegios de superusuario (root) para que pueda capturar paquetes de red
en el sistema.
2. &>/dev/null : Esta parte redirige tanto la salida estándar (stdout) como la salida de error estándar (stderr) a /dev/null , lo
que significa que no se mostrará ningún resultado en la pantalla, y cualquier mensaje de error generado por el comando se
descartará.
3. & : Esto coloca el comando en segundo plano, lo que significa que se ejecutará en segundo plano, y la terminal no quedará
bloqueada esperando a que termine.
4. disown : Esta parte del comando se utiliza para "desvincular" el proceso de la terminal actual. Esto significa que si cierras la
terminal, el proceso de WireShark continuará ejecutándose en segundo plano y no se verá afectado por el cierre de la
terminal.
En resumen, el comando completo ejecuta WireShark con privilegios de superusuario, redirige su salida estándar y de error
a /dev/null , lo ejecuta en segundo plano y luego lo "desvincula" de la terminal actual para que siga funcionando incluso si
cierras la terminal. Esto puede ser útil cuando deseas ejecutar WireShark de manera silenciosa y dejarlo en ejecución
continua. Ten en cuenta que ejecutar aplicaciones con privilegios de superusuario debe hacerse con precaución.
§
PRACTICA
Esta practica consiste en repasar cada uno de los comandos aquí mencionados de manera practica y explicándolos
!!
de manera detallada.
COMANDOS
whoami;ls;pwf
whoami && ls
echo $?
whami || ls -la
cat /etc/hosts/
whamiu 2>/dev/null
whoami >/dev/null
DIA 09-08-2023
§
PRIMER CONOCIMINETO (hoja elaborada)
El comando "exec 3<> file" se utiliza en sistemas Unix y Linux para abrir o crear un archivo para lectura y escritura,
asignándole el descriptor de archivo (file descriptor) 3. Aquí está la explicación:
exec : Es un comando utilizado en scripts de shell para modificar las asignaciones de descriptores de archivo. En este caso,
se está utilizando para abrir o crear un archivo y asignarle un descriptor de archivo personalizado.
3<> : Esto indica que el descriptor de archivo 3 se utilizará para la operación de apertura y escritura en el archivo.
file : Es el nombre del archivo que se abrirá o creará. Puedes reemplazar "file" con el nombre del archivo que deseas usar.
Cuando ejecutas "exec 3<> file," el archivo especificado se abrirá (o se creará si no existe) y se le asignará el descriptor de
archivo 3. Luego, puedes utilizar el descriptor de archivo 3 en el script de shell para realizar operaciones de lectura y
escritura en el archivo.
Este enfoque se utiliza a veces en programación de shell para trabajar con archivos en un nivel más bajo y tener un mayor
control sobre las operaciones de lectura y escritura.
file archivo.txt
El comando "file archivo.txt" se utiliza para determinar el tipo de archivo de "archivo.txt" en sistemas Unix y Linux. Aquí está
la explicación:
file : Este comando se utiliza para examinar el tipo de archivo y proporciona información sobre el contenido del archivo.
archivo.txt : Es el nombre del archivo del cual deseas conocer el tipo.
Cuando ejecutas "file archivo.txt", el comando examina el contenido del archivo "archivo.txt" y muestra información sobre su
tipo. Esta información puede incluir si es un archivo de texto, un archivo binario, un archivo de imagen, un archivo de audio,
un archivo de programa, etc.
Es útil para identificar el tipo de archivo, especialmente cuando trabajas con varios archivos y no estás seguro de su
contenido. La salida de "file" te proporcionará detalles sobre el formato y el tipo del archivo en cuestión.
pwd >&3
El comando "pwd >&3" se utiliza para redirigir la salida del comando "pwd" al descriptor de archivo 3. Aquí está la
explicación:
pwd : Este comando se utiliza para mostrar el directorio de trabajo actual, es decir, la ruta del directorio en el que te
encuentras en ese momento.
>&3 : Esta parte del comando redirige la salida estándar (stdout) del comando "pwd" al descriptor de archivo 3. Esto significa
que la salida de "pwd" se enviará al descriptor de archivo 3 en lugar de mostrarse en la pantalla.
En resumen, el comando "pwd >&3" toma la salida del comando "pwd" y la redirige a un descriptor de archivo personalizado
(en este caso, el descriptor 3). Esto puede ser útil en situaciones en las que desees capturar la salida de "pwd" y utilizarla en
otro lugar, como en un script de shell para procesamiento adicional.
exec 3>&-
El comando "exec 3>&-" se utiliza en sistemas Unix y Linux para cerrar un descriptor de archivo personalizado (en este caso,
el descriptor de archivo 3). Aquí está la explicación:
exec : Es un comando utilizado en scripts de shell para modificar las asignaciones de descriptores de archivo.
3>&- : Esto indica que el descriptor de archivo 3 se cerrará. El símbolo "&-" se utiliza para cerrar un descriptor de archivo.
Cuando ejecutas "exec 3>&-", el descriptor de archivo 3 se cierra, lo que significa que ya no está disponible para su uso en
el script. Esto es útil cuando deseas liberar un descriptor de archivo que ya no necesitas, para evitar problemas de uso
excesivo de descriptores de archivo o para garantizar que no se produzcan fugas de descriptores de archivo en tu script.
rm file
El comando "rm file" se utiliza para eliminar (borrar) un archivo en sistemas Unix y Linux. Aquí está la explicación:
rm : Este comando es la abreviatura de "remove" (eliminar) y se utiliza para eliminar archivos y directorios en un sistema de
archivos.
file : Es el nombre del archivo que deseas eliminar. Reemplaza "file" con el nombre del archivo que deseas borrar.
Cuando ejecutas "rm file," el archivo especificado se eliminará permanentemente del sistema de archivos. Ten en cuenta que
esta acción no envía el archivo a la Papelera o a una carpeta de recuperación, sino que lo elimina de forma irreversible. Por
lo tanto, debes tener cuidado al utilizar el comando "rm" para evitar la pérdida accidental de datos.
exec 4>&3
El comando "exec 4>&3" se utiliza para duplicar o copiar el descriptor de archivo 3 en el descriptor de archivo 4 en sistemas
Unix y Linux. Aquí está la explicación:
exec : Es un comando utilizado en scripts de shell para modificar las asignaciones de descriptores de archivo.
4>&3 : Esto indica que el descriptor de archivo 4 se copiará o duplicará del descriptor de archivo 3.
Cuando ejecutas "exec 4>&3," el descriptor de archivo 4 adquiere el mismo contenido que el descriptor de archivo 3. Esto
puede ser útil en situaciones en las que deseas trabajar con múltiples descriptores de archivo y necesitas duplicar o copiar
contenido de un descriptor a otro. Puedes usar estos descriptores de archivo en tu script de shell para realizar operaciones
de lectura y escritura en archivos o para redirigir la entrada y salida de comandos de manera personalizada.
§
PRACTICA
!! Esta practica consiste en crear un descritor de archivo y realizar una copia y cerrarlo la verdad es algo sencillo solo
es ejecutar los comandos como tal y la pequeña peculiaridad del insertar las salidas en dicho descriptor de archivo
como también el uso del comando file que es capaz de brindarme cierta información de un fichero gracias a los
magic numbers.
COMANDOS
file archivo.txt
pwd >&3
exec 3>&-
rm file
exec 4>&3
05-LECTURA E INTERPRETACION DE ARCHIVOS 1-2
DIA 11-08-2023
§
PRIMER CONOCIMIENTO (hoja elaborada).
touch prueba-1.txt
El comando "touch prueba-1.txt" se utiliza para crear un nuevo archivo vacío con el nombre "prueba-1.txt" en sistemas Unix y
Linux. Aquí está la explicación:
touch : Este comando se utiliza para crear archivos vacíos o actualizar las marcas de tiempo de acceso y modificación de
archivos existentes. Cuando se utiliza para crear un archivo, como en este caso, crea un nuevo archivo si no existe.
prueba-1.txt : Es el nombre del archivo que se creará. Puedes reemplazar "prueba-1.txt" con el nombre que desees para
tu nuevo archivo
Cuando ejecutas "touch prueba-1.txt," se creará un archivo vacío en el directorio actual o en la ubicación especificada con el
nombre "prueba-1.txt". Este archivo no contendrá ningún contenido, pero su creación puede ser útil como punto de partida
para futuras ediciones o para registrar información en un archivo.
echo "de esta forma se sustituirá todo el contenido del archivo" > prueba-1.txt
El comando "echo 'de esta forma se sustituirá todo el contenido del archivo' > prueba-1.txt" se utiliza para sustituir todo el
contenido de un archivo existente llamado "prueba-1.txt" con un nuevo texto. Aquí está la explicación:
echo 'de esta forma se sustituirá todo el contenido del archivo' : Esto crea una cadena de texto que se mostrará
en la terminal. En este caso, el texto es "de esta forma se sustituirá todo el contenido del archivo".
> prueba-1.txt : Este operador > se utiliza para redirigir la salida del comando anterior hacia un archivo llamado "prueba-
1.txt". Sin embargo, en este contexto, el uso de > no solo redirige la salida, sino que también trunca o sustituye todo el
contenido existente del archivo "prueba-1.txt" con la nueva cadena de texto.
Cuando ejecutas este comando, el contenido previo de "prueba-1.txt" se reemplazará por la cadena de texto proporcionada,
de modo que el archivo contendrá solo el nuevo texto y no conservará ningún contenido anterior. Es importante tener
cuidado al utilizar > de esta manera, ya que puede sobrescribir datos importantes en el archivo si no se desea.
echo "así de fácil es para que sea de manera apen" >> prueba-1.txt
El comando "echo 'así de fácil es para que sea de manera apen' >> prueba-1.txt" se utiliza para agregar o concatenar texto
al final de un archivo existente llamado "prueba-1.txt" en sistemas Unix y Linux. Aquí está la explicación:
echo 'así de fácil es para que sea de manera apen' : Esto crea una cadena de texto que se mostrará en la terminal.
En este caso, el texto es "así de fácil es para que sea de manera apen".
>> prueba-1.txt : Este operador >> se utiliza para redirigir la salida del comando anterior al final del archivo llamado
"prueba-1.txt". A diferencia del operador > , que sustituye el contenido del archivo, >> agrega o concatena el texto al final
del archivo sin eliminar su contenido anterior.
Cuando ejecutas este comando, la cadena de texto se agregará al final del archivo "prueba-1.txt" sin afectar su contenido
anterior. Esto es útil cuando deseas añadir información o registros al final de un archivo existente sin perder lo que ya está
registrado en él.
nano prueba-2.txt
El comando "nano prueba-2.txt" se utiliza para abrir un editor de texto llamado "nano" y editar o crear un archivo llamado
"prueba-2.txt" en sistemas Unix y Linux. Aquí está la explicación:
nano : Es un editor de texto en modo terminal que te permite crear, modificar y editar archivos de texto en la línea de
comandos.
prueba-2.txt : Es el nombre del archivo que deseas abrir o crear. Puedes reemplazar "prueba-2.txt" con el nombre que
desees para tu archivo.
Cuando ejecutas "nano prueba-2.txt," se abrirá el editor "nano" y podrás ver o editar el contenido del archivo "prueba-2.txt."
Puedes usar las funciones del editor para escribir, editar y guardar tu texto. Una vez que hayas terminado de editar el
archivo, puedes guardarlo y salir del editor "nano". Este comando es útil para realizar ediciones de texto en la línea de
comandos.
y para guardar apretare CTRL + s y para salir CTRL + x y listo la verdad es que este apartado lo tengo mas que
dominado.
nvim prueba-3.txt
El comando "nvim prueba-3.txt" se utiliza para abrir un editor de texto llamado "Neovim" (también conocido como "nvim") y
editar o crear un archivo llamado "prueba-3.txt" en sistemas Unix y Linux. Aquí está la explicación:
nvim (Neovim): Es un editor de texto en modo terminal que se basa en Vim, un editor de texto muy popular en entornos
Unix y Linux. Neovim ofrece características y mejoras adicionales en comparación con Vim.
prueba-3.txt : Es el nombre del archivo que deseas abrir o crear. Puedes reemplazar "prueba-3.txt" con el nombre que
desees para tu archivo.
Cuando ejecutas "nvim prueba-3.txt," se abrirá el editor "Neovim" y podrás ver o editar el contenido del archivo "prueba-
3.txt." Puedes usar las funciones del editor para escribir, editar y guardar tu texto. Una vez que hayas terminado de editar el
archivo, puedes guardarlo y salir del editor "Neovim". Este comando es útil para realizar ediciones de texto en la línea de
comandos utilizando un editor avanzado como Neovim.
ESC + i para poder insertar texto y para guardar y salir ESC + wq super fácil esto de otro level epico. y por ultimo el
acrónimo de guardar y salir ESC + x .
Ahora comencemos de una vez pondré la imagen pero escrita de la mejor manera por yo ya la entiendo y bien pero no hay
mejor forma de expresarlo que como lo anote la verdad asi que goo!!!.
RW-/R--/R-- Esto representa /Propietario/Grupo/Otros
R=Leer.
W=Escribir.
X.=Es un ejecutor sistema de fichero.
Xd=Es un directorio con permiso de atravesar.
§
PRACTICA
!! Esta practica consiste en el repaso de de todos los comando y conceptos aprendidos es decir realizar lo mismo en
por mi cuenta propia es sencillo la verdad pero no significa que no ayude de echo esto me hace sentir muy bien ya
que alguna vez no supe ni siquiera esto que es tan sencillo mas eso era antes ahora lo domino muy bien.
COMANDOS
touch prueba-1.txt
echo "de esta forma se sustituirá todo el contenido del archivo" > prueba-1.txt
echo "así de fácil es para que sea de manera apen" >> prueba-1.txt
nano prueba-2.txt** (CTRL + S)(CTRL + x)
DIA 12-08-2023
§
PRIMER CONOCIMIENTO (hoja elaborada).
ls -la /etc/passwd
El comando ls -la /etc/passwd se utiliza para listar detalladamente ( -l ) el contenido del archivo /etc/passwd en un
sistema Unix o Linux. Aquí está la explicación:
ls : Es el comando para listar archivos y directorios en un sistema Unix o Linux.
-la : Son opciones o argumentos del comando ls .
-l : Muestra la información de listado detallada, incluyendo permisos, propietario, grupo, tamaño, fecha de modificación y
nombre del archivo.
-a : Muestra todos los archivos, incluyendo aquellos cuyos nombres comienzan con un punto (archivos ocultos).
/etc/passwd : Es la ubicación del archivo que se está listando. El archivo /etc/passwd contiene información sobre las
cuentas de usuario en el sistema, como sus nombres de usuario, identificadores de usuario (UID), identificadores de grupo
(GID), directorios de inicio y más.
En resumen, el comando ls -la /etc/passwd te proporcionará una lista detallada de información sobre el archivo
/etc/passwd y mostrará todos los archivos, incluidos los ocultos.
ls -la /etc/shadow
El comando ls -la /etc/shadow se utiliza para listar detalladamente ( -l ) el contenido del archivo /etc/shadow en un
sistema Unix o Linux. Sin embargo, ten en cuenta que el archivo /etc/shadow generalmente contiene información
confidencial relacionada con las contraseñas de los usuarios y, por razones de seguridad, su acceso directo está restringido
incluso para usuarios con privilegios.
Aquí está la explicación:
ls : Es el comando para listar archivos y directorios en un sistema Unix o Linux.
-la : Son opciones o argumentos del comando ls .
-l : Muestra la información de listado detallada, incluyendo permisos, propietario, grupo, tamaño, fecha de modificación y
nombre del archivo.
-a : Muestra todos los archivos, incluyendo aquellos cuyos nombres comienzan con un punto (archivos ocultos).
/etc/shadow : Es la ubicación del archivo que se está listando. El archivo /etc/shadow contiene información cifrada sobre
las contraseñas de los usuarios.
Dado que este archivo contiene información sensible y está protegido, normalmente se necesita privilegios de administrador
para acceder a él directamente. Si intentas listar este archivo sin los privilegios adecuados, obtendrás un mensaje de error o
no se mostrará ningún contenido.
Si necesitas hacer algo específico con el archivo /etc/shadow , asegúrate de hacerlo de manera segura y siguiendo las
prácticas adecuadas de seguridad.
cat /etc/login.defs | grep "ENCRYPT_METHOD
El comando cat /etc/login.defs | grep "ENCRYPT_METHOD" se utiliza para mostrar el contenido del archivo
/etc/login.defs y luego filtrar las líneas que contienen la cadena "ENCRYPT_METHOD" utilizando el comando grep .
Aquí está la explicación paso a paso:
cat /etc/login.defs : El comando cat se utiliza para concatenar y mostrar el contenido de archivos. En este caso,
muestra el contenido del archivo /etc/login.defs .
| : Es el operador de tubería. Toma la salida del comando a la izquierda y la utiliza como entrada para el comando a la
derecha.
grep "ENCRYPT_METHOD" : El comando grep se utiliza para buscar patrones en un archivo o en la entrada que recibe a
través de una tubería. En este caso, está buscando líneas que contienen la cadena "ENCRYPT_METHOD".
En resumen, el comando completo muestra las líneas del archivo /etc/login.defs que contienen la cadena
"ENCRYPT_METHOD". Esto es útil para ver la configuración relacionada con los métodos de cifrado de contraseñas en el
sistema.
§
CONOCIMIENTO CONCRETO (hoja elaborada).
PRACTICA
!! Es una muy sencilla que prácticamente a nivel de comando no me enseña nada nuevo mas me mostro otro uso y
archivos de configuración bien importantes en conclusión solo se realizo los mismo que izo savitar.
COMANDOS
ls -la /etc/passwd
ls -la /etc/shadow
DIA 12-08-2023
§
PRIMER CONOCIMIENTO (hoja elaborada).
sudo su
El comando sudo su se utiliza para cambiar el usuario actual a superusuario (root) en sistemas Unix y Linux. Aquí está la
explicación:
sudo : Es un comando que permite a los usuarios ejecutar programas con los privilegios de seguridad de otro usuario, por lo
general, el superusuario (root). En este caso, sudo se utiliza para obtener privilegios de superusuario.
su : Es el comando para cambiar de usuario. Si se ejecuta sin argumentos, por defecto cambia al usuario root.
Entonces, cuando ejecutas sudo su , estás utilizando sudo para adquirir privilegios de superusuario y luego usas su para
cambiar al usuario root. Después de ingresar la contraseña del usuario actual con privilegios sudo, te conviertes en el
usuario root temporalmente.
Es importante usar este comando con precaución, ya que tener acceso de superusuario brinda un amplio control sobre el
sistema y puede modificar configuraciones críticas.
mkdir pruebas
El comando mkdir pruebas se utiliza para crear un nuevo directorio llamado "pruebas" en el sistema de archivos. Aquí está
la explicación:
mkdir : Este comando es una abreviatura de "make directory" y se utiliza para crear nuevos directorios (carpetas) en
sistemas Unix y Linux.
pruebas : Es el nombre del directorio que se está creando. Puedes cambiar "pruebas" por el nombre que desees para tu
nuevo directorio.
Entonces, cuando ejecutas mkdir pruebas , estás instruyendo al sistema para que cree un nuevo directorio llamado
"pruebas" en el directorio actual. Si deseas crear el directorio en una ubicación específica, puedes proporcionar la ruta
completa después de mkdir .
Después de ejecutar este comando, deberías encontrar un nuevo directorio llamado "pruebas" en el lugar donde ejecutaste
el comando.
su daygray
Estando como root ejecutamos su daygray esto se realiza para migrar al usuario daygray.
chmod o+w pruebas/
El comando chmod o+w pruebas/ se utiliza para agregar permisos de escritura ("write") al "otros" (others) en el directorio
llamado "pruebas". Aquí está la explicación:
chmod : Este comando se utiliza para cambiar los permisos de archivos o directorios en sistemas Unix y Linux.
o+w : Aquí, "o" representa a "otros" (others), y "+w" significa agregar permisos de escritura. Por lo tanto, o+w agrega
permisos de escritura para otros usuarios que no son el propietario ni pertenecen al grupo del archivo o directorio.
pruebas/ : Es el nombre del directorio al que se están aplicando los cambios de permisos.
En resumen, después de ejecutar chmod o+w pruebas/ , los usuarios que no son el propietario ni pertenecen al grupo de
"pruebas" tendrán permisos de escritura en ese directorio.
Es importante tener en cuenta la seguridad al cambiar los permisos, especialmente si estás dando acceso a "otros" usuarios.
Asegúrate de entender las implicaciones de seguridad antes de realizar cambios en los permisos de archivos o directorios.
rm -r *
El comando rm -r * se utiliza para eliminar de forma recursiva ( -r significa "recursivo") todos los archivos y directorios
en el directorio actual. Aquí está la explicación:
rm : Este comando se utiliza para eliminar (borrar) archivos o directorios en sistemas Unix y Linux.
-r : Es una opción que indica eliminar de forma recursiva. Cuando se utiliza -r con rm , se eliminarán tanto los archivos
como los directorios y su contenido de forma recursiva.
* : Es un comodín que representa todos los archivos y directorios en el directorio actual. En este contexto, significa "todos
los archivos y directorios".
Por lo tanto, cuando ejecutas rm -r * , estás instruyendo al sistema para que elimine de forma recursiva todos los archivos
y directorios en el directorio actual. Este comando es muy potente y puede causar la pérdida irreparable de datos si se utiliza
incorrectamente, así que asegúrate de utilizarlo con precaución y de confirmar que estás en el directorio correcto antes de
ejecutarlo.
chmod o-w pruebas/
El comando chmod o-w pruebas/ se utiliza para quitar el permiso de escritura ( -w ) a "otros" (users) en el directorio
llamado "pruebas". Aquí está la explicación:
chmod : Este comando se utiliza para cambiar los permisos de archivos o directorios en sistemas Unix y Linux.
o-w : Aquí, "o" representa a "otros" (users), y -w significa quitar el permiso de escritura. Por lo tanto, o-w quita el permiso
de escritura para otros usuarios que no son el propietario ni pertenecen al grupo del archivo o directorio.
pruebas/ : Es el nombre del directorio al que se están aplicando los cambios de permisos.
En resumen, después de ejecutar chmod o-w pruebas/ , los usuarios que no son el propietario ni pertenecen al grupo de
"pruebas" ya no tendrán permisos de escritura en ese directorio.
Recuerda que modificar los permisos puede afectar la seguridad y el acceso a los archivos y directorios, así que asegúrate
de entender las consecuencias antes de realizar cambios.
chgrp daygray pruebas/
El comando chgrp daygray pruebas/ se utiliza para cambiar el grupo de un directorio llamado "pruebas" al grupo
especificado "daygray". Aquí está la explicación:
chgrp : Este comando se utiliza para cambiar el grupo de un archivo o directorio en sistemas Unix y Linux.
daygray : Es el nombre del grupo al que se está cambiando el directorio "pruebas".
pruebas/ : Es el nombre del directorio al que se están aplicando los cambios de grupo.
En resumen, después de ejecutar chgrp daygray pruebas/ , el directorio "pruebas" cambiará su grupo al grupo "daygray".
Esto significa que los usuarios que pertenecen al grupo "daygray" tendrán ciertos permisos específicos en ese directorio,
dependiendo de cómo se hayan configurado los permisos de grupo.
Espero que esta explicación sea útil. Si tienes más preguntas, no dudes en preguntar. ¡Buena suerte con tus proyectos!
chmod g+w pruebas/
El comando chmod g+w pruebas/ se utiliza para añadir el permiso de escritura ( +w ) al grupo ( g ) del directorio llamado
"pruebas". Aquí está la explicación:
chmod : Este comando se utiliza para cambiar los permisos de archivos o directorios en sistemas Unix y Linux.
g+w : Aquí, "g" representa al grupo, y +w significa añadir el permiso de escritura. Por lo tanto, g+w añade el permiso de
escritura al grupo del archivo o directorio.
pruebas/ : Es el nombre del directorio al que se están aplicando los cambios de permisos.
En resumen, después de ejecutar chmod g+w pruebas/ , el grupo al que pertenece el directorio "pruebas" obtendrá el
permiso de escritura en ese directorio. Esto permite a los miembros del grupo realizar operaciones de escritura en el
directorio.
chmod u+rwx,g+rx,g-w,o-rwx pruebas/
El comando chmod u+rwx,g+rx,g-w,o-rwx pruebas/ se utiliza para ajustar los permisos del directorio "pruebas" de manera
detallada. Aquí está la explicación:
chmod : Este comando se utiliza para cambiar los permisos de archivos o directorios en sistemas Unix y Linux.
u+rwx : Aquí, "u" representa al propietario, y +rwx significa añadir los permisos de lectura, escritura y ejecución. Por lo
tanto, u+rwx añade estos permisos al propietario del archivo o directorio.
g+rx : Aquí, "g" representa al grupo, y +rx significa añadir los permisos de lectura y ejecución. Por lo tanto, g+rx añade
estos permisos al grupo del archivo o directorio.
g-w : Aquí, g-w significa quitar el permiso de escritura al grupo.
o-rwx : Aquí, "o" representa a "otros" (users), y -rwx significa quitar todos los permisos (lectura, escritura y ejecución) a
otros usuarios.
pruebas/ : Es el nombre del directorio al que se están aplicando los cambios de permisos.
En resumen, después de ejecutar este comando, los permisos en el directorio "pruebas" serán configurados de la siguiente
manera:
El propietario tiene permisos de lectura, escritura y ejecución.
El grupo tiene permisos de lectura y ejecución, pero no tiene permisos de escritura.
Otros usuarios no tienen ningún permiso.
Estos cambios detallados de permisos son útiles para controlar quién puede hacer qué en un directorio. Recuerda ajustar los
permisos según las necesidades específicas de tu situación.
§
CONOCIMENTO CONCRETO (hoja elaborada)
PRACTICA
Dicha practica ya fue elaborada y comprendida satisfactoria mente consistió en crear diversos ficheros y directorios
!!
y usuarios y asignar diversos permisos sobre ellos fue preciosa y aun me acuerdo de ella la verdad es parecida a
los retos que vendrán mas adelante.
COMANDOS
su daygray
rm -r *
mkdir pruebas
08-ASIGNACION DE PERMISOS 2-2
DIA 12-08-2023
§
PRIMER CONOCIMIENTO (hoja elaborada).
Bueno comencemos modo super asesino primero me convierto en modo root. con sudo su
Bueno una soy usuario root procedo a irme al directorio home en donde se encuentran los usuarios y hay creare un
directorio con el nombre del usuario que creare. mkdir yair
useradd yair -s /bin/bash -d /home/yair
El comando useradd yair -s /bin/bash -d /home/yair se utiliza para agregar un nuevo usuario llamado "yair" al
sistema. Aquí está la explicación:
useradd : Este comando se utiliza para agregar un nuevo usuario en sistemas Unix y Linux.
yair : Es el nombre del nuevo usuario que estás creando.
-s /bin/bash : Aquí, -s se utiliza para especificar la shell que se asignará al nuevo usuario. En este caso, se establece la
shell en /bin/bash , que es una shell común en sistemas Unix y Linux.
-d /home/yair : Aquí, -d se utiliza para especificar el directorio de inicio del nuevo usuario. En este caso, se establece en
/home/yair . Este será el directorio principal del usuario cuando inicie sesión.
Entonces, después de ejecutar este comando, se creará un nuevo usuario llamado "yair" con la shell /bin/bash y el
directorio de inicio /home/yair .
Recuerda que para establecer una contraseña para el nuevo usuario y activar la cuenta, puedes usar el comando passwd
después de ejecutar useradd . Por ejemplo:
passwd yair
PRACTICA
Esta practica ya la realice con anterioridad por ello la definiré y la recordare nomas ya que los comandos ya lo
!!
repase cuándo realice estos apuntes bueno de echo creo que esto leeré en mis tiempos libres para una mejor
comprensión aquí vamos la práctica consistió en crear tres usuarios con diferentes shell y diferentes directorios de
home y hay crear diferentes ficheros con diferentes permisos y grupos y juagar con ellos estuvo brutal la verdad es
de echo la practica mas brutal que realice.
COMANDOS
passwd yair
groupadd Alumnos
DIA 14-08-2023
§
PRIMER CONOCIMIENTO (hoja elaborada).
Esta es otra forma de asignar permisos de echo es mucho mas rápida su asignación de los permisos como tal y no es tan
compleja tampoco,
Esta practica consiste en como root en mi carpeta de pruebas que se encuentra en /home/daygray/Pruebas crear con mkdir
el directorio testing.
Bueno para explicar el como funciona los permisos octales usaremos esta tabla fácil y sencilla : /rwx/r-x/r-x/
/111/401/401/
las letras y signos que se encuentran se deben de representar de la siguiente manera.
chmod 777 testing/
El comando chmod 777 testing/ se utiliza para cambiar los permisos del directorio llamado "testing" de manera que se
concedan todos los permisos (lectura, escritura y ejecución) a todos los usuarios. Aquí está la explicación:
chmod : Este comando se utiliza para cambiar los permisos de archivos o directorios en sistemas Unix y Linux.
777 : En la notación de octal, los números 7 representan el permiso completo, lo que significa que se concede lectura (4) +
escritura (2) + ejecución (1). Entonces, 777 significa todos los permisos para el propietario, el grupo y otros usuarios.
testing/ : Es el nombre del directorio al que se están aplicando los cambios de permisos.
En resumen, después de ejecutar este comando, todos los usuarios (propietario, grupo y otros) tendrán permisos completos
(lectura, escritura y ejecución) en el directorio "testing". Ten en cuenta que otorgar permisos tan amplios puede tener
implicaciones de seguridad, así que asegúrate de entender y necesitar estos permisos antes de aplicarlos.
Bueno es así de sencillo lo de los permisos octales.
§
PRACTICA
Esta practica consistió en realizar la conversión mental de varias versiones de los permisos octales hasta poder
!!
habituarme a su uso y se logro con mucha facilidad.
COMANDOS
chmod 777 testing/
10-PERMISOS ESPECIALES STICKY BIT
DIA 16-08-2023
§
PRIMER CONOCIMIENTO (hoja elaborada).
El primer paso es abrirme una consola como yair en mi directorio personal de trabajo.
Después me dirigiré al escritorio con el comando cd y dentro de ese directorio me convierto en root.
Una vez estando como root creo un directorio llamado Pruebas.
Antes de avanzar en este caso vamos a necesitar haber creado con anterioridad un usuario esto es un requisito para
entender esta practica en mi caso yo lo borre por ello volveré a crearlo solo para esta practica bueno no mejor aun lo dejare
como mi usuario de pruebas.
Una vez solucionado el problema del usuario procedo a asignarles los permisos de usuario y grupo a este nuevo usuario del
directorio Pruebas con chown chown pruebas:pruebas Pruebas/ .
bueno ya creamos el usuario y password mas así que recapitulemos ya que hoy es otro día haber lo que hice fue crear como
root en el usuario daygray en su directorio Desktop un directorio llamado Pruebas luego le asigne los permisos de propietario
y grupo a mi usuarios pruebas y después le asigne un full permisos con chmod 777 Pruebas/
Creo un nuevo fichero con el comando echo "HOLA DIOS AQUI ESTOY YO"> file.txt con este comando insertamos un
texto a la vez que creamos un fichero es sencillo la verdad.
!! AHORA HAGAMOS LA PRUEBA DE BORRAR ESE FICHERO COMO DAYGRAY EL CUAL PERTENECE A
pruebas PERO YO TENGO PERMISOS SOBRE EL DIRECTORIO QUE CONTIENE ESE FICHERO POR
ELLO PODRIA BORRARLO ESTO SE DEBE A QUE EL SISTEMA PRIORIZA EL PERMISO SUPERIOR.
Para añadir el nuevo permiso sticky bit primero volvemos como el usuario pruebas y creamos un nuevo directorio para hacer
la prueba y volvemos atrás a mi Desktop para ver el directorio Pruebas y allí habilitamos el nuevo permiso sticky bit con
chmod +t Pruebas/ con este muy sencillo comando añado el permiso especial y para sacarlo es chmod -t Pruebas/ es
tan simple como esto la verdad es que es muy sencillo.
Ahora procedemos a intentarlo borrarlo y nos sorprenderemos al ver que ya nos permite realizar esa accion.
§
CONOCIMIENTO CONCRETO (hoja elaborada).
PRACTICA
Esta practica consistió en realmente entender el funcionamiento de los permisos sticky bit mediante la practica y el
razonamiento de este permiso avanzado.
COMANDOS
chmod +t Pruebas/
chmod -t Pruebas/
11-CONTROL DE ATRIBUTOS DE FICHEROS EN LINUX Chattr Y
Lsattr.
DIA 18-08-2023
Ahora me adentrare dentro de los permisos especiales Chattr y Lsattr en si son dos comandos con los cuales
!!
puedo asignar y ver los permisos especiales que tiene el archivo bueno nada mas que decir solo agradecer a DIOS
por todo.
§
PRIMER CONOCIMIENTO(hoja elaborada).
Primero para poder borrar directorios que te preguntas antes de borrar puedo omitir la pregunta con una f de la siguiente
manera rm -rf pruebas/ es muy sencillo la verdad.
El siguiente paso es convertirme en el usuario root y borrar el directorio.
El siguiente paso es crear una copia del archivo /etc/hosts y cambiarle el nombre en el directorio /home/daygray/Desktop/
para ello empleamos el comando cp /etc/hosts prueba con este comando tan sencillo hacemos una copia del archivo y
le cambiamos el nombre.
Ojo es importante recalcar si yo como root quiero borrar el archivo /etc/hosts lo puedo hacer y también el fichero /etc/passwd
lo puedo hacer y es muy peligroso ya que puedo arruinar mi sistema al realizar estas acciones claro que hay archivos que
tiene una copia de seguridad en el sistemas precisamente por estas circunstancias como ser /etc/passwd-
Ahora veremos lo que venimos a ver los permisos avanzados para ver con los que cuenta nuestro fichero vemos con Lsattr.
es decir es así de sencillo lsattr y podemos ver toda las flags con los que cuenta nuestro fichero.
Para añadir una flags utilizare el comando chattr que se utiliza para añadir y quitar permisos de la siguiente manera chattr
+i -V y el -V significa verbose que es a grandes rasgos una pasqueña descripción de las actividades realizadas por el
sistema. Para quitar el permiso ingresamos casi el mismo comando chattr -i -V .
Ahora en que me afecta el tener activado los permisos inmutables de chattr esto me impide borrar hasta como root los
ficheros es una medida de protección.
§
PRACTICA
Esta practica ya fue realizada y verdad es que es muy sencilla esta practica del curso ya que solo conlleva dos nuevos
comandos los cuales son el Lsattr y Chattr y como complemento el uso de -rf y el comando cp de copy es super importante
este ultimo me siento muy agradecido por todo gracias DIOS.
COMANDOS
rm -rf pruebas/
cp /etc/hosts prueba
lsattr
chattr +i -V
chattr -i -V
12-PERMISOS ESPECIALES SUID-SGID
21-08-2023
Comencemos DIOS este es un gran día cada vez me acerco mas a mi meta con pasos muy firmes nada de pasos
!!
con dudas cada día estoy mas cerca de la verdad del hacking ético y la verdad no me canso de repetir lo
agradecido que estoy ando volando en mis estudias esto es meterle duro a mi futuro estoy orgullo de mi mismo.
§
PRIMER CONOCIMIENTO (hoja elaborada).
Bueno el primer paso de esta clase super interesante y importante es el de abrir una consola como root y ejecutar el binario
python3.9 el cual abrirá una consola interactiva python3.9
OJO con ctrl + d nos salimos de dicha consola interactiva y vemos las ruta absoluta del binario con which python3.9
OJO nuevo comando para ejecutar dos comando en simultaneo con el uso del comando xargs es de esta manera which
python3.9 | xargs ls -l
Bueno para asignar un permiso SUID al binario python3.9 hay dos maneras las cuales son chmod 4775
/usr/bin/python3.9 o chmod u+s /usr/bin/python3.9
OJO hay binarios que representan un riesgo para el sistema uno de ellos son los pkexec.
Bueno una vez le halla asignado como root el permiso SUID al binario python3.9 vuelvo a mi usuario daygray y desde hay
puedo realizar una búsqueda de binarios con permisos SUID para poder vulnerarlos con el comando find de la siguiente
manera find / -type f -perm -4000 2>/dev/null literal el siguiente comando se lee de la siguiente manera buscar
desde la raíz el tipo fichero con los permisos 4000 que son los SUID y los que no pueda entrar mandarlos al /dev/null.
OJO importante si yo como savitar veo que tengo permisos SUID en python3.9 voy a poder ejecutar python3.9 de manera
temporal como si fuera el propietario.
procedo a abrir python3.9 con python3.9 y desde aquí puedo llamar a la librería import os y después pedir insertar
usuario como root con os.setuid(0) si nos permite tener acceso ya podremos insertar comando cómo root desde Python
con el siguiente comando os.system("whoami") o aun mas cómodo llamar una consola os.system("zsh") y listo e
escalado privilegios desde el simple uso de permisos es muy sencillo la verdad.
Bueno ahora veré el mismo permiso solo que a nivel de grupo es decir el SGID para realizar la búsqueda es prácticamente lo
mismo solo que con diferencia en que ahora es el permiso 2000 hare la búsqueda find / -type f -perm -2000
2>/dev/null bueno ahora como ejemplo usare el mismo binario de python3.9 y se de igual manera de dos formas chmod
2755 /usr/bin/python3.9 o chmod g+s /usr/bin/python3.9
Y por ultimo para volver a los permisos normales del binario python3.9 que son prácticamente los permisos de todos los
binarios del sistema chmod 755 /usr/bin/python3.9 .
§
Bueno ya practique de sobra esto de los permisos SUID Y SGID que la verdad son bien sencillos y fáciles de entender sq no
son mas que en vez de la x una s que te da acceso de manera especial sobre ciertos binarios del sistemas que se
representan a su vez como 4000 y 2000 son bien simples.
COMANDOS
python3.9
ctrl + d
import os
os.setuid(0)
os.system("whoami")
os.system("zsh")
23-08-2023
AHORA SEP MIS ULTIMOS APUNTES DE ESCRITURA YA LLEGUE HASTA AQUI es la hora de descubrir la
!!
verdad del sistema operativo linux y ver mas halla ir a lo complejo lo extraordinario y siempre lo mas simple y
hermoso del universo la verdad y simple mente la verdad de este hermoso sistema operativo linux.
§
PRIMER CONOCIMIENTO(hoja elaborada).
Bueno las capabilities en si son ciertos permisos que se le pueden aplicar a los ciertos binarios en concreto OJO énfasis en
binarios.
Continuemos procederé a ejecutar el binario de python3.9 con python3.9 y después importar la librería os con import os
para después intentar cambiarme al usuario root con os.setuid(0) y aquí nos puede dar permisos o no depende de las
capabilities precisamente.
Hay una herramienta en el sistema linux que nos permite enlistar las capabilities del sistema y es getcap veo su ubicación
con which getcap y para realizar una búsqueda desde la raíz del sistema de manera recursiva es decir que busque desde
subcarpetas adyacentes y ignore lo ./ usamos recursiva -r y el comando queda de la siguiente manera getcap / -r
2>/dev/null y con este comando puedo ver las capabilities del sistema.
Bueno ahora procederé a asignar la capabilities que me permite acceder al modo root desde la librería os de Python primero
entro al modo root sudo su y después añado la capabilities correspondiente con setcap cap_setuip+ep
/usr/bin/python3.9 y despues comprobamos que se halla aplicado los cambios con getcap /usr/bin/python3.9
Ahora si quiero quitar una capabilities es tan fácil la verdad como getcap -r /usr/bin/python3.9 y ya estaría removida
del binario.
OJO esta pagina me indica las vulnerabilidades es muy útil https://gtfobins.github.io/.
§
PRACTICA
La practica ya fue realizada de forma muy satisfactoria y logre dominar de una manera muy sencilla y amena el uso de las
capabilities en linux sobre todo el entender su uso me lleva a la verdad de estos permisos avanzados.
COMANDOS
which getcap
getcap / -r 2>/dev/null
getcap /usr/bin/python3.9
getcap -r /usr/bin/python3.9
14-ESTRUCTURA DE DIRECTORIOS DEL SISTEMA
23-08-2023
LLEGO LA HORA DE ACABAR CON LOS APUNTES DE CONOCIMIENTO CONCRETO Y METERLE DURO A
!!
ULTIMA FASE DE ESTUDIO Y COMPLETAR DE UNA MANERA MUY SENCILLA MIS ESTUDIOS Y CONVETIRME
EN UN EXPERTO EN EL HACKING CADA VEZ ESTOY MAS CERCA DE SER UN MAESTRO EN EL TEMA.
§
PRIMER CONOCIMIENTO(hoja elaborada).
Directorio Raíz
El directorio raíz, simbolizado por el símbolo (/), es el directorio principal a partir del cual se ramifican todo el resto de
directorios.
Directorio /bin
El directorio /bin es un directorio estático y compartible en el que se almacenan archivos binarios/ejecutables
necesarios para el funcionamiento del sistema. Estos archivos binarios los pueden usar la totalidad de usuarios del
sistema operativo.
Directorio /boot
Es un directorio estático no compartible que contiene la totalidad de archivos necesarios para el arranque del
ordenador excepto los archivos de configuraciónAlgunos de los archivos indispensables para el arranque del sistema
que acostumbra a almacenar el directorio /boot son el kernel y el gestor de arranque Grub.
Directorio /dev
El sistema operativo Gnu-Linux trata los dispositivos de hardware como si fueran un archivo. Estos archivos que
representan nuestros dispositivos de hardware se hallan almacenados en el directorio /dev.
Algunos de los archivos básicos que podemos encontrar en este directorio son:
Directorio /etc
El directorio /etc es un directorio estático que contiene los archivos de configuración del sistema operativo. Este
directorio también contiene archivos de configuración para controlar el funcionamiento de diversos programas.
Algunos de los archivos de configuración de la carpeta /etc pueden ser sustituidos o complementados por archivos de
configuración ubicados en nuestra carpeta personal /home.
Directorio /home
El directorio /home se trata de un directorio variable y compartible. Este directorio está destinado a alojar la totalidad de
archivos personales de los distintos usuarios del sistema operativo a excepción del usuario root. Algunos de los
archivos personales almacenados en la carpeta /home son fotografías, documentos de ofimática, vídeos, etc.
Directorio /lib
El directorio /lib es un directorio estático y que puede ser compartible. Este directorio contiene bibliotecas compartidas
que son necesarias para arrancar los ejecutables que se almacenan en los directorios /bin y /sbin.
Directorio /mnt
El directorio /mnt tiene la finalidad de albergar los puntos de montaje de los distintos dispositivos de
almacenamiento como por ejemplo discos duros externos, particiones de unidades externas, etc.
Directorio /media
La función del directorio /media es similar a la del directorio /mnt. Este directorio contiene los puntos de montaje de los
medios extraíbles de almacenamiento como por ejemplo memorias USB, lectores de CD-ROM, unidades de disquete, etc.
Directorio /opt
El contenido almacenado en el directorio /opt es estático y compartible. La función de este directorio es almacenar
programas que no vienen con nuestro sistema operativo como por ejemplo Spotify, Google-earth, Google Chrome,
Teamviewer, etc.
Directorio /proc
El directorio /proc se trata de un sistema de archivos virtual. Este sistema de archivos virtual nos proporciona
información acerca de los distintos procesos y aplicaciones que se están ejecutando en nuestro sistema operativo.
Directorio /root
El directorio /root se trata de un directorio variable no compartible. El directorio /root es el directorio /home del
administrador del sistema (usuario root).
Directorio /sbin
El directorio /sbin se trata de un directorio estático y compartible. Su función es similar al directorio /bin, pero a diferencia
del directorio /bin, el directorio /sbin almacena archivos binarios/ejecutables que solo puede ejecutar el usuario root o
administrador del sistema.
Directorio /srv
El directorio /srv se usa para almacenar directorios y datos que usan ciertos servidores que podamos tener instalados
en nuestro ordenador.
Directorio /tmp
El directorio /tmp es donde se crean y se almacenan los archivos temporales y las variables para que los programas
puedan funcionar de forma adecuada.
Directorio /usr
El directorio /usr es un directorio compartido y estático. Este directorio es el que contiene la gran mayoría de
programas instalados en nuestro sistema operativo.
Todo el contenido almacenado en la carpeta /usr es accesible para todos los usuarios y su contenido es solo de lectura.
Directorio /var
El directorio /var contiene archivos de datos variables y temporales como por ejemplo los registros del sistema
(logs), los registros de programas que tenemos instalados en el sistema operativo, archivos spool, etc.
La principal función del directorio /var es la detectar problemas y solucionarlos. Se recomienda ubicar el directorio /var
en una partición propia, y en caso de no ser posible es recomendable ubicarlo fuera de la partición raíz.
Directorio /sys
Directorio que contiene información similar a la del directorio /proc. Dentro de esta carpeta podemos
encontrar i**nformación estructurada y jerárquica acerca del kernel de nuestro equipo, de nuestras particiones y sistemas de
archivo, de nuestros drivers**, etc.
Directorio /lost-found
Directorio que se crea en las particiones de disco con un sistema de archivos ext después ejecutar herramientas para
restaurar y recuperar el sistema operativo como por ejemplo fsch.
Si nuestro sistema no ha presentado problemas este directorio estará completamente vacío. En el caso que hayan habido
problemas este directorio contendrá ficheros y directorios que han sido recuperados tras la caída del sistema
operativo.
CONOCIMIENTO CONCRETO(hoja elaborada).
PRACTICA
La practica que realice fue la de desplazarme por los diferentes directorios del sistema y ver como están estructurados.
§
15-USO DE BASHRC Y ZSHRC.
25-08-2023
Esla hora de hacer lo nuevo la mas esperado de todo lo hare esta noche a las 2:30 de la mañana y me siento muy
!!
grato y agradecido por todo las oportunidades que tengo en la vida y por las daciones que tome y me llevaron hoy a
donde estoy .
Hay que tener en cuenta que en el sistema existen diferentes archivos de configuración especiales como lo son el .zshrc y
.bashrc ambos son configuraciones a mi shell de trabajo allí podemos crear alias y atajos y muchas otras cosas en esta
ocasión estaré trabajando son zsh por ello trabajare con .zshrc.
bueno para ver mi directorio de trabajo actual primero me dirijo a mi directorio HOME con pwd y despues ejecuto un ls -
la para ver en listado los archivos ocultos una vez allí puedo abrirlo con nano .zshrc o estando desde otro directorio
nano ~/.zshrc .
En esta practica creare una función sencilla para ver mi IP para ello veremos mi ip con el comando hostname -I Bueno
comencemos con el uso de dos comando o posibilidades para filtrar el output de comando hostname hostname -I | awk
'{print $1}' y el otro es hostname -I | cut -d ' ' -f 1 ambos comandos funcionan de manera similar pero mejor es
cut a mi parecer.
Bueno ahora para imprimir en pantalla mi nueva función utilizamos el comando echo echo "Mi IP Privada es: $(hostname
-I | cut -d ' ' -f 1)" con este comando emitiré mi ip privada ahora solo queda el utilizarlo para crear una función en el
.zshrc
Bueno mi función final es :
function vermiip(){
echo "Mi IP Privada es: $(hostname -I | cut -d ' ' -f 1)"
}
§
Ya realice muchas practicas del uso de ambos comandos tanto el awk como el cut y vi sus diferencias ahora estoy seguro
que ambos son unos de los comandos que mas usare por que ya vi mas adelante y no tengo problemas con ello la verdad.
COMANDO
nano .zshrc
nano ~/.zshrc
hostname -I
27-08-2023
Hola sigo en busca de la verdad y creando mi buena suerte firme hacia el futuro y el camino que quiero recorrer
!!
vamos dios es simple muy simple la verdad solo debo hacerlo nada mas, Bueno sobre esta practica es simple es
prácticamente el uso de un solo comando.
§
PRIMER CONOCIMIENTO (hoja elaborada).
El primer paso es abrirme una consola como root y verificar los las actualizaciones para ello realizo un apt update y con
ello puedo apreciar cuales son las actualizaciones pendientes que puedo actualizar pero para en verdad poder enlistarlas
todas ejecuto un apt list --upgradable con este comando puedo en verdad ver toda la lista de aplicaciones pendientes
de actualización.
Ahora para poder actualizar el sistema en si esta prohibido utilizar el !apt-upgrade! si o si debemos utilizar la herramienta de
Parrott que es parrot-upgrade este comando me permite actualizar mi sistema de manera segura.
§
PRACTICA
Esta practica la verdad es que ya fue bien consolida ya que emplee de manera activa mas de 3 veces este comando por
motivos de instalar de nuevo mi sistema personalizado y también por el echo de practicar.
COMANDOS
apt update
parrot-upgrade
17-USO Y MANEJO CON TMUX
27-08-2023
Ahora sep comienza algo nuevo y super útil lo cual es e manejo de tmux para poder optimizar mi rendimiento a la
!!
hora de realizar mis auditorias de red GRACIAS DIOS por todo lo me queda el poder escribir y así comunicarme
con vos gracias por la posibilidad de poder cumplir mi sueño y ser un gran experto en el hacking ético en mi país y
a nivel internacional.
Como primer conocimiento adquirido es el comando apt search tmux con este comando verifico si tengo instalado ese
binario en mi sistema.
Luego procedo a instalar el ho my! tmux que es una versión mejorada de tmux con mas implementos una vez instalada
procedemos a abrir una nueva sesión de tmux y nombrarla con el comando tmux new -s Prueba .
Lo cómodo de tmux sq me permite tener todo centralizado para un mejor orden de mis procesos realizados.
Bueno comencemos a insertar comandos de teclado en tmux mi prefix key en mi caso es ctrl + a entonces para renombrar la
ventana utilizaré el siguiente comando ctrl + a , ojo que es primero el prefix key y despues suelto y ya puedo renombrar
mi ventana.
Ahora para abrir una nueva ventana utilizo el comando crtl + a c con este comando abro una nueva ventana.
Ahora listo ya abrir muchas ventanas ahora como me muevo entre ellas es super sencillo la verdad es con ctrl + a 1 o
talvez ctrl + a 2 el numero es igual a la ventana a la cual me quiero desplazar.
Con el comando ctrl + a m puedo entrar al mod ratón el cual nos facilita algunas tareas.
Luego procedo con el crear una shell en la misma ventana de estilo horizontal para ello es ctrl + a " con este comando
abro una shell horizontal dentro de la misma ventana.
para intercambiar entre las nuevas shell lo puedo hacer de dos maneras las cuales son: ctrl + a o o la mas fácil y
cómoda para mi aunque ambas son sencillas en verdad ctrl + a izq es con las flechas del teclado.
Ahora aprendí a cerrar los paneles y ventanas para ello debo de estar sobre este primero y el comando es ctrl + a x y
despues me pide confirmación con y acepto y listo. es importante tener en claro esta estructura sesión, ventana, panel.
Otro comando que me pude llegar a ser muy útil es el renombrar las sesiones y es con ctrl + a $ con este comando
renombro la sesión una vez creada.
Para abrir nuevos paneles de manera vertical uso el comando ctrl + a % con este comando hago lo mismo que el
comando con '' mas esta vez es vertical.
OJO para resizear los paneles en mi caso solo me da con el modo mouse ya que por los shortcut no me reconoce.
OJO si presiono continuo sobre un panel ya abierto el ctrl + a +o cambio en panel de lugar.
OJO con ctrl + a space cambio de orden mis paneles.
Para entrar al modo copia es ctrl +a [ ojo este color verde es por las referencias de obsian pero bueno una vez entrado
al modo copia lo que sigue es dirigirme al texto a ser copiado y una vez allí ctrl + space para indicar que quiero
comenzar a seleccionar el texto si presiono la tecla fn despues de hacer indicado que quiero comenzar a seleccionar se la
al final. una vez seleccionado el texto procedo a copiar la linea con alt + w ya la copio la verdad es super fácil de usar
ahora para copiar lo indicado es con ctrl +a ] y listo con eso acaba el proceso de copiado con tmux o el modo copia.
Con el comando who -q= veo en numero total de usuarios conectados.
Con el comando siguiente simplemente enlisto los procesos del sistema que están corriendo ps -faux
El siguiente comando es el que mas útil de todos me parece y es el de detachear sesiones es como ponerlas en segundo
plano literal y se hace con ctrl + a d y despues para las sesiones detacheadas uso tmux list-sessions y allí puedo
verlas si es solo una la puedo abrir con tmux attach y si son dos o mas tmux attach -t HOLA con -t mas el nombre
indico cual quiero abrir.
Y por ultimo en caso de yo tener mas de una sesión abierta puedo ver y intercambiar entre sesiones con crtl + a w .
§
CONOCIMIENTO CONCRETO (hoja elaborada).
PRACTICA
Esta practica ya fue realizada debido a las practicas de los comandos en 3 oportunidades pero para ser sincero aun me falta
practicar unas pocas veces mas solo para agarrar mas soltura sobre estos comandos para esto elaborare una lista mas de
todos los atajos y comandos del sistema.
COMANDOS
ctrl + a ,
crtl + a c
ctrl + a 1
ctrl + a m
ctrl + a "
ctrl + a o
ctrl + a izq
ctrl + a x
ctrl + a $
ctrl + a %
ctrl + a +o
ctrl + a space
ctrl +a [
ctrl + space
fn
alt + w
ctrl +a ] ]
who -q
ps -faux
ctrl + a d
tmux list-sessions
tmux attach
crtl + a w
18-BUSQUEDAS A NIVEL DEL SISTEMA.
31-08-2023
Hola hoy es el día en el cual profundizare en un tema nuevo el cual es el de búsquedas del sistema el cual
!!
considero que es super fundamental y me ayudara a formar una habilidad descomunal en el manejo de linux solo
me queda agradecerte DIOS por todo sigo en busca de la verdad..
§
PRIMER CONOCIMIENTO (hoja elaborada).
PRACTICA
Bueno lo logre acabe mi practica y mis apuntes generales de búsquedas en relación a la practica es sencilla la verdad e
realizado diferentes practicas y es sencillo el uso del comando find siguen en el fondo la misma sintaxis y me siento muy
seguro la verdad sobre la practica realizada sobre las busquedas.
COMANDOS
neofetch
19-CREACION DE SCRIPTS EN BASH.
09-09-2032
Al fin continuare con mi curso de introducción a linux el cual ya e aprendido muchísimo y continuare metiéndole
!!
super duro a todo SOLO HARE NO PENSARE EL SOMO SOLO HACER HACER. es la clave del éxito vamos
goooooo!!!! yair si lees esto y se que lo harás veras que lo lograste lograste tus objetivos ve en donde estas cuando
leas esto reflexiona y llega un mas lejos siempre juntos.
Bueno comencemos primero creare un archivo en mi carpeta Pruebas llamado Script.sh y despues añadiéndole permisos de
ejecución con chmod +x Script.sh y posterior mente comenzamos a elaborarlo nuestro script.
Con el comando ip a me muestra las interfaces de red.
A continuación filtro el texto por la interfaz de red ens33 con el comando grep de la siguiente manera ip a | grep ens33 y
despues filtrar solo por la segunda linea la cual lo puedo hacer de dos diferentes maneras y totalmente nuevas hasta hoy
para mi la primera el sencilla y es con el comando tail de la siguiente manera ip a | grep ens33 | tail -n 1 literal
mente digo la ultima fila con el parámetro -n 1. y la otra opción la cual es nueva mas sencilla de igual menara es utilizado
awk solo que esta vez no para filtrar por el numero de la palabra si no que de la siguiente manera ip a | grep ens33 |
awk 'NR==2' de esta forma recalcar que son dos iguales en NR literalmente especifico la fila con la cual quiero trabajar con
NR==2 .
Buena continuare con la creación de mi script sigamos una vez obtenida la fila correcta debo de seleccionar la palabra parar
ello empleo el comando awk de la siguiente manera ip a | grep ens33 | awk 'NR==2' | awk '{print $2}' De esta
manera puedo quedarme solo con la sección de la ip y la mascara ahora para poder separarla de la mascara hay distintas
maneras bueno comencemos con la primera ip a | grep ens33 | awk 'NR==2' | awk '{print $2}' | tr '/' ' ' |
awk '{print $1}' Literal esta forma es empleando dos comandos mas muy útil para poder practicar ya que primero
sustituye el / por un espacio son el uso del comando tr de una muy sencilla y despues aplica un awk sencilla e interesante
manera de realizar otra seria ip a | grep ens33 | awk 'NR==2' | awk '{print $2}' | awk '{print $1}' FS='/'
Bueno esta forma me encanta ya que aprendo mas a utilizar el awk con el FS ya que me hace literal definir el parámetro que
quiero que delimite el texto.
La ultima manera con la cual aprende es fácil y sencilla pero muy interesante ya que es la mas sencilla y corta ip a | grep
ens33 | awk 'NR==2' | awk '{print $2}' | cut -d '/' -f 1 De esta forma es con cut y es super sencilla literal defino
el delimitador con -d y luego la palabra con -f y listo una belleza.
Una vez probado el correcto funcionamiento de nuestros comandos procedo a realizarla primera versión del script como tal:
#!/bin/bash
echo -e "\n [+] La ip privada es -> $(ip a |grep ens33 |tail -n 1 | awk '{print $2}'| cut -d '/' -f 1)\n"
Ahora el comando completo con las variables definidas de los colores y funcionando. y código quedaría de la siguiente
manera:
#!/bin/bash
greenColour="\e[0;32m\033[1m"
endColour="\033[0m\e[0m"
redColour="\e[0;31m\033[1m"
blueColour="\e[0;34m\033[1m"
yellowColour="\e[0;33m\033[1m"
purpleColour="\e[0;35m\033[1m"
turquoiseColour="\e[0;36m\033[1m"
grayColour="\e[0;37m\033[1m"
Bueno esto seria todo lo avanzado y comprendido en mi tema de scripting la verdad sq es muy satisfactorio este tema ahora
realizare mi propia practica OJO no es necesario que el script tenga permiso de ejecución como tal bash Script.sh y me lo
debería ejecutar sin problemas.
PRACTICA
Acabo de elaborar mi practica de scripting y fue sencilla la verdad es simple el concepto es solo practicarlo mas y podre
lograr todo lo que me proponga sin ningún problema.
COMANDOS
ip a
ip a | grep ens33
ip a | grep ens33 | awk 'NR==2' | awk '{print $2}' | tr '/' ' ' | awk '{print $1}'
ip a | grep ens33 | awk 'NR==2' | awk '{print $2}' | awk '{print $1}' FS='/'
11-09-2023
Ahora sep estoy llegando hasta el final de esto con mucho esfuerzo y empeño gracias DIOS vamos seguiré
!!
avanzando hasta el final que ya lo veo el final ya me consigo ver allí.
§
PRIMER CONOCIMIENTO(hoja elaborada).
Bueno comencemos con el segundo con el atajo sencillo pero super eficaz que es ctrl + alt y luego proceso a
seleccionar el texto esto me permite seleccionar el texto definiendo como si fuera una columna.
El primer atajo sirve ara renombrar una ventana ctrl + shift + alt + t .
el siguiente atajo sirve para abrir un nuevo panel dentro de la ventana ctrl + shift + enter .
El siguiente atajo sirve para alternar las posiciones de los paneles ctrl + shift +l .
El siguiente atajo sirve para cerrar ya sea paneles o ventanas ctrl + shift + w .
El siguiente atajo lo que hace es cambiar entre paneles ctrl + izqtecl
El siguiente atajo lo que hace es cambia la posición de los paneles es decir los mueve y da de dos maneras las cuales son
ctrl +shift + b o ctrl +shift + f .
El siguiente atajo abre una nueva ventana ctrl + shift +t .
El siguiente atajo me desplaza entre las ventanas abiertas ctrl + shift + izqtecl .
El siguiente comando me permite rezisear los paneles ctrl + shift + r .
Los dos siguientes atajos me permite desplazarme entre entre las ventanas abiertas ctrl + shift + . y ctrl +shift +
,.
El ultimo atajo que es conveniente aprender es el zoom ctrl + shift + z .
§
PRACTICA
Mis practicas fueron elaboradas de manera exitosa por ello e obtenido una gran movilidad y soltura a la hora de utilizar la
kitty.
COMANDOS
ctrl + alt
ctrl + shift + alt + t
ctrl + shift +l
ctrl + shift + w
ctrl + izqtecl
ctrl +shift + b
ctrl +shift + f
ctrl + shift +t
ctrl + shift + r
ctrl + shift + .
ctrl +shift + ,
ctrl + shift + z
21-USO DEL EDITOR VIM
11-09-2023
Esto en verdad es una sorpresa esta es mi tercera practica del día y ando super feliz de aprender esto y de la
!!
manera en la cual me encuentro aprendiendo gracias DIOS te amo mi querido padre celestial.
§
PRIMER CONOCIMIENTO(hoja elaborada).
Bueno el primer paso para realizar mi practica de nvim es primero realizar una copia de fichero passwd para poder practicar
con este texto sin afectar el original y esto lo realice con el siguiente comando cp /etc/passwd copia
Literal poder insertar texto primero debo apretar el esc y despues la accion la mayoría de las veces por ejemplo para insertar
texto es esc + i .
El comando similar a ctrl + z en Windows es alt + u .
Bueno es importante mencionar que la tecla general en nvim es esc .
Con la simple letra de w literal me salto una palabra.
Y con el comando especifico de 3w el interprete de nvim se salta 3 palabras'
Y para borrar unas palabras hice lo contrario 3dw .
Con el siguiente atajo me desplazo a la linea de inicio ctrl + inicio
Y ahora para borrar una fila uso dd
O una variante que es 2dd esta super genial esto.
Con la letra V ingreso al sistema mas ahora ya no esta dando.
con la letra y puedo copiar y para pegar es p
Ahora para poder saltar entre líneas utilizo la letra o .
También podemos crear macros en nvim con esto podemos automatizar tareas de con nvim para ello entramos en modo
crear macro qa .
Una vez adentro del modo macro procedo a ejecutar un sucesión de teclas que posterior mente se auto ejecutaran jdw . con
esta sucesión primero bajo y despues borro una palabra. posterior mente para salir y guardar la nueva macro apretamos q .
Y alfin para ejecutar la nueva macro usamos el siguiente comando primero indicando el numero de veces 3@a .
Ahora otra función fundamental de nvim es la de poder buscar archivos esto se realiza con el siguiente atajo esc + shift +
%s/nologin/yeslogin esto sustituye todas las líneas.
§
PRACTICA
dicha practica fue realizada muy satisfactoriamente ya que incluyo al menos 3 repasos concretos de todos los comandos sin
cotar el echo de seguir aprendiendo en un futuro todos estos comando con el tiempo.
COMANDOS
cp /etc/passwd copia
esc + i
alt + u
3w
ctrl + inicio
dd
2dd
qa
jdw
3@a
23-09-2023
Gracias querido DIOS alfin puedo continuar con mi gran meta de vida y es ser el mas grande experto en seguridad
!!
informática del mundo y para ello comienzo a avanzar de manera estrepitosa con esta practica.
§
PRIMER CONOCIMIENTO (hoja elaborada).
Alfin estoy comenzando a realizar mis practicas con la pagina web overthewire la cual será literal mente mi hogar durante el
siguiente mes ya que aquí practicare linux a fondo bueno el primer paso es dirigirme a la pagina web
https://overthewire.org/wargames/.
El primer comando consiste en ver si el servidor esta levantado primero mandando un ping a su dirección ping -c 1
bandit.labs.overthewire.org una ver mandado el ping podemos apreciar si esta levantado dicho servidor.
El siguiente paso es conectarnos por SSH al servidor o a la victima para ello ejecutaremos el siguiente comando ssh
[email protected] -p 2220 en este comando especificamos primero el protocolo ssh y luego el
usuario separado de un @ la dirección ya sea ip o literal para luego especificar el puerto con -p y el numero del puerto.
Despues de ingresar nos pedirá una contraseña la cual la cual ingresaremos la de bandit0 se encuentra dentro de la misma
pagina una vez dentro de la maquina procedemos a ver la variable por defecto TERM para que podamos utilizar los atajos
de teclado de la terminal vemos con echo $TERM cunado la veamos debe de ser = xterm si no lo es lo podemos para poder
trabajar mejor con export TERM=xterm .
Una vez ya ingresado a la maquina y sabiendo que la contraseña se encuentra en el directorio home del usuario bandit0 y se
llama readme procedo a abrirlo con cat readme y copiar la contraseña para iniciar sesión con bandit1.
Para poder conectarnos al siguiente nivel puedo ingresar la contraseña directamente en el comando de la siguiente manera
sshpass -p 'NH2SXQwcBdpmTEzi3bvBHMM9H66vVXjL' ssh [email protected] -p 2220 de esta forma
primero indicamos con sshpass -p que vamos a ingresar la contraseña entre comillas simple y despues el comando habitual
de conexión ssh.
§
PRACTICA
Mi practica en si consistió repasar mas de 3 veces el ingreso por ssh de la primera manera e insertando la contraseña en el
comando hasta que vi que llegue a adquirir la facilidad y practicidad lo mismo con el comando export para cambiar el valor
de la variable TERM.
COMANDOS
ping -c 1 bandit.labs.overthewire.org
ssh -p 2220
echo $TERM
export TERM=xterm
24-09-23
Sep hoy ya acabe una practica la cual comencé ayer pero esta literal mente la cabe el día de hoy y me fue muy
!!
bien y comprendo absolutamente todo gracias DIOS por esta tan hermosa oportunidad continuemos de una vez por
todas.
§
PRIMER CONOCIMIENTO (hoja elaborada).
Bueno comencemos modo super asesino el objetivo principal es ver la contraseña que se encuentra en guardada en un
fichero el cual se llama - lo cual causa conflicto a la hora de abrirlo la verdad en este vídeo es despliegue de habilidad pura
me encanta el saber a esta profundidad.
La primera forma es con el comando cat /home/bandit1/- de esta manera el sistema no lo toma como un parámetro el - a
la hora de abrir el fichero.
la otra manera es con cat ./- es cual estoy seguro es la manera mas sencilla de todas ya que las que siguen la verdad
son simplemente despliegue de habilidad pura me encantan carajo.
Y la ultima de las manera sencillas cat $(pwd)/- ahora comenzamos con las maneras profesionales.
Ahora el siguiente comando prácticamente busca entré todo el texto que se encuentra en el directorio ya sea pereciente a un
archivo o no bueno directo al grano grep -r "\w" 2>/dev/null | tail -n 1 puede ser de esta manera si se encuentra al
final de lo archivos encontrados o grep -r "\w" 2>/dev/null | head -n 1 o de esta si se encuentra al comienzo la cual
es mi caso.
Bueno ahora Viene el derroche de habilidad pura ahora realizare diferentes filtrados para practicar y mostrar un gran dominio
de linux carajo gooo grep -r "\w" 2>/dev/null | head -n 1 | awk '{print $2}' FS=':' esta es una forma.
Esta es otra forma de realizar el filtrado grep -r "\w" 2>/dev/null | head -n 1 | cut -d ':' -f 2 esta es mi manera
preferida de realizar el filtrado.
La otra manera de realizar la búsqueda con filtración es grep -r "\w" 2>/dev/null | head -n 1 | tr ':' ' ' | awk
'{print $2}' super de esta manera también da y es super sencillo la verdad.
Y la otra muy similar a la anterior es con grep -r "\w" 2>/dev/null | head -n 1 | tr ':' ' ' | awk 'NF{print $NF}'
es lo prácticamente lo mismo que la anterior manera solo que esta vez no es necesario contar las palabras con el uso de NF
usara la ultima siempre.
Y prácticamente la ultima forma la cual me enseño savitar es grep -r "\w" 2>/dev/null | head -n 1 | tr ':' ' ' |
rev | awk '{print $1}' | rev con esta ultima manera es la menos bonita pero igual funciona la verdad.
Y por ultimo la manera de hacerlo mas demostrando mucho conocimiento echo -e "\n La password Es : $(grep -r "\w"
2>/dev/null | head -n 1 | tr ':' ' ' | rev | awk '{print $1}' | rev) \n" y lito esta es la forma PROFESIONAL
DE REALIZARLO.
§
CONOCIMIENTO CONCRETO (hoja elaborada).
PRACTICA
Ya realice con éxito la practica de todos los conceptos aquí aprendidos en mi maquina virtual y la verdad los tengo muy bien
dominados es que estoy llegando al punto en donde lo comprendo todo muy rápido por que todo se parece y es bien similar
en si ahora siento eso ya no es tan desconocido del todo.
COMANDOS
cat /home/bandit1/-
cat ./-
cat $(pwd)/-
grep -r "\w" 2>/dev/null | head -n 1 | tr ':' ' ' | awk '{print $2}'
grep -r "\w" 2>/dev/null | head -n 1 | tr ':' ' ' | awk 'NF{print $NF}'
grep -r "\w" 2>/dev/null | head -n 1 | tr ':' ' ' | rev | awk '{print $1}' | re
**echo -e "\n La password Es : $(grep -r "\w" 2>/dev/null | head -n 1 | tr ':' ' ' | rev | awk '{print $1}' | rev) \n"
24-LECTURA DE ARCHIVOS ESPECIALES 2-2
27-09-23
Bueno hoy es otro día en el cual me levanto mas temprano un poco mas temprano es un moto que necesito mil
!!
horas libres con media hora ya es un avance en mi meta y despues aumentara de por si me encuentro feliz y
agradecido.
§
PRIMER CONOCIMIENTO (hoja elaborada).
Esta practica corresponde al bandit2 para lograr obtener las credenciales de bandit3 es muy sencilla la verdad consiste en
simplemente tratar de leer un fichero con espacios en su nombre lo cual se puede realizar de la siguiente manera cat
"spaces in this filename" .
O de esta forma también da cat spaces\ in\ this\ filename ambas formas funcionan muy bien para estos casos la otra
forma es mas general mas funciona de igual manera es con el uso de la wildcard.
Y se usa de la siguiente manera cat sp* con este simple comando ya daria claro esta siempre y cuando no halla mas
coincidencias otra opción seria cat /home/bandit2/* de igual manera abrirá todo el contenido del directorio.
§
PRACTICA
El día de hoy realice las practicas correspondientes y la verdad sq de igual manera que la otra vez siento lo mismo que todo
es muy fácil de entender y aprender e incluso intuitivo gracias DIOS por todo seguiré aprendiendo y practicando esta parte
todas.
COMANDOS
cat sp*
cat /home/bandit2/
25-DIRECTORIAS Y ARCHIVOS OCULTOS.
28-09-2023
Hola esto es genial alfin logre estabilidad este es mi tercer día levantándome tranquilo y estudiando todo estos días
!!
y nivel de comprensión es increíble solo me que da agradecer gracias DIOS.
§
PRIMER CONOCIMIENTO (hoja elaborada).
Super comencemos a realizar esto esta practica consiste en abrir un archivo de texto oculto.
es super fácil una vez hallamos ingresado al usuario bandit3 desde hay ingresamos a la carpeta inhere y hay hago un ls -la
para ver los archivos ocultos y despues para ver su características le metemos un file .hidden y podemos ver que
contiene texto.
Bueno ahora procedemos a abrirlo de la manera mas sencilla posible con cat cat .hidden y listo hay esta la contraseña
pero ojo hay dos formas mas que son simplemente para realizar un despliegue de habilidades y aprender mas la verdad .
La primera es con find igual que la segunda solo que esta no excluye si no de filtra de la siguiente manera find . -type f
| grep "hidden" | xargs cat esta forma ya es muy conocida para mi debido a mis practicas anteriores.
la Segunda es similar solo que esta vez excluye el resto de contenido de la búsqueda en vez de filtrar find . -type f |
grep -vE "bashrc|profile|logout" | xargs cat esta forma no es la mas adecuada para este ejemplo mas me sirve
para deducir su uso ahora es importante recalcar que no es necesario colocar todo el nombre de archivo a excluir
simplemente el necesario es suficiente.
§
PRACTICA
Es importante recalcar que prácticamente el 90% de lo avanzado aquí ya lo hay visto con anterioridad mas es fundamental lo
nuevo y aprendido como también la practica que conlleva y repaso el volver a practicar esos comandos me resulta muy
cómodo y también sigo sintiendo ese sentimiento de que estoy aprendiendo rápido debido a mi subconsciente debe de ser
gracias DIOS.
COMANDOS
file .hidden
cat .hidden
find . -type f | grep "hidden" | xargs cat
29-09-2023
Estos son mi segundos apuntes del día de hoy Solo agradecer literal mente ya que noto un gran avance estos
!!
últimos días debido a que los temas son cortos y ya la experiencia aprendida en este tiempo que llevo estudiando
bueno lo que
viene es sencillo literalmente se trata de ver cuales de los archivos que hay es legible nada mas.
El primer paso como todos los bandit es ingresar en este caso es el Bandit4 mi objetivo bueno comencemos lo primero es
ver a que nos enfrentamos para ello utilizamos el ls o cat y cd comandos básicos viendo el contenido del reto puedo ver la
presencia de nombres que comienzan por - lo cual ya se nos había presentado dicho obstáculo y también directorios ocultos
los cuales afrontaremos de manera directa.
podemos encontrar el fichero de la siguiente manera find . -type f | grep "\-file" con este comando buscamos
entre los ficheros que coincidan con solo la palabra file ignora es resto del comienzo debido a - una manera mas completa es
find . -type f | grep "\-file" | xargs file
Y por ultimo para abrir el documento hay diversas manera aquí usare dos cat ./inhere/-file07 la otra manera seria de
find . -type f | grep "\-file07"|xargs cat de esta manera e literalmente descubierta por mi persona lo cual me
causa gran felicidad.
§
PRACTICA
Ya logre concluir las practicas correspondiente a este tema la verdad es que de por si ya es corto a eso le sumo el echo de
mi practica y soltura y me lleva pensar en seguir practicando en un futura mas en si logre captar todos los conceptos
aprendidos y en un futuro muy cercano podre jozar de una experticia suprema en este y todos los temas que estudie en
general.
COMANDOS
30-09-2023
Bueno super esta mi segunda practica la cual entendí totalmente todo y fue muy sencillo la verdad debido a mi
!!
constancia veo un progreso infinito en mi y bueno haber la verdad esta practica consiste en buscar entre artos
archivos con el comando find.
§
PRIMER CONOCIMIENTO (hoja elaborada).
Bueno como en todos los retos que vengo haciendo y hare primero me logueo al usuario correspondiente para luego buscar
filtrando por las características que me brinda el wedsite.
Primero comenzamos con la primera característica find . -type f -readable busco por archivos legibles.
La segunda característica es find . -type f -readable ! -executable la siguiente característica es que no tenga
permiso de ejecución.
La tercera es find . -type f -readable ! -executable -size 1033c ls siguiente característica es el tamaño de 1033bits
esto se indica c.
los siguientes comando ya fueron utilizados find . -type f -readable ! -executable -size 1033c | xargs file y
para ver el contenido finalmente find . -type f -readable ! -executable -size 1033c | xargs cat Bueno cuando
abro veo algo extraño en el formato esta desplazado primero vemos la cantidad de líneas con find . -type f -readable !
-executable -size 1033c | xargs cat | wc -l como dice una linea me quedo con la primera linea find . -type f -
readable ! -executable -size 1033c | xargs cat | head -n 1 y por ultimo también da de la siguiente manera.
§
PRACTICA
Bueno que voy a decir ahora volveré a practicar mas cada vez es mas increíble el nivel que estoy adquiriendo ya que cada
vez es mas fácil el echo de aprender nuevos conocimientos los retengo muy rápido esto es debido a mi practica constante
bueno que puedo decir de lo aprendido a ver hum diría que el comando xargs utilizado de esa manera como dice savitar
formateo bueno para mi que corrigué el formato del texto o el otro wc -l ese que te dice la cantidad de líneas en el
documento o la salida interesante como lo de los archivos legibles y la negación delante de executable super la verdad de
gran ayuda.
COMANDOS
find . -type f -readable
04-10-2023
Esta practica es muy sencilla la verdad ya que solo se trata de buscar un archivo desde la raíz por su peso su
!!
usuario y su grupo es sencillo y fácil la verdad.
§
PRIMER CONOCIMIENTO (hoja elaborada).
Bueno literalmente la practica de bandit 7 consiste en una búsqueda a nivel del sistema.
primero buscamos por uno de los 3 términos explicados en la guía find / -type f -size 33c 2>dev/null
posteriormente añado los otros dos parámetros que son el usuario y el grupo find / -type f -user bandit7 -group
bandit6 -size 33c 2>/dev/null
y por ultimo una vez encontrado procedo a abrir el para ver la contraseña con find / -type f -user bandit7 -group
bandit6 -size 33c 2>/dev/null | xargs cat y listo hay tenemos la contraseña.
PRACTICA
La verdad al igual que las otras practicas me resulta fácil el comprender todos estos conceptos y continuare aprendiendo con
ellos.\
COMANDOS
find / -type f -user bandit7 -group bandit6 -size 33c 2>/dev/null | xargs cat
29-METODO DE FILTRADO DE DATOS 1-2.
08-10-2023
La verdad esto me hace sentir muy bien ya que ando practicando y estudiando de una manera muy frecuente y
!!
dando lo mejor de mi cada vez avanzo mas en mi objetivo y ahora la verdad ya no se encuentra tan lejos gracias
querido DIOS.
§
PRIMER CONOCIMIENTO (hoja elaborada).
Bueno comencemos con el reto para llegar al bandit 8 el cual la verdad es que es muy sencillo aquí sinceramente creo yo
que savitar se le fue la de las manos complico aunque no enseño nada difícil mas y gala de su gran conocimiento y
experiencia en el tema por ello solo me queda agradecer por poder estar haciendo lo que es hace bueno comencemos
ingresando primero a la pagina de los retos y haciendo login como Bandit7.
Bueno comencemos a desarrollar esta práctica la cual principalmente me introduce a nuevos comando muy interesante
bueno lets goo!! leyendo el archivo cat data.txt | grep "millionth"
Y despues nos quedamos con solo la contraseña con cat data.txt | grep "millionth" | awk 'NF{print $NF}' . o
también punciona de la siguiente manera cat data.txt | grep "millionth" | awk '{print $2}' .
Bueno ahora comencemos con lo nuevo y super interesante primero el seq 1 20 con este comando creo una secuencia del
1 al 20. y esto para que nos sirve bueno para emplearla con un for primero realizaremos un for convencional para contar
números nada mas. for i in$(seq 1 20); do echo "[+] El numero es : $i"; done" . de esta manera tan sencilla la
verdad se puede contar los números.
Y es esto se puede utilizar de la siguiente manera for i in$(seq 1 50); do echo -e "\n[+] Contando espacios -> $i
:\n"; cat data.txt | cut -d ' ' -f $i; done . con este bucle podemos contar el numero de espacios y utilizarlo ese
numero para hacer un cut con el y saber así la cantidad de espacios.
Otra forma es cat data.txt | grep "millionth" | rev | awk '{print $1}' | rev es muy rebuscado mas sirve de
igual manera.
Otra manera es cat data.txt | grep "millionth" | xargs | cut -d ' ' -f 2 .
O de esta Otra manera cat data.txt "millionth" | xargs | tr ' ' '\n' | tail -n 1 .
Bueno y por ultimo pero no menos importante un nuevo comandó que sirve para sustituir palabras por otras echo "hola
esto es una prueba y como prueba es para probar | sed 's/prueba/hola/' otra variante fue el echo de añadir una g
para cambiar todas las palabras echo "hola esto es una prueba y como prueba es para probar | sed
's/prueba/hola/g' .
Bueno con esto seria todo la verdad aprendí muchos conceptos nuevos pero son sencillos la verdad.
§
Bueno mi practica consistió en ver las tres veces correspondiente y ponerme creativo a la hora de realizar la practica y
cambiarla un poco y la verdad no fue tan difícil y muy interesante.
COMANDOS
seq 1 20
for i in$(seq 1 50); do echo -e "\n[+] Contando espacios -> $i :\n"; cat data.txt | cut -d ' ' -f $i; done
echo "hola esto es una prueba y como prueba es para probar | sed 's/prueba/hola/'
echo "hola esto es una prueba y como prueba es para probar | sed 's/prueba/hola/g'
30-METODO DE FILTRADO DE DATOS 2-2
12-10-2023
EL día de hoy estoy comenzando esta practica sencilla y super corta pero ensencial en mi camino a ser el gran
!!
HACKER.
§
PRIMER CONOCIMIENTO(hoja elaborada).
Bueno prácticamente solo usare dos comandos super sencillos el cual solo uno es nuevo y el otro ya lo había empleado mas
no de la manera en la cual lo utiliza savitar el primero es para organizar la salida del archivo y es sort data.txt con este
comando organizó la salida del fichero.
El segundo es una variante para que solo me muestre el único diferente entre todas las contraseñas y es con sort
data.txt | uniq -u y listo con esto ya estaría esta practica.
§
PRACTICA
Ese super facil esta practica por ello solo realice los apuntes de la clase como corresponde 3 veces siendo una de ella en la
pc.
COMANDOS
sort data.txt
15-10-2023
Hola je esto esta facil y muy sencillo así que será rapido bueno aprendí un nuevo comando y me hizo
!!
prácticamente repetir todos los bandit debido a que perdí mis contraseñas por burro.
§
PRIMER CONOCIMIENTO (hoja elaborada).
Bueno primero probemos viendo información sobre este fichero con file data.txt lo cual no nos devuelve nada bueno.
En esta ocasión intentaremos abrir el documento cat data.txt y despues se tira la conexión.
Ahora utilizare un nuevo comando para convertir el formato del fichero en legible strings data.txt .
Una vez convertido filtramos por las instrucciones que nos da la pagina que la contraseña se encuentra despues de muchos
iguales strings data.txt | grep "===" | tail -n 1
Y por ultimo despues procedo a que darme solo con la ultima parte strings data.txt | grep "===" | tail -n 1 | awk
'NF{print $NF}'
§
PRACTICA
-Ya realice todas las practicas correspondientes referentes a este tema la verdad es que es super sencillo de aprender este tema
mas interesante y es necesario tener en cuenta el comando strings.
COMANDOS
strings data.txt
20-10-2023
Esta practica consiste en las codificaciones y decodificaciones d base64 esta practica es bien sencilla y facil de
!!
entender y por ello bien interesantes bueno a darle duro!!!.
§
PRIMER CONOCIMIENTO (hoja elaborada).
El primer comando es a ver es super sencillo y consiste en convertir a base64 un texto y se realiza de la siguiente manera
echo "Esto es una prueba de conversion a base64" | base64 es super intuitivo y facil comprendido sin problemas.
El siguiente comando me muestra que es posible convertir a base64 un fichero enteró de la siguiente manera cat
/etc/group | base64 de esta manera muy sencilla y tambien es posible expresarlo en solo una fila de la siguiente manera
cat /etc/group | base64 -w 0 solo aumentando el -w 0 le indico que quiero que salga todo en solo una fila super facil.
Bueno ahora lo contrario a la codificación es la decodificación lo realizare de una manera muy sencilla siguiendo el siguiente
formato echo "cm9vdDp4OjA6CmRhZW1vbjp4O" | base64 -d y listo de esta manera tan sencilla se puede descodificar en
base64.
Volviendo al tema de los desafíos procedo a ver el contenido primeramente cat data.txt
Ahora procedo a descodificar el contenido del fichero cat data.txt | base64 -d con esto ya tendríamos la contraseña.
§
PRACTICA
Mi practica consistió en elaborar todo al mismo tiempo ya sea las hojas físicas como el apunte general es decir este y la
practica al mismo tiempo lo cual me permite avanzar mas rapido y envolverme en el conocimiento presente.
COMANDOS
cat data.txt
cat data.txt | base64 -d
33-CIFRADO CESAR Y USO DE TR PARA LA TRADUCCION DE
CARACTERES.
23-10-2023
Bueno comencemos de esta manera bien sencilla de rotar el texto y cifrarlo por así decirlo la verdad este tema es
!!
super sencillo y facil de realizar eso nomas ya solo me queda agradecerte por todo mi querido DIOS.
Este comando toma el contenido de un archivo llamado "data.txt," cambia todas las letras del alfabeto en mayúsculas y
minúsculas que están entre G y Z (y g y z) por las letras T a Z y S a Z, respectivamente, y muestra el resultado.
Básicamente, es una operación de cifrado de sustitución que cambia ciertas letras por otras en el archivo de texto. cat
data.txt | tr '[G-ZA-Fg-za-f]' '[T-ZA-St-za-s]' El cifrado que utiliza el comando tr en tu ejemplo se llama
"Cifrado César". En el cifrado César, se desplaza cada letra del alfabeto un número fijo de posiciones hacia arriba o hacia
abajo en el alfabeto. En tu comando, las letras del alfabeto entre G y Z (y g y z) se desplazan a las letras entre T y Z, y S a Z,
respectivamente. Este tipo de cifrado es un ejemplo de cifrado de sustitución simple.
El segundo comando también realiza un tipo de cifrado, en particular, un cifrado de sustitución conocido como el cifrado
ROT13. La explicación del comando es la siguiente:
Entonces, este comando básicamente toma el texto del archivo "data.txt," lo cifra utilizando el cifrado ROT13 y finalmente muestra
la última palabra de cada línea en el texto cifrado. El cifrado ROT13 es una forma simple de cifrar y descifrar texto, donde la
misma operación se puede utilizar para encriptar y desencriptar. cat data.txt | tr '[A-Za-z]' '[N-ZA-Mn-za-m]'|awk
'NF{print $NF}'
§
PRACTICA
En teoría y en la practica ya aprendí y repase todos los conceptos necesarios esta práctica es muy sencilla la verdad.
COMANDOS
24-10-2023
Esta practica es muy importante ya que alcance alfin mis ultimas practicas de las cuales tenia apunte ahora debo
!!
realizar el primer conocimiento y tambien desde aquí todo es prácticamente nuevo tambien es un punto de inflexión
para mi ya que confirmo el uso de chat GPT a la hora de realizar mis apuntes primero los hare por este medio
completo pero en digital leeré y copiare todo al obsidian tambien planeo hacer un remaster a todo.
Un "hexdump" (volcado hexadecimal o representación hexadecimal) es una representación textual de datos en forma de
números hexadecimales (base 16) y caracteres ASCII.
Ojo que este reto corresponde al reto de Bandit11 y primero copio el contenido de data.txt a mi pc para poder trabajar de
mejor manera.
cat /etc/hosts | xxd este comando muestra el contenido del archivo /etc/hosts en formato hexadecimal. cat se usa
para mostrar el contenido del archivo, y xxd lo convierte en una representación hexadecimal legible.
cat Data | xxd -ps Si agregas la opción -ps al comando xxd , el resultado será una representación hexadecimal
continua del archivo /etc/hosts , sin espacios ni caracteres de texto legibles. En otras palabras, obtendrás una secuencia
hexadecimal sin separaciones entre los valores. Esto puede ser útil si necesitas procesar los datos en un formato
hexadecimal continuo en lugar de un formato más legible.
cat Data | xxd -ps | xargs Mis disculpas por la confusión. Tienes razón, el comando xargs se utiliza para procesar la
salida y mostrarla en una sola línea. El comando cat /etc/hosts | xxd -ps | xargs mostrará el contenido hexadecimal
del archivo /etc/hosts en una sola línea en la consola, sin espacios entre los valores hexadecimales. Gracias por la
corrección.
cat Data | xxd -ps | xargs | tr -d ' ' Este comando toma un enfoque similar al anterior para mostrar el contenido
hexadecimal de un archivo, pero con una diferencia importante al final. Aquí está cómo funciona:
Entonces, la diferencia clave entre este comando y el anterior es que este último elimina todos los espacios en blanco de la
salida hexadecimal, lo que da como resultado una cadena hexadecimal continua sin separaciones.
echo 65203638303220333839322061393838 | xxd -ps -r El comando que proporcionaste realiza una operación de
conversión entre una cadena hexadecimal y su representación ASCII. Veamos paso a paso:
1. echo 65203638303220333839322061393838 : Esto imprime una cadena hexadecimal en la consola. La cadena hexadecimal
es "65203638303220333839322061393838".
2. | : Este es el operador de tubería ( | ) que toma la salida del comando anterior y la pasa como entrada al siguiente
comando.
3. xxd -ps -r : El comando xxd se utiliza para realizar conversiones entre formatos binarios y hexadecimales. Con las
opciones -ps -r , estás diciéndole a xxd que convierta la entrada hexadecimal ( -ps ) en su forma original ASCII ( -r ).
Entonces, lo que hace este comando en su conjunto es tomar la cadena hexadecimal
"65203638303220333839322061393838" y la convierte de nuevo en su forma original en ASCII. La salida sería la
representación en ASCII de esa cadena hexadecimal, que dependerá de la codificación de caracteres utilizada. En este
caso, la salida sería una serie de caracteres ASCII.
cat test | awk '{print $3}' >test este comando debería dar mas no da debido a problemas de linux como tal.
cat test | awk '{print $3}' >>test y este comando si sirve pero desplaza el texto a ingresar no lo sustituye.
echo "hola pueblo" | tee prueba
cat test | awk '{print $3}' | tee test Claro, este comando realiza varias operaciones en una sola línea:
En resumen, el comando toma el contenido del archivo "test", extrae la tercera columna de cada línea y guarda el resultado
en un nuevo archivo llamado "test". Ten en cuenta que este comando sobrescribirá el contenido del archivo "test" con las
terceras columnas extraídas en teoría no debería dar pero parece ser que lo han solucionado.
cat test | awk '{print $4}' | sponge test Claro, este comando realiza las siguientes operaciones:
En resumen, el comando extrae la cuarta columna de cada línea del archivo "test" y sobrescribe el archivo original con estas
cuartas columnas. Ten en cuenta que este comando modificará el contenido del archivo "test".
cat Data | xxd -r | sponge Data Este comando toma un archivo llamado "Data," lo convierte de formato hexadecimal a
binario utilizando xxd , y luego sobrescribe el archivo original con la versión binaria, utilizando sponge . Básicamente,
convierte el archivo de hexadecimal a binario y guarda el resultado en el mismo archivo "Data."
strings Data El comando "strings Data" extrae y muestra las cadenas de texto legibles que encuentra en el archivo
"Data." Es útil para encontrar texto oculto en archivos binarios o para examinar archivos en busca de contenido legible.
ghex Data El comando "ghex Data" abre el archivo "Data" en un editor hexadecimal llamado "ghex," que permite ver y
editar su contenido en formato hexadecimal.
mv Data Data.gz El comando "mv Data Data.gz" renombra el archivo "Data" a "Data.gz," cambiándole la extensión a ".gz,"
que suele indicar que el archivo está comprimido.
7z l Data.gz El comando "7z l Data.gz" muestra una lista (l) de los contenidos del archivo comprimido "Data.gz" utilizando
el programa 7-Zip. Esto te permite ver los archivos que están dentro del archivo comprimido sin descomprimirlo.
7z x Data.gz El comando "7z x Data.gz" descomprime (extrae) el archivo "Data.gz" utilizando el programa 7-Zip. Extraerá
los archivos contenidos en "Data.gz" y los colocará en el directorio actual.
rm {file1,file2} El comando "rm {file1,file2}" eliminará los archivos llamados "file1" y "file2" en el sistema de archivos. Es
una forma de borrar varios archivos en una sola ejecución del comando "rm."
EXPLICAION DEL SCRIPT:
#!/bin/bash
function ctrl_c(){
echo -e "\n\n[!] Saliendo...\n"
exit 1
}
# Ctrl+C
7z x $first_file_name &>/dev/null
while [ $decompressed_file_name ]; do
echo -e "\n[+] Nuevo archivo descomprimido: $decompressed_file_name"
7z x $decompressed_file_name &>/dev/null
decompressed_file_name="$(7z l $decompressed_file_name 2>/dev/null | tail -n 3 | head -n 1 | awk 'NF{print $NF}')
done
Este script en Bash tiene como objetivo descomprimir archivos contenidos dentro de otros archivos comprimidos (archivos
anidados). Aquí tienes una explicación paso a paso:
1. Se define una función ctrl_c que se ejecutará cuando se presione Ctrl+C. Esta función simplemente muestra un mensaje
de salida y finaliza el script.
2. Se usa trap para atrapar la señal INT (Ctrl+C) y llamar a la función ctrl_c cuando se presiona.
3. Se establece el nombre del primer archivo comprimido como first_file_name y el nombre del archivo descomprimido
como decompressed_file_name . El archivo descomprimido se obtiene analizando la salida de 7z l data.gz (lista los
archivos contenidos en "data.gz").
4. Se descomprime el archivo inicial con el comando 7z x $first_file_name &>/dev/null , y se redirige la salida y el error
estándar al archivo nulo para evitar mensajes en la terminal.
5. Se inicia un bucle while que verifica si decompressed_file_name tiene un valor (si hay más archivos para descomprimir).
Si es así, se ejecuta el bucle.
6. En cada iteración del bucle, se muestra un mensaje que indica que se ha descomprimido un nuevo archivo.
7. Se utiliza 7z x $decompressed_file_name &>/dev/null para descomprimir el archivo actual. Nuevamente, la salida y el
error se redirigen al archivo nulo.
8. Se actualiza el valor de decompressed_file_name analizando la salida de 7z l $decompressed_file_name para obtener el
nombre del siguiente archivo dentro del archivo descomprimido.
9. El bucle continúa descomprimiendo archivos anidados hasta que ya no haya más archivos por descomprimir.
En resumen, este script descomprime archivos anidados dentro de un archivo comprimido principal y muestra los nombres de los
archivos descomprimidos a medida que avanza. Siempre que encuentra un archivo dentro de un archivo, lo extrae y continúa
descomprimiendo hasta que no haya más archivos anidados.
§
CONOCIMIENTO CONCRETO (hola elaborada).
PRACTICA
Esta nueva practica me lleno de satisfacción por el ello de practicarla muy bien no solo realizando la parte practica si no que
restructurando mi manera de realizar todos mis apuntes por ultimo esto es super útil y increible.
COMANDOS
strings Data
ghex Data
mv Data Data.gz
7z l Data.gz
7z x Data.gz
rm {file1,file2}
35-MANEJO DE PARES DE CLAVES Y CONEXIONES SSH.
10-11-2023
§
PRIMER CONOCIMIENTO (hoja elaborada).
Esta practica corresponde a bandit14 y consiste en los conceptos son relacionados al par de claves ssh la publica y la
privada y en este nivel se me otorgara una clave shh para poder ingresar a bandit 14.
Bueno lo primero es tener instalado el ssh el cual se realiza de la siguiente comando sudo apt install openssh-server
una vez instalado el servidor ssh profundizare en los comandos para administrar su servicio.
El primer comando que veré con relación a la administración de ssh es sudo systemctl start sshd el cual se usa para
iniciar ssh en sistemas como red hat o arch y tiene su variante para sistemas basados en Ubuntu y debían sudo systemctl
start ssh el cual es muy similar otro comando es útil para ver es estado del servicio sudo systemctl status ssh con
este comando veo como esta corriendo el servicio y casi por ultimo para parar el servicio sudo systemctl stop ssh con
este comando tan sencillo paro el servicio y por ultimo para indicarle al sistema que inicie el servicio cada vez que arranque
el sistema utilizo el comando sudo systemctl enable ssh y si lo habilite u quiero deshabilitarlo uso el siguiente comando
sudo systemctl disable ssh
Otro comando un poco lógico la verdad la verdad es poder conectarte por ssh a tu propio localhost ssh daygray@localhost
.
ssh-keygen : Este comando se utiliza para generar claves SSH. Cuando lo ejecutas, se crearán dos archivos en el
directorio especificado (o en el directorio predeterminado si no se especifica): uno para la clave privada y otro para la
clave pública.
Durante el proceso, el comando te solicitará que elijas la ubicación del archivo donde se guardarán las claves y
opcionalmente puedes establecer una contraseña adicional para proteger la clave privada. La clave privada debe
mantenerse segura, mientras que la clave pública puede compartirse y se utiliza para autenticación en servidores
remotos.
Una vez generada la clave debo autorizarla para ello debe tener el siguiente nombre establecido en el comando y es
importante recalcar que yo como servidor autorizo la clave de otra persona. Cuándo ejecutas cp id_rsa.pub
authorized_keys , el contenido de id_rsa.pub se copiará en authorized_keys . Esto es útil cuando estás configurando
la autenticación por clave en un servidor SSH y deseas agregar una clave pública a la lista de claves autorizadas para un
usuario específico. Es importante tener en cuenta que este comando sobrescribirá cualquier contenido existente en
authorized_keys , por lo que debes tener cuidado al usarlo para asegurarte de no perder ninguna clave pública ya
autorizada.
Con el siguiente comando habilito el uso de mi clave privada ssh-copy-id daygray@localhost
desde el punto de vista desde el interesado a conectarse seria ssh -i id_rsa.pub daygray@localhost
ssh -i sshkey.private bandit14@localhost -p 2220 con este comando consigo ingresar al bandirt14 es necesario
indicar el puerto. Luego ver la contraseña.
§
CONOCIMIENTO CONCRETO(hoja elaborada).
PRACTICA
Mi practica consistió en analizar los temas y tambien realizar las practica en mi propia maquina.
COMANDOS
ssh daygray@localhost
ssh-keygen
cp id_rsa.pub authorized_keys
ssh-copy-id daygray@localhost
12-11-2023
§
PRIMER CONOCIMIENTO(hoja elaborada).
nc localhost 30000
Es muy facil esta practica consiste en conectarme a un puerto mediante el uso del comando nc y pasarle la contraseña
anterior para que me genere la contraseña del siguiente nivel.
nc localhost 30000 , es un comando de netcat (abreviado como nc ), que es una herramienta de --- red versátil que se
utiliza para leer y escribir datos a través de conexiones de red utilizando el protocolo TCP o UDP.
Desglosando el comando:
nc : es el comando netcat.
localhost : es el nombre del host al que te estás conectando. En este caso, te estás conectando a tu propia máquina.
30000 : es el número del puerto al que te estás conectando.
Por lo tanto, nc localhost 30000 abre una conexión a localhost en el puerto 30000 . Si hay un servicio escuchando en
ese puerto, podrás comenzar a enviar y recibir datos. Si no hay un servicio escuchando, el comando fallará.
Espero que esto te ayude a entender el comando. Si tienes más preguntas, no dudes en preguntar.
netstat -nat
¡Por supuesto! El comando netstat -nat es un comando de red en sistemas Unix y Linux que se utiliza para mostrar
todas las conexiones de red, tanto entrantes como salientes.
Desglosando el comando:
netstat : es el comando principal que muestra las conexiones de red, las tablas de enrutamiento y una serie de
estadísticas de red.
-n : hace que netstat muestre las direcciones y los números de puerto en formato numérico.
-a : hace que netstat muestre todas las conexiones y sockets de escucha.
-t : limita netstat para que solo muestre las conexiones TCP.
Por lo tanto, netstat -nat mostrará todas las conexiones de red TCP (tanto activas como inactivas) en tu sistema, con las
direcciones IP y los números de puerto mostrados en formato numérico.
Espero que esto te ayude a entender el comando. Si tienes más preguntas, no dudes en preguntar.
ss -nltp
El comando ss -nltp es un comando de red en sistemas Unix y Linux que se utiliza para mostrar información sobre las
conexiones de red.
Desglosando el comando:
ss : es el comando principal que es una utilidad para investigar sockets.
-n : hace que ss muestre las direcciones y los números de puerto en formato numérico.
-l : hace que ss muestre solo los sockets que están escuchando.
-t : limita ss para que solo muestre las conexiones TCP.
-p : hace que ss muestre el proceso que utiliza el socket.
Por lo tanto, ss -nltp mostrará todos los sockets TCP que están escuchando en tu sistema, con las direcciones IP y los
números de puerto mostrados en formato numérico, y también mostrará el proceso que utiliza cada socket.
Espero que esto te ayude a entender el comando. Si tienes más preguntas, no dudes en preguntar
cat /proc/net/tcp
¡Por supuesto! El comando cat /proc/net/tcp es un comando en sistemas Unix y Linux que se utiliza para mostrar
información sobre las conexiones TCP en tu sistema.
Desglosando el comando:
cat : es el comando principal que se utiliza para concatenar y mostrar archivos.
/proc/net/tcp : es un archivo especial en el sistema de archivos /proc que contiene información sobre las conexiones
TCP en tu sistema.
Por lo tanto, cat /proc/net/tcp mostrará una tabla de las conexiones TCP actuales en tu sistema. Cada línea de la tabla
representa una conexión TCP, y los campos de la tabla contienen información detallada sobre la conexión, como el estado
de la conexión, las direcciones IP y los números de puerto local y remoto, y más.
Espero que esto te ayude a entender el comando. Si tienes más preguntas, no dudes en preguntar
lsof -i:22
Claro que sí! El comando lsof -i:22 es un comando en sistemas Unix y Linux que se utiliza para listar los archivos que
están abiertos por los procesos.
Desglosando el comando:
lsof : es el comando principal que significa “listar archivos abiertos”. Este comando proporciona información sobre los
archivos que están abiertos por los procesos.
-i : es una opción que le dice a lsof que liste solo los archivos que están siendo utilizados por los procesos de Internet.
:22 : es el número de puerto. En este caso, estás pidiendo a lsof que liste solo los archivos que están siendo utilizados
por los procesos que están comunicándose a través del puerto 22.
Por lo tanto, lsof -i:22 te dará una lista de todos los procesos que están utilizando el puerto 22, que es el puerto estándar
para el protocolo SSH (Secure Shell). Esta información puede ser útil para la solución de problemas de red o la seguridad del
sistema.
ps -faux
El comando ps -faux se utiliza para mostrar información detallada sobre los procesos en ejecución en un sistema Unix o
Linux. Aquí está la explicación de cada parte del comando:
ps : Este comando se utiliza para mostrar información sobre los procesos en ejecución.
-f : La opción -f o --full muestra una salida más completa, incluyendo detalles como el UID (identificación de
usuario), el PID (identificación de proceso), el PPID (identificación del proceso padre), el tiempo de CPU utilizado, etc.
aux : Las opciones a y u se utilizan para mostrar información sobre todos los procesos de todos los usuarios. La opción
x se utiliza para incluir procesos que no están asociados con una terminal (procesos en segundo plano).
En resumen, el comando ps -faux muestra información detallada sobre todos los procesos en ejecución en el sistema,
incluyendo detalles sobre el propietario del proceso, el uso de la CPU, el estado, etc. Este comando es útil para obtener una
visión general de los procesos activos en un sistema Unix o Linux.
ps -eo command
El comando ps -eo command se utiliza para mostrar una lista de los comandos de los procesos en ejecución en un sistema
Unix o Linux. Aquí está la explicación de cada parte del comando:
ps : Este comando se utiliza para mostrar información sobre los procesos en ejecución.
-eo command : Las opciones -eo command se utilizan para personalizar el formato de salida de ps . En este caso, estás
especificando que solo deseas ver la columna que muestra el comando asociado con cada proceso.
En resumen, el comando ps -eo command proporcionará una lista de comandos de los procesos en ejecución, mostrando
qué programas o comandos están actualmente activos en el sistema. Es una forma útil de obtener información rápida sobre
las tareas que se están realizando en el sistema en un momento dado.
Itinerar de manera vertical los puertos sacados en formato hexadecimal de dos formas:
echo "19C8
0016
CABE
19C8
B2EC
A7CE
B39A
E7FA
EB90" | while read line; do echo "estoy leyendo la linea $line"; done
PRACTICA
!! Mi practica consistió en elaborar lo que aprendí en mi propia maquina virtual y tomar todos mis apuntes
correspondientes y la verdad si tengo una gran facilidad ya adquirida relacionada con estos temas y se nota en
demasía.
COMANDOS
nc localhost 30000
netstat -nat
ss -nltp
cat /proc/net/tcp
lsof -i:22
ps -faux
ps -eo command
37-USO DE CONEXIONES ENCRIPTADAS.
20-11-2023
§
PRIMER CONOCIMIENTO(hoja elaborada).
El comando que proporcionaste utiliza ncat , que es una herramienta de red que proporciona funcionalidades similares a
netcat , pero con algunas mejoras y características adicionales. Aquí está la explicación del comando:
ncat : Es el comando principal que inicia la herramienta ncat .
--ssl : Esta opción indica que se debe usar SSL/TLS para la conexión. En este caso, la comunicación entre el cliente y el
servidor se realizará de forma segura mediante el protocolo SSL/TLS.
127.0.0.1 : Es la dirección IP del host al que se va a conectar. En este caso, se está conectando a la dirección IP local
127.0.0.1, que es equivalente a "localhost" y se refiere al propio sistema.
3001 : Es el número de puerto al que se va a conectar en el host especificado. En este caso, se está conectando al puerto
3001 en el host local.
En resumen, este comando ncat está estableciendo una conexión segura a través de SSL/TLS al puerto 3001 en el
localhost (127.0.0.1). Este tipo de conexión segura es comúnmente utilizada para la comunicación segura entre sistemas o
para acceder a servicios que requieren seguridad en la comunicación, como servidores web con soporte SSL/TLS. Ten en
cuenta que, para que esta conexión funcione correctamente, el servicio en el puerto 3001 debe estar configurado para
aceptar conexiones seguras.
§
PRACTICA
!! Ya realice las practicas correspondiente y la verdad es que es muy sencilla esta practica.
COMANDOS
26-11-2023
§
INFORMACION
touch PortScan.sh
El comando touch PortScan.sh crea un archivo vacío llamado "PortScan.sh" en el directorio actual. Este comando es útil
para actualizar la marca de tiempo de un archivo existente o, en este caso, para crear un nuevo archivo si no existe.
Después de ejecutar este comando, tendrás un archivo llamado "PortScan.sh" en el directorio desde el cual ejecutaste el
comando. Puedes utilizar este archivo para almacenar scripts de shell u otra información según sea necesario.
chmod +x PortScan.sh
El comando chmod +x PortScan.sh otorga permisos de ejecución al archivo "PortScan.sh". Después de ejecutar este
comando, el archivo "PortScan.sh" será ejecutable, lo que te permitirá ejecutarlo como un script de shell o programa. Los
permisos de ejecución son necesarios para que puedas ejecutar un archivo como un programa.
Recuerda que este comando asume que estás en un entorno Unix o Linux. Si estás utilizando otro sistema operativo, los
comandos y el manejo de permisos pueden ser diferentes.
nvim PortScan.sh
El comando nvim PortScan.sh abre el editor de texto Vim en modo de inserción para el archivo "PortScan.sh". Vim (Vi
Improved) es un editor de texto avanzado y potente utilizado en sistemas Unix y Linux.
Cuando ejecutas este comando, entrarás en el entorno de edición de Vim, donde podrás modificar el contenido del archivo
"PortScan.sh". Para guardar los cambios y salir de Vim, sigue estos pasos:
1. Presiona la tecla Esc para asegurarte de que estás en el modo de comandos (normal).
2. Escribe :wq y presiona Enter .
Esto guardará los cambios y cerrará Vim. Si solo deseas salir sin guardar cambios, puedes usar :q! . Recuerda que las
combinaciones de teclas y comandos en Vim pueden tener una curva de aprendizaje, pero ofrecen un conjunto poderoso de
funciones para la edición de texto.
Primer codigo
Este código es un script de Bash que realiza la tarea de imprimir en la salida estándar (generalmente la pantalla) una
secuencia de números desde 1 hasta 65535. También implementa un manejo de la señal Ctrl+C para salir graciosamente
del script cuando se presiona esa combinación de teclas. Aquí está una explicación más detallada del código:
#!/bin/bash
# Indica que el script debe ser interpretado por Bash.
function ctrl_c(){
echo -e "\n\n[!] Saliendo.....\n"
exit 1
}
# Definición de una función llamada ctrl_c.
# Esta función se ejecutará cuando se capture la señal INT (Ctrl+C).
# Ctrl+C
trap ctrl_c INT
# Establece un manejador de señales para la señal INT (Ctrl+C) que llamará a la función ctrl_c.
1. #!/bin/bash : Esta línea, llamada shebang, indica que el script debe ser interpretado por Bash.
2. function ctrl_c() {...} : Define una función llamada ctrl_c . Esta función se ejecutará cuando se capture la señal
INT (Ctrl+C).
3. trap ctrl_c INT : Establece un manejador de señales para la señal INT (Ctrl+C) que llamará a la función ctrl_c
cuando se capture esa señal.
4. seq 1 65535 : Utiliza el comando seq para generar una secuencia de números desde 1 hasta 65535. Estos números se
imprimirán en la salida estándar.
Cuando ejecutas este script, imprimirá en la pantalla la secuencia de números y estará preparado para salir graciosamente si
presionas Ctrl+C debido al manejo de señales definido.
Segundo codigo
Este script de Bash realiza un escaneo de puertos simple, imprimiendo en la salida estándar un mensaje para cada puerto
en un rango específico. También incluye un manejo de la señal Ctrl+C para salir graciosamente del script. Aquí está la
explicación del código:
#!/bin/bash
# Indica que el script debe ser interpretado por Bash.
function ctrl_c(){
echo -e "\n\n[!] Saliendo.....\n"
exit 1
}
# Definición de una función llamada ctrl_c.
# Esta función se ejecutará cuando se capture la señal INT (Ctrl+C).
# Ctrl+C
trap ctrl_c INT
# Establece un manejador de señales para la señal INT (Ctrl+C) que llamará a la función ctrl_c.
1. #!/bin/bash : La línea shebang, indica que el script debe ser interpretado por Bash.
2. function ctrl_c() {...} : Define una función llamada ctrl_c . Esta función se ejecutará cuando se capture la señal
INT (Ctrl+C).
3. trap ctrl_c INT : Establece un manejador de señales para la señal INT (Ctrl+C) que llamará a la función ctrl_c
cuando se capture esa señal.
4. El bucle for recorre todos los puertos en el rango de 1 a 65535.
5. echo "[+] estamos en el puerto $port" : Imprime en la salida estándar un mensaje indicando en qué puerto está
actualmente el bucle.
Este script básicamente imprimirá un mensaje para cada puerto en el rango especificado y puede detenerse graciosamente
si se presiona Ctrl+C debido al manejo de señales definido.
ss -nltp
El comando ss -nltp es una herramienta de línea de comandos en sistemas Linux y Unix que muestra información sobre
los sockets de red. Aquí está la desglose de cada opción en el comando:
ss : Es un comando para examinar y diagnosticar sockets en Linux.
-n : Muestra las direcciones IP y los números de puerto en formato numérico en lugar de intentar resolverlos a nombres.
-l : Muestra solo sockets de escucha (listening).
-t : Filtra por sockets TCP.
-p : Muestra el proceso asociado con cada socket.
En resumen, el comando ss -nltp te proporcionará una lista de sockets de escucha TCP, mostrando las direcciones IP y
los números de puerto en formato numérico, así como información sobre los procesos asociados con esos sockets. Esto
puede ser útil para diagnosticar las conexiones de red y los servicios que están escuchando en el sistema.
bash
Cambia a la terminal basada en bash debido a que mi consola en zsh no esta bloqueada para poder mandar el arquivo
/dev/tcp/127.0.0.1.
echo ' ' > /dev/tcp/127.0.0.1/22
El comando echo ' ' > /dev/tcp/127.0.0.1/22 es una forma de intentar abrir una conexión TCP a la dirección IP
127.0.0.1 (localhost) en el puerto 22 (por defecto, el puerto SSH). Sin embargo, esta forma particular de intentar abrir una
conexión no es la más adecuada.
Explicación:
echo ' ' : Este comando simplemente imprime un espacio en blanco en la salida estándar.
> /dev/tcp/127.0.0.1/22 : Redirige la salida del comando echo al dispositivo especial /dev/tcp/127.0.0.1/22 , que se
utiliza para abrir una conexión TCP a la dirección IP 127.0.0.1 en el puerto 22
Sin embargo, esta técnica a menudo no funcionará como se espera debido a las restricciones y configuraciones de
seguridad en muchos sistemas. Además, la redirección a /dev/tcp puede no estar habilitada o puede estar restringida en
algunos entornos.
Para abrir una conexión TCP de manera más confiable, se suelen utilizar otras herramientas como nc (netcat) o telnet .
Por ejemplo, para conectar con el puerto 22 en localhost, podrías usar:
nc 127.0.0.1 22
Esto abrirá una conexión TCP a la dirección IP 127.0.0.1 en el puerto 22 utilizando netcat . Ten en cuenta que estas
operaciones pueden requerir privilegios de administrador y la configuración adecuada del sistema.
PortScan.sh
Este script de Bash tiene la intención de realizar un escaneo de puertos simple en el rango de 1 a 65535 en la dirección IP
local (127.0.0.1) utilizando la técnica de redirección /dev/tcp/ . Aquí está la explicación del código:
#!/bin/bash
-Explicación:
1. trap ctrl_c INT : Establece un manejador de señales para la señal INT (Ctrl+C) que llamará a la función ctrl_c
cuando se presione Ctrl+C.
2. tput civis : Oculta el cursor antes de comenzar el escaneo.
3. El bucle for escanea los puertos del 1 al 65535.
4. (echo '' > /dev/tcp/127.0.0.1/$port) 2>/dev/null : Intenta abrir una conexión a la dirección IP 127.0.0.1 y el puerto
actual utilizando la técnica /dev/tcp/ . Si la conexión tiene éxito, se asume que el puerto está abierto. Cualquier error se
redirige a /dev/null para evitar mensajes no deseados.
5. && echo "[+] $port - OPEN" & : Si la conexión tiene éxito, imprime un mensaje indicando que el puerto está abierto.
6. wait : Espera a que todos los subprocesos en segundo plano terminen antes de continuar.
7. tput cnorm : Restaura el cursor después de completar el escaneo.
HostScan.sh
Este script de Bash realiza un escaneo de hosts en una red local utilizando el comando ping . Aquí está la explicación del
código:
#!/bin/bash
Explicación:
1. trap ctrl_c INT : Establece un manejador de señales para la señal INT (Ctrl+C) que llamará a la función ctrl_c
cuando se presione Ctrl+C.
2. El bucle for itera sobre direcciones IP en el rango de 192.168.1.1 a 192.168.1.254.
3. timeout 1 bash -c "ping -c 1 192.168.1.$i &>/dev/null" : Utiliza timeout para limitar el tiempo de espera del
comando ping a 1 segundo. El comando ping se utiliza para enviar un solo paquete ICMP a la dirección IP actual, y la
salida se redirige a /dev/null para evitar mensajes en la salida estándar.
4. && echo "[+] Host 192.168.1.$i - ACTIVE" & : Si el comando ping tiene éxito (es decir, el host está activo), imprime un
mensaje indicando que el host está activo.
5. wait : Espera a que todos los subprocesos en segundo plano terminen antes de continuar.
Este script básicamente intenta hacer un ping a cada dirección IP en el rango especificado y muestra un mensaje si el host
correspondiente está activo.
cd /tmp
El comando cd /tmp se utiliza para cambiar el directorio de trabajo actual al directorio /tmp en el sistema de archivos.
Aquí está la explicación:
cd : Es el comando para cambiar de directorio.
/tmp : Es la ruta al directorio temporal en sistemas basados en Unix/Linux. Este directorio se utiliza comúnmente para
almacenar archivos temporales.
Entonces, cuando ejecutas cd /tmp , te estás moviendo al directorio temporal. Este comando es útil cuando necesitas
realizar operaciones en el directorio temporal o simplemente quieres cambiar tu ubicación en el sistema de archivos a este
directorio específico.
mktemp -d
El comando mktemp -d se utiliza para crear un directorio temporal único de forma segura. Aquí está la explicación:
mktemp : Es un comando que se utiliza para crear archivos o directorios temporales de manera segura. La opción -d indica
que queremos crear un directorio en lugar de un archivo.
Cuando ejecutas mktemp -d , el comando generará un nombre único para un directorio temporal, creará ese directorio y
luego te ubicará en él. Este enfoque garantiza que el nombre del directorio sea único para evitar conflictos con otros
procesos que también puedan estar utilizando el directorio temporal.
Este tipo de comando es útil en scripts o comandos donde necesitas trabajar en un directorio temporal y deseas asegurarte
de que el nombre del directorio sea único para evitar colisiones con otros procesos.
cd /tmp/tmp.dgafsgh
El comando cd /tmp/tmp.dhjfgjsdhf se utiliza para cambiar el directorio de trabajo actual al directorio
/tmp/tmp.dhjfgjsdhf . Aquí está la explicación:
cd : Es el comando para cambiar de directorio.
/tmp/tmp.dhjfgjsdhf : Es la ruta al directorio específico al que estás intentando cambiar.
Este comando te llevará al directorio /tmp/tmp.dhjfgjsdhf . Puede ser útil si necesitas realizar operaciones en ese
directorio o si deseas cambiar tu ubicación actual en el sistema de archivos a ese directorio en particular.
touch PortScan.sh
Creo el script en el directorio temporal.
chmod +x PortScan.sh
Procedo a darle permiso al script.
nano PortScan.sh
Procedo elaborar el scrpit.
nmap --open -T5 -v -n -p31000-32000 127.0.0.1
El comando nmap --open -T5 -v -n -p31000-32000 127.0.0.1 es una invocación del programa Nmap, una herramienta
de escaneo de red. Aquí está la explicación:
nmap : Es el comando principal de Nmap, utilizado para realizar exploraciones y escaneos de red.
--open : Esta opción filtra e imprime solo los hosts con al menos un puerto abierto.
-T5 : Establece el nivel de agresividad del escaneo. En este caso, se utiliza el nivel 5, que es el nivel más agresivo y rápido.
-v : Habilita el modo detallado o verboso, proporcionando más información sobre el progreso del escaneo.
-n : Desactiva la resolución de DNS, mostrando las direcciones IP en lugar de los nombres de host.
-p31000-32000 : Especifica el rango de puertos a escanear, en este caso, desde el puerto 31000 hasta el puerto 32000.
127.0.0.1 : Es la dirección IP del host que se está escaneando. En este caso, se está escaneando el localhost (127.0.0.1).
En resumen, este comando Nmap realiza un escaneo agresivo en el rango de puertos del 31000 al 32000 en el localhost y
muestra los hosts que tienen al menos un puerto abierto. El nivel de detalle es alto debido a la opción -v . Ten en cuenta
que el uso de herramientas de escaneo de red en sistemas sin la debida autorización puede ser ilegal. Asegúrate de tener
permiso para realizar este tipo de actividades en la red que estás explorando.
ncat --ssl 127.0.0.1 31790
El comando ncat --ssl 127.0.0.1 31790 utiliza ncat para realizar una conexión segura SSL/TLS a la dirección IP
127.0.0.1 en el puerto 31790. Aquí está la explicación:
ncat : Es una versión mejorada de netcat que incluye funcionalidades adicionales y es parte del conjunto de
herramientas Nmap.
--ssl : Indica que la conexión se realizará utilizando SSL/TLS para cifrar la comunicación.
127.0.0.1 : Es la dirección IP del host al que te estás conectando. En este caso, es el localhost.
31790 : Es el número de puerto al que te estás conectando en el host especificado.
Este comando establece una conexión segura a través de SSL/TLS al servidor que está escuchando en la dirección IP
127.0.0.1 en el puerto 31790. Ten en cuenta que para este comando tener éxito, debe haber un servidor que esté
escuchando en ese puerto y que admita conexiones seguras a través de SSL/TLS. Además, asegúrate de tener los permisos
y autorizaciones adecuados para realizar esta conexión.
chmod 600 id_rsa
El comando chmod 600 id_rsa se utiliza para cambiar los permisos de un archivo llamado id_rsa . Aquí está la
explicación:
chmod : Es el comando utilizado en sistemas Unix y Linux para cambiar los permisos de archivos y directorios.
600 : Es el conjunto de permisos que se asigna al archivo id_rsa . En la notación octal utilizada por chmod :
El primer dígito (6) representa los permisos del propietario del archivo, en este caso, el propietario tiene permisos de
lectura y escritura (4 + 2 = 6).
Los siguientes dos dígitos (00) indican que los grupos de usuarios y otros usuarios no tienen permisos (0).
id_rsa : Es el nombre del archivo cuyos permisos se están modificando. En este contexto, podría ser un archivo de clave
privada SSH ( id_rsa comúnmente se usa para nombres de claves privadas en SSH).
En resumen, el comando establece permisos restrictivos para el propietario del archivo ( id_rsa ), permitiéndole leer y
escribir en el archivo, mientras que los demás (grupos de usuarios y otros) no tienen ningún permiso. Esto es comúnmente
utilizado para proteger archivos que contienen información sensible, como claves privadas.
ssh -i id-rsa bandit17@localhost -p 2220
El comando ssh -i id_rsa bandit17@localhost -p 2220 se utiliza para establecer una conexión SSH al servidor en
localhost (el mismo sistema en el que estás ejecutando el comando) en el puerto 2220 como el usuario bandit17 ,
utilizando una clave privada especificada por -i id_rsa .
Aquí está la explicación detallada:
ssh : Es el comando para iniciar una sesión SSH.
-i id_rsa : Indica la clave privada que se utilizará para la autenticación. En este caso, la clave privada se llama id_rsa .
bandit17@localhost : Es el nombre de usuario ( bandit17 ) y el host al que te estás conectando ( localhost ). Aquí, estás
intentando conectarte a la misma máquina en la que estás ejecutando el comando.
-p 2220 : Especifica el puerto al que se realizará la conexión. En este caso, el puerto es 2220 .
En resumen, este comando intenta autenticarse como bandit17 en el servidor local ( localhost ) en el puerto 2220
utilizando la clave privada id_rsa . Asegúrate de tener la clave privada y los permisos adecuados para realizar esta
conexión con éxito.
cat /etc/bandit_pass/bandit17
El comando cat /etc/bandit_pass/bandit17 se utiliza para mostrar el contenido del archivo
/etc/bandit_pass/bandit17 . Aquí está la explicación:
cat : Es un comando en sistemas Unix y Linux que se utiliza para concatenar y mostrar el contenido de archivos.
/etc/bandit_pass/bandit17 : Es la ruta del archivo cuyo contenido queremos ver. En este caso, estás accediendo al
archivo bandit17 en el directorio /etc/bandit_pass/ .
En resumen, este comando imprimirá en la terminal el contenido del archivo bandit17 que se encuentra en el directorio
/etc/bandit_pass/ . Presumiblemente, este archivo contiene la contraseña correspondiente al nivel 17 del juego Bandit,
pero el contenido específico dependerá del contexto del juego o del sistema en el que estés trabajando.
COMANDOS
§
§
touch PortScan.sh
chmod +x PortScan.sh
nvim PortScan.sh
ss -nltp
mktemp -d
cd /tmp/tmp.dgafsgh
03-12-23
INFORMACION
wc -l
El comando `wc -l ` se utiliza para contar el número de líneas en cada archivo del directorio actual. Aquí está una explicación
detallada:
< contraseña123
> nuevaContraseña456`
Esto significa que la contraseña "contraseña123" estaba presente en el archivo passwords.old pero no en passwords.new , y la
contraseña "nuevaContraseña456" está presente en passwords.new pero no en passwords.old .
Este tipo de comparación es útil para entender qué cambios específicos se han realizado entre dos versiones de archivos, en este
caso, dos archivos que probablemente contienen contraseñas.
COMANDOS
wc -l *
17-12-2023
INFORMACION
Este comando utiliza sshpass y ssh para conectarse a un servidor remoto y ejecutar el comando whoami . Vamos a
desglosar cada parte:
1. sshpass :
sshpass es una herramienta que se utiliza para proporcionar la contraseña al comando ssh de manera no
interactiva. Es útil en situaciones en las que necesitas automatizar la autenticación sin tener que ingresar la contraseña
manualmente.
2. -p 'hga5tuuCLF6fFzUpnagiMN8ssu9LFrdg' :
Este es el argumento que pasa la contraseña al comando. En este caso, la contraseña es
'hga5tuuCLF6fFzUpnagiMN8ssu9LFrdg' . La contraseña debe ir entre comillas simples para manejar correctamente
caracteres especiales si los hay.
3. ssh [email protected] -p 2220 :
Esta parte se conecta al servidor remoto utilizando SSH.
bandit18 : Es el nombre de usuario al que se está conectando.
bandit.labs.overthewire.org : Es la dirección del servidor.
-p 2220 : Especifica el puerto al que se realizará la conexión (puerto 2220 en este caso).
4. whoami :
Este es el comando que se ejecutará en el servidor remoto después de la conexión. Simplemente devuelve el nombre
del usuario que está actualmente conectado.
En resumen, este comando se utiliza para conectarse de manera automatizada a un servidor remoto
( bandit.labs.overthewire.org ) en el puerto 2220, autenticándose como el usuario bandit18 con la contraseña
proporcionada, y luego ejecuta el comando whoami para mostrar el nombre del usuario actual en el servidor remoto.
Recuerda que, en términos de seguridad, almacenar contraseñas en scripts o comandos puede ser riesgoso. Es preferible utilizar
métodos más seguros, como el uso de claves SSH sin contraseña o configurar herramientas específicas de administración de
contraseñas.
sshpass -p 'hga5tuuCLF6fFzUpnagiMN8ssu9LFrdg' ssh [email protected] -p 2220 whoami
Es prácticamente lo mismo que es anterior comando solo que esta vez es como si forzara la ejecución de una bash.
cat readme
Bueno una vez allí entro a ver la contraseña del desafío el cual se encuentra en el directorio principal del usuario.
sshpass -p 'hga5tuuCLF6fFzUpnagiMN8ssu9LFrdg' ssh [email protected] -p 2220 whoami
Me conecto a la próxima maquina.
file bandir20-do
Veo el tipo de archivo en el cual confirmo que es binario de 32bits.
./bandit20-do
Procedo a intentar ejecutarlo.
41-ABUSANDO DE PRIVILEGIOS SUID PARA MIGRAR DE USUARIO.
19-12-2023
INFORMACION
./bandit20-do bash -p
1. ./bandit20-do :
Esto parece ser un script ejecutable llamado bandit20-do . Es probable que este script esté diseñado para realizar
alguna tarea específica relacionada con el desafío.
2. bash :
Especifica que se debe ejecutar el shell Bash. En otras palabras, está iniciando un nuevo intérprete de comandos Bash.
3. -p :
Este es un argumento que se pasa al script o al shell Bash. Sin más contexto, no puedo determinar exactamente qué
hace el script o cómo interpreta este argumento.
En el contexto de los desafíos de "Bandit" en OverTheWire, estos comandos a menudo se utilizan para iniciar un nuevo shell con
ciertos permisos o configuraciones específicas para avanzar en el juego.
Te sugiero revisar la documentación del desafío o el material proporcionado por OverTheWire para obtener detalles específicos
sobre cómo se espera que utilices este comando en el contexto del juego. Si tienes acceso a alguna documentación relacionada
con el desafío, revisa esa documentación para obtener más información sobre cómo funciona este comando específico en el
contexto del juego "Bandit".
./bandit20-do sh
1. ./bandit20-do :
Al igual que en el comando anterior, ./bandit20-do probablemente sea un script ejecutable diseñado para realizar
alguna tarea específica en el contexto del desafío "Bandit".
2. sh :
sh es el intérprete de comandos de shell. En este caso, está ejecutando sh sin argumentos adicionales.
En este contexto específico, parece que estás iniciando un nuevo shell ( sh ) utilizando el script bandit20-do . El uso de sh sin
argumentos adicionales simplemente inicia un nuevo shell interactivo.
Al ejecutar este comando, probablemente estés obteniendo un nuevo prompt de shell, y desde allí podrías explorar el sistema de
archivos, ejecutar comandos y realizar otras acciones según las restricciones y permisos del desafío.
Como siempre, te recomendaría revisar la documentación proporcionada en el desafío "Bandit" o cualquier otro material que
tengas disponible en OverTheWire para entender completamente cómo utilizar estos comandos en el contexto del juego.
cat /etc/bandit_pass/bandit20
19-12-2023
INFORMACIONES
./suconnect 4646
Es un binario el cual le debes de proporcionar un puerto y esta diseñado para establecer una conexión tcp y devolver la
contraseña para el siguiente nivel al otro lado.
nc -nlvp 4646
Buenas noches. El comando nc -nlvp 4646 utiliza la herramienta nc (netcat) para configurar un servidor de escucha en
un puerto específico. Vamos a desglosar cada parte del comando:
1. nc :
nc es la abreviatura de netcat, una utilidad de red que se utiliza para leer o escribir datos a través de conexiones de
red utilizando el protocolo TCP o UDP.
2. -nlvp :
Juntas, estas opciones configuran nc para ser un servidor de escucha en el puerto 4646.
3. 4646 :
Es el número de puerto en el cual nc estará escuchando las conexiones entrantes.
Entonces, en resumen, el comando nc -nlvp 4646 establece un servidor de escucha en el puerto 4646 utilizando netcat. Este
servidor esperará conexiones entrantes y mostrará información detallada sobre las conexiones y transferencias de datos.
Este tipo de configuración es comúnmente utilizado en el campo de la ciberseguridad para configurar puntos de escucha para
pruebas de penetración, análisis de tráfico y otras actividades relacionadas con la seguridad de la red. Ten en cuenta que la
utilización de estas herramientas debe hacerse de manera ética y en entornos controlados para evitar problemas legales.
Ojo que a esta conexión establecida con netcat debo de ingresarle la contraseña de bandit20 y debo iniciar la conexión
en otra terminal del mismo usuario bandit 20
43-ABUSANDO DE TAREAS CRON 1-3
19-12-23
INFORMACION
Cron es un administrador de tareas de Linux que permite ejecutar comandos en un momento determinado, por ejemplo, cada
minuto, día, semana o mes. Si queremos trabajar con cron, podemos hacerlo a través del comando crontab.
El formato de configuración de cron es el siguiente: Minuto Hora Dia-del-Mes Mes Dia-de-la-Semana Comando-a-Ejecutar
Minutos: de 0 a 59.
Horas: de 0 a 23.
Día del mes: de 1 a 31.
Mes: de 1 a 12.
Día de la semana: de 1 a 6 lunes a sábado (1=lunes, 2=martes, etc.) y 0 o 7 el domingo.
Si quisiéramos especificar todos los valores posibles de un parámetro (minutos, horas, etc.) podemos hacer uso del asterisco (*).
Esto implica que si en lugar de un número utilizamos un asterisco, el comando indicado se ejecutará cada minuto, hora, día de
mes, mes o día de la semana, como en el siguiente ejemplo:
* * * * * /home/user/script.sh
cd /etc/cron.d
El directorio /etc/cron.d en sistemas basados en Unix (como Linux) es un lugar donde se almacenan archivos de configuración
cron específicos del sistema. Ahora, vamos a desglosar cada parte del camino y entender su significado:
1. / :
Indica el directorio raíz del sistema de archivos.
2. etc :
Es un directorio que contiene configuraciones y archivos de configuración para varios programas y servicios del
sistema.
3. cron.d :
Es un subdirectorio de /etc que se utiliza específicamente para almacenar archivos de configuración cron. El sistema
cron es un planificador de tareas que se utiliza para automatizar la ejecución de comandos o scripts a intervalos
específicos.
En el directorio /etc/cron.d , los archivos de configuración cron tienen un formato particular y se utilizan para programar tareas
específicas del sistema. Cada archivo en este directorio puede contener reglas cron que especifican cuándo y cómo se deben
ejecutar ciertos comandos.
cat /usr/bin/cronjob_bnadit22.sh
20-12-23
INFORMACION
Es prácticamente la misma practica solo que el script es diferente hay saber leerlo nomas hay esta la dirección temporal
del script
cd /etc/cron.d
El directorio /etc/cron.d en sistemas basados en Unix (como Linux) es un lugar donde se almacenan archivos de configuración
cron específicos del sistema. Ahora, vamos a desglosar cada parte del camino y entender su significado:
1. / :
Indica el directorio raíz del sistema de archivos.
2. etc :
Es un directorio que contiene configuraciones y archivos de configuración para varios programas y servicios del
sistema.
3. cron.d :
Es un subdirectorio de /etc que se utiliza específicamente para almacenar archivos de configuración cron. El sistema
cron es un planificador de tareas que se utiliza para automatizar la ejecución de comandos o scripts a intervalos
específicos.
En el directorio /etc/cron.d , los archivos de configuración cron tienen un formato particular y se utilizan para programar tareas
específicas del sistema. Cada archivo en este directorio puede contener reglas cron que especifican cuándo y cómo se deben
ejecutar ciertos comandos.
cat /usr/bin/cronjob_bnadit22.sh
10-01-24
INFORMACION.
Bueno procedamos a realizar prácticamente las misma acciones que las anteriores practicas.
cd /etc/cron.d
Ir a este directorio para ver las tareas cron asignadas.
cat /usr/bin/cronjob_bnadit22.sh
Ver la tarea cron de interés la cual en este caso es la bandit 24.
cd /var/spool
Procedo a ingresar a ver mis permisos sobre la directorio en la cual estoy copiando el script y veo que puedo crear nuevos
ficheros pero no leer los existentes,
ANALIZO LA TAREA CRON QUE SE ESTA EJECUTANDO
Este script de bash realiza varias operaciones en archivos ubicados en el directorio /var/spool/$myname/foo . A
continuación, se explica cada parte del script:
#!/bin/bash
Esta línea indica que el script debe ser ejecutado utilizando el intérprete de comandos bash.
myname=$(whoami)
Asigna el nombre del usuario actual a la variable myname utilizando el comando whoami .
cd /var/spool/$myname/foo
for i in * .*;
do
if [ "$i" != "." -a "$i" != ".." ];
then
echo "Handling $i"
owner="$(stat --format "%U" ./$i)"
if [ "${owner}" = "bandit23" ]; then
timeout -s 9 60 ./$i
fi
rm -f ./$i
fi
done
Este es un bucle for que itera sobre todos los archivos en el directorio actual ( * .* significa todos los archivos y
directorios, incluyendo los ocultos). Dentro del bucle:
Verifica que $i no sea ni el directorio actual ni el directorio padre ( . y .. ).
Imprime un mensaje indicando que está manejando el archivo.
Utiliza el comando stat para obtener el propietario del archivo y lo almacena en la variable owner .
Verifica si el propietario del archivo es "bandit23". Si es así, ejecuta el archivo con un límite de tiempo de 60
segundos utilizando timeout .
Elimina el archivo con rm -f .
En resumen, este script parece estar diseñado para ejecutar y eliminar scripts en el directorio /var/spool/$myname/foo , con la
condición adicional de que solo se ejecuten los scripts propiedad del usuario "bandit23". Además, se establece un límite de tiempo
de 60 segundos para la ejecución de cada script utilizando el comando timeout .
dir_temp=$(mktemp -d)
Bueno a ver esto dentro de directorio cd /var/spool creo una variable con el nombre del directorio temporal para agilizar la
manera de trabajar despues ingreso al directorio y creo el script : cd $dir_temp y nano script.sh .
chmod +x script.sh
Le doy permiso de ejecución antes de copiar el script para que asi se copien tambien los permisos.
SCRIPT.SH
#!/bin/bash
cp /etc/bandit_pass/bandit24 > tmp/tmp.6MAVYlvV0s/bandit24_password.log
chmod o+r /tmp/tmp. 6MAVYlvV0s/bandit24_password.log
16-01-24
INFORMACION
nc localhost 30002
intento hacer lo que me indica las instrucciones conectarme al puerto local 30002.
Este comando se utiliza para ver en modo paginación el texto cat combinations.txt | less .
cat combinations. txt | nc localhost 30002 | grep -vE "Wrong |Please enter"
Con este comando estoy realizando un ataque de fuerza bruta a puerto 30002 en el cual estoy probando todas las
combinaciones posibles desde 0000 hasta el 9999 junto con la contraseña anterior.
16-01-24
Continuemos con las practicas este día fue muy fructífero concluí dos CTF y ya voy por mi segunda practica.
!!
Al intentarme conectarme como bandit25 con la clave ssh me vota esto esto es debido a que no tiene un bash como tal el
usuario bandit26.
ssh -p 2220 -i bandit26.sshkey bandit26@localhost
y despues :
y despues:
49-OPERANDO CON PROYECTOS DE GITHUB 2-5
17-01-24
despues :
despues :
despues :
50-OPERANDO CON PROYECTOS DE GITHUB 3-5
17-01-24
Bueno hago literalmente lo mismo que las dos practicas anteriores solo que esta vez utilizo las ramas de github
!!
De la siguiente manera:
51-OPERANDO CON PROYECTOS DE GITHUB 4-5
17-01-24
17-01-24
Este es un poco diferente pero es similar me saltare la parte en como clonar el repositorio y seguire con el resto.
!!
Lo añado al proyecto
Consiste en usar el $0 para que genere una shell en minuscula y despues llamar unas bash