当前位置: 首页 > news >正文

Linux当中如何隐藏和查看进程

前言

进程是执行程序的过程,类似于按照图纸,真正去盖房子的过程。

同一个程序可以执行多次,每次都可以在内存中开辟独立的空间来装载,从而产生多个进程。不同的进程还可以拥有各自独立的IO接口。操作系统的一个重要功能就是为进程提供方便,比如说为进程分配内存空间,管理进程的相关信息等等,就好像是为我们准备好了一个精美的地址。

进程信息是proc目录下动态生成,每个动态创建的进程ID号下面详细的记录了关于该进程的fd,mem,io,cpuset等进程信息。

Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。

**通过它可以访问系统内核数据。**用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。

由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统动态的。在/proc下还有三个很重要的目录:net,scsi和sys。sys目录是可写的,可以通过它来访问或修改内核的参数,而net和scsi则依赖于内核配置。例如,如果系统不支持scsi,则scsi 目录不存在。

除了以上介绍的这些,还有的是一些以数字命名的目录,它们是进程目录。系统中当前运行的每一个进程都有对应的一个目录在/proc下,以进程的 PID号为目录名,它们是读取进程信息的接口。而self目录则是读取进程本身的信息接口。

读取/proc/self/maps可以得到当前进程的内存映射关系,通过读该文件的内容可以得到内存代码段基址。

一、隐藏进程

利用mount —bind 将另外一个目录挂载覆盖至/proc/目录下指定进程ID的目录,我们知道ps、top等工具会读取/proc目录下获取进程信息,如果将进程ID的目录信息覆盖,则原来的进程信息将从ps的输出结果中隐匿。

比如当前有一个minio进程(pid:1945)

[root@docker]-[~]-ps -ef|grep minio
root       1945   1924  0 08:06 ?        00:00:10 minio server /data --console-address 0.0.0.0:9999

现在我们将该进程隐藏:

#首先,创建一个空目录(无任何挂载)
mkdir -p /empty/dir

#将空目录进行挂载
mount -o bind /empty/dir/ /proc/1945

然后,我们再来查询看看进程是否隐藏:

[root@docker]-[~]-#ps -ef|grep minio
root      46358  32804  0 10:54 pts/0    00:00:00 grep --color=auto minio

发现,进程已经被我们隐藏掉了。

二、隐藏进程侦查

2.1 方式一(mounts)

[root@docker]-[/proc]-#cat /proc/mounts 

 2.2 方式二(sysdig)

下载安装:

# curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | sudo bash
[root@docker]-[~]-#sysdig -c topprocs_cpu

  2.2 方式三(unhide)

下载安装:

yum -y install unhide

暴力扫描隐藏进程:

unhide checkbrute

相关文章:

  • 【C++ Primer Plus】第6章 分支语句和逻辑运算符
  • 案例分享 | 建筑师灵活用工平台产品规划设计
  • 基于springboot+vue的大学生交友活动管理网站 elementui
  • 神经网络建模的基本思想,神经网络语言模型详解
  • 使用VMware搭建OceanStor_eStor存储超详细教程
  • main函数执行前执行和执行后执行
  • idea git提交代码
  • ElasticSearch ES 安装 常见错误 Kibana安装 设置 权限 密码
  • 批量ping、telnet脚本
  • 计算机网络概念基础——分组交换
  • Mysql查询去空格方法汇总
  • 一次生产死锁问题的处理
  • 【软考 系统架构设计师】计算机组成与体系结构② 存储系统
  • CAD Electrical 如何设置原理图库为GB
  • 基于Springboot+vue的汽车租赁系统 elementui
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • Android单元测试 - 几个重要问题
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • JavaScript的使用你知道几种?(上)
  • JavaWeb(学习笔记二)
  • JS专题之继承
  • MySQL-事务管理(基础)
  • Python 基础起步 (十) 什么叫函数?
  • Spring Cloud Feign的两种使用姿势
  • Swift 中的尾递归和蹦床
  • 阿里云应用高可用服务公测发布
  • 搭建gitbook 和 访问权限认证
  • 记录:CentOS7.2配置LNMP环境记录
  • 今年的LC3大会没了?
  • 精彩代码 vue.js
  • 前端js -- this指向总结。
  • 前端代码风格自动化系列(二)之Commitlint
  • 如何使用 JavaScript 解析 URL
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (145)光线追踪距离场柔和阴影
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (libusb) usb口自动刷新
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (二)丶RabbitMQ的六大核心
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (黑马C++)L06 重载与继承
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .net 验证控件和javaScript的冲突问题
  • [1525]字符统计2 (哈希)SDUT
  • [16/N]论得趣
  • [20161214]如何确定dbid.txt