攻击者拿到一台服务器后,工具第一件事往往不是工具翻数据库,而是工具丢一个webshell上去。这东西说白了就是工具一段脚本,藏在web目录里,工具让你能通过浏览器远程执行命令。工具我见过最糙的工具webshell就是一句话木马,客户端传个参数过去,工具服务器就执行对应的工具PHP函数,跟开了一扇后门似的工具。但真正要干坏事,工具光靠一句话不够,工具得用上完整的工具webshell管理工具。
这类工具里,工具最出名的工具要数中国菜刀(Cknife)和蚁剑(AntSword)。蚁剑是开源项目,界面做得跟IDE似的,左边文件树,右边代码编辑器,连数据库都能连。我拿它测试过自家内网,上传一个压缩包,几秒钟就把整个站点的源码拖下来了。那种感觉挺微妙——你明明只是点了几下鼠标,对面服务器上的秘密就全摊在你面前了。
但工具再强,也得靠上传姿势。上传点找不好,工具就是个摆设。常见手法是找文件上传漏洞,改个Content-Type绕过前端校验,或者利用解析漏洞,把shell藏在图片的EXIF信息里。有个老案例,攻击者把PHP代码拼在GIF文件尾部,文件名改成xxx.php.gif,老版本Apache看到.gif后缀就放行,但解析时却按PHP执行——这种老掉牙的招数,现在依然能在某些老旧系统上奏效。
webshell工具的功能也在迭代。早期就干两件事:命令执行和文件管理。现在呢,蚁剑支持插件系统,能内存马注入、内网代理、流量加密。加密这块特别关键——默认的明文通信早被WAF盯死了,所以工具都内置了AES或自定义编码。我见过一个用冰蝎(Behinder)的样本,流量特征像正常HTTPS,密钥动态生成,传统特征库根本拦不住。安全设备看它跟看正常业务请求似的,完全没脾气。
防守方也不是吃素的。现在的EDR会监控进程树,你执行whoami,它立刻关联到父进程是web服务,直接告警。所以有经验的攻击者会尽量用内存马,不落盘,或者用无文件方式,把payload塞进注册表或WMI。攻防双方就这么来回折腾,工具越做越复杂,检测越做越细。
我对这类工具的态度挺矛盾。一方面,它们是渗透测试的必备品,没有它们,安全人员就得手动敲命令,效率低得吓人。另一方面,一旦流到黑产手里,就是批量拖库的利器。去年某电商平台被脱裤,事后溯源发现攻击者用的就是蚁剑的魔改版,流量走了DNS隧道,日志里只看到一堆子域名查询记录。
说到底,webshell工具本身没善恶,关键看拿它干什么。但作为防御方,你得清楚这些工具的脾气:它们喜欢藏在正常文件里,用加密流量掩盖行为,还特别擅长利用你意想不到的解析逻辑。所以检查服务器时,别光看文件后缀,得看文件内容里的危险函数,查最近的访问日志里有没有异常UA,甚至监控一下文件修改时间——凌晨三点改的php文件,多半有问题。
写这段文字时,我电脑上就开着蚁剑的源码。它其实是个Electron应用,前端代码写得挺规整,后端靠Node.js桥接。你看,连攻击工具都开始用现代框架了,防守方要是还靠老一套的黑名单正则,迟早得被淘汰。工具在进化,思路也得跟着变。