18、无线设备扫描与Linux内核管理技术解析

无线设备扫描与Linux内核管理技术解析

蓝牙技术基础与扫描

蓝牙技术存在一定安全风险,它可能导致设备上的信息泄露、设备被控制以及接收和发送不必要的信息。要利用这项技术,我们需要了解其工作原理。

蓝牙是一种低功耗、近场通信的通用协议,工作频率在2.4 - 2.485GHz,采用扩频技术,每秒进行1600次跳频(这是一种安全措施)。它由瑞典爱立信公司于1994年开发,以10世纪丹麦国王哈拉尔德·蓝牙(Harald Bluetooth)命名。蓝牙规范的最小范围是10米,但制造商在设备中实现的上限没有限制,许多设备的范围可达100米,使用特殊天线还能进一步扩展。

连接两个蓝牙设备称为配对,几乎任何两个蓝牙设备都可以相互连接,但前提是它们处于可发现模式。处于可发现模式的蓝牙设备会传输以下信息:
- 名称
- 类别
- 服务列表
- 技术信息

当两个设备配对时,它们会交换一个秘密或链接密钥,每个设备都会存储这个密钥,以便在未来的配对中识别对方。每个设备都有一个唯一的48位标识符(类似MAC地址),通常还有制造商分配的名称,这些信息在识别和访问设备时非常有用。

在Linux系统中,我们可以使用BlueZ套件来扫描蓝牙信号。大多数Linux发行版,包括Kali Linux,默认都安装了BlueZ。如果没有安装,可以使用以下命令进行安装:

kali >apt-get install bluez

BlueZ提供了一些简单的工具来管理和扫描蓝牙设备,具体如下:
| 工具名称 | 功能描述 |
| ---- | ---- |
| hciconfig | 类似于Linux中的ifconfig,但用于蓝牙设备,可用于启动蓝牙接口并查询设备规格 |
| hcitool | 可提供设备名称、设备ID、设备类别和设备时钟信息,使设备能够同步工作 |
| hcidump | 用于嗅探蓝牙通信,即捕获通过蓝牙信号发送的数据 |

扫描蓝牙设备的步骤如下:
1. 检查蓝牙适配器 :使用 hciconfig 命令检查系统是否识别并启用了蓝牙适配器。

kali >hciconfig

示例输出:

hci0: Type: BR/EDR  Bus: USB
      BD Address: 10:AE:60:58:F1:37  ACL MTU: 310:10  SCO MTU:  64:8
      UP RUNNING PSCAN INQUIRY
      RX bytes:131433 acl:45 sco:0 events:10519  errors:0
      TX bytes:42881  acl:45 sco:0 commands:5081 errors:0

这里可以看到蓝牙适配器被识别,MAC地址为10:AE:60:58:F1:37,适配器名称为hci0。
2. 启用蓝牙连接 :使用 hciconfig 命令启用蓝牙连接。

kali >hciconfig hci0 up

如果命令成功运行,将不会有输出,只会显示一个新的提示符。

使用hcitool扫描蓝牙设备

在确认蓝牙适配器已启用后,我们可以使用BlueZ套件中的hcitool工具来扫描范围内的其他蓝牙设备。
1. 扫描处于发现模式的设备 :使用 hcitool scan 命令扫描正在发送发现信标的蓝牙设备。

kali >hcitool scan

示例输出:

Scanning...
72:6E:46:65:72:66      ANDROID BT
22:C5:96:08:5D:32      SCH-I535

不同系统的输出可能不同,你可以将手机或其他蓝牙设备设置为发现模式进行测试。
2. 收集设备信息 :使用 hcitool inq 命令收集检测到的设备的更多信息。

kali >hcitool inq

示例输出:

Inquiring...
24:C5:96:08:5D:32    clock offset:0x4e8b      class:0x5a020c
76:6F:46:65:72:67    clock offset:0x21c0      class:0x5a020c

这个命令会给出设备的MAC地址、时钟偏移和设备类别。设备类别可以通过访问蓝牙SIG网站(https://www.bluetooth.org/en-us/specification/assigned-numbers/service-discovery/)查询代码来确定设备类型。

我们还可以使用 hcitool --help 命令查看hcitool的更多命令选项:

kali >hcitool --help

示例输出:

hcitool - HCI Tool ver 5.50
Usage:
        hcitool [options] <command> [command parameters]
Options:
        --help      Display help
        -i dev      HCI device
Commands
    dev   Display local devices
    inq   Inquire remote devices
    scan  Scan for remote devices
    name  Get name from remote devices
--snip--
使用sdptool扫描服务

服务发现协议(SDP)是一种用于搜索蓝牙服务的蓝牙协议,BlueZ提供了sdptool工具来浏览设备提供的服务。需要注意的是,设备不需要处于发现模式也可以进行扫描,命令语法如下:

sdptool browse MACaddress

示例:

kali >sdptool browse 76:6E:46:63:72:66

示例输出:

Browsing 76:6E:46:63:72:66...
Service RecHandle: 0x10002
Service Class ID List:
  ""(0x1800)
Protocol Descriptor List:
  "L2CAP"  (0x0100)
    PSM: 31
  "ATT" (0x0007)
    uint16: 0x0001
    uint16: 0x0005
--snip--

通过这个工具,我们可以了解设备能够使用的所有服务,例如这里的设备支持低功耗属性协议(ATT Protocol),这可以为我们进一步了解设备和与之交互提供更多线索。

使用l2ping测试设备可达性

在收集了所有附近设备的MAC地址后,我们可以使用 l2ping 命令向这些设备发送ping包,以测试它们是否在可到达范围内,无论它们是否处于发现模式。命令语法如下:

l2ping MACaddress -c NumberOfPackets

示例:

kali >l2ping 76:6E:46:63:72:66 -c 3

示例输出:

Ping: 76:6E:46:63:72:66 from 10:AE:60:58:F1:37 (data size 44)...
44 bytes 76:6E:46:63:72:66 id 0 time 37.57ms
44 bytes 76:6E:46:63:72:66 id 1 time 27.23ms
44 bytes 76:6E:46:63:72:66 id 2 time 27.59ms
3 sent, 3 received, 0% loss

这个输出表明MAC地址为76:6E:46:63:72:66的设备在范围内且可到达,在考虑对设备进行攻击之前,了解设备是否可到达是很重要的。

下面是蓝牙设备扫描与信息收集的流程图:

graph LR
    A[开始] --> B[安装BlueZ]
    B --> C[检查蓝牙适配器]
    C --> D{适配器可用?}
    D -- 是 --> E[启用蓝牙连接]
    D -- 否 --> C
    E --> F[使用hcitool扫描设备]
    F --> G[使用hcitool inq收集设备信息]
    G --> H[使用sdptool扫描服务]
    H --> I[使用l2ping测试设备可达性]
    I --> J[结束]

通过以上步骤,我们可以在Linux系统中对蓝牙设备进行有效的扫描和信息收集,为后续的安全评估或其他操作做好准备。

无线设备扫描与Linux内核管理技术解析

Linux内核概述与版本检查

操作系统通常由内核和用户空间两大部分组成。内核是操作系统的核心,它控制着操作系统的一切操作,包括内存管理、CPU控制,甚至用户在屏幕上看到的内容。用户空间则包含了操作系统的其他大部分内容。

内核是一个受保护的特权区域,只有root或其他特权账户才能访问。这是因为访问内核几乎可以无限制地控制操作系统。大多数操作系统只允许用户和服务访问用户空间,用户在用户空间可以访问所需的大部分资源,而无需控制整个操作系统。

访问内核可以改变操作系统的工作方式、外观和感觉,但也可能导致操作系统崩溃而无法使用。尽管存在风险,但在某些情况下,系统管理员出于操作和安全原因,必须谨慎地访问内核。

要了解内核,首先需要检查系统正在运行的内核版本,有以下两种方法:
1. 使用 uname -a 命令

kali >uname -a

示例输出:

Linux Kali 4.19.0-kalil-amd64 #1 SMP Debian 4.19.13-lkalil (2019-01-03) x86_64

该输出告诉我们操作系统的发行版是Linux Kali,内核版本是4.19.0 - kalil - amd64,架构是x86_64,还表明系统具有对称多处理(SMP)能力,内核于2019年1月3日构建。不同系统的输出可能会有所不同。
2. 使用 cat 命令查看 /proc/version 文件

kali >cat /proc/version

示例输出:

Linux version 4.19.0-kalil-amd64 (devel@kali.org) (gcc version 8.2.0 20190103 (Debian 8.2.0-13)   ) #1 SMP Debian 4.19.13-lkalil  (2019-01-03)

可以看到, /proc/version 文件返回了与 uname -a 命令相同的信息。

使用sysctl进行内核调优

通过合适的命令,我们可以对内核进行调优,例如改变内存分配、启用网络功能,甚至增强内核的安全性以抵御外部攻击。

现代Linux内核使用 sysctl 命令来调整内核选项。使用 sysctl 进行的所有更改仅在系统重启前有效。要使更改永久生效,需要直接编辑 /etc/sysctl.conf 配置文件。

需要注意的是,使用 sysctl 时要格外小心,因为如果缺乏足够的知识和经验,很容易使系统无法启动和使用。在进行任何永久更改之前,务必仔细考虑操作的后果。

我们可以使用以下命令查看 sysctl 的所有参数:

kali >sysctl -a | less

输出中会显示数百行参数,Linux管理员可以编辑这些参数来优化内核。以下是一些对黑客可能有用的参数示例,以启用数据包转发为例:

在中间人(MITM)攻击中,黑客会将自己置于通信主机之间以拦截信息,流量会通过黑客的系统,这样他们就可以查看并可能修改通信内容。实现这种路由的一种方法是启用数据包转发。

我们可以通过以下方式查找与IPv4相关的参数:

sysctl -a | grep ipv4 | less

在输出中可以找到类似以下的内容:

net.ipv4.ip_dynaddr = 0
net.ipv4.ip_early_demux = 0
net.ipv4.ip_forward = 0
net.ipv4.ip_forward_use_pmtu = 0
--snip--

net.ipv4.ip_forward = 0 表示数据包转发功能默认是禁用的。要启用IP转发,可以使用以下命令:

kali >sysctl -w net.ipv4.ip_forward=1

需要注意的是,使用 sysctl 进行的更改在系统重启后会丢失。要使IP转发永久生效,需要编辑 /etc/sysctl.conf 文件,找到并取消 #net.ipv4.ip_forward=1 这一行的注释:

#/etc/sysctl.conf - Configuration file for setting system variables
# See /etc/sysctl.d/ for additional system variables.
# See sysctl.conf (5) for information.
#
#kernel.domainname = example.com
# Uncomment the following to stop low-level messages on console.
#kernel.printk = 3 4 1 3
###############################################################
# Functions previously found in netbase
#
# Uncomment the next two lines to enable Spoof protection (reverse-path filter)
# Turn on Source Address Verification in all interfaces to
# prevent some spoofing attacks.
#net.ipv4.conf.default.rp_filter=1
#net.ipv4.conf.all.rp_filter=1
# Uncomment the next line to enable TCP/IP SYN cookies
# See http://lwn.net/Articles/277146
# Note: This may impact IPv6 TCP sessions too
#net.ipv4.tcp_syncookies=1
See http://lwn.net/Articles/277146/ 
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

从操作系统加固的角度来看,我们可以通过在 /etc/sysctl.conf 文件中添加 net.ipv4.icmp_echo_ignore_all=1 行来禁用ICMP回显请求,使黑客更难发现系统。添加该行后,需要运行 sysctl -p 命令使更改生效。

内核模块管理

Linux有两种管理内核模块的方法:
1. 使用 insmod 套件相关命令 :这是较旧的方法, insmod 表示插入模块,用于处理模块。我们可以使用 lsmod 命令列出内核中已安装的模块:

kali >lsmod

示例输出:

Module                        Size       Used by
nfnetlink_queue               20480      0
nfnetlink_log                 201480     0
nfnetlink                     16384      2 nfnetlink_log, nfnetlink_queue
bluetooth                     516096     0
rfkill                        28672      2 bluetooth
--snip--

lsmod 命令会列出所有内核模块,以及它们的大小和被其他模块使用的情况。例如, nfnetlink 模块是一个用于内核和用户空间通信的基于消息的协议,它的大小为16384字节,被 nfnetlink_log nfnetlink_queue 两个模块使用。

我们可以使用 insmod 命令加载或插入模块,使用 rmmod 命令移除模块,但这些命令可能不会考虑模块依赖关系,使用不当可能会导致内核不稳定或无法使用。
2. 使用 modprobe 命令 :现代Linux发行版引入了 modprobe 命令来管理内核模块,它会自动处理模块依赖关系。

以下是内核管理操作的流程图:

graph LR
    A[开始] --> B[检查内核版本]
    B --> C{是否需要调优?}
    C -- 是 --> D[使用sysctl调优内核]
    C -- 否 --> E[管理内核模块]
    D --> F{是否永久生效?}
    F -- 是 --> G[编辑/etc/sysctl.conf文件]
    F -- 否 --> E
    G --> H[运行sysctl -p使更改生效]
    H --> E
    E --> I{使用哪种方法?}
    I -- insmod套件 --> J[使用lsmod、insmod、rmmod管理模块]
    I -- modprobe --> K[使用modprobe管理模块]
    J --> L[结束]
    K --> L
总结与练习

无线设备是未来连接和黑客攻击的重要领域。在Linux系统中,有专门的命令用于扫描和连接Wi-Fi接入点,如 aircrack - ng 套件中的 airmon - ng airodump - ng 可以扫描和收集范围内无线设备的关键信息。 BlueZ 套件中的 hciconfig hcitool 等工具可以对范围内的蓝牙设备进行扫描和信息收集,这些都是攻击这些设备的必要步骤。

在继续学习之前,你可以通过完成以下练习来巩固所学技能:
1. 使用 ifconfig 检查网络设备,注意任何无线扩展。
2. 运行 iwconfig ,记录任何无线网卡信息。
3. 使用 iwlist 检查范围内的Wi-Fi接入点。
4. 使用 nmcli 检查范围内的Wi-Fi接入点,比较 nmcli iwlist 哪个更有用和直观。
5. 使用 nmcli 连接到你的Wi-Fi接入点。
6. 使用 hciconfig 启动蓝牙适配器,并使用 hcitool 扫描附近可发现的蓝牙设备。
7. 使用 l2ping 测试这些蓝牙设备是否在可到达范围内。

通过这些练习和对相关技术的掌握,你可以更好地理解和操作Linux系统中的无线设备和内核管理。

内容概要:本文详细介绍了“秒杀商城”微服务架构的设计实战全过程,涵盖系统从需求分析、服务拆分、技术选型到核心功能开发、分布式事务处理、容器化部署及监控链路追踪的完整流程。重点解决了高并发场景下的超卖问题,采用Redis预减库存、消息队列削峰、数据库乐观锁等手段保障数据一致性,并通过Nacos实现服务注册发现配置管理,利用Seata处理跨服务分布式事务,结合RabbitMQ实现异步下单,提升系统吞吐能力。同时,项目支持Docker Compose快速部署和Kubernetes生产级编排,集成Sleuth+Zipkin链路追踪Prometheus+Grafana监控体系,构建可观测性强的微服务系统。; 适合人群:具备Java基础和Spring Boot开发经验,熟悉微服务基本概念的中高级研发人员,尤其是希望深入理解高并发系统设计、分布式事务、服务治理等核心技术的开发者;适合工作2-5年、有志于转型微服务或提升架构能力的工程师; 使用场景及目标:①学习如何基于Spring Cloud Alibaba构建完整的微服务项目;②掌握秒杀场景下高并发、超卖控制、异步化、削峰填谷等关键技术方案;③实践分布式事务(Seata)、服务熔断降级、链路追踪、统一配置中心等企业级中间件的应用;④完成从本地开发到容器化部署的全流程落地; 阅读建议:建议按照文档提供的七个阶段循序渐进地动手实践,重点关注秒杀流程设计、服务间通信机制、分布式事务实现和系统性能优化部分,结合代码调试监控工具深入理解各组件协作原理,真正掌握高并发微服务系统的构建能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值