《计算机网络安全》实验讲稿
授课教师:许玉龙
适用于信息技术学院
实验5:木马相关
主 要 内 容
一、端口相关知识
二、木马相关知识
三、木马的预防和发现
四、木马源程序实例
重点:一定要把上课讲到,演示到的安全命令记住!!
实验目的
(1) 熟悉常见端口和模块知识
(2) 熟悉常见的木马相关知识。
(3) 练习常见病毒木马识别方法。
(4) 熟悉木马运行机制。
实验步骤
(1) 首先讲解木马相关知识
(2) 然后讲解常见木马运行方法和机制
(3) 讲解常见木马病毒识别方法
(4)学生练习木马病毒运行
(5)学生了解病毒木马相关源程序。
计算机木马
计算机木马的产生
(1)、一些计算机爱好者出于好奇或兴趣,也有的是为了满足自己的表现欲。
(2)、产生于个别人的报复心理。
(3)、来源于软件加密。
(4)、产生于游戏。
(5)、用于研究或实验而设计的¡°有用¡±程序,由于某种原因失去控制而扩散出来。
(6)、由于政治、经济和军事等特殊目的,信息战的一种有效武器。
其它原因?
病毒感染的途径
(1)、引进的计算机系统和软件中带有病毒。
(2)、各类出国人员带回的机器和软件染有病毒。
(3)、染有病毒的游戏软件。
(4)、非法拷贝中毒。
(5)、计算机生产、经营单位销售的机器和软件染有病毒。
(6)、维修部门交叉感染。
(7)、有人研制、改造病毒。
(8)、敌对分子以病毒为媒体或武器进行宣传和破坏。
(9)、通过互联网(访问web、下载email和文件等)传入的。
按照计算病毒的攻击类型分类:
?
特洛伊木马:使计算机潜伏执行非授权的远程管理/控制功能。--网页木马
Rootkit是一组被特洛伊化的系统应用程序 。攻击者使用rootkit中的相关程序替代系统原来的ps、ls、netstat和df等程序,使系统管理员无法通过这些工具发现自己的踪迹。
? 木马病毒其前缀是:Trojan,黑客病毒前缀名一般为 Hack 。 Trojan.QQ3344 ,Hack.Nether.Client
? 后门病毒的前缀是:Backdoor
?7、病毒种植程序病毒
? 这类病毒的公有特性是运行时会从体内释放出一个或几个新的病毒到系统目录下,由释放出来的新病毒产生破坏。
获取API函数地址
Win32 PE病毒和普通Win32 PE程序一样需要调用API函数,但是普通的Win32 PE程序里面有一个引入函数表,该函数表对应了代码段中所用到的api函数在动态连接库中的真实地址。这样,调用api函数时就可以通过该引入函数表找到相应api函数的真正执行地址。
但是,对于Win32 PE病毒来说,他只有一个代码段,他并不存在引入函数段。要获得API函数地址,我们首先需要获得Kernel32的基地址。
特洛伊木马
木马全称是“特洛伊木马(Trojan Horse)”,原指古希腊人把士兵藏在木马内进入敌方城市从而占领敌方城市的故事。在Internet上,木马指在可从网络上下载(Download)的应用程序或游戏中,包含了可以控制用户的计算机系统的程序,这些程序可能造成用户的系统被破坏,甚至瘫痪。
特洛伊木马,从本质上讲,是一种基于远程控制的工具,类似于远端管理软件,如PCAnywhere。与一般远程管理软件的区别是木马具有隐蔽性和非授权性的特点。所谓隐蔽性是指木马的设计者为防止木马被发现会采用多种手段隐藏木马。非授权性是指一旦控制端与服务端建立连接后,控制端将窃取用户密码,以及获取大部分操作权限,如修改文件、修改注册表、重启或关闭服务端操作系统、断开网络连接、控制服务端的鼠标及键盘、监视服务器端桌面操作、查看服务器端进程等,这些权限并不是用户赋予的,而是通过木马程序窃取的。
木马的功能
(1)窃取数据
(2)接受非授权操作者的指令
(3)篡改文件和数据
(4)删除文件和数据
(5)施放病毒
(6)使系统自毁
木马的基本原理
木马系统软件一般由木马配置程序、控制端程序和木马程序(服务器程序)等三部分组成。
木马程序,也称服务器程序,它驻留在受害者的系统中,非法获取其操作权限,负责接收控制端指令,并根据指令或配置发送数据给控制端。
木马配置程序设置木马程序的端口号、触发条件、木马名称等,使其在服务端藏得更隐蔽,有时该配置功能被集成在控制端程序菜单内,不单独作为一个程序。
控制端程序控制远程服务器,有些程序集成了木马配置的功能。
木马的自启动
1) 注册表启动键HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVerion下以Run开头的子键进行设置,如run和runservices子键。
HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVerion\Run
HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVerion\RunOnce
HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVerion\RunOnceEx
HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVerion\RunServices
2)文件关联键KEY_LOCAL_MACHINE\SOFTWARE\Classes\文件类型\Shell\open\command和HKEYCLASSES ROOT \文件类型\shell\open\command下的键值。
KEY_LOCAL_MACHINE\SOFTWARE\Classes\exefile\shell\open\command\
@String: \C:\WINNT\System32\DIAGCFG.EXE \%1\ %*\
(3) ini文件在win.ini的[windows]下的load和run后面进行设置。一般情况下命令行load=和run=后面是空白的,有些木马会在此处添加其文件名。
run=c:\windows\server.exe
load=wscan.exe
(4) 对system.ini的[boot]下的Shell=文件名进行设置。一般情况下该文件名是explorer.exe,有些木马会将此文件名改为木马程序名。另外,在system.ini中[386enh]字段中,注意段内“driver=path\程序”可被木马利用。再有在system.ini中,[mic]、[drivers]、[drivers32]这三个字段起到加载驱动程序的作用,但也是增添木马程序的场所
5) 启动菜单。在c:\windows\startmenu\programs\启动组下添加。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders Startup="C:\windows\start menu\programs\startup"。 ……
) 捆绑文件。
实现这种触发条件首先要控制端和服务端已通过木马建立连接,然后控制端用户用工具软件将木马文件和某一应用程序捆绑在一起,然后上传到服务端覆盖原文件,这样即使木马被删除了,只要运行捆绑了木马的应用程序,木马又会被安装上去了。
7) 在Autoexec.bat和Config.sys中加载运行
但这种加载方式一般都需要控制端用户与服务端建立连接后,将已添加木马启动命令的同名文件上传到服务端覆盖这两个文件才行,而且采用这种方式不是很隐蔽,所以这种方法并不多见,但也不能因此而掉以轻心。
(8) 在Winstart.bat中启动
Winstart.bat是一个特殊性丝毫不亚于Autoexec.bat的批处理文件,也是一个能自动被Windows加载运行的文件。它多数情况下为应用程序及Windows自动生成,在执行了Win.com并加载了多数驱动程序之后开始执行(这一点可通过启动时按F8键再选择逐步跟踪启动过程的启动方式可得知)。
9).借助自动运行功能
其实硬盘也支持自动运行,你可尝试在D盘根目录下新建一个Autorun.inf,用记事本打开它,输入如下内容:
[autorun]
open=Notepad.exe
(10) 通过API HOOK启动
这种方法较为高级,通过替换系统的DLL文件,让系统启动指定的程序。例如:拨号上网的用户必须使用Rasapi32.dll中的API函数来进行连接,那么黑客就会替换这个DLL,当用户的应用程序调用这个API函数,黑客的程序就会先启动,然后调用真正的函数完成这个功能
11).通过浏览网页启动
通过此种途径有两种方法:
利用MIME漏洞:
MIME被称为多用途Internet邮件扩展(Multipurpose Internet Mail Extensions),是一种技术规范,原用于电子邮件,现在也可以用于浏览器。MIME对邮件系统的扩展是巨大的,在它出现前,邮件内容如果包含声音和动画,就必须把它变为ASCII码或把二进制的信息变成可以传送的编码标准,而接收方必须经过解码才可以获得声音和图画信息
木马的隐藏性
1)、进程隐蔽
(2)、冒充为图像文件
(3)、合并程序欺骗
(4)、伪装成应用程序扩展组件
1)端口扫描
(2)查看连接:
netstat –a
Fport
mport
(3)查看进程/内存模块: pslist / listdlls
(4)检查注册表
(5)查找文件
(6)杀病毒/木马软件
木马技术的发展
1)、关端口
ICMP是IP协议的附属协议;
(2)、隐藏进程:远程线程技术
(3)、争夺系统控制权:提升权限
(4)、穿透防火墙
(5)、隧道技术:HTTP隧道
木马的示例—冰河
分析的基本工具有:
² Regsnap:用于报告注册表及其它与文件系统有关项目的修改变化情况。
² Fport:用于监视系统所开的端口。
Pslist:用于监视系统中正在运行的进程。
1.在装冰河服务器端之前:
² 用Regsnap保存当前的注册表为文件regbefore.rgs
² 用Pslist记录当前系统中运行的进程为文件psbefore.txt
² 用Fport记录当前系统中开的端口为文件ptbefore.txt
2.在装冰河服务器端之后
² 用Regsnap保存现在的注册表为文件reglater.rgs
² 用Pslist记录现在系统中运行的进程为文件pslater.txt
² 用Fport记录现在系统中开的端口为文件ptlater.txt
3.通过比较regbefore.rgs和reglater.rgs发现注册表的修改情况如下:
新增键值1个:
1)HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\@
Value: String: "C:\WINNT\System32\sysdll32.exe"
修改键值2个:
2)HKEY_LOCAL_MACHINE\SOFTWARE\Classes\txtfile\shell\open\command\@
旧值: String: "Notepad.exe %1"
新值: String: "C:\WINNT\System32\rnudll32.exe %1"
3)HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\
RunServices\@
旧值: <value not set>
新值: String: "C:\WINNT\System32\sysdll32.exe"
发现在目录C:\WINNT\System32\下新增文件2个:rnudll32.exe和sysdll32.exe。
4. 通过比较psbefore.txt和pslater.txt发现新增进程1个:
Name Pid Pri Thd Hnd VM WS Priv
sysdll32 1560 8 5 47 28424 2848 1384
5. 通过比较ptbefore.txt和ptlater.txt发现新增端口1个:
Pid Process Port Proto Path
252 sysdll32 7626 TCP C:\WINNT\System32\sysdll32.exe
实例1:木马的配置,使用,和清除(全部手工操作)
在实现前应该首先将进程信息,模块信息,端口信息,服务信息备份。所有均为手工操作。
1,演示将木马hackxyl插入svchost.exe进程。
2,查看端口信息,netstat –an ,--a,--anb
3,查看任务模块信息,tasklist,tasklist /m,listdalls(额外的小程序)
4,查看服务信息,tasklist /svc
5,通过攻击者控制端来查看注册表(regedit)
HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVerion\Run
HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVerion\RunOnce
HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVerion\RunOnceEx
HKEY-LOCAL-MACHINE\Software\Microsoft\Windows\CurrentVerion\RunServices
6,关闭进程,利用taskkill /s /f pid
利用进程的PID结束进程
命令格式:ntsd -c q -p pid
命令范例: ntsd -c q -p 1332 (结束explorer.exe进程)
利用进程名结束进程
命令格式:ntsd -c q -pn ***.exe (***.exe 为进程名,exe不能省)
命令范例:ntsd -c q -pn explorer.exe
实例2:结合实例1练习木马PcShare的配置、运行、DLL插入过程。
一、木马运行之前,备份以下:
1)、端口信息,命令行下输入netstat -an >c:\BeforePort.txt,然后点击enter键。
2)、进程信息。命令行下输入tasklist >c:\BeforeTask.txt,然后点击enter键。
3)、进程模块dll信息。命令行下输入tasklist /m >c:\BeforeDll.txt,然后点击enter键。
4)、更详细的模块dll信息。需要额外的工具listdlls.exe,将他拖入命令行,接着输入>c:\beforeDetailDll.txt,
然后点击enter键。
5)、服务信息。命令行下输入tasklist /svc >c:\BeforeSvc.txt,然后点击enter键。
二、配置生成运行木马
三、运行木马以后,重新备份上述5个文件
1)、端口信息,命令行下输入netstat -an >c:\AfterPort.txt,然后点击enter键。
2)、进程信息。命令行下输入tasklist >c:\AfterTask.txt,然后点击enter键。
3)、进程模块dll信息。命令行下输入tasklist /m >c:\AfterDll.txt,然后点击enter键。
4)、更详细的模块dll信息。需要额外的工具listdlls.exe,将他拖入命令行,接着输入>c:\AfterDetailDll.txt,
然后点击enter键。
5)、服务信息。命令行下输入tasklist /svc >c:\AfterSvc.txt,然后点击enter键。
四、对比运行木马前后,发生的变化
1, 对比所有端口、服务、进程、动态链接库、服务信息。
2, 清除删除dll文件、sys文件、drv文件