木马程序一般是指什么?
木马程序通常称为木马,恶意代码等,是指潜伏在电脑中,可受外部用户控制以窃取本机信息或者控制权的程序。
它是指通过一段特定的程序(木马程序)来控制另一台计算机。
木马通常有两个可执行程序:
一个是客户端,即控制端,另一个是服务端,即被控制端。
植入被种者电脑的是“服务器”部分,而所谓的“黑客”正是利用“控制器”进入运行了“服务器”的电脑。运行了木马程序的“服务器”以后,被种者的电脑就会有一个或几个端口被打开,使黑客可以利用这些打开的端口进入电脑系统,安全和个人隐私也就全无保障了!
木马的设计者为了防止木马被发现,而采用多种手段隐藏木马。木马的服务一旦运行并被控制端连接,其控制端将享有服务端的大部分操作权限,例如给计算机增加口令,浏览、移动、复制、删除文件,修改注册表,更改计算机配置等。
如何查杀木马
用工具:
查杀木马的工具有EWIDO,木马克星、金山木马专杀、木马清除大师、木马分析专家等,其中有些工具,如果想使用全部功能,需要付一定的费用.
查看目前运行的服务
服务是很多木马用来保持自己在系统中永远能处于运行状态的方法之一。我们可以通过点击“开始”-“运行”-“cmd”,然后输入“net start”来查看系统中究竟有什么服务在开启,如果发现了不是自己开放的服务,我们可以进入“服务”管理工具中的“服务”,找到相应的服务,停止并禁用它。
检查系统启动项
由于注册表对于普通用户来说比较复杂,木马常常喜欢隐藏在这里。检查注册表启动项的方法如下:点击“开始”-“运行”-“regedit”,然后检查:
HKEY_LOCAL_MACHINE Software Microsoft Windows CurrentVersion下所有以“run”开头的键值;
HKEY_CURRENT_USER Software Microsoft Windows CurrentVersion下所有以“run”开头的键值;
HKEY-USERS Default Software Microsoft Windows CurrentVersion下所有以“run”开头的键值。
Windows安装目录下的System.ini也是木马喜欢隐蔽的地方。打开这个文件看看,在该文件的[boot]字段中,是不是有shell=Explorer.exe file.exe这样的内容,如有这样的内容,那这里的file.exe就是木马程序了!
检查网络连接情况
由于不少木马会主动侦听端口,或者会连接特定的IP和端口,所以我们可以在没有正常程序连接网络的情况下,通过检查网络连情情况来发现木马的存在。具体的步骤是点击“开始”-“运行”-“cmd”,然后输入netstat -an这个命令能看到所有和自己电脑建立连接的IP以及自己电脑侦听的端口,它包含四个部分——proto(连接方式)、local address(本地连接地址)、foreign address(和本地建立连接的地址)、state(当前端口状态)。通过这个命令的详细信息,我们就可以完全监控电脑的网络连接情况。
检查系统帐户
恶意的攻击者喜在电脑中留有一个账户的方法来控制你的计算机。他们采用的方法就是激活一个系统中的默认账户,但这个账户却很少用的,然后把这个账户的权限提升为管理员权限,这个帐户将是系统中最大的安全隐患。恶意的攻击者可以通过这个账户任意地控制你的计算机。针对这种情况,可以用以下方法对账户进行检测。
点击“开始”-“运行”-“cmd”,然后在命令行下输入net user,查看计算机上有些什么用户,然后再使用“net user 用户名”查看这个用户是属于什么权限的,一般除了Administrator是administrators组的,其他都不应该属于administrators组,如果你发现一个系统内置的用户是属于administrators组的,那几乎可以肯定你被入侵了。快使用“net user用户名/del”来删掉这个用户吧!
什么是木马
计算机木马介绍
一、木马的来历
计算机木马是一种后门程序,常被黑客用作控制远程计算机的工具。
英文单词“Trojan”,直译为“特洛伊”。
木马这个词来源于一个古老的故事:相传古希腊战争,在攻打特洛伊时,久攻不下。
后来希腊人使用了一个计策,用木头造一些大的木马,空肚子里藏了很多装备精良的勇士,然后佯装又一次攻打失败,逃跑时就把那个大木马遗弃。
守城的士兵就把它当战利品带到城里去了。
到了半夜,木马肚子里的勇士们都悄悄的溜出来,和外面早就准备好的战士们来了个漂亮的里应外合,一举拿下了特洛伊城。
这就是木马的来历。
从这个故事,大家很容易联想到计算机木马的功能。
二、计算机木马原理
计算机木马一般由两部分组成,服务端和控制端,也就是常用的C/S(CONTROL/SERVE)模式。
服务端(S端):远程计算机机运行。
一旦执行成功就可以被控制或者造成其他的破坏,这就要看种木马的人怎么想和木马本身的功能,这些控制功能,主要采用调用Windows的API实现,在早期的dos操作系统,则依靠DOS终端和系统功能调用来实现(INT 21H),服务段设置哪些控制,视编程者的需要,各不相同。
控制端(C端)也叫客户端,客户端程序主要是配套服务段端程序的功能,通过网络向服务段发布控制指令,控制段运行在本地计算机。
三、传播途径
木马的传播途径很多,常见的有如下几类:
1. 通过电子邮件的附件传播。
这是最常见,也是最有效的一种方式,大部分病毒(特别是蠕虫病毒)都用此方式传播。
首先,木马传播者对木马进行伪装,方法很多,如变形、压缩、脱壳、捆绑、取双后缀名等,使其具有很大的迷惑性。
一般的做法是先在本地机器将木马伪装,再使用杀毒程序将伪装后的木马查杀测试,如果不能被查到就说明伪装成功。
然后利用一些捆绑软件把伪装后的木马藏到一幅图片内或者其他可运行脚本语言的文件内,发送出去。
2. 通过下载文件传播。
从网上下载的文件,即使大的门户网站也不能保证任何时候他的问件都安全,一些个人主页、小网站等就更不用说了。
下载文件传播方式一般有两种,一种是直接把下载链接指向木马程序,也就是说你下载的并不是你需要的文件。
另一种是采用捆绑方式,将木马捆绑到你需要下载的文件中。
3. 通过网页传播。
大家都知道很多VBS脚本病毒就是通过网页传播的,木马也不例外。
网页内如果包含了某些恶意代码,使得IE自动下载并执行某一木马程序。
这样你在不知不觉中就被人种上了木马。
顺便说一句,很多人在访问网页后IE设置被修改甚至被锁定,也是网页上用脚本语言编写的的恶意代码作怪。
4. 通过聊天工具传播。
目前,QQ、ICQ、MSN、EPH等网络聊天工具盛行,而这些工具都具备文件传输功能,不怀好意者很容易利用对方的信任传播木马和病毒文件。
四、一些特殊类型的木马
1.反弹端口木马:普通木马的都是由C端发送请求S端来连接,但有些另类的木马就不是这样,它由S端向C端发送请求。
这样做有什么好处呢?大家知道,网络防火墙都有监控网络的作用,但它们大多都只监控由外面近来的数据,对由里向外数据的却不闻不问。
反弹端口木马正好利用了这一点来躲开网络防火墙的阻挡,以使自己顺利完成任务。
大名鼎鼎的“网络神偷”就是这样一类木马。
它由S断向C端发送一个连接请求,C端的数据在经过防火墙时,防火墙会以为是发出去的正常数据(一般向外发送的数据,防火墙都以为是正常的)的返回信息,于是不予拦截,这就给它了可钻的空子。
2.无进程木马:“进程”是一个比较抽象的概念,可以理解为排队买电影票,每一个窗口(其实就是端口)排的人可以理解为一个进程,有多少窗口就有多少个进程。
普通木马在运行时都有自己独立的进程(某一特定窗口排的人,先当作小偷),利用“柳叶擦眼”一类的优秀进程查看软件就可以发现和终止它。
这岂不是太扫兴了?好不容易写出个木马就这么被你发现了。
为了更好的隐藏自己,木马的制作者就想了一些办法,把木马的程隐藏进正常的进程(宿主进程)内。
打个比方,正常的进程(系统和正当文件的进程)可以理解为正常排队买票的人。
而木马的进程(排队假装买票的小偷),他们如果都排在某一个窗口(通过某一特定端口进行通讯),很容易就被发现了,于是那些小偷就想办法混到正常排队人当中(实现了木马进程的隐藏),这样就不容易被发现,而且也不容易被终止。
在实际中,即使你发现了隐藏在某一正常进程中的木马进程,你也不敢轻易终止它,因为一旦终止了木马的进程,正常的宿主进程也就被终止,这可能导致一些严重的后果。
所以可以看出,无进程木马实际上是“隐藏进程木马”,而这也是它的高明之处。
在实际中不可能出现真正意义上的“无进程木马”。
最近出现的“广外男生”就是典型的例子。
3.无控制端木马: 这类木马最显著的特点是C端和S端是集成到一起的,一次配置好就不能再更改。
功能一般比较专一,针对性强,危害较小,查杀较简单。
经常用来偷取QQ、Email和网络游戏的密码等。
4.嵌套型木马:先用自己写的小程序或者利用系统的漏洞,夺取到某写特定的权限,比如上传文件,干掉网络防火墙和病毒防火墙等,然后上传修改过或没修改过的功能强大的木马,进一步夺取控制权。
于是这个小程序或者系统漏洞就和那个功能强大的真正的木马联合起来,组成了一款“嵌套型木马”,其特点是不容发现和查杀,“具有良好的发展前景”。
5.其他木马:严格意义上讲,这里所说的其他木马并不是真正的木马,它们只能算做是木马入侵时的辅助工具吧。
典型的有恶意网页代码,让你浏览后不知不觉就被完全共享了所有的硬盘,然后方便别人给你种下木马,为进一步入侵做好准备。
五、关于捆绑
木马捆绑,通俗地讲就是把木马的代码嵌入其他类型的文件,便于伪装,比如,大名鼎鼎的国产木马“冰河”,他就自带一个捆绑工具,可以把木马代码嵌入到网页文件、图片文件、可执行文件等多种支持脚本语言或运行代码的文件中。
当接受方收到这些文件时,几乎感觉不到有任何异样,但在后台,木马代码却悄然进入内存并运行。
如果你的电脑莫名其妙地死机或重启,如果硬盘在无操作的情况下频繁被访问,如果系统无端搜索软驱、光驱,如果系统速度异常缓慢,系统资源占用率过高...你是否已经意识到你的电脑可能被植入了木马程序?
“特洛伊木马”,不是历史上那场惊心动魄的战争,而是互联网上广为祸患的一种危险程序。
木马在今天的网络上可谓无所不在,像“BO Back Orifice ”、“冰河”都是一种木马程序 甚至,连掌上电脑(PDA)的世界也已经出现了“木马”程序(Liberty Crack)。
人们谈“马”色变,下面,我就给大家说说可怕的“特洛伊木马”到底是怎么回事。
什么是“木马”
正像历史上的“特洛伊木马”一样,被称作“木马”的程序也是一种掩藏在美丽外表下打入我们电脑内部的东西。
确切地说,“木马”是一种经过伪装的欺骗性程序,它通过将自身伪装吸引用户下载执行,从而破坏或窃取使用者的重要文件和资料。
木马程序与一般的病毒不同,它不会自我繁殖,也并不“刻意”地去感染其他文件,它的主要作用是向施种木马者打开被种者电脑的门户,使对方可以任意毁坏、窃取你的文件,甚至远程操控你的电脑。
木马与计算机网络中常常要用到的远程控制软件是有区别的。
虽然二者在主要功能上都可以实现远程控制,但由于远程控制软件是“善意”的控制,因此通常不具有隐蔽性。
木马则完全相反,木马要达到的正是“偷窃”性的远程控制,因此如果没有很强的隐蔽性的话,那么木马简直就是“毫无价值”的。
木马的工作原理
一个完整的“木马”程序包含了两部分:“服务器”和“控制器”。
植入你的电脑的是它的“服务器”部分,而所谓的“黑客”正是利用“控制器”进入运行了“服务器”的电脑。
众所周知,基于TCP/IP协议接入互联网的电脑有0到65535共256×256个端口。
通常我们上网的时候,电脑通过139端口与外界保持联系。
运行了木马程序的“服务器”以后,你的电脑就会有另一个或几个端口被打开,使黑客可以利用这些打开的端口进入你的系统,你的系统安全和个人隐私也就全无保障了!
木马如此“泛滥”,究竟我们怎么样才能知道我们的电脑被种上了木马呢?
木马运行的征兆
如果电脑莫名其妙地死机或重启;
如果硬盘在无操作的情况下频繁被访问;
如果系统无端搜索软驱、光驱;
如果系统速度异常缓慢,系统资源占用率过高……
这些时候,你要小心了!你很可能已经和“木马”发生了“亲密接触”!到底这些“ *** ”是如何在我们电脑里“安家落户”的呢?
木马的隐藏和启动
木马进入服务端计算机以后,需要经过某种方式激活自身,运行并加载到系统自启动程序序列。
了解木马怎样激活自身,是找到并且清除木马的关键所在。
检查木马的方法
扫描端口是检测木马的常用方法。
前面我们说过,在不打开任何网络软件的前提下,接入互联网的电脑打开的只有139端口。
因此,我们可以关闭所有网络软件,然后,用“代理猎手”这类的端口扫描软件对电脑端口进行扫描,如果发现有139端口之外的被打开,那么,你是中了木马无疑了。
要想找到木马的位置,可以运用检测内存的办法。
运行“c:\windows\Drwatson.exe”,这是Windows系统的“华生医生”,它可以对系统内存拍照,以取得相关的信息。
拍照之后,查看“高级视图”中“任务”标签下的“程序”项,其中列出的就是正在运行的程序。
对于可疑的程序,再查“路径”栏,可以找到这个程序,这样就知道它到底是不是木马了。
手工删除木马
如果你认为找到木马后,删除不过是举手之劳,那你就大错特错了。
删除木马,有时候恰恰是最困难的工作,如果删除不彻底,木马很容易“死灰复燃”。
首先想到的方法应该是使用杀毒软件, 毕竟优秀的杀毒软件都是千锤百炼出来的“反恐”高手。
那么手工删除要注意什么呢?
许多木马本身具有自动检测其自启动项目的功能,如果你在未删除木马的情况下先行删除了其启动项目,木马马上又能将这些启动信息重新写入相关的文件或注册表相关位置。
因此,最稳妥的方法是,在确定木马的位置以后,先重新启动计算机并进入DOS状态,在DOS下删掉木马程序后,再返回Windows,删除它的相关启动信息。
其次是木马文件名的麻烦——木马为了更好地隐藏自己和给你制造麻烦,生成的服务端文件名类似Windows的系统文件名。
比如木马SubSeven 1.7版本的服务器文件名是c:\windows\kernel16.dll,而Windows有一个系统文件是c:\windows\kernel32.dll。
又如,木马phAse 1.0版本,生成的木马是c:\windows\system\Msgsrv32.exe,和Windows的系统文件一模一样,只是图标不同,你能正确区分这些并且删除吗?另外,别忘了,文件名是可以改的。
你可能认为中了bus木马就该有Mring.exe或者SysEdit.exe这样的文件出现,但是我把它改成123.exe你又能如何呢?所以,千万别一味依赖“常识”。
最后也是最困难的,就是木马的“多重攻击”带来的麻烦。
比如一种名叫“聪明基因”的国产“文件关联”型木马,只要服务端被运行,就会生成c:\windows\MBBManager.exe和Explore32.exe以及c:\windows\system\editor.exe三个文件,它们用的都是HTM文件图标,如果你的系统设置是不显示已知文件类型的扩展名,还真会以为它们是HTM文件呢!Explore32.exe关联HLP文件,MBBManager.exe在启动时加载,Editor.exe关联TXT文件。
当你发现并删除了MBBManager.exe,以为大功告成的时候,只要打开HLP文件或文本文件,哪怕只是一次,Explore32.exe和Editor.exe就被激活并再次生成MBBManager.exe。
类似手段甚至更厉害的木马还有很多。
要手工清除木马,非得有充分的电脑知识,丰富的经验,冷静的头脑,敏锐的洞察力以及高度的警惕性和超强的分析能力才行——你做得到吗?防患于未然木马如此凶残,你还有信心战胜它吗?别急,其实对付木马的最好方法,就是将它“拒之门外”。
在这个木马横行的年代,我们实在有必要加强安全防护意识。
防火墙、杀毒软件都要经常更新;要慎重选择下载软件的地方,尽量不要到一些来历不明的个人主页下载软件;对下载的软件,务必先用杀毒软件扫描后才可以进行安装,以防其中包藏祸害;另外就是不要打开来历不明邮件中的附件,不要执行别人发给你的所谓“有趣”的小程序……
此外,一旦中了木马,首先要断开网络连接,因为这样就是神仙也操纵不了你了,然后你可以耐心地去清除它。
还有就是删除前做好备份,以防操作失误。
总之,网络也是一个复杂的社会。
并且不同于现实社会的是,在这个虚拟世界里我们并不能见到对方的真实面目。
所以,我们更是难辨真伪。
在这样的环境中生存,我们一定要处处严加防范!这样,才能保证我们的安全
当一个程序运行时怎样查看这个程序启动了哪些脚本文件?
,偶们开始检查当前进程,当前进程是什么呢?当前进程就是现在所有正在运行的程序!查看当前进程,就是查看现在有哪些程序正在运行,如果有未知的程序呢?可能就是木马了,因为通常木马也是做为一个程序存在的。
怎么看当前进程呢? 请借助专业工具,实在没有工具时,再同时按下Ctrl + Alt + Delete键调出任务管理器来查看。
那什么样子的程序是未知程序呢?
这里,我要再强调一下子,一定要找一个能够对进程文件进行数字签名验证的进程查看工具,不然你无法区分某一进程是否为可疑进程,只凭文件名字是完全不够用的。
如果一个进程不是系统进程,也不是你正在运行的某一程序的进程,那这个进程就是我们说的可疑进程。(不能通过数字签名验证的为非系统进程)
找到了可疑进程又如何呢?杀掉后删除么?
NO,不要杀它~不杀的原因有三点:
1、杀掉它的结果是什么,很难预料,如果其正在与其它程序或内核驱动进行交互,你杀它,很可能就是自杀,会把系统杀崩的。
2、杀掉并删除它,并不会清除它写入注册表的启动项,这样每次开机时仍然会尝试加载这个程序,虽然文件已经不在,无法使木马运行,但每次的试图加载,都是需要时间的,这也是系统变慢的一个原因所在。
3、最后,只凭上面的检测,只能说明这个进程是可疑进程,但无法就此确认这就是木马,所以,你现在杀掉它,很可能会误杀~
那应该怎么办呢?答案是不理它,找到后,把文件名字记下来,然后进行下一步的检查工作,暂时不要理它。
如果没找到呢?
那说明,你的机器可能很干净,没有木马。
或者,木马是进程隐藏或无进程木马。
进程隐藏型的怎么办呢?
我们先了解一些木马隐藏进程的手段~
当前流行的木马隐藏进程的手段如下:
0、初级隐藏,查找任务管理器窗口枚举子窗口找到列进程的列表框,把自己的名字抺去~,这种用一般专业工具即可查。
1、中级隐藏,HOOK Win32API 过滤掉马儿自己的进程。只要是驱动级别的进程管理工具基本都可以查。
2、中高级隐藏,HOOK SSDT NtQuerySystemInformation,过滤掉马儿自己的进程,具有恢复SSDT功能的驱动级工具可查。
3、次高级隐藏,INLINE HOOK SSDT,过滤掉自己进程,恢复INLINE的或直接枚举进程链的可查。
4、准高级隐藏,自活动进程链中摘除自己的进程,基于线程调度链表检测技术的工具可查。
5、高级隐藏,绕过内核调度链表隐藏进程,基于HOOK-KiReadyThread技术来检测的工具可查。
对于隐藏进程,请使用具有相应功能的检查工具来检查~
当然了,我们也不一定死乞白咧的非要把木马隐藏的进程找出来,实在找不出,就当没有或当作无进程的木马,直接进行下一步检查就可以了。
因为,进程检查只是检查的手段之一,看不到、杀不掉木马的进程,并不妨碍我们把木马清掉。
OK,无论对进程的检查结果如何,我们接下来都要开始下一步的检查,模块检查!
参照图如下:
下面的图是一张进程检查图(请以数字签名验证的结果为主,以文件路径名字为辅来判断,瑞星杀毒软件的进程不是系统进程,但通过文件名字与路径,我们可以知道,这是瑞星的主控程序,呵呵,不要死心眼,要多方面结合起来判断~ ^-^):
第二章 模块篇
模块是什么?模块,是指具备某一种或某一类功能的特殊功能模块,其外在的表现形式通常为各种动态库文件(通常以.dll为扩展名字)或插件文件(通常以.OCX为扩展名字)。它们由应用程序加载,来为程序提供某一特定的功能。
就像我们的电视机,如果加了一个卫星天线,就可以收到更多的节目一样,卫星天线本身是与电视机无关的,但它一但被电视机所用,就可以为电视机提供额外的功能。卫星天线相对于电视机,也就是相当于模块相对于程序。
每个进程都有几个到上百个不等的模块,每个模块都有其特定的用途,当然了,如果某个模块是木马的话,也有其木马用途。
当进程检查流行起来,且检查的越来越深入时,木马的制造者们开始制作无进程木马,木马是做为一个模块出现的,这样它将不存在于进程列表中。无论你用何等高级的进程检测技术都无法检测到模块木马的存在。
一台电脑中,进程可能有十几个或几十个,但模块却有好几百个,数量的增多也增加了我们检测的难度。
对检测工具的要求,仍然是需要具备数字签名验证的能力,否则手工从几百个模块文件中挑出木马,真的很累~(木马模块的检查,请看下面的图)
找到后怎么办呢?
呵呵,上次有朋友遇到过这问题,结果是他用暴力手段给卸载并删除了~,应该这样处理么?
答案仍然是否定的!
不要暴力卸载并删除~~原因么?原因先缓一缓再说,我们先了解一下儿模块木马的启动运行机制,然后再解释为什么不要暴力卸载删除。
模块木马分为两种:一种是静态加载的,一种是动态注入的。
静态加载的,是把自己的木马文件,在注册表的某键下注册,这样,系统会在开机或运行某一程序时自动的加载在这一键下注册的所有模块,这样,木马就实现了进入到程序中,并执行其非法活动的目的。(在注册表的哪些键下注册可以让系统加载,在后面的启动项检查中会有解释)
动态加载的,这类木马就是所谓的进程注入型木马,它的实现不但需要有一个模块文件,还需要有一个将模块文件注入到进程中的注入程序。先将注入程序启动,然后由注入程序将模块木马注入到其它的进程中,完成注入后,注入程序就结束了运行,这样,你仍然无法看到进程。
现在明白为什么不能暴力卸载并删除了么?
暴力卸载并删除后,如果是静态加载的,那注册表中仍然会留下加载项,每次开机或相关程序运行时仍然会偿试加载该模块,如果多了,会导至系统运行变慢。
如果是动态加载的,那你卸载并删除的仅仅是模块木马,注入程序却仍然留在你的机器上。如果此木马设计的比较合理,那它应该是有模块文件备份的,这样,当你再次开机时,会发现,你暴力删除的模块文件又重新回到了你的机器上,你永远删不干净。如果此木马设计的不合理或比较狠毒,那就只有上帝和木马的制造者才知道会发生事情了~~ -_-!
即然不能暴力删除,那找到后应该如何呢?与进程一样,抄下模块文件的路径与名字,然后,开始下一步的检查,暂时不要理它。
即然说到了无进程木马,那就不得不说“线程注入型木马”,进程注入型的木马注入到进程中的是一个模块,也就是说,必须有一个模块文件的存在,这样我们可以找到这个模块并通过对其文件进行签名验证来找出注入木马;而线程注入型的木马,注入到进程中的却只是一段代码,是没有文件存在的,虽然可以查看每个进程的各个线程,但想发现并找出哪一个线程是木马的,不能说绝不可能,但也几乎是不可能的了,能找出的是非常高的高人,绝不是我~看看下面的第二张图,是EXPLORER.exe的线程列表,能看出什么么?
(顺便说一句,那张图是ProcessExplorer的截图,非常非常出名且非常非常好用的进程管理工具,在这里可以下载: )
那对这种线程注入型的木马又怎么办呢?
幸好,线程注入型的木马也需要有一个注入程序来配合,我们找出线程很难,但找出他的注入程序就好办多了。
现在,无论你是否找到了可疑的模块或线程,我们都要开始下一步的检查,启动项检查!
第三章 自启动项篇
自启动项是什么?自启动项,就是程序在系统的某处进行登记之后,每次开机系统会自动将程序运行,而程序登记的项,就叫做自启动项。
木马都不会甘心只运行一次就结束的,它若想在你的电脑中安家,就肯定要每次开机都运行起来,这样,才能达到自我保护、且正常进行木马工作的目的。
一般的木马都会有一处或多处自启动项,这也成了查找木马时必查的一步。(这只说的是一般的木马,当然就还有二般的不需要自启动项的木马,这个我们放在后面说)
查找木马的自启动项,很关键也很重要,相对的对工具的要求也很高。
系统中到底有多少处地方可以让程序自动运行呢?汗~~偶也不知道,偶只能说N多~~所以,要找个查的全的工具来检查,且要找好几个来检查,这样结合起来,应该就够全了。任何一个也不敢说它能把系统中所有的启动位置全列出来。所以,对启动项检查工具的第一要求是要够全!
只全就够了么?当然还不够,还有一点跟上面相同,也要能进行数字签名验证的,免得它起个系统文件的名字蒙混过去。
还有就是要能够检测隐藏的启动项,同样的,我们先了解木马隐藏启动项用到的技术:
0、木马没隐藏,只是找了个隐蔽的位置而已,这就要看所用的工具程序枚举的项够不够全了。
1、木马隐藏在应用层次,HOOK了Win32API中的相关注册表枚举函数,这样的马儿很容易检测,任何一个驱动级别的检测程序都可以胜任。
2、木马隐藏在内核层,HOOK了SSDT,这样的马儿,一般的就不行了,得找能恢复SSDT的专业检测程序。
3、木马隐藏在内核层且很无耻,INLINE-HOOK了相关服务函数,这样的马儿绝大多数检程序就都不行了,需要找能恢复INLINE-HOOK的程序。
4、木马隐藏在最底层,通过查找特征码的方法INLINE-HOOK了微软未公开的底层函数如Cm*系列的函数,嘿,已经很难再比它更底层了,这样的马儿只有采用HIVE文件扫描方式的检测程序或专门恢复底层INLINE-HOOK的工具才能找到它。
这四种隐藏方式都是已经有流氓软件或木马使用先例的~,所以不要报有侥幸心理,认为木马不会采用这种高级的技术,所以,检查启动项最好是多用几个工具配合起来检查,功能强的通常不够全,嘿,可能高手都比较懒吧~
OK,我们开始检查吧~ 先把HOOK、INLINE-HOOK都恢复了,再运行工具开始检查,还记得我们前面找到的可疑模块与可疑进程么,这时就用到了,把找出来的启动项与那些对比一下儿,看看是不是有它们的启动项在里面。
有?OK,备份注册表,然后删除启动项。删除不掉?是不是忘记恢复HOOK了?恢复了,那打开注册表编辑器,看看你有没有权限删除这个键,在欲删除的键上面按右键,选权限,再选“完全控制”就可以删除了,呵呵,这只是它玩的一个小障眼法儿。
删除后,又有了?这也没关系,这时你有两个选择,一是先结束掉它的进程,卸载掉它的模块,以使它失去重写的能力。二是,开启“系统锁定”功能,把系统临时锁起来,不允许任何程序对注册表进行写入。这时再删除它就没问题了。
删除完成后,重启计算机。
不是记下了可疑的进程与模块了么?再检查一下子,看它们还在不在?不在了,恭喜,你完成了你的木马查杀工作。
还在?
呵呵,也不要怕,如果还在,证明你并没有真正的完全清除掉它的启动项;可能原因是:
1、这只木马还采取了触发式的启动机制。
2、它还有其它的保护机制,比如影子程序或驱动;
接下来让我们继续解剖触发式启动的木马~~
第四章 触发式木马
上面我说了一般木马的查杀方法,通过上面的查杀,大多数木马都可以清掉了。(上次忘记写了,重启后,如木马已经不能启动了,接下来当然就是把记下来的木马文件全部删掉了)
接着我来说一说触发式木马,什么叫触发式木马呢?触发式木马是当您进行某一操作时会触发木马的启动机制,使得木马启动,如果你永远不进行这一操作,而木马则永远不会启动。一般的木马都是主动启动并运行的,而安全检查工具与杀毒软件检查的也大多是主动启动式的木马,比如对自启动项进行检查,查的就是开机后自动主动运行的。只对少数的常见的可以触发木马启动的项进行检查,而触发木马启动的地方操作却很多,这就是这种木马很难杀干净的原因。
其表现为,清除后的当时系统很正常,当时检查机器也很干净,但用不了多长时间,木马又死灰复燃,再度出现。
现在我们开始实际动手查杀这些难缠的家伙们!
需要说明的是,这里为了讲起来有条理,清楚易懂,所以是分开来讲的,实际查杀起来,当然是可以一起来做的。(检查进程、启动项时,就可顺手检查下面的这些)
最常见的也是我们首先要检查的当然就是Autorun.inf了,这是个什么东西呢?这是一个配置文件,看名字,翻译过来不就是“自动运行”么,是的,这个正常用途是用于光盘的自动播放,就是将光盘插入光驱后,系统会自动运行Autorun.inf里面指定的程序。
后来被一些人用于了硬盘,当将这个文件放在硬盘分区的根目录下时,在盘符上点右键,会发现默认的操作就是“自动播放”而不是打开。这时,你双击某一盘符时,就不再是打开并浏览文件夹,而是直接运行指定的程序(还需要改注册表的某个地方,因与我们查杀无关就不说了,免得被坏人利用)。
你查杀木马病毒时如果采取的是暴力删除,那么,程序删除后,Autorun.inf这个文件却仍然还在,会出现后遗症,表现为无法双击打开磁盘。(顺便提一句,熊猫烧香采用的就是这种触发方式与自启动项相结合的)
由于,你双击磁盘会触发木马的启动,所以查杀时,要右键单击,再选择“打开”或用“资源管理器”来查看,找到后删除此文件。
通常此文件会以隐藏文件的形式出现,更有些恶毒的会加上“注册表监控并回写”来为文件隐藏护航,你一旦更改系统为“显示所有文件”,它马上会再次改为“不显示隐藏文件”,如何破除这种注册表回写保护,上面的贴子里写过方法了,这里不再重复。
另一种触发方式是修改文件关联,什么叫文件关联呢?文件关联就是某一类型的文件与某一程序的对应关系,要知道,我们的系统中有无数种文件格式,比如:图片文件(以.bmp .jpg .gif等为扩展名)、音乐文件(mp3 mp4等)......当你双击一个图片时,系统会调用看图程序来打开并显示图片,而不是调用播放器来播放图片,系统为什么会知道要调用看图程序而不是调用播放器呢?这就是因为文件关联的存在,在注册表中,图片文件已经与看图程序关联在了一起,相应的,音乐文件与播放器关联在了一起,大多数类型的文件都与某一特定程序有关联。这样,系统才知道,打开什么样的文件需要调用什么程序。
聪明的您已经知道木马是如何利用文件关联来触发了吧?是的,狡猾的木马就是把某一特定类型文件的关联改为了与它自己关联,这时你一旦打开这一类型的文件就会触发木马的启动。由于木马启动后,会由它再调用正常的关联程序,所以,文件仍然会正常打开,而你也就不知道其实你的操作已经将木马启动了起来。
木马会改哪种文件的关联呢?咳,这我哪知道呢,这只有上帝与木马的作者才知道。
系统中又有多少文件关联可供它改呢?你打开注册表编辑器看看第一大项下面的子项就知道有多少了,怎么也上千个吧。
如何查杀呢?
一般的木马会改一些你会经常用到的文件的关联,比如:文本文件、程序文件、网页文件等。而网上有很多恢复文件关联的程序或注册表导出文件都可以恢复这些常见的文件关联。
但这样检查显然是远远不够的,如果你是木马的作者,你知道这些常见的文件关联会被检查并恢复,你还会改这些么?就不会了吧,因为可供你选择的太多了。比如:选择修改.rar文件的关联,这是类文件是压缩文件,网上提供下载的程序有很多是以这类文件格式存在的,所以一般上网的网民打开压缩文件的机率会非常高,而恢复这一文件关联的程序几乎没有,因为恢复后的直接结果就是压缩文件打不开了,因为恢复程序的作者不是神仙,他不知道你用的是哪个压缩软件,你的压缩软件又安装在了哪里,所以,他不会给你恢复这个的。
这样,只要你打开压缩文件,就会触发木马,如果这个木马的关联文件是一个影子程序的话,那由于影子程序都不具备病毒特征,所以全盘文件扫描也不会将它找出来,你找到并清除的都是这个程序的释放体,而源头还在,从此,木马将成为你挥之不去的恶梦~(关于影子程序我们下一次细讲)
文件关联如何检查呢?两种方法,一种是通过监控得到哪个文件关联被修改的,然后再改回去。第二种是用专业软件,对所有文件关联进行扫描。
如何通过监控得到文件关联是否正确呢?
首先,找个进线程监控的工具程序,打开“进线程监控”,然后不断的打开你常用的各种文件,并检查,打开文件时程序的运行情况,比如:你找开了个.rar文件,进程监视中应该显示,“WinRAR.exe由Explorer.exe启动运行”,那是正常的。如果显示的是其它程序由Explorer.exe运行,而WinRAR.exe又是由那个其它程序来启动的,那就是被改了。当然,你也可以打开注册表查看每个文件关联,是否是正常的。
第二种方法是用专业软件来扫描,把系统文件过滤掉,那剩下的非系统的文件关联就很少了,稍加判断结果就出来了,很简单,就不多讲了,看看下面的图就明白了。
找到后怎么办呢?
不要只是清除,清除后还要找个正常的机器导出一份正常的,或把你删除的文件关联告诉朋友,让朋友自他的机器上导出一份正常的,然后在自己机器上导入一下子就可以了。
如果是非系统的文件关联,比如:.rar压缩文件,那就直接删除了,然后再次找开.rar时,会提示你选择打开此种类型文件的程序,这时选择WinRar.exe,然后勾选上总是用这种程序来打开此类型文件就可以了。
或者用其它方法.....嘿,其实只要发现了木马,其它的就好办了~~
另外,需要注意的是,还有些触发并不是很明显的文件操作,比如当你打开的网站时,可能要解释执行脚本语言,而用什么来解释执行呢?系统也是在注册表中寻找相应程序的,比如:VBS、JScript等键,基本都在HKEY_CLASSES_ROOT主键下。
像卡巴、金山等杀毒程序会用自己的DLL在这几个键下注册,以便执行脚本语言时先行检查这些脚本语言是否具有病毒特征,但木马同样也会利用这几个键,让你一打开网站就执行木马。
好了,我们下面接着说一说影子程序(驱动)吧~因为它们经常与这些触发式的启动机制合作,之所以它们总是合作,因为触发式的可以躲过对启动项、进程、模块的检查,而影子程序却可以躲过杀毒软件的文件扫描。他们是如何紧密合作来躲过我们检查的,让我们下次再说~~~ ^-^
第五章 影子程序(驱动)
什么是影子程序呢?影子大家都了解吧~~即然有影子当然也要有本体了,影子只是为了本体的存在而存在的,其它的工作一概不做。而影子程序呢?也就是为了木马程序的存在而存在的,其本身并不从事任何木马工作。
木马为什么要搞一个影子程序或影子驱动呢?目的只有一个“保护主木马程序不被清除。”
影子是如何来保护主木马程序的呢?了解这个之前,我们先要了解一下杀毒软件是如何杀毒的。
了解了杀毒软件是如何杀毒之后,再谈影子如何逃过杀毒软件的查杀,就容易理解了。
大多数杀毒软件都是依赖病毒特征码杀毒的,所以都附带了一个病毒库,我们平时升级其实大多数是在升级病毒库,病毒库中存储了病毒的特征码,就像病毒档案一样(身高、体重、三围、五官等..... ^-^ 差不多类似啦)如果一个程序与病毒库中的某种病毒特征相吻合,就会被认为是某种病毒而被查杀。病毒特征是如何来的呢?就是病毒分析师对病毒进行分析后提取出来的,所以这种查杀方式查杀的都是有案底的,也就是以前犯过案的,被人留了底,再出来就是过街老鼠,人人喊打了。
这种按特征查杀,属于硬特征,只要符合就OK了~~虽然有误杀,但相对很少,毕竟完全相同的并不多。其查杀的准确与否,误杀率是否高,很大程度依赖于病毒分析师的提取水平。呵呵,偶们就见过某知名公司把一个驱动框架硬是报为ROOTKIT木马的,显然其特征码存在严重问题。
还有一种是所谓的主动防卸型的,在比照特征码的同时,还分析病毒木马的行为特征,一个程序的行为符合特定行为的数量多到一定数值,就为被认为是病毒,当然了, 这种误报率也相应的增加了很多。这种查杀,没案底也可以,就像你以前虽然没有犯过事儿,也没留案底,但你提着刀追着人家猛砍,当然也会被逮住的,因为你的行为符合了病毒的行为特征。
当前病毒的流行越来越大众化,想获取病毒源码也并不是什么难事,一些小屁孩也能抄一段来散发个病毒,但是却没有能力更改代码特征,使其躲过杀毒软件的查杀。
所以,一些人开始拼命的找新壳,来为病毒加不同的壳,但杀毒软件的脱壳技术也是越来越高了,想找到不被杀毒软件所脱的壳也困难起来了。
接着又有些人想出一些其它的方式来躲避杀毒软件的查杀。
影子程序就是其中的一种~~
病毒木马的主程序,因为要工作,所以一些特征是很难去掉的。但影子程序却不用去从事木马工作,所以它本质上就是一个正常的程序,不使用任何病毒技术,也不具备任何病毒特征,所以不会被杀毒软件查杀。
这就是病毒木马采取影子程序的目的,因为影子程序不具备病毒特征,可以躲过杀毒软件的全盘文件扫描。
那它又是如何来保护主程序的呢?一般它是把病毒主程序做为资源放到了自己里面,再保险点就对主程序压缩、加密后再以资源的形式放到自己的程序中。(资源就是一些数据啦~~比如,一个程序中用到的图片,就属于图片资源)而杀毒软件通常只是对代码进行检查,而不检查数据资源,其实查也查不出什么来~以纯数据形式存在的资源,有N种方法改变。
这样,影子程序通过资源存放的方式,解决了木马程序在电脑中的生存问题,为木马在您的电脑中留下了一个火种。
在木马病毒被清掉之后,影子程序一旦发现木马主程序不见了,就从自己的资源中重新释放一份。使木马病毒重新再生,使你杀不胜杀,直到杀得你心疲手软自己放弃为止。
影子程序又是如何发现木马主程序被清除的呢?
有两种途径,一是将自己也加在某一个启动位置上,每次开机自动启动,在启动后如果发现木马主程序已经不在,就释放一份,并将木马启动,接着自己就退出了。如果在,影子程序就直接退出了。
二是,利用触发机制等待,等你触发影子程序后,由影子程序去检查木马是否存在,如果不存在就释放并启动然后自己退出,如果在同样也就直接退出了。
由于,影子程序只是运行了那么零点零几秒而已~~所以你的进程检查对它没什么用处,因为它平时是不运行的~
对付影子程序,只能由启动项入手,而影子程序也注意到了这一点,所以很多就采取了触发机制,因此,我们检查时,也要注意检查触发式木马。
呵,结论出来了,各位朋友不要看到进程中的可疑进程就眼红红的冲过去狂杀一通~~杀进程、删除文件、卸模块只是治标不治本的做法~~什么事情都要寻根求源,进行“根治”~~否则,轻则病毒木马是杀不完去不净~~重则是系统被越杀越慢~~杀到最后,不得不重装系统完事儿~~~
用GHOST恢复也很快?呵,难道你不知道熊猫烧香会删除GHOST的备份文件么?熊猫能删除~~其它的当然也能删~~删个文件对它们来说绝不是什么难事儿~~
重装系统就安全么?也不见得~~在网上搜一下儿~看看网上提供下载的操作系统风险又有多大~很多木马是在做操作系统安装盘时就放进去了~~
放进去为什么查不到呢?
这就是另一个话题了~~文件修改替换型的木马~~很让人郁闷的一类木马~~下次再说吧~~
汗~~想起来就头大~
参照图:CNNIC的影子驱动,蓝色圈起来的是主驱动,红色的是影子驱动,影子驱动的名字是随机的,每次开机都不相同。
借这张图把上次有朋友问的清除CNNIC的剩余问题给解答一下子:
在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root键下还有与驱动服务相匹配的一些键,如果用其它的清除工具,记得也要清了。如果是用5.0.0.7就不用了,清除驱动项时会自动清理那个键的。(注意:5.0.0.6版没有相应功能,汗~可能自动检测影子驱动的功能也没有~~手工删除或找别的工具用吧,实在不行就等5.0.0.7出试用版吧~)
清的时候清干净喽~~否则~~嘿~~死恢复燃就是说这个的~~
CNNIC还有关机通知的功能~~别忘记了~~不然即使清干净了,关机时它就又写回去了~~
什么?不知道怎么对付~~汗~~~这个偶暂时也没找到合适的工具,虽然写程序对付最简单,但没有通用性,不值得为这一个家伙写个程序。
暂时有两个方法可以解决:
一个是笨办法。关机时不是由系统通知它的么?偶们就连系统也不通知不就完了,直接按RESET键冷启动机器就OK了~~ -_-!
二个是先恢复FSD的HOOK与INLINE-HOOK,然后把相关的程序文件、驱动文件、DLL文件全删除了,然后重启,再删一遍启动项,也就OK了~(注意,锁定系统好像对CNNIC也不大好用的说~郁闷~)
另外,惯于用AutoRuns.exe的朋友注意了,我用的AutoRuns.exe是8.22版的查不出来CNNIC的驱动启动项~如果查杀CNNIC就先换一个用吧~
另外,团IDC网上有许多产品团购,便宜有口碑
0条大神的评论