
物联网
文章平均质量分 78
FunctionY
学生
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
angr符号执行用例解析——codegate_2017-angrybird
用例源码以及二进制文件链接:https://github.com/angr/angr-doc/tree/master/examples/codegate_2017-angrybird这个二进制文件执行起来没反应,给参数也不可以。看了用例源码,才知道这个二进制文件很怪,加了“anti-run instructions”(嗯,反运行指令)。除非更改二进制文件,删除掉反运行指令或直接跳转到正确代码块才可...原创 2018-04-16 19:11:01 · 1370 阅读 · 0 评论 -
angr符号执行用例解析——csaw_wyvern
用例源码以及二进制文件链接:https://github.com/angr/angr-doc/tree/master/examples/csaw_wyvern这是一个恐怖的世界,一条恶龙在这片领域盘旋。当然,这也是属于勇士的世界,力量和坚持是我们唯一的希望!为了打败这条恶龙,我们要了解它的弱点,所以把它拖进IDA里分析一下。这是一个C++的二进制文件,用到了较多的C++库函数。执行二进制文件后,发...原创 2018-04-17 09:11:32 · 1600 阅读 · 0 评论 -
angr符号执行用例解析——CSCI-4968-MBE
用例源码以及二进制文件链接:https://github.com/angr/angr-doc/tree/master/examples/CSCI-4968-MBE/challenges本次用例代码压轴的crackme0x05非常棒,前面比较简单可以跳过去。crackme0x00a这个就是一贯的套路了,确定start_addr,find_addr, avoid_addr,然后创建simulation...原创 2018-04-17 10:21:29 · 2134 阅读 · 0 评论 -
angr符号执行用例解析——defcamp_r100
用例源码以及二进制文件链接:https://github.com/angr/angr-doc/tree/master/examples/defcamp_r100这道题非常非常简答啦!就是要求输入一个password,check一下是否正确。check函数逻辑:signed __int64 __fastcall sub_4006FD(__int64 a1){ signed int i; // ...原创 2018-04-17 10:45:26 · 967 阅读 · 0 评论 -
angr符号执行用例解析——defcon2016quals_baby-re
用例源码以及二进制文件链接:https://github.com/angr/angr-doc/tree/master/examples/defcon2016quals_baby-re执行二进制文件,发现需要输入13个字符,然后通过一系列计算判断输入字符是否满足约束条件。在IDA里非常清晰可以看见输入错误的字符串及其调用地址:所以avoid_addr=0x402941而正确的字符串以及地址为:可以看...原创 2018-04-17 18:42:43 · 2148 阅读 · 0 评论 -
angr符号执行用例解析——asisctffinals2015_license
源码及二进制文件链接: https://github.com/angr/angr-doc/tree/master/examples/asisctffinals2015_license分析题目:运行二进制文件,输出:key file not found!看来该二进制需要读取一个文件,拖到IDA里看它需要读取的文件路径及名称是什么。找到以后发现是:"_a\nb\tc_"。那创建一个名为"_a\nb\t...原创 2018-04-12 15:51:08 · 673 阅读 · 0 评论 -
angr源码分析——BackwardSlice
BackwardSlice 程序反向切片,从给出的某一个目标点,获取所有到达该目标点的路径。angr的这个功能似乎并不完善,里面可以自己进行定制。在进行程序切片前,我们需要提供一个控制流图CFG。此外,为了确定程序反向的起始点,还需要提供一个target。下面是angr文档中给出的一个例子:>>> import angr# Load the project>>&g...原创 2018-05-10 14:05:22 · 2840 阅读 · 0 评论 -
angr源码分析——CFGAccurate and Function Manager
angr的控制流图恢复可以分为两种,一种是CFGAccurate,一种是CFGFast。关于它们的介绍,在我以前的一篇《自动化二进制分析技术》中有所提及,为了方便代码的理解,我把这部分内容再次放在本文的后面了。所以,如果你对控制流恢复一窍不通的话,可以跳到最后 控制流图恢复 部分先了解理论。angr通过执行每一个基本块并观察基本块的执行流向来构造CFG。然而,在不同的上下文中基本块的流向将不同。如...原创 2018-05-06 19:37:52 · 3192 阅读 · 18 评论 -
angr源码分析——CFGFast 快速构建控制流图
有时我们需要对一个二进制文件做一个全面的分析,然而使用CFGAccurate一般都需要提供一个start_state作为起始的状态点进行分析,这就导致分析并不全面。为了获得一个高代码覆盖率的CFG,我们可以使用CFGFast。下面分析一下CFGFast的源码,了解其恢复原理,然后进行自己的改进吧。CFGFast在给定的二进制文件中识别函数,并以非常快的方式构建一个控制流图:与CFGAccurate...原创 2018-06-11 11:27:40 · 3977 阅读 · 0 评论 -
angr源码分析——数据依赖图 DDG
由于官方文档中关于数据依赖图(DDG)的说明少之又少,所以这是一篇对angr构造数据依赖图由浅入深的分析博客。下面就开始吧。DDG的使用案例:#先加载一个二进制文件,选择符号分析模式proj = angr.Project(binary_path,load_options={'auto_load_libs': False},default_analysis_mode='symbolic')#利用...原创 2018-06-13 19:12:47 · 3560 阅读 · 1 评论 -
angr源码分析——库函数识别identify
在识别代码的同源性时,多数情况下采用的方法是依赖于代码本身的数据特征例如Flirt技术的前32位字节码,函数crc;diaphora的fuzzing hash等。而在二进制代码中,不同的编译环境或库版本都会对最终生成的库函数的代码带来巨大的变化,导致依赖于数据特征的库函数识别技术识别率极低,或者干脆无用。那么此时为了识别一个函数我们需要依赖的就是函数的语义。函数语义代表这个函数做了什么,而不是...原创 2018-08-09 11:28:19 · 3142 阅读 · 1 评论 -
angr符号执行用例解析——cmu_binary_bomb
解题源码以及二进制文件在:https://github.com/angr/angr-doc/tree/master/examples/cmu_binary_bomb一道有趣的题目!首先运行bomb文件,随便输入个字符串,bomb! 炸了!总共有6关要闯,每次只要输入满足要求的数据才能进入下一关,否则就爆炸。拖到IDA里面分析,发现第一关的字符串比较还蛮简单,下面几关就需要计算了。int __fas...原创 2018-04-16 15:53:21 · 2606 阅读 · 0 评论 -
angr符号执行用例解析——asisctffinals2015_fake
源码及二进制文件链接: https://github.com/angr/angr-doc/tree/master/examples/asisctffinals2015_fake首先拿到这个文件,还是先执行分析一下。输入一个长整型,输出长整型经过一系列计算后的转化为字符串的结果。这道题有点脑洞大开,但是也不是很难。其实就是希望我们输入一个长整数,使得输出为我们需要的flag。这道题的前提是,已知fl...原创 2018-04-09 21:20:35 · 1209 阅读 · 0 评论 -
如何hack物联网
考虑物联网设备的安全性时不要局限在某一部分,可以从以下几个方面系统分析。1、嵌入式设备(需要掌握硬件知识);2、固件;3、移动端,web端,云端;4、无线通信。首先拿到一个物联网设备时,先了解设备功能与基本的交互流程;然后查看是否开放了端口;包含了哪些组件。画图结合文本描述。再细致的分析,包括使用的交互中介,交互协议,是否有其他的web访问点,是否提供了产品的安全性描述。翻译 2017-10-18 19:31:45 · 395 阅读 · 0 评论 -
物联网安全调研一
物联网安全本文主要对Understanding IoT Security Through the Data Crystal Ball: Where We Are Now and Where We Are Going to Be这篇综述进行了翻译整理,作为以后物联网翻译 2017-08-25 10:18:56 · 1311 阅读 · 0 评论 -
物联网——Zigbee协议简介
在物联网中,设备与设备的通信存在两类协议。第一类协议是接入协议(传输协议):负责子网内设备间的组网及通信。这类协议包括:Zigbee,WiFi,蓝牙。第二类协议是通信协议,负责通过传统互联网与服务器、APP或设备进行交换数据,包括HTTP,MQTT,websocket、XMPP、COAP。本篇文章主要介绍ZigBee协议。ZigBee协议通常用于工控设备,目前在智能家居中也十分常见,例如网关与门窗...原创 2017-12-06 15:14:46 · 14517 阅读 · 0 评论 -
angr源码分析——claripy ,factory
claripy是一个符号求解引擎,大多数时候,我们只是简单使用claripy,然而当我们做一些核心的符号执行分析时,则不得不深入claripy api,了解其实现细节及处理逻辑,从而进行改进。就我目前对符号执行的理解而言,在使用符号执行解决问题时,首先要提供符号变量,然后提供求解路径,提供求解器,最终求解出结果。那么在angr中如何定义以及初始化这些参数和变量的呢?这是此次源码分析要解决的一个问题...原创 2018-02-25 21:26:18 · 3560 阅读 · 0 评论 -
angr源码分析——Simulation Manager
angr中符号执行涉及的代码比较多,前面已经介绍了符号执行中获取程序状态的类factory,以及状态对象SimState涉及到的属性,方法,插件,下面将介绍关于符号执行路径探索的主要对象Simulation Manager。代码位于:angr/angr/manager.pyangr.manager.SimulationManager(project, active_states=None, sta...原创 2018-03-07 13:43:55 · 1775 阅读 · 0 评论 -
angr源码分析——SimState
在最初分析angr的符号执行流程时,我们首先介绍了angr中claripy的应用代码,如下:import angr, claripy b = angr.Project('/bin/true') path = b.factory.path() rax_start = claripy.BVS('rax_start', 64) path.state.regs.rax = rax_star...原创 2018-02-27 23:29:51 · 1725 阅读 · 0 评论 -
angr源码分析——angr.Project类
使用angr时,第一行语句就是:b = angr.Project('path/bin_file_name')该代码调用的为Project类的构造函数_init_()。Project类是angr模块的主类,它对一个二进制文件进行初始的分析以及参数配置,并将数据存储起来进行后续进一步分析。构造函数参数:angr.project.Project(thing, default_analysis_mode=...原创 2018-02-19 11:27:08 · 2320 阅读 · 0 评论 -
angr源码分析——cle.Loader类
上篇文章分析angr.Project类时说到,angr工具第一步就是将二进制文件加载到cle.loader类里。(CLE means Loading Everything)。loader类加载所有的对象并导出一个进程内存的抽象。生成该程序已加载和准备运行的地址空间。构造函数参数:cle.loader.Loader(main_binary, auto_load_libs=True, force_lo...原创 2018-02-23 22:09:01 · 2750 阅读 · 0 评论 -
angr源码分析——Simulation Engines
为什么研究这个类呢?原因是在对程序进行模拟执行时,step()调用的实际上就是project.factory.successors()函数,而这个函数代码为 def successors(self, *args, **kwargs): """ Perform execution using any applicable engine. Enumerate th...原创 2018-03-12 13:49:20 · 1240 阅读 · 0 评论 -
angr符号执行用例解析——CADET_00001
源码及二进制文件链接:https://github.com/angr/angr-doc/tree/master/examples/CADET_00001CADET_00001是DARPA为网络大挑战赛发布的挑战之一,链接:https://github.com/CyberGrandChallenge/samples/tree/master/examples/CADET_00001二进制文件可以在DE...原创 2018-04-01 10:52:18 · 1702 阅读 · 2 评论 -
angr符号执行用例解析——ais3_crackme
源码及二进制文件链接:https://github.com/angr/angr-doc/tree/master/examples/ais3_crackme这次的用例非常简单,也非常基础(也是唯一一个,我自己能做出来的)。执行这个二进制文件 ./ais3_crackme输出: You need to enter the secret key!看来需要参数,随便输入个123: ./ais3_crack...原创 2018-04-09 20:38:41 · 1856 阅读 · 0 评论 -
提取摄像头固件中应用逻辑代码
所需工具:file 用来查看文件类型strings 用来获取文件中所有的字符串binwalk 用来提取和分离固件firmware-mod-kit 分析固件的瑞士军刀了,能做很多事,以后有机会写一系列的firmware-mod-kit相关博客。固件分析首先用binwalk分析固件格式,即固件中包含了哪些文件。binwalk firmware.bin提取文件系统提取出文件...原创 2019-01-07 18:33:10 · 4814 阅读 · 0 评论