промежуточный драйвер поверх устройства VPN

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

  1. promtpol

    promtpol New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2008
    Сообщения:
    60
    Через драйвер должен идти трафик соединения VPN. Как я понял VPN client создает свое устройство, через которое и идет это виртуальное соединение. Как мне на это устройство посадить свой промежуточный драйвер? Или может я в чем ошибаюсь?
     
  2. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    promtpol
    Посмотри, какое устройство в ядре создает VPN client, создай свой device_object и приаттачить его к стеку этого устройства. IM драйвер здесь не нужен
     
  3. promtpol

    promtpol New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2008
    Сообщения:
    60
    Но мне то надо получать пакеты и записывать куданить на диск
     
  4. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    promtpol
    А что тебе мешает? :)))
    Тебе нужно либо аттачиться к нужному device_object твоего VPN-клиента, либо перехватывать некоторые функции Ndis.
     
  5. promtpol

    promtpol New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2008
    Сообщения:
    60
    то есть какой драйвер мне нужен чтоб приаттачиться к этому устройству?
    перехватывать функции не пойдет
     
  6. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    Для контроля / перехвата сетевого трафика нужен фильтр таких устройств - \\device\\tcp, \\device\\ip \\device\\rawip, \\device\\udp (в зависимости от того, что тебе нужно).
    Создаешь свое устройство IoCreateDevice, получаешь ссылку на то устройство, к которому хочешь приаттачиться, а затем вызываешь IoAttachDeviceToDeviceStack. Вызов IoAttachDeviceToDeviceStack поместит твой фильтр на вершину стека.
    После этого, все IRP-пакеты, предназначенные для фильтруемого устройства, будут проходить через твой фильтр. Тебе останется только написать функцию фильтра пакетов.
     
  7. promtpol

    promtpol New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2008
    Сообщения:
    60
    Но чтобы фильтр работал надо чтоб еще он выполнял все,что выполняет драйвер устройства,к которому аттачимся. Это я как узнаю?
     
  8. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    promtpol
    Фильтру вовсе не обязательно наследовать всю функциональность того устройства, к которому он подключается.
    Ему достаточно перехватывать и анализировать IRP-пакеты, передаваемые девайсу,
    а они для всех устройств одинаковые, обычно перехватвается MajorFunction IRP_MJ_INTERNAL_DEVICE_CONTROL.
     
  9. promtpol

    promtpol New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2008
    Сообщения:
    60
    В общем необходим драйвер-фильтр,который создает устройство,цепляющееся к устройству создаваемому VPN и будет получать все Irp пакеты идущие на это устройство?А VPN client то получит эти пакеты и передаст дальше?Он ведь шифрует данные, я ведь не могу за него это делать
     
  10. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    Именно так
    В этом и есть главная проблема. Так как шифрование происходит в юзермоде, вниз по стеку к сетевой карте пакет будет уходить уже зашифрованным. И перехват пакета в ядре тебе не поможет.
     
  11. promtpol

    promtpol New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2008
    Сообщения:
    60
    ну вообще Ethereal или TcpDump все перехватывают в незашифрованном виде. как так? Или они тоже типа в юзер-моде? чето не кажется
     
  12. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    promtpol
    ethereal при перехвате SSL-трафика, насколько я помню, действует по принципу "MITM", т.е. путем подмены SSL-сертификата, насчет TcpDump не знаю, не копался
     
  13. promtpol

    promtpol New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2008
    Сообщения:
    60
    То есть получается что драйвером не получится перехватить в незашифрованном виде?Как тогда можно?
     
  14. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    Перехватывай функции Winsock в юзермоде - что-то типа HttpSendRequest и пр., т.е. пока данные не зашифрованы, либо если речь идет о перехвате веб-форм - подсовывать браузеру BHO (что очень палевно и не есть гуд)
     
  15. promtpol

    promtpol New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2008
    Сообщения:
    60
    Но мне кажется в юзер моде без палева ничего не перехватишь, даже каспер будет вякать
     
  16. WIN32

    WIN32 Member

    Публикаций:
    0
    Регистрация:
    20 янв 2007
    Сообщения:
    338
    нужно ресерчить клиент, ищи фунцию инкапсуляции в ipsec пакет, перехватывай функцию. В ядре ( если инкап. реадизовано в ринг 3 ) перехватывать безтолку.

    А если там свой стек ?
     
  17. promtpol

    promtpol New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2008
    Сообщения:
    60
    Но ведь все таки насколько я знаю,VPN реализует свой промежуточный драйвер,который и шифрует и дешифрует трафик. И еще,у меня Vpn client от Cisco.Может он как то не так работает?
     
  18. WIN32

    WIN32 Member

    Публикаций:
    0
    Регистрация:
    20 янв 2007
    Сообщения:
    338
    Ещё раз говорю, надо смотреть. Быть может он юзает IPSEC виндовый вообще, кто его знает. Криптовать он может и на уровне ndis im.
    Ты попробуй для начала приаттачится к устройству и глянуть что идет в IRP пакетах.
    Вопрос: зачем тебе это надо?
     
  19. promtpol

    promtpol New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2008
    Сообщения:
    60
    мне надо сделать курсовую,где будет реализована какая-нибудь атака на VPN client.Это хоть и не атака,но для какой-нибудь узкой задачи подойдет.Тем более не так уж просто.Для 4курса пойдет:) Так что за помощь очень признателен.
     
  20. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    WIN32 подкинул неплохую идею - насчет реверса VPN-клиента и перехвата функции инкапсуляции пакета