老司机用脚本批量巧删恶意文件

作者:田逸(formyz)

一个NFS服务器,为多个Web项目所共享。这些目录包括PHP程序、图片、HTML页面和用户上传的文档和附件等。因为某些Web框架古老,存在诸如不对上传文件做严格的安全性检查,虽然此NFS服务器位于受保护的内部网络,但任然被别有用心的人上传了大量的恶意文件。强烈要求程序员进行程序(Discuz)更新,答复说更新难度太大,无法在程序上进行处理。从系统管理层面上,临时的措施仅仅是安装shadu软件,对这个共享目录进行扫描,然后删除这些有害的文件(治标不治本)。

共享存储NFS部署在Centos 7.9上,存储空间44T,使用空间4.5T(如下图所示),由于管理相对松懈,有大量的垃圾信息不进行清理和归档。

根据以往的经验和使用习惯,决定在NFS 服务所在的宿主系统Centos 7.9部署开源的、大名鼎鼎的安全软件Clavam,其官方的宣传“ClamAV® is an open-source antivirus engine for detecting trojans, viruses, malware & other malicious threats”--ClamAV®是一款开源防Virtual引擎,用于检测特洛伊Muma、病Du、恶意软件和其他恶意威胁。不知从什么时候开始,官网底部的标识换成网络设备生产商CISCO,即便如此,Clamav目前还是开源、免费的,可以不受限制使用。在Centos 7.9上,至少有3种部署安装Clamav的方法:RPM二进制包、二进制源码和在线包管理工具“yum”,如下图所示。

在Centos 7.9下部署安装Clamav最容易、最便捷的方式就是“yum install”,试着在系统命令行下执行“yum  install clamav”,执行过程及输出如下。

很遗憾,Clamav没有包含在软件仓库中,不能被正确安装到系统。再试着添加一个“epel-release”附加软件仓库,执行的命令是“yum install epel-release”。接着继续执行“yum list clamav”,从输出可知,附加的仓库列表已经包含软件包“clamav”,如下图所示。

执行指令“yum install clamav”进行正式安装。除了主软件Clamav外,还有另外多个依赖包被一起安装,如下图所示。

与用源码包安装相比,不需要根据安装过程中的错误输出逐一安装所需的依赖,效率大大的提高了。

初次被安装部署的Clamav的bingdu库比较陈旧滞后,需要在系统命令行下对这个bingdu特征库进行更新,降低扫描识别的遗漏。执行bingdu库更新的命令是“freshclam”,不带任何参数和选项,执行的过程及输出如下图所示。

Bingdu库已经是最新的了,在正式执行扫描之前,为了预防SSH远程终端断开而导致扫描中断,强烈建议在“screen”上执行扫描。如果执行命令“screen”提示命令不存在,用“yum install screen”安装之。正确执行命令“screen”后,系统立即返回Shell提示符,这时,正式输入如下指令对疑似有问题的共享目录进行完整扫描,并把输出记录到日志文件”/var/log/clamscan.log”。

clamscan -r /data -l /var/log/clamscan.log

clamscan -r /data -l /var/log/clamscan.log

经过漫长的等待,我这个扫描耗费了好多天的时间才完成。查看扫描日志文件,是否存在恶意文件,使用的命令如下:

[root@nas wenku]# grep FOUND  /var/log/clamscan.log

/data/cu/attachment/forum/201305/29/22155372jcjxtt0vfx2uk2.zip: Win.Trojan.IRCBot-785 FOUND

/data/cu/attachment/forum/201501/05/155857clzd9d10bwdpl3s0.zip: Unix.Trojan.Agent-37008 FOUND

/data/cu/attachment/forum/201501/10/2110526a6afrfrzvas2h25.zip: Win.Tool.Chopper-9839749-0 FOUND

/data/cu/attachment/forum/201501/10/210932qsy27wsnwazswagr.zip: Win.Tool.Chopper-9839749-0 FOUND

/data/cu/attachment/forum/201405/18/082512hhjnzummmnuu4i8i.zip: Unix.Dropper.Mirai-7338045-0 FOUND

/data/cu/attachment/forum/201205/11/084024426448y1bk6jmmb9.zip: Win.Trojan.SdBot-13589 FOUND

/data/cu/attachment/forum/201206/05/092231faffjiak6z3gkzqv.zip: Win.Malware.Aa93a15d-6745814-0 FOUND

/data/kong/blog/attach/attachment/201603/9/30229789_1457535724sulu.jpg: Win.Trojan.Generic-6584387-0 FOUND

…………….省略更多…………………………..

/data/wenku/App_Data/Documents/2012-03-10/7da3d2c7-6d16-44c2-aab1-e8a317716c15.txt: Dos.Trojan.Munga-4 FOUND

/data/wenku/App_Data/Documents/2014-02-17/4ed74e66-54d1-46b5-8a41-4915ced095a5.ppt: Xls.Trojan.Agent-36856 FOUND

/data/wenku/App_Data/Documents/2014-02-23/c5c1dfa6-9f04-4e53-b418-4d711ce5408d.ppt: Win.Exploit.Fnstenv_mov-1 FOUND

/data/wenku/App_Data/Documents/2014-07-15/ae2dfca5-ddef-4c41-8812-bcc5543415e1.txt: Legacy.Trojan.Agent-34669 FOUND

[root@nas wenku]# grep FOUND  /var/log/clamscan.log

一共有500多条带关键字“FOUND”的记录,而且分布路径不规律,无法通过删除目录的方式将这些分布离散的恶意文件给处理掉。如果手工一条一条的按绝对路径删除,即低效也容易出错;假使这种形式分布的恶意文件成千上万,用手工逐一删除的方式基本无法完成。

命令“clamscan”本身带选项“--remove”直接删除扫描出来的恶意文件,但这样没有经过相关人员的确认,可能会引起争论。所以需要将这些有问题的恶意文件,呈现给相关人员确认,没有异议以后,才可以移动或者删除。

从Clamav扫描出来的日志文件下手,用工具将恶意文件的全路径提取出来,使用的指令如下。

[root@nas wenku]#grep FOUND  /var/log/clamscan.log |awk -F[:] '{print $1}'

/data/wenku/App_Data/Documents/2016-04-11/8fe8d01e-e752-4e52-80df-f202374b2b6d.doc

/data/wenku/App_Data/Documents/2016-04-11/03a14021-279f-45cd-83c5-b63076032c9e.doc

/data/wenku/App_Data/Documents/2016-04-11/c45ddc01-ec3d-4a54-b674-8c2082d76ce3.doc

/data/cu/attachment/forum/201305/29/22155372jcjxtt0vfx2uk2.zip

/data/cu/attachment/forum/201501/05/155857clzd9d10bwdpl3s0.zip

/data/cu/attachment/forum/201501/10/2110526a6afrfrzvas2h25.zip

/data/cu/attachment/forum/201501/10/210932qsy27wsnwazswagr.zip

/data/cu/attachment/forum/201405/18/082512hhjnzummmnuu4i8i.zip

/data/cu/attachment/forum/201205/11/084024426448y1bk6jmmb9.zip

/data/cu/attachment/forum/201206/05/092231faffjiak6z3gkzqv.zip

………………省略若干…………………………

grep FOUND  /var/log/clamscan.log |awk -F[:] '{print $1}'

与原始日志相比,去掉了冒号“:”以及其后的全部字段。在此指令后,增加管道并配合“xargs”传递参数,就可以将扫描出来的恶意文件全部清理掉,不管它分布到什么路径,完整的命令如下所示。

grep FOUND  /var/log/clamscan.log |awk -F[:] '{print $1}'| xargs rm -rf

grep FOUND  /var/log/clamscan.log |awk -F[:] '{print $1}'| xargs rm -rf

执行完毕,随机找几条扫描出来的恶意文件全路径,文件应该不存在(如下图所示),则表明脚本正确,正是我们所期待的结果。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

腾讯发表多模态大模型最新综述,从26个主流大模型看多模态效果提升关键方法

在大规模语言模型(LLMs)通往通用人工智能(AGI)的道路中,从传统的单一的“语言模态”扩展到“图像”、“语音”等等的“多模态”必然是大模型进化的必经之路。 在过去的 2023 年,多模态大规模语言模型&…

建筑效果图渲染制作周期是多久

建筑效果图的渲染制作周期会根据多种因素而变化,包括项目的复杂性、渲染的详细程度、分辨率要求、场景中的元素数量和复杂度、以及项目所需的修改和迭代次数等。 通常,简单的建筑效果图可能在几个工作日内完成,而大型或高度复杂的项目可能需要…

合并两个排序的链表

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 学习必须往深处挖&…

Cantor表(刷题)(C语言)

个人博客主页:https://blog.csdn.net/2301_79293429?typeblog 专栏:https://blog.csdn.net/2301_79293429/category_12545690.html 题目描述 现代数学的著名证明之一是 Georg Cantor 证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的&…

【JLU】校园网linux客户端运行方法

终于给这输入法整好了,就像上面图里那样执行命令就行 写一个开机自启的脚本会更方便,每次都运行也挺烦的 补充了一键运行脚本,文件路径需要自己修改 #!/bin/bashrun_per_prog"sudo /home/d0/ubuntu-drclient-64/DrClient/privillege.s…

Java项目:基于SSM框架实现的高校毕业生就业管理系统(ssm+B/S架构+源码+数据库+毕业论文)

一、项目简介 本项目是一套ssm817基于SSM框架实现的高校毕业生就业管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调…

【linux】-centos7版本前后-变化篇

1.centos7版本前后区别 首先文件系统变化,由EXT4,变为XFS格式。可支持容量500TB的文件,而6代仅能支持16TB。首个进程变为systemd, 替换了熟悉的init进程。它的特点是功能强大,体积也很强大。 systemd给我们带来了一个全家桶命令&…

Java基础数据结构之反射

一.定义 Java的反射机制是在运行状态中的,对于任意一个类都能知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法及属性。既然能拿到,我们就可以修改部分类型信息。这种动态获取信息以及动态调用对象方法的功能…

3d合并模型是重名材质---模大狮模型网

当合并3d模型时,如果存在重名的材质,可能会导致加载问题。这是因为3D软件在处理重名材质时可能会出现冲突。你可以尝试以下方法解决这个问题: 重命名材质:检查合并的模型中的材质,确保它们具有唯一的命名。修改重名的材…

【学网攻】 第(15)节 -- 标准ACL访问控制列表

系列文章目录 目录 系列文章目录 文章目录 前言 一、ACL(访问控制列表)是什么? 二、实验 1.引入 实验拓扑图 实验配置 测试PC2能否Ping通PC3 配置ACL访问控制 实验验证 PC1 Ping PC3 总结 文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻】 第(2)节 -- 交换机认…

Android T 远程动画显示流程(更新中)

序 本地动画和远程动画区别是什么? 本地动画:自给自足。对自身SurfaceControl矢量动画进行控制。 远程动画:拿来吧你!一个app A对另一个app B通过binder跨进程通信,控制app B的SurfaceControl矢量动画。 无论是本地动画还是远程…

C++之类继承隐式转换实例(二百五十七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

应急响应-流量分析

在应急响应中,有时需要用到流量分析工具,。当需要看到内部流量的具体情况时,就需要我们对网络通信进行抓包,并对数据包进行过滤分析,最常用的工具是Wireshark。 Wireshark是一个网络封包分析软件。网络封包分析软件的…

全连MGRE(OSPF)综合实验

一.要求 二.底层--所有节点拥有合法ip地址 r1: r2(isp): r3: r4: r5: r6: 三.全网可达 r1: r3: r4: r5: r6: 四.构建全连的MGRE环境 R1-R3-R4 R1: r3: r4: R1-R5-R6 r1: r5: r6: 五.ospf配置 R1: r3: r4: r5: r6:…

Linux下安装edge

edge具有及其强大的功能,受到很多人的喜爱,它也开发Linux版本,下面是安装方法: 1.去edge官网下载Linux(.deb)文件。 https://www.microsoft.com/zh-cn/edge/download?formMA13FJ 2.下载之后输入以下指令(后面是安装…

Docker私有仓库搭建

目录 搭建本地私有仓库 Docker--harbor私有仓库部署与管理 Harbor 简介 什么是Harbor Harbor的特性 Harbor的构成 Harbor 部署 部署 Docker-Compose 服务 ​编辑部署 Harbor 服务 启动 Harbor 进入浏览器http://192.168.20.10进入harbor的客户端 搭建本地私有仓库 …

如何本地搭建Tale博客网站并发布到公网分享好友远程访问——“cpolar内网穿透”

文章目录 前言1. Tale网站搭建1.1 检查本地环境1.2 部署Tale个人博客系统1.3 启动Tale服务1.4 访问博客地址 2. Linux安装Cpolar内网穿透3. 创建Tale博客公网地址4. 使用公网地址访问Tale 前言 今天给大家带来一款基于 Java 语言的轻量级博客开源项目——Tale,Tale…

【linux】磁盘相关命令fdisk/lsblk和file

1. fdisk 磁盘分区,查看系统分区。 fdisk 的意思是 固定磁盘(Fixed Disk) 或 格式化磁盘(Format Disk),它是命令行下允许用户对分区进行查看、创建、调整大小、删除、移动和复制的工具。它支持 MBR、Sun、SGI、BSD 分区表,但是它不支持 GUI…

Nginx实现反向代理负载均衡实验

实验环境: VM REdhat虚拟机(192.168.87.5)一台、VM Redhat虚拟机(192.168.87.3)一台、阿里云服务器(47.93.79.92)一台 实验要求:通过windows浏览器访问192.168.87.5(虚…

Hugging Face创始人分享:企业如何在ChatGPT浪潮下实现战略布局

Hugging Face创始人兼首席执行官 Clem Delangue在IBM一年一度的 THINK大会中研讨了当前人工智能发展趋势,特别是ChatGPT模型以及其对行业的影响。他的演讲还涉及到一个关键的议题,在ChatGPT这样的通用模型出现后,企业如何在人工智能领域找到自…