-
又一个利用adb接口传播的蠕虫,其C2域名musl.lib是由基于区块链的DNS系统——EmereDNS解析的。musl.lib #主控域名,由区块链DNS系统EmerDNS解析
66.42.57.45:7000 #Singapore/SG Singapore #当前主控IP
ukrainianhorseriding.com #历史关联域名
27.102.115.44 #Republic of Korea/KR AS45996
rippr.cc #历史关联域名,Satori主控吐槽:比较新的点在于对C2的隐藏上面 - 9.17 一个人的安全部之企业信息安全建设规划大而全的概述了企业安全建设的方方面面:终端安全、应用安全(漏洞扫描)、网络安全、员工安全培训等,可用于扩充安全视角,也能用于指导企业安全建设。目录如下:吐槽:会有点太长不看的感觉。
-
互联网反欺诈体系至少要做到三个层面的欺诈特征检测:
- Real —— 区分用户是否真实
- Right —— 用户信息是否真实有效;勾稽对比、交叉对比
- Reliable —— 动机校验;结合用户的社交、通讯、金融、出行、车产、房产、职业等多维度的信息,进行横向的关联分析吐槽:这个系列都是只谈概念,不讲干货(个人观点)。
-
halong.dulichculao.com 曾在对越某些机构发起的网络攻击中用过,Fortinet曾对这类攻击做过详细分析,并把其追溯为黑客组织-1937CN。把这两次攻击的各项TTP指标进行对比,发现基本相似,攻击者都使用了RTF文档作为前期入侵,而用DLL劫持作为后期payload加载。此次攻击中的另外一个域名cat.toonganuh.com,是toonganuh.com的子域名,也曾被发现和黑客组织-1937CN注册过的邮箱florence1972@scryptmail.com有关联。吐槽:上次是从Uber数据分析出APT10;这次又是1937CN?
-
google发现Honeywell的android设备存在提权漏洞,Honeywell已修复漏洞。吐槽:所以以子之矛,攻子之盾?
-
配合风云再起,签名冒用引发信任危机食用,对签名滥用、盗用、冒用有一个更好的了解。吐槽:火绒应该是国内终端安全做的最成功的了吧?不过可能我不太是目标群体,所以不了解。
另:签名冒用、滥用在Android端其实更严重。 -
360推测的攻击过程:
攻击阶段 使用技术 攻击入口 利用鱼叉邮件投递漏洞文档,如CVE-2017-11882漏洞文档 初始控制 远程下载伪装成图片的PowerShell脚本载荷 利用McAfee的白利用技术执行核心dll载荷 横向移动 主要利用系统命令实现横向移动: - 使用nbt.exe进行扫描 - net.exe实现IPC用户添加 - MsBuild.exe在内网机器上编译生成恶意dll模块并执行 “海莲花”组织一直在不断更新和演变其攻击的战术技术特点,并擅长于利用开源或公开的攻击工具和代码用于自身的攻击活动中。吐槽:其实这更像一篇360威胁情报平台的软文。 -
Palo Alto Networks的Unit 42研究团队发现了一种新的恶意软件类——Xbash,能够针对Linux和Windows服务器,将加密货币挖掘,僵尸网络和勒索软件功能结合在一个自我扩展的蠕虫软件包中。Xbash使用可利用的漏洞和弱密码强制组合在服务器之间传播,与其他勒索软件不同,默认情况下启用了数据销毁功能,没有恢复功能,几乎不可能进行文件恢复。Unit 42已经发现48个传入到Xbash勒索软件组件中的硬编码钱包总计6000美元.吐槽:这是没有职业道德的勒索软件。
- 9.18 互联网黑灰产工具软件,2018半年报告工具作业图:正经:威胁猎人是真勇士,深入敌后。
-
9月18日凌晨,Apple正式对外发布最新的iOS 12系统,现在,阿里安全潘多拉实验室安全专家已经攻破,实现完美越狱。吐槽:beta版的漏洞,正式版没修复就是这种后果咯。
-
tag:供应链安全Hook setup.py install 过程 构造恶意三方包,原理如下:setuptools 包提供了一个安装类 : setuptools.command.install.install,只要继承这个类,然后重写其run方法,那么就可以达到hook pip install xxx/ 或 python setup.py install 行为的目的。完整hook 需要2步:
- 第一步,重写安装类,即重写原生install 类的ru 方法:
class CustomInstallCommand(install):
- 第二步,在setuptools.setup 设置中指明重写后的安装类:
setuptools.setup( ... , cmdclass={ 'install': CustomInstallCommand, }, )
吐槽:所以供应链要加强审核,不过目前应该暂未发现实际攻击案例。
-
配合威胁猎杀实战(一):平台 食用,拓展安全视野。吐槽:本质是天御威胁感知平台的软文。
dr0v
blog.drov.com.cn一个人碎碎念。
A lazy security employee.
2018年9月24日星期一
2018年9月21日星期五
Posted by drovliu on 九月 21, 2018 with No comments
继续学习笔记,截取http请求初尝——工具使用:Burp Suite Proxy、Fiddler、WinSock Expert。
截取HTTP请求
渗透测试中,通常会通过截取HTTP请求来分析web应用是否存在漏洞,诸如绕过JavaScript验证、隐藏标签内容等。
Burp Suite Proxy
Burp Suite是用于Web应用安全测试工具的集成平台,包含许多工具并提供接口便于拓展开发。
首先,推荐参考工具书:burpsuite实战指南
Burp Suite功能:
工具 | 说明 |
---|---|
Proxy | 一个拦截HTTP/S的代理服务器,作为一个在浏览器和目标应用程序之间的中间人,允许拦截、查看、修改在两个方向上的原始数据包 |
Spider | 一个应用智能感应的网络爬虫,能完整地 枚举Web应用程序的内容和功能 |
Scanner | 一个高级漏洞扫描工具,能自动发现Web应用程序的安全漏洞 |
Intruder | 一个定制的高度可配置工具,可对Web应用程序进行自动化攻击,如:枚举标识符、表单破解和信息采集 |
Repeater | 一个靠手动操作来补发单独的HTTP请求并分析Web应用程序响应的工具 |
Sequencer | 一个用来分析不可预知的Web应用程序会话令牌和重要数据项的随机性工具 |
Decoder | 一个编解码工具 |
Comparer | 一个通过一些相关请求和响应得到两项数据可视化”差异”的工具 |
通过Proxy进行简单的功能体验:
burp suite默认proxy的设置监听地址和端口是127.0.0.1:8080,支持自由设置。
- 然后在浏览器中设置代理为127.0.0.1:8080,之后所有的请求都会被Burp Suite拦截了。(windows IE设置路径:设置-Internet选项-连接-局域网设置;MacOS Safari设置路径:偏好设定-进阶-代理服务器-更改设定-http代理&https代理)
浏览器请求网页访问后,请求即被hook,在Burp Suite的Proxy页面上,可以看到http请求的具体内容,并可对内容参数进行修改,修改完成后,点击Forward即可进行下一步(发送请求),另外三个按钮分别是Drop(放弃本次请求)、Intercept is on(拦截开关)和Action(动作选项,可选择将本次请求发送至Spider等其他工具)。
原书建立了一个验证页面,进行了攻击演示。(本文不做这方面的个人实践了,后续有实战再上实战截图吧。)
Fiddler
一些关键功能说明:
- 过滤器:过滤请求消息、响应消息、状态码等,用于过滤不需关注的css文件、IMAGE等会话。
- 设置断点:1、通过”Rules” -> “Automatic Breakpoints”选择在请求前、响应后进行拦截或不拦截;2、通过命令”bpu www.xxoo.com”(拦截所有该网站会话)或”bpafter **”(拦截响应消息)
- 第三方插件:
- Intruder21:类似Burp的Intruder模块, 用于fuzzing;
- x5s:快速发现跨站脚本漏洞;
- Ammonite:一款web应用安全扫描插件,检测SQL注入、命令行注入、本地文件包含、缓冲区溢出和XSS漏洞。(ammonite看来是下架了-.-)
- 移动端抓包:设置”Allow remote computers to connect”,在终端上安装fiddler证书,并设置fiddler主机IP地址为代理服务器,即可对手机端HTTP/HTTPS请求进行抓包分析与劫持。
WinSock Expert
WinSock Expert可以抓取指定进程的数据包(可以监视与修改)。(其优点在于大小仅200KB)
在WinSock Expert的进程列表中选中进程,点击”Open”即可对进程的网络通信进行监控。
黑帽SEO之搜索引擎劫持
利用HTTP协议劫持搜索引擎做SEO优化,可能是最古老、寿命最长的黑产之一了。
黑帽SEO的一般原理是:
- 入侵大流量网站或关键词相关网站,注入劫持代码(代码如图——原理如下);
- 建立劫持搜索引擎库:以baidu、google等域名为关键字;
- 获取HTTP Referer头;
- 遍历搜索引擎库,并与Referer的内容进行比较,如果两者相同或者存在搜索关键字,即跳转到指定页面,也就是域名劫持。
更多技术手法可参考:黑帽SEO剖析之手法篇
2018年9月19日星期三
Posted by drovliu on 九月 19, 2018 with No comments
工作原因,最近开始阅读<web安全深度剖析>,做一些学习笔记上传上来。
HTTP协议解析
HTTP协议当前最新版本为1.1,HTTP协议是一种无状态协议,即端与服务器无需建立持久连接(HTTP、UDP、FTP等都是无状态协议,TCP为有状态协议,传送门);即客户端发出请求(Request),服务器端返回响应(Response)后,连接即被关闭,服务器端不保留连接相关信息,因此,web应用引入了cookie进行session追踪。
HTTP遵循请求(Request)/应答(Response)模型;其中请求包括三个部分:请求行、请求头和请求正文:
//请求行
POST /gdt_stats.fcg HTTP/1.1.
//请求头
Content-Language: zh-cn
Cookie: snsuid=64845554712576
Content-type: text/xml; charset=UTF-8
User-Agent: GDTADNetClient-[Dalvik/2.1.0 (Linux; U; Android 6.0.1; vivo Xplay6 Build/MXB48T)]
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
Content-Length: 230
//请求正文
count=1&viewid0=2uNr5yDDwJGGmmrSz4ruYXH9gEnes_aA4_H70u!On5L4mo2mGbVmVEdS0gLUsz2MdWIT_13Mu!HF_OKSHIIM7MOnbvX_kZCtDNIMzEU7nK0D7YW0uw5Btu_Eg9GeZxpHwM2m9wN_S_Eb1!!dA4LpQTGJwgNPKTRFjX!RZEjBmBNDMJ3ZWTpSSmzZKiqUH1N1aPF7Wp1_jpwUSfgbyO4wRA
HTTP请求第一行即为请求行,由三部分组成(依次):请求类型(GET/POST等)、请求路径(域名跟目录下某文件或文件夹)、协议及版本(一般为HTTP 1.1)
第二行至空白行为HTTP的请求头(消息头),包括若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息,以本文例举报文为例进行说明(详细说明可转向:传送门):
- Content-Language:客户端语言设置
- Cookie:网站在终端的标识数据,用于辨别客户端用户身份、跟踪session
- Content-type:请求正文格式
- User-Agent:浏览器标识
- Accept:客户端可接受的数据类型
- Connection:连接方式(持久连接/即时释放)
- Content-Length:请求正文长度
空行后即为请求正文(GET请求无正文),一般是页面表单中的组件值,以param1=value1¶m2=value2的键值对形式编码成一个格式化串存在。
HTTP响应报文也是三部分组成:响应行、响应头和响应正文:
//响应行
HTTP/1.1 204 No Content
//响应头
Date: Tue, 04 Jul 2017 00:55:13 GMT
Content-Type: text/html
Content-Length: 0
Connection: keep-alive
Server: QZHTTP-2.37.1
Cache-Control: private, no-cache, must-revalidate, max-age=0
//响应正文 可无
第一行为响应行,三部分组成(依次为):协议及版本(一般为HTTP 1.1)、状态码(204/200,最让人熟知的就是404)以及消息(No Content/OK)。
第二行至空白行为响应头,一版包含了响应时间、响应正文数据类型、响应正文长度、Web服务器等。
空行之后即响应正文,是服务器根据请求做的响应数据,有的是html数据(网页请求),也有的是一个文件数据如APK文件(下载请求)。
请求类型
HTTP请求类型/方法有八种,用于表明对Request-URI指定的资源的不同操作方式(最常见的即为GET&POST),具体介绍如下:
- GET:向特定的资源发出请求,请求行中可以带参数数据(由开发者制定好,非指定内容不会处理——否则即为漏洞)
- POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的创建和/或已有资源的修改。
- OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送’*’的请求来测试服务器的功能性。
- HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。常用于测试超文本链接的有效性、可访问性和近期变更,扫描工具常用于测试资源是否存在。
- PUT:向指定资源位置上传其最新内容(若资源不存在,则创建新资源)。
- DELETE:请求服务器删除Request-URI所标识的资源。
- TRACE:回显服务器收到的请求,主要用于测试或诊断。
- CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
状态码
HTTP响应报文中,响应行第二位即为状态码,用于标识响应的状态,状态码由三位数字组成,第一位数字定义响应的类别,仅5种:
- 1xx:信息提示,表示请求已被成功接收,继续处理。范围: 100~101
- 2xx:成功,服务器已成功处理请求。范围: 200~206
- 3xx:重定向,告诉客户端其请求的资源已转移,并告知新地址,客户端依此重新访问资源新地址。范围: 300~305
- 4xx:客户端错误状态码,请求服务器无法处理,如格式错误或URL不存在。范围: 400~415
- 5xx:用于描述服务器内部错误,如网站挂了。范围: 500~505
常见的具体状态码有:
- 200:客户端请求成功
- 302:重定向
- 404:请求资源不存在
- 400:请求语法错误
- 401:请求未经授权
- 403:服务器拒绝提供服务
- 500:服务器内部错误
- 503:当前无法处理请求,一段时间后可能恢复
HTTP与HTTPS区别
HTTPS即在HTTP下加入SSL层以保障传输数据的保密性和安全性,主要区别有:
- HTTP为明文传输,HTTPS为SSL加密传输
- HTTP使用80端口,HTTPS使用443端口
- HTTPS需要在CA申请证书,HTTP无需
- HTTP连接简单、无状态,HTTP加上了SSL协议可进行加密传输和身份认证
2018年9月16日星期日
Posted by drovliu on 九月 16, 2018 with No comments
-
BadUSB漏洞是由基于Karsten Nohl及其安全研究实验室团队研究和提出的,利用将恶意代码存放在USB设备控制器的固件存储区,而不是存放在其它可以通过USB接口进行读取的存储区域(如Flash等),由于PC上的杀毒软件无法访问到U盘存放固件的区域,因此也就意味着杀毒软件和U盘格式化都无法应对BadUSB进行攻击。USBHarpoon(来自Olaf Tan and Dennis Goh of RFID Research Group, Vincent Yiu of SYON Security, and Kevin Mitnick)是BadUSB改造得到的(伪装)数据线,攻击者可以重新编程USB驱动器的控制器芯片,并使其在计算机上显示为人机接口设备(HID)。人机接口设备(HID)的类型可以是任何东西——从输入设备(例如发出快速连续命令的键盘)到修改系统DNS设置以重定向流量的网卡等等不限。目前USBHarpoon可做到的攻击为显式攻击,受攻击者可在电脑上看到攻击过程。吐槽一下:freebuf的翻译偏向机翻,同时丢失了一些关键信息。4hou的文章可能更有诚意一些。
-
文章写的还不错,可以当做课外读物拓展拓展思维宽度。吐槽一下:国内安全大佬好像都比较喜欢援引军事布防来作为安全设计的思维框架。当然,确实比较易懂也高大上很多。
-
卡巴对企业所面临的安全风险进行了详细的评估和统计,有兴趣可以看看原版。划重点:2017年我们的Web应用安全评估表明,政府机构的Web应用最容易受到攻击(所有Web应用都包含高风险的漏洞),而电子商务企业的Web应用最不容易受到攻击(28%的Web应用包含高风险漏洞)。
-
“海渊”(TRISIS)所攻击的目标是工业控制系统(ICS)中的安全仪表系统(SIS)控制器,其主要瞄准施耐德电气的Tricon安全仪表系统,从而达到在最终控制元件中替换逻辑的目的。攻击流程为利用社工技巧伪装成安全仪表系统的日志软件进入目标网络,之后通过特殊ping包发现安全仪表系统,在确定安全仪表系统可被入侵后,会上传组合后的二进制代码,以改变安全仪表系统的梯形图(即安全仪表系统逻辑)。吐槽一下:安天的漫画图真的好看,很容易抢风头。
- 9.12 趋势macOS全家桶隐私窃取分析gandalf大佬的文章,主要针对趋势全家桶进行了分析,确认了越界的信息采集与上传代码。吐槽一下:排版和配图没有安全客小编做得好。
- 9.13 沙箱、蜜罐和欺骗防御的区别欺骗防御则是一个新的术语,其定义尚未定型,但基本指的是一系列更高级的蜜罐和蜜网产品,能够基于所捕获的数据为检测和防御实现提供更高的自动化程度。吐槽一下:微创新即在模仿的前提下进行创新。(欺骗防御确实是一个更为完善、自洽的完整安全产品方案)
-
当前Munin查询支持以下服务:
- Virustotal
- Malshare
- HybridAnalysis需要在上述三个平台注册并获得相关public API key,然后此工具就可以帮你自动爬信息啦。吐槽一下:这种省力的开源工具真心解放生产力——大家应该多把自己省时省力的各种脚本、工具做些整理,开源出来让我等”伸手党”受益啊~
-
可探测所在网络中ssh弱密码的工具安装:
$ brew install go # or however you want to install the go compiler $ go get github.com/ncsa/ssh-auditor
提醒:hack有风险,入行需谨慎
2018年9月12日星期三
Posted by drovliu on 九月 12, 2018 with No comments
当前主要工作是做一些流量黑产方面的研究,所以就近整理一下相关的基础技术知识。
一般来说,从业者会通过各种各样的方式制造黑色或低廉流量,流量往往是最容易变现的,
360在流量黑产方面有两篇较为出名的报告:
威胁猎人也有关于流量黑产的总结报告:
360通过监控色情软件产生的异常流量对其背后巨大的流量黑产进行了深入探究:整个产业链从开发到分发再到变现,参与者呈规模化、体系化、集团化,黑产对抗之激烈,此处体现尤为明显。
流量黑产的一些恶意代码相关技术以后再谈,这篇主要讲一些基础的东西。
移动互联网阶段,移动端流量价值越来越高,也促使了流量黑产大量涌入移动互联网;早期黑产大多通过模拟器产生流量进行变现——诸如下载推广、注册、抢红包等,导致开发者们在开发之初就要头疼识别模拟器的问题。
最早的识别方案简单粗暴:
- 通过判断IMEI是否全部为0000000000格式
- 判断手机号是否为155552*
- 判断电池电量是否永远是50%
- 判断Build中的一些模拟器特征值
这些往往也是恶意代码早期最常用来对抗模拟器逆向分析的方法;实践证明黑产在对抗上往往会走在前列,譬如到了后期,黑产对于手机是否连接usb线、是否有sim卡等都有严格的限制,就是为了对抗逆向分析。所以多向黑产的同胞们学习往往是有很大好处的。
那么到了对抗后期,黑产也知道了这些简单粗暴的识别方法了,在其模拟器上往往通过修改ROM,构造各种符合真实设备特性的数据返回给采集APP,以假乱真。
比如,有的会直接通过IMEI的生成算法(IMEI最后一位为校验位,需要计算生成),构造相关IMEI:

这种IMEI一般开发者无法辨别真假,因为黑产往往会配合提供足以乱真的设备品牌、型号、sim卡序列号等信息;总之,目的就是你要啥我给啥,但你想要真实设备信息——抱歉,这个真没有。


当然,app开发者们也有对抗方法:
- 匹配Qemu的一些特征文件:/system/lib/ttVM-prop、/system/lib/nox-prop等
- 通过获取cpu信息,将x86的给过滤掉(真机一般都是基于ARM)
其中,值得一提的就是通过识别CPU架构是否为ARM来鉴别模拟器,其原理参考CacheEmulatorChecker:
ARM和X86架构的不同 —— ARM将指令和数据分开存储,而x86则只有一块缓存;所以在X86上可以做到的指令覆盖在ARM上无法实现,利用这种差异,即可完成对ARM架构和X86架构的区分,进而识别模拟器。
具体代码如下:
void (*asmcheck)(void);
int detect() {
char code[] =
"\xF0\x41\x2D\xE9"
"\x00\x70\xA0\xE3"
"\x0F\x80\xA0\xE1"
"\x00\x40\xA0\xE3"
"\x01\x70\x87\xE2"
"\x00\x50\x98\xE5"
"\x01\x40\x84\xE2"
"\x0F\x80\xA0\xE1"
...
"\xF0\x81\xBD\xE8";
void *exec = mmap(NULL, (size_t) getpagesize(), PROT, MAP_ANONYMOUS | MAP_SHARED, -1, (off_t) 0);
memcpy(exec, code, sizeof(code) + 1);
asmcheck = (void *) exec;
asmcheck();
__asm __volatile (
"mov %0,r0 \n"
:"=r"(a)
);
munmap(exec, getpagesize());
return a;
}
具体详解可以阅读源项目进行学习。该方法目前在64位机上存在兼容性问题,望谨慎使用。
以上。
2018年9月10日星期一
Posted by drovliu on 九月 10, 2018 with No comments
受gandalf 4a的影响,开一个blog来驱动自己做一些有意义的记录(当然,参照以往开过的blog来看,有意义可能会存在一定争议)。
blog将分为三部分:
1、技术——主要还是移动/网络安全方面的一些学习记录或总结;
2、酸文——主要是内心伪文青病发作时写的东西(不一定好意思发出来);
3、笔记——读书、电影等一些个人笔记和感受记录。
暂时来看,技术方面会驱使自己每周对安全要闻进行一些必要的汇总以及评论,算是sec-lib的另一种,更为积极的存在形式。
blog将分为三部分:
1、技术——主要还是移动/网络安全方面的一些学习记录或总结;
2、酸文——主要是内心伪文青病发作时写的东西(不一定好意思发出来);
3、笔记——读书、电影等一些个人笔记和感受记录。
暂时来看,技术方面会驱使自己每周对安全要闻进行一些必要的汇总以及评论,算是sec-lib的另一种,更为积极的存在形式。
笔记方面,就近在尝试看一些理财方面的书籍,会做一些笔记、感受,用以让自己迎接30而立有些准备。
以上,不确定在接近30岁的自己能有多少恒心赋予这个blog。
2016年8月17日星期三
Posted by drovliu on 八月 17, 2016 with No comments
关于android-root的一点材料整理
root的方案
获取root权限有哪些方式?
- 使用本地提权漏洞利用工具来直接 Root,这是最原始最纯洁的方式。随着厂商对 Rom 的升级,这些内核的漏洞随时都可能被修补,因此,这种 Root 方法在时间与空间上都有着很大的局限性。
- 刷第三方的 Recovery,利用 Recovery 来提权。但目前手机厂商为了保障手机安全性和可控性,一般会选择锁死 Bootloader ,so - -#
- 刷第三方 Rom 包,目前很多第三方 ROM 是自带了 Root 的。但手机厂商在 OTA 升级时使用 Recovery 对包签名进行验证来防止用户刷入修改过的包。这种情况下,就只能通过 FastBoot 来刷了。
获取root权限的过程
利用本地提权漏洞来实现root
在大多数情况下都遵循以下步骤:

需要使用漏洞的原因:
- 中文版的/system路径是只读权限,我们是不能完成写入或者copy操作的
- chmod命令是需要拥有Root权限后才可以使用的,我们的在操作的时候是没有Root权限的,所以这个命令在我们Root过程中是无法使用的。
- 某些厂商定制的系统在系统重新启动的时候会自动将su的权限从4755改成755或者直接删除了su,正是因为这个原因我们经常会碰到,明明我们是已经Root过的手机,但是手机重启后就没有Root权限了。这种只是临时获得的Root权限。
其中Exploit在Root过程中扮演着关键角色;exp可能是一个工具,也有可能是一整套,它是对于系统漏洞或者Android源码漏洞加以利用的工具,突破上文的逻辑闭环的工作就是由它完成。根据不同的版本,都会有不同的exploit,比如早期的ratc,psneuter等。
示例:
刷recovery方式来实现root
通过pc端工具,连接手机也可以进行root。
pc端工具会根据机型选择对应的修改后的recovery(其中认同度最高的是ClockWorkMod的recovery),通过cat或dd命令将su刷入recovery对应的硬件地址。
recovery其实是一个小型的手机系统,也是linux内核的。也就是说,可以理解为手机上装了双系统,一个是android系统,一个是recovery。如果android系统被毁了(比如删了rom中的/system分区),手机还是可以进入recovery的。
通过recovery怎样获取root权限呢?原理很简单,进入recovery后,/system分区就变成了rom中的一个硬件盘块,对它当然可以自由修改。我们把su放到/system/xbin文件夹下,赋予rwsr-sr-x权限,基本就大功告成了。
刷ROM方式获取得到root
一般只有非常少的机型支持从SD卡boot来进行root或刷机,这里就简单介绍一下这种情况root的思路:
因为是从SD卡boot,所以SD卡上会有对应的boot.img。修改这里的boot.img,就可以达到我们的目的。
因为是从SD卡boot,所以SD卡上会有对应的boot.img。修改这里的boot.img,就可以达到我们的目的。
用于提权的漏洞
漏洞CVE号/名称 | 简介 |
---|---|
CVE-2009-2692 (Wunderbar/asroot) | sock_sendpage()的空指针解引用因为 sock_sendpage 没有对 socket_file_ops 结构的 sendpage 字段做指针检查,有些模块不具备sendpage 功能,初始时赋为 NULL,这样,没有做检查的 sock_sendpage 有可能直接调用空指针而导致出错并提升权限。所以,sendfile(fdout, fdin, NULL, PAGE_SIZE);的调用使得该洞被触发,最终执行以下代码获取到 Root 权限 |
adbd setuid | 在Android2.2及以前的版本中,adb.c中的代码都是以root权限运行,以完成部分初始化工作.通过调用setuid()将用户从root切换回shell,但setuid()在shell用户进程数达到上限RLIMIT_NPROC时,会失败,因此adb.c继续以 root 身份运行 |
Exynos-abuse | 早期的三星手机,经常是某些设备被chmod 755/666,造成了全局可读写,然后只要将这些设备mmap出来,就可以操作物理内存,之后可以通过patch相关参数或者构造payload函数达到提权的目的 |
CVE-2010-EASY | udev 对热插拔消息检测不严导致的,用户通过发送恶意信息让内核加载自定义的恶意程序从而取得 root 权限 |
CVE-2011-1823(GingerBreak) | 在Android 3.0版本和2.3.4之前的2.x版本上的volume守护进程(vold)由于信任从PF_NETLINK套接字接收到的消息,因此允许以root权限执行任意代码,利用方法是通过一个负数索引绕过只针对最大值的有符号整数检测. |
CVE-2011-3874 (zergRush) | 漏洞的本质是Use-After-Free(UAF).具有root权限的vold进程使用了libsysutils.so,其中某个函数存在栈溢出的问题,因此可以控制root身份的vold执行system(),借以提权 |
CVE-2012-0056 (mempodroid) | 利用系统中具有s属性(suid)的程序通过自修改程序的内存,执行 Shellcode 达到获得 Root 权限的目的 |
CVE-2012-4220(diag) | Android 2.3-4.2使用的QualcommInnovation Center (QuIC) Diagnostics内核模式驱动程序diagchar_core.c在实现上存在整数溢出漏洞,通过向diagchar_ioctl内传递特制的输入,远程攻击者可利用此漏洞执行任意代码或造成拒绝服务 |
CVE-2013-6282 | ARM v6/v7架构的Linux内核中的get_user/put_user接口没有验证目标地址,由于硬件架构的更迭,get_user/put_user最初用于实现和控制域切换的功能被弃用了,导致任何使用该API的内核代码都可能存在安全隐患.让任意应用来读写 内核内存,造成权限泄漏 |
CVE-2014-3153 | 漏洞利用了futex_requeue,futex_lock_pi,futex_wait_requeue_pi三个函数存在的RELOCK漏洞和REQUEUE漏洞,造成了对内核栈上的数据修改,知名root工具towelroot就是利用了这个漏洞可以覆盖2014年6月以前的设备 |
CVE-2015-1805 | 在linux 内核3.16版本之前的fs/pipe.c当中,由于pipe_read和pipe_write没有考虑到拷贝过程中数据没有同步的一些临界情况,造成了拷贝越界的问题,因此有可能导致系统crash以及系统权限提升 |
CVE-2015-3636 | Linux kernel的ping套接字上存在的一个Use-After-Free(UAF)漏洞 |
CVE-2016-0728 | 由keyring的引用计数溢出问题导致的UAF漏洞 |
防root手段
了解了root的一些原理和手段后,怎么防root呢?
目前主流的防root手法如下:
- 针对漏洞利用型提权——升级系统或打补丁修复漏洞等方法;
- 针对刷recovery型提权——保护recovery,禁止sdcard刷机方式,锁死bootload等方法;
- 针对刷ROM型提权——禁止刷ROM,锁死bootloader。
目前手机可能主流的都已锁死了bootloader——禁止刷ROM;
漏洞方面则只能靠良心和用户自身的意愿了,碎片化十分严重。
漏洞方面则只能靠良心和用户自身的意愿了,碎片化十分严重。
而对于漏洞,因为android版本的碎片化而无法达到面面俱到,漏洞的补丁又多、用户更新意愿也不强等问题。在这个层面上,可以考虑针对root工具做检测,提示用户或禁止安装root工具。另外一种方式,通过对底层api的监控,防止root工具利用exp的执行来获取临时root权限——一般exp执行都是会调用一些非常用api来达到进程重启或越权的目的,获取临时root。那么针对性的解决临时root的问题就可以了。
订阅:
博文 (Atom)
Search
Archive
Popular Posts
-
# hook原理 >在面微信的时候被开发的面试官问到了hook原理。我简单介绍了一般是替换函数地址的形式,保障先调用替换函数,再调用原始函数。 > >面试官的理解是有两种hook方式:一种是地址替换型,一种是代码插入型。 > >由此可知我对hook...
-
//调用方法 function printStack () { var Exception = Java . use ( "java.lang.Exception" ); var ins = Exception . $new ( ...