编程语言
首页 > 编程语言> > C/C++编程笔记:那些不为人知的“恶意代码“(二)切记小心使用

C/C++编程笔记:那些不为人知的“恶意代码“(二)切记小心使用

作者:互联网

恶意代码的分类包括计算机病毒、蠕虫、木马、后门、Rootkit、流氓软件、间谍软件、广告软件、僵尸(bot) 、Exploit等等!上次我们分享了恶意代码的第一部分,现在我们来分享剩下的部分,继续来看看吧!

4、后门

后门常以套件的形式存在,用于将受害者信息发送给攻击者或者传输恶意可执行程序(下载器),最常用的功能是接收攻击端传送过来的命令,执行某些操作。

Windows系统中有很多WIN32 API可以执行CMD命令,例如system Winexe CreateProcess等。这里介绍通过匿名管道实现远程CMD。

具体过程

1、初始化匿名管道的SECURITY_ATTRIBUTES结构体,调用CreatePipe创建匿名管道,获取管道数据读取句柄和写入句柄。

2、初始化STARTUPINFO结构体,隐藏进程窗口,并把管道数据写入句柄赋值给新进程控制台窗口的缓存句柄。

3、调用CreateProcess函数创建进程,执行CMD命令并调用WaitForSingleObject等待命令执行完。

4、调用ReadFile根据匿名管道的数据读取句柄从匿名管道的缓冲区中读取数据。

5、关闭句柄,释放资源。

源代码:

5、文件监控

全局钩子可以实现系统监控,Windows提供了一个文件监控接口函数ReadDirectoryChangesW该函数可以对计算机上所有文件操作进行监控。在调用。

ReadDirectoryChangesW设置监控过滤条件之前,需要通过CreateFile函数打开监控目录,获取监控目录的句柄,之后才能调用ReadDirectoryChangesW函数设置监控过滤条件并阻塞,直到有满足监控过滤条件的操作,ReadDirectoryChangesW才会返回监控数据继续往下执行。

具体过程

1、打开目录,获取文件句柄,调用CreateFile获取文件句柄,文件句柄必须要有FILE_LIST_DIRECTORY权限。

2、调用ReadDirectoryChangesW设置目录监控。

3、判断文件操作类型,只要有满足过滤条件的文件操作,ReadDirectoryChangesW函数会立马返回信息,并将其返回到输出缓冲区中,而且返回数据是按结构体FILE_NOTIFY_INFORMATION返回的。

调用一次ReadDirectoryChangesW函数只会监控一次,要想实现持续监控,则需要程序循环调用ReadDirectoryChangesW函数来设置监控并获取监控数据,由于持续的目录监控需要不停循环调用ReadDirectoryChangesW函数进行设置监控和获取监控数据,所以如果把这段代码放在主线程中则会导致程序阻塞,为了解决主线程阻塞的问题,可以创建一个文件监控子线程,把文件监控的实现代码放到子线程中。

源代码:

6、自删除

自删除功能对病毒木马来说同样至关重要,它通常在完成目标任务之后删除自身,不留下任何蛛丝马迹,自删除的方法有很多种,常见的有利用MoveFileEx重启删除和利用批处理删除两种方式。

MoveFileEx重启删除

MOVEFILE_DELAY_UNTIL_REBOOT这个标志只能由拥有管理员权限的程序或者拥有本地系统权限的程序使用,而且这个标志不能MOVEFILE_COPY_ALLOWED一起使用,并且,删除文件的路径开头需要加上“\?\"前缀。

源代码:

利用批处理命令删除

del %0

批处理命令会将自身批处理文件删除而且不放进回收站。

具体流程

1 构造自删除批处理文件,该批处理文件的功能就是先利用choice或ping命令延迟一定的时间,之后才开始执行删除文件操作,最后执行自删除命令。

2 在程序中创建一个新进程并调用批处理文件,程序在进程创建成功后,立刻退出整个程序。

源代码:

和大家共勉!小心使用这些代码还是很有帮助的哦~

另外如果你想更好的提升你的编程能力,学好C语言C++编程!弯道超车,快人一步!笔者这里或许可以帮到你~

C语言C++编程学习交流圈子,QQ群1090842465点击进入】微信公众号:C语言编程学习基地

分享(源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

编程学习书籍分享:

编程学习视频分享:

 

标签:文件,调用,删除,不为人知,恶意代码,ReadDirectoryChangesW,C++,监控,句柄
来源: https://blog.csdn.net/qq_42366672/article/details/111241255