lsm和lkm模块】的更多相关文章

使用LSM Hook框架进行内核安全审计.元数据捕获,安全人员只需要按照既定的调用规范编写LKM模块,并加载进Linux内核,而不需要对system call lookup表进行任何修改 https://www.cnblogs.com/LittleHann/p/4134939.html…
http://www.ibm.com/developerworks/cn/linux/l-lsm/part1/ 1.相关背景介绍:为什么和是什么 近年来Linux系统由于其出色的性能和稳定性,开放源代码特性带来的灵活性和可扩展性,以及较低廉的成本,而受到计算机工业界的广泛关注和应用.但在安全性方面,Linux内核只提供了经典的UNIX自主访问控制(root用户,用户ID,模式位安全机制),以及部分的支持了POSIX.1e标准草案中的capabilities安全机制,这对于Linux系统的安全性是…
目录 . 引言 . Linux Security Module Framework Introduction . LSM Sourcecode Analysis . LSMs Hook Engine:基于LSM Hook进行元数据的监控获取 . LSM编程示例 . Linux LSM stacking 0. 引言 从最佳实践的角度来说,在Linux Kernel中进行安全审计.Access Control(访问控制)最好的方式就是使用Linux提供的原生的框架机制,例如 . Kprobe: Li…
......上一节,我们编写了一个基本的lkm模块,从功能上来说它还没有rootkit的特征,这次我们给它添加一点有意思的功能.我们让一个指定的进程杀不死, 曾经,想写一个谁也杀不死的进程,进程能捕捉到SIGTERM,就是kill默认发送的signal,能捕捉到SIGINT,你平时按下Ctrl-C就是这个操作,但是无论如何你也无法阻止, SIGKILL,及终极杀人王火云邪神的必杀kill -9 pid. 作为一个小强,怎么能被现实如此的摧残,我们要对命运说不,so 有个几种解决方案,一中方案:两…
各种折腾,经过了一个蛋疼的周末,终于在Ubuntu14.04上运行了一个基于LSM的简单demo程序. 一:程序编写 先简单的看一下这个demo: //demo_lsm.c#include <linux/lsm_hooks.h> #include <linux/sysctl.h> ; int demo_task_create(unsigned long clone_flags) { printk("[+geek] call task_create(). count=%ll…
最近打算写一个基于LSM的安全模块,发现国内现有的资料极少.因此打算自己琢磨一下.大致的学习路线如下: 由易至难使用并阅读两到三个安全模块->参照阅读模块自己实现一个安全模块->在自己实现的同时阅读LSM实现的基本源码,由于Yama代码量小,结构十分清晰,可以作为入门的demo进行参照. 由于网上关于LSM的相关介绍已经烂大街了,就按自己的初步理解简单介绍一下LSM,详情可以自己阅读文后的相关链接,本文源码基于Linux4.8.0. 一:什么是LSM 一种轻量级的安全访问控制框架,主要利用Ho…
目录 . The Purpose Of Rootkit . Syscall Hijack . LKM Module Hidden . Network Communication Hidden . File Hidden . Process Hidden . Hidden Port Remote Reverse Connections . Programe Replacing 1. The Purpose Of Rootkit Basically, the purpose of rootkit i…
目录 . 进程相关数据结构 ) struct task_struct ) struct cred ) struct pid_link ) struct pid ) struct signal_struct ) struct rlimit . 内核中的队列/链表对象 ) singly-linked lists ) singly-linked tail queues ) doubly-linked lists ) doubly-linked tail queues . 内核模块相关数据结构 ) st…
catalog . 概述 . 使用模块 . 插入和删除模块 . 自动化与热插拔 . 版本控制 1. 概述 模块(module)是一种向Linux内核添加设备驱动程序.文件系统及其他组件的有效方法,而无需连编新内核或重启系统,模块消除了宏内核的许多限制,模块有许多优点 . 通过使用模块,内核发布者能够预先编译大量驱动程序,但并不会造成内核镜像发生膨胀,在自动检测硬件(例如USB)或用户提示之后,安装例程选择适当的模块并将其添加到内核中 . 内核开发者可以将试验性的代码打包到模块中,模块可以卸载.修…
目录 . 内核态(ring0)内存申请和用户态(ring3)内存申请 . 内核态(ring0)内存申请:kmalloc/kfree.vmalloc/vfree . 用户态(ring3)内存申请:malloc/free . 内核内存申请原则 . 内核中分配物理地址连续的大段内存 1. 内核态(ring0)内存申请和用户态(ring3)内存申请  0x1: 差异点 在内核中申请内存和在用户空间中申请内存不同,有以下因素引起了复杂性,包括 . 内核的虚拟和物理地址被限制到1GB . 内核的内存不能PA…
目录 . 引言 . LRK5 Rootkit . knark Rootkit . Suckit(super user control kit) . adore-ng . WNPS . Sample Rootkit for Linux . suterusu . Rootkit Defense Tools . Linux Rootkit Scanner: kjackal 1. 引言 This paper attempts to analyze the characteristics from the…
之前写了一篇快速自检电脑是否被黑客入侵过(Windows版), 这次就来写写Linux版本的. 前言 严谨地说, Linux只是一个内核, GNU Linux才算完整的操作系统, 但在本文里还是用通俗的叫法, 把Ubuntu,Debian,RedHat,CentOS,ArchLinux等发行版都统称为Linux. 本文里所说的方法不仅对Linux的发行版适用, 部分方法对Mac OSX操作系统也是适用的. 异常的帐号和权限 如果黑客曾经获得过命令运行的机会, 对方往往会想要将这个机会持续下去,…
转自:http://www.cnblogs.com/LittleHann/p/4558719.html catalog 1. 概述 2. 使用模块 3. 插入和删除模块 4. 自动化与热插拔 5. 版本控制 1. 概述 模块(module)是一种向Linux内核添加设备驱动程序.文件系统及其他组件的有效方法,而无需连编新内核或重启系统,模块消除了宏内核的许多限制,模块有许多优点 1. 通过使用模块,内核发布者能够预先编译大量驱动程序,但并不会造成内核镜像发生膨胀,在自动检测硬件(例如USB)或用…
前言 严谨地说, Linux只是一个内核, `GNU Linux`才算完整的操作系统, 但在本文里还是用通俗的叫法, 把`Ubuntu`,`Debian`,`RedHat`,`CentOS`,`ArchLinux`等发行版都统称为`Linux`. 本文里所说的方法不仅对Linux的发行版适用, 部分方法对`Mac OSX`操作系统也是适用的. 异常的帐号和权限 如果黑客曾经获得过命令运行的机会, 对方往往会想要将这个机会持续下去, 业内称之为`持久化(persistence)`. 而创建后门帐号…
Exploit Linux Kernel Slub Overflow By wzt 一.前言 最近几年关于kernel exploit的研究比较热门,常见的内核提权漏洞大致可以分为几类: 空指针引用,内核堆栈溢出,内核slab溢出,内核任意地址可写等等.空指针引用漏洞比较 容易exploit,典型的例子如sock_sendpage,udp_sendmsg.但是新内核的安全模块已经不 在允许userspace的code映射低内存了,所以NULL pointer dereference曾经一度只能d…
翻译自 https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-5.0 本文介绍了在 Ubuntu 16.04 服务器上设置生产环境可用的 ASP.NET Core 环境.这里的介绍对于更新版本的 Ubuntu 可能也会工作,但是并没有在更新版本的服务器上测试. 更过关于 ASP.NET Core 只是的 Linux 发行版,请查看 Prerequisites for .NE…
SELinux全称为安全增强式 Security-Enhanced Linux(SELinux),是一个在内核中实践的强制存取控制(MAC)安全性机制.SELinux 首先在 CentOS 4 出现,并在其后的 CentOS 发行版本获得重大改善.这些改善代表用 SELinux 解决问题的方法亦随著时间而改变. SELinux的原理与架构 SELinux的整体架构和原理都比较简单,使用也不复杂.其复杂的地方在于规则非常复杂,每个进程都要有规则策略. SELinux有2个核心组件及一些配套的工具.…
前些日子接了个外包的活,了解了一下Linux安全模块,发现了安全模块中的一些问题. 关于linux安全模块LSM在此就不多说了,大家google下就明白了. 这里主要介绍的是如何修改这个模块,使它可链栈化. 关于LSM,旧版本的提供了register_security/mod_reg_security接口用于注册用户的安全模块,register_security注册接口只支持一个的安全模块存在,mod_reg_security 支持注册多个安全模块,不过模块之间的调用需要用户自己维护(也就是不提…
唉,一开始在纠结起个什么名字,感觉名字常常的很装逼,于是起了个这<手把手教你写LKM rookit> 我觉得: 你们觉得:...... 开始之前,我们先来理解一句话:一切的操作都是系统调用.系统通过陷入或者库的方式,让你跟内核的函数交互.当然啦,平时我们都处在用户态的情况下,系统调用调用的是内核态的函数,ps:这个系列完了,我们从内核级的rookit脱离出来,升级到bios级别的rootkit,哇卡卡-- 那么我在这傻了吧唧的讲了半天,什么是LKM,Loadable Kernel Module…
在上面一篇中介绍到,监控模块要做成一个驱动模块(或者说是可加载模块,LKM),动态的加载到Linux内核中.那么这篇就简单的介绍一下怎样做一个这样的驱动模块.   以简单的hello world程序为例,我们如何把它写成一个驱动模块,并加载到Linux内核里面呢?   一开始,你要保证你的Linux系统有内核源码树.现在的Linux发行版安装时记得选择是Developer模式安装,基本上就行了.   首先,你要写一个hello.c源代码文件,代码如下.     然后你要写一个Makefile文件…
简介 搜集一下linux lkm rootkit中常用的一些技巧 1.劫持系统调用 遍历地址空间 根据系统调用中的一些导出函数,比如sys_close的地址来寻找 unsigned long ** get_sys_call_table(void) { unsigned long **entry = (unsigned long **)PAGE_OFFSET; ) { if (entry[__NR_close] == (unsigned long *)sys_close) { return ent…
Linux是单内核系统,可通用计算平台的外围设备是频繁变化的,不可能将所有的(包括将来即将出现的)设备的驱动程序都一次性编译进内核,为了解决这个问题,Linux提出了可加载内核模块(Loadable Kernel Module,LKM)的概念,允许一个设备驱动通过模块加载的方式,在内核运行起来之后"融入"内核,加载进内核的模块和本身就编译进内核的模块一模一样. 一个程序在编译的地址的相对关系就已经确定了,运行的时候只是进行简单的偏移,为了使模块加载进内核后能够被放置在正确的地址,并正确…
转自:http://www.ibm.com/developerworks/cn/linux/l-cn-kernelmodules/ 为保持 Linux 内核的稳定与可持续发展,内核在发展过程中引进了可装载模块这一特性.内核可装载模块就是可在内核运行时加载到内核的一组代码.通常 , 我们会在两个版本不同的内核上装载同一模块失败,即使是在两个相邻的补丁级(Patch Level)版本上.这是因为内核在引入可装载模块的同时,对模块采取了版本信息校验.这是一个与模块代码无关,却与内核相连的机制.该校验机…
我安装Ubuntu的时候是没有安装源码的,在没有安装源码前 /usr/src/ 目录下是只有两个包含内核的头文件的文件夹的: 我的内核版本是: 所以接下来就是先安装内核源码: 执行后,/usr/src / 目录就多了两个文件夹: 这样源码就下载下来了,然后将源码解压: 解压之后 /usr/src/linux-3.13.0/文件夹里面的就是内核源码了. 然后再对源码进行编译. 先进入/usr/src/linux-3.13.0/ 文件夹: 然后依次执行 make  oldconfig , make…
模块参数 引导模块时,可以向它传递参数.要使用模块参数加载模块,这样写: insmod module.ko [param1=value param2=value ...] 为了使用这些参数的值,要在模块中声明变量来保存它们,并在所有函数之外的某个地方使用宏MODULE_PARM(variable, type) 和 MODULE_PARM_DESC(variable, description) 来接收它们.type参数应该是一个格式为 [min[-max]]{b,h,i,l,s} 字符串,其中 m…
该文转载自:http://rangercyh.blog.51cto.com/1444712/521244 系统调用是操作系统内核和应用程序之间的接口,而设备驱动程序是操作系统内核和机器硬件之间的接口. 设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件, 应用程序可以像操作普通文件一样对硬件设备进行操作. 设备驱动程序是内核的一部分,它完成以下的功能: (1) 对设备初始化和释放. (2) 把数据从内核传送到硬件和从硬件读取数据. (3) 读取应用程序传送给设备…
一.Linux Security Modules Linux Security Modules (LSM) 是一种 Linux 内核子系统,旨在将内核以模块形式集成到各种安全模块中.在 2001 年的 Linux Kernel 峰会上,NSA 代表建议在 Linux 内核版本 2.5 中包含强制控制访问系统 Security-Enhanced Linux.然而,Linus Torvalds 拒绝了这一提议,因为 SELinux 并不是惟一一个用于增强 Linux 安全性的安全系统.除此之外,并不…
Oracle ODI系列之一(ODI知识模块)     ODI简介 ODI(Oracle Data Integrator)前身是Sunopsis Active Integration Platform,在2006年底被Oracle收购,重新命名为Oracle Data Integrator.主要定位于在ETL和数据集成的场景里使用.ODI和Oracle原来的ETL工具OWB相比有一些显著的特点,比如和OWB一样是ELT架构,但是比OWB支持更多的异构的数据源等等,本系列文章将逐步介绍ODI的一些…
linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberry 选项: Android 选项: 生成makefile 遇到链接检查失败的情况 生成makefile后进行编译 编译时的错误 多重定义’QT_MODBUS()’和’QT_MODBUS_LOW()’ qt_static_plugin_AssimpParserPlugin未定义 在Qt Creator…
LSM是Linux Secrity Module的简称,即linux安全模块.其是一种轻量级通用访问控制框架,适合于多种访问控制模型在它上面以内核可加载模块的形实现.用户可以根据自己的需求选择合适的安全模块加载到内核上实现. LSM设计思想: LSM的设计思想:在最少改变内核代码的情况下,提供一个能够成功实现强制访问控制模块需要的结构或者接口.LSM避免了利用如在systrace系统调用中的出现过的系统调用干预,因为它不能扩展到多处理器内核,并且它受制于参数替换攻击.还有LSM在设计时做了两点考…