整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

windows服务器挂马分析与处理之一:挂马篡改分析

windows服务器挂马分析与处理之一:挂马篡改分析

务器近期遭遇挂马严重,平时忙于工作每次都是删除木马,开启防篡改保护,没有从根本上解决问题。本次决定安排时间专门学习WEB渗透,针对ASP、PHP企业网站安全防护作一些研究。
一、网页篡改常见形式
1、js跳转
黑产分子一般通过将正常网站首页置入跳转脚本,当网站打开时,跳转到非法网站。这些非法网站向他们支付费用。有时还可以看到黑产分子放置的统计代码。
通常,这些js跳转代码会藏在jquery脚本末尾,这样不容易被发现,而且每个引用了jquery的页面都能跳转。
其次,脚本会判断用户是否为初次访问,记录cookie。只有初次访问才跳转到非法网站。这么做好处是客户第二次访问时正常内容,以为是自己电脑出了问题,所以不会通知维护人员。更精明的是,黑客可以先不跳转,等经常访问网站的维护人员和网站所属企业职员记录下cookie,这样这类人员访问时将不会发现异常。
黑客(黑产分子)最关心的是经常访问网站的维护人员和网站所属企业员工。要让他们不发现网页被破坏,才能让跳转代码不被清理,使其他访客能长期被带到非法网站从而盈利。
2、搜索引擎篡改
此类篡改一般将网站的SEO相关标签,即title、keyword、description篡改为非法网站的信息,如某某在线娱乐城。为了不被发现,他们只把篡改内容给搜索引擎看,而向用户返回正常页面。下图是一个典型的篡改页面:

被篡改的网站首页

可以看到,<title>标签内容被篡改为&#;的形式,此为html实体编码,即&#unicode编号;,这样可以防止挂马检测软件发现。又不影响搜索引擎蜘蛛爬取。当然,要向用户返回正常页面还得使用document.title=’’来将标题改成正常内容。
此类篡改对维护人员来说相当麻烦,主要是搜索引擎会阻止访问网站和搜索结果变成非法信息。

篡改后的网站在百度收录中的展示

点进去过后的提示


另外,如果在微信中打开同样会屏蔽访问。这个屏蔽是针对主域名,而不是二级域名。所以一点a.qian1.top被挂马,*.qian1.top都会被屏蔽,非常严重。

微信屏蔽挂马域名


这样几乎宣告域名报废。如果是备案域名,那就损失大了。不过可以百度和微信都可以通过申请解封来恢复访问,但如果经常被封就会越来越难解封了。
3、黑链和隐藏页面
这一类现在用得比较少了。可能是效果不好不能直接给非法网站带去访问。黑链一般在网站首页的最下面。隐藏页面会在网站各个有写入权限的地方创建,有时创建的文件甚至达几个G。这些页面最终会导致网站百度收录结果全是非法信息,从而影响正常收录。我们可以用site:命令来检查一下自己的网站页面快照是否正常。


网站黑链被收录


知道这些攻击形式后,我们需要了解黑客如何实施这些非法攻击的。通常,这些攻击都是使用工具的,如中国菜刀。这样攻击简单、还可以方便地管理受害网站。


中国菜刀(china chopper)管理界面


只要马还在或者网站上传漏洞未修复,随时都能管理受害网站,一键执行跳转注入、SEO篡改等操作,这远比清理这些注入篡改快捷,所以维护人员可真是可怜。维护费用也可能远不及攻击报酬。
挂马、篡改分析与处理见下一篇。

 网站被篡改的情况多出现于企业官网,且做了百度竞价的一些网站。而且直接访问网站时,不易发现问题,但通过百度访问会发现跳转到了违法内容的链接。再通过百度搜索官网会发现搜索结果中网站的Title、Description都已经被篡改。

  这类行为的目的就是通过这些受害网站获得排名并跳转到违法网站,达到不法的目的。对于企业来说不但损失了百度竞价的费用,还对企业形象造成很大的影响。甚至直接导致网站被空间商关闭或被有关机构删除。

  那遇到这种情况该怎么解决了?这就要具体分析原因了。以下我们介绍的每一步都很关键,这也是我们锦技运维服务在这么多年服务过的客户后,总结出来的经验。


  第一步,先临时恢复首页:

  我们发现这种情况都有个共同点,就是网站首页给篡改了,如果原先首页为动态文件的话,则会被删除,然后替换成了一个静态文件,比如html或htm格式的index或default文件。Title、Description改成了Unicode编码,用户看不见具体内容,但搜索引擎会解释成文字,这也是为什么搜索看到网站结果是被篡改后的内容。而且加入了一些Js,会判断凡是通过百度会的访问就会做跳转。

  首先我们删掉该被篡改的文件,从备份中恢复首页文件。注意,这只是第一步,是临时先恢复首页的方法,因为没多久后,这个文件又会被替换和篡改掉。不管怎么样,先把网站的门面给恢复。包括之后的操作中,也要随时注意首页的恢复,不要不耐烦,一旦发现被篡改,就先马上恢复首页再说。


  第二步,比对全站代码:

  首先自己手上得有一套完整的网站备份,特别是代码的备份。直接登录服务器或FTP链接到网站目录,比对各目录和文件与备份的目录和文件的差异。注意,必须细化到每个目录,不论目录层次多深,逐一比对。有时候会发现一些奇怪的文件名,比如PHP写的网站会出现ASP扩展名的文件,上传目录中会出现动态文件,一些藏得很深的目录中出现了不该有的文件。可以采用一些小技巧加快排查速度,比如通过文件更新时间排序。如果能远程登录服务器的话,这个工作可以借助一些文件比对工具来做辅助。把所有发现的可疑文件删除,或者改掉文件名。

  如果你有兴趣的话,可以打开这些文件的代码,一般能查到明文的密码,通过网址访问这些文件,输入密码后会发现是个可以操控整台服务器的脚本,甚至可以执行Dos命令,访问各盘符各目录,任意在系统中植入和删除文件。

  这第二步会花费很长时间,其实主要就是细心,不漏过一点蛛丝马迹。


  第三步,分析访问日志:

  部分虚拟主机空间商能提供访问日志,或者云主机自己配置web service记录每天的访问。通过访问日志,查看最近有没有访问比较奇怪的目录和文件,并且这些奇怪的文件来自哪些IP。通过这种方式反查到服务器中存在的恶意文件。

  但有时候会发现一个奇怪的现象,通过FTP或云主机目录中看不到这个文件,即使打开查看隐藏文件的选项仍然查看不到,但通过网站却能访问到该文件。遇到这种情况,云主机的话,通过Dos命令能查找到并删除该文件。虚拟主机的话比较麻烦,可以联系空间商,或者通过一些手段先上传一个同名的可查看文件,会覆盖掉隐藏文件,然后再删除。如果遇到权限等原因无法删除的情况,联系空间商处理有时候更快捷。

  通过访问日志,还能分析来自哪个IP或哪些IP经常访问这些恶意植入的文件,可以先屏蔽掉这些IP或IP网段。记得将来取消屏蔽,特别是屏蔽网段的情况下。


  第四步,寻找漏洞:

  接下去,我们需要寻找造成这种问题的原因。否则不解决原因,以上问题还是会持续发生。

  首先是服务器漏洞,这对于云主机来说是需要重点考虑的,这工作其实应该平时日常就要做好,而不是出了问题再做。记得定期更新补丁,再安装防火墙,有条件的话安装企业级的商业版防火墙,没条件的话用免费版的个人防火墙也可以,再不行,总得开启win系统自带的防火墙吧。当然配置好自动定时更新,还有配置好一旦发现病毒的自动处理逻辑即可。

  (我们遇到过一个国企大客户,他们的一台最主要的云主机,居然3年多没有更新过补丁,也没有安装任何防火墙,直到服务器上的多个网站被篡改了,系统被木马搞的实在跑不动了才想到找我们解决。其实这事情是日常的工作,平时花不了多少功夫,但出了问题可就是大问题了。)

  除了服务器漏洞,还可能是网站代码漏洞或限制不严谨,这就关系到程序编写人员的技术能力了,如果遇到这种情况,就需要和程序员一同寻找问题。程序逻辑是否有问题,是否有做文件上传限制等等。

  环境配置引起的漏洞,这需要注意web service的配置,权限是否配置不合理,网站目录是否人为的设置了everyone或guest可写权限了。文件上传目录不该给予执行权限。

  采用的第三方插件漏洞,比如网站中常使用的富文本编辑器的漏洞也需要注意,有些编辑器不是拿来就能用的,得配置其中上传功能,过滤掉不该上传的文件类型的文件名。还需要结合上面提到的,记得将文件上传目录的执行权限去掉。避免编辑器的目录放置在根目录,并且目录名采用默认的。这样漏洞直接就能被利用到。

  (这里提示一下,市场占有率极高的某富文本编辑器在IIS环境下会出现漏洞,需要特别注意。)


  第五步,其他合理配置:

  后台管理路径不要使用容易被人猜测到的文件名或目录名,比如admin。用户名和密码尽量设置复杂。FTP账号和远程管理账号也是如此,如果FTP服务不使用,暂时先停止掉。网站使用的数据库链接账号,Mssql不要使用sa,Mysql不要使用root,为网站单独创建账号,限制账号权限,更改数据库端口,禁止外链。关闭不需要的服务,关闭不需要的端口。结合防火墙进行配置,现在云服务器能直接配置安全策略,只开放使用的端口。如果需要经常外链方式管理服务器,最好通过VPN组虚拟局域网加证书的形式。


  第六步,观察和反复操作:

  做好以上几步工作后,接下去就是持续观察了。如果首页是否还被篡改,那说明网站中的恶意文件还没有清除干净,需要重复以上的多个环节,需要说明的是,只要一个恶意文件没有被清除,就会通过它引入几十个甚至上百个恶意文件的植入。所以耐心很重要,直到彻底清除干净,堵死所有漏洞清除所有恶意文件为止。

  (我们遇到过一个客户的网站中被植入了几千个木马,而且居然没有备份。我们的技术员只能手动一个个目录查看和分析,并且几乎24小时待命随时解决问题,最终花了一周半才彻底解决问题)。


  总结:

  以上我们写的这六步是比较常见的操作手法,遇到不同案例肯定得不同分析,定制不同的解决方案和侧重点,采用一些不同的小技巧。所以,没有技术能力解决的情况下,推荐采购锦技运维服务,我们专业技术人员会为客户提供服务,并且维护成本极低。

篡改对象

JavaScript共享的本质一直是开发人员心头的痛。

因为任何对象都可以被在同一环境中运行的代码修改。

开发人员很可能会意外地修改别人的代码,甚至更糟糕地,用不兼容的功能重写原生对象。ECMAScript 5致力于解决这个问题,

可以让开发人员定义防篡改对象(tamper-proof object)。

每个属性的[[Configurable]]、[[Writable]]、[[Enumerable]]、[[Value]]、[[Get]]以及[[Set]]特性,以改变属性的行为。类似地,ECMAScript5也增加了几个方法,通过它们可以指定对象的行为。不过请注意:一旦把对象定义为防篡改,就无法撤销了。



不可扩展对象

默认情况下,所有对象都是可以扩展的。

也就是说,任何时候都可以向对象中添加属性和方法。

密封的对象

ECMAScript 5为对象定义的第二个保护级别是密封对象(sealed object)。

密封对象不可扩展,而且已有成员的[[Configurable]]特性将被设置为false。

这就意味着不能删除属性和方法,因为不能使用Object.defineProperty()把数据属性修改为访问器属性,或者相反。属性值是可以修改的。



冻结的对象

最严格的防篡改级别是冻结对象(frozen object)。冻结的对象既不可扩展,又是密封的,而且对象数据属性的[[Writable]]特性会被设置为false。如果定义[[Set]]函数,访问器属性仍然是可写的。ECMAScript 5定义的Object.freeze()方法可以用来冻结对象。

冻结对象是很有用的。因为JavaScript库最怕有人意外(或有意)地修改了库中的核心对象。冻结(或密封)主要的库对象能够防止这些问题的发生。


感谢大家支持,评论或者私信我可白嫖资源~

将自己进大厂前花5w买的内部python培训课程,整整400集,现在拿出来分享给大家,手把手教学,轻松就业不是梦,_哔哩哔哩_bilibili