kernel知识点记录
学kernel的悲伤的事情,就是有时间学的时候发现之前学的都忘记了:(
由于发现kernel的知识点还是比较多,所以还是记录一下方便我忘记后速看,混杂很多自我理解和废话和大量的原文,长期更新
保护SMEPSMEP(Supervisor Mode Execution Protection),是内核的保护措施,当用户在ring0模式时,执行用户空间的代码会触发页错误。在Arm中叫PXN。
一般可以看qemu的启动脚本的参数确定有没有开SMEP保护,SMAP同样是这个方法。
系统会根据CR4寄存器的值判断是否开启SMEP保护,如果CR4寄存器第20位是1,保护开启,否则关闭。
一般用mov cr4, 0x6f0关掉SMEP
SMAP让ring0模式的用户无法读写用户代码,SMEP是执行这个是读写,其他的差不多
CR4寄存器
20位是SMEP,21位是SMAP
内核镜像相关vmlinux编译出来的原始内核文件。里面有符号表,不能直接用来加载,但是可以用来kernel-debug
bzImage压缩后的内核文件。bz表示”big zImage”。内核比较大最好用这个,有更好的压缩率
zImage ...
UEFI SMM题目训练
专门记录SMM相关题目。能找到的题目+有wp的题目都会陆续复现。
UIUCTF 2022-smm_cowsay_1题目描述One of our engineers thought it would be a good idea to write Cowsay inside SMM. Then someone outside read out the trade secret (a.k.a. flag) stored at physical address 0x44440000, and since it could only be read from SMM, that can only mean one thing: it… was a horrible idea.
题目文件结构123456789101112131415161718192021222324252627282930313233343536├── chal_build│ ├── Dockerfile│ ├── handout-readme│ ├── handout_run.sh│ ├── patches│ ...
UEFI固件漏洞学习
工作需要,进行一波学习
前置知识UEFIUEFI是描述开发固件(特别是BIOS)标准接口集的规范。该固件是启动期间在CPU上执行的第一批内容,负责初始化硬件并进行设置,从而让操作系统可以启动。该固件存储在计算机SPI Flash中。攻击者如果成功攻击这个硬件,就可以在硬盘以外的其他位置实现持久性。
SMM系统管理模式(System Management mode)(以下简称SMM)是Intel在80386SL之后引入x86体系结构的一种CPU的执行模式。系统管理模式只能通过系统管理中断(System Management Interrupt, SMI)进入,并只能通过执行RSM指令退出。SMM模式对操作系统透明,换句话说,操作系统根本不知道系统何时进入SMM模式,也无法感知SMM模式曾经执行过。为了实现SMM,Intel在其CPU上新增了一个引脚SMI# Pin,当这个引脚上为高电平的时候,CPU会进入该模式。在SMM模式下一切被都屏蔽,包括所有的中断。SMM模式下的执行的程序被称作SMM处理程序,所有的SMM处理程序只能在称作系统管理内存(System Management RAM, ...
内核pwn刷题笔记
刷题记录,可能会非常乱,因为我主要是服务于自己,写的时候大概会主要写自己想要巩固的部分。(我这个人,什么事都只想着自己呢)
qwb2018 core(rop)内核pwn初体验,非常好玩儿,主要是看着这个复现https://arttnba3.cn/2021/03/03/PWN-0X00-LINUX-KERNEL-PWN-PART-I/#0x06-Kernel-Heap-Heap-Spraying
首先拿到内核文件系统
毕竟是第一次做,解释一下每个文件
https://zhuanlan.zhihu.com/p/466591309
bzimage
bzImage是最终生成的内核映像文件,可以理解为压缩后的vmlinux。可以用extract-vmlinux提取vmlinux
vmlinux
vmlinux 是静态编译,未经过压缩的 kernel 文件
内核源码根目录下比较大的vmlinux就是第一次编译链接生成的ELF文件,如果内核开启了调试选项,那么crash工具加载的就是这个vmlinux来获取符号信息等,debug-info包里的就是这个vmlinux
总而言之里面大概是有符 ...
miasm学习【3】--动态shellcode分析
本文又又又是基于官方blog进行复现,由于第二部分动态符号执行遇到了点问题,先学shellcode分析得了。
https://miasm.re/blog/2016/02/12/dynamic_shellcode_analysis.html
虽然是8年前的东西了,但是我真没找到其他的适合的有样本有代码有复现的文章了。那就学
车联网入门第一题--D3ctf-d3car
周末和烧卖激情的打了D3ctf,逆向没啥特别想记录的,主要是这次是本人第一次接触车机类的题目,主要时间在和师傅们一起做这个,感觉非常有意思,学到很多,但是最后还是只日出来一个flag,后面俩没日出来。不过日的时候疯狂搜索各种相关知识,也算小小的入了一点点门了?之后再找点相关
发现环境已经寄了,只能靠回忆来复现了
分三部分,相关知识介绍,自己做的部分和复现的部分
相关知识mqtt简述MQTT 是一种基于标准的消息传递协议或规则集,用于机器对机器的通信。智能传感器、可穿戴设备和其他物联网(IoT)设备通常必须通过带宽有限的资源受限网络传输和接收数据。这些物联网设备使用 MQTT 进行数据传输,因为它易于实施,并且可以有效地传输物联网数据。MQTT 支持设备到云端和云端到设备之间的消息传递。
原理mqtt是基于发布/订阅模型工作的协议,和普通的网络通信协议不一样,一般的网络通信协议是服务端和客户端相互通信,但是mqtt是引入了一个代理,每个客户端(用mqtt通信的设备都可以叫mqtt客户端)都可以是发布者和订阅者。如果是订阅消息,就是客户端向代理发送SUBSCRIBE,后接一个表示 ...
24/04/28
又是好多天没记录。虽然确实没啥好记的,2425忙着改论文开组会,改完就萎了然后打瓦连跪。
miasm看了,但是没看多少,后面再记录。
主要是跟着烧卖打了两天d3ctf,打满了。这次除了做了逆向,主要时间居然是在做车联网的题。因为他们说是安卓,我直接放下本来在看的(还好放下了)最后都是0解的一个re题屁颠屁颠去看了。结果发现没有日车机的经验不知道怎么下手。但是和烧卖的师傅们一起讨论把一些坑和流程都走了,也学了很多车机相关的协议和分析手法。确实很好玩,我感觉比逆向好玩(草或者说,至少比我接着日那个0解的Verilog好玩,也能学很多东西。
总而言之爽到了。虽然环境有点绷不住连一次10分钟容器还经常炸,虽然最后被wm超了一道题又又又第二,但是爽到了。
官方wp发完要狠狠的复现一波
打完d3后连开两把瓦,在赛季末上黄金了。功夫不负有心人
24/04/23
在广州和烧卖的师傅吃吃喝喝玩了两天,回来改毕设了
今日把毕设打回来的部分改了一大半,剩下的明天再说。
吃完午饭和学弟打了一把瓦,40杀,爽了一天
下午看了一下午miasm。真的想吐槽miasm的网上的示例,全都是python2版本的,第一次跑必报错。每次翻源码debug好久才能正常跑,而今天的动态符号执行的例子直接寄了,跑出来约束莫得,大概是模拟的时候错了。哎晕了
晚上把安卓的activity漏洞看了一遍,具体就
越权绕过原理就是把activity设置为导出了,导致可能被其他程序直接调用导致各种风险。按照ctf的话来说就像你直接绕过输入验证的步骤直接跳到了flag的界面。因为flag界面默认设置为导出(我还真这样做出过一道题)。方式也很多,编写apk调用或者用am去直接拉起来都行。
防护就别乱开export,检查intent-filter防止被恶意广播捕获然后干掉了。
钓鱼欺诈就是在正常程序上面悬浮恶意钓鱼软件的界面,比如你点开微信输入密码后发现输入到的是悬浮的恶意软件的窗口,微信的界面在下面被盖住了。原理也很简单,就是activity的历史栈,如果给activity设置FLAGAC ...
24/04/19
突然想记录一下每天干的事情,因为一天过去不知道干了啥,不知道能坚持多久,希望能坚持100天。
今日看安卓漏洞战争,大体了解了安卓各种漏洞类型,安了python3的drozen环境。很难装,很抽象,但是装上了。
学了activity的漏洞类型和原理。
显式隐式调用Intent,Intent的action和category,activity的生命周期的总流程,activity的四种启动模式。
常见安全漏洞看了四大组件的常见漏洞起因和保护
https://ayesawyer.github.io/2019/08/21/Android-App%E5%B8%B8%E8%A7%81%E5%AE%89%E5%85%A8%E6%BC%8F%E6%B4%9E/
主要是在学原理,还没开始实战,也只装了环境。
下午运维了一下服务器,晚上学了unity,把flappy bird的碰撞检测加上了。
明天大概没记录,因为去广州蹭打长城杯的学弟的10人房子🤺了
miasm学习【2】--动态符号执行
试试miasm的符号执行。虽然感觉miasm比较老学了不知道有没有用,不过先学几天玩玩也不是不行
仍然是看的官方blog
https://miasm.re/blog/2017/10/05/playing_with_dynamic_symbolic_execution.html
这次环境纯Ubuntu22+miasm0.1.3+vscode remote,不想再被0.1.5折磨了,遂更换。
动态符号执行动态符号执行(Dynamic Symbolic Execution)是一种软件测试和分析技术,用于自动化地探索程序的执行路径和输入空间。与传统的静态分析或基于覆盖率的测试方法相比,动态符号执行具有更高的覆盖率和更好的路径探索能力。
模拟用tigress的一个程序来测试miasm的动态符号执行
https://github.com/JonathanSalwan/Tigress_protection/blob/master/tigress-challenges/tigress-0-challenge-0
1234567891011121314from miasm.analysis.sandbo ...