值班读网
正在值班,正好写篇文章。
前几天东北大学王宇分享了一个OpenWebMonitor,通用型网页内容监控工具,说是Open,其实只有老的版本才有GitHub代码。我下载看了下,可以选择监控区域,监控诸如网页变化,区域图片价格变化等等。
我在2017年某次重保后曾经交过一篇作业,http://media.cutech.edu.cn/jsgl/wlaq/201711/t20171115_1566707.shtml ,《重大活动时期网站安全防护手册》,里面对一些防护已经说得较为清楚了。
人工读网
值班读网一般的要求就是,7*24,值班人员在查看运行日志之余必须经常访问一下重要网站,看看有没有什么异常。
安全措施,你可以不停往上面堆东西,总会有一些用处,你说拜杨超越,请大师给服务器开光有没有用?我觉得很有用啊。不过这些只是在实施真正更有价值的主动安全动作后的补充,值班读网是事后的措施。如果资源有限,一定要投入在最能产生效益的地方。
机器读网
人工读网只能聚焦少部分网站和少部分页面,而且一定要记得自动刷新要把Cache关掉。那引入机器来读呢?
不能只看变更比例
机器看网页是否被篡改一般做法就是把网页抓下来,跟基准进行MD5比对,有修改了diff结果出来人工确认。
但是网页是一定会有修改的,首页最新新闻可能会更新,即使新闻内容页面不更新,GET访问请求,也会在后台更新计数器并在HTML里显示。所以diff结果太多需要人工比对导致机器阅读失去意义。
当然你可以对网站进行一些改变,使之对机器读网友好,比如说不更新新闻、不显示计数器、分离出页面可变和不可变内容区别对待。
有些云篡改服务商有提供如果页面修改超过多少比例才报警,这个是不靠谱的,如果恶意用户替换了图片,那网页是不会有任何变化的。即使直接替换在网页内,也可能只是改个图片地址,或者增加一个js文件,这些变化比例都非常小,所以不能看变更比例。
必须所有交互都比对
常规做法可能,对某个门户网站,抓取下来,分析里面的图片和js地址,再抓取二级页面,所有资源MD5固定为基准,但是这样子也不靠谱。有些js代码比如轮播图,在页面里面可能不会体现地址,或者只有第一张有地址,其他就是动态获取的。所以静态抓取比对是不靠谱的,最好是直接控制一个Headless的浏览器,直接去访问页面,让这些HTML和JavaScript在V8引擎里面真正跑起来,然后到处动一动鼠标,等待几秒,你才能知道真实获取了多少资源,再进行比对。
在这个过程中,对浏览器和远程服务器的所有交互都必须做比对,不止是HTTP BODY。举个例子,Cookie。
Cookie是写在Response里面的,下载的HTML、Image、JavaScript、CSS文件是不包含这些内容的,如果你有个页面傻傻的根据Cookie内容展示诸如“某某某,下午好”,某某某是从Cookie读取的,那恶意用户就可以只修改服务器写入的Cookie要求,网页不会有任何变化,但是页面也会被篡改。
再有,有些恶意内容是只有UserAgent是搜索引擎才展示的,用普通浏览器打开页面是很正常的,这种你如果没有特意去修改UserAgent也是看不到的。
有些恶意内容是根据IP来展示的,比如一二线城市访问起来正常,其他线城市访问起来有加内容。如果没有分布式访问,也是看不到的。
还有一些逻辑炸弹,比如前期通过入侵已经在JavaScript里植入恶意内容,等时间到某个时刻触发,这种逻辑上的问题防篡改无法发现。
还有HTTP到HTTPS的302跳转的处理,某个页面原先404现在突然200了,或者原先200现在404了,这些HTTP状态码的变化都是需要处理的。
总之,你应当从各个地方,模拟各个不同浏览器,通过控制模拟人工真实访问,获取所有流量进行比对,而流量里面的Reponse结果有些每次都不同的,比如输出页面的缓存时间,Cookie的变化,这些都需要例外处理。
其他限制
然后还有些页面是在首页没有链接指向的,甚至整个网站都没有。比如最近的KindEditor配置错误漏洞,使用示例代码的upload_json.xxx和file_manager_json.xxx直接上载恶意内容,这些内容可能根本就不在首页有链接,或者就是孤儿链接,没有链接是发现不了的。恶意用户写入了内容,你必须在一段时间后在搜索引擎或者在线流量里分析才能看到。
所以机器读网也是有很多限制和不足的,在你挑选工具或者公司的时候一定要清楚对方是如何读的,好的话再部署一个网站靶子做一些有针对性的测试用例和演练。
常规读网
如果跳出值班读网来看,常规读网我觉得更有意义。可以将整个学校所有网站爬取,HTTPS、Mixed Content、IPv6、双语、错别字、恶意代码、更新率、查重、框架版本、SEO程度、依赖、死链接、超大图、总链接数、HTML标准、可用性、性能等等各种各样的Probe上上去,评估和改进整个学校网站建设的技术水平,结合网页美工设计和栏目信息内容,对网站进行整体的画像和考核。不过这个是很折腾的。