2014年12月29日星期一

Android(一)yunos_acb调试工具简析




1.yunos 调试工具正常只能自家手机助手使用,直接调用会提示`parameter verify false`
数验证错误:
2.分析 acb.exe,找到对应`parameter verify false`字符串代码部分,发现入口有字符串验证 函数,而 `adb_commandline` 即正常 adb 工具入口:
3.verify_input 入口有一段字符串验证,通过之后才会对比指令:
4.验证的字符串就不算了,process explorer 可以直接从命令行里找到:`acb 覺ガ F x fork-server server`
5.附加对应字符串即可使用 acb 的调试功能:
6.不过 acb 工具只允许通过少部分指令,其他都被阉割了,如下直接使用 shell 就无法通过 验证,只能使用类似 shell am 的指令:
7.总结能使用的 adb 指令如下,相当有限,可直接复制使用,也可后面附加其他参数: 
acb覺ガF x fork-server
acb
覺ガF x start-server
acb
覺ガF x kill-server
acb覺ガF x devices 
acb覺ガF x get-state 
acb覺ガF x forward 
acb覺ガF x pull 
acb覺ガF x shell am 
acb覺ガF x shell pm 
acb覺ガF x shell logcat 
acb覺ガF x shell getprop 
acb覺ガF x shell ps
acb覺ガF x shell netstat

8.上述指令没有安装 apk,也没有 push 可以推送进手机后 pm 安装,具体实现安装细节还未 分析清楚

2014年12月5日星期五

IoT(二)NFC


整理补充点RFID射频入门知识,方便以后使用:
NFC技术基于RFID,其工作频率为13.56MHz。
可以参考ISF这篇ppt:RFID-ISF2014-杨旭-中文.pdf
另外补充一本NFC方面经典书籍:Near Field Communication 

RF卡也称非接触IC卡、射频卡,基于电磁感应原理
当RF卡靠近电磁场时,线圈从电磁场中吸收能量,能力聚集足够时卡中微电路开始工作
微电路工作并不发射数据,而是利用消耗电磁能量使电磁信号发生变化,该电磁场变化即对应卡中的数据

IC卡存储区分配表:
RFID将整个存储区划分为多个扇区(一般16个),每个扇区4个块,每块16字节,其中每个扇区03块用来存放密钥。
(表来自学校一卡通)
扇区00的块00是特殊块,一般存储制造商代码:
• 第0~4字节为IC卡的序列号
• 第5字节为序列号的CRC校验码
• 第6字节为IC卡的容量“SIZE”字节
• 第7、8字节为IC卡的类型编码字节
其他字节由厂商自行定义。


存储区数据访问条件:
各扇区03块为控制位,前后各6B存储KeyA和B,Key不可读
中间AccessBits为访问控制设置,用于设置该分区四个存储块的访问条件和数据块类型
每个块有三个控制位,如块0:C10,C20,C30,访问条件如下:
块0、1、2有读、写、加值Increment、减值Decrement、传送transfer、恢复Restore,共六种操作
块03只有读写两种操作

IC卡内数据金额算法:
对比上图,60h即上图第01扇区第01块
我们只看选中的这两行就行,也就是
我们暂且把这行数据分成四段来看
第四段是地址位,所以我们可以忽略不看,但是写卡的时候也不要动它,就让它保持原来的样子就行。第1和第3段是一样的。中间的FFFF也不要管了。
我们接下来开始计算其中的数据,先看第1段是1027,因为它是十六进制的,所以1027先倒序之后就是2710,然后再转换成二进制就是10011100010000,在计算的时候大家要记好一个十六进制数对应的是4个二进制数,所以前面转换的二进制其实应该是0010 0111 0001 0000,如果位数不够的话就在前边补零,然后再转换成十进制就是10000,因为保留两位小数,所以10000在刷卡时候就是100.00也就是100块。
再来看第二段EFD8,EFD8倒序一次是D8EF,然后转换成二进制就是1101 1000 1110 1111,然后再取这个二进制的反码,就是0010 0111 0001 0000,取反之后再转换成10进制就是10000,还是100块,只是这两个存储的方式不一样罢了,第3段和第1段是一样的,所以在计算方面,只计算第1段和第2段就行了。现在我们计算的是倒着来的,也就是从卡内的数据转换成具体金额的方法。也就是逆向计算的。
下面我们把这个具体的思路再整理一下:
1段数据算法(非逆向):十进制金额→转二进制→转十六进制→倒序。
2段数据算法(非逆向):十进制金额→转二进制→取反码→转十六进制→倒序。
下面是逆向计算数据的算法,其实就是把上面的反过来罢了,逆向计算的通常是为了验        证一下计算的数据有没有出错,算法如下:
1段数据算法(逆向):十六进制倒序→转二进制→转十进制。
2段数据算法(逆向):十六进制倒序→转二进制→取反码→转十进制。
有兴趣可以对这篇blog里的数据算一下:

其他:
通常一个密码系统只要密钥未泄露,它也应该是安全的。
RF卡虽然数据存储在本地,但一般RF卡支付系统都会有后台审计的,只是时间未知。
也有一些RF卡只做身份识别,数据则在云端。
所以本地修改RF卡可以玩玩,不过不要太投入,毕竟有过前车之鉴(360员工被捕)。

武汉交通卡:
一般交通卡都可以使用NFC来识别,比如使用通用工具”NFCard“就可以读取余额和记录。
北京卡可以直接读取余额和记录:
武汉卡由于对余额做过处理,通用工具只能识别记录:
但若使用”武汉通行“官方充值工具则可以读取:
 
银行卡:
通用工具”NFCard“可以读取卡号、有效时间、ATM终端交易记录,余额信息本地应该没有:

CVE/CNVD list

报告记录&poc: 最近fuzz出了不少crash,提交记录git: https://github.com/gandalf4a/crash_report 其中CVE记录如下: (不定期持续更新) 2025 CVE-2025-22134:heap-buffer-o...