如何判断你的Web应用已遭遇攻击
来源:天融信教育
网站内容被篡改?数据库出现转储?神秘的文件不时出现?没错,这一切都意味着你的Web应用程序很可能已经受到黑客攻击——今天我们要探讨的就是判断这类问题的存在,并以具备通行性的方式加以解决。
当客户与我们的业务进行互动时,其首先接触到的往往正是Web应用程序。Web应用可以说是企业公众形象的关键性代表——但正是这种极高的曝光度也使其成为恶意人士们的主要针对对象。
大多数指向Web应用程序的攻击活动非常隐蔽而且难于发现在今天的文章中,我们将探讨五种可能预示着Web应用程序遭到入侵的显著征兆——而这也应该成为大家排查问题的最佳起点。
1.应用程序的运行状况与设计规划不符
对应用程序进行监控可以说是大家揪出异常状况的最佳途径——是的,没有之一。应用程序也许会以预期不同的次数显示某些页面,或者将用户重新定向至完全不同的其它页面。也许网络流量会突然增加,但企业本身却没有任何合理的营销活动来支持这种莫名其妙的高访问量。举例来说,某家每天平均订单数量为50笔的小型在线店铺突然出现每天高达5000次的访问流量,那么别急着开心——这肯定是出了问题。
当然,这些还不足以完全证明我们的Web应用程序已经遭到攻击。缓慢的页面载入状况很可能源自某些临时性的网络连接问题——甚至是某些DDoS攻击,如果大家有理由相信攻击者可能采取这种手段的话。不过相比之下,积极采取行动进行调查肯定要比坐等更大的问题突然降临好得多。
如果应用程序将用户重新指向至其它页面,请务必马上调查其实际原因。这到底是恶意广告劫持页面功能所导致?还是页面中的代码最近进行过变更?抑或是数据库当中的信息遭到了篡改?
总而言之,请大家养成利用正常行为对生产环境下的应用进行解析的好习惯,这样预期之外的状况会被立刻发现并接受我们的深入调查。
2.发现预期之外的日志信息
如果设置得当,那么日志信息将成为我们揪出攻击活动的宝贵矿脉。
据库日志:从数据库日志中可以查到意料之外的查询;如果数据库日志中短期内出现了多个错误,那么可能有人在尝试SQL注入;
Web服务器日志:Web服务器软件会记录出站和入站连接,并针对未经授权的访问或恶意活动记录警告信息;Web服务器通常只会发起到内部数据库的连接,如果存在到公网IP的连接,那么就需要检查一下原因;Web服务器同其它内部资源(如个人文件共享目录、个人电脑)通信也可能是一个遭到入侵的线索;
应用程序日志:如果应用程序创建了管理员级别的账户或者其它特权账户,就要验证下该账户是否合法;从应用程序日志中可以查到时间或地点异常的访问;如果与表单提交或页面加载相关的错误增加,那么有可能是页面遭到了修改。
另外,不要单纯关注数据流出网络之外的状况,而忽略了业务环境内部的数据移动现象。如果Web服务器与其它内部网络资源进行过通信,例如用户文件共享与个人用户计算机,那么这可能代表着攻击者已经入侵到了企业内部环境当中并在网络内到处游荡。举例来讲,如果相关应用程序允许用户进行文件上传,那么请务必确保其使用专用的文件服务器而非企业内部的任意传输载体。
如果我们发现表单提交相关错误数量增加或者在页面载入的过程当中出现大量错误的状况,那么很有可能意味着该应用程序正在尝试进行一些与原始设计不符的操作。如果大家遇到了这类错误数量增长的现象,请立即追踪触发这些错误的对应页面并排查其中可能被篡改的代码。
3.发现新的进程、用户或者任务
对Web服务器上的各项进程加以监控,这能够帮助大家快速了解服务器上未知进程的扩散或者已知进程在非正常时间段内运行等异常状况。一般来讲,未知进程的出现在很大程度上意味着我们的应用程序已经不再处于正常的受控范围之内。一旦攻击者在服务器上获得了一个账户,那么其几乎已经能够为所欲为了。
定期对服务器进行监控以掌握用户创建活动因而十分重要,特别是那些具备一定权限的用户账户。这些账户通常并非新近创建而成,因此我们有必要对全部账户进行筛查——无论其具体创建时间如何。如果特定用户不应要求提升自身权限或者root访问资格,但却出现了请求提交的情况,那么我们几乎可以认定其登录凭证已经为攻击者所窃取。
应当养成在Linux服务器上查看定时任务(即crontab)或者在Windows服务器上查看计划任务的好习惯,这能帮助大家切实掌握正常状况下的各条目运作情况。如果有新任务被添加进来,这可能意味着我们的Web应用程序正在进行一些预期之外的活动。也许最终大家会发现其根源只是一项临时性维护任务——但我们也不能排除这是攻击者在家中利用自己的手机从应用程序处定期获取来自命令与控制服务器新指令。攻击还可能会以自动化方式分批向远程服务器发送额外数据,这些都是值得关注的显著征兆。
4.文件内容遭到修改
Web应用程序当中几年以来始终未被修改过的文件是否会在近期显示出时间戳变更?如果我们的Web服务器没有经过正确配置或者应用程序当中存在安全漏洞,那么攻击者们很可能会对应用进行修改以运行他们的恶意代码。相关恶意代码往往会被注入至JavaScript或者经过重量写的模块。有鉴于此,大家需要检查时间戳以确保各文件没有在未经授权的情况下受到修改。如果文件已经遭到修改,那么请将其与原有版本进行比对,从而了解其中的具体变更内容。
有多款实用程序能够扫描应用程序,从而揪出其中的恶意代码。因此请定期运行以确保我们不至于遗漏任何重要的文件内容变更。
另外,我们的Web服务器上是否出现了大量在正常使用情况下不可能存在的新文件?Web root当中出现新文件明显不属于正常情况,特别是在这些新文件属于脚本或者其它类型的可执行文件时。将文件添加至Web root下应当是一个经过详尽记录的过程,而且所有相关活动都应遵循既定计划的引导。如果大家在Web root或者服务器的其它位置发现了新文件,那么恭喜——您已经中招了。攻击者可能在利用大家的应用程序进行恶意软件传播,包括针对其它不知情网站的访问者或者运行脚本将其重新定向至其它位置。当然,新出现的文件也可能以纯文本格式出现,其中包含有攻击者已经收集到的各类有价值数据。
如果大家的Web应用程序使用第三方插件,那么请检查这些插件以确保它们不会在未经提醒的情况下进行更新或者安装。千万不要随便安装此类插件,因为它们虽然能够让我们的网站看起来更酷炫,但同时也会给站点带来恶意代码入侵的可能性——因此大家必须以审慎的态度加以对待。
5.收到警示信息
如果大家的应用程序遭到入侵并已经开始传播恶意软件,那么其它安全工具很有可能已经将其列入了高危名单。谷歌公司在汇总Chrome浏览器用户的使用经历并对高危页面进行屏蔽方面做得非常到位;当然,其它浏览器厂商也会定期更新自己的恶意站点黑名单。定期利用这些浏览器来检查自己的应用程序,观察其中是否给出了任何警示信息——或者直接利用谷歌推出的Safe powsing工具对自己的站点加以审查。
监控社交媒体及帮助台电子邮件以了解来自用户的真实声音。如果用户表示他们由于相关邮件被自动标记为垃圾邮件而无法进行密码重置,那么我们就应当考虑自己的应用程序是否已经被网络安全行业认定为垃圾邮件中继。