单位网站建设意义,流媒体网站建设方案,企业年金退休后怎么发放,如何建设一个文件分享网站Rootkit 是非常危险的恶意软件#xff0c;一旦侵入就很难被发现。开发 Rootkit 通常更加困难#xff0c;很多攻击者都倾向于重用开源项目。
Adore-Ng 是一个相对较老的、开源的 Linux 内核 Rootkit#xff0c;最初针对内核 2.x 版本开发#xff0c;但目前已更新为针对内核…Rootkit 是非常危险的恶意软件一旦侵入就很难被发现。开发 Rootkit 通常更加困难很多攻击者都倾向于重用开源项目。
Adore-Ng 是一个相对较老的、开源的 Linux 内核 Rootkit最初针对内核 2.x 版本开发但目前已更新为针对内核 3.x 版本适用。该 Rootkit 可以隐藏进程、文件甚至内核模块使其更难被发现。它还允许经过身份验证的用户模式进程与 Rootkit 交互以控制进程从而允许攻击者使用单个 Rootkit 隐藏许多其他恶意软件。
2022 年早期研究人员发现基于 Adore-Ng 开发而来的在野 Rootkit。根据 .modinfo 可以看出这是为特定内核版本编译的
内核版本
如果使用 insmod --force 的命令强制将模块加载到内核中内核找不到所需的符号就会导致系统奔溃。发现的 Rootkit 可以在不强制加载的情况下在 CentOS 6.10 中成功加载。
Rootkit 中硬编码的文件名为 PgSD93ql这也是要引用的 Payload 文件名。攻击者想将该名称贴近 PostgreSQL 的文件名称不被发现。
硬编码文件
按图索骥找到被 Rootkit 隐藏的文件实际为 C 写的后门。由于写入文件时显示 /proc/syslogk将其命名为 Syslogk Rootkit。
分析 Syslogk
Syslogk Rootkit 主要基于 Adore-Ng 开发但也包含一些更为隐蔽的新功能。
加载内核模块
要将 Rootkit 加载到内核空间需要与编译时使用的内核版本大致匹配但不必严格相同。
通过 insmod 命令即可在 Centos 6.10 中轻松加载该 Rootkit。但加载后使用 lsmod 命令并不会看到内核模块列表中出现该恶意驱动程序。
掀开隐藏面纱
Rootkit 中的 hide_module 函数使用内核 API list_del 从内核模块的链表中删除该模块。不过Rootkit 在函数中实现了 proc_write 函数当 /proc/syslogk 文件被写入 1 时就会显示 Rootkit。
现形
一旦 Rootkit 被确认就可以使用 rmmod 命令将其删除。
功能概述
Syslogk 使用了多种方式隐藏自身 通过 hk_proc_readdir 隐藏包含恶意文件的目录 通过 hk_getpr 隐藏特定进程 通过 hk_t4_seq_show 隐藏特定服务 通过安装 netfilter hook 控制接收到的特制 TCP 数据包 通过硬编码的密钥利用特制 TCP 数据包远程启动 Payload Syslogk 非常隐蔽在特制的 TCP 数据包发送到实现主机前并不会加载后门执行时也是打着 SMTP 合法服务的旗号进行隐蔽传输。
在为 PTE 增加了写权限后Rootkit 就可以 Hook 指定函数
Hook 函数
通过 /proc/kallsyms 获取到可 Hook 的内核符号地址后Rootkit 使用 udis86对指定函数进行 Hook。
目录隐藏
Syslogk Rootkit Hook 了 VFS 函数来隐藏 /etc/rc-Zobk0jpi/PgSD93ql 文件。Hook 是通过 hk_root_readdir 调用 nw_root_filldir 目录过滤实现的。
部分代码
如上所示任何包含 -Zobk0jpi 字符串的目录都会被隐藏。这一方式一点都不新鲜可以查看 Adore-Ng 的[源码](https://github.com/yaoyumeng/adore-ng/blob/master/adore- ng.c#L300)是如何实现的。
进程隐藏
Syslogk 进程隐藏的方式比 Adore-Ng 更简单默认隐藏名为 PgSD93ql 的进程。
版本比较
流量隐藏
Rootkit 通过在 adore_tcp4_seq_show() 函数中利用 strnstr 函数查找特定端口的十六进制字符串如果发现即删掉。以此将如 netstat 的 Linux 应用程序查询监听连接时的结果进行过滤。
流量隐藏
这样在查看失陷主机的连接情况时就不会出现后门的连接。
特制 TCP 数据包
启动虚假 SMTP 服务器的特制 TCP 数据包非常简单只要数据包符合 TCP 且来源端口为 59318 即可触发。
启动
启动服务前Rootkit 会调用 pkill_clone_0 终止所有实例。然后通过 call_usermodehelper_setup、call_usermodehelper_setfns 和 call_usermodehelper_exec 的内核 API 启动服务。 /bin/sh -c /etc/rc-Zobk0jpi/PgSD93ql 停止服务的特制 TCP 数据包要求高很多 检查启用执行标志 检查 TCP 头中的 ReservedTCP 为 0x08 检查源端口在 63400 到 63411 之间 检查源 IP 与目的端口与启动的特制 TCP 数据包一致 检查硬编码的密钥 D9sd87JMaij 硬编码的密钥的偏移量是通过 TCP 头中的 data offset 进行设置的将 4 bit 的字节向右移动并乘以 4 后即可指向预期偏移量。
偏移量
在分析时data offset 使用的值为 0x50右移后会得到 20。这正好是 TCP 头的大小使用这个值可以将密钥放在数据包数据部分的开头位置。
分析 Rekoobe
通过特制 TCP 数据包启动 Rekoobe 后Rekoobe 看起来像一个普通的 SMTP 服务器。但其中存在后门指令 starttls在正常情况下该指令是要开始 TLS 协商。
后门指令
为了触发 Rekoobe 后门攻击者通过 TLS 发送 0x03 字节随后是 TLV 格式的编码数据。
传送数据
溯源
如下所示Rekoobe 显然是基于 TinySHell开源项目。
相似对比
另一方面在 Syslogk Rootkit 中也有对 TinySHell 的引用如下所示
相似引用
最后
对于从来没有接触过网络安全的同学我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线大家跟着这个大的方向学习准没问题。 同时每个成长路线对应的板块都有配套的视频提供 当然除了有配套的视频同时也为大家整理了各种文档和书籍资料工具并且已经帮大家分好类了。 因篇幅有限仅展示部分资料有需要的小伙伴可以【扫下方二维码】免费领取