ksk icann dnssec dns winsock winsock-lsp

ksk - icann dnssec key rollover



¿Es posible interceptar consultas DNS usando LSP/SPI? (2)

Hemos desarrollado un LSP que puede "interceptar" las consultas DNS. La única forma de hacerlo es conectando todas las funciones de DNS, tenga en cuenta que hay algunos desafíos que debe resolver:

  1. Necesita utilizar una buena biblioteca de enlaces que admita códigos de 32 bits y de 64 bits.
  2. La licencia de la biblioteca debe ser adecuada para su aplicación, existen algunas bibliotecas gratuitas, pero se pueden usar libremente solo con proyectos gratuitos.
  3. Cuando enganche las funciones, debe asegurarse de no modificar ciertos valores que no están basados ​​en IP y diferir la consulta a la función real.

La interceptación de UDP no funcionará ya que las consultas se realizan desde el cliente de MS DNS, por lo tanto, a menos que escriba un controlador de bajo nivel como: TDI, NDIS o WFP, debe conectar las funciones (o escribir un NSP). NSLookup funciona para usted porque crea las consultas DNS por sí mismo.

Escribí mi propio LSP que funciona bien. Sin embargo, no puedo ver las consultas de dns. Por ejemplo, no hay ninguna función como WSPGetHostByName o WSPGetAddrInfo.

Mi lsp también es compatible con el protocolo UDP pero no funciona. Si ejecuto nslookup desde la consola (cmd.exe) parece funcionar, pero no puedo capturar gethostbyname. ¿Alguien sabe cómo hacer eso? No creo que escribir NSP (Name Service Provider) sea una solución. Pero podría estar equivocado.

Gracias


Mi solución sería la siguiente:

  1. Tome el navegador web conocido: firefox.exe

  2. copiarlo en un nuevo nombre: icefoxy.exe

  3. modifique el EXE para que cargue una DLL personalizada.

Ya lo hice hace unos meses, pero dado que Firefox constantemente está recibiendo actualizaciones, eso significa:

O BIEN: conserve una versión y no la actualice (bajo su propio riesgo, puede causar problemas de seguridad ya que eso significa que las vulnerabilidades no serán corregidas)

O bien, actualice su modificación cada vez que cambie firefox.exe.

La DLL se puede escribir fácilmente usando Delphi.

La modificación de Firefox necesita lenguaje ensamblador, a menos que sepa cómo descargar todos los archivos necesarios para compilar Firefox usted mismo, tener acceso a un compilador C / C ++ (probablemente mingw-gcc), y estar preparado del hecho de que hay 2 estándares mutuamente exclusivos de C ++, y si tu g ++ (parte del paquete gcc) es incompatible con tu fuente de Firefox, entonces tu intento fallará.

Yo no soy un experto en C ++, así que tomé la ruta (por lo menos) más fácil usando el lenguaje de máquina, así no necesito ser un experto en C / C ++ para hacer el trabajo.

Algunos puntos relativos:

  1. ¿Qué funciones deben engancharse para interceptar todo el acceso de Firefox a los servidores DNS?

  2. Me di cuenta de que si carga una DLL de Delphi en Icefoxy.exe (una copia renombrada de Firefox.exe), faltan los colores de un formulario Delphi, por ejemplo. si establece (ya sea en el objeto ispector o en el código):

Label1.Color: = clLime;

aún se ve una etiqueta sin color de fondo lima. No sé la razón exacta, pero parece que Delphi VCL se basa en un EXE, y cuando se utilizan componentes Delphi VCL dentro de un DLL en lugar de un EXE, algunas cosas (como el color) no funcionan como se esperaba .

Me gustaría publicar mi código (tanto las modificaciones del lenguaje de ensamblaje a Firefox como el código fuente de la DLL de Delphi), pero ¿cómo / dónde puedo publicarlo para que se pueda ver públicamente?

Usé Delphi 7 para hacer el DLL.

si utiliza Delphi 2009 o posterior, debe tener especial cuidado de que los datos de cadena entre el código Delphi y cualquier código que no sea Delphi tengan la codificación correcta, debido al hecho de que en Delphi 2009 y todas las versiones más recientes, el tipo String es un alias a unicodestring, donde en versiones anteriores de Delphi, el tipo String es un alias de AnsiString.

En el momento en que hice esto, fue solo un pequeño experimento para averiguar si puedo forzar a Firefox a cargar mi propia DLL en su espacio de direcciones de proceso.

Otra idea interesante sería obtener acceso al DOM (Document Object Model) de Firefox desde una DLL de Delphi, que daría una alternativa de trabajo al uso de TWebBrowser (basado en la versión ActiveX de Internet Explorer de Microsoft).

Sé que ha habido componentes como TWebBrowser basado en Firefox, pero su problema es que nadie se preocupó de actualizarlos durante mucho tiempo, por lo que son compatibles solo con alguna versión muy desactualizada de Firefox.