一种建设APP 网络安全纵深防御体系的综合方案研究*

2023-03-01 17:06刘威
科技与创新 2023年4期
关键词:源码源代码数据包

刘威

(中国电信股份有限公司重庆分公司,重庆 401122)

当前互联网快速发展,用户可直接在网上下载日常使用的APP,主要下载渠道包括APP 运营者官网、第三方APP 应用分发平台,比如华为应用市场、小米应用市场等。工信部《2020 年1—11 月互联网和相关服务业运行情况》一文公布,截至2020 年11 月末,中国国内市场上监测到的APP 数量为346 万款。互联网上暴露的APP 如此之多,相信还有部分公司的内部APP 未被统计,暴露公网的APP 非常容易被黑客进行渗透测试,如果被非法挖掘到漏洞进而被恶意利用,会对用户信息、资产安全和公司系统安全造成比较大的影响。在各公司内部,安全部门针对网络安全防护和漏洞检测都有着严格的要求和制度。作为安全研究员,除了常规的软件源代码静态审计、APP 加固方式,还需要思考研究其他的红蓝对抗攻防方案。本文以平时安全工作为基点,先从黑客视角分析研究APP 渗透测试技术,再从反渗透测试,与黑客进行对抗,研究如何预防APP 被渗透测试,在重庆电信内部进行多角度建设针对APP 安全的纵深防御体系。

1 APP 常见渗透测试方法

移动APP 安全评估主要采用自动化扫描、人工渗透测试,其中人工渗透测试主要是用抓包。

1.1 自动化扫描

使用MobSF、QARK、pinpoint 等工具扫描APK静态程序,可以主要发现程序反编译、数据明文存储、任意代码执行、跨站脚本攻击等安全风险。自动化扫描根据分析打包后的二进制程序进行解压分析。分析各项配置文件,如果未加固,还可进行反编译源代码,深入自动化审计源代码。

1.2 手工模糊测试(功能测试)

根据APP 界面业务逻辑进行分析,寻找业务逻辑中的漏洞,比如密码找回功能,实现任意账号用户密码找回重置漏洞、验证码校验绕过漏洞等逻辑设计缺陷的漏洞。

1.3 手工模糊测试(接口数据包攻击)

使用BurpSuite 软件截取每个接口的数据包,分析具体的每个数据包接口、内容、参数。篡改数据包实现攻击,能够导致包括但不限于SQL 注入、木马上传、目录遍历、任意命令执行等严重高危漏洞[1]。

2 常见网络安全防御

针对上面提出的3 点常见渗透测试,业界已经有常见的针对性防御手段。

2.1 防止自动化扫描

使用WAF、IDS 等应用层和网络层防火墙工具进行自动防御,根据用户IP 访问次数和特殊URL、数据包特殊敏感字段进行综合研判,进行单次阻断攻击行为和封禁IP 操作。

2.2 防止手工模糊测试(功能测试)

结合自动化测试框架Selenium、Appium 开发企业自动化测试系统进行固定模板路线测试和非固定路线测试,7×24 h 不定期点击测试APP 所有功能点,提取功能列表,抽取每个功能数据包,针对提取数据包进行自动主动替换敏感字段进行模糊攻击,最终自动化测试系统、自动研判输出自动化报告,人工根据报告确认是否存在漏洞。

2.3 防止手工模糊测试(接口数据包攻击)

接口数据包攻击,总体思路是采用人工抓包,以攻击者视角查看URL 栏、header、cookies、数据包体等位置是否可进行注入、替换、遍历以及逻辑等漏洞。预防该方法常规是使用添加sign 字段,针对数据包内容进行签名,然后将sign 放入json 字段或者header 中单独传递到后端,后端根据该sign 去校验数据包是否被篡改,保证接口数据真实性。另一种业界常用方法是针对接口数据包进行全加密,采用AES、3DES 或者国密SM4 等对称加密算法和国密SM2、RSA 非对称加密算法进行加密,后端根据对应算法解密,以此确保接口数据真实性。

3 常见网络安全防御的缺点

前面介绍的3 种常见防御确实可以阻止很大一部分黑客攻击行为,可有效降低APP 被渗透测试后发现漏洞的概率。但是结合3 种方案针对性防御,成本太高,需要所有软件开发者具备完善的安全常识,熟悉安全左移相关知识。如果某一个功能点由于开发者疏忽未进行加密或者未进行严格校验,均可能被攻击者突破,进而导致其余防御功亏一篑。

4 新方案探索与实践

传统预防方案效果不佳且成本较高,本次笔者将从多维度进行探索更加高效、更加简洁的预防APP 被渗透测试(攻击)的方案。具体从以下几个维度进行开展试验。

4.1 (安全左移)源代码静态审计

在开发阶段,从2021-06-01 开始,安全部门要求各研发中心团队结合静态源码审计工具和人工源码审计,将安全左移,按照源码自动化审计工具报告建议,不断迭代优化系统,经历了4 个月。此办法可封堵开发阶段大部分常规漏洞和业务逻辑漏洞,比如某内部电信业务办理系统,包含APP 和服务端系统,如图1所示,从最初的缺陷数总量变化2 393 个到323 个,缺陷数压降87%,效果明显。经过仔细分析发现,剩下的大多属于误报,结合实际情况无需进行整改。

图1 安全左移,静态源码审计缺陷数变化

使用电信集团内部云道安全中心提供的静态源码审计工具,针对源代码项目和打包生成后应用进行静态扫描,结合语义和正则匹配调用,发现脆弱性源码和配置文件。

人工CodeReview,每项目指派2 名高级开发工程师定期针对新提交的git 仓库源码进行人工代码审计,弥补静态审计工具不足。

4.2 加强源码保护

针 对 APP 内 原 生 代 码 采 用 OLLVM(Obfuscator-LLVM 是瑞士西北应用科技大学安全实验室于2010 年6 月份发起的一个针对LLVM 的代码混淆工具,增加对逆向工程的难度)进行混淆保护,提高反编译后代码审计难度。

现在公司APP 开发主要有原生APP 开发技术、混合开发Hybrid App 技术(结合原生APP 和WEB 技术开发的混合技术开发的APP),重庆电信内部IT 系统也有多款应用采用了混合技术进行开发。针对Hybrid App 技术,笔者们创新性地对JavaScript 代码部分也进行混淆加密保护。采用JS 加密技术可最大化地保护前端逻辑和秘钥,加大前端审计难度,提高前端代码安全性。如采用商业收费技术——瑞数JS 加密,或者免费的jsjiami 网提供技术。为了控制成本,在研发中心内部,笔者们采用免费的jsjiami 网的JS 加密功能。

JS 加密前:(function(w,d){alert(” 我是加密前的弹窗” );})(window,document);

JS 加密后:备注:因加密混淆后数据填充导致代码变成,此处为节选部分加密后的代码。JS 加密后效果(源码)如图2 所示。

图2 JS 加密后效果(源码)

var

_0xodW=” jsjiami.com.v6” ,_0x50cf=[_0xodW,” MS3Dszk=” ,” I8O0wpM7wpY=” ,” HMOQa8KOVA==” ,” w4Zzw7XCiQ==” ,” fcKSKsOpUA==” ,” w4DDnhwAwq0=” ,” wqsTw5XDgnc=” ,” w7HDiA0HwrI=” ,” w7jCr0PDng==” ,” w5XDhg3CpGo=” ,” XMOcw5xS” ,” TmNRPz8=” ,” fE8fwp1I” ,” w6zCt8K1eUo=” ,” w6hPREE=” ,” w5fDgQIFwppMw7Y=” ,” w6MYwqk8Ug==” ,” wpgHYhFVZEVWwqo=” ,” fcKrBcKawqzCvsKP” ,” UsKxa BpC” ,” QcKxBMOow4c=” ,” e0DCg8OaFA==” ,” PMKRw5pz w67DmnkWZA==” ,” w7/CmsKNY34=” ,” UmPDl21s” ,” Gmt ZwqgiAA==” ,” w4MTw6PDlkZjw5Y=” ,” KsKQw5Blw6fDn 3I=” ,” fMKgDcO/w6Y=” ,” Y8KGHsOOw5E=” ,” BcKRwonC mg==” ,” asK2CsKKwqY=” ,” w7ZAUEA=” ,” I0BcAsOq” ,” LM KNw4x5w7o=” ,” PTvDuSgwBcKsc8K1” ,” w555w6E=” ,” w6c hwq05aA==” ,” wpwPcRhc” ,” QsKgBsOw” ,” VmjDmktLVg4=” ,” OWt4w4srwqsMV8OG” ,” wrJQa8KW” ,” QEbCo8OnMA==” ,” wo4hVMKqwoo=” ,” cRI2w40w” ,” HxnDtR0H” ,” wrU6Vyx P” ,” US86w6gJw4RiLcKgwoTDoW/DrMK1QhQgw5xswo Q8worCuA==”

加密JS 运行结果如图3 所示。

图3 JS 加密后运行结果

可观察到JS 代码加密前和加密后差距较大,完全隐藏了真实的业务逻辑,并可正常运行。

完整APP 再次进行加固,保证APP 整体安全。国内主流第三方厂家如梆梆安全、爱加密、360 加固等都提供APP 加固产品。APP 加固可防止泄露敏感配置信息和其他业务逻辑代码信息,是一道源码保护的最终防线。APP 加固增大反编译APP 难度,将大部分攻击者拒之门外。重庆电信APP 同时采用了爱加密和梆梆加密,不同业务采用不同的加密规则。

如图4 所示APP 经过加固后隐藏了真实源代码,反编译后无法查看。随着加固引擎的升级,脱壳难度越来越大[2]。

图4 APP 加固后反编译结果

4.3 (动态运行检测)时刻检测APP 运行环境安全性

我们在APP 运行时,activity 动态切换时刻,持续检测APP 是否运行在虚拟机中,比如检测夜神模拟器、网易MuMu 模拟器等常见国内外模拟器环境。我们在开发侧加入了如下前置检测代码,一旦检测到存在虚拟机内运行特征自动闪退并推送设备环境等信息到APP 服务端,联动风控产生告警,人工跟踪复核是否恶意攻击。

检测APP 运行环境中是否存在ROOT 权限,存在ROOT 权限的环境往往不安全,现在各大厂商禁止解锁BootLoaderh 和ROOT 设备,就是为了提高设备安全性。因此当检测到ROOT 环境后,自动闪退并推送设备环境等信息到APP 服务端,联动风控产生告警,人工跟踪复核是否恶意攻击。

检测APP 是否存在关键HOOK 函数,加入了XPOSED、Frida HOOK 检测,若被HOOK 应自动闪退并推送设备环境等信息到APP 服务端,联动风控产生告警,人工跟踪复核是否恶意攻击。

检测APP 是否存在流量代理和VPN 代理,存在VPN 代理和流量代理(前端开发加入了流量端口转发、VPN 环境检测),说明该APP 大概率正被抓包中或者中间人攻击监听,风险较大。因此需要自动闪退并推送设备环境等信息到APP 服务端,联动风控产生告警,人工跟踪复核是否恶意攻击。

4.4 (动态运行防护)接入WAF 系统,保障服务安全

WAF(WEB 应用防火墙)可保证WEB 服务安全,比如被恶意探测、SQL 注入、命令执行和目录扫描等。WAF 规则时刻更新,预防CVE 以及0 Day 漏洞来袭,第一时间降低产品风险。WAF 可采用开源自建和第三方购买WAF(软件WAF、硬件WAF、云WAF)。

开源自建WAF,比如ModSecurity、FreeWAF、VeryNginx、 Naxsi 等开源产品,再基于此进行访问规制更新,当互联网上出现新漏洞时候,根据对应特征进行配置拦截。

安全厂家的商业WAF。目前主流厂家WAF 比如阿里云WAF、绿盟WAF、中国电信安全帮WAF、启明星辰均可提供较为成熟的保护。现在WAF 采用方案是结合传统攻击特征进行正则匹配+机器学习算法共同研判攻击行为。商业WAF 产品与威胁情报、DDoS防御、Bot 防护、CDN 等常用产品或功能组件的紧密协同能够帮助企业打造针对Web 应用的更为主动的防护体系[3]。

大多数WAF 都是基于规则的WAF。其原理是每一个会话都要经过一系列的测试,每一项测试都由一个过多个检测规则组成,如果测试没通过,请求就会被认为非法并拒绝。带机器学习功能的新WAF 可以学习未知风险。通过一段时间的用户访问,WAF 记录了常用网页的访问模式,如一个网页中有几个输入点,输入的是什么类型的内容,通常情况的长度是多少……学习完毕后,定义出一个网页的正常使用模式,当今后有用户突破了这个模式,如一般的账号输入不应该有特殊字符,而XML 注入时需要有“<”之类的语言标记,WAF 就会根据你预先定义的方式预警或阻断;再如密码长度一般不超过20 位,在SQL 注入时加入代码会很长,同样突破了网页访问的模式,因而被WAF 判断为恶意攻击进行拦截。防护主旨是“不符合我的常规就是异常的”,也是入侵检测技术的一种,比起单纯的Web 防火墙来,不仅给入侵者“下通缉令”,而且建立进入自家的内部“规矩”,这一种双向的控制,显然比单向的要好[4]。

内部同时采用了云WAF 和自建WAF,云WAF 由SOC 部门统一采购,为了避免误伤,规则较大,因此在近源端自建WAF,基于开源WAF 自编规则,结合业务写规则。下面是测试环境验证WAF 效果,对探测性行为也进行了拦截。

访问http://10.236.17.1/index?id=1,正常返回。如图5 所示。

图5 正常访问

访问http://10.236.17.1/index?id=1 or 1=1,被WAF拦截,阻止攻击。如图6 所示。

图6 异常

4.5 接入EDR,保护主机安全

EDR(终端安全响应系统)可实时监测服务器网络连接、数据传输、服务器运行状态、文件生成、内存空间是否异常,当检测出异常后及时防阻断隔离文件或者进程。EDR 可用于攻击者突破前面所有防御,已经着手渗透服务器,或者进行内网横向移动时候,及时监测防御,降低攻击影响。

重庆电信内部同时采用了业内多款服务器安全终端,同时接入了电信集团安全agent,实现集资产发现、基线采集、漏洞扫描、流量探测、主机隔离等功能于一体。EDR 终端检测模型如图7 所示。

图7 EDR 终端检测模型

资产发现:定期通过主动扫描、被动发现、手工录入和人工排查等多种方法收集当前网络中所有软硬件资产,包括全网所有的端点资产和在用的软件名称、版本,确保整个网络中没有安全盲点。

系统加固:定期进行漏洞扫描、补丁修复、安全策略设置和更新端点软件清单,通过软件白名单限制未经授权的软件运行,通过主机防火墙限制未经授权的服务端口开放,并定期检查和清理内部人员的账号和授权信息。

威胁检测:通过端点本地的主机入侵检测和借助云端威胁情报、异常行为分析、攻击指示器等方式,针对各类安全威胁,在其发生前、发生中、发生后进行相应的安全检测动作。

响应取证:针对全网的安全威胁进行可视化展示,能够针对安全威胁自动化地进行隔离、修复和补救,自动完成安全威胁的调查、分析和取证工作,降低事件响应和取证分析的技术门槛,不需要依赖于外部专家即可完成快速响应和取证分析。

5 结束语

本文主要介绍了当前APP 面临的各种网络安全风险、常用渗透测试和漏洞扫描攻击技术,并分析了常见网络安全防御技术以及常见防御技术存在的缺点,最后在重庆电信企业内部以常规方案为基础,采用五步方案对纵深防御的新型防御综合方案进行了探索与实践。详细介绍了从黑客(攻击者、安全检测者)攻击到基本防御,再到纵深防御的方案研究。在建设过程中,从适当的进行安全左移,在开发侧做大量的安全工作,通过源代码审计、加强源码保护(JS 加固、APP加固)、检测APP 运行环境安全、接入WAF 系统,保障服务安全、接入EDR,保护主机安全共5 个方向全方位保障业务系统安全,打造牢固的IT 系统安全堡垒,且该纵深防御方案易于复制,可大规模推广。

猜你喜欢
源码源代码数据包
二维隐蔽时间信道构建的研究*
面向数据可靠传输的高译码率带反馈的LT码
基于TXL的源代码插桩技术研究
国内一站式工程设备租赁平台众能联合完成C2、C3两轮融资
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
浅谈开源操作系统的历史
企业如何保护源码
SmartSniff
软件源代码非公知性司法鉴定方法探析
基于语法和语义结合的源代码精确搜索方法