如何在APP端检测网络风险?

一、背景

app端进行网络的检测,主要是网络安全层面进行检测,比如典型的,通过app端去检测网络内是否存在中间人窃听、dns劫持。通过这种方式,可以避免app在网络传输中遇到

信息窃取、信息篡改等风险。app作为客户端,在触发核心逻辑和核心数据传输之前,如果检测到当前网络存在风险,可以对用户进行提醒。

从技术上来说,这种网络安全的检测能力可能不够精准,但是从用户层面上来说,可以显著加强用户对app安全能力的感知。目前此功能在银行类APP、部分IOT APP出现的较多。

前段时间,公司内部的一个项目,也来进行相关技术能力的咨询,计划在车机系统上运用。所以这里整理一下这方面的一些技术积累。

二、常见的网络侧安全风险

1,中间人攻击

    中间人常见的是在正常的客户端和服务端中间进行身份伪造,面对客户端伪造成服务端,面对服务端伪造成客户端。中间人攻击的手段和目的可能有多种类型,如下:

网络嗅探,中间人通过抓取网络流量并分析数据包,获取通信内容。主要目的在于获取网络传输数据。

网络重放攻击,通过捕获并重新发送已有的通信数据包,使得攻击者能够冒充通信双方之一。

会话劫持攻击,通过拦截并篡改会话信息,使得攻击者能够参与已建立的通信会话。主要目的在于实施数据篡改。

SSL劫持攻击,通过伪造SSL证书或篡改SSL通信过程,攻击https内容。

中间人攻击可能造成的后果可能包含数据泄露、账户被利用、数据被重放攻击、数据被篡改等。虽然中间人攻击理论上实现成本较高,比如需要依赖于arp欺骗,但是如果业务

本身存在漏洞,可能会造成比较严重的后果。例如设备的解绑请求,如果没有做防重放处理,可能会被中间人拦截记录后,在特定时间进行重放,造成用户设备离线。

2,网关设备漏洞

    网关设备,例如典型的如路由器,由于网关设备控制所有的网络流量流入流出,设备本身存在漏洞,可能会被恶意攻击,攻击者可以获得网关设备的控制权限,从而对经过网关设备的网络流量进行监听截取和篡改。如路由器设备,如果存在web系统漏洞或者特定端口的权限控制漏洞,可能导致攻击者可以通过命令行进入路由器系统,获取控制权限。在路由器设备上通过命令来获取数据包。

3,钓鱼网络

       钓鱼网络是一种网络攻击,它的目的是通过相同的网络ssid来伪造一个网络信息,用户在不知情的情况下,登陆了攻击者伪造的网络。例如攻击者可以通过无线攻击,使正常的wifi掉线。然后攻击者建立ssid相同的wifi,这种情况下用户可能         会主动连接上伪造的wifi网络。由于在攻击者伪造的网络中,攻击者是控制网关设备的,通过这种方式来实现中间人攻击。 钓鱼网络攻击可能会导致造成信息泄露、身份盗窃。

4,网络未加密

       网络未加密,或者弱密码加密的情况下,攻击者可以直接链接或者通过暴力破解的方式链接到网络。链接到网络后,攻击者和被攻击者处于相同网络下,在这种场景下,就给了攻击者进行中间人攻击,或者直接对设备/系统进行攻击的机             会。

5,DNS劫持

DNS劫持是通过改变了网络中的DNS设置,使得用户的网络请求被重定向。DNS造成的危害类似中间人攻击,只是实现方式不同。为了防止DNS劫持,可以使用安全DNS服务。不过安全DNS目前在比较重的客户端上使用的较多,嵌入式设备         中很少使用。

6,ARP攻击

       ARP劫持目的是通过在网络中伪造 ARP 消息来欺骗其他设备。这种攻击方式通常用于网络中的中间人攻击。简单点说,可以认为是攻击者通过ARP劫持,让被攻击的设备误以为攻击者控制的设备是网关设备,通过这种方式截取网络流量,

       从而实现中间人攻击。在网络中,每个设备都有一个唯一的 MAC 地址,表示该设备的物理地址,当一个设备想要向另一个设备发送数据时,它需要知道目标设备的 MAC 地址。ARP 协议用于解析 IP 地址到 MAC 地址的对应关系。在 ARP 劫         持攻击中,攻击者会发送伪造的 ARP 消息给其他设备,欺骗它们将目标 IP 地址映射到攻击者的 MAC 地址上。这样,攻击者就可以截获所有发往目标 IP 地址的数据包,并且可以发送伪造的数据包给目标设备。通常,ARP 劫持攻击是通过在          局域网内部执行的,因此它只能用于欺骗局域网内的设备。但是,有时候攻击者可能会使用其他手段(例如路由器漏洞)来实现对广域网内设备的 ARP 劫持。、

三、如何从APP端检测网络侧的安全风险

1,证书劫持的检测方案

SSL证书劫持,主要特征在于客户端收到的证书不是服务端返回的证书,而是一个伪造证书,证书是有明显区别的。所以检测逻辑可以发送一条https的请求,然后本地校验服务器证书。如果有证书劫持的话,应该就不是官方证书或者信任证书。

2,dns劫持的检测方案

dns劫持,主要特征在于特定域名客户端的DNS返回收到的IP不是正常的IP,而是被篡改的IP。从客户端角度来讲,如果检测到收到多个DNS响应,则网络内可能存在伪造的DNS响应,可以认为存在DNS劫持。但是这种技术方案并不稳定。所以更好的方案是,可以针对核心域名请求DNS后,根据内置的IP范围判断返回的IP是否在范围内。如果不在,则可以认为核心域名遭到了DNS劫持。

3,网关设备的检测方案

网关设备存在漏洞,检测方案就是开放端口扫描和漏洞扫描技术。安全性较强的网关设备,一般不会开放80以外的其他端口,如果开放端口过多,例如开放了22 23 等端口,则基本可以认为安全性方面有改进空间。漏洞扫描技术则是可以简单的内置一些POC请求,通过返回数据去判断网关设备是否存在已知的典型漏洞。如典型的路径遍历漏洞,可以通过发送一条构造的url,通过返回值内容就可以判断。

4,弱密码的检测方案

客户端直接获取当前ssid的密码是否为空,或者是否为弱密码即可。

5....

四、客户端侧的安全风险类型

待补充

五、部分APP的具体实现效果和分析

1,百度手机助手网络安全监测

百度手机助手相关功能做的比较早,在前几年手机市场还百家争鸣比较混乱的时候,主流的操作系统还不完善,所以有很多工具类APP的空间。

现在手机市场已经被分隔的差不多了,系统也越来越完整,工具类APP基本上也都销声匿迹。百度手机助手由于已经停止维护,这个功能也已经云端下线,目前无法看到具体的应用效果了。不过之前做过简单的技术方案分析:

1,SSL证书检测,APP发送了一条https的请求,然后本地校验了服务器证书。如果有证书劫持的话,就不是百度官方证书了(这个应该可以用fiddler模拟下)

实际测试,fiddler设置证书后,确实会提示,功能效果准确

2,第二步是探测端口,如80,8080,21等端口,通过端口检测是否安全

发送端口还包括,还有2049 5555 3306,理论上路由器不会开放这些接口

3,有一条mobsec-wifi.baidu.com,安全扫描相关的请求,这里结果也是走了云控

4,wifi加密检测,可能有本机获取wifi是否经过加密。

也有一个直接访问网关的请求,怀疑是通过网关返回的页面内找关键字,判断是否加密

5,wifi弱密码检测,没看到有具体网络请求,应该是APP直接监测wifi密码是否在弱密码库

6,DNS监测功能

实际模拟异常环境,并没有监测出来。暂时不清楚具体逻辑

7,arp风险检测?如何检测有没有arp劫持?

实际模拟异常环境看,并没检测出来。

如果有arp欺骗,设备端认为的网关,应该会发生mac地址变更,比如有两个网关,这个应该是可以检测出来的。但是也许无法通过

单次监测发现?

8,还有一个upnp协议请求,应该是已知的upnp协议相关的路由器漏洞。

9,mdns协议也有请求。应该是用mdns找设备,探测了很多域名,例如airplay,androidtvremodt,alitv,360eye,homekit,eaycontrol等一堆

应该是在局域网内探测其他设备,查找是否有风险设备。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容