在当今的网络环境中,很多企业对外主要提供网站服务和APP服务,APP服务大多也是WEB协议的接口。这就导致WEB服务暴露在各种安全威胁中。无论是内部人员的操作失误或者违规操作,还是外部黑客的恶意行为,都可能通过WEB操作,造成潜在的安全隐患。例如,内部人员或者攻击者将一个风险页面(如敏感信息泄露页面、网页后门等)成功发布到服务器上,导致企业信息泄露,甚至被恶意控制;比如攻击者通过URL参数的尝试进行XSS,SQL注入等攻击。对此,建立一个高效的URL监控机制显得尤为重要,这样可以及时发现问题,防范安全风险。本期给大家介绍新增URL和异常URL两类场景的监控预警。
一、URL(统一资源定位符)
URL 是“统一资源定位符”(Uniform Resource Locator)的首字母缩写,中文译为“网址”,表示各种资源的互联网地址。一个完整的URL通常由以下几个部分组成:
a、协议(Scheme): 也称为"方案",指定了访问资源时使用的协议。常见的协议有:http://: 超文本传输协议,未加密的网页传输。https://: 安全的超文本传输协议,采用加密通信,确保数据安全。b、域名(Domain)或IP地址: 指向具体的服务器或资源提供者,通常是一个网站的名称或其IP地址。c、端口号(Port): 用于指定服务器上的特定端口,默认情况下HTTP使用端口80,HTTPS使用端口443。如果使用默认端口,可以省略该部分。示例:www.example.com:8080 (8080是非默认端口)d、路径(Path): 资源在服务器上的具体位置,通常指向文件或目录。e、查询参数(Query Parameters): 可选部分,通常用于传递数据或参数给服务器。它以?开始,参数以键值对的形式存在,多个参数之间用&分隔。例如:?id=123&search=keywordf、片段标识符(Fragment Identifier): 可选部分,用于标识页面中的某个位置或片段,通常由#符号引导。例如:#section1https://www.example.com:8080/folder/page.html?id=123&search=keyword#section1
针对内部员工可能的违规或误操作,比如将一个未经批准的页面发布到网站服务上,或者攻击者将一个后门webshell上传至了网站服务器。对于这种情况,可以对WEB服务的URL建立动态字典来监控。当发现一个新的URL请求且正常响应,并不在动态字典中时,产生新增URL监控预警。192.168.2.103 - - [04/Jan/2024:14:51:45 +0800] "POST /search/aggFields/list/2501 HTTP/1.1" 200 3961 https://192.168.3.3:8443/search?tabId=2001 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36
Waf-g2 tag:waf_log_webaccess site_id:1351218462 protect_id:1351218462 stat_time:2024-06-15 10:04:51 alertlevel:LOW event_type:WEB Access Logs dst_ip:10.24.37.99 dst_port:8080 url:/thread.php?fid=4 src_ip:10.24.42.56 src_port:62020 method:POST agent:Python-urllib/2.5ows NT 6.1; rv:16.0) Gecko/20100101 Firefox/16.0 count_num:1 wa_host:www.hopeful.com wa_referer:www.hopeful.com http_protocol:HTTP/1.1 protocol_type:HTTPS wci:aGVsbG8sd29ybGQK wsi:aGVsbG8sd29ybGQK country:China action:Other req_content_type:text/html req_content_len:5120 res_content_type:image/x-icon res_content_len:2150 waf_status_code:500 ser_status_code:200 correlation_id:12345678 raw_client_ip:10.67.9.121
将中间件日志、WAF审计类日志分别采集到平台中,把URL字段进行解析成单独的一个字段,然后进行分析管理。动态字典是一种数据结构,它能够根据不断变化的数据动态地更新自身的键值对。与静态字典不同,动态字典不是一次性定义或固定的,而是随着新的数据输入或者条件变化,实时地调整和更新其内容。这种字典在需要处理不断变化的输入数据,或根据特定规则生成和更新数据时非常有用。假设我们需要监控一个系统中的URL变动,当出现新的URL时触发预警,动态字典可用于存储和维护这些URL,同时动态更新。开始时,系统会抓取一组初始URL,将这些URL作为动态字典的初始值。系统会自动查询统计出新的URL,对于字典中尚不存在的URL,将其视为新URL,添加到动态字典中。新增URL预警:将动态字典所需的URL值和响应状态码解析出来,定时统计新的URL值数据入到中间表(动态字典),经过一定时间的统计形成初始化的动态字典库,并且针对该字典库进行检查后,作为标准。将字段(weburl)当做监控对象和满足要求的状态码作为检测规则,当告警监控程序获取到动态字典出现新的正常响应的weburl时候,产生预警。图2:定时URL动态字典库配置
对于常见的Web威胁类型,如SQL注入、XSS攻击、RCE漏洞等,虽然这些攻击方式各有不同,但基本遵循一个通用的模式,即通过在参数中注入恶意payload来发起攻击。攻击者可能会利用GET请求、POST请求、COOKIE数据、URL路径等位置的参数来执行这些攻击。那么针对这些参数中异常情况,使用异常检测模型应针对参数中的异常情况进行识别和预警,这样可以有效覆盖大部分常见的Web攻击类型。同上一致,将中间件日志、WAF审计类日志分别采集到平台中,把URL字段进行解析成单独的一个字段,然后进行分析管理。隐马尔可夫模型(英语:Hidden Markov Model;缩写:HMM),或称作隐性马尔可夫模型,是一种统计模型,用来描述一个含有隐含未知参数的马尔可夫过程。其难点是从可观察的参数中确定该过程的隐含参数。然后利用这些参数来作进一步的分析,例如模式识别。使用隐马尔可夫模型(HMM)进行URL异常检测是一种基于统计学习的方法,用于识别潜在的恶意或异常URL。HMM 在这种场景中的应用主要是通过学习正常URL的特征,来识别与正常模式不符的异常URL。基于隐马尔可夫模型的URL异常检测算法可以用于检测URL访问模式中的异常情况。从观察到的输出(例如URL访问序列),推测隐藏的状态序列(例如正常和异常访问行为的模式)。系统收集大量的URL访问日志数据,数据格式包括URL、访问来源、请求参数等。对数据进行分类标记,使用统计方法来估计状态之间的转移概率以及在各个状态下产生某个URL访问行为的概率。实时收集新的URL访问数据,形成观察序列。URL异常检测:通过程序实现的基于隐马尔可夫的URL异常检测算法,针对设定好需要学习检测的URL,通过学习对比后,将存在偏移和异常的URL请求产生预警。
新增URL监控,覆盖内部员工违规上线的页面、攻击者上传的后门页面等场景,实时监控新的URL产生,发现潜在威胁。基于隐马尔可夫模型的URL异常监控,能够识别行为模式中的异常。两者可以根据网络规模、访问模式复杂度、可用资源等条件,结合这两种方法,能够加强对URL监控,发现新增URL和识别URL异常访问,进一步有效提升网络安全防御的整体能力。
优网科技,优秀企业首选的互联网供应服务商
优网科技秉承"专业团队、品质服务" 的经营理念,诚信务实的服务了近万家客户,成为众多世界500强、集团和上市公司的长期合作伙伴!
优网科技成立于2001年,擅长网站建设、网站与各类业务系统深度整合,致力于提供完善的企业互联网解决方案。优网科技提供PC端网站建设(品牌展示型、官方门户型、营销商务型、电子商务型、信息门户型、DIY体验、720全景展厅及3D虚拟仿真)、移动端应用(手机站、APP开发)、微信定制开发(微信官网、微信商城、企业微信)、微信小程序定制开发等一系列互联网应用服务。
责任编辑:优网科技
版权所有:http://www.uweb.net.cn (优网科技) 转载请注明出处