Cómo buscar código malicioso sin antivirus ni escáneres. Cómo buscar código malicioso sin antivirus ni escáneres Cómo buscar código malicioso en WordPress
1. Descomprímalo en la carpeta del sitio.
2. siga el enlace su_sitio/fscure/
3. todo
1. Búsqueda automática de virus por firmas.
2. Busque una cadena en archivos.
3. Eliminar archivos
4. Parchear código malicioso usando expresiones regulares
El guión no hará todo el trabajo por usted y requiere un conocimiento mínimo. Se recomienda hacer una copia de seguridad del sitio antes de trabajar.
¿Como funciona?Cuando se inicia por primera vez, crea un índice de archivos. El archivo fscure.lst está en la carpeta. Muestra una lista de archivos que contienen firmas potencialmente maliciosas. “Potencialmente malicioso” significa que tendrás que decidir si se trata de un virus o no. La lista de firmas se configura en el archivo config.php, constante SCAN_SIGN. Con la configuración predeterminada, el script no verifica los archivos js y no contiene firmas para ellos.
1. no crea el índice fscure.lst. Puede suceder si no hay suficientes derechos. Pon 777 en la carpeta fscure
2. Error 5xx. Más a menudo "Tiempo de espera de puerta de enlace 504". El script no tiene tiempo de procesarse y falla debido a un tiempo de espera. En este caso, existen varias formas de acelerar su trabajo. La velocidad depende principalmente del tamaño del índice. Está en el archivo fscure.lst. Normalmente, se puede procesar un archivo de hasta 5 MB en el 90% de los casos. Si no tiene tiempo, puede reducir la "codicia" del script prohibiendo escanear *.jpg;*.png;*.css en la configuración.
En el archivo config.php.
// delimitador; define("FILES_EXCLUDE","*.js;*.jpg;*.png;*.css");
3. El hosting emite una advertencia como
(HEX)base64.inject.unclassed.6: u56565656: /var/www/u65656565/data/www/34535335353.ru/fscure/index.php
No hay ningún virus en el guión y nunca lo hubo. Y (HEX)base64.inject.unclassed.6 es una construcción como "echo base64_decode(", que se encuentra a menudo y en sí misma es bastante inofensiva. Sin embargo, en la última versión, reemplacé este código.
¿Qué hacer si no pudo encontrar el virus usted mismo?Puedes contactarme para obtener ayuda. Mis tarifas son modestas. Garantizo mi trabajo por 6 meses. El coste del trabajo es de 800 rublos. para 1 sitio. Si hay varios sitios en su cuenta, el precio se determina individualmente.
Si lograra hacer todo usted mismo, le agradecería una recompensa financiera o un enlace a mi sitio.
Mis requisitos:
Yandex
41001151597934
dinero web
Z959263622242
R356304765617
E172301357329
Hay que hacerlo juntos. Si elimina la causa original del hack (por ejemplo, una vulnerabilidad en la extensión CMS), pero no elimina todos archivos maliciosos, el atacante podrá volver a acceder al sitio utilizando uno de sus scripts. Si eliminas todo lo descargado scripts maliciosos, pero no elimine la causa del hack, el atacante podrá hackear el sitio nuevamente y cargar scripts en él nuevamente.
Un especialista con el conocimiento y la experiencia adecuados debe realizar trabajos para eliminar scripts maliciosos y analizar las causas del hackeo:
- Para eliminar scripts maliciosos, necesita conocimientos del lenguaje de programación PHP, así como conocimiento del "interno" de los CMS populares (Joomla, WordPress, etc.) y sus extensiones. Este conocimiento es necesario para distinguir los scripts directamente del CMS y sus extensiones de archivos extraños, así como para poder determinar sin ambigüedades qué acciones realizan cuando se encuentran con scripts dudosos.
- Para analizar las causas de la piratería, se requiere experiencia en administración de servidores. Esto es necesario para analizar el estado de los archivos de la cuenta, la hora en que fueron modificados y también para comparar estos datos con los registros del servidor para determinar qué acciones del atacante condujeron al pirateo de los sitios.
Por lo tanto, si su sitio ha sido pirateado, se recomienda, para evitar ataques repetidos, no hacer el trabajo usted mismo, sino contactar a un especialista que realizará los diagnósticos necesarios y recomendará o realizará acciones necesarias para solucionar el problema, y quién puede garantizar la calidad del resultado obtenido.
Sin embargo, existen una serie de medidas que en algunos casos ayudan a restablecer el funcionamiento seguro del sitio sin conocimientos especiales. La limitación del método siguiente es que para reanudar el funcionamiento del sitio, se requiere una copia de seguridad creada antes del hackeo. Si se desconoce la fecha de la infracción, puede probar este método utilizando la copia de seguridad más antigua disponible. La segunda limitación, como consecuencia de la primera, es que después de restaurar el sitio, se crean los datos agregados al sitio después de la restauración (por ejemplo, nuevos artículos, imágenes o documentos). Si necesita restaurar el sitio conservando nuevos datos, debe comunicarse con un especialista.
Estas medidas no nos permiten determinar la causa del hackeo del sitio, pero cada una de ellas tiene como objetivo eliminar una de las posibles causas de penetración. Dado que se desconoce el motivo exacto del hack, es necesario realizarlos todos. Las acciones están dispuestas en tal orden que primero se elimine por completo la posibilidad de que el atacante continúe con sus actividades en el sitio o cuenta de alojamiento en actualmente y luego evitar que un atacante ingrese al sitio en el futuro.
Los pasos a continuación suponen que solo tiene un sitio web en su cuenta de hosting. Si hay varios sitios en la cuenta, también podrían piratearse y el sitio podría piratearse a través de ellos. Es necesario transferir el sitio con el que se están realizando los trabajos de restauración a una cuenta separada o realizar la restauración para todos los sitios alojados en la cuenta al mismo tiempo.
El orden de las acciones es importante, por lo que es necesario realizarlas en el orden exacto en el que se encuentran a continuación.
Todas las acciones anteriores deben realizarse de acuerdo con el orden especificado, sin omisiones ni cambios. Si las acciones se realizan de forma incorrecta, es posible que queden scripts maliciosos o vulnerabilidades en el sitio, por lo que un atacante puede volver a piratearlo al poco tiempo. Si por alguna razón no es posible realizar los pasos anteriores en la forma en que se indican, comuníquese con un especialista para que realice trabajos de restauración del sitio después de un hack.
Para proteger su sitio de ataques repetidos en el futuro, debe seguir las siguientes recomendaciones:El código malicioso ingresa al sitio por negligencia o intención maliciosa. Los propósitos del código malicioso varían, pero esencialmente daña o interfiere con el funcionamiento normal de un sitio web. Para eliminar código malicioso en WordPress, primero debes encontrarlo.
¿Qué es el código malicioso en un sitio de WordPress?Por apariencia En la mayoría de los casos, el código malicioso es un conjunto de letras y símbolos del alfabeto latino. De hecho, se trata de un código cifrado mediante el cual se realiza tal o cual acción. Las acciones pueden ser muy diferentes, por ejemplo, sus nuevas publicaciones se publican inmediatamente en un recurso de terceros. Básicamente, esto es robar tu contenido. Los códigos también tienen otras “tareas”, por ejemplo, colocar enlaces salientes en las páginas del sitio. Las tareas pueden ser las más sofisticadas, pero una cosa está clara: es necesario buscar y eliminar los códigos maliciosos.
¿Cómo llegan los códigos maliciosos a un sitio web?También hay muchas lagunas para que los códigos ingresen al sitio.
Permítanme señalar de inmediato que combatir estos virus es difícil y que la eliminación manual requiere conocimientos. Hay tres soluciones al problema: la primera solución es utilizar complementos antivirus, por ejemplo, un complemento llamado BulletProof Security.
Esta solución da buenos resultados, pero lleva tiempo, aunque sea un poco. Existe una solución más radical para deshacerse de códigos maliciosos, incluidos virus complejos, es restaurar el sitio a partir de códigos prefabricados. copias de seguridad sitio.
Como un buen webmaster hace esto periódicamente, puedes volver a una versión no infectada sin ningún problema. La tercera solución es para ricos y perezosos: basta con ponerse en contacto con una “oficina” especializada o con un especialista individual.
Cómo buscar código malicioso en WordPressEs importante comprender que el código malicioso en WordPress puede estar en cualquier archivo del sitio y no necesariamente en el tema de trabajo. Puede crear un complemento, un tema o un código "hecho en casa" extraído de Internet. Hay varias formas de intentar encontrar código malicioso.
Método 1: manualmente. Se desplaza por todos los archivos del sitio y los compara con los archivos de una copia de seguridad no infectada. Si encuentra el código de otra persona, elimínelo.
Método 2: uso de complementos de seguridad de WordPress. Por ejemplo, . Este complemento tiene una gran característica: escanea los archivos del sitio en busca de código de otras personas y el complemento hace frente a esta tarea perfectamente.
Método 3. Si tiene un soporte de alojamiento razonable y le parece que hay alguien más en el sitio, pídale que escanee su sitio con su antivirus. Su informe enumerará todos los archivos infectados. A continuación, abra estos archivos en editor de texto y eliminar código malicioso.
Método 4. Si puede trabajar con acceso SSH al directorio del sitio, adelante, tiene su propia cocina.
¡Importante! No importa cómo busque código malicioso, antes de buscar y luego eliminar el código, cierre el acceso a los archivos del sitio (active el modo de mantenimiento). Recuerde los códigos que se restauran cuando se eliminan.
Busque códigos maliciosos utilizando la función de evaluaciónExiste una función de este tipo en PHP llamada eval. Le permite ejecutar cualquier código en su línea. Además, el código se puede cifrar. Es debido a la codificación que el código malicioso parece un conjunto de letras y símbolos. Dos codificaciones populares son:
En consecuencia, en estas codificaciones la función eval se ve así:
- evaluación(base64_decode(...))
- eval (str_rot13 (...)) //entre comillas internas, conjuntos de letras y símbolos largos y poco claros..
El algoritmo para buscar código malicioso mediante la función eval es el siguiente (trabajamos desde el panel administrativo):
- vaya al editor del sitio (Apariencia → Editor).
- Copie el archivo funciones.php.
- ábrelo en un editor de texto (por ejemplo, Notepad++) y busca la palabra: eval.
- Si lo encuentra, no se apresure a eliminar nada. Debe comprender qué “pide” que se realice esta función. Para entender esto, es necesario decodificar el código. Para decodificar existen herramientas online llamadas decodificadores.
Los decodificadores funcionan de forma sencilla. Copias el código que deseas descifrar, lo pegas en el campo decodificador y lo decodificas.
En el momento de escribir este artículo, no encontré ni un solo código cifrado en WordPress. Encontré el código en el sitio web de Joomla. En principio, no hay diferencia en la comprensión de la decodificación. Miremos la foto.
Como puede ver en la foto, la función de evaluación, después de la decodificación, no mostró un código terrible que amenace la seguridad del sitio, sino un enlace de derechos de autor cifrado del autor de la plantilla. También se puede eliminar, pero volverá después de actualizar la plantilla si no utiliza .
En conclusión, me gustaría señalar que para no recibir virus en el sitio:
- El código malicioso en WordPress suele venir con temas y complementos. Por lo tanto, no instale plantillas y complementos de recursos "izquierdos" no verificados y, si lo hace, verifique cuidadosamente la presencia de enlaces y funciones ejecutivas de PHP. Después de instalar complementos y temas de recursos "ilegales", consulte el sitio con un software antivirus.
- Asegúrese de realizar copias de seguridad periódicas y realizar otras.
Mi opinión, que es que es más fácil y eficaz protegerse contra scripts de navegador maliciosos inyectados (ataques XSS almacenados) utilizando herramientas de navegador, se expresó anteriormente: . La protección del navegador contra JavaScript, que consiste en añadir código de filtrado a las páginas HTML del sitio web, es presumiblemente fiable; sin embargo, la presencia de dicha protección no elimina la necesidad de utilizar también un filtro de servidor. Para los mismos ataques XSS, puedes organizar una línea de defensa adicional en el servidor. También debemos recordar la posibilidad de que un atacante introduzca en un mensaje HTML enviado desde un sitio scripts no basados en el navegador, sino del lado del servidor (php), que el navegador no podrá reconocer.
Un script de ataque, ya sea basado en navegador o en servidor, es un programa; hay que pensar que el programa siempre tendrá algunas diferencias simbólicas con respecto al HTML “puro”. Intentemos encontrar esas diferencias y utilizarlas para crear un filtro HTML en el servidor. A continuación se muestran ejemplos de JavaScript malicioso.
XSS:Algún texto
Algún texto
XSS cifrado:Algún texto
Los navegadores recuperan texto de caracteres primitivos no sólo ubicados dentro de contenedores html (entre las etiquetas de apertura y cierre), sino también dentro de las propias etiquetas (entre< и >). Se permite la codificación de URL en direcciones http. Esto dificulta el reconocimiento de códigos maliciosos en el lado del servidor, ya que la misma secuencia de caracteres puede representarse de diferentes maneras.
Gusanos XSS:"+innerHTML.slice(acción= (método="publicación")+".php",155)))">
alerta ("xss"); con (nueva XMLHttpRequest) abrir ("POST", "post.php"), enviar ("content="+_.outerHTML)
Los gusanos XSS mencionados anteriormente son sólo algunos de los muchos presentados al concurso de enero de 2008 de Robert Hansen (también conocido como RSnake) para elegir el gusano JavaScript malicioso más corto (resultados del concurso).
Signos de ataques XSSUn script XSS es un programa que accede a objetos DOM (Document Object Model) y sus métodos. De lo contrario, es poco probable que sea perjudicial. Por ejemplo, cadena de JavaScript
onckick="var a = "xss""
no afecta el modelo de objetos del documento, por lo que incluso si está incrustada en una etiqueta html, dicha cadena es inofensiva. Sólo manipulando los objetos de documentos HTML y sus métodos un hacker puede causar un daño significativo a un sitio. Por ejemplo, la línea
onmousemove="document.getElementsByTagName("cuerpo").innerHTML="XSS""
ya reemplaza el contenido de la página.
Un signo de acceso a los métodos DOM son los paréntesis, así como los puntos a la izquierda del signo igual. Los paréntesis también se pueden usar en html para establecer un color en el formato rgb(); sin embargo, la fuente y los colores de fondo en html se configuran al menos de tres maneras más. Por lo tanto, se pueden sacrificar los paréntesis sin comprometer la expresividad del texto html. Es necesario aceptar como regla que los paréntesis estén dentro de la etiqueta (es decir, entre< и >) - esto es muy peligroso, si recibimos un mensaje de un usuario en el servidor, este mensaje contiene corchetes dentro de las etiquetas, entonces lo más apropiado que debemos hacer es bloquear dicho mensaje.
El punto puede estar contenido en etiquetas html: al especificar la dirección del enlace (etiqueta ); al configurar el tamaño de los elementos html (style="height:1.5in; width:2.5in;" ). Pero las secuencias de caracteres de la forma
punto de la letra es igual
no puede estar en etiquetas html. Si la secuencia especificada está presente dentro de una etiqueta html, lo más probable es que el mensaje del usuario contenga un script y deba bloquearse.
Otra señal de peligro obvia es el símbolo "+" dentro de la etiqueta. No existe tal cosa en HTML sin secuencias de comandos. Si encontramos ventajas dentro de las etiquetas, bloqueamos el mensaje sin piedad.
Para el cifrado con caracteres primitivos dentro de etiquetas html, un usuario bien intencionado del sitio agrega un comentario usando editor visual, nunca vendrá corriendo. El uso de primitivas simbólicas en etiquetas no proporciona ningún beneficio en forma de medios expresivos adicionales; sólo requiere tiempo de escritura adicional. En la mayoría de los casos, uno podría pensar que un usuario bien intencionado ni siquiera sabe que existen ciertos caracteres primitivos en HTML. De ahí la regla: un símbolo dentro de una etiqueta es evidencia de un ataque al sitio. En consecuencia, si vemos esto, bloqueamos el mensaje.
Se debería adoptar una regla similar con respecto al símbolo "%", que se puede utilizar en la codificación de URL. Sin embargo, los porcentajes también se utilizan en HTML "puro" para establecer los tamaños relativos de los elementos. Las combinaciones peligrosas son aquellas en las que al signo "%" le sigue inmediatamente una letra o un número.
Neutralización de scripts del servidorA diferencia de los intérpretes de JavaScript en los navegadores, el intérprete de PHP en el servidor no permite libertades al escribir el texto del programa. Por lo tanto, para neutralizar un posible script del servidor, basta con reemplazar completamente en el mensaje HTML del usuario todos los caracteres que son esenciales al escribir un programa PHP con sus primitivas HTML. Los primeros signos que se sustituirán son el dólar y el guión bajo, el punto, el redondo, el cuadrado y llaves, signos más y menos, signo de barra invertida.
Filtro PHP para mensajes HTML$message es el mensaje html recibido del editor visual al servidor.
// recuerda la longitud del mensaje $lenmessage = strlen($message); // recorta la etiqueta del comentario $message = preg_replace("//", "", $message); // recorta cada etiqueta en la que el atributo "src" se refiere a un recurso externo $message = preg_replace("/]+?src[\w\W]+\/\/[^>]+?>/i" , " ", $mensaje); // recorta todas las etiquetas que contengan algún carácter excepto: - a-z 0-9 / . : ; " = % # espacio $mensaje = preg_replace("/]+[^->a-z0-9\/\.\:\;\"\=\%\#\s]+[^>]+?> /i", "", $mensaje); // recorta cada etiqueta que contenga la secuencia ". a-z =" $message = preg_replace("/]+?\.+?\=[^>]+?>/i", "", $message); // recorta cada etiqueta que contenga la secuencia "% a-z" o "% 0-9" $message = preg_replace("/]+?\%+?[^>]+?>/i", "", $ mensaje); // recorta cada etiqueta que contenga la secuencia "script" o "js:" $message = preg_replace("/]*?script[^>]*?>/i", "", $message); $mensaje = preg_replace("/]*?js:[^>]*?>/i", "", $mensaje); // recorta cada etiqueta que comienza con un carácter que no sea "a-z" o "/" $message = preg_replace("/]*?>/i", "", $message); // comprobar: si el mensaje se acorta, entonces finaliza el programa $lenmessage2 = strlen($message); if ($lenmessage != $lenmessage2) ( print "El mensaje no se puede agregar"; exit; ) // realiza el reemplazo de extremo a extremo de caracteres peligrosos con sus correspondientes primitivas $message = str_replace("$", "$" , $mensaje); $mensaje = str_replace("_", "_", $mensaje); $mensaje = str_replace(".", ".", $mensaje); $mensaje = str_replace(chr(92), "\", $mensaje); // \ $mensaje = str_replace("(", "(", $mensaje); $mensaje = str_replace()", ")", $mensaje); $mensaje = str_replace("[", "[", $mensaje); $mensaje = str_replace("]", "]", $mensaje); $mensaje = str_replace("(", "(", $mensaje); $mensaje = str_replace()", ")", $mensaje); $mensaje = str_replace("?", "?", $mensaje); // ahora el mensaje ha sido verificado, los scripts que contiene han sido neutralizados
Cabe señalar que el filtro no elimina las etiquetas emparejadas. digamos que tenemos
¡Haga clic aquí!
El filtro solo eliminará la etiqueta , pero la etiqueta emparejada (de cierre) permanecerá. Si envía mensajes que contienen etiquetas sin pares correspondientes al navegador, puede experimentar problemas en forma de "sesgo" del sitio. No se sabe con qué etiqueta de apertura coincidirá el navegador con la etiqueta de cierre no emparejada restante. Por tanto, y también por motivos de seguridad, los mensajes en los que el filtro haya cortado algo no deben enviarse al navegador en absoluto. Es mejor imprimir algo como "No se pudo agregar el mensaje" y salir del programa.
Se espera que el mensaje se escriba en un archivo (no en una base de datos).
DiscusiónEstaré agradecido por las críticas. Escribe al foro de soporte, en la sección