木马与远程控制
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息安全原理与应用 赵树升 2012
4.3.4 文件关联与程序启动
所谓“文件关联”就是将某种扩展名的文件和某 个可执行文件联系起来,双击该文件后系统就 会调用那个可执行文件打开它,例如双击扩展 名为.txt文件后,记事本notepad.exe就会启动 并打开该文本文件。木马通过修改注册表,例 如若让扩展名为.txt的文件和木马程序关联, 那么双击*.txt文件后木马程序会启动。
木马与远程控制
本章介绍基于远程控制的木马知识: 木马是如何启动的; 木马是如何通信的; 木马是如何控制的; 如何寻找与清除木马;
信息安全原理与应用 赵树升 2012
简介
木马由两部分组成,一个是服务端程序,运行 于一台机器上,另一个是客户端程序,运行于 另一台机器上。客户端程序通过网络与另一台 机器上的服务程序进行通讯,发送命令和接收 返回信息,从而控制对方机器。,服务端程序 在A机上的端口上侦听,客户端程序从B机上 向A机发出连接请求,并建立连接。客户端程 序就可以向服务端程序发送命令,通过服务端 程序控制A机。
建立共享文件夹的完整代码见“共享文件夹管 理”,调用如下的函数表示将文件夹 “D:\\beijing”建成任何人都可以访问的,密 码为“123456”,共享名为“beijing”的共享 文件夹。
信息安全原理与应用 赵树升 2012
4.3 远程控制
远程操作主要包括文件的操作、屏幕的 操作、鼠标操作和键盘操作。文件操作 好百度文库现,比如控制端发送“delete c:\aaa”,那么受控端解析该字符串,可 以理解为删除一个文件。截屏和鼠标键 盘控制是本节的主要内容。
信息安全原理与应用 赵树升 2012
4.4.4 新建文件检查
新建文件可以HOOK函数CreateFile或ZwCreateFile函数 进行监视甚至也可以禁止新建。当然,还可以在文件过滤 驱动中捕捉新建文件信息。在微过滤的例程 FLT_PREOP_CALLBACK_STATUS NPPreCreate ( __inout PFLT_CALLBACK_DATA Data, __in PCFLT_RELATED_OBJECTS FltObjects, __deref_out_opt PVOID *CompletionContext )
信息安全原理与应用 赵树升 2012
4.2 远程通信
远程通信最简单的方法是使用UDP和TCP进行 通信。 1、使用UDP发送命令 比如,控制端向被控制端发送命令,可以使用 UDP实现。 在使用VC编程时,记得要选择套接字,否则 要手动添加。使用UDP通信是互为客户端互为 服务端。发送信息可以在主线程,接收信息应 该在子线程中进行。
信息安全原理与应用 赵树升 2012
2、使用TCP传递文件
如果要把一个文件,比如图片从一台计算机传 递到另一台计算机,使用TCP很方便。也应该 在子线程中完成文件的传送。由于上面的例子 已经使用了线程,这里直接使用,读者可以自 行将其加入到线程中
信息安全原理与应用 赵树升 2012
3、使用共享文件夹直接读 写文件
4、受控端产生虚拟鼠标信息 虚拟鼠标信息调用函数SendInput。以虚拟鼠标左键单击为例,代码 如下。 else if((op&0xFFFF)==1){ //单击 if((op>>16)==1){ //左键 INPUT Input={0}; // left down Input.type = INPUT_MOUSE; Input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN; ::SendInput(1,&Input,sizeof(INPUT)); // left up ::ZeroMemory(&Input,sizeof(INPUT)); Input.type = INPUT_MOUSE; Input.mi.dwFlags = MOUSEEVENTF_LEFTUP; ::SendInput(1,&Input,sizeof(INPUT));
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
4.3.2 远程鼠标控制
我们经常见到有这样的软件,控制端的鼠标的移动和点击 ,都可以反映在受控端。控制端的鼠标的移动和按键动作 ,一般通过鼠标钩子获取。两端需要定义一个结构,将鼠 标的操作信息保存在结构中,用UDP发送到受控端。受控 端解析收到的数据后,用虚拟鼠标来产生虚拟鼠标信息。 完整的程序见“鼠标钩子捕获发送和接收模拟”
信息安全原理与应用 赵树升 2012
4.4 检测木马的常用方法
检测木马的常用方法包括新建文件的检测、文件校验值的检 测、内存进程检测、内存进程中的模块检测和端口检测。
信息安全原理与应用 赵树升 2012
4.4.1 端口检查
枚举本机的连接情况可以使用如下的函数。 GetTcpTable(); // 取得TCP連接表 GetUdpTable(); // 取得UDP監聽者表 GetIpStatistics(); // 取得IP協定統計情況 GetIcmpStatistics(); // 取得ICMP統計情況 GetTcpStatistics(); // 取得TCP統計情況 GetUdpStatistics(); // 取得UDP統計情況
信息安全原理与应用 赵树升 2012
4.3.3 远程键盘控制
远程键盘控制和远程鼠标控制类似。控制端通过键盘钩子捕捉键盘按 键信息,然后通过UDP发送到受控端。受控端解析接收到的信息,然 后产生虚拟键盘信息。详细的程序见“键盘钩子和远程复现”。 1、控制端键盘钩子捕获键盘信息并发送 2、受控端在子线程中接收数据并产生虚拟键盘信息
信息安全原理与应用 赵树升 2012
4.4.2 进程检查
通常采用枚举进程的方式。函数 EnumProcesses可以枚举进程。下面的代码 可以枚举所有进程,并获取所对应的文件名。 完整代码见“扫描内存与内存数据读写”。
信息安全原理与应用 赵树升 2012
4.4.3 进程调用模块检查
一个程序运行,总是需要调用其它动态链接库 。木马经常把动态链接库文件加载到其它进程 。如果发现了陌生的模块,说明可能是被怀疑 对象。对于难以删除的模块,可以用U盘启动 系统,到另一个系统下去删除。函数 OpenProcess、VirtualQueryEx、 GetModuleFileName可以获取一个进程调用的 所有模块。
信息安全原理与应用 赵树升 2012
4.3.1 截屏控制
如果是控制端要看受控端的窗口,则用UDP方 式向受控端发送取窗口的命令。受控端截取窗 口后存成文件(也可以直接是内存数据),还 可以进行压缩。然后使用TCP方式,将文件发 给控制端。控制端收到文件后,在窗口上显示 传过来的图片。主要代码是取窗口,如下函数 。
信息安全原理与应用 赵树升 2012
2、鼠标钩子拦截鼠标信息,发送到控制端 LRESULT CALLBACK MouseProc( int iCode, WPARAM wParam, LPARAM lParam ) { if(iCode < 0) { return CallNextHookEx(g_hHook,iCode,wParam,lPa ram); }
信息安全原理与应用 赵树升 2012
1、受控端的鼠标钩子程序 鼠标钩子用于捕获鼠标的按键和位置信息。定 义发送到受控端的数据结构如下: DWORD pos; //鼠标位置,高16位是x,低16 位是y DWORD op; //高16位=1,左键,=2中间键 ,=3右键,低16位=1,单击,=2双击 =3移动 2、控制端的鼠标钩子
信息安全原理与应用 赵树升 2012
3、控制端在子线程中接收受控端 发来的信息
UINT ThreadProc(LPVOID param){ //建立子线程 C接收鼠标数据Dlg *Input=(C接收鼠标数据Dlg*)param; ... } //在程序初始化函数中启动子线程 AfxBeginThread(&ThreadProc,this,THREAD_PRIORITY_BELOW_NORMA L,0,0); //一下代码接收对方数据 do{ recvfrom(RecvSocket, RecvBuf, BufLen, 0, (SOCKADDR *)&SenderAddr, &SenderAddrSize); DWORD x=*(DWORD*)RecvBuf; DWORD y=x>>16; x=x&0xFFFF; 信息安全原理与应用 赵树升 2012 DWORD op=*(DWORD*)(&RecvBuf[4]);