使用Android Studio 调试无源码apk程序
Apk无源码调试的方法有很多,现在发现使用Android Studio 结合 JEB 感觉良好,主要是参考 http://www.jianshu.com/p/c7899e5ea182 这篇记录下了具体步骤。 1. 下载 smalideahttps://bitbucket.org/JesusFreke/smali/downloads/smalidea-0.03.zip 在Android studio的插件仓库中没有找到这个插件,需要下载本地安装File -> Settings -> Plugins -> Install plugin from disk 选择下载的插件,重启后生效。 2. apktool 输出源码文件https://github.com/iBotPeaches/Apktool/releases/download/2.2.0/apktool_2.2.0.jar 1java -jar apktool_2.2.0.jar d -f xx.apk -o xx 如果正常的将输出 smali 源码文件 3. Android Studio 导入源码File ...
一些反沙盒的新技术
Upatre 使用了一些新的逃逸技术来逃逸动态沙盒引擎的检查,这些技巧都非常的简单,但是非常的有效果。事实上,VirusTotal上Upatre的检出率并不高,新变种出来基本都检测不出来,说明现在的恶意软件对付杀毒软件是越来越有办法了。 目前在恶意软件上加壳倒是越来越少了,因为加壳容易引起杀软引擎的注意,相反地目前的恶意软件大量使用边执行边修改自身代码的方法来躲避杀软,不执行的话看起来就像是一个正常的软件,而真正执行起来代码却全变了,这也算是一种进化。 下面说说两种最近遇到的沙盒逃逸的办法,样本md5: ac3558b973402ef6a27e03c391f20533 检查开机时间一般使用沙盒的分析引擎的做法都是安装一个全新的系统,做系统镜像。然后在检查的时候加载镜像,执行样本。而开机的时间往往都被忽略了,基本都不会超过10分钟。 Upatre 样本所采取的方法是利用GetTickCount 获取开机的毫秒数,当开机时间小于12分钟是就不执行恶意的行为。 12345678004013B3 BB D8FE0A00 MOV EBX,0AFED8004013B8 ...
Andorid 绕过 SSL Pinning 抓 https 报文
SSL pinningSSL Pinning是一种防止中间人攻击的技术,主要机制是在客户端发起请求–>收到服务器发来的证书进行校验,如果收到的证书不被客户端信任,就直接断开连接不继续请求。可以发现中间人攻击的要点是伪造了一个假的服务端证书给了客户端,客户端误以为真。解决思路就是,客户端也预置一份服务端的证书,比较一下就知道真假了。 SSL-pinning有两种方式:证书锁定(Certificate Pinning) 和公钥锁定( Public Key Pinning)。 证书锁定需要在客户端代码内置仅接受指定域名的证书,而不接受操作系统或浏览器内置的CA根证书对应的任何证书,通过这种授权方式,保障了APP与服务端通信的唯一性和安全性,因此客户端与服务端(例如API网关)之间的通信是可以保证绝对安全。但是CA签发证书都存在有效期问题,缺点是在证书续期后需要将证书重新内置到APP中。 公钥锁定提取证书中的公钥并内置到客户端中,通过与服务器对比公钥值来验证连接的正确性。制作证书密钥时,公钥在证书的续期前后都可以保持不变(即密钥对不变),所以可以避免证书有效期问题,一般推荐这种做法...
Intent Spoofing 攻击
0. Android的安全模型 application sandbox selinux permissions application signing 正是因为Application sandbox的存在,App进程之间是相互隔离的。有下面一个场景一个App需要调用weixin来分享内容,如何处理?这就需要用到intent,告诉Android系统你的意图是什么,Android系统将调用相应的处理程序来处理。 Intent 是一个将要执行的动作的抽象的描述,一般来说是作为参数来使用,由Intent来协助完成android各个组件之间的通讯。比如说调用startActivity()来启动一个activity,或者由broadcaseIntent()来传递给所有感兴趣的BroadcaseReceiver, 再或者由startService()/bindservice()来启动一个后台的service.所以可以看出来,intent主要是用来启动其他的activity 或者service,所以可以将intent理解成activity之间的粘合剂。 1. IntentIntent...
Android Binder Fuzzing 的一些思路
1. binder 简介Android安全模型的一个关键部分是每一个应用程序都被赋予一个唯一的 Linux 用户 ID 和组 ID,运行在自己的进程和 Dalvik 虚拟机里。在应用程序安装的过程中,Android系统设备上创建一个专门的目录(文件夹),用于存储此应用程序的数据,并且仅允许应用程序利用Linux 用户 ID 和组 ID 的相应访问权限对这些数据进行访问。此外,此应用程序的 Dalvik 虚拟机使用应用程序的用户 ID 运行在自己的进程中。这些关键的机制在操作系统层面上强制数据安全,因为应用程序之间不共享内存、访问权限及磁盘存储。应用程序只能在它们自己的 Dalvik 虚拟机范围内访问内存和数据。 1234567891011121314151617$ ps...u0_a16 2757 882 2574956 116944 SyS_epoll+ 0 S com.google.android.gms.persistentu0_a128 2774 883 1939084 87720 SyS_epoll+ ...
afl-fuzz 框架
afl-fuzz 的整体架构,新手理解起来还是比较费劲,网络上发现一张图觉得不错,放上来大家看看,感谢原作者。
Dissecting American Fuzzy Lop A FuzzBench Evaluation 要点
paper: https://www.s3.eurecom.fr/docs/fuzzing22_fioraldi_report.pdf 两个实验的结论 (主要基于 FuzzBench) Our conclusion after this experiment is that AFL, and follow-ups fuzzers like AFL++, should provide an optionto disable hitcounts. AFL++ provides many different op-tions, and the users are suggested to run an instance of each variant when doing parallel fuzzing, a common use-case in real-world setups. The fact that in our experiments,hitcounts have shown a highly variadic behavior suggests that users ...
关于A股变盘的假期效应思考
沉浮 A股多年,发现一个比较重要的规律,A 股变盘的时间节点大多发生在重大节假日期间,分别举例如下: 「1」重大节日 (包括阳历和农历: 劳动节,国庆节,中秋节,端午节,过年 等) 「2」周一/周五 「3」月初/月末 有人总结出 A 股变盘时间节点和农历的 24 节气相关,每个节气的时间间隔大致在 15 到 16 天左右,这条规律其实和上面的 「1」 说法是一致的。 思考其背后的原因,平时交易日都是连续的中间无间断,大家的交易思路和看法也比较容易连续一致。每逢重大节日,或者月初月末,往往都是放假休息的时间,外加期间各种信息的输入量比平时大很多,这样容易有思维波动。重大节日后,主力一带节奏,容易对大家的思维进行强化,分歧转一致后,就真的变盘了。 A股还有个月初,月末效应,月初赚钱,月末亏钱,比较奇怪,可能和基金经理的月初建仓和月末考核相关,这条规律几乎是对称的,如果月末没有大跌,月初基本就没有大赚效应。 后面发现居然有一个股票技术分析流派叫季节派。(季节理论 Season Theory)
010editor 保持试用
软件介绍010Editor是一款快速且强大的十六进制编辑器。用来编辑二进制文件。有一个友好易于使用的界面,无限次的undo和redo操作。另外还可以打印十六进制的字节或者以书签的方式标出某些重要的字节。支持二进制模板(binary template)系统。 保持试用国外软件很多时候相当厚道了,试用基本是全功能,轻微延时和不能自动更新二进制模板,就日常使用来说基本是完全够用了。 关键文件为 ~/.config/SweetScape/010 Editor.ini,无法使用的时侯可以把这个文件清空,将恢复30天试用状态,或者简单粗暴的将文件设置为只读。 1chmod 444 "010 Editor.ini" 用IDA逆向的时侯没有发现这个文件比较奇怪。这个文件是 是使用strace命令发现的,strace命令支持 -e 的过滤参数将有效减少输出,一般来说看strace日志文件可以从最后往前看。 1strace -e trace=file ./010editor 从代码上看有使用网络验证需要在hosts文件中屏敝两个网站, 可以减少一些不必要的麻烦。 12127....
Keynote - How Do You Actually Find Bugs?
https://www.youtube.com/watch?v=7Ysy6iA2sqA&ab_channel=OffensiveCon Temperament Curiosity Detail-oriented Ability to deal with failure and continual evidence that you’re wrong Learn how to deal with failure Two projects (can be unrealeted, or different parts of the same) Learn to recognize whe you have hit a wall and have become unproductive Switch to your secondary project Consider having a development project as your seconary project Do an achiveable, measurable task Regain a sense...