
Analyzing Bootkit And Rootkit Samples
Walk through MBR/VBR/UEFI bootkit and kernel-rootkit analysis when compromise survives OS reinstall and user-mode tools miss it.
Install
npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill analyzing-bootkit-and-rootkit-samplesWhat is this skill?
- Covers boot sector (MBR/VBR) and UEFI firmware module analysis workflows
- Maps to pre-OS persistence that survives disk wipe and OS reinstall
- Calls out UEFITool, chipsec, and disk imaging prerequisites for sector acquisition
- Includes anti-rootkit and memory-forensics angles for hidden processes and syscall hooks
- Scoped to advanced threats (e.g. APT-style bootkits)—not standard user-mode samples
Adoption & trust: 1 installs on skills.sh; 14.9k GitHub stars; 2/3 security scanners passed (skills.sh audits); trending (+100% hot-view momentum).
Recommended Skills
Azure Compliancemicrosoft/azure-skills
Openclaw Secure Linux Cloudxixu-me/skills
Entra Agent Idmicrosoft/azure-skills
Firebase Security Rules Auditorfirebase/agent-skills
Firestore Security Rules Auditorfirebase/agent-skills
Skill Vetteruseai-pro/openclaw-skills-security
Journey fit
Common Questions / FAQ
Is Analyzing Bootkit And Rootkit Samples safe to install?
skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.
SKILL.md
READMESKILL.md - Analyzing Bootkit And Rootkit Samples
# Analyzing Bootkit and Rootkit Samples ## When to Use - A system shows signs of compromise that persist through OS reinstallation - Antivirus and EDR are unable to detect malware despite clear evidence of compromise - UEFI Secure Boot has been disabled or shows integrity violations - Memory forensics reveals rootkit behavior (hidden processes, hooked system calls) - Investigating nation-state level threats known to deploy bootkits (APT28, APT41, Equation Group) **Do not use** for standard user-mode malware; bootkits and rootkits operate at a fundamentally different level requiring specialized analysis techniques. ## Prerequisites - Disk imaging tools (dd, FTK Imager) for acquiring MBR/VBR sectors - UEFITool for UEFI firmware volume analysis and module extraction - chipsec for hardware-level firmware security assessment - Ghidra with x86 real-mode and 16-bit support for MBR code analysis - Volatility 3 for kernel-level rootkit artifact detection - Bootable Linux live USB for offline system analysis ## Workflow ### Step 1: Acquire Boot Sectors and Firmware Extract MBR, VBR, and UEFI firmware for offline analysis: ```bash # Acquire MBR (first 512 bytes of disk) dd if=/dev/sda of=mbr.bin bs=512 count=1 # Acquire first track (usually contains bootkit code beyond MBR) dd if=/dev/sda of=first_track.bin bs=512 count=63 # Acquire VBR (Volume Boot Record - first sector of partition) dd if=/dev/sda1 of=vbr.bin bs=512 count=1 # Acquire UEFI System Partition mkdir /mnt/efi mount /dev/sda1 /mnt/efi cp -r /mnt/efi/EFI /analysis/efi_backup/ # Dump UEFI firmware (requires chipsec or flashrom) # Using chipsec: python chipsec_util.py spi dump firmware.rom # Using flashrom: flashrom -p internal -r firmware.rom # Verify firmware dump integrity sha256sum firmware.rom ``` ### Step 2: Analyze MBR/VBR for Bootkit Code Examine boot sector code for malicious modifications: ```bash # Disassemble MBR code (16-bit real mode) ndisasm -b16 mbr.bin > mbr_disasm.txt # Compare MBR with known-good Windows MBR # Standard Windows MBR begins with: EB 5A 90 (JMP 0x5C, NOP) # Standard Windows 10 MBR: 33 C0 8E D0 BC 00 7C (XOR AX,AX; MOV SS,AX; MOV SP,7C00h) python3 << 'PYEOF' with open("mbr.bin", "rb") as f: mbr = f.read() # Check MBR signature (bytes 510-511 should be 0x55AA) if mbr[510:512] == b'\x55\xAA': print("[*] Valid MBR signature (0x55AA)") else: print("[!] Invalid MBR signature") # Check for known bootkit signatures bootkit_sigs = { b'\xE8\x00\x00\x5E\x81\xEE': "TDL4/Alureon bootkit", b'\xFA\x33\xC0\x8E\xD0\xBC\x00\x7C\x8B\xF4\x50\x07': "Standard Windows MBR (clean)", b'\xEB\x5A\x90\x4E\x54\x46\x53': "Standard NTFS VBR (clean)", } for sig, name in bootkit_sigs.items(): if sig in mbr: print(f"[{'!' if 'clean' not in name else '*'}] Signature match: {name}") # Check partition table entries print("\nPartition Table:") for i in range(4): offset = 446 + (i * 16) entry = mbr[offset:offset+16] if entry != b'\x00' * 16: boot_flag = "Active" if entry[0] == 0x80 else "Inactive" part_type = entry[4] start_lba = int.from_bytes(entry[8:12], 'little') size_lba = int.from_bytes(entry[12:16], 'little') print(f" Partition {i+1}: Type=0x{part_type:02X} {boot_flag} Start=LBA {star