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

news2024/11/17 23:48:23

kali渗透

  • 1:端口扫描
  • 2:UDP 扫描
    • 2.1:Scapy
    • 2.2:nmap
  • 3:半开放扫描
    • 3.1:Scapy
    • 3.2:nmap
    • 3.3:hping3
  • 4:全连接扫描
    • 4.1:Scapy
    • 4.2:nmap
    • 4.3:dmitry
    • 4.4:NetCat
  • 5:僵尸扫描
    • 5.1:Scapy
    • 5.2:nmap


本文以 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 选项

部分选项

参数说明
-sUUDP 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/sMTCP SYN/Connect()/ACK/Window/Maimon scans.
--openOnly 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--scanSCAN mode.
-S--synset SYN flag.
-p--destport[+][+]port destination port(default 0) ctrl+z inc/dec.
-a--spoofspoof 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/sMTCP 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 选项

部分选项

参数说明
-pPerform a TCP port scan on a host.
-oSave 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 选项

部分选项

参数说明
-nnumeric-only IP addresses, no DNS.
-vverbose [use twice to be more verbose].
-w secstimeout for connects and final net reads.
-zzero-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.(欺骗扫描)
-PnTreat 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

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

——《增广贤文》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/604624.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端web入门-CSS-day04

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 复合选择器 后代选择器 子代选择器 并集选择器 交集选择器 伪类选择器 伪类-超链接&#xff08;拓…

leetcode95--不同的二叉搜索树 II(java)

不同的二叉搜索树 II leetcode95 -- 不同的二叉搜索树 II题目描述 解题思路代码演示二叉树专题 leetcode95 – 不同的二叉搜索树 II 原题链接: https://leetcode.cn/problems/unique-binary-search-trees-ii/ 题目描述 给你一个整数 n &#xff0c;请你生成并返回所有由 n 个节…

HTTP协议+Ajax基本知识+axios+模板引擎的基本使用

1.客服端服务器 我们先来了解一下上网的目的是什么&#xff1f; 例如&#xff1a;刷微博、浏览新闻、在线听音乐、在线看电影、等等... 上网的本质目的&#xff1a;通过互联网的形式来 获取和消费资源 1.2 服务器 上网过程中&#xff0c;负责 存放和对外提供资源 的电脑&am…

dockers映射网络及数据卷

DOCKER docker run创建镜像时 1&#xff09;检查本地是狗存在指定的惊像 2&#xff09;利用镜像创建并启动一个容器 3&#xff09;分配一个文件系统给容器&#xff0c;在只读的镜像曾外改在一层可读可写层 4&#xff09;从宿主机配置的网桥接口中桥接一个虚拟机接口到容器…

springboot+vue实验室器材预约学习系统设计与实现

1、理论学习 深入学习Java Web开发技术。 在此基础上研究核心框架SpringBoot, MyBatis和Bootstrap等&#xff0c;为设计开发基于J2EE_SpringBoot的中药实验管理系统做好技术准备。 2.1功能要求 课题以提高中药实验开放共享、实施实验室网络化管理、提供优质的实验教学信息化服…

几何分布和负二项分布的关系

几何分布和负二项分布的关系 几何分布 在独立重复Bernoulli试验中&#xff0c;事件A首次发生时所进行的试验次数X服从几何分布 P ( X k ) ( 1 − p ) k − 1 p &#xff08; k 1 , 2 ⋯ &#xff09; E ( X ) 1 p 、 D ( X ) 1 − p p 2 P(Xk)(1-p)^{k-1}p&#xff08;k…

sql server 字符串链接,及表连接多个值显示连接显示为一列 STUFF for xml path

sql server 字符串链接&#xff0c;及表连接多个值显示连接显示为一列 STUFF for xml path STUFF ( character_expression , start , length , replaceWith_expression ) 以下示例从第一个字符串 abcdef 的第 2 个位置 (b) 开始删除三个字符&#xff0c;然后在删除位置插入…

第10章_管理库表(DDL语句)

第10章_管理库表(DDL语句) 1. 基础知识 1.1 一条数据存储的过程 存储数据是处理数据的第一步 。只有正确地把数据存储起来&#xff0c;我们才能进行有效的处理和分析。否则&#xff0c;只能是一团乱麻&#xff0c;无从下手。那么&#xff0c;怎样才能把用户各种经营相关的、…

Oracle中的数据导出(2)

将Oracle数据库中的数据导出给其他的系统使用 怎么实现上述的这个需求呢&#xff1f; 这里我是使用spool脚本方法导出数据&#xff0c;其中在Oracle中的数据导出(1)http://t.csdn.cn/k5AOZ 已经描述了spool命令的使用。此篇我将使用spool命令脚本导出数据&#xff0c;下面是…

深入理解Linux虚拟内存管理(三)

系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核&#xff08;一&#xff09; 深入理解 Linux 内核&#xff08;二&#xff09; Linux 设备驱动程序&#xff08;一&#xff09; Linux 设备驱动程序&#xff08;二&#xff09; Linux 设备驱动程序&#xff08;三&#xf…

Stable Diffusion 超详细讲解

Stable Diffusion 超详细讲解 这篇文章是 《Stable Diffusion原理详解》的后续&#xff0c;在《Stable Diffusion原理详解》中我更多的是以全局视角讲解了 Stable Diffusion 的原理和工作流程&#xff0c;并未深入步骤细节。本文将在《Stable Diffusion原理详解》和《Diffusio…

【自用 三层代码结构】「go语言」项目中降低服务内的耦合性使用wire框架或工厂模式进行管理

文章目录 前言一、为什么需要分层&#xff1f;1. Server服务&#xff08;向外暴露gRPC接口&#xff09;&#xff1a;2. API服务&#xff08;向外暴露HTTP接口&#xff09;&#xff1a;3. domain模型的概念&#xff1a;DO&#xff08;Domain Object&#xff09;&#xff1a;DTO&…

Docker安装Mysql教程(linux)

本文主要讲解如何使用Docker去安装mysql 一、搜索镜像 docker search mysql二、拉取镜像 不指定版本&#xff0c;默认为最新版&#xff0c;这里用的5.7 docker pull mysql:5.7三、创建容器&#xff08;运行镜像&#xff09; 1、内外都使用3306端口&#xff08;确保你的宿主机3…

Umi微前端水印踩坑以及解决方案

最近公司需要在管理后台加一个水印方案~ 项目用的umi方案,以为就是改一个配置的问题,后来发现坑点还蛮多~ 希望此稳定能帮助到用umi 的你们. 一. 先来说说心路历程 坑点1 umi的水印适配只能在layout中进行配置,也就是路由配置中layout为false的页面无法配置水印,比如说登录页…

SCS【27】单细胞转录组之识别标记基因 (scran)

桓峰基因公众号推出单细胞生信分析教程并配有视频在线教程&#xff0c;目前整理出来的相关教程目录如下&#xff1a; Topic 6. 克隆进化之 Canopy Topic 7. 克隆进化之 Cardelino Topic 8. 克隆进化之 RobustClone SCS【1】今天开启单细胞之旅&#xff0c;述说单细胞测序的前世…

规则引擎架构-基于easy-rules

目录 概念理解实例和编码抽象出2条规则简单的规则引擎事实1的处理事实2的处理 easy-rules 规则的抽象和执行事实描述规则的抽象默认的规则 动态代理执行规则和动作规则的执行&#xff1a;org.jeasy.rules.core.DefaultRulesEngine#doFirepublic class RuleProxy implements Inv…

Java上进了,JDK21 要来了,并发编程再也不是噩梦了

更丝滑的并发编程模式 如果说之前的 JDK17你还觉得没必要折腾&#xff0c;那 JDK21确实有必要关注一下了。因为 JDK21 引入了一种新型的并发编程模式。 当前 Java 中的多线程并发编程绝对是另我们都非常头疼的一部分&#xff0c;感觉就是学起来难啃&#xff0c;用起来难用。但…

基础篇010.3 STM32驱动RC522 RFID模块之三:STM32软件模拟SPI驱动RC522

目录 1. 实验硬件及原理图 2. 利用STM32CubeMX创建MDK工程 2.1 STM32CubeMX工程创建 2.2 配置调试方式 2.3 配置时钟电路 2.4 配置时钟 2.5 配置GPIO 2.6 配置串口 2.7 项目配置 3. MDK工程驱动代码调试 3.1 按键、LED程序 3.2 SPI软件模拟程序 3.3 RC522驱动程序…

Unity制作二次元卡通渲染角色材质——1、资源分析

Unity制作二次元材质角色 回到目录 大家好&#xff0c;我是阿赵。 开始制作二次元角色材质之前&#xff0c;我觉得应该是先分析一下&#xff0c;我手上拿到的这个角色模型资源&#xff0c;总共有哪些信息是我们能用的。 所以这篇文章我不会分享具体的Shader&#xff0c;但我感觉…

基于RT-Thread快速上手SD NAND 虚拟文件系统

SD NAND 也称之为贴片式TF卡&#xff0c;贴片式SD卡&#xff0c;采用标准的SDIO接口&#xff0c;兼容SPI接口。下图所示为CS 新一代CS SD NAND NP1GCR01-AOW 大小为128M&#xff0c;对比128M的SD卡&#xff0c;可以看到贴片SD卡尺寸更小&#xff0c;不要SD卡座&#xff0c;占…