首页 > 其他分享 >《Kali渗透基础》05. 主动信息收集(二)

《Kali渗透基础》05. 主动信息收集(二)

时间:2023-06-03 11:33:35浏览次数:42  
标签:1.1 05 渗透 Kali 示例 TCP zombie nmap IP

目录


本文以 kali-linux-2022.3-vmware-amd64 为例。
一些命令与工具只做简单介绍。其使用另见《安全工具录》。

1:端口扫描

意义

  • 端口对应网络服务及应用程序。
  • 服务端程序漏洞通过端口攻入。
  • 发现开放的端口,就有更具体的攻击面。

原理

UDP 端口扫描

  • UDP 是一个无连接的协议,因此 UDP 扫描需要发送探测报文并等待响应。
    假设 ICMP port-unreachable 响应代表端口关闭(可能误判)
  • 完整的 UPD 应用层请求:准确性高、耗时巨大。

TCP 端口扫描

  • 全连接扫描(TCP Connect Scan)
    扫描器尝试与目标主机的端口建立完整的TCP连接。如果连接成功建立,则说明该端口是开放的。

  • 半开放扫描(SYN 扫描,隐蔽扫描,TCP SYN Scan)
    扫描器发送一个 TCP SYN 包(同步包)到目标主机的指定端口,如果收到目标主机的 TCP SYN/ACK 包(同步/应答包),则表示该端口是开放的;如果收到目标主机的 RST 包(复位包)或没有收到任何响应,则表示该端口是关闭的。

  • 僵尸扫描(Zombie Scanning)

所有的 TCP 扫描方式都是基于三次握手的变化来判断目标端口状态。

2:UDP 扫描

发送 UDP 数据包。

  • 如果目标主机返回一个 ICMP 端口不可达的响应,表示该端口关闭或有防火墙。

2.1:Scapy

命令行输入 scapy 进入或作为 python 模块使用。

示例01:UDP 扫描:UDP_scan.py

#!/usr/bin/python

import logging
import time
import sys

from scapy.all import *
from scapy.layers.inet import IP, UDP

logging.getLogger("scapy.runtime").setLevel(logging.ERROR)

if len(sys.argv) != 4:
    print("Usage: ./UDP_scan.py <Target-IP> <First Port> <Last Port>")
    print("Example: ./UDP_scan.py 172.16.36.0 1 100")
    sys.exit()

ip = str(sys.argv[1])
start = int(sys.argv[2])
end = int(sys.argv[3])

for port in range(start, end):
    a = sr1(IP(dst=ip)/UDP(dport=port), timeout=1, verbose=0)

    time.sleep(1)

    if a == None:
         print(port)
    else:
        pass

print("END")
sys.exit()

2.2:nmap

基本语法
nmap 选项

部分选项

参数 说明
-sU UDP Scan.
-p <port ranges> Only scan specified ports.

如果不指定端口,默认扫描内置的 1000 个常用端口。

示例01

nmap -sU 1.1.1.1

示例02

nmap 1.1.1.1 -sU -p 53

示例03

nmap -iL iplist.txt -sU -p 1-200

3:半开放扫描

半开放扫描(SYN 扫描,隐蔽扫描,TCP SYN Scan)

扫描器向目标主机发送一个 SYN 数据包

  • 如果目标主机返回一个 SYN/ACK 数据包(同步/应答),表示端口是开放的,即目标主机正在监听该端口,并愿意接收连接。
  • 如果目标主机返回一个 RST(复位)数据包,表示端口是关闭的,即目标主机并未监听该端口,或者有防火墙等机制阻止了扫描器的访问。

不建立完整连接,应用日志不记录扫描行为:比较隐蔽。

3.1:Scapy

命令行输入 scapy 进入或作为 python 模块使用。

示例01:syn_scan.py。

#!/usr/bin/python

import logging
import sys

from scapy.all import *
from scapy.layers.inet import IP, TCP

logging.getLogger("scapy.runtime").setLevel(logging.ERROR)

if len(sys.argv) != 4:
    print("Usage: ./syn_scan.py <Target-IP> <First Port> <Last Port>")
    print("Example: ./syn_scan.py 172.16.36.0 1 100")
    sys.exit()

ip = str(sys.argv[1])
start = int(sys.argv[2])
end = int(sys.argv[3])

for port in range(start, end):
    a = sr1(IP(dst=ip)/TCP(dport=port), timeout=1, verbose=0)

    if a == None:
        pass
    elif int(a[TCP].flags) == 18:
        print(port)
    else:
        pass

print("END")
sys.exit()

3.2:nmap

基本语法
nmap 选项

部分选项

参数 说明
-sS/sT/sA/sW/sM TCP SYN/Connect()/ACK/Window/Maimon scans.
--open Only show open (or possibly open) ports.

示例01

nmap -sS 1.1.1.1 -p 80,21,25,110,443

示例02

nmap -sS 1.1.1.1 -p 1-65535 --open

示例03:与 示例02 一样。

nmap -sS 1.1.1.1 -p- --open

3.3:hping3

基本语法
hping3 选项

部分选项

参数 说明
-8--scan SCAN mode.
-S--syn set SYN flag.
-p--destport [+][+]port destination port(default 0) ctrl+z inc/dec.
-a--spoof spoof source address.

示例01

hping3 1.1.1.1 --scan 80,21,25,443 -S

示例02

hping3 1.1.1.1 --scan 0-65535 -S

示例03:发送10个 TCP SYN 数据包,源 IP 地址为 1.1.1.2,目标 IP 地址为 1.1.1.3,并向 1 号端口开始递增发送数据包。

hping3 -c 10 -S --spoof 1.1.1.2 -p ++1 1.1.1.3

4:全连接扫描

  • 扫描器向目标主机发送一个 SYN 数据包,如果目标主机返回一个 SYN/ACK 数据包(同步/应答),表示端口开放。
  • 然后扫描器发送一个 ACK 数据包(应答),完成三次握手过程,建立一个完全的TCP连接。
  • 建立连接后,扫描器可以选择终止连接或者发送其他命令进行进一步的探测。

4.1:Scapy

Scapy 实现全连接扫描比较困难,需要配合防火墙。

因为内核认为莫名收到的 SYN/ACK 数据包是非法包,直接发送 RST 数据包终止连接。

4.2:nmap

基本语法
nmap 选项

部分选项

参数 说明
-sS/sT/sA/sW/sM TCP SYN/Connect()/ACK/Window/Maimon scans.

示例01

nmap -sT 1.1.1.1 -p 80,21,25

示例02

nmap -sT 1.1.1.1 -p 80-2000

4.3:dmitry

Dmitry 用于网络侦察:端口扫描、服务识别等。功能简单,但使用简便。

Deepmagic Information Gathering Tool.
"There be some deep magic going on".

基本语法
dmitry 选项

部分选项

参数 说明
-p Perform a TCP port scan on a host.
-o Save output to %host.txt or to file specified by -o file

示例01

dmitry -p 172.16.36.135 -o output.txt

4.4:NetCat

基本语法
nc 选项

部分选项

参数 说明
-n numeric-only IP addresses, no DNS.
-v verbose [use twice to be more verbose].
-w secs timeout for connects and final net reads.
-z zero-I/O mode [used for scanning].

示例01

nc -nv -w 1 -z 192.168.60.4 1-100

-z:表示进行端口扫描。对指定的主机和端口范围执行零输入和零输出的扫描,以确定它们是否处于打开状态。

示例02:简单脚本,对某主机端口扫描。

for x in $(seq 20 30); do nc -nv -w 1 -z 1.1.1.1 $x; done | grep open

示例03:简单脚本,对某网段主机 80 端口扫描。

for x in $(seq 1 254); do nc -nv -w 1 -z 1.1.1.$x 80; done

5:僵尸扫描

僵尸扫描

  • 极度隐蔽
  • 可伪造源地址
  • 实施条件苛刻

这里的僵尸机不是指被控制的主机,而是网络中足够闲置的主机系统。

僵尸机要满足两个条件:

  1. 足够闲置。
  2. 系统使用递增的 IPID。

IPID(IP 标识符)是网络层协议(如IPv4)中用于标识每个数据包的唯一值。

原理如下图:

在这里插入图片描述

在这里插入图片描述

5.1:Scapy

示例01:zombie_scan.py

#!/usr/bin/python

import logging

from scapy.all import *
from scapy.layers.inet import IP, TCP

logging.getLogger("scapy.runtime").setLevel(logging.ERROR)


def zombie_scan(target, zombie):
    print("\nScanning target" + target + " with zombie " + zombie)
    print("\n-------------Open Ports on Target-------------\n")

    for port in range(1, 100):
        try:
            start_val = sr1(IP(dst=zombie)/TCP(flags="SA", dport=port), timeout=1, verbose=0)
            send(IP(src=zombie, dst=target)/TCP(flags="S", dport=port), verbose=0)
            end_val = sr1(IP(dst=zombie)/TCP(flags="SA"), timeout=1, verbose=0)

            if end_val[IP].id == (start_val[IP].id + 2):
                print(port)
        except:
            pass


def ipid(zombie):
    reply_1 = sr1(IP(dst=zombie)/TCP(flags="SA"), timeout=1, verbose=0)
    send(IP(dst=zombie)/TCP(flags="SA"), verbose=0)
    reply_2 = sr1(IP(dst=zombie)/TCP(flags="SA"), timeout=1, verbose=0)

    if reply_2[IP].id == (reply_1[IP].id + 2):
        print("IPID sequence is incremental and target appears to be idle. ZOMBIE LOCATED")
        response = input("Do you want to use this zombie to perform a scan? (y or n): ")

        if response == "y":
            target = input("Enter the IP address of the target system: ")
            zombie_scan(target, zombie)
    else:
        print("Either the IPID sequence is not incremental or the target is not idle. NOT A GOOD ZOMBIE")


print("-------------Zombie Scan Suite-------------\n")
print("1 - Identify Zombie Host")
print("2 - Perform Zombie Scan\n")

ans = input("Select an Option (1 or 2): ")

if ans == "1":
    zombie = input("Enter IP address to test IPID sequence: ")
    ipid(zombie)
elif ans == "2":
    zombie = input("Enter IP address for zombie system: ")
    target = input("Enter IP address for scan target: ")
    zombie_scan(target, zombie)

5.2:nmap

基本语法
nmap 选项

部分选项

参数 说明
--script=<Lua scripts> "Lua scripts" is a comma separated list of directories, script-files or script-categories.
-sI <zombie host[:probeport]> Idle scan.(欺骗扫描)
-Pn Treat all hosts as online -- skip host discovery.(禁用主机发现,跳过对目标主机是否在线的检测。)

可以到 /usr/share/nmap/scripts/ 目录下查看所有 nmap 脚本。

示例01

发现僵尸:

nmap -p445 172.168.2.133 --script=ipidseq.nse

ipidseq.nse 是 Nmap 的一个脚本,用于检测目标主机的 IPID 序列。

扫描目标:

nmap 172.16.36.135 -sI 172.168.2.133 -Pn -p 0-100

量大祸不在,机深祸亦深。

——《增广贤文》

标签:1.1,05,渗透,Kali,示例,TCP,zombie,nmap,IP
From: https://www.cnblogs.com/GCom/p/17453716.html

相关文章

  • NAS 5105 6005硬件配置要求和装机接线图
    欢迎选购本主板,畅网的主板!硬件选购要点:1、内存选购要求:只要是正品就一定能开机,拒绝假货与水货(开机看运气)!2、硬盘最好选择,硬盘有价数据无价!买新盘,买矿盘有风险!买垂直盘,不要买叠瓦盘!买有质保盘,不买脱保盘! 3、m.2硬盘正品就行,不挑硬盘。4、电源最好200W及以上的,特别是使用企......
  • kali使用docker时遇到的错误及解决问题
    前言最近在学习在kali用docker搭建环境,但是一开始就遇到了问题本机无法访问kali开启的docker容器问题描述物理机访问kali开启的docker容器时访问不了。在虚拟机中可以通过telnetipport的方式可以确定docker容器的端口通过虚拟机可以访问,但是在物理机中无法通过telnet测试,并......
  • [20230531]insert blob数据类型.txt
    [20230531]insertblob数据类型.txt--//链接https://connor-mcdonald.com/2023/05/29/why-i-blog/提供插入blob数据类型的简单方法,测试看看.--//正常插入要先插入一个empty_blob(),然后获得一个定位指针,使用dbms_lob.loadfromfile插入.1.环境:SCOTT@test01p>@ver1PORT_STRING......
  • 2015.4.21.09.05_多态_2015.4.21_深入理解java多态性_0.01
    深入理解Java多态性多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。多态有两种表现形式:重载和覆盖首先说重载(overload),是发生在同一类中。与什么父类......
  • 最大子矩阵和问题 动态规划 51nod1051
    1051 最大子矩阵和基准时间限制:2 秒空间限制:131072 KB分值: 40 难度:4级算法题例如:3*3的矩阵:-13-12-13-312和最大的子矩阵是:3-1-1312Input......
  • vul -- Cybero靶机渗透
    (ps:做这个靶机时参考了很多大佬的文章,有些地方属于自己抠破头破也想不到,还有这篇文件就是对自己学习的一个记录,大佬们轻点喷)信息收集先获取靶机IP,这里也可以使用arp-scan获取靶机IP 获取到靶机IP为172.16.6.207,使用nmap对靶机进行更详细的信息扫描nmap-A-p--T5172.16.6......
  • 导入keras报错Process finished with exit code -1073741819 (0xC0000005)
    1. 遇到报错问题导入keras报错Processfinishedwithexitcode-1073741819(0xC0000005) 查看chatgpt后,给出的解答如下:2.  tensorflow与keras兼容问题关于版本兼容问题,以下是chatGPT3.5给的答案,具体更多兼容版本对应关系可以查看文章末尾的链接。 3.......
  • AD8605ARTZ-REEL7 ADI芯片 电子元器件
    AD8605ARTZ-REEL7是ADI公司生产的精密运算放大器,具有以下详细参数:带宽:10MHz增益带宽积:20MHz输入偏置电流:1pA输入偏置电压:300μV输入噪声电压:8nV/√Hz输入失调电压:0.5mV输出电流:±20mA工作电压范围:2.7V至5.5V工作温度范围:-40°C至+125°C封装:SOT-23-5AD8605ARTZ......
  • CAN 总线 TJA1050/DP1050 引脚定义以及中文资料
    1简述DP1050是一款应用于CAN协议控制器和物理总线之间的接口芯片,可应用于卡车、公交、小汽车、工业控制等领域,速率可达到1Mbps,具有在总线与CAN协议控制器之间进行差分信号传输的能力,完全兼容“ISO11898”标准。DP1050芯片特点-完全兼容“ISO11898”标准;-内置过温......
  • RedisTemplate关于key出现前缀\xac\xed\x00\x05t\x00\x0f
    原因:key没有进行序列化,需要加入redis的配置进行序列化/***@Authorjohnson*@Date2023/6/2*/@ConfigurationpublicclassRedisConfig{@BeanpublicRedisTemplate<String,Object>redisTemplate(RedisConnectionFactoryredisConnectionFactory){......