1
我写一个软件,可以骗过Nmap的,以为GuildFTPd FTP服务器端口21上运行我的Python代码到目前为止是这样的:编造一个FTP服务
import socket
s = socket.socket()
s.bind(('', 21))
s.listen(1)
conn, addr = s.accept()
conn.send("220-GuildFTPd FTP Server (c) 1997-2002\r\n220-Version 0.999.14")
conn.close()
nmap的正则表达式为匹配此特殊服务:
match ftp m|^220-GuildFTPd FTP Server \(c\) \d\d\d\d(-\d\d\d\d)?\r\n220-Version (\d[-.\w]+)\r\n| p/Guild ftpd/ v/$2/ o/Windows/
然而,当我扫描这与Nmap的运行脚本主机的结果是:
21/tcp open ftp?
这怎么可能?当我使用Nmap扫描真实服务时,它会正确识别服务。
我的猜测是,有更多的FTP协议。你给nmap一个响应,让它知道那个端口上有一个程序*。但是,它不知道它是否实际上是一个ftp服务器,因为命令集不正确。 – 2011-12-26 20:34:56
我用Wireshark嗅探了真正的应用程序,它似乎没有发送任何额外的信息,所以我仍然感到困惑。 – 2011-12-26 20:56:40
没有人知道吗? – 2011-12-26 22:34:14