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

news2024/11/29 3:58:44

kali渗透

  • 1:服务识别
    • 1.1:NetCat
    • 1.2:Socket
    • 1.3:dmitry
    • 1.4:nmap
  • 2:操作系统识别
    • 2.1:Scapy
    • 2.2:nmap
    • 2.3:p0f
  • 3:SNMP 扫描
    • 3.1:onesixtyone
    • 3.2:snmpwalk
    • 3.3:snmpcheck
  • 4:SMB 扫描
    • 4.1:nmap
    • 4.2:nbtscan
    • 4.3:enum4linux
  • 5:SMTP 扫描
    • 5.1:NetCat
    • 5.2:nmap
    • 5.3:smtp-user-enum
  • 6:防火墙识别
    • 6.1:Scapy
    • 6.2:nmap
  • 7:负载均衡识别
    • 7.1:lbd
  • 8:WAF 识别
    • 8.1:wafw00f
    • 8.2:nmap


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

1:服务识别

识别开放端口上运行的应用与服务,可以提高攻击效率。

方法:

  • Banner 捕获
    • 建立连接后获取 Banner
  • 服务指纹识别
  • 另类识别方法
    • 特征行为
    • 可用于识别操作系统

Banner:指目标主机在响应请求时返回的服务标识信息。通常是一个文本字符串,包含了软件开发商、软件名称、服务类型,版本号等。
根据 Banner 抓取的信息有限,且不完全准确。

得到服务版本号可以直接发现已知漏洞和弱点。

1.1:NetCat

基本语法
nc 选项

部分选项

参数说明
-nnumeric-only IP addresses, no DNS.
-vverbose [use twice to be more verbose].

示例01:尝试连接端口以获取服务信息。
nc -nv 1.1.1.1 22

基于 banner 捕获。

1.2:Socket

在 Python 中,socket 标准库用于网络通信,提供的编程接口用于创建网络套接字(socket)对象,以实现网络连接、数据传输和通信协议。

示例01:banner_grab.py。基于 banner 捕获。

#!/usr/bin/python

import socket
import select
import sys

if len(sys.argv) != 4:
    print("Usage - ./banner_grab.py <target-ip> <first port> <last port>")
    print("Example - ./banner_grab.py 10.1.1.1 1 250")
    sys.exit()

ip = sys.argv[1]
start_ip = int(sys.argv[2])
end_ip = int(sys.argv[3])

for port in range(start_ip, end_ip):
    try:
        target = (ip, port)
        ban_grab = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        ban_grab.connect(target)
        ready = select.select([ban_grab], [], [], 1)

        if ready[0]:
            print("TCP Port " + str(port) + " - " + ban_grab.recv(4096).decode())
            ban_grab.close()
            
    except Exception as e:
        # print(e)
        pass

1.3:dmitry

Deepmagic Information Gathering Tool
“There be some deep magic going on”

基本语法
dmitry 选项

部分选项

参数说明
-pPerform a TCP port scan on a host.
-bRead in the banner received from the scanned port.

示例01

dmitry -pb 1.1.1.1

1.4:nmap

Nmap 可以发送一些列复杂的探测,根据响应特征来分析识别服务。

基本语法
nmap 选项

部分选项

参数说明
-sS/sT/sA/sW/sMTCP SYN/Connect()/ACK/Window/Maimon scans.
-sVProbe open ports to determine service/version info.

示例01:基于 banner 捕获识别。

nmap -sT 1.1.1.1 -p 1-100 --script=banner

“ banner ” 脚本用于服务识别。基于 banner 捕获。

示例02:基于 nmap 的识别方法。

nmap 1.1.1.1 -p 1-100 -sV

2:操作系统识别

操作系统识别技术种类繁多。好的工具往往采用多种技术组合来识别。

一个简易识别方法,TTL 起始值:

  • Windows:128
  • Linux:64
  • 某些 Unix:256

2.1:Scapy

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

示例01:ttl_os.py。基于 ttl 的简单验证。

#!/usr/bin/python

import logging

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

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

if len(sys.argv) != 2:
    print('Usage - ./ttl_os.py <IP address>')
    print('Example - ./ttl_os.py 10.1.1.1')
    sys.exit()

ip = sys.argv[1]

ans = sr1(IP(dst=str(ip))/ICMP(), timeout=1, verbose=0)

if ans == None:
    print('No response')
elif int(ans[IP].ttl) <= 64:
    print('Host is Linux/Unix')
else:
    print('Host is Windows')

2.2:nmap

Nmap 使用多种技术识别操作系统。

基本语法
nmap 选项

部分选项

参数说明
-OEnable OS detection.

示例01

nmap 1.1.1.1 -O

2.3:p0f

p0f(Passive OS Fingerprinting),用于被动操作系统指纹识别。

通过监控网络流量中的数据包并分析其特征,来确定操作系统类型和版本。

被动操作系统识别在有 IDS(Intrusion Detection System,入侵检测系统)时能派上用场。

基本语法
p0f [选项]

示例01:开始流量监控并分析。

p0f

3:SNMP 扫描

信息的金矿。
经常被错误配置。

SNMP(Simple Network Management Protocol)是一种用于网络设备管理和监控的协议,提供了一种标准的方式来收集、组织和传输网络设备的信息。

  • SNMP 常使用 161 端口。

SNMP 允许网络管理员监视和管理网络中的设备,例如路由器、交换机、服务器和打印机等。

SNMP 基本工作原理
管理器发送请求(Get、Set、Trap 等)到目标设备,目标设备响应请求并提供所需的信息。包括设备状态、性能指标、配置参数、事件通知等。

MIB(Management Information Base)是 SNMP 协议定义的一种树形网络设备管理功能数据库,用于描述网络设备中可管理的对象和属性。

每个网络设备都有一个特定的 MIB,其中包含了可查询和操作的对象。通过 SNMP 协议,管理器可以使用 OID(对象标识符)来访问和操作 MIB 中的信息。

3.1:onesixtyone

onesixtyone 用于 SNMP 字典攻击。

主要原理是尝试使用不同的社区字符串(community string)对目标设备执行 SNMP 查询,以发现设备的 MIB 数据。

Community String 是用于访问和管理网络设备的一种凭证或密码。SNMP 中,Community String 被用作一种简单的身份验证机制,用于控制对设备的访问权限。

基本语法
onesixtyone 选项

部分选项

参数说明
Community String指定社区字符串。
-c <communityfile>file with community names to try.
-o <outputfile>output log.
-w nwait n milliseconds (1/1000 of a second) between sending packets (default 10).

示例01:使用 public 作为社区字符串。

onesixtyone 1.1.1.1 public

示例02

onesixtyone -c /usr/share/doc/onesixtyone/dict.txt 1.1.1.1 -o my.log -w 100

3.2:snmpwalk

snmpwalk 用于执行 SNMP Walk 操作,用于获取网络设备的管理信息。

SNMP Walk 操作:
是一种遍历 SNMP 设备的 MIB 树的过程,以收集设备上可用的 SNMP 对象和相关信息。

基本语法
snmpwalk 选项

部分选项

参数说明
-c COMMUNITYset the community string.
-v 1/2c/3specifies SNMP version to use.

示例01

snmpwalk 1.1.1.1 -c public -v 2c

3.3:snmpcheck

snmpcheck 通过执行一系列 SNMP 查询和测试,检查目标设备的 SNMP 实现和配置,并提供相关的信息和报告。

基本语法
snmpcheck 选项

4:SMB 扫描

SMB(Server Message Block)是一种用于在计算机网络上共享文件、打印机和其他资源的协议。最初由微软开发,已成为主流网络操作系统中常见的文件和打印共享协议之一。

  • SMP 常使用 139 或 445 端口。

SMB 协议允许客户端通过网络与服务器通信,并请求对文件和资源的访问、读取、写入和管理。通过 SMB,用户可以在局域网或广域网上共享文件夹、打印机和其他网络资源。

  • 微软历史上出现安全问题最多的协议
  • 实现复杂
  • 默认开放
  • 文件共享

4.1:nmap

基本语法
nmap 选项

部分选项

参数说明
--script=<Lua scripts>Lua scripts is a comma separated list of directories, script-files or script-categories.
--script-args=<n1=v1,[n2=v2,...]>provide arguments to scripts.

可以到 /usr/share/nmap/scripts/ 目录下查看所有 nmap 脚本。
可以查看某个脚本内容以了解其功能与参数使用。

示例01:简单扫描 139,445 端口。

nmap -v -p 139,445 1.1.1.1-20

示例02

nmap 1.1.1.1 -p 139,445 --script=smb-os-discovery.nse

smb-os-discovery.nse 脚本用于通过 SMB 协议进行信息发现和识别。

4.2:nbtscan

nbtscan 用于扫描局域网中的 NetBIOS(Network Basic Input/Output System)信息。

NetBIOS 是一种在早期 Windows 网络中广泛使用的协议,用于在局域网上识别和通信。

鉴于现在的发展,nbtscan 在对付古老的系统时可能会起到作用,现在可能用处已经不大。

基本语法
nbtscan 选项

部分选项

参数说明
-ruse local port 137 for scans. Win95 boxes respond to this only.

示例01

nbtscan -r 192.168.60.0/24

4.3:enum4linux

enum4linux 用于枚举和收集信息。通过与目标系统的 SMB 协议交互获取信息。

基本语法
enum4linux 选项

部分选项

参数说明
-aDo all simple enumeration (-U -S -G -P -r -o -n -i).

示例01

enum4linux -a 192.168.60.10

5:SMTP 扫描

SMTP(Simple Mail Transfer Protocol)是一种用于电子邮件传输的标准协议。

SMTP 本身没有提供任何身份验证或加密机制,需要结合其他安全机制确保邮件传输的安全性。

SMTP 扫描主要用来发现邮件账号。

5.1:NetCat

基本语法
nc 选项

示例01

nc -nv 1.1.1.1 25

5.2:nmap

基本语法
nmap 选项

示例01

nmap smtp.163.com -p 25 --script=smtp-enum-users.nse --script-args=smtp-enumusers.methods={VRFY}

smtp-enum-users.nse 用于枚举SMTP服务器上存在的有效用户。
smtp-enumusers.methods={VRFY} 指定脚本使用 VRFY 方法进行用户枚举。

示例02

nmap smtp.163.com -p 25 --script=smtp-open-relay.nse

smtp-open-relay.nse 用于检测 SMTP 服务器是否开放了中继(Open Relay)功能。

中继是指允许未经身份验证的第三方通过 SMTP 服务器发送电子邮件的功能。

5.3:smtp-user-enum

smtp-user-enum 用于枚举 SMTP 服务器上存在的有效用户。

基本语法
smtp-user-enum 选项

部分选项

参数说明
-M modeMethod to use for username guessing EXPN, VRFY or RCPT (default: VRFY).
-U fileFile of usernames to check via smtp service.
-t hostServer host running smtp service.

示例01

smtp-user-enum -M VRFY -U users.txt -t 10.0.0.1

6:防火墙识别

通过发送数据包并检查回包,可能识别端口是否经过防火墙过滤。

主要情况有以下四种:

在这里插入图片描述

由于设备的不同,结果存在一定误差。

6.1:Scapy

示例01:FW.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) != 3:
    print('Usage - ./FW.py <IP address> <Port>')
    print('Example - ./FW.py 10.1.1.1 443')
    sys.exit()

ip = sys.argv[1]
port = int(sys.argv[2])

ACK_response = sr1(IP(dst=str(ip))/TCP(dport=port, flags='A'), timeout=1, verbose=0)
SYN_response = sr1(IP(dst=str(ip))/TCP(dport=port, flags='S'), timeout=1, verbose=0)

if (ACK_response == None) and (SYN_response == None):
    print('Port is either unstatefully filtered or host is down')
elif ((ACK_response == None) or (SYN_response == None)) and not ((ACK_response == None) and (SYN_response == None)):
    print('Stateful filtering in place')
elif int(SYN_response[TCP].flags == 18):
    print('Port is unfiltered and open')
elif int(SYN_response[TCP].flags == 20):
    print('Port is unfiltered and closed')
else:
    print('Unable to determine if the port is filtered')

6.2:nmap

nmap 带有一系列防火墙过滤检测功能。

基本语法
nmap 选项

示例01

nmap -sA 1.1.1.1 -p 22

7:负载均衡识别

负载均衡器是一种网络设备或软件,用于在多个服务器之间平衡传入流量,以提高性能和可靠性。

  • DNS-Loadbalancing:DNS 轮巡,智能 DNS。
  • HTTP-Loadbalancing。

7.1:lbd

LBD 用于查询和检测负载均衡。

lbd - load balancing detector.

基本语法
lbd 选项

示例01

lbd www.baidu.com

8:WAF 识别

WAF(Web Application Firewall,Web 应用防火墙)用于保护 Web 应用程序免受常见的网络攻击。

8.1:wafw00f

wafw00f 用于识别 WAF。通过分析 HTTP 响应头、页面内容和错误消息等信息,来识别是否存在 WAF 及可能的 WAF 类型。

The Web Application Firewall Fingerprinting Toolkit.

基本语法
wafw00f 选项

部分选项

参数说明
url要探测的网站 url。
-l, --listList all WAFs that WAFW00F is able to detect.

示例01

wafw00f http://www.baidu.com

8.2:nmap

基本语法
nmap 选项

示例01

nmap www.baidu.com --script=http-waf-detect.nse

http-waf-detect.nse 脚本用于检测 WAF 的存在。


人世几回伤往事,山形依旧枕寒流。

——《西塞山怀古》(唐)刘禹锡

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

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

相关文章

AI初体验 - 最初的两次AI辅助开发

1.第一个尝试&#xff1a;物理公式 2023年6月7日&#xff0c;是我第一次在 AI(ChatGPT)的帮助下&#xff0c;完成了一个数据分析工作。当时手里有一些数据&#xff0c;我大致知道物理原理&#xff0c;但是无法给出一个合适的公式。我大概工作了5个小时&#xff0c;没有进展&am…

RTP介绍

一、简介 Real-time Transport Protocol(实时传输协议) 具体参考rfc3350介绍 可负载H264、H265、G711A、AAC、PS、私有流等各种数据。 二、格式 RTP 固定头部格式如下 version (V): 2bits RTP协议版本号 目前协议版本为2 padding (P): 1bit 填充位 设置成1&#xff…

无线led显示屏的优势

无线LED显示屏是一种利用无线技术进行数据传输和控制的LED显示屏&#xff0c;相比传统有线连接的LED显示屏&#xff0c;具有以下优势&#xff1a; 灵活性和便捷性&#xff1a;无线LED显示屏无需使用复杂的有线连接&#xff0c;可以通过无线网络进行数据传输和控制。这使得安装和…

Linux内核中内存管理相关配置项的详细解析1

本文基于kernel 6.1.0&#xff0c;针对于“Linux/x86 6.1.0 Kernel Configuration”中的“Memory Management options”项下的各个子配置项&#xff08;如下图所示&#xff09;进行详细解析。 一、Support for paging of anonymous memory (swap) 这个选项以前位于“General S…

deepin 安装 MySQL

1.下载网址&#xff1a;MySQL :: Begin Your Downloadhttps://dev.mysql.com/downloads/file/?id519241 不用注册&#xff0c;直接下载 2. 打开下载文件&#xff1a;mysql ......deb 文件 3 选择步骤&#xff1a;选ubuntu bionic 4 ->MySQL Server&Cluster->mysq…

钢铁废水除氟

钢铁工业废水含多种污染物&#xff0c;包括大量的挥发酚、氟化物、石油类、悬浮物、砷、铅等有害物质。其中含氟工业废水的大量排放&#xff0c;不仅污染环境&#xff0c;还会危害到农作物和牲畜的生长发育&#xff0c;并且可以通过食物链影响到人体健康。所以对含氟废水需降氟…

去掉字符串中的空格,通过正则根据不同的需求分别能去掉前、后、前后、中间的空格。

正则小tips&#xff1a; 正则表达式 - 修饰符 gglobal - 全局匹配 正则表达式 - 元字符 ^匹配输入字符串的开始位置。*匹配前面的子表达式零次或多次。$匹配输入字符串的结束位置。\s 匹配任何空白字符&#xff0c;包括空格、制表符、换页符等等。 匹配前面的子表达式一次…

【计算机组成与体系结构Ⅰ】章节测试(5-7)

在CPU中跟踪指令后继地址的寄存器是___。 A 主存地址寄存器 B 程序计数器 &#xff08;我的答案&#xff09; C 指令寄存器 D 状态条件寄存器 下面描述的RISC机器基本概念中&#xff0c;正确的表述是 __。 A. RISC机器不一定是流水CPU. B. RISC机器一定是流水CPU. &#…

基于Tensorflow+SDD+Python人脸口罩识别系统(深度学习)含全部工程源码及模型+视频演示+图片数据集

目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境Anaconda 环境搭建 模块实现1. 数据预处理2. 模型构建及算法实现3. 模型生成 系统测试1. 训练准确率2. 运行结果 工程源代码下载其它资料下载 前言 在当今全球范围内&#xff0c;新冠疫情对我们的生活方式带来了…

单核 CPU 支持 Java 多线程吗?我们来一起看看吧

1 前言 由于现在大多计算机都是多核CPU&#xff0c;多线程往往会比单线程更快&#xff0c;更能够提高并发&#xff0c;但提高并发并不意味着启动更多的线程来执行。更多的线程意味着线程创建销毁开销加大、上下文非常频繁&#xff0c;你的程序反而不能支持更高的TPS。 2 时间…

超图使用问题汇总

超图使用问题汇总 切地图栅格瓦片的时候&#xff0c;必须确认生成地图的源数据坐标系已经被识别&#xff0c;否则无法进行全球剖分 下图就是未识别坐标系的情况 切地图矢量瓦片的时候&#xff0c;需要使用idesktopx来切&#xff0c;idesktop无法生成矢量瓦片。 矢量瓦片切片时…

Ubuntu安装docker-compose

官网 Install Compose standalone curl -SL https://github.com/docker/compose/releases/download/v2.18.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose离线 下载文件 开启vpn浏览器https://github.com/docker/compose/releases/download/v2.18.1/dock…

第九篇:强化学习Q-learning算法 通俗介绍

你好&#xff0c;我是郭震&#xff08;zhenguo) 今天介绍强化学习第九篇&#xff1a;Q-learning算法 前面我们介绍强化学习基本概念&#xff0c;马尔科夫决策过程&#xff0c;策略迭代和值迭代&#xff0c;这些组成强化学习的基础。 从今天开始逐步介绍常用强化学习算法&#x…

QT调用linux外部命令或者shell script

目录 原文链接&#xff1a;https://blog.csdn.net/YMGogre/article/details/128973098 0、本文使用的环境配置&#xff1a; 1、新建一个简单的Shell脚本&#xff1a; 2、在Qt中启动外部Shell脚本&#xff1a; 2.1、使用标准库中提供的方法 —— system() 2.2、使用Qt提供…

接口抓包分析与Mock实战

这里写目录标题 一、知识点梳理1、接口抓包需要具备的能力2、接口抓包原理 二、Charles 基础使用三、charles抓包分析四、Charles 使用1、过滤&#xff1a;Filter、Focus2、重发&#xff1a;Repeat、Repeat Advanced3、修改请求&#xff1a;Compose4、弱网&#xff1a;Throttle…

实验3 Tomasulo算法【计算机系统结构】

实验3 Tomasulo算法【计算机系统结构】 前言推荐实验3 Tomasulo算法1 实验目的2 实验平台3 实验内容和步骤4 实验总结与心得 最后 前言 2023-6-9 9:19:50 以下内容源自《【计算机系统结构】》 仅供学习交流使用 推荐 实验2 指令调度和延迟分支【计算机系统结构】 实验3 To…

webgpu之旅03

19854902 319854902 319854902 319854902 webgpu交Q流群我们找个例子看看别人的renderer three.js v152 首先init函数 看见中间有个对象 WebGPURenderPipelines 跟进去看看 这个构造函数里可以看见有这么些数据 get( renderObject ) {const device this.device;const cache …

Meetup 报名|06.17 StarRocks Friends 与你相约上海

StarRocks & Friends 是由 StarRocks 社区发起的城市线下 meetup&#xff0c;旨在联合社区与行业的专家小伙伴们分享基于 StarRocks 的最佳实践、大数据分析的前沿技术和 StarRocks 生态融合等热门话题。 不远千里奔赴&#xff0c;只为与你相聚。这个夏天&#xff0c;让我们…

Vue+springboot小区居民外出登记信息管理系统

系统采用更加便于维护和使用的JAVA语言&#xff0c;其可拓展性高且更富于表现力&#xff0c;方便基本信息、外出申请、健康信息、外来人员等功能。通过Spring Boot框架来进行网页编程&#xff0c;其方便易用、移植适用性广、更加安全可靠。数据库方面则选用的是体积小、速度快、…

【安装教程】Win10上安装Microsoft To-Do客户端(手机端)

这里写自定义目录标题 操作方法操作说明辅助疑难问题 操作方法 此方法是应用于微软商店无法安装、安装不成功等情况 操作说明 原文&#xff1a;手把手教你在Win10上安装Microsoft To-Do客户端:https://www.jianshu.com/p/32a1ea417cba 1.访问微软网站&#xff0c;找到To-Do的…