Как Firewall определяет запись в чужой процесс?

Тема в разделе "WASM.WIN32", создана пользователем ratix, 13 окт 2005.

  1. MegaZu

    MegaZu New Member

    Публикаций:
    0
    Регистрация:
    22 июл 2005
    Сообщения:
    290
    davaeron



    Ты проверял ?)
     
  2. davaeron

    davaeron New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2005
    Сообщения:
    24
    Адрес:
    Russia


    Нет, но работать будет. NDIS хучат: NetOp+ZoneAlarm это точно.



    Подождите с SDT-Restore и прочей галиматней... рано еще, очень рано =)

    Даешь ring-3 brains2brains =)



    По поводу обхода WriteProcessMemory в Outpost'e:

    блин, ну нахрена выдумывать 16 байт... ля-ля-ля, е-мое...

    в принципе можно разбить код на блоки по 16 байт и заливать по очереди, но лучше...



    все очень просто: открываем процесс, ищем его PEB-адрес, зовем VirtualProtectEx на адрес PEB процесса с параметром PAGE_EXECUTE_READWRITE, например, потом зовем WriteProcessMemory на адрес PEB+230h (sizeof PEB of 2k3) и потом запускаем - все работает! (у меня по крайней мере - ок; XP SP2, версия Outpost Firewall Pro ver. 3.0.543.5722 (431)), а по поводу места: для PEB выделяется страница памяти (4096 байт обычно), минусуем отсюда максимальный PEB (230h) и получаем 3536 байт свободного места =)



    Дело в том что Outpost проверяет куда мы пишем, а PEB процесса - не сам процесс; насколько я помню (память, надеюсь ни с кем не загугляла :) система сама его создает, сама туда пишет + драйверы тоже могут туда писать (что-то подобное было в концепте The Chameleon Project от Джоанны Рутковской, там был предложен метод взаимодействия драйвера руткита с ring-3 приложением через PEB.ProcessParameters.Std* поля).



    Танки сегодня идут к Four-F, 90210 и Ms-Rem =)
     
  3. Stub

    Stub New Member

    Публикаций:
    0
    Регистрация:
    11 май 2004
    Сообщения:
    311
    Адрес:
    Siberia


    Хы, способ довольно интересный, но нерабочий :dntknw:. Проверено на Outpost Firewall Pro ver. 3.0.543.5722 (431) как раз. Не знаю что ты там накодил, было бы любопытно посмотреть...
     
  4. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"




    Ага, методов обхода фаерволла без ринг0 еще предостаточно можно придумать.



    Подсказка: ответ ищите в работе механизма создания процесса, истина где-то рядом :)

    Кто поймет этот механизм в деталях, тому фаерволлы не будут помехой.



    З.Ы. только готовое решение этой проблемы лучше не публиковать.
     
  5. MiraclE

    MiraclE New Member

    Публикаций:
    0
    Регистрация:
    10 авг 2005
    Сообщения:
    38
    Адрес:
    Kazakhstan
    насколько я знаю,Outpost устанавливает LoadImage и CreateProcess Notify routine при вызове этих процедур заполняется внутренняя структура на каждый процесс или загруженный модуль,а в хуке WriteVirtualMemory PID процесса(насколько я помню) сравнивается с PID ом каждого из процессов во внутренней бд файера,и если он в базе отсутствует то запись проходит без проблем.Ну и все дело заключается в обходе вызова NotifyRoutine :).

    поправьте меня если я не прав.
     
  6. Saint German

    Saint German New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2003
    Сообщения:
    222
    MiraclE

    Ага, так и есть, хотя это не все что надо сделать,

    но ищи информацию об этих колбеках в моем каком-то посте, если у тебя есть небольшой опыт, то ты разберешься сам, но конечно свой драйвер нужно грузить до установки кем-либо этих колбеков, удачи:)
     
  7. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"


    Ну не обязательно, можно просто перечислить кадбеки и удалить их. Но это по разному делается в виндовс2000 и ХР.



    Да и смысла в таком обходе фаера я не вижу, в ринг0 легко напрямую писать в память любого процесса.

    Здесь кажется ищут способ не требующий использования драйверов.

    Такой способ есть, искать его надо в механизме создания процесса.
     
  8. Saint German

    Saint German New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2003
    Сообщения:
    222
    davaeron

    Поздравляю вас соврамши:) дядька коровьев

    Hooked NdisCloseAdapter at F6C4B6A0

    Hooked NdisDeregisterProtocol at F6C4B5C0

    Hooked NdisIMRegisterLayeredMiniport at F6C4B8D0

    Hooked NdisMRegisterMiniport at F6C4B880

    Hooked NdisOpenAdapter at F6C4B610

    Hooked NdisRegisterProtocol at F6C4B560

    filtnt!PlugInInitCallback + 4250 = F6C4B6A0

    filtnt!PlugInInitCallback + 4170 = F6C4B5C0

    filtnt!PlugInInitCallback + 4480 = F6C4B8D0

    filtnt!PlugInInitCallback + 4430 = F6C4B880

    filtnt!PlugInInitCallback + 41c0 = F6C4B610

    filtnt!PlugInInitCallback + 4110 = F6C4B560



    Еще и NDIS Intermediate Driver есть.



    Фильтры на .

    \Device\RawIp,

    \Device\Udp,

    \Device\Tcp и др.



    еще и IpFilterDriver



    так еще тут один дядька сказал, что

    есть связь между TDI-пакетами, которых "нет"

    и NDIS-пакетах, что есть. Т.е. не было TDI пакета, значит NDIS-вредный, и дропнуь его.



    Ну не обязательно, можно просто перечислить кадбеки и удалить их. Но это по разному делается в виндовс2000 и ХР.

    Удалять эти калбеки не нужно! Заметно ведь будет, а вот

    обрабатывать PsSetCreateProcessNotifyRoutine и др.

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



    Танки сегодня идут к Four-F, 90210 и Ms-Rem =)

    танки едут в свои танковые гаражи, смотрят колыбельную

    и ложатся спать.