查杀Linux服务器病毒进程并对Linux中的文件描述符FD进行简单探索

news2024/9/28 17:22:55

一直以来,我都十分推崇把看到的理论知识与实际相结合。

在今天查杀服务器病毒程序的过程中,顺便挖掘了一些新的知识,现在把他总结成一篇文章记录一下。

  1. 每一个进程都有一个文件描述符表(通过lsof -p 进程号),文件描述表是操作系统内核为每个进程维护的数据结构,用于跟踪和管理进程所打开的文件和其他I/O资源

    1. 在这里插入图片描述
  2. 每个进程在/proc/目录下都有一个以该进程ID为名的文件夹,存放了处于该进程的相关信息。可以通过/proc/进程id/fd找到该进程对应所有的文件描述符。在fd目录下中,每个文件描述符对应一个符号链接,每一个符号链接指向该进程打开的文件、套接字、管道。个人觉得在文件系统中他的呈现就是一个符号链接,可以通过该符号链接获取进程打开的文件或I/O资源的相关信息。

    1. 在这里插入图片描述

    2. 在这里插入图片描述

    引申一下:/proc/ 目录下存放了关于正在运行的进程和系统状态的虚拟文件系统

    1. 包括进程、CPU信息、内存、文件系统、网络、内核等信息
  3. FD具体有哪些类型?

    1. 在这里插入图片描述

    2. 上图是我在服务器上查到的病毒程序,为了彻底把他干掉,同时满足自己的好奇心,我没有直接把干掉。用lsof查看该进程和哪些文件有关,加深对FD的理解。

      FD常见的类型如下,我按照在lsof中的输出是否为整数来进行分类:

      1. 不为整数

        • cwd:当前进程的工作目录,表示当前进程的工作目录。它是进程执行命令时所在的目录。

          • 如上图中的/tmp/.X2zz-unix/.rsync/c,知道这个就知道病毒进程的老家在哪了?
        • rtd:(Root Directory)表示根目录。它是文件系统的最顶层目录。rtd文件描述符指向根目录。

          • txt(Text File)表示可执行文件或共享库文件。txt文件描述符指向该可执行文件或共享库文件。
            • 一般情况下都是指进程对应的可执行程序本身,如上图中的/tmp/.X2zz-unix/.rsync/c/blitz64
        • mem(Memory-mapped File)表示内存映射文件。内存映射文件是一种将文件内容映射到进程的虚拟内存空间的机制,允许对文件进行像访问内存一样的操作。mem文件描述符指向内存映射文件。

      2. 为整数(从0开始描述)

        • sock(Socket):表示套接字文件描述符,用于进程之间的通信。
        • pipe(Pipe):表示管道文件描述符,用于进程间的无名管道通信。
        • event(Event):表示事件文件描述符,用于异步事件通知。
        • inotify(Inotify):表示inotify文件描述符,用于监视文件系统事件。
        • timer(Timer):表示定时器文件描述符,用于定时器事件。

      补充: 对FD列中的0r1r2u进行说明

      1. 012三个文件描述符是每个运行着的进程都会自动打开的,具有固定含义:
        1. 0:代表标准输入,通常是键盘输入。
        2. 1:代表标准输出,通常是屏幕输出。
        3. 2:代表标准错误输出。
      2. ruw等标识了文件描述符对应文件的打开模式。
        1. r:表示文件以r(表示读取)的状态打开的,获取的是读取访问权限,即进程当前正从该文件读取数据。
        2. u:表示文件以u(表示使用)的状态打开的,获取的是读写访问权限。
        3. w:表示文件以w(表示写入)的状态打开的,获取的是写入访问权限,即进程当前正向该文件写入数据。
  4. 读取FD描述符对应的文件,这里我以病毒进程为例:

    1. 通过lsof -p 进程id找到目标进程打开的文件:

      在这里插入图片描述

    2. 通过cat < /proc/3232977/fd/2读取文件内容:

在这里插入图片描述

​ 3. 发现该病毒程序在执行一些奇怪代码。

小插曲:

为什么病毒中有一个压缩包叫dota3.tar.gz,是这哥们喜欢玩刀塔嘛?

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1078136.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

web基础以及http协议

web基础&#xff0c;http协议 域名&#xff1a;www.88886.co DNS解析 静态页面 动态页面 DNS域名&#xff1a; 网络上的通信都是基于IP通信模式&#xff1a;TCP/IP TCP建立连接和断开连接&#xff0c;都是要双方进行确认的 建立连接&#xff1a;三次握手 断开连接&#x…

.net mvc 无法创建虚拟目录和无法启动IIS Express Web服务器指定的url无效 解决方法

.net mvc 无法创建虚拟目录 修改项目配置中web中的项目url时&#xff0c;提示无法创建虚拟目录&#xff0c;则把ip地址改为localhost再进行创建即可 无法启动IIS Express Web服务器指定的url无效 解决方法 不要勾选【覆盖应用程序根URL&#xff08;U&#xff09;】,或让【覆盖…

js中进行数字,超大金额(千位符)格式化处理

前言 最近遇到一个需求,对于社区里讨论的帖子展示一个访问量的计数显示问题,当超过多少页面访问量时,就让其显示xxx万,xx亿 对于后台返回该字段的数据类型是number,需要进行格式化数字的输出 这个应用场景在前端开发中其实很普遍,例如:音乐app里面音乐歌曲播放数量,微博里的…

Unity中Shader的Lambert光照的实现

文章目录 前言一、分别获取Lambert光照模型的每个参数Lambert光照模型公式1、使用 Unity 封装的参数 unity_AmbientSky 获取环境光色2、在属性面板定义一个float类型参数作为光照系数3、获取主平行光的颜色4、获取世界空间下的顶点法向量5、获取反射点指向光源的向量6、使用Lam…

C++day04(类中特殊成员函数、匿名对象、友元、常成员函数和常对象、运算符重载)

1> 思维导图 2> 整理代码 代码&#xff1a; 算术运算符重载&#xff1a; #include <iostream>using namespace std; class Person {//全局函数实现运算符重载需要权限friend const Person operator(const Person L,const Person R); private:int a;int b; publi…

基于Springboot实现点餐平台网站管理系统项目【项目源码+论文说明】分享

基于Springboot实现点餐平台网站管理系统演示 摘要 随着现在网络的快速发展&#xff0c;网上管理系统也逐渐快速发展起来&#xff0c;网上管理模式很快融入到了许多商家的之中&#xff0c;随之就产生了“点餐平台网站”&#xff0c;这样就让点餐平台网站更加方便简单。 对于本…

泛函的含义,泛函分析

经常有同事和朋友讨论泛函分析是做什么的&#xff0c;所以做个小log 1. 泛函的含义 泛函的含义&#xff0c;笼统说&#xff0c;泛函是符合某种性质的任意函数&#xff1b;因为是任意的&#xff0c;所以就是泛泛的&#xff1b;但也没有不着边际的泛。 2. 泛函的例子 2.1 符合半…

uniapp+vue3+ts+uview-plus搭建项目步骤

创建项目 使用Vue3/Vite版&#xff0c;创建以 typescript 开发的工程 下载仓库 DCloud/uni-preset-vue - Gitee.com node版本&#xff1a;v16.18.0 npm版本&#xff1a; v8.19.2 依赖下载 解压之后&#xff0c;在vscode打开 通过终端运行 npm 命令下载依赖&#xff1a;npm ins…

1. Windows平台下如何编译C++版本的Redis库hiredis

Redis是一个key-value存储系统。和Memcached类似&#xff0c;它支持存储的value类型相对更多&#xff0c;包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash&#xff08;哈希类型&#xff09;。这些数据类型都支持push/pop、add/remove及取交集并…

Java中的抽象类和接口(Abstract Class and Interface)的区别

在Java面向对象编程中&#xff0c;总会用到接口和抽象类&#xff0c;他们都是对事物的一种抽象&#xff0c;有一些共同点但是也有很多区别。 接口Interface 在Java中接口需要用interface关键字定义&#xff0c;他是对一种行为的抽象&#xff0c;是一种约定的协议&#xff0c;…

微信小程序通过 movable-area 做一个与vuedraggable相似的上下拖动排序控件

因为只是做个小案例 我就直接代码写page页面里了 其实很简单 组件稍微改一下就好了 wxss /* 设置movable-area的宽度 */ .area{width: 100%; }/* a b c 每条元素的样式 */ movable-view {width: 100%;background-color: red;height: 40px;line-height: 40px;color: #FFFFFF;tex…

C语言进阶第五课-----------字符函数和字符串函数

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

库存管理方法有哪些?

本文将为大家讲解&#xff1a;库存管理方法有哪些&#xff1f; 库存管理是企业运营中的核心环节&#xff0c;它涉及到货物的采购、存储、销售和配送。有效的库存管理可以确保企业有足够的货物满足客户的需求&#xff0c;同时避免库存积压和浪费。为了达到这个目标&#xff0c;…

免费开源的非标项目型制造BOM一键导入方案介绍

非标项目型制造&#xff0c;每一个订单都会引入很多新料号、新BoM、新工艺路线。实施ERP/MES系统&#xff0c;实现生产管理数字化&#xff0c;第一步就是要导入这些料号、BoM和工艺。项目型制造&#xff0c;大多数订单只生产一次。但在ERP/MES系统中&#xff0c;订单的料号、Bo…

软件测试之概念篇2(瀑布模型、螺旋模型、增量模型和迭代模型、敏捷模型,V模型、W模型)

目录 开发模型 &#xff08;1&#xff09;瀑布模型 &#xff08;2&#xff09;螺旋模型 &#xff08;3&#xff09;增量模型和迭代模型 &#xff08;4&#xff09;敏捷模型 &#xff08;5&#xff09;测试模型&#xff08;V模型、W模型&#xff09; V模型 W模型 开发模型…

计算机等级考试—信息安全三级真题十

目录 一、单选题 二、填空题 三、综合题 一、单选题

企业文件、图纸加密软件哪个好——推荐【天锐绿盾加密软件】

天锐绿盾加密软件是一款全面、高效、方便的企业文件和图纸加密软件。 PC访问地址&#xff1a; isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 以下是这款软件的一些优点和推荐理由&#xff1a; 天锐绿盾加密软件集文件加密、行为监控、权限控制于一体…

身为底层码农,你见过最无理需求是啥?

案例一 20万的项目&#xff0c;已经花了六十万了&#xff0c;客户突然又新提要求做一套百度的搜索系统&#xff0c;我尿了&#xff0c;一顿冥思苦想&#xff0c;然后做了一个搜索页面&#xff0c;把几百张表的每个字段都like一遍在搜索页面输入的查询内容&#xff0c;一次搜索…

五分钟Win11安装安卓(Android)子系统

十分钟&#xff0c;完成win11安装安卓子系统 Step1、地区设置为美国 Wini 进入设置页面&#xff0c;选择时间和语言-语言和区域- 区域-美国 Step2 安装 Windows Subsystem for Android™ with Amazon Appstore 访问如下连接&#xff0c;install即可 安卓子系统 Step3 安…

Ubuntu虚拟机安装教程

镜像下载地址&#xff1a; https://releases.ubuntu.com/22.04/ubuntu-22.04.3-desktop-amd64.iso 选择自己要存放的位置&#xff0c;不要放C盘 双击 选择镜像文件 等待 安装完成 能出网即可