Защита Процесса.

Тема в разделе "WASM.BEGINNERS", создана пользователем DeKrant, 24 апр 2009.

  1. DeKrant

    DeKrant New Member

    Публикаций:
    0
    Регистрация:
    24 апр 2009
    Сообщения:
    7
    Доброго времени суток.
    Собственно возник вопрос,как защитить процесс от воздействия из вне?
    Опишу ситуацию более конкретно.
    Есть программа клиент(с закрытым кодом).
    Нужно зашифровать соеденинения с сервером,и запретить перехват функций send() recv().
    С первой частью задачи справился.
    А как быть со второй?Запретить "зловредным" программа а-ля art money\wpe\rpe\ и прочим получать доступ к процессу?
    Конечно главная задача - это запретить перехват траффика сниферами.
    За любую информацию буду благодарен.
     
  2. ntcdm

    ntcdm New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2007
    Сообщения:
    247
    Посмотри на протекторы типа Themida или VMProtect
     
  3. DeKrant

    DeKrant New Member

    Публикаций:
    0
    Регистрация:
    24 апр 2009
    Сообщения:
    7
    Не много не то...
    Я интересовался как реализовать,а не чем ;)
    Есть и так куча защит а-ля GameGuard,HShield...По какому принципу они работают.
     
  4. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Интересно как вы это реализовали ?
    Замена секций ?
    А если хардварные точки останова использовать или трассировать к примеру ?
     
  5. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Вот например код:
    Код (Text):
    1.     Call ProtectCurrentPage
    2.     Call ValidataCodeChecksum -> exit
    3.     Call IsTracerActive -> exit
    4.     [...]
    5.     Call dword ptr ds:[XXXX]
    6.     [...]
    7.     Call send
    8.     [...]
    Или так:
    Код (Text):
    1.     Call ProtectCurrentPage
    2.     Call ValidataCodeChecksum -> exit
    3.     Call IsTracerActive() -> exit
    4.     [...]
    5.     mov ebx,dword ptr ds:[XXXX]
    6.     [...]
    7.     mov eax,dword ptr [ebx]
    8.     [...]
    9.     Call send
    10.     [...]
    Если не лезть в ядро, чисто из юзермода - как отловить вызов send() ?
    Очень просто - в первом случае в ds:[XXXX] мы запишем свой обработчик, который дотрассирует до куда нужно и снимет лог. Или изменим селектор так, чтоб заюзался наш код.
    Во втором случае - мы запишем в ds:[XXXX] невалидный адрес, обработаем исключение и выполним трассировку.
    Если вы делаете такую манипуляцию. Разбили функцию условно на два блока:
    Код (Text):
    1. send:
    2.     [Macro1]
    3. send2:
    4.     [...]
    И юзается у себя в коде первый блок, далее второй в send2 - будем трассировать до send2 :)
    Про хардварные точки останова даже говирить нечего.
     
  6. SashaTalakin

    SashaTalakin New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    261
    Если реализовано первое то зачем вам второе? Это уже бессмысленно. Впрочем оно не много смысла имеет и без реализации первого. send()/recv() это так сказать верхушка айсберга, есть сотня ступеней ниже, где можно втюхнуть свой перехватчик трафика. Кроме того есть еще сеть, там сниферы вообще к вашему компьютеру отношения не имеют.

    Так что у вас задача не в том чтобы send()/recv() перехватить, а в том чтобы защитить ваш шифровальщик/дешифровальщик от реверсинга (закрытый/секретный ключ чтобы не узнали ну и алгоритм шифрации)

    Научишь шифровать соединение "заменой секций"?
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    SashaTalakin
    Да, я это умею и надеюсь не только я. Проекция модуля заменяется на приватные секции http://files.virustech.org/indy/Code/PsProtectImage/
    И я тебя прошу не пости свои дурацкие смайлы, пока по хорошему.)
     
  8. SashaTalakin

    SashaTalakin New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    261
    Не перехватить т.е. а "защитить". Where the fuck is edit button??
     
  9. SashaTalakin

    SashaTalakin New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    261
    Ты таки странный.

    Еще раз:
     
  10. DeKrant

    DeKrant New Member

    Публикаций:
    0
    Регистрация:
    24 апр 2009
    Сообщения:
    7
    Хм...Прошу прощения,забыл указать язык.С++. :)
    Теме конечно место в С++ программировании,но я ещё новичок и что бы не обрушить на себя кучу матов запостил её тут.Ещё раз извиняюсь.
    Инъекция в процесс,API перехват функций.
    Использовал Deterous.
    Вы не правы...Точнее возможно и правы,но ко мне не подходит.
    Объясняю.
    Есть пакет использовать умение А на цель Б.
    Клиент,не позволяет сам по себе слать пакеты со скорость 1000000 в миллисекунду(образно).Но есть ведь чудо штука под название Winsocket Packet Editor.(WPE)(к примеру).Она перехватывает наш шифрованый пакет,и сервер его отлично обрабатывает.Конечно можно уже на стороне сервера,реализовать антифлуд пакетами,но хочется это сделать именно на стороне клиента.
    Хм...Если можно поподробнее.
    @back to topic:
    И всё же как можно защитить процесс скажем от банальной инъекции DLL?Не используя глобальный hook к kernel32.dll.
     
  11. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    DeKrant
    Деторус - это гуано полное. Есть множество способов эффективной защиты и очень эффективной, но это слишком обширный вопрос чтобы его описывать тут. Поищите тут на сайте вначале.
     
  12. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    653
    Можно чуть-чуть поподробнее?
    Мне необходимо просто перехватить функцию recv в одном приложении X. Я в этом деле новичок, тернируюсь пока на аське, перехватываю в ней recv. Успешно или нет- говорит пока рано, ещё дорабатываю пока проект перехвата.

    А в приложении X много труднее будет перехватить recv. Я не вникал в него ещё, но предназначение этого предположения ИМЕННО предполагает борьбу с перехватом этой функции. И если я с этим столкнусь, придётся мне трафик по-другому перехватывать. Хотелось бы про ступени ниже чуть-чуть услышать. Ключевые слова там, ещё что-нибудь. Спасибо.
     
  13. SashaTalakin

    SashaTalakin New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    261
    Честно ничего не понял. Если в вашем первом посте какая-то задача ставится достаточно распространенная и адекватная то дальше я напр. вообще не понимаю о чем вы. Может отупел малость sorry :))
    Ну во-первых даже если ваше приложение никак не защищается от перхвата трафика совсем необязательно что оно использует функции recv/send. Про более низкие уровни, ок ключевые слова такие: TDI фильтры, NDIS фильтры, NDIS intermediate драйвер. Ну это скажем документированные способы. Есть еще недокументированные такие как перехват ы всяких ядерных функций или там подмена IRP коллбеков, замена системных сервисов (тут еще свое поддерево способов), которые дергаются при работе send/recv и т.д. Вообщем вар-тов очень много
     
  14. DeKrant

    DeKrant New Member

    Публикаций:
    0
    Регистрация:
    24 апр 2009
    Сообщения:
    7
    Эм...Ну скажем так ушёл от топика.Sorry :)
    Почему же?
    ТоварисЧ Рихтер Рекомендует его.Да и если вы правы,предложите альтернативу.
    sry 4 offtopic.
    Да смотрел...Скрытие процессов например?Или я что то упустил?
     
  15. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    DeKrant
    Кому он его рекоминдует ?
    Чего предлагать то, поиск заюзай. Читале пост #5, или я для себя пишу. Деторус - что там сплайсинг.. фтопку.
    Нужно хотябы прочитать что написано, а потом вопросы задавать, эти дурацкие.)
     
  16. DeKrant

    DeKrant New Member

    Публикаций:
    0
    Регистрация:
    24 апр 2009
    Сообщения:
    7
    Clerk
    Хм...Дельный совет.В вашем посте номер 5,написан код ассемблера.
    Я же писал в посте номер 10.
    Я конечно понимаю что асеммблер мать и отец всего и вся.
    Но пока мне нужно не всего и вся,а только 1 пункт.
     
  17. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    DeKrant
    Тоесть как обычно, "дайте код.." ?
     
  18. DeKrant

    DeKrant New Member

    Публикаций:
    0
    Регистрация:
    24 апр 2009
    Сообщения:
    7
    Нет не в коем случае.
    Я бы сказал дайте наводку,для создания кода под MS visual C++.
    Задачу описал выше(защитить процесс X от любых припадок из вне).
    Вы сказали что Detours не айс для перехвата API.Ну чтож посоветуйте что нибудь другое.
    Я не отказываюсь от помощи.
    Я прекрасно понимаю что любой серьёзный продукт пишется как миниуму при участии ассемблера.Но увы и ах,познание мира програмирования я начал не с него,как будет возможность обязательно займусь.
     
  19. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Если трафик защифрован, зачем вообще предотвратить перехват send\recv ? Вить туда уже передаются шифрованные данные..
    Если не в курсе, трафик можно перехватить и через скниффер, без хука данных апи в конкретном прилажении..
     
  20. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Flasher
    Если не в курсе то трафик можно перехватить без хука любой апи, врезавшись в сетевой кабель. Думаю смысл понятен.