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个实战例子

  • 相关阅读:
    Scrapy 概览笔记
    Python 依赖版本控制 (requirements.txt 文件生成和使用)
    Python 虚拟空间的使用
    macOS 所有版本 JDK 安装指南 (with Homebrew)
    鉴权那些事
    Java 位运算符和 int 类型的实现
    ASP.NET Core 入门教程 5、ASP.NET Core MVC 视图传值入门
    如何做好一次知识或技术分享
    ASP.NET Core 入门教程 4、ASP.NET Core MVC控制器入门
    ASP.NET Core 入门教程 3、ASP.NET Core MVC路由入门
  • 原文地址:https://www.cnblogs.com/iiiiher/p/8527097.html
Copyright © 2011-2022 走看看