logo资料库

网络与系统安全课程设计论文.doc

第1页 / 共34页
第2页 / 共34页
第3页 / 共34页
第4页 / 共34页
第5页 / 共34页
第6页 / 共34页
第7页 / 共34页
第8页 / 共34页
资料共34页,剩余部分请下载后查看
1.动态嵌入技术DLL木马的实现
1.1.引言
1.2.原理介绍
1.3.主程序介绍
1.4.调试过程
2.密文传送的聊天软件的实现
2.1.引言
2.2.系统逻辑结构
2.3.AES算法实现
2.4.AES加密过程
2.5.AES解密过程
2.6.AES程序实现
2.7.聊天信息和文件加密
2.8.Socket通信
2.9.系统特点和功能
3.酒店管理系统的实现
3.1.开发工具及运行环境
3.2.编程环境及数据库选择
3.3.数据库接口的实现
3.4.系统实现的功能及框架图
3.5.系统总体设计
3.6.系统的具体实现
1.1.ADO技术连接数据库
3.7.用户界面设计
4.程序集成测试
5.设计心得
6.参考文献
网络与系统安全课程设计 网络与系统安全课程设计报告 题目 1. 实现动态嵌入技术 DLL 木马 2. 密文传送的聊天软件的实现 3. 酒店管理系统的实现 班级: 专 业: 姓 名: 学 号: 指导教师: 职 称: 1
网络与系统安全课程设计 设计日期 2008 年 5 月 12 日 至 2008 年 7 月 1 日 题 目 本次设计的任务及主要内容 文档成绩 通过远程进程技术实现一个 DLL 木马,把一 个 DLL 文件注入远程进程,并显示是否成功注入 信息。Windows 中的每个进程都有自己的私有内 存空间,一般不允许别的进程对这个私有空间进 行操作,但是实际上,仍然可以利用种种方法进 入并操作进程的私有内存。在多种动态嵌入技术 (窗口钩子即 Hook 函数、挂接 API、远程线程) 中,常用的是远程线程技术。远程线程技术指的 是通过在一个运行的进程中创建远程线程的方法 进入该进程的内存空间。 实现客户服务器之间的通信,可以对通信双 方的即时信息采用 AES 加密,同时双方可以进行 文件传输,发送发对传输的文件采用 AES 加密, 接收方对接收到的数据解密获取明文。 实现一个安全的信息系统,包括用户注册、 认证、授权、访问控制等内容,通过实践,掌握 构建安全信息系统的整个流程。 1、动态嵌 入 技 术 DLL 木 马 的实现 2、密文传 送 的 聊 天 软 件 的 实 现 3、酒店管 理 系 统 的 实现 指导教师签字: 年 月 日 2
网络与系统安全课程设计 目 录 1. 动态嵌入技术 DLL 木马的实现..........................................................................1 1.1. 引言..............................................................................................................1 1.2. 原理介绍......................................................................................................1 1.3. 主程序介绍..................................................................................................1 1.4. 调试过程......................................................................................................4 2. 密文传送的聊天软件的实现................................................................................ 5 2.1. 引言..............................................................................................................5 2.2. 系统逻辑结构..............................................................................................5 2.3. AES 算法实现.............................................................................................6 2.4. AES 加密过程.............................................................................................8 2.5. AES 解密过程.............................................................................................9 2.6. AES 程序实现...........................................................................................10 2.7. 聊天信息和文件加密................................................................................11 2.8. Socket 通信 ............................................................................................... 13 2.9. 系统特点和功能........................................................................................15 3. 酒店管理系统的实现.......................................................................................... 15 3.1. 开发工具及运行环境................................................................................15 3.2. 编程环境及数据库选择............................................................................15 3.3. 数据库接口的实现....................................................................................16 3.4. 系统实现的功能及框架图........................................................................17 3.5. 系统总体设计............................................................................................19 3.6. 系统的具体实现........................................................................................22 1.1. ADO 技术连接数据库..............................................................................22 3.7. 用户界面设计............................................................................................23 4. 程序集成测试...................................................................................................... 30 5. 设计心得.............................................................................................................. 30 6. 参考文献.............................................................................................................. 30 3
网络与系统安全课程设计 1. 动态嵌入技术 DLL 木马的实现 1.1. 引言 动态嵌入技术指的是将自己的代码嵌入正在运行的进程中的技术。理论上来 说,在 Windows 中的每个进程都有自己的私有内存空间,别的进程是不允许对 这个私有空间进行操作的,但是实际上,我们仍然可以利用种种方法进入并操作 进程的私有内存。在多种动态嵌入技术中(窗口 Hook、挂接 API、远程线程), 常用的是远程线程技术。远程线程技术指的是通过在另一个运行的进程中创建远 程线程的方法进入那个线程的内存地址空间。 通过此次实验,认识采用动态嵌入技术的 DLL 木马,掌握动态嵌入技术的 原理,并实现通过动态嵌入技术将自己的代码嵌入正在运行的进程中。 1.2. 原理介绍 我们知道,在进程中,可以通过 CreateThread 函数创建线程,被创建的新线 程 与 主 线 程 共 享 地 址 空 间 以 及 其 他 的 资 源 。 但 是 很 少 有 人 知 道 , 通 过 CreateRemoteThread 也同样可以在另一个进程内创建新线程,被创建的远程线程 同样可以共享远程进程的地址空间,所以,创建一个远程线程,进入远程进程的 内存地址空间,就拥有了该远程进程的权限,可以启动一个 DLL 木马,甚至随 意篡改该进程的数据。其实现步骤为: 1) 通过OpenProcess函数打开试图嵌入的进程,因为需要写入远程进程的内存 地址空间,所以必须申请足够的权限,包括远程创建线程、远程VM操作、 远程VM写权限。 2) 为LoadLibraryW函数线程启动DLL木马准备参数。LoadLibraryW函数是在 kernel32.dll中定义的一个功能函数,用于加载DLL文件,它只有一个参数, 就是DLL文件的绝对路径名(也就是木马DLL文件的全路径文件名)。由于 木马DLL是在远程进程内调用的,所以还需要将这个文件名复制到远程地 址空间。 3) 计算LoadLibraryW的入口地址,启动远程线程LoadlibraryW,通过远程线程调 用木马DLL。 RmtDLL.cpp)。 4) 编写利用远程线程技术嵌入进程的程序代码(源程序源码见上传文件 5) 编写用于测试的DLL木马文件代码(源程序源码见上传文件test.cpp)。 1.3. 主程序介绍 #include #include #include #include DWORD ProcessToPID(char *);//将进程名转换为 PID 的函数 void CheckError(int,int,char *);//出错处理函数 void usage(char *);//使用说明函数 1
网络与系统安全课程设计 PDWORD pdwThreadId; HANDLE hRemoteThread,hRemoteProcess; DWORD fdwCreate,dwStackSize,dwRemoteProcessId; PWSTR pszLibFileRemote=NULL; void main(int argc,char **argv) { int iReturnCode; char lpDllFullPathName[MAX_PATH]; WCHAR pszLibFileName[MAX_PATH]={0}; //处理命令行参数 if(argc!=3) usage("parametes number incorrect!"); else { //如果输入的是进程名,则转化为 PID if(isdigit(*argv[1])) dwRemoteProcessId = atoi(argv[1]); …… //判断 DLL 文件是否存在 iReturnCode=(int)_lopen(lpDllFullPathName,OF_READ); CheckError(iReturnCode,HFILE_ERROR,"DLL File not Exist"); //将 DLL 文件全路径的 ANSI 码转换成 UNICODE 码 iReturnCode=MultiByteToWideChar(CP_ACP,MB_ERR_INVALID_CHARS, lpDllFullPathName,strlen(lpDllFullPathName), pszLibFileName,MAX_PATH); //输出最后的操作参数 …… } //打开远程进程 hRemoteProcess=OpenProcess(PROCESS_CREATE_THREAD|//允许创建线程 PROCESS_VM_OPERATION|//允许 VM 操作 PROCESS_VM_WRITE,//允许 VM 写 …… //计算 DLL 路径名需要的内存空间 int cb = (1 + lstrlenW(pszLibFileName)) * sizeof(WCHAR); …… //将 DLL 的路径名复制到远程进程的内存空间 iReturnCode = WriteProcessMemory(hRemoteProcess, pszLibFileRemote,(PVOID)pszLibFileName,cb,NULL); CheckError(iReturnCode,false,"WriteProcessMemory"); //计算 LoadLibraryW 的入口地址 2
网络与系统安全课程设计 PTHREAD_START_ROUTINE pfnStartAddr = (PTHREAD_START_ROUTINE) …… //启动远程线程,通过远程线程调用用户的 DLL 文件 hRemoteThread=CreateRemoteThread(hRemoteProcess,NULL,0,pfnStartAd dr, pszLibFileRemote,0,NULL); CheckError((int)pfnStartAddr,NULL,"Create Remote Thread"); //远程线程退出 WaitForSingleObject(hRemoteThread,INFINITE); …… }//end of main() //将进程名转换为 PID 的函数 DWORD ProcessToPID(char *InputProcessName) { …… //计算目前有多少进程,aProcesses[]用来存放有效的进程 PIDs if(!EnumProcesses(aProcesses,sizeof(aProcesses),&cbNeeded)) return 0; cProcesses = cbNeeded / sizeof(DWORD); //按有效的 PID 遍历所有的进程 for(i=0; i
网络与系统安全课程设计 void usage(char * pErrorMsg) { …… printf("Example:\n"); printf("\tRmtDLL.exe 1024 C:\\WINDOWS\\System32\\MyDLL.dll\n"); printf("\tRmtDLL.exe Explorer.exe C:\\MyDLL.dll\n"); exit(0); } 完整的程序请见上传文件。 1.4. 调试过程 1) 编译源码前还要通过菜单“工程”|“设置”,打开如图 1-1 所示对话框,选 自“Link”选项卡,在“L 对象/库模块”下的输入框的最后添加如“psapi.lib” 文件,与前一文件间用空格隔开。 2) 完成添加文件的操作后单击“确定”退出该对话框,然后便可已成功进行 编译,然后会有如图 1-2 所示提示,并生成 RmtDLL.exe 文件。 图 1-1 3) 编译生成用于测试的 DLL 木马 test.dll。建立一个动态链接库工程,将 test.cpp 编辑成 test.dll。 4) 将 RmtDLL.exe 和 test.dll 拷贝到某一磁盘(这里以 E 盘为例),打开命令提 示符窗口,进入到上述文件所在的目录,输入如图 1-3 所示的命令,将木马 图 1-2 4
网络与系统安全课程设计 诸如 explorer.exe。 5) 输入上图第一行所示代码之后,按回车键将弹出图 1-4 所示的提示框。 图 1-3 此时已经成功将 test.dll 嵌入进程 explorer.exe,要想重新进行试验需要重新启 图 1-4 动 explorer.exe(可以通过任务管理器完成该操作)。 2. 密文传送的聊天软件的实现 2.1. 引言 随着网络技术的飞速发展,网络安全问题日益重要,而加密技术则是网络安 全技术中的核心技术,加密自然就会用到密码。 密码是实现秘密通讯的主要手段,是隐蔽语言、文字、图像的特种符号。凡 是用特种符号按照通讯双方约定的方法把电文的原形隐蔽起来,不为第三者所识 别的通讯方式称为密码通讯。在计算机通讯中,采用密码技术将信息隐蔽起来, 再将隐蔽后的信息传输出去,使信息在传输过程中即使被窃取或截获,窃取者也 不能了解信息的内容,从而保证信息传输的安全。本系统利用 AES 对数据进行 加密,通过密文传送以实现安全通信。 2.2. 系统逻辑结构 系统由若干模块组成,如图 2-1 所示。 5
分享到:
收藏