自启动技术
对于一个病毒木马来说,重要的不是如何进行破坏,还有如何执行。病毒木马只有加载到内存中开始运行,才能够真正体现破坏力。否则,它就只是一个普通的磁盘文件,对于计算机用户的数据,隐私构不成丝毫的威胁。
自启动技术主要包括四种:
- 注册表
- 快速启动目录
- 计划任务
- 系统服务
本文中主要介绍快速启动目录
快速启动目录
快速启动目录是一种不用修改任何系统数据,并且实现起来最为简单的开机自启动方法。
只要把程序放入快速启动文件夹中,系统在启动时就会自动加载并运行相应的程序,实现开机自启动功能。
快速启动目录并不是一个固定目录,每台计算机的快速启动目录都不相同,但是程序可以通过WINDOWS API来获取这个目录。
WINAPI介绍
SHGetSpecialFolderPath
函数原型
BOOL SHGetSpecialFolderPath(
HWND hwndOwner,
LPTSTR lpszPath,
int nFolder,
BOOL fCreate)
参数解释
- hwndOwner:窗口所有者的句柄
- lpszPath:返回路径的缓冲区,大小为MAX_PATH
- nFolder:系统路径的CSIDL标识
- fCreate:指示文件夹不存在时是否创建,FALSE为不创建。
返回值
- 执行成功,返回TRUE
- 否则返回FALSE
wsprintf
函数原型
int __cdecl wsprintf(
_Out_ LPTSTR lpOut,
_In_ LPCTSTR lpFmt,
_In_...);
参数说明
- lpOut:接收缓冲区格式化输出. 缓冲区最大为 1,024 bytes
- lpFmt:控制输出的格式,类似于printf的第一个参数
- 可变参数
CopyFile
函数原型
BOOL CopyFile(
LPCTSTR lpExistingFileName,
LPCTSTR lpNewFileName,
BOOL bFailIfExists );
参数说明
- lpExistingFileName:源文件名
- lpNewFileName:目标文件名
- bFailIfExists:如果为TRUE,一旦目标文件存在,则执行失败,为FALSE,则会改写文件
返回值
- TRUE为成功执行
- 否则为FALSE
编码实现
将计算器程序放入快速启动目录,基本思路如下:
- 获取系统快速启动目录
- 构造快速启动目录+exe的路径
- 复制PE文件进入快速启动目录
// ConsoleApplication1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <windows.h>
#include <stdio.h>
#include "resource.h"
#include "ConsoleApplication1.h"
#include <tchar.h>
#include <cstring>
#include <shlobj.h>
BOOL Auto_Run(LPCWSTR srcFilename, LPCWSTR destFilename)
{
wchar_t pszExePath[MAX_PATH] = { 0 };
wchar_t dest_update[MAX_PATH] = { 0 };
BOOL bRet = FALSE;
bRet = SHGetSpecialFolderPath(NULL, pszExePath, CSIDL_STARTUP, FALSE);
if (bRet == FALSE)
{
printf("file path error!\n");
return FALSE;
}
printf("%ws\n", pszExePath);
wsprintf(dest_update, L"%ws\\%ws", pszExePath, destFilename);
printf("%ws\n", dest_update);
printf("%ws\n", srcFilename);
if (CopyFile(srcFilename, dest_update, FALSE) == FALSE)
{
printf("copy error!\n");
return FALSE;
}
return TRUE;
}
int main()
{
LPCWSTR srcFilename = L"C:\\Windows\\System32\\calc.exe";
LPCWSTR destFilename = L"calc.exe";
BOOL flag = Auto_Run(srcFilename, destFilename);
if (flag == TRUE)
{
printf("success\n");
}
return 0;
}
运行效果图
火绒直接报毒,试图更改启动选项
点击允许后,在该目录下就可以找到计算器程序了。