无线设备扫描与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系统中的无线设备和内核管理。
超级会员免费看
150

被折叠的 条评论
为什么被折叠?



