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

news2024/11/26 8:37:24

kali渗透

  • 1:主动信息收集
  • 2:发现
  • 3:二层发现
    • 3.1:arping
    • 3.2:nmap
    • 3.3:netdiscover
    • 3.4:Scapy
  • 4:三层发现
    • 4.1:ping
    • 4.2:Scapy
    • 4.3:nmap
    • 4.4:fping
    • 4.5:hping3
    • 4.6:traceroute
  • 5:四层发现
    • 5.1:Scapy
    • 5.2:nmap
    • 5.3:hping3


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

1:主动信息收集

被动信息收集面临信息过时与不全面的问题。需要主动信息收集来进行确认与扩充。
但是,对于主动收集的信息,也要保持怀疑的态度。

主动信息收集

扫描(扫 IP、端口、服务等):
发送不同的探测,根据返回结果判断目标状态。

  • 直接与目标系统交互通信。
  • 无法避免留下访问的痕迹。
    • 使用受控的第三方电脑进行探测
    • 使用代理
    • 使用噪声迷惑目标,淹没真实的探测流量
  • 做好被封杀的准备。

2:发现

发现识别存活的主机。任何存活主机都是潜在的攻击目标。通常输出一个 IP 地址列表。

发现端口扫描知识点有交叉,但理论上不一样。

可大致根据网络分层结构分为二层、三层、四层发现。

在这里插入图片描述

3:二层发现

二层发现:主要通过 ARP 协议,发现同网段下存活的主机。

优点

  • 扫描速度快。
  • 可靠。

缺点

  • 不可路由,只能发现本网段主机。

常用于获得某台主机控制权后,以此作为跳板发现其网段内其他主机。

3.1:arping

ARPing(Address Resolution Protocol Pinging)用于获取与指定 IP 地址相关联的 MAC 地址。

基本语法
arping 选项

部分选项

参数说明
-c countOnly send count requests.
-dFind duplicate replies. Exit with 1 if there are answers from two different MAC addresses.

示例01

arping 192.168.230.1 -c 1

示例02:查看是否有 ARP 欺骗。

arping 192.168.230.1 -d

示例03:若主机存活只显示其 ip。

arping 192.168.230.1 -c 1 | grep "bytes from" | cut -d" " -f 5 | cut -d "(" -f 2 | cut -d")" -f 1

由于一次只能探测一条,需要搭配脚本使用。

3.2:nmap

Nmap(Network Mapper)用于探测主机、端口和服务等信息。提供了丰富的功能和灵活性。

基本语法
nmap 选项

部分选项

参数说明
-snPing Scan - disable port scan.
-iL <inputfilename>Input from list of hosts/networks.

示例01:扫描网段所有存活主机。

nmap 10.133.30.1-254 -sn

示例02:扫描文件中的主机是否存活

nmap -iL iplist.txt -sn

3.3:netdiscover

Netdiscover 是一个基于 ARP 协议的网络扫描工具,用于发现本地网络中活动主机的 IP 地址和 MAC 地址。

Active/passive ARP reconnaissance tool.

特点

  • 专用于二层发现
  • 可用于无线和交换网络环境
  • 主动和被动探测

基本语法
netdiscover 选项

部分选项

参数说明
-i deviceyour network device.
-l filescan the list of ranges contained into the given file.
-pdo not send anything, only sniff.(passive mode)

示例01:指定网络接口,扫描网段存活主机。

netdiscover -i eth0 -r 1.1.1.0/24

示例02:指定文件中读取 ip。

netdiscover -l iplist.txt

示例03:指定网络接口,被动侦查。

netdiscover -i eth1 -p

3.4:Scapy

Scapy 是一个 Python 网络数据包处理库,它可以用于构建、发送和解析网络数据包。它提供了一个灵活的接口,可以用于网络协议的开发、网络流量分析、网络扫描和攻击等任务。

特点

  • 作为 Python 库进行调用
  • 也可作为单独的工具使用
  • 分析、创建、修改、注入网络流量

命令行输入 scapy 进入。

在这里插入图片描述

示例01:一个简单二层发现脚本 arp_disc.py。

#!/usr/bin/python

import logging
import subprocess
import sys

from scapy.all import *
from scapy.layers.l2 import ARP

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

if len(sys.argv) != 2:
    print("Usage: ./arp_disc.py <interface>")
    print("Example: ./arp_disc.py eth0")
    sys.exit()

interface = str(sys.argv[1])
ip = subprocess.check_output("ifconfig " + interface + " | grep 'inet ' | cut -d 't' -f 2 | cut -d ' ' -f 2", shell=True).strip().decode()
print("IP address:", ip)
prefix = ip.split('.')[0] + '.' + ip.split('.')[1] + '.' + ip.split('.')[2] + '.'

for addr in range(0, 254):
    answer = sr1(ARP(pdst=prefix + str(addr)), timeout=0.1, verbose=0)

    if answer == None:
        pass
    else:
        print(prefix + str(addr))

print("END")
sys.exit()

4:三层发现

三层发现:主要通过 ip、icmp 协议发现存活主机。

优点

  • 可路由
  • 速度比较快

缺点

  • 速度比二层慢
  • 经常被边界防火墙过滤

4.1:ping

Ping 是一种计算机网络工具,用于测试主机之间的连通性和测量往返时间(RTT)。使用 ICMP 协议(控制消息协议)。

基本语法
ping 选项

部分选项

参数说明
<destination>dns name or ip address.
-c <count>stop after count replies.

示例:如果主机 ping 得通,只显示其 ip 地址。

ping 1.1.1.1 -c 1 | grep "bytes from" | cut -d " " -f 4 | cut -d ":" -f 1

ping 对于大量探测需要靠脚本实现。

4.2:Scapy

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

示例01:pinger.py。

#!/usr/bin/python

import logging
import subprocess
import sys

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: ./pinger.py </24 network address>")
    print("Example: ./pinger.py 172.16.36.0")
    sys.exit()

address = str(sys.argv[1])
prefix = address.split('.')[0] + '.' + address.split('.')[1] + '.' + address.split('.')[2] + '.'

for addr in range(0, 254):
    answer = sr1(IP(dst=prefix + str(addr))/ICMP(), timeout=0.1, verbose=0)

    if answer == None:
        pass
    else:
        print(prefix + str(addr))

print("END")
sys.exit()

4.3:nmap

基本语法
nmap 选项

部分选项

参数说明
-snPing Scan - disable port scan.

示例

nmap -sn 1.1.1.100-250

4.4:fping

fping(Fast Ping)用于测试主机的可达性和响应时间。与标准 ping 工具不同,fping 具有一些额外的功能和选项。支持并发探测与批量操作。

基本语法
fping 选项

部分选项

参数说明
-g--generategenerate target list (only if no -f specified). (give start and end IP in the target list, or a CIDR address)
-c--count=Ncount mode: send N pings to each target.
-f--file=FILEread list of targets from a file.

示例01

fping 1.1.1.1 -c 2

示例02

fping -g 1.1.1.50 1.1.1.100

示例03

fping -g 1.1.1.0/24

4.5:hping3

hping3 是一种网络扫描和测试工具,可以创建和发送自定义的 TCP/IP 数据包,并监视目标主机的响应。

  • 能够发送几乎任意 TCP / IP 包。
  • 功能强大但每次只能扫描一个目标。

基本语法
hping3 选项

部分选项

参数说明
-c--countpacket count.
-1--icmpICMP mode.

示例01

hping3 1.1.1.1 --icmp -c 2

示例02:一个简单的脚本。

for addr in $(seq 1 254); do hping3 1.1.1.$addr --icmp -c 1 >> handle.txt & done

4.6:traceroute

traceroute 命令用于跟踪数据包在互联网中的路径。

基本语法
traceroute 选项

示例

traceroute 1.1.1.1

5:四层发现

四层发现:主要基于 TCP、UDP 协议来发现存活主机。

优点

  • 可路由且结果可靠
  • 不太可能被防火墙过滤
  • 甚至可以发现所有端口都被过滤的主机

缺点

  • 基于状态过滤的防火墙可能过滤扫描
  • 全端口扫描速度慢

原理

  • TCP

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

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

    • ACK 扫描
      发送未经请求的ACK包到目标主机的端口,通过观察返回的响应或未响应来判断端口的状态。大多数操作系统对于未经请求的 ACK 包会返回一个 RST 包。在很多情况下可能被防火墙或入侵检测系统所阻止。

  • UDP

    • 扫描器向目标主机的指定端口发送一个UDP数据包,然后根据接收到的响应进行判断。(例如,ICMP端口不可达消息)

5.1:Scapy

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

示例01:基于 TCP 的脚本 ACK_ping.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) != 2:
    print("Usage: ./ACK_ping.py </24 network address>")
    print("Example: ./ACK_ping.py 172.16.36.0")
    sys.exit()

address = str(sys.argv[1])
prefix = address.split('.')[0] + '.' + address.split('.')[1] + '.' + address.split('.')[2] + '.'

for addr in range(0, 254):
    response = sr1(IP(dst=prefix + str(addr))/TCP(dport=2222, flags='A'), timeout=0.1, verbose=0)

    try:
        if int(response[TCP].flags) == 4:
            print(prefix + str(addr))
    except:
        pass


print("END")
sys.exit()

示例02:基于 UDP 的脚本 UDP_ping.py。

#!/usr/bin/python

import logging
import sys

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

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

if len(sys.argv) != 2:
    print("Usage: ./UDP_ping.py </24 network address>")
    print("Example: ./UDP_ping.py 172.16.36.0")
    sys.exit()

address = str(sys.argv[1])
prefix = address.split('.')[0] + '.' + address.split('.')[1] + '.' + address.split('.')[2] + '.'

for addr in range(0, 254):
    response = sr1(IP(dst=prefix + str(addr))/UDP(dport=2222), timeout=0.1, verbose=0)

    try:
        if int(response[IP].proto) == 1:
            print(prefix + str(addr))
    except:
        pass


print("END")
sys.exit()

5.2:nmap

基本语法
nmap 选项

部分选项

参数说明
-snPing Scan - disable port scan.
-PS/PA/PU/PY[portlist]TCP SYN/ACK, UDP or SCTP discovery to given ports.

示例01

nmap 1.1.1.100-254 -PU 53 -sn

示例02

nmap 192.168.230.1-200 -PA 80 -sn

5.3:hping3

基本语法
hping3 选项

部分选项

参数说明
-2--udpUDP mode.

示例01:UDP 模式发现。

hping3 --udp 1.1.1.1 -c 1

示例02:简单一句话脚本。

for addr in $(seq 1 254); do hping3 --udp 1.1.1.$addr -c 1 >> t.txt; done

运行完后查看文件即可

grep Unreachable t.txt | cut -d " " -f 5 | cut -d "=" -f 2

示例03:TCP 模式发现。

hping3 1.1.1.1 -c 1

却下水晶帘,玲珑望秋月。

——《玉阶怨》(唐)李白

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

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

相关文章

Win2016服务器DNS服务搭建

文章目录 前言一、什么是DNS&#xff1f;1.为什么需要DNS系统2.为DNS&#xff08;Domain Name System&#xff0c;域名系统&#xff09;的功能3.域名解决方案的演进 二、域名介绍1.域名空间结构2.常见的顶级域名 三、DNS解析原理1.查询过程及方式2.DNS的查询分类 四、配置DNS服…

【论文精读】ICLR2022 - 语言驱动的语义分割

【论文精读】ICLR2022 - 语言驱动的语义分割 【论文原文】&#xff1a;LANGUAGE-DRIVEN SEMANTIC SEGMENTATION 【作者信息】&#xff1a;Boyi Li Cornell University, Cornell Tech Kilian Q. Weinberger Cornell University Serge Belongie University of Copenhagen Vladl…

2023年试用uniapp、vue2、vue3、typescript、vite、nvue

1. 前言 试用了一下 uniapp、vue2、vue3、typescript、vite、nvue 等技术&#xff0c;写了两个页面&#xff0c;两个页面加起来不到400行代码。 尝试使用了四种组合&#xff1a; 组合1&#xff1a;uniapp vue2 JavaScript nvue文件 非fast模式 组合2&#xff1a;uniapp…

【C++系列Pn】模板搞不懂,脑阔抖三抖(精讲模板,快来复习趴)

前言 大家好吖&#xff0c;欢迎来到 YY 滴 C系列 &#xff0c;热烈欢迎&#xff01;本章主要内容面向接触过C的老铁&#xff0c;主要内容含 目录 一.模板 1.函数模板 一.函数模板概念 二.函数模板的格式 三.函数模板的实例化 1.隐式实例化 2.显式实例化 3.模板参数的…

数据库的简介

文章目录 前言一、为什么需要数据库二、数据库基本概念1.什么是数据库2.什么是数据库管理系统3.数据库表4.数据库表 三、常见的数据库管理系统 前言 数据库的简介 一、为什么需要数据库 信息时代数据容量海量增长&#xff0c;结构化存储大量数据&#xff0c;便于高效的检索和…

如何在华为OD机试中获得满分?Java实现【区块链文件转储系统】一文详解!

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: Java华为OD机试真题&#xff08;2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述…

完全详解权限系统设计方案

1 为什么需要权限管理 日常工作中权限的问题时时刻刻伴随着我们&#xff0c;程序员新入职一家公司需要找人开通各种权限&#xff0c;比如网络连接的权限、编码下载提交的权限、监控平台登录的权限、运营平台查数据的权限等等。 在很多时候我们会觉得这么多繁杂的申请给工作带…

【JavaSE】Java基础语法(十五):继承

文章目录 1. 继承的实现2. 继承的好处和弊端3. Java中继承的特点4. 继承中的成员访问特点5. super6. 继承中构造方法的访问特点7. 继承中成员方法的访问特点8. super内存图9. 方法重写10. 权限修饰符 1. 继承的实现 继承的概念 继承是面向对象三大特征之一&#xff0c;可以使得…

G0第23章 :gorm介绍、模型定义、连接数据库

01 GORM介绍 https://gorm.io/zh_CN/docs/ gorm是一个使用Go语言编写的ORM框架。它文档齐全&#xff0c;对开发者友好&#xff0c;支持主流数据库。 特性 全功能 ORM关联 (Has One&#xff0c;Has Many&#xff0c;Belongs To&#xff0c;Many To Many&#xff0c;多态&…

SentinelResource配置

1.SentinelResource配置&#xff08;上&#xff09; 1.1.按资源名称限流 后续处理 1.1.1.启动Nacos成功 1.1.2.启动Sentinel成功 1.1.3.添加控制器 import com.alibaba.csp.sentinel.annotation.SentinelResource; import com.alibaba.csp.sentinel.slots.block.BlockExc…

2023-05-26:golang关于垃圾回收和析构函数的选择题,多数人会选错。

2023-05-26&#xff1a;golang关于垃圾回收和析构的选择题&#xff0c;代码如下&#xff1a; package mainimport ("fmt""runtime""time" )type ListNode struct {Val intNext *ListNode }func main0() {a : &ListNode{Val: 1}b : &Li…

使用Jmeter进行http接口性能测试

在进行网页或应用程序后台接口开发时&#xff0c;一般要及时测试开发的接口能否正确接收和返回数据&#xff0c;对于单次测试&#xff0c;Postman插件是个不错的Http请求模拟工具。 但是Postman只能模拟单客户端的单次请求&#xff0c;而对于模拟多用户并发等性能测试&#xf…

Linux入门笔记

Linux 1.概述 2.命令 1.常用命令 新建文件 touch 新建目录 mkdir Linux命令格式⭐️ 选项可以对命令具体控制 2.文件目录操作 1.ls ll命令用的很多 显示出非隐藏文件的详细信息 2.cd ~表示当前用户目录&#xff0c;如root用户目录 \表示根目录 3.查看命令 1.cat查看命令 -n…

【Python爬虫项目实战四】Chatgpt国内接口分享第一期

目录 🍇前言接口一接口二(免费学习测试 wuguokai)接口三(AI文本工具站)🍇前言 前几次分享的py接口,由于不经常维护导致你们下载的时候已经失效了,为了回馈粉丝,昨晚我想实在不行我就弄个接口出来吧,我自己维护,有问题咱们就在评论下方留言,我及时做更新处理就可…

树形结构的表设计与Java接口实现

文章目录 1、开发需求中的树形结构2、表结构设计3、接口实现代码模型类与接口定义Mapper层开发 1、开发需求中的树形结构 树形结构在日常开发中很常见&#xff0c;如&#xff1a; 再比如&#xff1a; 还有&#xff1a; 2、表结构设计 这种树形结构&#xff0c;其 核心字段为p…

【自制C++深度学习推理框架】计算图的设计思路

计算图的设计思路 什么是计算图 在深度学习推理框架中&#xff0c;计算图是一种数据结构&#xff0c;它由算子节点和数据节点组成&#xff0c;在该图中前向传播时数据从输入节点开始流动&#xff0c;经过一层层的计算后输出到输出节点&#xff0c;表示深度学习模型的计算过程…

Unity Shader variants (shader 变体)

官方地址 https://docs.unity3d.com/cn/2022.2/Manual/SL-MultipleProgramVariants.html 教程可以看这里 https://www.jianshu.com/p/48ad75f0b4b9 https://www.jianshu.com/p/3e6b84317097 变种用我自己的理解就是 能用程序控制的shader 举个例子 这里声明了 a b c d 四个变…

数据结构与算法03:栈

目录 什么是栈&#xff1f; 栈在函数调用中的应用 栈的应用&#xff1a;如何实现浏览器的前进和后退功能&#xff1f; 每日一练&#xff1a;左右括号匹配 什么是栈&#xff1f; 简单地说&#xff0c;先进后出&#xff0c;后进先出的数据结构就是栈&#xff0c;可以理解为一…

面试题:什么是 TCP/IP?

目录标题 什么是 TCP/IP?1) 网络接口层:2) 网络层:3) 传输层:4) 应用层: 2.数据包3.网络接口层4.网络层1) IP:2)地址解析协议 ARP3)子网 5 传输层1&#xff09;UDP&#xff1a;2&#xff09;TCP&#xff1a; 6 应用层运行在TCP协议上的协议&#xff1a;运行在UDP协议上的协议&…

大模型即将改变世界,百度先上牌桌

“未来&#xff0c;所有的应用都将基于大模型来开发&#xff0c;每一个行业都应该有属于自己的大模型&#xff0c;大模型会深度融合到实体经济当中去。” 作者|思杭 斗斗 编辑|皮爷 出品|产业家 “大模型即将改变世界。”5月26日&#xff0c;李彦宏在中关村论坛说道。 而…