精华内容
参与话题
问答
  • 网络扫描工具

    2018-11-23 10:08:55
    一键扫描局域网内在线主机的IP,最多可扫描3级路由,支持本机多网卡。
  • 网络漏洞扫描工具

    热门讨论 2012-02-28 16:12:50
    网络安全体系的建设中,安全扫描工具花费低、效果好、见效快、与网络的运行相对对立、安装运行简单,可以大规模减少安全管理员的手工劳动,有利于保持全网安全政策的统一和稳定。 扫描器并不是一个直接的攻击...
  • 快速自动化:PRONETA自动扫描PROFINET网络和所有连接组件,生成拓扑概况。实际安装拓扑和参考对象之间的对比非常便捷。 快速可靠的测试:想要测试工厂线路和组件模块配置时,PRONETA可确保分布式I/O组件及其传感器和...
  • 网络端口扫描工具

    2017-06-29 15:06:40
    网络端口扫描工具,用于扫描出指定公网ip下所有的开放的端口
  • 网络摄像头扫描工具

    2018-01-15 10:47:17
    搜索方便,操作简单,支持全球大部分设备。带你随心所欲的打开全球视觉(有病毒,请酌情下载)
  • 集成多种扫描功能于一身,ARP欺骗,端口扫描,存活主机扫描
  • 网络扫描工具nmap

    2020-08-09 15:18:56
    nmap一般就用来扫描主机是否在线(特别是扫描局域网内存活的机器)、开放了哪些端口。其他的功能用的比较少,做渗透的人可能要了解的多些。 1.1 选项说明 nmap需要自行安装。 shell> yum -y install nmap 使用nmap ...

    nmap一般就用来扫描主机是否在线(特别是扫描局域网内存活的机器)、开放了哪些端口。其他的功能用的比较少,做渗透的人可能要了解的多些。

    1.1 选项说明

    nmap需要自行安装。

    shell> yum -y install nmap

    使用nmap -h可以查看选项和用法。选项非常多,这是功能强大的工具带来的必然结果,但简单使用并用不到几个选项。

    Usage: nmap [Scan Type(s)] [Options] {target specification}

    TARGET SPECIFICATION:

    Can pass hostnames, IP addresses, networks, etc.

    Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254

    -iL : Input from list of hosts/networks

    -iR : Choose random targets

    –exclude <host1[,host2][,host3],…>: Exclude hosts/networks

    –excludefile <exclude_file>: Exclude list from file

    HOST DISCOVERY:

    -sL: List Scan - simply list targets to scan

    -sn: Ping Scan - disable port scan

    -Pn: Treat all hosts as online – skip host discovery

    -PS/PA/PU/PY[portlist]: TCP SYN/ACK, UDP or SCTP discovery to given ports

    -PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes

    -PO[protocol list]: IP Protocol Ping

    -PR: ARP ping - does not need HW address -> IP translation

    -n/-R: Never do DNS resolution/Always resolve [default: sometimes]

    –dns-servers <serv1[,serv2],…>: Specify custom DNS servers

    –system-dns: Use OS’s DNS resolver

    –traceroute: Trace hop path to each host

    SCAN TECHNIQUES:

    -sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans
    -sU: UDP Scan

    -sN/sF/sX: TCP Null, FIN, and Xmas scans

    –scanflags : Customize TCP scan flags

    -sI <zombie host[:probeport]>: Idle scan

    -sY/sZ: SCTP INIT/COOKIE-ECHO scans

    -sO: IP protocol scan

    -b : FTP bounce scan

    PORT SPECIFICATION AND SCAN ORDER:

    -p : Only scan specified ports
    Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9

    -F: Fast mode - Scan fewer ports than the default scan

    -r: Scan ports consecutively - don’t randomize

    –top-ports : Scan most common ports

    –port-ratio : Scan ports more common than

    SERVICE/VERSION DETECTION:

    -sV: Probe open ports to determine service/version info

    -sR: Check what service uses opened ports using RPC scan

    –version-intensity : Set from 0 (light) to 9 (try all probes)

    –version-light: Limit to most likely probes (intensity 2)

    –version-all: Try every single probe (intensity 9)

    –version-trace: Show detailed version scan activity (for debugging)

    SCRIPT SCAN:

    -sC: equivalent to --script=default

    –script=: is a comma separated list of directories, script-files or script-categories

    –script-args=<n1=v1,[n2=v2,…]>: provide arguments to scripts

    –script-trace: Show all data sent and received

    –script-updatedb: Update the script database.

    OS DETECTION:

    -O: Enable OS detection

    –osscan-limit: Limit OS detection to promising targets

    –osscan-guess: Guess OS more aggressively

    TIMING AND PERFORMANCE:

    Options which take

    ‘s’ (seconds), ‘m’ (minutes), or ‘h’ (hours) to the value (e.g. 30m).

    -T<0-5>: Set timing template (higher is faster)

    –min-hostgroup/max-hostgroup : Parallel host scan group sizes
    –min-parallelism/max-parallelism : Probe parallelization

    –min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout

      probe round trip time.
    

    –max-retries : Caps number of port scan probe retransmissions.

    –host-timeout

    –scan-delay/–max-scan-delay

    –min-rate : Send packets no slower than per second

    –max-rate : Send packets no faster than per second

    FIREWALL/IDS EVASION AND SPOOFING:

    -f; --mtu : fragment packets (optionally w/given MTU)

    -D <decoy1,decoy2[,ME],…>: Cloak a scan with decoys

    -S <IP_Address>: Spoof source address

    -e : Use specified interface

    -g/–source-port : Use given port number

    –data-length : Append random data to sent packets

    –ip-options : Send packets with specified ip options

    –ttl : Set IP time-to-live field

    –spoof-mac <mac address/prefix/vendor name>: Spoof your MAC address

    –badsum: Send packets with a bogus TCP/UDP/SCTP checksum

    OUTPUT:

    -oN/-oX/-oS/-oG : Output scan in normal, XML, s|<rIpt kIddi3,
    and Grepable format, respectively, to the given filename.

    -oA : Output in the three major formats at once

    -v: Increase verbosity level (use -vv or more for greater effect)

    -d: Increase debugging level (use -dd or more for greater effect)

    –reason: Display the reason a port is in a particular state

    –open: Only show open (or possibly open) ports

    –packet-trace: Show all packets sent and received

    –iflist: Print host interfaces and routes (for debugging)

    –log-errors: Log errors/warnings to the normal-format output file

    –append-output: Append to rather than clobber specified output files

    –resume : Resume an aborted scan

    –stylesheet <path/URL>: XSL stylesheet to transform XML output to HTML

    –webxml: Reference stylesheet from Nmap.Org for more portable XML

    –no-stylesheet: Prevent associating of XSL stylesheet w/XML output

    MISC:

    -6: Enable IPv6 scanning

    -A: Enable OS detection, version detection, script scanning, and traceroute

    –datadir : Specify custom Nmap data file location

    –send-eth/–send-ip: Send using raw ethernet frames or IP packets

    –privileged: Assume that the user is fully privileged

    –unprivileged: Assume the user lacks raw socket privileges

    -V: Print version number

    -h: Print this help summary page.

    EXAMPLES:

    nmap -v -A scanme.nmap.org

    nmap -v -sn 192.168.0.0/16 10.0.0.0/8

    nmap -v -iR 10000 -Pn -p 80

    常用的就上面标红的几个。下面是解释:

    -iL :从输入文件中读取主机或者IP列表作为探测目标
    -sn: PING扫描,但是禁止端口扫描。默认总是会扫描端口。禁用端口扫描可以加速扫描主机
    -n/-R: 永远不要/总是进行DNS解析,默认情况下有时会解析
    -PE/PP/PM:分别是基于echo/timestamp/netmask的ICMP探测报文方式。使用echo最快
    -sS/sT/sA/sW:TCP SYN/Connect()/ACK/Window,其中sT扫描表示TCP扫描
    -sU:UDP扫描
    -sO:IP扫描
    -p : 指定扫描端口
    –min-hostgroup/max-hostgroup : 对目标主机进行分组然后组之间并行扫描
    –min-parallelism/max-parallelism : 设置并行扫描的探针数量
    -oN/-oX/ : 输出扫描结果到普通文件或XML文件中。输入到XML文件中的结果是格式化的结果
    -v:显示详细信息,使用-vv或者更多的v显示更详细的信息

    1.2 尝试一次扫描

    nmap扫描一般会比较慢,特别是扫描非本机的时候。

    [root@server2 ~]# nmap 127.0.0.1

    Starting Nmap 6.40 ( http://nmap.org ) at 2017-06-20 13:03 CST Nmap
    scan report for localhost (127.0.0.1) Host is up (0.0000010s latency).
    Not shown: 998 closed ports PORT STATE SERVICE 22/tcp open ssh
    25/tcp open smtp

    只扫描出了两个端口,但是不代表真的只开了两个端口,这样不加任何参数的nmap将自动决定扫描1000个高危端口,但哪些是高危端口由nmap决定。从结果中也能看出来,"NOT shown:998 closed ports"表示998个关闭的端口未显示出来,随后又显示了2个open端口,正好1000个。虽说默认只扫描1000个,但常见的端口都能扫描出来。

    从虚拟机扫描win主机看看。可以感受到,扫描速度明显降低了。

    [root@server2 ~]# nmap 192.168.0.122 Starting Nmap 6.40 (
    http://nmap.org ) at 2017-06-20 13:11 CST Nmap scan report for
    192.168.0.122 Host is up (1.2s latency). Not shown: 990 closed ports PORT STATE SERVICE 21/tcp open ftp 135/tcp open
    msrpc 139/tcp open netbios-ssn 443/tcp open https 445/tcp
    open microsoft-ds 514/tcp filtered shell 902/tcp open
    iss-realsecure 912/tcp open apex-mesh 1583/tcp open
    simbaexpress 5357/tcp open wsdapi Nmap done: 1 IP address (1
    host up) scanned in 8.38 seconds

    可以指定"-p [1-65535]“来扫描所有端口,或者使用”-p-"选项也是全面扫描。

    [root@xuexi ~]# nmap -p- 127.0.0.1

    nmap默认总是会扫描端口,可以使用-sn选项禁止扫描端口,以加速扫描主机是否存活。

    1.3 扫描目标说明

    Nmap支持CIDR风格的地址,Nmap将会扫描所有和该参考IP地址具有相同cidr位数的所有IP地址或主机。

    例如192.168.10.0/24将扫描192.168.10.0和192.168.10.255之间的256台主机,192.168.10.40/24会做同样的事情。假设主机scanme.nmap.org的IP地址是205.217.153.62,scanme.nmap.org/16将扫描205.217.0.0和205.217.255.255之间的65536个IP地址。掩码位所允许的最小值是/1,这将会扫描半个互联网,最大值是/32,这将会扫描该主机或IP地址,因为所有主机位都固定了。

    CIDR标志位很简洁但有时候不够灵活。例如也许想要扫描192.168.0.0/16,但略过任何以".0"或者".255"结束的IP地址,因为它们通常是网段地址或广播地址。可以用逗号分开的数字或范围列表为IP地址指定它的范围。例如"192.168.0-255.1-254"将略过该范围内以".0"和".255"结束的地址。范围不必限于最后的8位:"0-255.0-255.13.37"将在整个互联网范围内扫描所有以"13.37"结束的地址。

    Nmap命令行接受多个主机说明,它们不必是相同类型。如:

    nmap www.hostname.com 192.168.0.0/8 10.0.0,1,3-7.0-255

    虽然目标通常在命令行指定,下列选项也可用来控制目标的选择:

    • -iL (从列表中输入) 从中读取目标说明。在命令行输入一堆主机名显得很笨拙,然而经常需要这样。例如DHCP服务器可能导出10000个当前租约列表。列表中的项可以是Nmap在命令行上接受的任何格式(IP地址,主机名,CIDR,IPv6,或者八位字节范围)。每一项必须以一个或多个空格、制表符或换行符分开。如果希望Nmap从标准输入读取列表,则使用"-"作为表示/dev/stdin。
    • –exclude <host1[,host2][,host3],…> (排除主机/网络)
    • –excludefile (排除文件中的列表),这和–exclude的功能一样,只是所排除的目标是用提供的。

    1.3.1 范围扫描示例

    指定一个IP地址然后加一个CIDR的掩码位,如192.168.100.22/24,当然写成192.168.100.0/24也是一样的,因为nmap需要的是参考IP。如果扫描的是范围地址,可以192.168.100.1-254这样的书写方式。

    [root@xuexi ~]# nmap 192.168.100.1/24
     
    Starting Nmap 6.40 ( http://nmap.org ) at 2017-06-20 13:22 CST
    Nmap scan report for 192.168.100.1
    Host is up (0.00053s latency).
    Not shown: 992 filtered ports
    PORT     STATE SERVICE
    21/tcp   open  ftp
    135/tcp  open  msrpc
    139/tcp  open  netbios-ssn
    443/tcp  open  https
    445/tcp  open  microsoft-ds
    902/tcp  open  iss-realsecure
    912/tcp  open  apex-mesh
    5357/tcp open  wsdapi
    MAC Address: 00:50:56:C0:00:08 (VMware)
     
    Nmap scan report for 192.168.100.2
    Host is up (0.000018s latency).
    Not shown: 999 closed ports
    PORT   STATE SERVICE
    53/tcp open  domain
    MAC Address: 00:50:56:E2:16:04 (VMware)
    
    Nmap scan report for 192.168.100.70
    Host is up (0.00014s latency).
    Not shown: 999 closed ports
    PORT   STATE SERVICE
    22/tcp open  ssh
    MAC Address: 00:0C:29:71:81:64 (VMware)
    
    Nmap scan report for 192.168.100.254
    Host is up (0.000095s latency).
    All 1000 scanned ports on 192.168.100.254 are filtered
    MAC Address: 00:50:56:ED:A1:04 (VMware)
    
    Nmap scan report for 192.168.100.62
    Host is up (0.0000030s latency).
    Not shown: 999 closed ports
    PORT   STATE SERVICE
    22/tcp open  ssh
    
    Nmap done: 256 IP addresses (5 hosts up) scanned in 7.96 seconds
    

    一般来说,端口全部关闭的很可能不是计算机,而可能是路由器、虚拟网卡等设备。

    1.4 端口状态说明

    Nmap功能越来越多,但它赖以成名的是它的核心功能——端口扫描。

    Nmap把端口分成六个状态:open(开放的),closed(关闭的),filtered(被过滤的),unfiltered(未被过滤的),open|filtered(开放或者被过滤的),或者closed|filtered(关闭或者被过滤的)。

    这些状态并非端口本身的性质,而是描述Nmap怎样看待它们。例如,对于同样的目标机器的135/tcp端口,从同网络扫描显示它是开放的,而跨网络做完全相同的扫描则可能显示它是filtered(被过滤的)。

    • 1.open:(开放的)用程序正在该端口接收TCP或者UDP报文。它常常是端口扫描的主要目标。
    • 2.closed:(关闭的)关闭的端口对于Nmap也是可访问的(它接受Nmap的探测报文并作出响应),但没有应用程序在其上监听
    • 3.filtered:(被过滤的)由于目标上设置了包过滤(如防火墙设备),使得探测报文被阻止到达端口,Nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由器规则或者主机上的软件防火墙。
    • 4.unfiltered:(未被过滤的)未被过滤状态意味着端口可访问,但Nmap不能确定它是开放还是关闭。用其它类型的扫描如窗口扫描、SYN扫描、FIN扫描来扫描这些未被过滤的端口可以帮助确定端口是否开放。
    • 5.open|filtered:(开放或被过滤的):当无法确定端口是开放还是被过滤的,Nmap就把该端口划分成这种状态。开放的端口不响应就是一个例子。没有响应也可能意味着目标主机上报文过滤器丢弃了探测报文或者它引发的任何响应。因此Nmap无法确定该端口是开放的还是被过滤的。
    • 6.closed|filtered:(关闭或被过滤的)该状态用于Nmap不能确定端口是关闭的还是被过滤的。它只可能出现在IPID Idle扫描中。

    1.5 时间参数优化

    改善扫描时间的技术有:忽略非关键的检测、升级最新版本的Nmap(文档中说nmap版本越高性能越好)等。此外,优化时间参数也会带来实质性的优化,这些参数如下:

    TIMING AND PERFORMANCE:

    -T<0-5>: Set timing template (higher is faster)
    –min-hostgroup/max-hostgroup : Parallel host scan group sizes
    –min-parallelism/max-parallelism : Probe parallelization

    –min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout

    –max-retries : Caps number of port scan probe retransmissions.

    –host-timeout

    –scan-delay/–max-scan-delay

    –min-rate : Send packets no slower than per second

    –max-rate : Send packets no faster than per second

    其中最主要的是前3种:

    1.-T<0-5>:这表示直接使用namp提供的扫描模板,不同的模板适用于不同的环境下,默认的模板为"-T 3",具体的看man文档,其实用的很少。
    2.–min-hostgroup ; --max-hostgroup (调整并行扫描组的大小)

    Nmap具有并行扫描多主机端口的能力,实现方法是将所有给定的目标IP按空间分成组,然后一次扫描一个组。通常组分的越大效率越高,但分组的缺点是只有当整个组扫描结束后才会返回该组中主机扫描结果。例如,组的大小定义为50,则只有前50个主机扫描结束后才能得到这50个IP内的结果。

    默认方式下,Nmap采取折衷的方法。开始扫描时的组较小,默认值为5,这样便于尽快产生结果,随后增长组的大小,默认最大为1024。但最小和最大确切的值则依赖于所给定的选项。

    –max-hostgroup选项用于说明使用最大的组,Nmap不会超出这个大小。–min-hostgroup选项说明最小的组,Nmap会保持组大于这个值。如果在指定的接口上没有足够的目标主机来满足所指定的最小值,Nmap可能会采用比所指定的值小的组。

    这些选项的主要用途是说明一个最小组的大小,使得整个扫描更加快速。通常选择256来扫描C类网段,对于端口数较多的扫描,超出该值没有意义,因为它只是分组了,但是cpu资源是有限的。对于端口数较少的扫描,2048或更大的组大小是有帮助的。

    3.–min-parallelism ; --max-parallelism (调整探测报文的并行度,即探针数)

    这些选项用于控制主机组的探测报文数量,可用于端口扫描和主机发现。默认状态下,Nmap基于网络性能计算一个理想的并行度,这个值经常改变。如果报文被丢弃,Nmap降低速度,探测报文数量减少。随着网络性能的改善,理想的探测报文数量会缓慢增加。默认状态下,当网络不可靠时,理想的并行度值可能为1,在好的条件下,可能会增长至几百。

    最常见的应用是–min-parallelism值大于1,以加快性能不佳的主机或网络的扫描。这个选项具有风险,如果过高则影响准确度,同时也会降低Nmap基于网络条件动态控制并行度的能力。

    一般说来,这个值要设置的和–min-hostgroup的值相等或大于它性能才会提升。

    1.6 扫描操作系统类型

    扫描操作系统。操作系统的扫描有可能会出现误报。

    C:\Windows\system32>nmap -O 127.0.0.1
    Starting Nmap 7.40 (https://nmap.org ) at 2017-03-09 13:18 CST
    Nmap scan report for lmlicenses.wip4.adobe.com (127.0.0.1)
    Host is up (0.000046s latency).
    Not shown: 990 closed ports
    PORT STATE SERVICE
    21/tcp open ftp
    135/tcp open msrpc
    443/tcp open https 4
    45/tcp open microsoft-ds
    902/tcp open iss-realsecure
    912/tcp open apex-mesh
    5357/tcp open wsdapi
    5678/tcp open rrac
    10000/tcp open snet-sensor-mgmt
    65000/tcp open unknown
    Device type: general purpose
    Running: Microsoft Windows 10
    OS CPE: cpe:/o:microsoft:windows_10
    OS details: Microsoft Windows 10 1511
    Network Distance: 0 hops
    OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
    Nmap done: 1 IP address (1 host up) scanned in 2.33 seconds

    1.7 快速扫描存活的主机

    要快速扫描存活的主机,需要使用的几个重要选项是:

    • -n:永远不要DNS解析。这个不管是给定地址扫描还是给定网址扫描,加上它速度都会极速提升

    • -sn:禁止端口扫描

    • -PE:只根据echo回显判断主机在线,这种类型的选项使用越多,速度越慢,如-PM -PP选项都是类似的,但他们速度要慢的多的多,PE有个缺点,不能穿透防火墙

    • –min-hostgroup N:当IP太多时,nmap需要分组,然后并扫描,使用该选项可以指定多少个IP一组

    • –min-parallelism N:这个参数非常关键,为了充分利用系统和网络资源,设置好合理的探针数。一般来说,设置的越大速度越快,且和min-hostgroup的值相等或大于它性能才会提升

    示例一:扫描192.168.100.0/24网段存活的机器

    [root@server2 ~]# nmap -sn -n -PE --min-hostgroup 1024 --min-parallelism 1024 192.168.100.1/24
    
    Warning: You specified a highly aggressive --min-hostgroup.
    Warning: Your --min-parallelism option is pretty high!  This can hurt reliability.
    
    Starting Nmap 6.40 ( http://nmap.org ) at 2017-06-20 14:30 CST
    Nmap scan report for 192.168.100.1
    Host is up (0.00036s latency).
    MAC Address: 00:50:56:C0:00:08 (VMware)
    Nmap scan report for 192.168.100.2
    Host is up (0.000051s latency).
    MAC Address: 00:50:56:E2:16:04 (VMware)
    Nmap scan report for 192.168.100.70
    Host is up (0.000060s latency).
    MAC Address: 00:0C:29:71:81:64 (VMware)
    Nmap scan report for 192.168.100.254
    Host is up (0.000069s latency).
    MAC Address: 00:50:56:ED:A1:04 (VMware)
    Nmap scan report for 192.168.100.62
    Host is up.
    Nmap done: 256 IP addresses (5 hosts up) scanned in 0.26 seconds
    

    255个局域网地址只用了半秒钟。可谓是极速。

    再测试扫描下以www.baidu.com作为参考地址的地址空间。

    [root@server2 ~]# nmap -sn -PE -n --min-hostgroup 1024 --min-parallelism 1024 -oX nmap_output.xml www.baidu.com/16
    
    …….省略部分结果
    
    Nmap scan report for 163.177.81.145
    Host is up (0.072s latency).
    Nmap done: 65536 IP addresses (144 hosts up) scanned in 19.15 seconds
    

    1.8 快速扫描端口

    既然是扫描端口,就不能使用-sn选项,也不能使用-PE,否则不会返回端口状态,只会返回哪些主机。

    [root@server2 ~]# nmap -n -p 20-2000 --min-hostgroup 1024 --min-parallelism 1024 192.168.100.70/24
    
    Warning: You specified a highly aggressive --min-hostgroup.
    Warning: Your --min-parallelism option is pretty high!  This can hurt reliability.
    
    Starting Nmap 6.40 ( http://nmap.org ) at 2017-06-20 14:52 CST
    Nmap scan report for 192.168.100.1
    Host is up (0.00084s latency).
    Not shown: 1980 filtered ports
    PORT   STATE SERVICE
    21/tcp open  ftp
    MAC Address: 00:50:56:C0:00:08 (VMware)
    
    Nmap scan report for 192.168.100.2
    Host is up (0.000018s latency).
    Not shown: 1980 closed ports
    PORT   STATE SERVICE
    53/tcp open  domain
    MAC Address: 00:50:56:E2:16:04 (VMware)
     
    Nmap scan report for 192.168.100.70
    Host is up (0.000041s latency).
    Not shown: 1980 closed ports
    PORT   STATE SERVICE
    22/tcp open  ssh
    MAC Address: 00:0C:29:71:81:64 (VMware)
    
    Nmap scan report for 192.168.100.254
    Host is up (0.000035s latency).
    All 1981 scanned ports on 192.168.100.254 are filtered
    MAC Address: 00:50:56:ED:A1:04 (VMware)
    
    Nmap scan report for 192.168.100.62
    Host is up (0.0000020s latency).
    Not shown: 1980 closed ports
    PORT   STATE SERVICE
    22/tcp open  ssh
    
    Nmap done: 256 IP addresses (5 hosts up) scanned in 2.38 seconds
    

    转载出处:https://www.cnblogs.com/f-ck-need-u/p/7064323.html

    展开全文
  • 网络扫描工具学习

    2019-09-27 02:39:07
    内容提要: 一、主机扫描 二、路由扫描 三、批量服务扫描 四、linux下防范恶意扫描安全策略 ...保障数据在网络的真实、...主要通过网络扫描、踩点、系统服务扫描等手段。 一、主机扫描 1、主机扫描命令fpin...

    内容提要:

    一、主机扫描

    二、路由扫描

    三、批量服务扫描

    四、linux下防范恶意扫描安全策略

     

    背景:

    Q:什么事互联网安全?

    保障数据在网络的真实、可靠、完整、可控性传输和存储。

     Q:什么是网络安全技术?

    安全技术是一种手段,通过网络的入侵来达到窃取敏感信息的目的

    主要通过网络扫描、踩点、系统服务扫描等手段。

     

    一、主机扫描

    1、主机扫描命令fping

    Linux下有很多强大网络扫描工具,网络扫描工具可以分为:主机扫描、主机服务扫描、路由扫描等。

    fping是一个主机扫描工具,相比于ping工具可以批量扫描主机。

    fping官方网站:http://fping.org/

    作用:批量给目标主机发送ping请求,测试主机的存活情况

    特点并行发送、结果易读

    fping的安装之源码安装

    访问fping的官方网站,获取源代码地址:

    编译源码包的一般过程:

    编译及安装命令:

    1 [root@mail /]#wget http://fping.org/dist/fping-3.10.tar.gz
    2 [root@mail /]#tar -xvf fping-3.10.tar.gz
    3 [root@mail /]#cd fping
    4 [root@mail /fping/]#./configure
    5 [root@mail /fping/]#make
    6 [root@mail /fping/]#make install

    通过以上命令,fping就安装到了/usr/local/sbin/fping。

    fping常用参数介绍


    一、命令参数man,-h获取帮助信息

    前者为获取详细帮助文档,而后者为获取简单的使用说明,根据需要进行选择

    二、参数介绍

     -a 只显示存活的主机(与-u参数含义相反)

    1、通过标准输入方式fping +IP1+IP2

    -g 支持主机段的方式192.168.1.1 192.168.1.255(192.168.1.0/24)

    2、通过一个文件读取IP地址内容

    fpig -f filename

     

     

    2、主机扫描工具hping

    特点:支持使用TCP/IP数据包组装、分析工具

    官方站点:http://www.hping.org/

     

    hping的安装之源码安装

    1、下载并解压源代码

    1 [root@yujd /]# wget https://github.com/antirez/hping/archive/master.zip
    2 [root@yujd /]ls
    3 [root@yujd /]file master
    4 [root@yujd /]unzip master

     

    2、安装依赖

    [root@yujd /]#apt-get install libpcap-devel

     


    libpcap-devel安装之rpm包安装方式

    rpm查找下载网站:rpmfind.net

     

    查找并下载libpcap-devel-1.0.0-6.20091201git117cb5.e16.x86_84.rpm

    安装rpm包:

    1 [root@yujd /]#rpm -ivfh libpcap-devel-1.0.0-6.20091201git117cb5.e16.x86_84.rpm
    2 [root@yujd /]#./hping3 -v
    3 [root@yujd /]#make install

     

    如果之前安装过会报错,解决方法是:

    Hping常用参数:

    一、对特定的TCP端口发起探测

    -p 设置端口

    -S 设置TCPSYN包

    二、伪造来源IP,模拟DDos攻击

    -a 伪造IP地址

     

    查看本机TCP连接状态

    [root@yujd /]#netstat -ltn

     

     

     

     

    二、路由扫描

    作用:查询一个主机到另一个主机经过的路由跳数、及数据延迟情况。

    常用工具:traceroute、mtr

    mtr特点:能测试出主机到每一个路由器间的连通性

    1、路由扫描工具之traceroute

    原理简介:

    1 [root@yujd /]#apt-get install traceroute

     

     

    traceroute参数介绍

    1、默认使用的是UDP协议(30000以上的端口)

    2、使用TCP协议 -T -p

    3、使用ICMP协议 -I

    应用案例1

    应用案例2

     

    2、路由扫描工具之mtr

    软件简介

    Mtr是 Linux中有一个非常棒的网络连通性判断工具,它结合了ping,traceroute,nslookup 的相关特性。非常好用的一个工具。

    一般在windows 来判断网络连通性用ping 和tracert,ping的话可以来判断丢包率,tracert可以用来跟踪路由,在Linux中有一个更好的网络连通性判断工具,它可以结合ping nslookup tracert 来判断网络的相关特性,这个命令就是mtr。

    mtr在某些方面比traceroute更好用,它可以实时显示经过的每一跳路由的信息,并不断进行探测。

    traceroute默认使用UDP数据包探测,而mtr默认使用ICMP报文探测,ICMP在某些路由节点的优先级要比其他数据包低,所以测试得到的数据可能低于实际情况。

    实现原理

    Mtr combines the functionality of the traceroute and ping programs in a single network diagnostic tool.

    As mtr starts, it investigates the network connection between the host mtr runs on and HOSTNAME. by sending packets with purposely low TTLs. It continues to send packets with low TTL, noting the response time  of the  intervening  routers.   This allows mtr to print the response per-centage and response times of the internet route to HOSTNAME.A sudden increase in packet  loss or response time is often an indication of a bad (or simply overloaded) link.

    The results are usually reported as round-trip-response times in miliseconds and the percentage of packet loss.

     

    软件安装

    apt-get install mtr –y[yum install mtr -y]

    当前版本:

    mtr 0.85

    使用说明

    各主要参数解释如下:
    --report 追踪结果以报告模式输出
    --report-cycles=COUNT 定义追踪的次数,默认为16
    --raw 使结果以原始格式输出
    --split 将每次追踪的结果分别列出来,不像--report一样,统计整个结果
    --no-dns 只显示ip地址,不解析ip地址对应的主机名 --psize=bytes/-s bytes 定义数据包的大小,单位是字节

     

    示例:

    mtr –o “LSD NBAW” 8.8.8.8

     

     

    参数说明

    1、用来指定ICMP数据包的大小为BYTES

    mtr –s BYTES

    2、指定发送数据包的个数为COUNT,默认每秒发送1个

    mtr –c COUNT

    3、不对IP地址做域名解析

    mtr –n no-dns

    3、使用这个参数来设置ICMP发送间隔,默认是1秒

    mtr –i SECONDS

     

    案例一:mtr可以做路由图供我们分析哪里出现故障或者是否存在有网络拥塞的情况

    在实时监测中,如果发现丢失率和时延的陡增说明网络环境的急剧恶化。

      

    案例二:使用命令测试到google DNS的连通性

    说明:

    第一列:显示的是IP地址和本机域名,

    第二列:snt:10 设置每秒发送数据包的数量,默认值是10 可以通过参数 -c来指定。其中-c的说明是:–report-cycles COUNT

    第三列:是显示的每个对应IP的丢包率

    第四列:显示的最近一次的返回时延

    第五列:是平均值 这个应该是发送ping包的平均时延

    第六列:是最好或者说时延最短的

    第七列:是最差或者说时延最长的

    第八列:是标准偏差

     

    案例二:发送5个包,生成报告

    mtr --report –c 5 –n 192.168.1.114

     

    案例三:生成测试报告

    测试1:使用ICMP

    使用默认的ICMP ECHO,发现到达第五个路由的时候,ICMP全部挂了……

    测试2:使用UDP

    改用UDP方式,就可以直达到百度主的IP:119.75.218.70

    换一个京东试试看:

    依然能够完美运行,只不过这次经过的路由器跳数多了一点。

    测试3:使用TCP

    先测试百度,效果很UDP的方式相差无几。这里需要注意到的是,这里使用的是TCP发送的SYN包,里面不包含有任何的数据。

    最后,再次测试一下京东,同样是经过17跳才到达,在不可识别的IP位置包几乎全部丢失了……

    案例四:使用图形管理工具实时监测:

    mtr 8.8.8.8

    在图形化用户管理窗口中,Hostname可以设置主机IP,选择框可以设置发送的时间间隔,进而可以实时的查看网络包的发送情况。

     

    三、批量主机服务扫描

    目的:

    1、批量主机存活扫描

    2、针对主机服务扫描

    作用:

    1、能更加方便快捷地获取网络中主机的存活情况

    2、更加细致、智能获取主机服务侦查情况

    典型命令:nmap、ncat

    1、批量主机服务扫描命令之nmap

    安装:获取rpm:

    1 [root@yujd /]#nmap -sP 192.168.1.0/24
    2 [root@yujd /]#netstat -ltpn //探测本地主机的TCP端口使用情况 
    3 [root@yujd /]#nmap -sS 192.168.1.114 //探测远程的某台主机的TCP端口使用情况,默认是1024以下端口以及以上的部分常用端口,如HTTP 8000 
    4 [root@yujd /]#nmap -sS -p 0-30000 192.168.1.114
    5 [root@yujd /]#nmap -sT -p 0-30000 192.168.1.114 
    6 [root@yujd /]#nmap -sU 192.168.1.114

     

     

    2、批量主机服务扫描命令之ncat

    组合参数:

    -w 设置超时时间

    -z 一个输入输出模式

    -v 显示命令的详细执行过程

     

    预防策略

    常见攻击方式:

      1、SYN攻击

      2、DDOS攻击

      3、恶意扫描

     

    1、SYN攻击介绍

    TCP三次握手

     

    SYN攻击原理

     

    SYN攻击基本原理:
    伪造源IP hping -h
    目标机器将一直往backlog里面添加记录

    导致出现的问题:

    1、backlog队列溢出
    2、目的主机一直处于回包等待的状态,系统资源耗尽,系统导致无法响应正常请求,造成延机
    3、网络带宽跑满

    解决问题的基本思路:

    1、适当增加backlog队列的长度——默认512,设置到2048
    2、将目标机器重试的次数减少——默认为5
    3、不进行第三次握手,直接进行数据通信——SYN cookie ,利用一些Hash的算法,不再进行等待了

     

     

     

     

    转载于:https://www.cnblogs.com/lou424/p/4754433.html

    展开全文
  • 网络扫描工具zmap

    2020-10-19 15:02:14
    在千兆网卡状态下,45分钟内扫描网络IPv4地址。主要参数 -p, --target-port=port:指定扫描的目标端口 -o, --output-file=name:把结果写入指定文件 -b, --blacklist-file=path:IP地址黑名单 -n, --max-targets=n...

    Zmap是美国密歇根大学研究者开发出一款工具。在第22届USENIX安全研讨会,以超过nmap 1300倍的扫描速度声名鹊起。相比大名鼎鼎的nmap全网扫描速度是他最大的亮点。在千兆网卡状态下,45分钟内扫描全网络IPv4地址。

    主要参数

    -p, --target-port=port:指定扫描的目标端口
    -o, --output-file=name:把结果写入指定文件
    -b, --blacklist-file=path :IP地址黑名单
    -n, --max-targets=n            
    最大扫描IP地址数量,-n 100 表示总归扫描100个ip地址。也可指定 –n 0.1%形式,表示扫描除去黑名单列表里面全网段的0.1%数量的IP地址。
    -N, --max-results=n:最大扫描到结果的IP数量,-N 100 表示扫描到100个存在的结果就停止。
    -t, --max-runtime=secs:最大扫描时间,-t 10 表示程序运行10s结束。
    -r, --rate=pps:设置每秒发送包的数量 –r 10000 表示每秒发送10k个包。
    -B, --bandwidth=bps:设置每秒发送包的大小,-B 10M 表示每秒发送10Mbps 支持单位(GMK)。
    -c, --cooldown-time=secs:设置数据包发送完之后多长时间开始接受数据(response),默认8s,TCP连接异步接受。
    -e, --seed=n:设置扫描随机地址的顺序,C语言中的伪随机种子,指定 定值每次随机扫描的IP地址顺序是一样。
    -T, --sender-threads=n:设置扫描线程。默认是1,经测试单线程基本是把网络带宽充分利用。
    -P, --probes=n:设置往每个IP发送包的数量,默认为1。(DDOS的参数之一)。
    -d, --dryrun:打印出每个包的内容,非常实用的功能。
    -s, --source-port=port|range:设置扫描的源端口,可指定范围 –s 30000-50000。(DDOS的参数之一)。
    -S, --source-ip=ip|range:设置扫描的源IP地址,可指定范围-S 100.100.0.1-200.200.200.200(DDOS的参数之一)。
    -G, --gateway-mac=addr:设置网关的mac地址,可伪造。(DDOS的参数之一)
    -M, --probe-module=name
    设置扫描模式,参数tcp_synscan(默认),icmp_echoscan(ping扫描),udp(测试速度要逊于前两个),这里可自定义自己的模块,ZMAP作者后续会增加例如自定义UDP payload 的选项。

     

    在执行TCP SYN扫描时,ZMap需要指定一个目标端口,也支持指定发起扫描的源端口范围。

    -p, --target-port=port

    扫描的TCP端口(例如 443)

    -s, --source-port=port|range

    发送扫描数据包的源端口(例如 40000-50000)

    警示! ZMap基于Linux内核使用RST包来应答SYN/ACK包响应,以关闭扫描器打开的连接。ZMap是在Ethernet层完成包的发送的,这样做是为了减少跟踪打开的TCP连接和路由寻路带来的内核开销。因此,如果您有跟踪连接建立的防火墙规则,如类似于-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT的netfilter规则,将阻止SYN/ACK包到达内核。这不会妨碍到ZMap记录应答,但它会阻止RST包被送回,最终被扫描主机的连接会一直打开,直到超时后断开。我们强烈建议您在执行ZMap时,选择一组主机上未使用且防火墙允许访问的端口,加在-s后(如 -s '50000-60000' )。

     

    ZMap还额外支持UDP探测,它会发出任意UDP数据报给每个主机,并接收UDP或ICMP不可达的应答。ZMap可以通过使用--probe-args命令行选项来设置四种不同的UDP载荷。这些是:可在命令行设置可打印的ASCII 码的‘text’载荷和十六进制载荷的‘hex’,外部文件中包含载荷的‘file’,和通过动态字段生成的载荷的‘template’。为了得到UDP响应,请使用-f参数确保您指定的“data”字段处于输出范围。

    下面的例子将发送两个字节'ST',即PCAnwywhere的'status'请求,到UDP端口5632。

    zmap -M udp -p 5632 --probe-args=text:ST -N 100 -f saddr,data -o -

    下面的例子将发送字节“0X02”,即SQL Server的'client broadcast'请求,到UDP端口1434。

    zmap -M udp -p 1434 --probe-args=hex:02 -N 100 -f saddr,data -o -

    下面的例子将发送一个NetBIOS状态请求到UDP端口137。使用一个ZMap自带的载荷文件。

    zmap -M udp -p 1434 --probe-args=file:netbios_137.pkt -N 100 -f saddr,data -o -

    下面的例子将发送SIP的'OPTIONS'请求到UDP端口5060。使用附ZMap自带的模板文件。

    zmap -M udp -p 1434 --probe-args=file:sip_options.tpl -N 100 -f saddr,data -o -

    UDP载荷模板仍处于实验阶段。当您在更多的使用一个以上的发送线程(-T)时可能会遇到崩溃和一个明显的相比静态载荷性能降低的表现。模板仅仅是一个由一个或多个使用${}将字段说明封装成序列构成的载荷文件。某些协议,特别是SIP,需要载荷来反射包中的源和目的包。其他协议,如portmapper和DNS,每个请求包含的字段应该是随机的,或降低被Zamp扫描的多宿主系统的风险。

    以下的载荷模板将发送SIP OPTIONS请求到每一个目的地:

    1. OPTIONS sip:${RAND_ALPHA=8}@${DADDR} SIP/2.0
    2. Via: SIP/2.0/UDP ${SADDR}:${SPORT};branch=${RAND_ALPHA=6}.${RAND_DIGIT=10};rport;alias
    3. From: sip:${RAND_ALPHA=8}@${SADDR}:${SPORT};tag=${RAND_DIGIT=8}
    4. To: sip:${RAND_ALPHA=8}@${DADDR}
    5. Call-ID: ${RAND_DIGIT=10}@${SADDR}
    6. CSeq: 1 OPTIONS
    7. Contact: sip:${RAND_ALPHA=8}@${SADDR}:${SPORT}
    8. Content-Length: 0
    9. Max-Forwards: 20
    10. User-Agent: ${RAND_ALPHA=8}
    11. Accept: text/plain

    就像在上面的例子中展示的那样,注意每行行末以\r\n结尾,请求以\r\n\r\n结尾,大多数SIP实现都可以正确处理它。一个可以工作的例子放在ZMap的examples/udp-payloads目录下 (sip_options.tpl).

    当前实现了下面的模板字段:

    • SADDR: 源IP地址的点分十进制格式
    • SADDR_N: 源IP地址的网络字节序格式
    • DADDR: 目的IP地址的点分十进制格式
    • DADDR_N: 目的IP地址的网络字节序格式
    • SPORT: 源端口的ascii格式
    • SPORT_N: 源端口的网络字节序格式
    • DPORT: 目的端口的ascii格式
    • DPORT_N: 目的端口的网络字节序格式
    • RAND_BYTE: 随机字节(0-255),长度由=(length) 参数决定
    • RAND_DIGIT: 随机数字0-9,长度由=(length) 参数决定
    • RAND_ALPHA: 随机大写字母A-Z,长度由=(length) 参数决定
    • RAND_ALPHANUM: 随机大写字母A-Z和随机数字0-9,长度由=(length) 参数决定

     

    ZMap支持使用配置文件来代替在命令行上指定所有要求的选项。配置中可以通过每行指定一个长名称的选项和对应的值来创建:

    interface "eth1"

    source-ip 1.1.1.4-1.1.1.8

    gateway-mac b4:23:f9:28:fa:2d # upstream gateway

    cooldown-time 300 # seconds

    blacklist-file /etc/zmap/blacklist.conf

    output-file ~/zmap-output

    quiet

    summary

     

    然后ZMap就可以按照配置文件并指定一些必要的附加参数运行了:

    zmap --config=~/.zmap.conf --target-port=443

     

    ZMap可以在屏幕上生成多种类型的输出。默认情况下,Zmap将每隔1秒打印出相似的基本进度信息。可以通过设置--quiet来禁用。

    0:01 12%; send: 10000 done (15.1 Kp/s avg); recv: 144 143 p/s (141 p/s avg); hits: 1.44%

     

    ZMap同样也可以根据扫描配置打印如下消息,可以通过'--verbosity`参数加以控制。

    Aug 11 16:16:12.813 [INFO] zmap: started

    Aug 11 16:16:12.817 [DEBUG] zmap: no interface provided. will use eth0

    Aug 11 16:17:03.971 [DEBUG] cyclic: primitive root: 3489180582

    Aug 11 16:17:03.971 [DEBUG] cyclic: starting point: 46588

    Aug 11 16:17:03.975 [DEBUG] blacklist: 3717595507 addresses allowed to be scanned

    Aug 11 16:17:03.975 [DEBUG] send: will send from 1 address on 28233 source ports

    Aug 11 16:17:03.975 [DEBUG] send: using bandwidth 10000000 bits/s, rate set to 14880 pkt/s

    Aug 11 16:17:03.985 [DEBUG] recv: thread started

     

    ZMap还支持在扫描之后打印出一个的可grep的汇总信息,类似于下面这样,可以通过调用--summary来实现。

    cnf target-port 443

    cnf source-port-range-begin 32768

    cnf source-port-range-end 61000

    cnf source-addr-range-begin 1.1.1.4

    cnf source-addr-range-end 1.1.1.8

    cnf maximum-packets 4294967295

    cnf maximum-runtime 0

    cnf permutation-seed 0

    cnf cooldown-period 300

    cnf send-interface eth1

    cnf rate 45000

    env nprocessors 16

    exc send-start-time Fri Jan 18 01:47:35 2013

    exc send-end-time Sat Jan 19 00:47:07 2013

    exc recv-start-time Fri Jan 18 01:47:35 2013

    exc recv-end-time Sat Jan 19 00:52:07 2013

    exc sent 3722335150

    exc blacklisted 572632145

    exc first-scanned 1318129262

    exc hit-rate 0.874102

    exc synack-received-unique 32537000

    exc synack-received-total 36689941

    exc synack-cooldown-received-unique 193

    exc synack-cooldown-received-total 1543

    exc rst-received-unique 141901021

    exc rst-received-total 166779002

    adv source-port-secret 37952

    adv permutation-gen 4215763218

     

    结果输出

    ZMap可以通过输出模块生成不同格式的结果。默认情况下,ZMap只支持csv的输出,但是可以通过编译支持redisjson 。可以使用输出过滤来过滤这些发送到输出模块上的结果。输出模块输出的字段由用户指定。默认情况如果没有指定输出文件,ZMap将以csv格式返回结果,而不会生成特定结果。也可以编写自己的输出模块;请参阅编写输出模块

    -o, --output-file=p

    输出写入文件地址

    -O, --output-module=p

    调用自定义输出模块

    -f, --output-fields=p

    以逗号分隔的输出的字段列表

    --output-filter=filter

    对给定的探测指定字段输出过滤

    --list-output-modules

    列出可用输出模块

    --list-output-fields

    列出给定的探测的可用输出字段

    输出字段

    除了IP地址之外,ZMap有很多字段。这些字段可以通过在给定探测模块上运行--list-output-fields来查看。

    zmap --probe-module="tcp_synscan" --list-output-fields

    saddr string: 应答包中的源IP地址

    saddr-raw int: 网络字节格式的源IP地址

    daddr string: 应答包中的目的IP地址

    daddr-raw int: 网络字节格式的目的IP地址

    ipid int: 应答包中的IP识别号

    ttl int: 应答包中的ttl(存活时间)值

    sport int: TCP 源端口

    dport int: TCP 目的端口

    seqnum int: TCP 序列号

    acknum int: TCP Ack号

    window int: TCP 窗口

    classification string: 包类型

    success int: 是应答包成功

    repeat int: 是否是来自主机的重复响应

    cooldown int: 是否是在冷却时间内收到的响应

    timestamp-str string: 响应抵达时的时间戳使用ISO8601格式

    timestamp-ts int: 响应抵达时的时间戳使用UNIX纪元开始的秒数

    timestamp-us int: 时间戳的微秒部分(例如 从'timestamp-ts'的几微秒)

     

    可以通过使用--output-fields=fields-f来选择选择输出字段,任意组合的输出字段可以被指定为逗号分隔的列表。例如:

    zmap -p 80 -f "response,saddr,daddr,sport,seq,ack,in_cooldown,is_repeat,timestamp" -o output.csv

    过滤输出

    在传到输出模块之前,探测模块生成的结果可以先过滤。过滤是针对探测模块的输出字段的。过滤使用类似于SQL的简单过滤语法写成,通过ZMap的--output-filter选项来指定。输出过滤通常用于过滤掉重复的结果,或仅传输成功的响应到输出模块。

    过滤表达式的形式为<字段名> <操作符> <值><值>的类型必须是一个字符串或一串无符号整数并且匹配<字段名>类型。对于整数比较有效的操作符是= !=, <, >, <=, >=。字符串比较的操作是=,!=。--list-output-fields可以打印那些可供探测模块选择的字段和类型,然后退出。

    复合型的过滤操作,可以通过使用&&(逻辑与)和||(逻辑或)这样的运算符来组合出特殊的过滤操作。

    示例

    书写一则过滤仅显示成功的、不重复的应答

    --output-filter="success = 1 && repeat = 0"

    过滤出RST分类并且TTL大于10的包,或者SYNACK分类的包

    --output-filter="(classification = rst && ttl > 10) || classification = synack"

     

    CSV

    csv模块将会生成以逗号分隔各个要求输出的字段的文件。例如,以下的指令将生成名为output.csv的CSV文件。

    zmap -p 80 -f "response,saddr,daddr,sport,seq,ack,in_cooldown,is_repeat,timestamp" -o output.csv

     

    #响应, 源地址, 目的地址, 源端口, 目的端口, 序列号, 应答, 是否是冷却模式, 是否重复, 时间戳

    response, saddr, daddr, sport, dport, seq, ack, in_cooldown, is_repeat, timestamp

    synack, 159.174.153.144, 10.0.0.9, 80, 40555, 3050964427, 3515084203, 0, 0,2013-08-15 18:55:47.681

    rst, 141.209.175.1, 10.0.0.9, 80, 40136, 0, 3272553764, 0, 0,2013-08-15 18:55:47.683

    rst, 72.36.213.231, 10.0.0.9, 80, 56642, 0, 2037447916, 0, 0,2013-08-15 18:55:47.691

    rst, 148.8.49.150, 10.0.0.9, 80, 41672, 0, 1135824975, 0, 0,2013-08-15 18:55:47.692

    rst, 50.165.166.206, 10.0.0.9, 80, 38858, 0, 535206863, 0, 0,2013-08-15 18:55:47.694

    rst, 65.55.203.135, 10.0.0.9, 80, 50008, 0, 4071709905, 0, 0,2013-08-15 18:55:47.700

    synack, 50.57.166.186, 10.0.0.9, 80, 60650, 2813653162, 993314545, 0, 0,2013-08-15 18:55:47.704

    synack, 152.75.208.114, 10.0.0.9, 80, 52498, 460383682, 4040786862, 0, 0,2013-08-15 18:55:47.707

    synack, 23.72.138.74, 10.0.0.9, 80, 33480, 810393698, 486476355, 0, 0,2013-08-15 18:55:47.710

     

    Redis

    Redis的输出模块允许地址被添加到一个Redis的队列,而不是保存到文件,允许ZMap将它与之后的处理工具结合使用。

    注意! ZMap默认不会编译Redis功能。如果你从源码构建ZMap,可以在CMake的时候加上-DWITH_REDIS=ON来增加Redis支持。

    JSON

    JSON输出模块用起来类似于CSV模块,只是以JSON格式写入到文件。JSON文件能轻松地导入到其它可以读取JSON的程序中。

    注意!,ZMap默认不会编译JSON功能。如果你从源码构建ZMap,可以在CMake的时候加上-DWITH_JSON=ON来增加JSON支持。

     

    黑名单和白名单

    ZMap同时支持对网络前缀做黑名单和白名单。如果ZMap不加黑名单和白名单参数,他将会扫描所有的IPv4地址(包括本地的,保留的以及组播地址)。如果指定了黑名单文件,那么在黑名单中的网络前缀将不再扫描;如果指定了白名单文件,只有那些网络前缀在白名单内的才会扫描。白名单和黑名单文件可以协同使用;黑名单优先于白名单(例如:如果您在白名单中指定了10.0.0.0/8并在黑名单中指定了10.1.0.0/16,那么10.1.0.0/16将不会扫描)。白名单和黑名单文件可以在命令行中指定,如下所示:

    -b, --blacklist-file=path

    文件用于记录黑名单子网,以CIDR(无类域间路由)的表示法,例如192.168.0.0/16

    -w, --whitelist-file=path

    文件用于记录限制扫描的子网,以CIDR的表示法,例如192.168.0.0/16

    黑名单文件的每行都需要以CIDR的表示格式书写,一行单一的网络前缀。允许使用#加以备注。例如:

    # IANA(英特网编号管理局)记录的用于特殊目的的IPv4地址

    # http://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml

    # 更新于2013-05-22

    0.0.0.0/8 # RFC1122: 网络中的所有主机

    10.0.0.0/8 # RFC1918: 私有地址

    100.64.0.0/10 # RFC6598: 共享地址空间

    127.0.0.0/8 # RFC1122: 回环地址

    169.254.0.0/16 # RFC3927: 本地链路地址

    172.16.0.0/12 # RFC1918: 私有地址

    192.0.0.0/24 # RFC6890: IETF协议预留

    192.0.2.0/24 # RFC5737: 测试地址1

    192.88.99.0/24 # RFC3068: IPv6转换到IPv4的任播

    192.168.0.0/16 # RFC1918: 私有地址

    192.18.0.0/15 # RFC2544: 检测地址

    198.51.100.0/24 # RFC5737: 测试地址2

    203.0.113.0/24 # RFC5737: 测试地址3

    240.0.0.0/4 # RFC1112: 预留地址

    255.255.255.255/32 # RFC0919: 限制广播地址

     

    # IANA记录的用于组播的地址空间

    # http://www.iana.org/assignments/multicast-addresses/multicast-addresses.xhtml

    # 更新于2013-06-25

     

    224.0.0.0/4 # RFC5771: 组播/预留地址ed

    如果您只是想扫描因特网中随机的一部分地址,使用抽样检出,来代替使用白名单和黑名单。

    注意!ZMap默认设置使用/etc/zmap/blacklist.conf作为黑名单文件,其中包含有本地的地址空间和预留的IP空间。通过编辑/etc/zmap/zmap.conf可以改变默认的配置。

    速度限制与抽样

    默认情况下,ZMap将以您当前网卡所能支持的最快速度扫描。以我们对于常用硬件的经验,这通常是理论上Gbit以太网速度的95-98%,这可能比您的上游提供商可处理的速度还要快。ZMap是不会自动的根据您的上游提供商来调整发送速率的。您可能需要手动的调整发送速率来减少丢包和错误结果。

    -r, --rate=pps

    设置最大发送速率以包/秒为单位

    -B, --bandwidth=bps

    设置发送速率以比特/秒(支持G,M和K后缀)。这会覆盖--rate参数。

    ZMap同样支持对IPv4地址空间进行指定最大目标数和/或最长运行时间的随机采样。由于每次对主机的扫描是通过随机排序生成的,限制扫描的主机个数为N就会随机抽选N个主机。命令选项如下:

    -n, --max-targets=n

    探测目标上限数量

    -N, --max-results=n

    结果上限数量(累积收到这么多结果后退出)

    -t, --max-runtime=s

    发送数据包时间长度上限(以秒为单位)

    -s, --seed=n

    种子用以选择地址的排列方式。使用不同ZMap执行扫描操作时将种子设成相同的值可以保证相同的扫描顺序。

    举个例子,如果您想要多次扫描同样的一百万个互联网主机,您可以设定排序种子和扫描主机的上限数量,大致如下所示:

    zmap -p 443 -s 3 -n 1000000 -o results

    为了确定哪一百万主机将要被扫描,您可以执行预扫,只打印数据包而非发送,并非真的实施扫描。

    zmap -p 443 -s 3 -n 1000000 --dryrun | grep daddr

    | awk -F'daddr: ' '{print $2}' | sed 's/ |.*//;'

    发送多个数据包

    ZMap支持向每个主机发送多个探测。增加这个数量既增加了扫描时间又增加了到达的主机数量。然而,我们发现,增加的扫描时间(每个额外扫描的增加近100%)远远大于到达的主机数量(每个额外扫描的增加近1%)。

    -P, --probes=n

    向每个IP发出的独立探测个数(默认值=1)

    示例应用

    ZMap专为向大量主机发起连接并寻找那些正确响应而设计。然而,我们意识到许多用户需要执行一些后续处理,如执行应用程序级别的握手。例如,用户在80端口实施TCP SYN扫描也许想要实施一个简单的GET请求,还有用户扫描443端口可能希望完成TLS握手。

    Banner获取

    我们收录了一个示例程序,banner-grab,伴随ZMap使用可以让用户从监听状态的TCP服务器上接收到消息。Banner-grab连接到提供的服务器上,发送一个可选的消息,然后打印出收到的第一个消息。这个工具可以用来获取banner,例如HTTP服务的回复的具体指令,telnet登陆提示,或SSH服务的字符串。

    下面的例子寻找了1000个监听80端口的服务器,并向每个发送一个简单的GET请求,存储他们的64位编码响应至http-banners.out

    zmap -p 80 -N 1000 -B 10M -o - | ./banner-grab-tcp -p 80 -c 500 -d ./http-req > out

    如果想知道更多使用banner-grab的细节,可以参考examples/banner-grab中的README文件。

    注意! ZMap和banner-grab(如例子中)同时运行可能会比较显著的影响对方的表现和精度。确保不让ZMap占满banner-grab-tcp的并发连接,不然banner-grab将会落后于标准输入的读入,导致阻塞ZMap的输出写入。我们推荐使用较慢扫描速率的ZMap,同时提升banner-grab-tcp的并发性至3000以内(注意 并发连接>1000需要您使用ulimit -SHn 100000ulimit -HHn 100000来增加每个进程的最大文件描述符数量)。当然,这些参数取决于您服务器的性能、连接成功率(hit-rate);我们鼓励开发者在运行大型扫描之前先进行小样本的试验。

    建立套接字

    我们也收录了另一种形式的banner-grab,就是forge-socket, 重复利用服务器发出的SYN-ACK,连接并最终取得banner。在banner-grab-tcp中,ZMap向每个服务器发送一个SYN,并监听服务器发回的带有SYN+ACK的应答。运行ZMap主机的内核接受应答后发送RST,这样就没有与该包关联活动连接。程序banner-grab必须在这之后创建一个新的TCP连接到从服务器获取数据。

    在forge-socket中,我们利用内核中同名的模块,使我们可以创建任意参数的TCP连接。可以通过抑制内核的RST包,并重用SYN+ACK的参数取代该包而创建套接字,通过这个套接字收发数据和我们平时使用的连接套接字并没有什么不同。

    要使用forge-socket,您需要forge-socket内核模块,从github上可以获得。您需要git clone git@github.com:ewust/forge_socket.git至ZMap源码根目录,然后cd进入forge_socket目录,运行make。以root身份运行insmod forge_socket.ko 来安装该内核模块。

    您也需要告知内核不要发送RST包。一个简单的在全系统禁用RST包的方法是使用iptables。以root身份运行iptables -A OUTPUT -p tcp -m tcp --tcp-flgas RST,RST RST,RST -j DROP即可,当然您也可以加上一项--dport X将禁用局限于所扫描的端口(X)上。扫描完成后移除这项设置,以root身份运行iptables -D OUTPUT -p tcp -m tcp --tcp-flags RST,RST RST,RST -j DROP即可。

    现在应该可以建立forge-socket的ZMap示例程序了。运行需要使用extended_fileZMap输出模块

    zmap -p 80 -N 1000 -B 10M -O extended_file -o - | \

    ./forge-socket -c 500 -d ./http-req > ./http-banners.out

    详细内容可以参考examples/forge-socket目录下的README。

     

    编写探测和输出模块

    ZMap可以通过探测模块来扩展支持不同类型的扫描,通过输出模块增加不同类型的输出结果。注册过的探测和输出模块可以在命令行中列出:

    --list-probe-modules

    列出安装过的探测模块

    --list-output-modules

    列出安装过的输出模块

    输出模块

    ZMap的输出和输出后处理可以通过实现和注册扫描器的输出模块来扩展。输出模块在接收每一个应答包时都会收到一个回调。然而默认提供的模块仅提供简单的输出,这些模块同样支持更多的输出后处理(例如:重复跟踪或输出AS号码来代替IP地址)。

    通过定义一个新的output_module结构来创建输出模块,并在output_modules.c中注册:

    typedef struct output_module {

    const char *name; // 在命令行如何引用输出模块

    unsigned update_interval; // 以秒为单位的更新间隔

     

    output_init_cb init; // 在扫描器初始化的时候调用

    output_update_cb start; // 在扫描器开始的时候调用

    output_update_cb update; // 每次更新间隔调用,秒为单位

    output_update_cb close; // 扫描终止后调用

    output_packet_cb process_ip; // 接收到应答时调用

    const char *helptext; // 会在--list-output-modules时打印在屏幕上

    } output_module_t;

    输出模块必须有名称,通过名称可以在命令行调用,并且通常会实现success_ip和常见的other_ip回调。process_ip的回调由每个收到并经由probe module过滤的应答包调用。应答是否被认定为成功并不确定(比如,它可以是一个TCP的RST)。这些回调必须定义匹配output_packet_cb定义的函数:

    int (*output_packet_cb) 

    ipaddr_n_t saddr, // 网络字节格式的发起扫描主机IP地址

    ipaddr_n_t daddr, // 网络字节格式的目的IP地址

    const char* response_type, // 发送模块的数据包分类

    int is_repeat, // {0: 主机的第一个应答, 1: 后续的应答}

    int in_cooldown, // {0: 非冷却状态, 1: 扫描器处于冷却中}

    const u_char* packet, // 指向IP包的iphdr结构体的指针

    size_t packet_len // 包的长度,以字节为单位

    );

    输出模块还可以通过注册回调,执行在扫描初始化的时候(诸如打开输出文件的任务)、在扫描开始阶段(诸如记录黑名单的任务)、在扫描的常规间隔(诸如状态更新的任务)、在关闭的时候(诸如关掉所有打开的文件描述符)。提供的这些回调可以完整的访问扫描配置和当前状态:

    int (*output_update_cb)(struct state_conf*, struct state_send*, struct state_recv*);

    这些定义在output_modules.h中。在src/outputmodules/modulecsv.c中有可用示例。

    探测模块

    数据包由探测模块构造,它可以创建各种包和不同类型的响应。ZMap默认拥有两个扫描模块:tcp_synscanicmp_echoscan。默认情况下,ZMap使用tcp_synscan来发送TCP SYN包并对每个主机的响应分类,如打开时(收到SYN+ACK)或关闭时(收到RST)。ZMap允许开发者编写自己的ZMap探测模块,使用如下的API:

    任何类型的扫描都必须通过开发和注册send_module_t结构中的回调来实现:

    typedef struct probe_module {

    const char *name; // 如何在命令行调用扫描

    size_t packet_length; // 探测包有多长(必须是静态的)

     

    const char *pcap_filter; // 对收到的响应实施PCAP过滤

    size_t pcap_snaplen; // libpcap 捕获的最大字节数

    uint8_t port_args; // 设为1,如果ZMap需要用户指定--target-port

     

    probe_global_init_cb global_initialize; // 在扫描初始化会时被调用一次

    probe_thread_init_cb thread_initialize; // 每个包缓存区的线程中被调用一次

    probe_make_packet_cb make_packet; // 每个主机更新包的时候被调用一次

    probe_validate_packet_cb validate_packet; // 每收到一个包被调用一次,

    // 如果包无效返回0,

    // 非零则有效。

    probe_print_packet_cb print_packet; // 如果在预扫模式下被每个包都调用

    probe_classify_packet_cb process_packet; // 由区分响应的接收器调用

    probe_close_cb close; // 扫描终止后被调用

    fielddef_t *fields // 该模块指定的字段的定义

    int numfields // 字段的数量

    } probe_module_t;

     

    在扫描操作初始化时会调用一次global_initialize,可以用来实施一些必要的全局配置和初始化操作。然而,global_initialize并不能访问包缓冲区,那里是线程特定的。代替的,thread_initialize在每个发送线程初始化的时候被调用,提供对于缓冲区的访问,可以用来构建探测包和全局的源和目的值。此回调应用于构建主机不可知的包结构,甚至只有特定值(如:目的主机和校验和),需要随着每个主机更新。例如,以太网头部信息在交换时不会变更(减去校验和是由NIC硬件计算的)因此可以事先定义以减少扫描时间开销。

    调用回调参数make_packet是为了让被扫描的主机允许探测模块更新主机指定的值,同时提供IP地址、一个非透明的验证字符串和探测数目(如下所示)。探测模块负责在探测中放置尽可能多的验证字符串,即便当服务器返回的应答为空时,探测模块也能验证它的当前状态。例如,针对TCP SYN扫描,tcp_synscan探测模块会使用TCP源端口和序列号的格式存储验证字符串。响应包(SYN+ACK)将包含目的端口和确认号的预期值。

    1. int make_packet(
    2. void *packetbuf, // 包的缓冲区
    3. ipaddr_n_t src_ip, // 网络字节格式源IP
    4. ipaddr_n_t dst_ip, // 网络字节格式目的IP
    5. uint32_t *validation, // 探测中的有效字符串
    6. int probe_num // 如果向每个主机发送多重探测,
    7. // 该值为我们对于该主机
    8. // 正在发送的探测数目
    9. );

    扫描模块也应该定义pcap_filtervalidate_packetprocess_packet。只有符合PCAP过滤器的包才会被扫描。举个例子,在一个TCP SYN扫描的情况下,我们只想要调查TCP SYN / ACK或RST TCP数据包,并利用类似tcp && tcp[13] & 4 != 0 || tcp[13] == 18的过滤方法。validate_packet函数将会被每个满足PCAP过滤条件的包调用。如果验证返回的值非零,将会调用process_packet函数,并使用fields定义的字段和包中的数据填充字段集。举个例子,如下代码为TCP synscan探测模块处理了一个数据包。

    1. void synscan_process_packet(const u_char *packet, uint32_t len, fieldset_t *fs)
    2. {
    3. struct iphdr *ip_hdr = (struct iphdr *)&packet[sizeof(struct ethhdr)];
    4. struct tcphdr *tcp = (struct tcphdr*)((char *)ip_hdr
    5. + (sizeof(struct iphdr)));
    6.  
    7. fs_add_uint64(fs, "sport", (uint64_t) ntohs(tcp->source));
    8. fs_add_uint64(fs, "dport", (uint64_t) ntohs(tcp->dest));
    9. fs_add_uint64(fs, "seqnum", (uint64_t) ntohl(tcp->seq));
    10. fs_add_uint64(fs, "acknum", (uint64_t) ntohl(tcp->ack_seq));
    11. fs_add_uint64(fs, "window", (uint64_t) ntohs(tcp->window));
    12.  
    13. if (tcp->rst) { // RST packet
    14. fs_add_string(fs, "classification", (char*) "rst", 0);
    15. fs_add_uint64(fs, "success", 0);
    16. } else { // SYNACK packet
    17. fs_add_string(fs, "classification", (char*) "synack", 0);
    18. fs_add_uint64(fs, "success", 1);
    19. }
    20. }​​​​​​​

    -O, --output-module=name:设置结果输出模块,参数simple_file(默认),extended_file。
    --quiet:安静状态下运行,不把进度信息打印到屏幕上
    --summary:输出结果汇总,对研究人员来说 非常有帮助。
     

    展开全文
  • 该工具为网络端口扫描工具,可扫描对应ip下开放的端口,需要在python环境运行,具体操作方式在文件中。
  • 网络工具中一个工具。网络扫描工具X-Way V2.5高级扫描器
  • TCP、UDP端口及ICMP网络扫描工具

    热门讨论 2011-09-13 17:18:03
    基于vc6.0开发网络扫描工具,利用select+connect进行TCP端口扫描,利用ICMP端口不可达报文进行UDP端口扫描,可以完成对TCP、UDP端口的探测,ICMP你懂的。利用GetBestRoute和GetIpAddrTable来判定使用本地接口IP,不...
  • 网络安全扫描工具

    千次阅读 2019-01-04 14:32:27
    包括子域名枚举、数据库漏洞扫描、弱口令或信息泄漏扫描、端口扫描、指纹识别以及其他大型扫描器或模块化扫描器,同时该仓库只收录各位网友自己编写的一般性开源扫描器,类似awvs、nmap、w3af等知名扫描工具不收录。...

    项目简介

    Scanners Box是一个集合github平台上的安全行业从业者自研开源扫描器的仓库,包括子域名枚举、数据库漏洞扫描、弱口令或信息泄漏扫描、端口扫描、指纹识别以及其他大型扫描器或模块化扫描器,同时该仓库只收录各位网友自己编写的一般性开源扫描器,类似awvs、nmap、w3af等知名扫描工具不收录


    子域名枚举扫描器或爆破工具

    数据库类漏洞扫描器或爆破工具

    弱口令/弱用户名扫描器或爆破工具

    物联网设备识别工具或扫描器

    反射型或DOM-Based XSS扫描器

    企业资产管理或信息泄露搜集工具

    webshell检测或木马分析工具

    内网渗透或扫描工具

    中间件扫描器或指纹识别工具

    专用(即特定性针对某些组件)扫描器

    无线网络(审计)扫描器

    局域网络(本地网络)扫描器

    代码审计工具或扫描器

    模块化设计扫描器或漏洞检测框架

    高级持续性威胁(APT)相关工具

    工控安全相关工具


    收集目的

    本仓库收集的初衷是为向各类企业安全从业人员提供在企业信息安全防护体系建设过程中可以参考的开源安全扫描工具,以期望企业能够利用这些扫描器对自身业务进行自检,从而提高自身业务安全性

    维护成员

    Wester(sina weibo @Wester的小号) && Martin(sina weibo @Mart1n_ZHOU)

    符号说明

    [↑] 表示 更新扫描器描述
    [+] 表示 添加扫描器
    [-] 表示 移除扫描器
    [move] 表示 修改扫描器分类
    [ac] 表示 添加某人至致谢榜
    [other] 表示 其他操作

    免责说明

    请勿用于非法的用途,否则造成的严重后果与本项目无关。

    如何参与?

    非常欢迎大家一起来参与贡献,如果你有关于此项目的新想法或者发现了有价值的扫描器,可以新建一个issue,经过维护成员确认之后,便会将您的名字添加到致谢榜上

    版权

    转载请注明来自https://github.com/We5ter/Scanners-Box ,同时也请不要通过二次发表此文章谋取不正当的利益(如原创投稿)

    致谢

    • @0c0c0f
    • @藏形匿影(挖财网)
    • @Mottoin团队
    • @BlackHole
    • @CodeColorist
    • @3xp10it
    • @re4lity
    • @s0md3v
    • @boy-hack
    • @marsII
    • @tom0li

    ©Sixtant Security Lab 2016-2017

    展开全文
  • windows下网络端口扫描工具,方便易用,快速扫描出当前被占用的端口号
  • 在局网中搜索并协助你安装网络打印机。搜索当前网段,搜索指定网段,搜索指定ip。如果你有打印机驱动程序,还能帮你安装好网络打印机。用au3写的,个人版杀软会报毒,但其实无毒。
  • 网络攻防之——常用网络扫描工具

    万次阅读 2017-03-18 20:50:42
    netenum工具:一个很好用的IP段生成工具。可以用来查看有哪些主机在线(这个工具的第二个功能的查询结果不是特别准确,...nbtscan 工具:作用,扫描内网,使用示例如下图 ARPing工具:探测MAC地址(借助ARP协议) N
  • 简单,方便的端口扫描工具,好用,功能较强。只需设置IP段,及端口名,扫描,可以看到开发的端口和IP。
  • 此软件是本人汉化的,最先在吾爱破解论坛发布的! 网络扫描工具 功能不止只是扫描路由器的 还有很多跟网络有关系的东西都可以扫描的!比如监控等 哈哈
  • 网络扫描集成工具SPARTA

    千次阅读 2017-05-08 11:16:26
    网络扫描集成工具SPARTA
  • 黑客网络安全扫描工具

    万次阅读 2018-07-30 20:48:47
    包括子域名枚举、数据库漏洞扫描、弱口令或信息泄漏扫描、端口扫描、指纹识别以及其他大型扫描器或模块化扫描器,同时该仓库只收录各位网友自己编写的一般性开源扫描器,类似awvs、nmap、w3af等知名扫描工具不收录。...
  • 网络扫描工具nc&nmap

    千次阅读 2015-07-22 15:35:00
    功能说明:功能强大的网络工具 语 法:nc [-hlnruz][-g][-G][-i][-o][-p][-s][-v...][-w][主机名称][通信端口...] 参 数:  -g 设置路由器跃程通信网关,最丢哦可设置8个。  -G 设置来源路由指向器,其数
  • 网络扫描工具NMAP的安装

    千次阅读 2016-08-23 10:37:54
    NMap,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包。 1、NMap的安装: 由于我自己虚拟机里安装的kali里自带的nmap,所以我给大家写一写windows下nmap的安装 安装地址:...

空空如也

1 2 3 4 5 ... 20
收藏数 12,606
精华内容 5,042
关键字:

网络扫描