FTP安全审计 |
FTP服务提供了对文件的远程访问功能,通常用于对Web服务器的维护及类似的目的。FTP服务主要使用如下两个端口:TCP21端口,入站服务器控制端口,用于接收和处理来自客户端的FTP命令,TCP20端口,出站数据端口,用于从服务器向客户端发送数据。要进行数据传输,需要两个端口共同作用:控制端口21,用于发布PORT等命令对数据传输进行初始化;数据端口20,用于进行具体的数据传输。RFC959捕获并概括了FTP及其不同的模式与命令。 |
FTP服务容易受到如下几类攻击: |
|
如果通过老版本的防火墙与代理服务器来访问FTP服务,那么也可以对其进行滥用,这是通过发送定制的PORT命令(提供对目标服务器上其它端口的访问)来实现的。 |
FTP服务标志获取与枚举 |
发现一台服务器上运行FTP之后,连接到该服务器之后发现的第一条信息是FTP服务器标志: |
$ ftp 192.168.0.11 Connected to 192.168.0.11 (192.168.0.11) 220 darkside FTP server ready. Name (192.168.0.11:root)
|
这里,所获取的标志表明这是一台Solaris9服务器,而Solaris 8(也称SunOS5.8)及以前版本会略有不同的标志返回操作系统详细资料,如下所示: |
$ ftp 192.168.0.12 Connected to 192.168.0.22 (192.168.0.22) 220 lackie FTP server (SunOS 5.8) ready. Name (192.168.0.12:root):
|
如果管理员对服务标示进行过模糊处理或修改以去除服务版本或操作系统信息,则该服务有时候可以在登录之后通过分析quotehelp和syst命令的响应信息加以识别,例如: |
$ ftp 192.168.0.250 Connected to 192.168.0.250 (192.168.0.250). 220 ftp.trustmatta.com FTP server ready. Name (ftp.trustmatta.com:root): ftp 331 Guest login ok, send your complete e-mail address as password. Password: hello@world.com 220 Guest login ok, access restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> quote help 214-The following commands are recongnized (* =>'s unimplemented). USER PORT STOR MSAM* RNTO NLST MKD CDUP PASS PASV APPE MRSQ* ABOR SITE XMKD XCUP ACCT* TYPE MLFL* MRCP* DELE SYST RMD STOU SMNY* STRU MAIL* ALL0 CWD STAT XRMD SIZE REIN* MODE MSND* REST XCWD HELP PWD MDTM QUIT RETR MSOM* RNFR LIST NOOP XPWD 214 Direct coments to ftpadmin@ftp.trustmatta.com ftp> syst 215 UNIX Type: L8 Version: SUNOS
|
|
msf > use auxiliary/scanner/ftp/ftp_ use auxiliary/scanner/ftp/ftp_login use auxiliary/scanner/ftp/ftp_version msf > use auxiliary/scanner/ftp/ftp_version msf auxiliary(ftp_version) > show options Module options (auxiliary/scanner/ftp/ftp_version): Name Current Setting Required Description ---- --------------- -------- ----------- FTPPASS mozilla@example.com no The password for the specified username FTPUSER anonymous no The username to authenticate as RHOSTS yes The target address range or CIDR identifier RPORT 21 yes The target port THREADS 1 yes The number of concurrent threads msf auxiliary(ftp_version) > set RHOSTS 10.1.2.115 RHOSTS => 10.1.2.115 msf auxiliary(ftp_version) > run [*] 10.1.2.115:21 FTP Banner: '220-Wellcome to Home Ftp Server!\x0d\x0a220 FTP server ready.\x0d\x0a' [*] Scanned 1 of 1 hosts (100% complete) [*] Auxiliary module execution completed
|
在这个实例中,所获取的标志没有揭示FTP服务类型和版本信息。然而,通过登录以后对服务器的查询,可以判定是一个Sun MicrosystemsFTP守护进程。通过对该端口进行IP“指纹识别”,还可以大略判定所运行的Solaris版本。 |
评估FTP访问许可权限 |
在获得FTP服务的访问权限后,你应该准确评估自己具备对可访问的目录结构具有哪种类型的访问权限。很多FTP攻击方法需要攻击者具有创建文件和目录的权限,以便正确有效的实施攻击计划。 |
FTP口令暴力猜解 |
THCHydra是Unix下一款快速的暴力破解工具,可以对FTP,POP3,IMAP,HTTP,LDAP以及很多其它服务进行暴力破解,Brutus是一款类似的运行在Windows下的工具。这些工具可在如下网址下载: http://www.thc.org/releases.php http://www.hoobie.net/brutus/brutus-download.html |
FTP跳板攻击 |
绑定在较老版本操作平台的FTP服务容易受到跳板攻击,在这种攻击中,端口扫描数据包与畸形数据可以通过FTP发送到任意位置。 |
FTP绕过状态过滤机制 |
FTP是一个用于文件传输的复杂协议,在实现上包含两个通道:控制通道(使用TCP21端口)和数据通道(使用TCP 20端口)。PORT命令与PASV命令通过控制通道发布,用于确定由哪个动态的高端口用来传输和接收数据。 |
220-Wellcome to Home Ftp Server! 220 FTP server ready. USER ftp 331 Password required for 123. PASS ftp 230 User 123 logged in. SYST 215 UNIX Type: L8 Internet Component Suite PORT 192,168,1,100,136,234 200 Port command successful. LIST 150 Opening data connection for directory list. 226 File sent ok TYPE I 200 Type set to I. PORT 192,168,1,100,217,133 200 Port command successful. STOR ms08067.py 150 Opening data connection for ms08067.py. 226 File received ok QUIT 221 Goodbye
|
PORT192,168,1,100,217,133 PORT是FTP内置控制命令,用于开启端口, 192,168,1,100表示FTP服务器IP(192.168.1.100) 217,133对应0xd9,0x85即表示端口0xd985,也就是55685. |
FTP进程操纵 |
利用上述的信息,可针对性测试FTP软件的进程与漏洞. |