zoukankan      html  css  js  c++  java
  • [na]tcp&udp扫描原理(nmap常用10条命令)

    nmap软件使用思路及常见用法
    Nmap高级用法与典型场景

    namp -sn 4种包

    使用nmap -sn 查询网段中关注主机或者整个网段的IP存活状态

        nmap -sn
    
    nmap针对局域网和广域网(会根据源目的是否在同一网段进行判断)有两种不同的扫描方式
    当目标主机与源主机不在同一网段时:
    Nmap会发送四种不同类型的数据包来探测目标主机是否在线。
    1)  ICMP echo request
    2)  a TCP SYN packet to port 443
    3)  a TCP ACK packet to port 80
    4)  an ICMP timestamp request
    

    举例:以扫描某个公网IP为例

    端口扫描原理

    TCP SYN scanning

    这是Nmap默认的扫描方式,通常被称作半开放扫描(Half-open scanning)。该方式发送SYN到目标端口,如果收到SYN/ACK回复,那么判断端口是开放的;如果收到RST包,说明该端口是关闭的。如果没有收到回复,那么判断该端口被屏蔽(Filtered)。因为该方式仅发送SYN包对目标主机的特定端口,但不建立的完整的TCP连接,所以相对比较隐蔽,而且效率比较高,适用范围广。
    TCP SYN探测到端口关闭:

    TCP SYN探测到端口开放:

    TCP connect scanning

    TCP connect方式使用系统网络API connect向目标主机的端口发起连接,如果无法连接,说明该端口关闭。该方式扫描速度比较慢,而且由于建立完整的TCP连接会在目标机上留下记录信息,不够隐蔽。所以,TCP connect是TCP SYN无法使用才考虑选择的方式。

    TCP connect探测到端口关闭:

    TCP connect探测到端口开放:

    TCP ACK scanning

    向目标主机的端口发送ACK包,如果收到RST包,说明该端口没有被防火墙屏蔽;没有收到RST包,说明被屏蔽。该方式只能用于确定防火墙是否屏蔽某个端口,可以辅助TCP SYN的方式来判断目标主机防火墙的状况。

    TCP ACK探测到端口被屏蔽:

    TCP ACK探测到端口未被屏蔽:

    TCP FIN/Xmas/NULL scanning

    这三种扫描方式被称为秘密扫描(Stealthy Scan),因为相对比较隐蔽。FIN扫描向目标主机的端口发送的TCP FIN包或Xmas tree包/Null包,如果收到对方RST回复包,那么说明该端口是关闭的;没有收到RST包说明端口可能是开放的或被屏蔽的(open|filtered)。

    其中Xmas tree包是指flags中FIN URG PUSH被置为1的TCP包;NULL包是指所有flags都为0的TCP包。

    TCP FIN探测到主机端口是关闭的:

    TCP FIN探测到主机端口是开放或屏蔽的:

    UDP scanning

    UDP扫描方式用于判断UDP端口的情况。向目标主机的UDP端口发送探测包,如果收到回复“ICMP port unreachable”就说明该端口是关闭的;如果没有收到回复,那说明UDP端口可能是开放的或屏蔽的。因此,通过反向排除法的方式来断定哪些UDP端口是可能出于开放状态。

    UDP端口关闭:traceroute(udp+icmp)原理

    UDP端口开放或被屏蔽:

    nmap常用10条命令

    1) 获取远程主机的系统类型及开放端口

    nmap -sS -P0 -sV -O <target>
    
    这里的 < target > 可以是单一 IP, 或主机名,或域名,或子网
    
    -sS TCP SYN 扫描 (又称半开放,或隐身扫描)
    -P0 允许你关闭 ICMP pings.
    -sV 打开系统版本检测
    -O  尝试识别远程操作系统
    
    其它选项:
    -A 同时打开操作系统指纹和版本检测
    -v 详细输出扫描情况.
    
    nmap -sS -P0 -A -v < target >
    

    2) 列出开放了指定端口的主机列表

    nmap -sT -p 80 -oG – 192.168.1.* | grep open
    

    3) 在网络寻找所有在线主机

    nmap -sP 192.168.1.*
    
    或者也可用以下命令指定 subnet
    nmap -sP 192.168.1.0/24 
    

    4) Ping 指定范围内的 IP 地址

    nmap -sP 192.168.1.100-254
    

    5) 在某段子网上查找未占用的 IP

    nmap -T4 -sP 192.168.2.0/24 && egrep “00:00:00:00:00:00″ /proc/net/arp
    

    6) 在局域网上扫找 Conficker 蠕虫病毒

    nmap -PN -T4 -p139,445 -n -v –script=smb-check-vulns –script-args safe=1 192.168.1.1-254
    

    7) 扫描网络上的恶意接入点 (rogue APs).

    nmap -A -p1-85,113,443,8080-8100 -T4 –min-hostgroup 50 –max-rtt-timeout 2000 –initial-rtt-timeout 300 –max-retries 3 –host-timeout 20m –max-scan-delay 1000 -oA wapscan 10.0.0.0/8
    

    8 ) 使用诱饵扫描方法来扫描主机端口

    nmap -sS 192.168.1.10 -D 192.168.1.2
    

    9) 为一个子网列出反向 DNS 记录

    nmap -R -sL 209.85.229.99/27 | awk ‘{if($3==”not”)print”(“$2″) no PTR”;else print$3″ is “$2}’ | grep ‘(‘
    

    10) 显示网络上共有多少台 Linux 及 Win 设备?

    nmap -F -O 192.168.1.1-255 | grep “Running: ” > /tmp/os; echo “$(cat /tmp/os | grep Linux | wc -l) Linux
    device(s)”; echo “$(cat /tmp/os | grep Windows | wc -l) Window(s) device”
    

    企业面试题: 处理文件 按要求输出

    cat log.txt
    Nmap scan report for 192.168.6.251
    Host is up (0.00071s latency).
    PORT   STATE    SERVICE
    80/tcp filtered http
    
    Nmap scan report for 192.168.6.23
    Host is up (0.00071s latency).
    PORT   STATE    SERVICE
    21/tcp filtered ftp
    
    Nmap scan report for 192.168.4.24
    Host is up (0.00071s latency).
    PORT   STATE    SERVICE
    443/tcp filtered https
    
    Nmap scan report for 172.168.8.25
    Host is up (0.00071s latency).
    PORT   STATE    SERVICE
    69/udp filtered dhcp
    
    
    
    - 输出:如下格式
    192.168.6.252 80/tcp http
    192.168.6.252 21/tcp ftp
    192.168.8.25 69/udp dhcp
    ...
    
    解法: 
    
    ## 1. 先把相关的行找出来
    [root@shellLab ~]# cat log.txt|egrep 'Nmap|d+'
    Nmap scan report for 192.168.6.251
    80/tcp filtered http
    Nmap scan report for 192.168.6.23
    21/tcp filtered ftp
    Nmap scan report for 192.168.4.24
    443/tcp filtered https
    Nmap scan report for 192.168.8.25
    69/udp filtered dhcp
    
    ## 2. 单数与偶数行合并为一行
    [root@shellLab ~]# cat log.txt|egrep 'Nmap|d+'|sed '{N;s/
    / /}'
    Nmap scan report for 192.168.6.251 80/tcp filtered http
    Nmap scan report for 192.168.6.23 21/tcp filtered ftp
    Nmap scan report for 192.168.4.24 443/tcp filtered https
    Nmap scan report for 192.168.8.25 69/udp filtered dhcp
    
    ##3. awk 搞定
    [root@shellLab ~]# cat log.txt|egrep 'Nmap|d+'|sed '{N;s/
    / /}'|awk '{print $5,$6,$8}'
    192.168.6.251 80/tcp http
    192.168.6.23 21/tcp ftp
    192.168.4.24 443/tcp https
    192.168.8.25 69/udp dhcp
    

    nmap最佳实战: Namp命令的29个实战例子

  • 相关阅读:
    Turn the corner
    全排列的递归算法
    全排列的递归算法
    二分   三分搜索
    二分   三分搜索
    理解 Linux 的硬链接与软链接
    一个 Linux 上分析死锁的简单方法
    char能表示(-128~127)
    UNIX网络编程——ioctl 函数的用法详解
    UNIX网络编程——原始套接字(dos攻击)
  • 原文地址:https://www.cnblogs.com/iiiiher/p/8527097.html
Copyright © 2011-2022 走看看