Cómo detectar agentes Java, JVMTI, etc.

Si no controlas el medio ambiente, lo siento, estás realmente atrapado. Sí, podría buscar agentes JVMTI triviales a través de algún tipo de rastreo de cmdline, pero esa es la menor de sus preocupaciones. Piense en java / lang / Classloader.defineClass () comprometido directamente. Eso es fácil de hacer si posee el cuadro, simplemente reemplace el archivo .class en rt.jar. De hecho, hasta que apareció JVMTI, esa era una forma típica en que los perfiladores y las herramientas de monitoreo instrumentaban el código Java.

Volviendo a JVMTI: la función "Conexión tardía" también permite que los agentes JVMTI se carguen sobre la marcha. Eso podría no haber sucedido cuando escaneó la primera vez.

En pocas palabras: si alguien puede cambiar los bytes del JRE en el disco, puede hacer lo que quiera. ¿Es ético, no? ¿Pueden ser atrapados? Posiblemente, pero nunca ganarás la guerra.

Respuesta 1

Parece que puedo ir con una combinación de comprobaciones dentro de un código nativo JNI personalizado.

1.) línea cmd olfateando para buscar agentes. 2.) Asegúrese de que exista el parámetro cmd-line -XX: + DisableAttachMechanism. (esto evitará que las personas se conecten a mi VM en ejecución)

Respuesta: 2

Recuerdo que una vez hice casi un silencioso Agente Java. Supongo que es mejor buscar escáneres de puertos o algo por el estilo.

Respuesta: 3

La seguridad de Java 2, la firma de frascos, etc., proporciona cierto nivel de control sobre lo que se carga en su aplicación.

Sin embargo, al final, si una persona malintencionada tiene acceso a una máquina de manera que pueda escribir en el disco, es muy probable que tenga mucha capacidad para hacer daño sin recurrir a hacks inteligentes de Java.

Dale la vuelta, en cualquier idioma, ¿qué puedes hacer para detectar troyanos?

El control de acceso cuidadoso a las máquinas que le interesan no es trivial, pero es esencial si se toma en serio estos problemas. Los especialistas en seguridad pueden parecer paranoicos, pero eso a menudo significa que realmente comprenden los riesgos.

Respuesta: 4

Si no puede controlar la plataforma, no puede controlar el software sobre ella.

Incluso si pudiera cerrar todas las vías de inspección que ha enumerado, Java es de código abierto. Podrían simplemente tomar el código fuente y volver a compilarlo con los cambios necesarios integrados.

Además, trate de recordar que si bien es su código, es su máquina. Tienen derecho a inspeccionar su código para verificar que ejecutarlo en su máquina hace lo que esperan que haga, y no realiza acciones "adicionales" que podrían encontrar indeseables. Las compañías menos confiables en el pasado han escaneado en busca de archivos no relevantes, copiado información confidencial a sus servidores domésticos, etc.

Respuesta: 5

En java, constantes conocidas como palabra clave (final) con un valor que nunca cambiará. He visto a algunas personas crear constantes sin declarar un modificador estático. Mi pregunta es, si las constantes deben ser ...

Estoy tratando de crear un hash md5 [único] de múltiples cadenas [en Java]. Es decir, quiero md5 (cadena1, cadena2, cadena3, ..., cadenaN) Actualmente estoy tratando de concatenar todas las cadenas con algunas raramente ...

¿Cuál de las siguientes bases de datos es mejor para una gran aplicación de escritorio: Firebird, JavaDB, hsqldb? Necesito rendimiento, facilidad de uso y licencia totalmente gratuita.

Digamos que tengo una clase 'Perro' con muchos valores de Cadena y quiero todos esos valores en una Lista, ¿habría alguna forma mejor que agregar cada valor por sí mismos? Por ejemplo, toma esta clase ficticia, nota ...