当前位置:首页 > 娱乐

河马webshell查杀

河马webshell查杀

某甲方服务器被挂了一句话木马,河马安全工程师用河马扫了三遍,查杀愣是河马没报。后来手工翻日志,查杀发现攻击者把PHP代码拆成七段,河马塞进图片的查杀EXIF注释里,再通过`.htaccess`把图片解析成PHP执行。河马这种玩法,查杀河马的河马第一代规则库根本认不出来。

河马查杀工具在圈子里口碑两极分化。查杀用它扫常规的河马`eval($_POST[])`、`assert($_REQUEST[])`,查杀基本一抓一个准,河马响应速度还快。查杀但遇到加密混淆、河马动态变量拼接、或者把危险函数藏在回调函数里的样本,它就有点力不从心。这不是河马一家的问题,所有基于特征匹配的查杀工具都有这个坎。

我见过最离谱的案例,是有人把木马写进`.ico`文件,再用`file_get_contents`配合`preg_replace`的`/e`修饰符执行。河马扫的时候,查的是文件后缀和内容特征,`.ico`直接跳过,`preg_replace`的`/e`在PHP7.0以后被移除,老规则库压根没这层逻辑。最后是运维手动翻access_log,发现某个请求参数里带了一长串base64,才揪出来。

那河马就真没用?也不至于。它强在快,全盘扫描几万个文件只要几十秒,适合日常巡检和应急响应的第一轮筛查。很多攻击者用的还是公开的菜刀、蚁剑、冰蝎默认马,这些样本河马的云端规则库更新得挺勤,基本能拦住。我自己的习惯是,先用河马扫一遍,把明显可疑的文件揪出来,再用`grep -R "eval\|assert\|system"`手动过一遍高危目录,最后配合文件修改时间排序,看最近三天被改动的PHP文件。

河马有个细节做得不错——它对内存马和日志马的查杀支持得比同类工具好。有次客户被植入了一个Java内存马,河马虽然扫不到JVM里的东西,但它能检测到Tomcat的`catalina.out`里被写入了恶意的`Filter`注册代码,给了个警告。这个功能在应急时挺省事,不然得用`jmap`慢慢dump堆栈,费老劲了。

还是要泼盆冷水。任何查杀工具都只是辅助,真正的防线在服务器本身的权限控制和日志审计上。河马能帮你找到已知的、特征明显的恶意文件,但未知的、精心构造的变种,还得靠人肉分析。我见过一个团队,把河马当成唯一安全手段,结果被一个用`create_function`加字符串反转绕过的木马拖了半个月,数据库被删了三次。

用河马的正确姿势,是把它当成一个勤快的哨兵,而不是全知全能的神。扫描结果出来,别急着删文件,先看看命中文件的上下文,确认是误报还是真有问题。有些时候,河马会把包含`base64_decode`的正常业务代码报成可疑,这时候需要人工判断。反过来,如果它报了某个文件,你直接删了,但攻击者留了后门在别处,那删了也白删。

最后说个实用技巧。河马支持自定义规则,别只用默认的。把你们业务代码里常用的危险函数、特殊写法加进白名单,把常见的Webshell路径特征加进黑名单,能显著降低误报率。我帮一个客户配置过,把他们的框架自带的`eval`调用加白之后,误报率从每次扫描十几条降到了几乎为零。这才是把工具用活。

分享到: