我通常使用nmap或telnet来查找Windows机器上的开放端口。
我在一家咨询公司工作,我们不仅要发现机器上的开放端口,还要发现可以打开的端口。
例如,如果我想为在1521监听的客户安装数据库。在安装数据库之前1521尚未打开,但我想知道它是否可以打开或被阻止(例如防火墙) ,所以我要求客户提前打开它。
有没有任何工具或优雅的方法来做到这一点?
谢谢 最好的问候
答案 0 :(得分:2)
Nmap可以为您提供此信息。 " open,"之间的区别"可以打开,"和#34;防火墙"在Nmap的输出中显示为open
,closed
和filtered
。例如:
$ sudo nmap scanme.nmap.org Starting Nmap 6.47 ( http://nmap.org ) at 2014-10-01 13:02 CDT Nmap scan report for scanme.nmap.org (74.207.244.221) Host is up (0.080s latency). Not shown: 993 closed ports PORT STATE SERVICE 22/tcp open ssh 25/tcp filtered smtp 80/tcp open http 135/tcp filtered msrpc 139/tcp filtered netbios-ssn 445/tcp filtered microsoft-ds 9929/tcp open nping-echo Nmap done: 1 IP address (1 host up) scanned in 6.39 seconds
这表明scanme.nmap.org
已打开TCP端口22,80和9929。我的ISP阻止出站端口25,135,139和445以防止垃圾邮件和Windows蠕虫(并且如果我想运行邮件服务器,则强迫我支付商业级服务)。其他所有都可以在某个时刻打开(Not shown: 993 closed ports
)。
您可以使用其他扫描类型进一步枚举防火墙规则(-sA
将端口标记为unfiltered
或filtered
)或脚本(firewalk
将显示哪些端口被阻止你的路径上的IP跳跃。)
请注意,有时防火墙会欺骗目标的回复,从而导致closed
判决。在这种情况下,您有时可以看到响应TTL值的差异(在Nmap的XML输出中可用,在其文本输出中使用--reason
选项在将来的版本中可用);闭合响应中较高的TTL意味着它来自的防火墙比目标更接近您。