m4bln


  • 首页

  • 归档

  • 标签

  • hint

  • 关于

  • 搜索

自制甲醛测试仪

发表于 2019-07-05 | 阅读次数:
因家里装修,自制了一个甲醛测试仪,在此记录下主要过程。 1.材料: 1.树莓派Zero W 2.ZE08-CH2O传感器(UART接口) 3.ssd1306 128*64 I2C接口 其中,CH2O传感器是核心部件,主要用来采集甲醛含量。树莓派用来读取传感器上的数据,ssd1306用来显示数据。 最终效果如下图: 2.接线方式一、 树莓派Zero W引脚: 二、 ZE08引脚 ze08接树莓派: ZE08 RpiGPIO Pin4(5V) Pin2(5V) Pin3(GND) Pin6(GND) Pin6(UART-TxD) Pin10(UART-RxD) 三、 ssd1306 引脚 ssd1306接树莓派(IIC协议): OLED RpiGPIO VCC Pin1(3.3V) SDA Pin3(SDA) SCL Pin5(SCL) GND Pin9(GND) 3.代码代码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465import serialimport timefrom time import sleepimport Adafruit_SSD1306from PIL import Imagefrom PIL import ImageDrawfrom PIL import ImageFontimport subprocessser=serial.Serial("/dev/serial0",9600)#init displaydisp = Adafruit_SSD1306.SSD1306_12 ...
阅读全文 »

Android上利用strace跟踪系统调用

发表于 2019-06-27 | 阅读次数:
strace 是linux下的调试利器,它被用来跟踪所有的系统调用,打印系统调用的参数和返回值,Android 也支持strace。 安装straceAndroid系统并没有自带strace的binary,需要自己编译移植到Android设备中,在Android源码下仅编译strace模块即可1mmma -j6 external/strace 如果不想配环境自己编译,去其他地方下载静态链接的strace binary也可以,但安全性需要自己把握,例如https://github.com/andrew-d/static-binaries/blob/master/binaries/linux/arm/strace。 得到binary后,push到/data/local/tmp下更改权限,关闭SELinux后即可使用。12345adb push strace /data/local/tmp/adb shellandroid:/ $ chmod 777 /data/local/tmp/stracesuandroid:/ # setenforce 0 使用strace1.attach到正在运行的进程1strace -f -p PID -o strace_log.txt -f表示跟踪所有子进程,包括新起的进程。由于strace会打出大量的日志,所有需要进一步从日志筛选出想要的内容。 2.在应用启动前strace试过Android官方文档中的setprop的方法,不起作用,这里采用另一种方式。主要原理是设置应用启动后等待调试,然后运行strace,再调试应用即可。12345am set-debug-app -w com.package.nameam start com.package.name/com.path.to.MainActivity // 或者手动打开appps -A | gr ...
阅读全文 »

to do list

发表于 2019-06-17 | 阅读次数:
阅读全文 »

CVE-2019-5765分析

发表于 2019-05-21 | 阅读次数:
简述CVE-2019-5765的原理比较简单。Chrome Android客户端注册了一个broadcast receiver, 当接收到(app_package)_GPU_PROFILER_START广播后,会开启trace, 并将所有的url请求和header(不包含cookie)保存在文件中。 然而,这个receiver未做好权限控制,导致任意第三方应用都可以发送该广播开启chrome的trace,而且还可以指定trace log的保存路径,恶意应用通过读取trace log文件可以窃取用户所有的浏览记录。 影响范围该漏洞影响所有chrome内核版本小于72.0.3626.81的浏览器,例如webview、第三方浏览器等等。 通常,该漏洞的利用需要攻击者在用户手机上安装一个恶意apk,通过发送广播可以获取目标浏览器或webview上所有的浏览记录,以及用户的登录凭据(例如Oauth token, header里的敏感token)等。 PoC 发送广播开启trace 1adb shell am broadcast -a com.android.chrome.GPU_PROFILER_START 在目标浏览器中打开一个页面 发送广播关闭trace1adb shell am broadcast -a com.android.chrome.GPU_PROFILER_STOP trace log默认保存在/sdcard/Download/目录下,例如”/sdcard/Download/chrome-profile-results-2019-05-24-084507“,使用adb shell am broadcast -a com.android.chrome.GPU_PROFILER_START -e file mypath可以指定保存路径。 漏洞修复修复方式为”只有d ...
阅读全文 »

Android WebView URL检查绕过

发表于 2019-04-23 | 阅读次数:
URL结构scheme://login:password@address:port/path/to/resource/?query_string#fragment scheme不区分大小写,包括http、https、file、ftp等等,:之后的“//”可省略,例如http:www.qq.com, 此外,多数浏览器在scheme之前加空格也是可以正常解析的 login:password@(认证信息)服务器有时候需要用户名和密码认证,ftp协议比较常见,http很少见,但这个不常见字段往往可以绕过很多检查 addressaddress字段可以是一个不区分大小写的域名、一个ipv4地址或带方括号的ipv6地址,部分浏览器接收ip地址的八进制、十进制、十六进制等写法 port端口号 /path/to/resource层级路径,可以使用“../”到上一级目录 query_string查询字符串,格式为”query_string?name1=value1&name2=value2” fragment用于html中的页面定位 白名单绕过白名单绕过主要参考rebeyond的文章 一文彻底搞懂安卓WebView白名单校验, 中间添加了一些自己的绕过方法。 1.contains12345678910private static boolean checkDomain(String inputUrl){ String[] whiteList=new String[]{"huawei.com","hicloud.com"}; for (String whiteDomain:whiteList) { if (inputUrl.contains(whiteDomain)> ...
阅读全文 »

Android Download Provider 3个漏洞分析

发表于 2019-04-15 | 阅读次数:
IOActive的安全研究员Daniel Kachakil发现了Android Download Provider相关的几个漏洞(CVE-2018-9468, CVE-2018-9493, CVE-2018-9546),漏洞原理看似简单却十分有趣,这里总结一下。 原文链接:https://ioactive.com/multiple-vulnerabilities-in-androids-download-provider-cve-2018-9468-cve-2018-9493-cve-2018-9546/ Download Provider首先了解下Download Provider。Android系统的ContentProvider类似于应用数据库,用于共享自己的数据被其他的应用程序访问。Android提供了一套处理其他App下载请求的机制,例如浏览器的下载、邮件附件的下载、OTA升级包下载等。其中Download Manager用来处理下载请求,DownloadManager下载过程中,会将下载的数据和下载的状态插入ContentProvider中,完成下载后使用ContentProvider来提供下载内容给请求方APP。 使用DownloadManager下载文件的示例代码如下:12345678910//创建下载请求 DownloadManager.Request req = new DownloadManager.Request(Uri.parse("http://www.qq.com"));//设置下载路径 File saveFile = new File(Environment.getExternalStorageDirectory(), "demo.apk"); req.setDestinationUr ...
阅读全文 »

Vitual APP及其环境下的hook技术研究

发表于 2019-02-09 | 阅读次数:
随着Android系统安全漏洞的大幅减少,Android设备的root门槛变得越来越高,知名的root工具KingRoot甚至停止了维护,利用漏洞来root变成一件很困难的事情。 另一方面,厂商对Secure Boot的实现也在不断增强,大多数手机厂商关闭了bootloader解锁通道,通过刷第三方rom或recovery来root设备的方式逐渐不可行。 root是安全人员必备的研究环境,除了使用Nexus系列设备外,Vitual APP下的hook不失为一种办法。此外,由于上手简单,VA下的hook更多是被黑产或脚本所利用,本文对这种技术的原理进行分析。 一、Vitual APP原理广义的Vitual App 可以理解为轻量级的“Android虚拟机”,即一个宿主APP上运行多个其他APP的形式,一定程度上也可以理解为我们熟知的“应用多开”。这种“虚拟机”并未打破Android原有的系统机制,因此,宿主APP及其虚拟运行的多个APP共享同一个uid/gid。 我们知道Android上每个APP都运行在自己的沙盒环境中,但APP对于自己的进程、子进程等具有完全的控制权,在自己的沙箱内运行起其他APP,就实现了虚拟化。然而,常规的APP除了运行自己的代码外,还会和操作系统频繁交互,例如各种各样的服务、文件系统等,Vitual App如果成为了APP和操作系统的“中间人”,便实现了APP无感知的虚拟机,这也是Vitual APP的核心技术。 常见的Vitual APP有以下几类: 基于VitualAPP引擎的虚拟工具,例如“太极” (这里的VitualAPP特指github上一款工具,而Vitual APP是广义的虚拟化应用) 基于MultiDroid引擎的虚拟工具,例如“LBE平行空间” 基于DroidPlugin,如“360分身大师” 厂商自带的“应用分身工具”、“多开工 ...
阅读全文 »

利用Frida修改Android设备的唯一标识符

发表于 2018-12-20 | 阅读次数:
Android设备的唯一标识符1.IMEI (手机的身份证号码)IMEI(International Mobile Equipment Identity)是国际移动设备身份码的缩写,国际移动装备辨识码,是由15位数字组成的”电子串号”,它与每台移动电话机一一对应,而且该码是全世界唯一的。每一只移动电话机在组装完成后都将被赋予一个全球唯一的一组号码,这个号码从生产到交付使用都将被制造生产的厂商所记录。 有些设备的IMEI有两个,可以在拨号键盘输入“*#06#”查看。普通APP获取需要申请权限():1234//权限 <uses-permissionandroid:name="android.permission.READ_PHONE_STATE" />TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);//获取IMEI号String imei = telephonyManager.getDeviceId(); 2.IMSI (SIM卡的身份证号码)IMSI是区别移动用户的标志,储存在SIM卡中,可用于区别移动用户的有效信息。其总长度不超过15位,同样使用0~9的数字,例如460010280100023。其中MCC是移动用户所属国家代号,占3位数字,中国的MCC规定为460;MNC是移动网号码,最多由两位数字组成,用于识别移动用户所归属的移动通信网;MSIN是移动用户识别码,用以识别某一移动通信网中的移动用户, IMSI与IMEI权限相同,获取代码:1234//权限 <uses-permissionandroid:name="android.permission.READ_ ...
阅读全文 »

指纹识别技术安全分析

发表于 2018-12-12 | 阅读次数:
本文大部分总结和研究各种指纹识别的原理和安全性,作为日后指纹安全的参考wiki。 现阶段,任何一种生物特征识别,都是通过传感器把生物特征投影成像为数字信号,指纹也不例外。具体来说分为指纹图像提取、预处理、特征提取、比对等步骤。 指纹识别原理根据指纹图像提取技术的不同,现阶段主要分为光学指纹、电容指纹、超声波指纹以及屏下指纹几大类。 1.光学指纹光学指纹识别的原理如下图,手指按在指纹采集器上后,内部的光源将光线打到手指上,经过手指反射后汇集到识别器上,获得指纹图像。 现在有很多门禁、打卡机等等使用光学指纹识别技术,其缺点是如果手上有油污或者汗水,识别效果就会大幅度降低。 优点 光学指纹传感器可靠,价格便宜 缺点 手指湿水后影响光的反射 手指有干皮导致识别不了 可能会有痕迹遗留 无法识别活体,指纹可复制 攻击面 利用普通的蜡就可以制作假指纹 残留的指纹直接盖上纸片 2.电容指纹电容感测的原理就是当用户将手指按在传感器上时,会测量出指纹引起的极小的电导率变化信号,然后用测量到的数据形成一副指纹的图像。手指最外层的皮肤也就是指纹,是不导电的,而指纹里面的皮下层是导电的 电容指纹识别技术相比于光学传感器体积小、集成度高。所以这种传感器广泛应用于手机、便携设备等地方。例如高级门锁、保险箱等 优点 体积小,集成度高 图像质量较高 手指上的干皮不影响识别 依靠活体导电,有效对抗伪造 缺点 手指湿脏水后由于脏水导电,导致识别不准 成本高 攻击面 利通导电溶液制作假指纹 3.超声指纹原理是利用超声波具有穿透材料的能力,且随材料的不同产生大小不同的回波。因此,利用皮肤与空气对于声波阻抗的差异,就可以区分指纹凹凸不平的图像,甚至能渗透到皮肤表面之下识别指纹独特的3D特征 优点 湿手不影响识别 缺点 成本高 识别速度慢 攻击面 较难攻击 4.屏下指纹通俗地说,屏下指纹识别 ...
阅读全文 »

智能门锁安全分析

发表于 2018-12-11 | 阅读次数:
本文搜集所有和只能门锁相关的漏洞、设计、案例等。本文大部分内容来自CNCERT发布的《智能门锁网络安全分析报告》,结合其他资料作的搜集,作为日后智能门锁安全的wiki。 一、门锁设计相关两种架构:门锁直接联网、门锁通过手机联网 四种角色:主人、长期居住、重复访客、临时访客 门锁的交互介质:蓝牙、NFC、RFID、WiFi、数据流量 二、几种开锁的方式以及攻击面1.固定密码开锁实现机制:安装时先进行门锁初始化,并完成密码设置,该密码存储在智能门锁的固态存储空间,有时也可能会上传到云端进行存储。在用户开锁时,在门锁上输入密码,如果输入的密码与预先设置的密码一致,则可打开门锁。(该模式本质上相当于用密码去登录一个账户) 攻击面暴力破解、密码重置漏洞、按键痕迹残留、默认密码、后门密码等 漏洞案例暂无 2.临时密码开锁实现机制户主会通过手机APP从云端获取当前时段开锁的临时密码,并通过短信、微信或者手机APP等方式将临时密码发送给访客。访客在门锁上输入接收到的临时密码后,门锁会将该密码与云端自动生成的当前时段临时密码进行对比,如果成功,则开锁。 攻击面临时密码有效期、临时密码泄露、 漏洞案例3.生物信息开锁实现机制生物特征主要有指纹、掌纹、虹膜和人脸等。该类门锁在安装的过程中,会将指纹、掌纹、虹膜和人脸等生物特征初始化到智能门锁固态存储或者云端。用户开锁时,门锁需要采集用户的指纹、掌纹、虹膜和人脸特征,并传统到云端与初始化特征进行对比,如果对比成功,则开锁。 攻击面指纹泄露、指纹残留、人脸(图片)、 漏洞案例4.智能卡开锁实现机制用于智能门锁开锁的智能卡主要有RFID卡、NFC卡和CPU卡三类,该类门锁主要应用在酒店和公寓等场景。 使用RFID卡的门锁,门禁管理系统会在RFID卡中写入代表该卡身份的字符串,在开锁时,门锁提取RFID卡中的字符串,并传输到云端进行对比,对比成功,则开 ...
阅读全文 »
123…9

m4bln

影后入林到驿前

84 日志
2 标签
© 2021 m4bln
由 Hexo 强力驱动
|
主题 — NexT.Mist v5.1.3