2009-10-07 27 views
26

El sujeto lo dice todo. Un antivirus normal debe interceptar todos los accesos de archivos, escanear los archivos y luego, de forma opcional, denegar el acceso al archivo (posiblemente incluso mostrando un mensaje al usuario). ¿Cómo puede hacerse esto?¿Cómo se conecta un antivirus de Windows al proceso de acceso al archivo?

Conozco un método llamado API de enganche, pero ese es un hack indocumentado realmente sucio, y como tal no es realmente confiable. ¿Cuál es la forma "oficial" de hacer esto?

Alternativamente, me interesaría interceptar la carga de módulos ejecutables (.DLL, .EXE, etc.), no solo lecturas arbitrarias de archivos.

+0

Depende de la versión de Windows en juego. Descubrirá que hacen muchas cosas no compatibles, especialmente en versiones anteriores de Windows. Creo que las versiones más nuevas tienen una API ... pero no estoy familiarizado con ella, así que dejaré que otros respondan. –

+8

Hay una delgada línea entre "virus" y "antivirus". Hacen muchos de los mismos trucos sucios para hacer su trabajo. –

+2

Nunca antes había trabajado en el software Anivirus, pero supongo que están implementados como un [Controlador de filtro del sistema de archivos] (http://msdn.microsoft.com/en-us/library/windows/hardware/gg462968.aspx) – vcsjones

Respuesta

28

En las versiones recientes de Windows XP (por lo menos en adelante) hay los filtros '' concepto que se pueden ver usando MS Administrador de filtros, (fltmc.exe desde un símbolo del sistema)

Esto proporciona un bajo nivel E/S hook que los programas AV pueden acceder y registrarse automáticamente para pasar todas las solicitudes de E/S al sistema de archivos. Es un kit para obtener los controladores para desarrollar sus propios filtros.

http://www.microsoft.com/whdc/driver/filterdrv/default.mspx es un punto de partida para obtener información detallada.

+0

¿Hay alguna otra aplicación de controlador de filtro implementada en Windows (excepto red y sistema de archivos)? – Davita

10

Como ya ha señalado, el enganche es la clave de lo que el software de AV con protección "en tiempo real" hace.

Puede echarle un vistazo al winpooch (ampliamente discutido), que ya hace API Hooking, , pero hay algunos defectos importantes en este software. Sourceforge of Winpooch

También hay un artículo sobre Codeproject sobre API hooking, proporcionando alguna biblioteca para enganchar "en tres capas". Inyección Dll es algo difícil, como puede imagen. CodeProject: EasyHook, reinvention of API Hooking

Como probablemente interesados ​​en las estrategias de antivirus, pero pienso que deben tener un vistazo a ClamAV, o WinClam, que es de código abierto (bajo licencia GPL) ClamAV for windows

pero no tienen ni idea de cómo hacerlo API enganchar con C#, tengo que admitirlo. En C/C++ esto es (bastante) fácil ...

ADD ON Usted puede estar interesado en las fuentes de FileMon, un ampliamente conocido Monitor de sistema de archivos que fue una vez por SysInternals y ahora por Microsoft: Se usa la API Driver-Filter de Microsoft, que al menos se conoce como frágil.

Link may be found here in Sysinternals forum

+0

Buenas ideas sobre: ​​FileMon. La ironía es que la uso, pero ni siquiera pensé en eso. Estoy leyendo sus otros enlaces ahora – Basic

3

Usted puede leer acerca de the detours library de Microsoft y probar de forma gratuita - que le permite escribir ganchos modo de usuario en C#. No hay necesidad para que usted aprenda acerca de los controladores:]

Sin embargo - para los ganchos modo kernel - usted necesitará saber c y jugar con el DDK - al menos que yo sepa: [

y más modernos antivirus de intercepción de software bastantes llamadas - apis de registro, apis de proceso y de hilo, etc. - no solo la API del sistema de archivos. Nuevamente, afaik.

editar: También hay unos pocos rootkits de código abierto: googlearlos y ver cómo realizan su enganche, será educativo, supongo.

+0

Gracias por la información en la biblioteca de desvíos - Estoy leyendo ahora y la buena sugerencia es: rootkits – Basic

+0

"DDK" - ¿Estoy asumiendo Driver Dev Kit? No puedo ver nada en google (pero encontré el WDK - Kit de controladores de Windows) – Basic

+1

Vaya, mi mal. Solía ​​ser el DDK hace mucho tiempo. Tienes razón, es el kit del controlador de Windows. – quixver

4

El acceso al archivo se supervisa mediante filesystem filter driver, que funciona en modo kernel. Los controladores de filtro no solo reciben notificaciones sobre las operaciones del sistema de archivos, sino que modifican los datos que pasan a través de filtros o rechazan las solicitudes del sistema de archivos.

Puede crear un minifiltro usted mismo, sin embargo, el mantenimiento y el soporte de su código en modo kernel pueden no ser triviales, especialmente sin la experiencia de desarrollo en modo kernel. Uno de los problemas son los conflictos entre varios filtros.

Nuestra empresa ofrece el producto CallbackFilter, que proporciona un controlador listo para usar y le permite escribir lógica comercial, relacionada con el filtrado, en modo de usuario.

3

En general, estos productos interceptan funciones para obtener un MANGO a un proceso como OpenProcess o NtOpenProcess. También, enganchan las funciones CreateRemoteThread y la asignación de memoria en un proceso remoto: VirtualAlloc y VirtualProcect. Algunos AV también enganchan la función SetWindowsHookEx para detectar ganchos globales para evitar key loggers.

Al conectar estas API, pueden controlar qué módulos (o dlls) pueden acceder a procesos remotos y solo permiten que el usuario sepa lo que están haciendo.

Puede usar HookShark para ver qué funciones de modo de usuario son interceptadas por cada producto AV.

Para hacer sus propios enganches de usuario puede usar la biblioteca de desvíos, pero debe desarrollar un agente para ejecutar los enganches en proceso y luego comunicarse con un servidor de agente. También puede usar Deviare API Hook que es un marco que hace que todo el personal complejo pueda codificar sus ganchos en su propio proceso utilizando cualquier lenguaje de programación.

Cuestiones relacionadas