|
|
|
请教一些与Linux内核安全相关的问题
本人也不是专家,尝试回答一下楼主的问题 1. 稳定、复用、安全 某些嵌入式设备的系统是不分内核空间和用户空间的,就一块内存任你乱搞,但那是因为任务简单。无论是个人PC还是服务器,任务都非常复杂,设想一下如果不把任务调度和内存管理统一起来由单一的程序(即内核)管理,如何支持上层那么多的应用程序。其次,很多驱动类程序是比较底层的,如网卡驱动,应用层的各种网络应用最终都需要调用到一致的网卡驱动代码,网卡驱动之上的协议层也是如此,这些代码即复杂且可以复用,为什么不交给单一程序(即内核)管理。。。慢慢地,就演变成了一部分程序(复杂的,高度复用的)和另一部分程序(更上层的解决任务的)分开来,对这两部分程序给予不同的权限(R0,R3),对于前者,可以完全控制硬件,不允许出错。对于后者,允许出错,相应的,只给部分权限,这种权限的划分落地就是不同地址空间的划分 2.主要是通过内核提供的接口来影响内核,如果内核不提供,应用层无法影响内核(原因参考1) 这些接口包括系统调用、文件接口(/proc 等)、内核模块。。。这些接口可以通过内核编译选项开启或关闭,比如可以关闭内核模块接口,这样应用层是无法插入模块的 3.linux上权限系统比windows严格,所以如果拿不到root做的事情有限,如果要拿到root,可能要用到漏洞等等。。,这一步比较难吧 4. 如果拿到root,同时该kernel编译时开放了内核模块接口,那么,由于你可以插入代码到内核,你当然可以控制整个内核,前提是对内核代码比较熟,不要一插入模块就崩~ , 另外,linux内核模块有校验机制,如果是预先编译好的攻击模块,还不得不先面对绕过校验这一关 |
|
[求助]已知某结构体的地址,如何动态获取其某一个成员变量的地址
这个问题我自己通过谷歌基本解决了 参考:Hide process with DKOM without hardcoded offsets 文章是windows上的,我是在linux上做的,用这种思路可以实现我要的东西 |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值