<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Technology on </title>
    <link>https://blog.mauzy.net/technology/</link>
    <description>Recent content in Technology on </description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 22 Apr 2026 07:07:07 +0100</lastBuildDate>
    <atom:link href="https://blog.mauzy.net/technology/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Rapid7 Velociraptor Exploit PoC</title>
      <link>https://blog.mauzy.net/technology/rapid7-velociraptor-exploit-poc/</link>
      <pubDate>Wed, 22 Apr 2026 07:07:07 +0100</pubDate>
      <guid>https://blog.mauzy.net/technology/rapid7-velociraptor-exploit-poc/</guid>
      <description>&lt;h2 id=&#34;what-is-velociraptor&#34;&gt;What is Velociraptor?&lt;/h2&gt;&#xA;&lt;p&gt;Velociraptor is an open-source endpoint monitoring, digital forensic and cyber response platform with plenty of capabilties. Originally developed by Rapid7, it now has over 100 contributors on GitHub. Security professionals with varying levels of access use this Security tool. Given all of the privileges this software has, as an attacker, vulnerabilities in it make it all the more juicy.&lt;/p&gt;&#xA;&lt;h2 id=&#34;understanding-the-vulnerability&#34;&gt;Understanding the Vulnerability&lt;/h2&gt;&#xA;&lt;h3 id=&#34;cve-2025-6264&#34;&gt;CVE-2025-6264&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Affected versions before 0.74.3&lt;/li&gt;&#xA;&lt;li&gt;Affects Windows, MacOS and Linux&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;To detect unintended privilege escalations in custom artifacts, users should run the artifact verifier as described here: &lt;a href=&#34;https://docs.velociraptor.app/docs/artifacts/security/#restricting-dangerous-client-artifacts&#34; target=&#34;_blank&#34;&gt;https://docs.velociraptor.app/docs/artifacts/security/#restricting-dangerous-client-artifacts&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setup Windows 11 VM on Arch Linux</title>
      <link>https://blog.mauzy.net/technology/windows-vm/</link>
      <pubDate>Tue, 10 Mar 2026 07:07:07 +0100</pubDate>
      <guid>https://blog.mauzy.net/technology/windows-vm/</guid>
      <description>&lt;p&gt;Qemu on its own can be a bit scary but don&amp;rsquo;t worry this is super easy. If you already have Qemu/KVM setup go to &lt;a href=&#34;#windows-installation-media&#34;&gt;Windows Installation Media&lt;/a&gt;. Lets jump straight into it:&lt;/p&gt;&#xA;&lt;h2 id=&#34;qemukvm&#34;&gt;Qemu/KVM&lt;/h2&gt;&#xA;&lt;p&gt;Just making sure your system can use the software, then installing it :)&lt;/p&gt;&#xA;&lt;p&gt;Make sure you update your system first!&lt;/p&gt;&#xA;&lt;h3 id=&#34;kvm&#34;&gt;KVM&lt;/h3&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://wiki.archlinux.org/title/KVM&#34; target=&#34;_blank&#34;&gt;https://wiki.archlinux.org/title/KVM&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Kernel-based Virtual Machine (KVM) makes hosting virtual machines super easy.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Check for processor support: &lt;code&gt;LC_ALL=C.UTF-8 lscpu | grep Virtualization&lt;/code&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Should return &lt;code&gt;ADM-V&lt;/code&gt; or &lt;code&gt;VT-x&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;If nothing returns, you can&amp;rsquo;t use KVM.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Check for necessary kernel modules: &lt;code&gt;zgrep CONFIG_KVM= /proc/config.gz&lt;/code&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Should return either &lt;code&gt;y&lt;/code&gt; or &lt;code&gt;m&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Make sure the modules are loaded:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ lsmod | grep kvm&#xA;&#xA;kvm_intel             245760  0&#xA;kvmgt                  28672  0&#xA;mdev                   20480  2 kvmgt,vfio_mdev&#xA;vfio                   32768  3 kvmgt,vfio_mdev,vfio_iommu_type1&#xA;kvm                   737280  2 kvmgt,kvm_intel&#xA;irqbypass              16384  1 kvm&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;libvirt&#34;&gt;libvirt&lt;/h3&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://wiki.archlinux.org/title/Libvirt#Client&#34; target=&#34;_blank&#34;&gt;https://wiki.archlinux.org/title/Libvirt#Client&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Developing Implants for Chinese Targets</title>
      <link>https://blog.mauzy.net/technology/chinese-targets/</link>
      <pubDate>Fri, 09 Jan 2026 07:07:07 +0100</pubDate>
      <guid>https://blog.mauzy.net/technology/chinese-targets/</guid>
      <description>&lt;h1 id=&#34;implant-communication&#34;&gt;Implant Communication&lt;/h1&gt;&#xA;&lt;p&gt;Typical communications for C2s will be over commonly used ports such as HTTPS, ICMP, or DNS. We can use these common protocols to come up with interesting methods of communication. Another option is to use public platforms and communicate through them. We can use steganography for communication through images, dead drops with something like Pastebin, or encoded YouTube comments. With mainland China targets, we run into many more roadblocks.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Monero Node on A Raspi5</title>
      <link>https://blog.mauzy.net/technology/monero-node/</link>
      <pubDate>Thu, 06 Feb 2025 07:07:07 +0100</pubDate>
      <guid>https://blog.mauzy.net/technology/monero-node/</guid>
      <description>&lt;h1 id=&#34;dietpi&#34;&gt;DietPi&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The locales and keyboard setting are not set to en_US.UTF-8&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Make this change and select the correct keyboard layout&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Once connected to the internet DietPi will update&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;install-the-packages-you-want-for-general-use&#34;&gt;Install the packages you want for general use&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;sudo apt install vim ufw fail2ban unattended-upgrades tor&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;configure-external-ssd-for-the-blockchain&#34;&gt;Configure External SSD for the blockchain&lt;/h2&gt;&#xA;&lt;p&gt;sudo fdisk -l # identify your drive&#xA;sudo mkfs.ext4 /dev/sdX # replace X with your drive letter&#xA;sudo mkdir /mnt/blockchain&#xA;sudo mount /dev/sdX /mnt/blockchain&lt;/p&gt;</description>
    </item>
    <item>
      <title>Further Reading and Concepts</title>
      <link>https://blog.mauzy.net/technology/furtherconcepts/</link>
      <pubDate>Wed, 09 Oct 2024 07:07:07 +0100</pubDate>
      <guid>https://blog.mauzy.net/technology/furtherconcepts/</guid>
      <description>&lt;h3 id=&#34;kernel-entry-point&#34;&gt;Kernel Entry Point&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;(&lt;code&gt;_Start&lt;/code&gt; in your context)**: The kernel entry point is the specific memory address where the execution of the kernel begins. This address is typically defined in your kernel code, and the bootloader is designed to jump to this address after loading the kernel into memory. Once the control transfers to the kernel, it assumes control of the system&amp;rsquo;s resources and functions.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Bootloader&amp;rsquo;s Task Completion&lt;/strong&gt;: After loading the kernel into memory and transferring control to the kernel entry point, the bootloader&amp;rsquo;s task is essentially completed. It has done its job of loading the operating system kernel into memory and initializing the system. At this point, the bootloader doesn&amp;rsquo;t need to stay in memory anymore.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Where Does the Bootloader Go?&lt;/strong&gt;: After the kernel takes over, the bootloader doesn&amp;rsquo;t have a specific place it &amp;ldquo;goes&amp;rdquo; in memory. It simply ceases to execute because the CPU&amp;rsquo;s instruction pointer is now pointing to the kernel&amp;rsquo;s entry point. The bootloader code, which was previously in memory, is effectively overwritten by the kernel code as the kernel is loaded.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;abi&#34;&gt;ABI&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The Application Binary Interface (ABI) is a set of rules and conventions that dictate how programs interact with a computer&amp;rsquo;s hardware and operating system. It defines things like data type sizes, calling conventions, and system call numbers. In essence, the ABI ensures that software components, like libraries and applications, can work seamlessly together by following a common set of rules regarding function calls, data structures, and system interactions.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;vga-text-mode-and-bios-deprecated&#34;&gt;VGA Text Mode and BIOS Deprecated&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Older methods of interacting with the computer&amp;rsquo;s display, like VGA text mode and BIOS, are becoming obsolete on newer machines. These methods are being replaced with more modern techniques.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;uefi-and-framebuffers&#34;&gt;UEFI and Framebuffers&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;UEFI (Unified Extensible Firmware Interface) is the modern replacement for BIOS. It supports pixel buffers, which are essentially areas in memory where you can draw pixels directly on the screen. This is in contrast to the older VGA text mode, which dealt with characters on a grid.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;multiboot-flags-and-vesa-vbe&#34;&gt;Multiboot Flags and VESA VBE&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;When you&amp;rsquo;re working on low-level programming tasks like creating an operating system, you can set up a framebuffer using techniques like Multiboot flags (a protocol used by bootloaders like GRUB) or VESA VBE (VESA Video BIOS Extensions) directly. These methods allow you to initialize a pixel buffer for drawing graphics.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;drawing-text-in-framebuffer-mode&#34;&gt;Drawing Text in Framebuffer Mode&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Unlike VGA text mode where characters are predefined, in a framebuffer, you have to draw each character (glyph) yourself. This means you need a font, which is essentially a set of bitmap images for each character. Most Linux distributions provide PC Screen Fonts that you can use. To display text, you&amp;rsquo;ll need functions similar to &lt;code&gt;terminal_putchar&lt;/code&gt; but adapted for drawing pixels instead of using predefined characters.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;implementation-details&#34;&gt;Implementation Details&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Even in framebuffer mode, you still need to manage things like the cursor position, handle line breaks, and implement scrolling, just like you would in VGA text mode. These concepts remain the same; it&amp;rsquo;s just the way you interact with the display that has changed.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Setting Up a Site With Hugo</title>
      <link>https://blog.mauzy.net/technology/hugo-site/</link>
      <pubDate>Sat, 14 Sep 2024 07:07:07 +0100</pubDate>
      <guid>https://blog.mauzy.net/technology/hugo-site/</guid>
      <description>&lt;h1 id=&#34;intro&#34;&gt;Intro&lt;/h1&gt;&#xA;&lt;p&gt;You don&amp;rsquo;t need to read this part really :3 Just me blabing.&#xA;I wrote this as I installed and setup Hugo for the first time and documented issues I had along the way. Despite it being documentation for myself, this can also be used as a guide! I decided to use Hugo because I wanted to create a blog section for my website. I tried using Jekyll but I&amp;rsquo;m not a fan of Ruby. Also, Jekyll and its documentation felt dated compared to Hugo; which is written in Go. Being a fan of Rust I also looked at Zola; However Hugo felt like a better fit. At the end there is an install script.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Self Host Your Website without Opening Ports</title>
      <link>https://blog.mauzy.net/technology/self-host/</link>
      <pubDate>Sat, 09 Mar 2024 07:07:07 +0100</pubDate>
      <guid>https://blog.mauzy.net/technology/self-host/</guid>
      <description>&lt;p&gt;This post is a follow along to a Youtube video walk-through that I recorded. We will be setting up a home server to host a web application without opening any ports on my home network. To accomplish this I&amp;rsquo;ll be using a Cloudflare tunnel.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;[!note]&#xA;The &lt;code&gt;$&lt;/code&gt; denotes a terminal command. Anything before &lt;code&gt;$&lt;/code&gt; denotes the current working directory.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;0-prerequisites&#34;&gt;0. Prerequisites&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Remote Server&lt;/li&gt;&#xA;&lt;li&gt;Cloudflare Account&lt;/li&gt;&#xA;&lt;li&gt;Reliable Internet Connection&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;[!warning]&#xA;A little disclaimer: I am not a professional; just a student. Do your own research but this should help you get up and running. For the most part I am just following Cloudflare and other documentation. I highly recommend you read through official documentation as needed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows Kernel Exploitation</title>
      <link>https://blog.mauzy.net/technology/windows-kernel-exploit/</link>
      <pubDate>Fri, 16 Feb 2024 07:07:07 +0100</pubDate>
      <guid>https://blog.mauzy.net/technology/windows-kernel-exploit/</guid>
      <description>&lt;p&gt;This journey was a project I worked on between classes before deciding to make it my final project for my Security 2 class.&#xA;This will start by diving into Windows internals then reverse engineering and finally exploiting. However, as it stands right now the exploit&#xA;just results in bluescreening the target machine. I will continue learning with this project in the future as it has already been a great learning&#xA;adventure.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Operating System Build</title>
      <link>https://blog.mauzy.net/technology/operating-system-build/</link>
      <pubDate>Thu, 28 Sep 2023 07:07:07 +0100</pubDate>
      <guid>https://blog.mauzy.net/technology/operating-system-build/</guid>
      <description>&lt;h1 id=&#34;setup&#34;&gt;Setup&lt;/h1&gt;&#xA;&lt;h2 id=&#34;using-windows-subsystem-for-linux-debian&#34;&gt;Using Windows Subsystem for Linux (Debian)&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Install list&#xA;&lt;ul&gt;&#xA;&lt;li&gt;gcc&lt;/li&gt;&#xA;&lt;li&gt;build-essential&lt;/li&gt;&#xA;&lt;li&gt;bison&lt;/li&gt;&#xA;&lt;li&gt;flex&lt;/li&gt;&#xA;&lt;li&gt;libgmp3-dev&lt;/li&gt;&#xA;&lt;li&gt;libmpc-dev&lt;/li&gt;&#xA;&lt;li&gt;libmpfr-dev&lt;/li&gt;&#xA;&lt;li&gt;texinfo&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Cross-Compiler&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;git clone https://github.com/lordmilko/i686-elf-tools&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;cd i686-elf-tools&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;./i686-elf-tools.sh linux&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;using-manjaro-vm&#34;&gt;Using Manjaro VM&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Dependencies&#xA;&lt;ul&gt;&#xA;&lt;li&gt;GCC (existing release you wish to replace), or another system C compiler&lt;/li&gt;&#xA;&lt;li&gt;G++ (if building a version of GCC &amp;gt;= 4.8.0), or another system C++ compiler&lt;/li&gt;&#xA;&lt;li&gt;Make&lt;/li&gt;&#xA;&lt;li&gt;Bison&lt;/li&gt;&#xA;&lt;li&gt;Flex&lt;/li&gt;&#xA;&lt;li&gt;GMP&lt;/li&gt;&#xA;&lt;li&gt;MPFR&lt;/li&gt;&#xA;&lt;li&gt;MPC&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Download gcc and bin-utils to src and make them&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h1 id=&#34;booting-the-operating-system&#34;&gt;Booting the Operating System&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The bootloader, such as GRUB, used to start/load the operating system.&lt;/li&gt;&#xA;&lt;li&gt;The operating system needs to handle when the bootloader passes control to it.&lt;/li&gt;&#xA;&lt;li&gt;The kernel is passed a very minimal environment where the stack is not yet setup.&lt;/li&gt;&#xA;&lt;li&gt;Because there is no stack yet, we must make sure global variables are set correctly.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;This is done in assembly&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h1 id=&#34;bootstrap-assembly&#34;&gt;Bootstrap Assembly&lt;/h1&gt;&#xA;&lt;p&gt;&lt;code&gt;i686-linux-gnu-as boot.s -o boot.o&lt;/code&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
