grep整个服务器的shell黑客/恶意软件

我们在多台服务器上托pipe1000个域名。 我们有大量的恶意软件和phpshell的问题。 许多扫描仪的使用对于取下它们没有任何影响。 也许我们从这些扫描仪得到10/20模糊的结果

所以我build立我自己的小bash文件来find这些脚本。 它发现这个周末有148个phpshells(我不太擅长创build.SH文件)。

我的问题 grep是可怕的慢,它会运行几天。 我怎样才能使这个脚本更有效率?

array=( "base64_decode(" "substr(md5(strrev(" "cwd = @getcwd();" "chr((ord(" "gzinflate(base64_decode(" "php_uname()" "] = chr(ord(" "cwd[strlen($cwd)" "ini_get('safe_mode');" "=\"\x62\"" "\"+ r + \"&r=\" + document.referrer;\"" "if(strtoupper(substr(PHP_OS, 0, 3) ) == \"WIN\")" "window.top.location.href=\"http://" "@ini_get(\"disable_functions\")" "$g3='';$g3.=$r;$g3.=$h;$g3.=$y" "hacked" ) for value in "${array[@]}" do printf "\n[$value] [start => $(date +"%T")]\n" grep -l -inr "$value" "/home/" printf "\n[end => $(date +"%T")]\n" done 

最后结果

 #!/bin/bash LC_ALL=C grep -F -n -r -f /root/scanner/pattern.txt "/home/" 

Pattern.txt

 eval($___($__)); eval(stripslashes(@$_POST[ eval(stripslashes(array_pop( eval(base64_decode( eval(gzinflate(str_rot13(base64_decode( gzinflate(base64_decode( Array(base64_decode( sha1(base64_decode( print(base64_decode( wsoScandir($dir) substr(current(array_keys( cwd = @getcwd(); $OOO000000=urldecode( $l___l_='base'.(32*2) substr(md5(strrev( cwd[strlen($cwd) ="x62 + r + "&r=" + document.referrer; if(strtoupper(substr(PHP_OS, 0, 3) ) == "WIN") ){if(@copy( copy("endless.html system("wget symlink("/","sym/root"); @copy($_FILES['file']['tmp_name'] error_reporting(0);if( x6C\x28\x67\x7A\x69 "/.*/e","\x28\x65\x76\x61 preg_replace("/.*/e", Windows-1251";preg_replace( ); exit(); } if(isset( system("$cmd"); die;} rtrim($security_code, "/"); 

将搜索字符串存储为一个多行字符串,并运行一次fgrep而不是循环:

 values="eval(base64_decode( gzinflate(base64_decode( cwd = @getcwd(); chr((ord( substr(md5(strrev( chr(ord( cwd[strlen(\$cwd) ini_get('safe_mode'); =\"\x62\" \"+ r + \"&r=\" + document.referrer;\" if(strtoupper(substr(PHP_OS, 0, 3) ) == \"WIN\") window.top.location.href=\"http:// @ini_get(\"disable_functions\") ){if(@copy( eval(\$___(\$__)); copy(\"endless.html\" system(\"wget symlink(\"/\",\"sym/root\"); @copy(\$_FILES['file']['tmp_name'] error_reporting(0);if( x6C\x28\x67\x7A\x69\x6E\x66\x6C\x61\x74 hacked" LC_ALL=C fgrep -nr --include \*.php "$values" * 

这个版本的运行速度比原来的要快22倍(一个相当大的网站上的0.535s和11.817s)。 无意中,您有22个搜索字符串。

PS:不要忘记你的$“”,或者你不会找到你的第15和第19搜索字符串。 我将创建一个测试文件,其中包含所有正在搜索的字符串,并验证fgrep“$ values”是否成功匹配每个字符串。