落岸天使论坛

 找回密码
 注册
搜索
论坛,不要冷落了陌生人新人注册后在此报道,奖励20羽毛:)严肃处理违规灌水行为及处罚办法
参与论坛宣传活动,获得积分勋章奖励知羽艺匠及其他模板资源下载珍惜你的ID 珍惜你的名誉
查看: 2796|回复: 4

[分享] 久病成医,再也不怕木马

[复制链接]

12

主题

167

回帖

220

积分

水天使

Rank: 3Rank: 3

积分
220
发表于 2007-5-27 14:26:39 | 显示全部楼层 |阅读模式
木马各种隐藏技术全方位大披露
以前,我曾认为只要不随便运行网友发来的文件就不会中病毒或木马,但后来出现了利用漏洞传播的冲击波、震荡波;以前,我曾认为不上小网站就不会中网页木马,但后来包括国内某知名游戏网站在内的多个大网站均在其首页被黑客挂上了木马。从此,我知道:安全,从来没有绝对的。
虽然没有绝对的安全,但如果能知已知彼,了解木马的隐藏手段,对于木马即使不能百战百胜,也能做到及时发现,使损失最小化。那么,木马究竟是如何躲在我们的系统中的呢?
  最基本的隐藏:不可见窗体+隐藏文件
  木马程序无论如何神秘,但归根究底,仍是Win32平台下的一种程序。Windows下常见的程序有两种:
  1.Win32应用程序(Win32 Application),比如QQ、Office等都属于此行列。
  2.Win32控制台程序(Win32 Console),比如硬盘引导修复程序FixMBR。
  其中,Win32应用程序通常会有应用程序界面,比如系统中自带的“计算器”就有提供各种数字按钮的应用程序界面。木马虽然属于Win32应用程序,但其一般不包含窗体或隐藏了窗体(但也有某些特殊情况,如木马使用者与被害者聊天的窗口),并且将木马文件属性设置为“隐藏”,这就是最基本的隐藏手段,稍有经验的用户只需打开“任务管理器”,并且将“文件夹选项”中的“显示所有文件”勾选即可轻松找出木马(见图一),于是便出现了下面要介绍的“进程隐藏”技术。

第一代进程隐藏技术:Windows 98的后门
  在Windows 98中,微软提供了一种能将进程注册为服务进程的方法。尽管微软没有公开提供这种方法的技术实现细节(因为Windows的后续版本中没有提供这个机制),但仍有高手发现了这个秘密,这种技术称为RegisterServiceProcess。只要利用此方法,任何程序的进程都能将自己注册为服务进程,而服务进程在Windows 98中的任务管理器中恰巧又是不显示的,所以便被木马程序钻了空子。
  要对付这种隐藏的木马还算简单,只需使用其他第三方进程管理工具即可找到其所在,并且采用此技术进行隐藏的木马在Windows 2000/XP(因为不支持这种隐藏方法)中就得现形!中止该进程后将木马文件删除即可。可是接下来的第二代进程隐藏技术,就没有这么简单对付了。
第二代进程隐藏技术:进程插入
  在Windows中,每个进程都有自己的私有内存地址空间,当使用指针(一种访问内存的机制)访问内存时,一个进程无法访问另一个进程的内存地址空间,就好比在未经邻居同意的情况下,你无法进入邻居家吃饭一样。比如QQ在内存中存放了一张图片的数据,而MSN则无法通过直接读取内存的方式来获得该图片的数据。这样做同时也保证了程序的稳定性,如果你的进程存在一个错误,改写了一个随机地址上的内存,这个错误不会影响另一个进程使用的内存。
  你知道吗——进程(Process)是什么
  对应用程序来说,进程就像一个大容器。在应用程序被运行后,就相当于将应用程序装进容器里了,你可以往容器里加其他东西(如:应用程序在运行时所需的变量数据、需要引用的DLL文件等),当应用程序被运行两次时,容器里的东西并不会被倒掉,系统会找一个新的进程容器来容纳它。
  一个进程可以包含若干线程(Thread),线程可以帮助应用程序同时做几件事(比如一个线程向磁盘写入文件,另一个则接收用户的按键操作并及时做出反应,互相不干扰),在程序被运行后中,系统首先要做的就是为该程序进程建立一个默认线程,然后程序可以根据需要自行添加或删除相关的线程(见图2 进程关系图)。

1.进程插入是什么
  独立的地址空间对于编程人员和用户来说都是非常有利的。对于编程人员来说,系统更容易捕获随意的内存读取和写入操作。对于用户来说,操作系统将变得更加健壮,因为一个应用程序无法破坏另一个进程或操作系统的运行。当然,操作系统的这个健壮特性是要付出代价的,因为要编写能够与其他进程进行通信,或者能够对其他进程进行操作的应用程序将要困难得多。但仍有很多种方法可以打破进程的界限,访问另一个进程的地址空间,那就是“进程插入”(Process Injection)。一旦木马的DLL插入了另一个进程的地址空间后,就可以对另一个进程为所欲为,比如下文要介绍的盗QQ密码。
  2.木马是如何盗走QQ密码的
  普通情况下,一个应用程序所接收的键盘、鼠标操作,别的应用程序是无权“过问”的。可盗号木马是怎么偷偷记录下我的密码的呢?木马首先将1个DLL文件插入到QQ的进程中并成为QQ进程中的一个线程,这样该木马DLL就赫然成为了QQ的一部分!然后在用户输入密码时,因为此时木马DLL已经进入QQ进程内部,所以也就能够接收到用户传递给QQ的密码键入了,真是“家贼难防”啊!
 
  3.如何插入进程
  (1)使用注册表插入DLL
  早期的进程插入式木马的伎俩,通过修改注册表中的[HKEY_LOCAL_MACHINESoftwareMicrosoftWindows NTCurrentVersionWindowsAppInit_DLLs]来达到插入进程的目的。缺点是不实时,修改注册表后需要重新启动才能完成进程插入。
  (2)使用挂钩(Hook)插入DLL
  比较高级和隐蔽的方式,通过系统的挂钩机制(即“Hook”,类似于DOS时代的“中断”)来插入进程(一些盗QQ木马、键盘记录木马以Hook方式插入到其他进程中“偷鸡摸狗”),需要调用SetWindowsHookEx函数(也是一个Win32 API函数)。缺点是技术门槛较高,程序调试困难,这种木马的制作者必须具有相当的Win32编程水平。
  你知道吗——什么是API
  Windows中提供各种功能实现的接口称为Win32 API(Application Programming Interface,即“应用程序编程接口”),如一些程序需要对磁盘上的文件进行读写,就要先通过对相应的API(文件读写就要调用文件相关的API)发出调用请求,然后API根据程序在调用其函数时提供的参数(如读写文件就需要同时给出需要读写的文件的文件名及路径)来完成请求实现的功能,最后将调用结果(如写入文件成功,或读取文件失败等)返回给程序(见图3 应用程序、Win32 API、系统的关系图)。

(3)使用远程线程函数(CreateRemoteThread)插入DLL
  在Windows 2000及以上的系统中提供了这个“远程进程”机制,可以通过一个系统API函数来向另一个进程中创建线程(插入DLL)。缺点很明显,仅支持Windows 2000及以上系统,在国内仍有相当多用户在使用Windows 98,所以采用这种进程插入方式的木马缺乏平台通用性。
  木马将自身作为DLL插入别的进程空间后,用查看进程的方式就无法找出木马的踪迹了,你能看到的仅仅是一些正常程序的进程,但木马却已经偷偷潜入其中了。解决的方法是使用支持“进程模块查看”的进程管理工具(如“Windows优化大师”提供的进程查看),木马的DLL模块就会现形了。
  不要相信自己的眼睛:恐怖的进程“蒸发”
  严格地来讲,这应该算是第2.5代的进程隐藏技术了,可是它却比前几种技术更为可怕得多。这种技术使得木马不必将自己插入到其他进程中,而可以直接消失!
  它通过Hook技术对系统中所有程序的进程检测相关API的调用进行了监控,“任务管理器”之所以能够显示出系统中所有的进程,也是因为其调用了EnumProcesses等进程相关的API函数,进程信息都包含在该函数的返回结果中,由发出调用请求的程序接收返回结果并进行处理(如“任务管理器”在接收到结果后就在进程列表中显示出来)。
  而木马由于事先对该API函数进行了Hook,所以在“任务管理器”(或其他调用了列举进程函数的程序)调用EnumProcesses函数时(此时的API函数充当了“内线”的角色),木马便得到了通知,并且在函数将结果(列出所有进程)返回给程序前,就已将自身的进程信息从返回结果中抹去了。就好比你正在看电视节目,却有人不知不觉中将电视接上了DVD,你在不知不觉中就被欺骗了。
  所以无论是“任务管理器”还是杀毒软件,想对这种木马的进程进行检测都是徒劳的。这种木马目前没有非常有效的查杀手段,只有在其运行前由杀毒软件检测到木马文件并阻止其病毒体的运行。当时还有一种技术是由木马程序将其自身的进程信息从Windows系统用以记录进程信息的“进程链表”中删除,这样进程管理工具就无法从“进程链表”中获得木马的进程信息了。但由于缺乏平台通用性而且在程序运行时有一些问题,所以没有被广泛采用。
你知道吗——什么是Hook
  Hook是Windows中提供的一种用以替换DOS下“中断”的一种系统机制,中文译名为“挂钩”或“钩子”。在对特定的系统事件(包括上文中的特定API函数的调用事件)进行Hook后,一旦发生已Hook的事件,对该事件进行Hook的程序(如:木马)就会收到系统的通知,这时程序就能在第一时间对该事件做出响应(木马程序便抢在函数返回前对结果进行了修改)。
  毫无踪迹:全方位立体隐藏
  利用刚才介绍的Hook隐藏进程的手段,木马可以轻而易举地实现文件的隐藏,只需将Hook技术应用在文件相关的API函数上即可,这样无论是“资源管理器”还是杀毒软件都无法找出木马所在了。更令人吃惊的是,现在已经有木马(如:灰鸽子)利用该技术实现了文件和进程的隐藏。要防止这种木马最好的手段仍是利用杀毒软件在其运行前进行拦截。
  跟杀毒软件对着干:反杀毒软件外壳
  木马再狡猾,可是一旦被杀毒软件定义了特征码,在运行前就被拦截了。要躲过杀毒软件的追杀,很多木马就被加了壳,相当于给木马穿了件衣服,这样杀毒软件就认不出来了,但有部分杀毒软件会尝试对常用壳进行脱壳,然后再查杀(小样,别以为穿上件马夹我就不认识你了)。除了被动的隐藏外,最近还发现了能够主动和杀毒软件对着干的壳,木马在加了这种壳之后,一旦运行,则外壳先得到程序控制权,由其通过各种手段对系统中安装的杀毒软件进行破坏,最后在确认安全(杀毒软件的保护已被瓦解)后由壳释放包裹在自己“体内”的木马体并执行之。对付这种木马的方法是使用具有脱壳能力的杀毒软件对系统进行保护。
  你知道吗——什么是壳
  顾名思义,你可以很轻易地猜到,这是一种包在外面的东西。没错,壳能够将文件(比如EXE)包住,然后在文件被运行时,首先由壳获得控制权,然后释放并运行包裹着的文件体。很多壳能对自己包住的文件体进行加密,这样就可以防止杀毒软件的查杀。比如原先杀毒软件定义的该木马的特征是“12345”,如果发现某文件中含有这个特征,就认为该文件是木马,而带有加密功能的壳则会对文件体进行加密(如:原先的特征是“12345”,加密后变成了“54321”,这样杀毒软件当然不能靠文件特征进行检查了)。脱壳指的就是将文件外边的壳去除,恢复文件没有加壳前的状态。

12

主题

167

回帖

220

积分

水天使

Rank: 3Rank: 3

积分
220
 楼主| 发表于 2007-5-27 14:27:55 | 显示全部楼层
TCP端口作用,漏洞,操作

  在上网的时候,我们经常会看到“端口”这个词,也会经常用到端口号,比如在FTP地址后面增加的“?21”,21就表示端口号。那么端口到底是什么意思呢?怎样查看端口号呢?一个端口是否成为网络恶意攻击的大门呢?,我们应该如何面对形形色色的端口呢?下面就将介绍这方面的内容,以供大家参考。?

  21端口:21端口主要用于FTP(File Transfer Protocol,文件传输协议)服务。

  端口说明:21端口主要用于FTP(File Transfer Protocol,文件传输协议)服务,FTP服务主要是为了在两台计算机之间实现文件的上传与下载,一台计算机作为FTP客户端,另一台计算机作为FTP服务器,可以采用匿名(anonymous)登录和授权用户名与密码登录两种方式登录FTP服务器。目前,通过FTP服务来实现文件的传输是互联网上上传、下载文件最主要的方法。另外,还有一个20端口是用于FTP数据传输的默认端口号。

  在Windows中可以通过Internet信息服务(IIS)来提供FTP连接和管理,也可以单独安装FTP服务器软件来实现FTP功能,比如常见的FTP Serv-U。

  操作建议:因为有的FTP服务器可以通过匿名登录,所以常常会被黑客利用。另外,21端口还会被一些木马利用,比如Blade Runner、FTP Trojan、Doly Trojan、WebEx等等。如果不架设FTP服务器,建议关闭21端口。 23端口:23端口主要用于Telnet(远程登录)服务,是Internet上普遍采用的登录和仿真程序。

  端口说明:23端口主要用于Telnet(远程登录)服务,是Internet上普遍采用的登录和仿真程序。同样需要设置客户端和服务器端,开启Telnet服务的客户端就可以登录远程Telnet服务器,采用授权用户名和密码登录。登录之后,允许用户使用命令提示符窗口进行相应的操作。在Windows中可以在命令提示符窗口中,键入“Telnet”命令来使用Telnet远程登录。

  操作建议:利用Telnet服务,黑客可以搜索远程登录Unix的服务,扫描操作系统的类型。而且在Windows 2000中Telnet服务存在多个严重的漏洞,比如提升权限、拒绝服务等,可以让远程服务器崩溃。Telnet服务的23端口也是TTS(Tiny Telnet Server)木马的缺省端口。所以,建议关闭23端口。

  25端口:25端口为SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)服务器所开放,主要用于发送邮件,如今绝大多数邮件服务器都使用该协议。

  端口说明:25端口为SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)服务器所开放,主要用于发送邮件,如今绝大多数邮件服务器都使用该协议。比如我们在使用电子邮件客户端程序的时候,在创建账户时会要求输入SMTP服务器地址,该服务器地址默认情况下使用的就是25端口。

  端口漏洞:

  1. 利用25端口,黑客可以寻找SMTP服务器,用来转发垃圾邮件

  2. 25端口被很多木马程序所开放,比如Ajan、Antigen、Email Password Sender、ProMail、trojan、Tapiras、Terminator、WinPC、WinSpy等等。拿WinSpy来说,通过开放25端口,可以监视计算机正在运行的所有窗口和模块。

  操作建议:如果不是要架设SMTP邮件服务器,可以将该端口关闭。

  53端口:53端口为DNS(Domain Name Server,域名服务器)服务器所开放,主要用于域名解析,DNS服务在NT系统中使用的最为广泛。

  端口说明:53端口为DNS(Domain Name Server,域名服务器)服务器所开放,主要用于域名解析,DNS服务在NT系统中使用的最为广泛。通过DNS服务器可以实现域名与IP地址之间的转换,只要记住域名就可以快速访问网站。

  端口漏洞:如果开放DNS服务,黑客可以通过分析DNS服务器而直接获取Web服务器等主机的IP地址,再利用53端口突破某些不稳定的防火墙,从而实施攻击。近日,美国一家公司也公布了10个最易遭黑客攻击的漏洞,其中第一位的就是DNS服务器的BIND漏洞。

  操作建议:如果当前的计算机不是用于提供域名解析服务,建议关闭该端口。

  67、68端口:67、68端口分别是为Bootp服务的Bootstrap Protocol Server(引导程序协议服务端)和Bootstrap Protocol Client(引导程序协议客户端)开放的端口。

  端口说明:67、68端口分别是为Bootp服务的Bootstrap Protocol Server(引导程序协议服务端)和Bootstrap Protocol Client(引导程序协议客户端)开放的端口。Bootp服务是一种产生于早期Unix的远程启动协议,我们现在经常用到的DHCP服务就是从Bootp服务扩展而来的。通过Bootp服务可以为局域网中的计算机动态分配IP地址,而不需要每个用户去设置静态IP地址。

  端口漏洞:如果开放Bootp服务,常常会被黑客利用分配的一个IP地址作为局部路由器通过“中间人”(man-in-middle)方式进行攻击。

  操作建议:建议关闭该端口。

  69端口:TFTP是Cisco公司开发的一个简单文件传输协议,类似于FTP。

  端口说明:69端口是为TFTP(Trival File Tranfer Protocol,次要文件传输协议)服务开放的,TFTP是Cisco公司开发的一个简单文件传输协议,类似于FTP。不过与FTP相比,TFTP不具有复杂的交互存取接口和认证控制,该服务适用于不需要复杂交换环境的客户端和服务器之间进行数据传输。

  端口漏洞:很多服务器和Bootp服务一起提供TFTP服务,主要用于从系统下载启动代码。可是,因为TFTP服务可以在系统中写入文件,而且黑客还可以利用TFTP的错误配置来从系统获取任何文件。

  操作建议:建议关闭该端口。

  79端口:79端口是为Finger服务开放的,主要用于查询远程主机在线用户、操作系统类型以及是否缓冲区溢出等用户的详细信息。

  端口说明:79端口是为Finger服务开放的,主要用于查询远程主机在线用户、操作系统类型以及是否缓冲区溢出等用户的详细信息。比如要显示远程计算机www.abc.com上的user01用户的信息,可以在命令行中键入“finger user01@www.abc.com”即可。

  端口漏洞:一般黑客要攻击对方的计算机,都是通过相应的端口扫描工具来获得相关信息,比如使用“流光”就可以利用79端口来扫描远程计算机操作系统版本,获得用户信息,还能探测已知的缓冲区溢出错误。这样,就容易遭遇到黑客的攻击。而且,79端口还被Firehotcker木马作为默认的端口。

  操作建议:建议关闭该端口。

  80端口:80端口是为HTTP(HyperText Transport Protocol,超文本传输协议)开放的,这是上网冲浪使用最多的协议,主要用于在WWW(World Wide Web,万维网)服务上传输信息的协议。

  端口说明:80端口是为HTTP(HyperText Transport Protocol,超文本传输协议)开放的,这是上网冲浪使用最多的协议,主要用于在WWW(World Wide Web,万维网)服务上传输信息的协议。我们可以通过HTTP地址加“:80”(即常说的“网址”)来访问网站的,比如http://www.cce.com.cn:80,因为浏览网页服务默认的端口号是80,所以只要输入网址,不用输入“:80”。

  端口漏洞:有些木马程序可以利用80端口来攻击计算机的,比如Executor、RingZero等。

  操作建议:为了能正常上网冲浪,我们必须开启80端口。

  99端口:99端口是用于一个名为“Metagram Relay”(亚对策延时)的服务,该服务比较少见,一般是用不到的。

  端口说明:99端口是用于一个名为“Metagram Relay”(亚对策延时)的服务,该服务比较少见,一般是用不到的。

  端口漏洞:虽然“Metagram Relay”服务不常用,可是Hidden Port、NCx99等木马程序会利用该端口,比如在Windows 2000中,NCx99可以把cmd.exe程序绑定到99端口,这样用Telnet就可以连接到服务器,随意添加用户、更改权限。

  操作建议:建议关闭该端口。

  109、110端口:109端口是为POP2(Post Office Protocol Version 2,邮局协议2)服务开放的,110端口是为POP3(邮件协议3)服务开放的,POP2、POP3都是主要用于接收邮件的。

  端口说明:109端口是为POP2(Post Office Protocol Version 2,邮局协议2)服务开放的,110端口是为POP3(邮件协议3)服务开放的,POP2、POP3都是主要用于接收邮件的,目前POP3使用的比较多,许多服务器都同时支持POP2和POP3。客户端可以使用POP3协议来访问服务端的邮件服务,如今ISP的绝大多数邮件服务器都是使用该协议。在使用电子邮件客户端程序的时候,会要求输入POP3服务器地址,默认情况下使用的就是110端口。

  端口漏洞OP2、POP3在提供邮件接收服务的同时,也出现了不少的漏洞。单单POP3服务在用户名和密码交换缓冲区溢出的漏洞就不少于20个,比如WebEasyMail POP3 Server合法用户名信息泄露漏洞,通过该漏洞远程攻击者可以验证用户账户的存在。另外,110端口也被ProMail trojan等木马程序所利用,通过110端口可以窃取POP账号用户名和密码。

  操作建议:如果是执行邮件服务器,可以打开该端口。

12

主题

167

回帖

220

积分

水天使

Rank: 3Rank: 3

积分
220
 楼主| 发表于 2007-5-27 14:28:40 | 显示全部楼层
如今网上黑客横行,稍不留神就可能被黑客光顾,避如前段时间我们空间商的服务器就被入侵了,数据都被删光了,所以要想在网上生存,做好安全措施是必不可少的。一般我们都只重视对机器进行安全设置,而往往忽略了被入侵后的信息收集问题,今天我就介绍三种让黑客留下痕迹的方法,希望能对大家有所帮助。 一、利用“木马”进行记录

  1.木马简介 这里要用到的是一个很特殊的dll木马,它可以把通过终端登陆的用户名、密码,以及域信息记录到指定文件中。不要以为这些信息没什么用哦!有时候就得*这些零散的信息来找入侵的人。 在下载的压缩包内,有三个文件: SysGina32.dll--这个就是可以记录用户名和密码的东东了。 Gina.exe--这是安装DLL木马用的程序,有了它后安装起来就很方便了。 使用方法.txt--这个很熟悉吧!中文帮助文件哦!有什么不懂的可以查查。

  2.安装木马 先把SysGina32.dll和Gina.exe放在同一目录下,并将Gina.exe改名为svchost.exe(你也可以改成其它名字,为的是不让黑客注意到),然后打开CMD,切换到保存这两个文件的文件夹,输入命令:svchost.exe -install,当出现“All Done,Gina setup success”信息时,安装就成功了。

  注意:

  a.该木马已被杀毒软件查杀,所以安装时请关闭杀毒软件(不是关闭防火墙哦!),而且以后重启时杀毒软件不能一起启动,以后杀一次毒重新装一次该木马。不过如果你能让该木马不被杀毒软件的话,那就没这么麻烦了。

  b.为了不让黑客发现我们设的陷阱,最好将Gina.exe文件改名,而且要改的艺术一点,比如上面我把它改成了“svchost.exe”,这样就很难发现了,如果你改成了其它名字,安装时命令就要换成“文件名.exe -install”。

  c.SysGina32.dll和Gina.exe这两个文件不一定要复制到系统安装目录的system32下,不过最好不要太引人注意,如果被黑客发现,那就可能适得其反了(木马也会记下你的密码的)。

  d.如果出现的信息是“Found Exist Gina”,这说明你机器已经装过该木马了,此时键入“Y”覆盖即可。

  3.查看“踪迹” 经过以上设置后,如果有人通过终端服务登录你的机器,那么他的用户名和密码就会被记录到“C:\WINNT\system32\GinaPwd.txt”这个文件中,打开这文件就可以看到入侵者的踪迹了。由于该木马也会记录你的密码,所以每次进入机器时,请先打开GinaPwd.txt这文件,把你的用户名和密码删掉,顺便查一下有没有其它人登录过。

  4.删除木马 如果你的机器不幸被人中了该木马,那么请按如下方法删除: 先下载该木马,在CMD下输入命令:gina.exe -remove,当出现“ Gina Dll was removed success”时,就表示删除成功了,接着重启机器即可。 注意:如果你把gina.exe改名了,命令也要做相应改变:文件名.exe - 二、写个批处理记录黑客行踪 1.认识批处理 对于批处理文件,你可以把它理解成批量完成你指定命令的文件,它的扩展名为 .bat 或 .cmd,只要在文本文件中写入一些命令,并把它保存为.bat 或 .cmd格式,然后双击该文件,系统就会按文本文件中的命令逐条执行,这样可以节省你许多的时间。

  

  2.编写批处理文件 打开记事本,然后输入如下命令:

  @echo off            date /t >>d:\3389.txt            attrib +s +h d:\3389.bat            attrib +s +h d:\3389.txt            time /t >>d:\3389.txt            netstat -an |find "ESTABLISHED" |find ":3389" >>d:\3389.txt然后把文件保存为d:\3389.bat,这里我解释一下命令的意思,date和time是用于获取系统时间的,这样可以让你知道黑客在某天的某个时刻入侵。“attrib +s +h d:\3389.bat”和“attrib +s +h d:\3389.txt”这两个命令是用来隐藏3389.bat和3389.txt这两个文件的,因为在登录时,由于会启动d:\3389.bat这个文件,所以会有一个CMD窗口一闪而过,有经验的黑客应该能判断出这窗口是记录用的,所以他可能会到处找这个记录文件,用了以上两个命令后,即使他用系统自带的搜索功能以3389为关键字进行搜索,也找不到上面3389.bat和3389.txt这两个文件,哈哈!很棒吧!至于“netstat -an |find "ESTABLISHED" |find ":3389" >>d:\3389.txt”这个命令则是记录通过终端的连结状况的,明白了吧! 接下来我们要让系统启动时自动运行d:\3389.bat这文件,我用的方法是修改注册表,依次展开:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon,找到“Userinit”这个键值,这个键值默认为c:\WINNT\system32\userinit.exe,不知你注意到没有,在最后有一个逗号,我们要利用的就是这逗号,比如我上面写的3389.bat文件路径为d:\3389.bat,那么我只要在逗号后面加上“d:\3389.bat”即可,这样启动时3389.bat这文件就会运行,选这个键值的原因是因为它隐蔽,如果是加在Run键值下的话是很容易被发现的。最后提醒一点,键值末尾的逗号别忘了加上去哦!

  4.查看记录 前面我们用了attrib命令把3389.bat和3389.txt这两个文件隐藏起来,下面我们来让它们重新显示。 打开CMD,切换到保存这两个文件的路径,这里是切换到“d:\”目录,输入命令:attrib -s -h d:\3389.bat和attrib -s -h d:\3389.txt,这时再到d盘看看,是不是出现了?打开文件即可查看登录情况,从中我们可以看出,10.51.5.36这IP连结到了我的3389端口(我的IP是10.51.5.35)。

  三、记录黑客动作 有了以上两道防线,我们就能知道黑客的用户名、密码、以及入侵时的IP了,不过这样好像还不够,要是能知道黑客都干了些什么就更好了,下面我们再设置一个陷阱,这里要用到的工具是“计算机系统日志”。 该软件的特色就是可以在后台记录所有运行过的程序和窗口名称,并且有具体的时期,以及登录的用户名,很恐怖哦!下面咱们来设陷阱吧!

  1.记录日志

  双击压缩包内的主程序,点击“软件试用”进入主界面,在“日志文件保存路径”处点击“浏览”选择保存路径并进行命名,这里保存在c:\winnt\log.txt。然后钩选“日志记录随计算机自动启动”。 注意: a.为了防止黑客找到记录日志的文件,你可以用上面提到的命令:attrib +s +h c:\winnt\log.txt进行隐藏。

  b.最好不要将这个记录文件和上面的3389.txt放一个目录下,这样万一被发现其中一个,不至于使另一个也一同被发现。 c.软件在“任务管理器”的进程中显示名称为“syslog”,而且未注册版本会在20分钟后自动停止记录,所以只能用来对付菜鸟黑客啦!而且还得先花点“银子”,哈哈! 接下来在“程序密码保护”处输入一个复杂点的密码,点击“开始日志”。这时软件会提醒你隐藏后的热键为“Ctrl+Q”,请记住这个热键,以后要唤出软件时就得*它了。

  2.查看动作 想知道这样设置后记录下来的东西是什么样吗?那就快来看看吧。怎么样?对这种记录结果你还满意吗? 以上就是我比较推荐的三种方法了,都非常的实用,你不妨也试试哦!

12

主题

167

回帖

220

积分

水天使

Rank: 3Rank: 3

积分
220
 楼主| 发表于 2007-5-27 14:32:14 | 显示全部楼层
木马免杀原理详解
文章出于网络作者不详,曾见作者发布于黑客防线,估转载此文!

首先来简单了解一下杀毒软件查杀病毒的原理,当前杀毒软件对病毒的查杀主要有特征代码法和行为监测法。其中前一个比较方法古老,又分为文件查杀和内存查杀,杀毒软件公司拿到病毒的样本以后,定义一段病毒特征码到病毒库中,然后与扫描的文件比对,如果一致则认为是病毒,内存查杀则是载入内存后再比对,第二个比较新,它利用的原理是某些特定的病毒会有某些特定的行为,来监测病毒。
免杀常用的工具:
Ollydbg 调试器简称OD,动态追踪工具    peid 查壳工具  PEditor PE文件头编辑工具
CCL,伯乐,MYCCL 特征码定位器    oc 地址转换器    reloc 修改EP段地址工具  zeroadd 加区工具  Uedit32 十六进制编辑器  
免杀方法
一.文件免杀  
1.加花  
2.修改文件特征码  
3.加壳  
4.修改加壳后的文件

二.内存免杀  
  修改特征码

三.行为免杀
加花
  加花是文件免杀的常用手段,加花原理就是通过添加花指令(一些垃圾指令,类似加1减1之类废话)让杀毒软件检测不到特征码。加花可以分为加区加花和去头加花。一般加花工具使用加区加花,当然也是可以手工加的,就是先用zeroadd添加一个区段,然后在新加区段里写入花指令,然后跳转到原入口;去头加花,是先NOP(汇编里的空操作)掉程序的入口几行,然后找到下方0000区,写入NOP掉的代码和一些花指令,再通过JMP(汇编里的无条件跳转)跳到原入口。
举个例子说明一下去头加花:
图1

这是PcShare服务端入口处的一段代码,原入口地址是00403D7D,因为是演示我就用两句最简单的垃圾代码,花指令可以自己去找或者自己写
push eax;eax寄存器压入堆栈
pop eax;eax寄存器弹出堆栈
图2

先将入口两句用NOP填充,然后找到一段0000区记下新入口地址0040443C
图3

写入刚刚NOP掉的入口两句和花指令还有跳转到原入口的指令
图4

把修改好的代码保存,用PEditor把入口地址修改为新入口0040443C就完成了,代码执行时从新入口开始,先执行花指令然后跳转到原入口执行真正程序,很简单吧?其实花指令可以加在头后同样也可以加在头后,也就是可以先执行花指令,然后再是入口,免杀效果是不一样的!大家可以试一下。加区加花很相似,主要是怕程序的0000区不足,先用工具新加一个区,在新区里写入花指令,其他的和去头加花一样,就不演示了。

加花以后一些杀毒软件就认不出了,但有些比较强悍的杀毒,比如司机大叔(卡巴斯基)可能还是能查出来,这时就要定位特征码然后修改了,要修改首先必须知道特征码在哪里,所以需要先定位特征码,这是个难点,特别是复合特征码的定位。
特征码定位
  特征码定位主要有两种方法:第一 直接替换法;第二 二叉数法;
  直接替换法是最早开始出现的一种特征码定位方法,按一定的字节数逐个替换原代码并保存,比如木马总共100字节,可以先把0-10个字节用0替换,保存,然后用杀毒软件扫描,不被查杀说明特征码已经被覆盖掉了,如果还被查杀则替换10-20字节,再保存,扫描……直到找出特征码。替换法的优点是容易理解,速度快(对文件特征码而言),特征码定位工具伯乐以及CCL的手动方式就是利用的替换法原理,文件特征码定位经常使用的就是这种方法。但是对于内存特征码的定位这种方法就不太实用了,每次替换以后都要载入内存再扫描,如果木马较大,替换生成的文件会非常多,每个都要载入内存花费太多时间,除此之外它还有一个非常大的局限性,就是只能确定只有一处特征码的情况(某种特定情况下的多特征码也是适用的,下面的第3种情况将有讲述),杀毒软件还有别的定位特征码的机制,比如有的杀毒的定义了a,b两处特征码(三处或者更多原理是一样的,为了讲解方便,以下均以两处为例),只要a,b有一个存在便报毒,只有加大替换范围直到两处同时被替换才不报毒,如果两处距离比较远,定义出的范围将非常粗糙,很明显直接替换法将不再合适,这时第二种方法就有用武之地了。

  二叉数法使用的原理是一半一半定位,CCL的自动方式就是运用的这个原理。将待检测段一分为二,分别替换并生成两个文件A和B,其中A是原文件后半部分被0替换后生成的,B是前半部分被0替换的,杀毒开始查杀生成文件(如果是内存特征码定位则先载入内存再扫描内存),有4种情况
(1)A存在,B被删:这种情况说明A文件中特征码已经被替换掉,因此将A的被替换部分一分为二,起始偏移为A的偏移,再进行检测;
(2)A被删,B存在:这种情况说明B文件中特征码已经被替换掉,因此将B的被替换部分一分为二,起始偏移为B的偏移,再进行检测;
(3)A存在,B存在:这种情况说明没法定位A和B中有没有特征码,因此分别对A和B再一分为二进行检测;
(4)A被删,B被删:这种情况说明两个区段都存在特征码,因此分别对A和B再一分为二进行检测。
对A再分时会将原来的B区段填充为0,相当于去除B区段的影响,只考虑A;同理对B再分时会将原来的A区段内容填0,相当于去除A区段的影响,只考虑B。

第(1)(2)对应的是只有一处特征码的情况,比较容易理解;
第(3)对应的是定义了a,b两处特征码的情况,但是和前面提到的那种不同,杀毒软件为避免误判,定义了a,b两处特征码,要ab同时存在时才报毒,假设a,b分别存在于A,B中,a,b不同时存在,杀毒对A,B均不报警,接下来该如何判断呢?举个例子说明一下
木马原来是…a……b…,第一次替换以后A:…a…000000,B:000000…b…,现在ab不同时存在,A,B都不被杀,则分别对A,B再次一分为二,…a……b000,…a…000…,000……b…,…a000…b…,再次扫描就可以找到两处特征码的位置,如果还是不行,再继续分……直到全部找到;其实这种类型的多特征码直接替换也是可以定位的,甚至效果更好,按一定位数替换,然后扫描,只要替换了一个特征码就不再报毒,所以不报毒的便是特征码被覆盖的,不管有几处都可以定位出,而且修改时也只要修改任意一处就可以了。

第(4)种对应的情况也是杀毒定义了多处特征码,就是上面提到的那种情况,只要有一处符合就认定是病毒。还是以a,b两处特征码为例,第一次替换后的结果同(3),两部分分开考虑,互不影响,相当于分解成两个单个特征码的情况,第二次替换后变成000000…b000,000000…000…,000…000000,…a000000000,依此类推,直到精确定位出所有特征码,如果有N处特征码就相当于分解成N个单特征码来定位,现在N一般小于等于3,这种情况定位出的所有特征码必须全部修改了才能免杀。
  二叉数法是个很不错的思路,可以解决大部分的问题,但是不是无懈可击呢?回答是否定的!可恶的杀毒软件还有一个杀手锏,就是复合特征码,给我们定位特征码带来了很大的麻烦。复合特征码的定位机制是,先定义出N个特征码,只要里面某些同时出现便认为是病毒。举个简单例子说明一下:木马原来是…a1…b1…c1…a2…b2…c2…(a1,a2一样,加标号只是为了后面描述方便),只要abc同时出现就认为是病毒,这该如何定位呢?原理不是很难,也是利用替换再查杀的方法,先从后往前用0替换,替换精度假设为每次替换量增加1000字节,开始一直显示是病毒,直到替换到地址13140040(为叙述方便随便说的一个地址)时替换的字节达到15000个,即…a1…b1…00000000,两个c都被替换掉了,此时显示不是病毒,由此可知,特征码c1就在13140040后面1000字节内,减小替换字节数比如改为替换14900字节,即精度改为每次替换减小100字节,还是无毒则减为替换14800字节,不断重复……直到精确定位出c1的位置;如果改为从前往后替换,则可以定位出a2的位置;其他特征码的定位可以利用已经定位到的c1,a2,把其中一个用0替换了比如c1,从后往前就可以定位出c2,直到定位出所有特征码,其实原理并不复杂,但是要真正手动操作起来却是非常麻烦的,我们可以利用MYCCL,它用的原理与之类似,具体操作可以看MYCCL的操作帮助。还有一种方法更科学,原理是一样,但是替换的字节数不是等量增加的,而是以2的n-1次方增加的,第一次替换1字节,第二次2字节,第三次4字节……减小时也按照这种规律,这种替换方法有点类似于二叉数法,可以更快定位出特征码的位置,我想这也是MYCCL在复合特征码定位方面应该改进的地方吧。
  复合特征码虽好,大家也不用害怕,认为所有杀毒都来个复合特征码我们就要累死了,定义复合特征码需要单个特征码几倍的病毒库,不方便用户的升级,所以除了特别流行的病毒,定义复合特征码的也不是很多。
  定位特征码有些经验可以告诉大家,文件特征码的定位一般用直接替换法,可以借用CCL的手动定位;内存特征码定位,一般用二叉数法,可以用CCL自动定位。对于EXE文件如果文件较小,可以两种方法结合,先用直接替换法生成,可以用伯乐这个工具(为什么不用CCL呢,因为伯乐生成的是EXE文件可以看出图标的模样),找到还能正常运行的,那些图标都变了的说明PE头已经损坏了,就不要试了,然后载入内存,再扫描内存,如果既能正常运行又不被杀,恭喜你!成功了!定位出了大体范围,再用CCL自动定位,很快就可以完成。如果文件较大,用伯乐生成的文件太多,也不方便,还是用CCL定位,对于DLL文件也只能老老实实用CCL定位了。

12

主题

167

回帖

220

积分

水天使

Rank: 3Rank: 3

积分
220
 楼主| 发表于 2007-5-27 14:32:44 | 显示全部楼层
接上
特征码修改
  特征码修改可能需要一点汇编的知识,光盘里有常用的汇编语法介绍,修改主要有直接修改法和跳转修改法。
直接修改法利用的是等效指令替换,比如
add eax,0c等效于sub eax,-0c
或者指令顺序的改变不影响执行的效果,比如
add eax,0c;eax寄存器加上0c再赋给eax   
add ebx,05;ebx寄存器加上05再赋给ebx   
等效于
add ebx,05;ebx寄存器加上05再赋给ebx   
add eax,0c;eax寄存器加上0c再赋给eax   
还有一种是如果特征码是ASCII码,可以直接修改大小写,小写字母换成大写,大写的换成小写。
图5

SOFTWARE\Borland可以改成sofTwAre\BOrlaND
大家可以学习一下最基础的汇编语法,并不难,对特征码修改你将会有更深的理解。
跳转修改法比较简单,主要原理就是把特征码的那段NOP掉,然后把NOP掉的语句写入空白的0000区,再通过JMP跳转连接起来,让杀毒找不到特征码,从而达到免杀的目的。
举个例子
图6
假设选中的13143C58到13143C5C是特征码,当然这段可以用直接修改法修改,这里说下如何跳转
首先NOP掉4行特征码
图7

在下面找到一段0000区记下地址1314CECF
图8

写入NOP掉的特征代码和跳转到特征代码后续语句的代码
图9

最后到NOP掉的原特征码段加入一句代码JMP 1314CECF跳到新加的代码区
图10

完成!这样便把特征码的位置改变了,又不影响代码的执行,只要特征码定位准了,绝对免杀!
注意:文件地址指二进制文件的实际偏移地址,内存偏移指相对虚拟地址(RVA),一般等于文件偏移地址加基地址(感谢楚茗大哥的指点),通过定位特征码得出的是实际偏移地址,载入内存以后,地址会变化,不再是文件特征码定位时的地址了,所以修改特征码不能忘记把定位出的地址转换为对应内存地址,这里可以借助一个小工具oc.exe确定,然后再进行修改,WinHex,Uedit这类16进制编辑器打开显示的地址是文件地址,而OD这类动态汇编调试工具打开显示则的是内存地址。   

加壳
  不用说了,用工具大家都会,加壳的原理是给原程序加上一段保护程序,有保护和加密功能,运行加壳后的文件是先运行壳再运行真实文件从而起到保护作用。我想提醒大家的是,再好的壳用的人多了,还是会被杀的,所以可以努力学好E文,自己到国外的网站找加壳工具,比较好。这可是我压箱底的经验,一般人我不告诉他!

修改加壳后的文件
  加壳以后程序入口处会有一段特殊代码,可以自己用OD打开不同加壳工具加过壳的文件,可以发现不同的壳开头那段代码是不同的,也可以说成是壳的特征代码吧,对于常用的壳杀毒软件可以脱掉壳再查杀,也就是所谓的穿壳技术,为了避免杀毒软件认出是加的哪种壳我们可以加双壳,或者自己修改开头那段代码,从而让杀毒看不出是什么工具加的壳,这里我只讲一种修改方法,可以参照去头添加花指令,在空白区域加入一段别的壳的特征头,然后JMP跳到原入口,这样杀毒就会误判加壳工具,从而达到免杀的效果,其实方法是多样只要愿意思考总能想出应对的方法。

  还有一种修改壳的方法就是修改EP段的入口,用Peid查一下加过壳的木马,可以发现EP段的地址,也就是区段入口,通过修改EP入口地址可以达到免杀的效果,利用的工具是reloc(国内好象没提供下载的,我在国外网站找到的)放在光盘里了,具体使用方法自己去问google。
行为免杀
  这种杀毒的代表是绿鹰PC万能精灵。一般说来木马在运行以后会复制到系统目录下然后运行,原文件可能会自动删除,现在的木马一般是插入进程来访问网络的,在进程里可以看到被插入的进程,设置开机启动也是木马必须做的可以写入注册表,加入服务,写入驱动等等,这些便是木马特有的行为。我们可以用注册表监控,文件修改监控的工具比如木马辅助查找器记录修改的文件、注册表,推测杀毒可能监控的是哪个行为从而对应修改行为来达到行为免杀。还有一个一般的方法,行为杀毒是不会查杀系统的启动项的,我们可以把木马的启动项替换成非系统必须的开机自启动项就可以成功免杀了。至于其他的方法,大家可以自己再研究。

  至于网上流传的入口加1,就是用PEditor将木马入口地址+1,有时也是可以达到免杀的效果,好象是瑞星比较吃这个,还有个小窍门可以告诉大家,要让自己的免杀木马尽量久的不被查到,最好选择比较老的木马来做,对新木马,杀毒盯的紧会经常更新病毒库,而老的呢……不用说了吧。
总结
  一般免杀步骤是先定义内存特征码,修改内存特征码,加花指令做文件免杀,如果还被某些杀毒查杀则定义文件特征码,修改特征码,接下来是行为免杀,然后加壳,再修改壳。内存免杀一般只要做瑞星的就可以了,其他的杀毒软件没有真正意义上的内存杀毒,比如卡巴斯基的内存扫描就是文件快速扫描,一般加入花指令(稍微学点汇编,折腾些垃圾代码是很简单的)以后就可以躲过金山,瑞星,江民的文件查杀,万一有不过的就要定位特征码再修改,卡巴的文件查杀是很牛的,加了壳也几乎都能可以查出来,一般都要定位特征码再修改,对于诺顿这种喜欢把特征码定位在PE头的只要用北斗之类工具加个壳,把PE头改得一塌糊涂(当然也可以手工修改PE头,不过比较麻烦,不容易说清楚,而且需要了解一些PE文件的结构知识,想知道的可以联系我,论坛ID:幽游),它就不认识了,如果还想把免杀做好点,可以把自己的服务和注册表键值改成非系统必须的,那么绿鹰这类行为查杀的笨蛋就成盲人了!要是你是不折不扣完美主义者,可以再修改一下加壳后的文件,把免杀进行到底!

  这篇文章主要讲了免杀的原理和理论上的方法以及一些个人的心得,并没有太多演示,因为我个人感觉,理解原理才是最重要的,只有这样你自己才可能有突破,想出更多免杀的方法,只要理解了原理免杀根本就不是难事!文中有很多地方是个人的理解,如果有不对的地方还请高手指正。最后希望杀毒软件有更多先进优秀的杀毒方法,更好地保护计算机的安全,也给我们一些挑战,还有国内的杀毒赶快发展起来,成为世界一流的杀毒软件,特别是金*,不要让我们做免杀的时候再把你忽略不计……
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|手机版|Archiver|落岸天使论坛

GMT+8, 2024-11-23 05:07 , Processed in 0.129134 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表