Перейти к содержимому
Максиметер

🐚 40 байт, которые поднимают шелл: пишем shellcode на чистом ARM64 ассемблере

🐚 40 байт, которые поднимают шелл: пишем shellcode на чистом ARM64 ассемблере Привет, дорогой читатель! 👋 Сегодня спустился на самое дно - туда, где нет ни Python, ни фреймворков, ни даже libc. Только ты, процессор и системные вызовы. Писал shellcode под ARM64 на голом ассемблере, и рассказываю, как это было 🔧💣 Зачем вообще ассемблер в 2026? 🤔 Затем же, зачем пентестеру понимать, что происходит под капотом. Когда эксплойт должен уместиться в 40 байт и не содержать ни одного нулевого байта - абстракции заканчиваются. Начинается магия регистров. Ступень 1: Hello, PWNED 👋 Программа из двух сисколлов: write и exit. Без единой библиотеки. Возвращает код 66 (0x42 - ответ на главный вопрос жизни, вселенной и всего такого 😄). Кажется ерундой? А вот нет: это момент, когда понимаешь, что программа может говорить с ядром напрямую. Ступень 2: execve("//bin/sh") - 40 байт чистого зла 😈 Классический shellcode: никаких строк в памяти, строка собирается инструкциями movk по 16 бит прямо в регистре. Нулевых байтов - ноль. Это важно: один \x00 - и payload умирает в любом строковом буфере. Грабли, на которые наступил (чтобы вы не наступали): 🔸 svc #0 содержит нулевые байты в опкоде → юзаем svc #0xffff, ядру всё равно, а нам чисто 🔸 mov x0, sp - тоже с нулём → обход через add x0, sp, xzr 🔸 little-endian кусается: перепутал порядок байт в слове "n/" - получил //bi/nsh вместо //bin/sh 😅 Ступень 3: Bind shell по сети 🌐 Финальный босс: socket → bind → listen → accept → dup3×3 → execve. Шелл, поднимающийся через nc 127.0.0.1 4444. Спойлер для портировщиков с x86: на ARM64 нет сисколла dup2 - только dup3. Кто знал - тот вооружен. Что в итоге? ✅ Полный цикл shellcode-девелопмента: разминка → шеллкод → сетевой шелл ✅ Всё протестировано нативно на aarch64 ✅ Понимание, почему shellcode - это искусство, а не копипаста из интернета Всё делалось на локальной лабораторной VM. Educational only, друзья - ломайте только своё! ⚠️

5 просмотров

Канал в каталоге Максиметера

323 подписчиков · IT и технологии

Читать дальше

Два раза в неделю свежие посты этого канала — на почту и в личную ленту. Без повторного поиска канала вручную.