欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

端口扫描系统实践心得

来源:本站整理 作者:佚名 时间:2019-04-19 TAG: 我要投稿

端口扫描对任何一名网络安全从业者来说都不陌生,但作为一名小白,在甲方做扫描系统时踩了不少坑,在网络上找相关资料时没有发现太多相关的文章,于是想写下这篇文章和大家分享一下代码,顺便讨教一下主机存活判断和指纹识别的问题,欢迎大佬们批评和指正。
0×00 目的
对于外网,能够监控对外开放端口情况,并及时的发现向外暴露的高危端口,以便安全人员进行响应处理。对于内网,日常 的端口扫描以及指纹识别,不仅能够帮助梳理公司资产,并且能够帮助进行后续内网的漏洞扫描。
0×01 存活主机判断
开始做端口扫描时,所考虑的第一步便是存活主机判断。最初的设想便是使用nmap的-sP参数,对IP地址进行存活判断。
代码如下:
def ip_alive_check(ip_str):
   cmd = "/usr/bin/nmap -sP "+ip_str
   output = os.popen(cmd).readlines()
   flag = False
   for line in list(output):
       if not line:
           continue
       if str(line).lower().find("1 host up") >= 0:
           flag = True
           break
   return flag
但随后便发现这个办法存在问题,引用Nmap官方文档如下:
-sP选项在默认情况下, 发送一个ICMP回声请求和一个TCP报文到80端口。
如果非特权用户执行,就发送一个SYN报文 (用connect()系统调用)到目标机的80端口。
当特权用户扫描局域网上的目标机时,会发送ARP请求(-PR), ,除非使用了–send-ip选项。
-sP选项可以和除-P0)之外的任何发现探测类型-P* 选项结合使用以达到更大的灵活性。
一旦使用了任何探测类型和端口选项,默认的探测(ACK和回应请求)就被覆盖了。
当防守严密的防火墙位于运行Nmap的源主机和目标网络之间时, 推荐使用那些高级选项。
否则,当防火墙捕获并丢弃探测包或者响应包时,一些主机就不能被探测到。
抓包如下:
局域网环境:
非root用户


nmap通过向目标IP的80端口和443端口分别发送SYN包来判断主机是否存活,由于目标主机的80和443端口均未开放,所以均返回RST包
nmap扫描结果:0 hosts up
root用户


nmap发送ARP请求并得到响应
nmap扫描结果:1 hosts up
非局域网环境:
非root用户


同样的,nmap向目标主机的80和443端口发送SYN包,通过返回的确认包得到目标主机存活。所以扫描结果为:1 hosts up。
root用户


这次,nmap不仅向目标主机的80和443端口发送了SYN包,还向目标主机发送了ICMP Echo请求以及Timestamp请求,nmap会综合这四种方式的响应情况来判断目标主机是否存活。显然这次的扫描结果为:1 hosts up。
通过对nmap -sP参数的分析便可得知,实际上对存活主机的判断并不准确。许多主机的防火墙会过滤掉ICMP包,而且80和443端口也不一定会保证对外开放。
而nmap官方文档中提到的高级选项在实际的使用中也都不能保证准确性,所以对于存活主机的判断,一直没有找到比较好的解决办法,在实际的扫描中便没有用上这一步骤,还请各路大佬指点指点有没有什么成本比较低的解决方案。
0×02 Masscan扫描端口
直接对全端口使用nmap进行扫描速度较慢,所以选择使用号称,三分钟扫遍全网的masscan。
masscan采用的是无状态的扫描技术即无需关心TCP状态,不占用系统TCP/IP协议栈资源,忘记syn,ack,fin,timewait ,不进行会话组包,而nmap则是需要记录TCP/IP的状态,并且OS能够处理的TCP/IP连接数存在上限,这就导致了nmap扫描的速度不如masscan。
代码如下:
class Masscan(object):
    def __init__(self, args):
        self.masscan_bin = config.MASSCAN_BIN            # Masscan路径 例如:/usr/bin/masscan

[1] [2] [3] [4] [5]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载