Android网络防火墙实现初探

SAP-ABAP:SAP ABAP 深度解析:BAPI 从入门到精通 —— 原理、实战与自定义开发全指南 SAP ABAP BAPI 深度解析摘要 本文全面介绍了 SAP ABAP 中的 BAPI(业务应用程序编程接口)技术,涵盖以下核心内容: BAPI 定义与特点:BAPI 是 SAP 为业务对象提供的标准化编程接口,具有面向对象、封装业务逻辑、标准化错误处理和版本兼容性等特点。 BAPI 与 RFC 关系:所有 BAPI 都是 RFC,但需额外满足业务对象注册、标准化参数和错误处理等要求。 BAPI 核心作用:包括业务逻辑封装、系统集成、标准化错误处理、版本兼容和审计合规。 实战演示:通过创建销售订单的完整 阅读详情

1. 智能手机网络防火墙的现状

 随着智能手机越来越普及,以及3G网络的快速发展,越来越多的用户使用手机上网冲浪。于此同时,各类恶意软件也通过网络来盗取用户手机上的的隐私,甚至控制用户的手机。因此智能手机上的防火墙应运而生。

    与PC上的环境不同, Android手机上的网络环境相对没有那么复杂。因此现行主流的Android防火墙解决方案都是对手机里的应用设置网络访问权限,而不会像PC上的防火墙那样提供强大的网络监视、数据包过滤、端口监控等功能。

 

2. Android网络防火墙的几种实现方式

1)   Android应用层:敏感函数hook

                    a.   绝大多数Android应用都是调用Android Framework来实现网络通讯。例如:WebView.loadUrl(),HttpClient.execute(),DefaultHttpClient.execute()等。只需穷举这些类的函数,并将它们都Hook住,就可实现拦截上网的功能了。

                    b.   当然想要Hook这些函数入口,有两种方式:1. 首先获得root权限,然后通过进程注入,将Client代码注入到应用进程,在进程上网时,应用进程将会发起IPC请求到Server进程,由Server进程来决定是否允许其访问网络。2. 通过修改应用本身来加入Hook代码,从而避免了root手机,相对比较安全。洗大师就是使用了这种方法。

                   c.   这种方案的优点是:简单、快速、可实现网络热开关(无需杀死进程)。缺点是:不能拦截所有的网络访问入口。例如:某应用没有调用Android的库,而是自己实现了一个访问网络的库,或者甚至用native代码来实现,那么这时候这个方案将拦截不到任何的上网请求。

2)    Android框架层:android.permission.INTERNET权限

                    a.    在Android系统中,任何想访问网络的应用必须申请android.permission.INTERNET权限。当Zygote在fork()一个AndroidManifest.xml中带有这个权限的应用时,会将当前应用加到inet组中。凡是一个进程的gid组中有inet,那么这个应用就有权限上网。

                    b.     因此禁止应用上网有两种方式:1. 修改应用的AndroidManifest.xml,使其没有android.permission.INTERNET权限。2. 获得root权限,然后注入zygote进程,使其在fork()之后,不要将inet设到应用的gid组中。

                    c.    这个方案相对于第一个方案来说,它可以彻底的屏蔽一个应用上网。实现起来也不复杂,但是gid组一旦设定后,应用进程将再无权限修改。因此被禁止掉上网权限的进程,想要再次获得上网权限,则必须杀死,然后重新由zygote进程fork()生成。

3)    Linux内核层:iptables

                    a.    在Linux内核中,NetworkFilter在TCP/IP的协议栈中加了相应的Hook。通过这些Hook我们可以对网络数据包可以进行过滤,丢弃,修改等。但直接使用起来相对麻烦。幸好Linux给我们提供了一个强大的工具:iptables来简化这一过程。Iptables是一个Linux命令,通过这个命令,可以对整个系统发出去的包,接收到的包,以及转发的包进行拦截,修改,拒绝等操作。具体起使用方法,这里不再展开,有兴趣的朋友可以自行到网上搜索相应的资料即可。

                     b.   Iptable不仅可以按照uid来禁用应用上网,还可以分别禁用某个uid的3G上网和Wifi上网。这给用户带来的极大的方便。

                     c.   这个方案的优点是,不需要进程注入,所以实现起来相对简单。同时能够将3G网络和Wifi网络分别禁用,用户体验将更加好。此外由于iptables的功能远不止这些,基于iptables可以实现功能更加强大的防火墙。Iptable虽然好,但是也是有缺点的,运行iptables需要root权限。基于iptables的Android防火墙目前有许多,这里有一个开源的项目http://code.google.com/p/droidwall/

有兴趣的朋友,可以研究一下。目前主流安全软件的联网拦截功能,如360手机卫士,手机毒霸等都是使用这一方案。 

3.  总结

以上主要介绍了通过三个层面来控制一个应用的上网。具体使用哪一种,需要看用户的需求,以及手机的系统环境而定。

1)    如果不能获得root权限,基本思路就是定制修改apk,可以考虑加入hook代码,或者是压根在AndroidManifest.xml里将android.permission.INTERNET权限去除。

2)    如果能获得root权限,可以考虑注入zygote,使之fork()之后不加入inet组,还可以注入应用进程加上敏感函数的hook。此外还可以使用iptables命令。

3)    如果用户希望不杀死进程就实现上网权限的开关,并且要求可以分别禁用3G网络和Wifi网络的话,那么非iptables不可了。

 

    其实比较下来,还是基于iptables的方案相对较好。它似乎只有一个缺点就是需要root权限。但大家又知道一旦手机被root以后,安全性反而将大大降低。我们可否找到一种手机既不被root,又能使用iptables的方案呢?

    其实是有的。只是这无法通过第三方的应用实现。必须有手机厂商对Android系统进行定制化修改,添加一个具有root权限的service来负责iptables命令的操作。其他进程只有向这个service提出请求,才能间接调用iptables。当然app应用要和这个service沟通,必须遵循一定的协议和获得相应的授权才行,否则又会变的不安全了。

    我们 @安卓安全小分队 已经实现了上述方案,并且效果还不错。我们在init.rc里添加了一个service,并且授予这个service root权限。这个service起来之后,会等待client端请求。对于这个client端,我们对外提供了一套SDK,应用程序只需调用这套SDK API就可以和这个root service进行通信了,然后就可以间接执行iptables命令。

以下是我们的SDK API接口。Uid指应用的uid。type是针对的网络类型,可以是3G网络或者是Wifi网络。Blocked表示禁用还是启用网络。

public static final int MOBILE_NETWORK = 1;
public static final int WIFI_NETWORK = 2;
public void setApplicationPolicy(int uid, int type, boolean blocked); //设置拦截状态
public boolean getApplicationPolicy(int uid, int type); //获得当前的拦截状态

软件崩溃时Visual Studio中看不到有效的调用堆栈,使用Windbg动态调试去分析定位 当在Visual Studio中遇到软件崩溃且无法查看详细调用堆栈时,可以使用Windbg进行动态调试去分析定位问题。 阅读详情

相关推荐

从稀疏表示到低秩表示(一)

确定研究方向后一直在狂补理论,最近看了一些文章,有了些想法,顺便也总结了representation系列的文章,由于我刚接触,可能会有些不足,愿大家共同指正。 从稀疏表示到低秩表示系列文章包括如下内容: 一、 sparse representation 二、 一、 sparse representation 1  sparsity  一个线性表示解决的问题如下图所示:

彼岸花 3万+

android-framework-增加网络防火墙

安卓framework只有对后台流量的限制.这里不赘述了,有兴趣的可以参考 https://www.jianshu.com/p/5940ba4debf3?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation 原理就是根据uid设置黑白名单,名单的存放位置在: data/system/netpolicy.xml 注意: 这里有一个很重要的概念 : uid(不多

qq_34679996的博客 3111

树莓派5安装ROS1避坑指南:从系统配置到cmake报错全解决

本文详细介绍了在树莓派5上安装ROS1的完整流程,包括系统配置、环境变量设置、cmake报错解决等关键步骤。针对树莓派5的ARM架构特性,提供了从基础安装到高级调试的系统级解决方案,帮助开发者高效部署ROS1并避免常见编译陷阱。特别针对cmake报错问题,给出了深度解析和实用修复方法。

spark7igniter的博客 235

android实现网络防火墙控制app访问wifi/移动数据网络

iptables是Linux的一个命令行工具,通过设置一些规则可以直接把指定uid或网址的数据包从ip层过滤掉,从而实现网络防火墙的功能,这部分已经比较成熟,android或厂商只是对iptables命令进行了封装,让android app可以通过iptables命令进行防火墙设置,iptables有很多复杂的功能,我们主要看看怎么设置白名单只让指定的uid app可以联网和设置黑名单让指定的ui...

cyj88jyc的专栏 9031

智能车图像处理去畸变+逆透视教程

图像处理,去畸变与逆透视整合

wu58430的博客 1万+

51单片机-点亮LED和蜂鸣器

ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。ULN2003是大电流驱动陈列,多用于单片机、只能仪表、PLC、数字量输出卡等控制电路中。可直接驱动蜂鸣器、继电器等负载。void delay(u16 i) // i等于1大约10uswhile(i--);//取反,高低电平不断变化,产生脉冲delay(10);// 周期200us。

三日沐水 1130

Android 网络防火墙的实现 Iptables解决方案

    通过对Android SDK帮助文档的阅读,我没有发现Android的高层提供的API,于是通过更底层考虑,我发现了可以采用Iptables实现防火墙的功能。而且linux下主流的防火墙也是Iptables。     Iptables的介绍:iptables是与最新的 2.6.x 版本 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LA

Zy的技术心得 1万+

LPDDR4 JEDEC标准测试实例解析--写操作

LPDDR4的JEDEC标准一致性测试项详解以及实例分享,满满干货!感兴趣的小伙伴可以持续关注!!

一只豌豆象的博客 7776

android手机如何关闭程序,安卓手机如何关闭防火墙

我的安卓手机不想使用防火墙了!该如何关闭呢?下面由学习啦小编给你做出详细的安卓手机关闭防火墙介绍!希望对你有帮助!安卓手机关闭防火墙方法一1、如果该防火墙不是系统自带的,是你下载安装的,就直接在设置选项中,选择应用程序--管理应用程序,找到防火墙程序,直接卸载、重启即可。2、如果该防火墙是系统自带的,无法直接删除,请先把系统root 了,提高了管理权限后,再把防火墙删除就行了。安卓手机关闭防火墙方...

weixin_35179252的博客 4891

Python爬虫案例——解密抓取西红柿小说《我不是戏神》全章节!!!

本文介绍了抓取番茄小说网站《我不是戏神》全本内容的完整流程。首先分析网站反爬机制,发现采用自定义混淆字体加密文本内容。通过下载字体文件并解析字符映射关系,组建本地字体映射表。随后编写Python爬虫程序,实现自动获取章节链接、请求加密内容、解密替换字体、保存为本地txt文件等功能。代码包含UA伪装、请求头设置、进度条显示等细节处理,最终实现小说内容的完整抓取与解密存储。

@优快云盲敲代码的阿豪的博客 662

【OAG vs RAG】RAG的“语义崩溃“:为什么你的知识库越大,AI越笨?_语义检索oag-优快云博客

19.9 元(AI 编程 / Agent 实战 | 本文同主题系统课程)·49.9 元(AI 时代成长方法论)。单篇不过瘾?订阅解锁全量源码、实战与答疑;文末附资料包领取方式 ↓图1:RAG语义崩溃概念图。

求知若渴、虚心若愚 73

android 6关闭防火墙,安卓手机如何关闭防火墙

我的安卓手机不想使用防火墙了!该如何关闭呢?下面由小编给你做出详细的安卓手机关闭防火墙介绍!希望对你有帮助!安卓手机关闭防火墙方法一1、如果该防火墙不是系统自带的,是你下载安装的,就直接在设置选项中,选择应用程序--管理应用程序,找到防火墙程序,直接卸载、重启即可。2、如果该防火墙是系统自带的,无法直接删除,请先把系统root 了,提高了管理权限后,再把防火墙删除就行了。安卓手机关闭防火墙方法二1...

weixin_34646820的博客 3728

OBYC自动科目确定整理

WGI是用来重估发货的,通过比较发货时的价格和最新计算的价格,以此将所有差异过账到分配给此事务码的总账科目。是工厂还是公司,一般项目中都是使用工厂,使用工厂的意思就是物料在每个工厂下有一个价格,如果使用公司,则一个公司下的所有工厂都使用一个价格。如果该物料用的是移动平均价,那么该库存依然还存在的情况下,这个价格差异会过账到存货科目上而不会过账到存货的价格差异科目上。用于确定存货评估过账的存货冲抵科目。事务码WGR是用来重估工厂收货的,根据 计算出来的价格差异,把库存的调整过账分配给这个事务码中的总账科目。

nopicture的博客 349

Android之防火墙功能的实现

需求:可以控制某个应用访问WIFI或移动网络的功能。 Android自带防火墙原理是:一旦开启防火墙,所有的应用都不能访问网络(包括WIFI和移动网络),所以不能满足需求,故需要在原生基础上新增两个方法来实现该功能,方法声明在frameworks/base/core/java/android/os目录下的INetworkManagementService.aidl中: interface IN

不落航班 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Android底层网络防火墙,Android系统中实现网络防火墙的方法

防火墙顾名思义就是作为内部网与外部网之间的一种访问控制设备, 常常安装在内部网和外部网交界点上。而网络防火墙是一个位于计算机与它所连接的网络之间的软件。所有网络通信在计算机里流入流出都要经过防火墙。而防火墙对流经它的网络通信进行扫描,这样能够过滤掉一些攻击,以免其在目标计算机上被执行。重要的是防火墙还可以关闭不使用的端口,而且它还能禁止特定端口的流出通信,封锁特洛伊木 马,也可以禁止来自特殊站点的...

weixin_34952628的博客 1539

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Android IP路由策略和防火墙

ip route是用于配置路由器静态路由的命令,在Linux系统中,它是iproute2工具套件的一部分,用于操作路由表。ip route命令的功能非常强大,可以显示、添加、删除、修改路由,以及清除整个路由表或路由缓存。使用ip route时,可以对多达255个路由表中的任何一个进行操作,而route命令则主要在主路由表(表254)上运行。主要功能显示路由:通过命令可以查看当前的路由表信息。添加路由:使用命令可以添加新的路由条目。删除路由:通过命令可以删除路由表中的特定路由。修改路由。

dolphin的专栏 3万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Android底层网络防火墙,Android 利用Iptables实现网络黑白名单(防火墙)

一、概述为了使读此简笔的人对Iptables有一个简单的了解,此处强行百度了一波概念,如果想深入的了解Iptables的各种配置规则和内核对其的管理运行机制请自行www.baidu.com,这些并不是本简笔的目的所在。闲言少叙,开始正文---->以下概述来自baidu,读者可酌情跳过iptables的前身叫ipfirewall (内核1.x时代),是从freeBSD上移植过来的,能够工作在内...

weixin_32647107的博客 1139

android iptables 源码,详解Android 利用Iptables实现网络黑白名单(防火墙)

详解Android 利用Iptables实现网络黑白名单(防火墙)发布时间:2020-09-05 08:13:39来源:脚本之家阅读:105作者:冷静之皮囊一、概述为了使读此简笔的人对Iptables有一个简单的了解,此处强行百度了一波概念,如果想深入的了解Iptables的各种配置规则和内核对其的管理运行机制请自行www.baidu.com,这些并不是本简笔的目的所在。闲言少叙,开始正文----...

weixin_39926943的博客 1270

Android底层网络防火墙,详解Android 利用Iptables实现网络黑白名单(防火墙)

一、概述为了使读此简笔的人对Iptables有一个简单的了解,此处强行百度了一波概念,如果想深入的了解Iptables的各种配置规则和内核对其的管理运行机制请自行www.baidu.com,这些并不是本简笔的目的所在。闲言少叙,开始正文---->以下概述来自baidu,读者可酌情跳过iptables的前身叫ipfirewall (内核1.x时代),是从freeBSD上移植过来的,能够工作在内...

weixin_39546312的博客 355

Android iptables实现网络防火墙

iptables实现网络防火墙

Jimmy的专栏 3382
上一篇: 手机毒霸去广告功能分析二:广告View的识别
下一篇: 安卓系统的安全哲学
鲶鱼团队
博客等级 码龄14年 36粉丝 33原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值