尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

RouterScan中文版内网资产清点与安全巡检实战指南

RouterScan中文版内网资产清点与安全巡检实战指南 简介RouterScan中文版是一款面向个人用户与中小企业网络管理员的路由器安全检测工具用于评估和排查家庭或办公网络中路由器的安全配置帮助发现默认密码、固件未更新、开放端口及不安全服务等常见隐患。资源包共116个文件以69个html页面、17张png截图、8个txt说明及5个js脚本为主体另含5个dll动态库、4个exe可执行程序与css、md、ini、log等辅助文件压缩包约4.2MB结构完整便于直接运行与查阅。目前已有435人学习下载。通过该工具读者可对指定IP范围自动扫描并列出路由器设备查看每台设备的安全状况并依据提示的修复建议处理风险项同时可结合Nmap、Wireshark等工具做更全面的网络安全评估。预发布版本可能存在不稳定或已知问题适合具备一定网络基础、希望提升路由器防护能力的用户参考使用。1. RouterScan 中文版到底在扫什么从一次内网资产清点说起很多人第一次听到 RouterScan是因为接手了一个没人说得清的内网。前任运维留下一句“大概两百多台设备”结果一查 ARP 表光在线 IP 就四百多个里面混着路由器、光猫、摄像头、打印机、NAS还有几台不知道谁插的随身 WiFi。这时候你需要的不是漏洞利用而是一个能快速把“谁在线、什么型号、开了哪些端口、默认口令能不能进”一次性拉出来的工具。RouterScan 就是干这个的它面向路由器与嵌入式网络设备做批量存活探测、端口识别、Web 管理界面指纹匹配和弱口令尝试中文版主要解决界面和报告里的编码问题。它适合做内网资产梳理、设备台账补全、安全自查前的底数摸排不适合拿去做未授权的对外扫描。下面按“先搞懂它在扫什么再动手跑通最后把坑填上”的顺序讲。2. RouterScan 的探测逻辑与中文版适配点2.1 它到底发了哪些包三层探测链路拆解RouterScan 的工作方式并不神秘本质上是把几类探测串成流水线。第一步是主机存活判断常见做法是 ICMP Echo 加 TCP SYN 探测组合因为很多嵌入式设备会关掉 ICMP 响应只靠 ping 会漏掉一大片。第二步是端口扫描重点不是全端口而是 80、443、8080、8443、23、22、7547 这几个路由器高频端口全端口扫会慢到让你怀疑人生。第三步是 Web 指纹识别通过请求首页、读取Server头、匹配title和特定路径比如/login.cgi、/cgi-bin/luci来判断品牌和固件类型。第四步才是口令尝试用内置字典去撞登录接口。理解这条链路很重要因为它决定了你调参的方向。如果存活探测漏了后面全白搭如果端口选错了指纹就抓不到如果指纹没匹配上口令字典再全也没用因为登录表单的字段名和提交路径都不一样。中文版在这条链路上没有改探测逻辑改的是输出编码和界面字符集所以你在报告里看到的中文设备名不会变成乱码这一点在整理台账时很关键。2.2 中文版和原版差在哪编码、字典、报告三处很多人以为“中文版”是功能增强版其实不是。它的改动集中在三个地方。第一是字符编码处理原版在读取设备返回的 GBK 编码页面标题时容易乱码中文版做了转码让“TP-LINK 无线路由器”能正常显示。第二是内置字典中文版通常会补入国内常见设备的默认口令组合比如admin/admin、admin/123456、root/admin这类高频项。第三是报告导出中文版在 CSV 里用 UTF-8 with BOM避免用 Excel 打开时中文变问号。这里要提醒一句字典是双刃剑。字典越大扫描时间越长而且很多设备有登录失败锁定撞多了直接把管理口锁死后面连正常登录都进不去。我一般会把字典分成两轮第一轮只跑十个最高频口令第二轮再根据指纹结果针对性补。中文版的字典文件通常是明文你可以自己裁剪别直接全量跑。2.3 扫描前的环境准备与授权边界动手之前先把环境理清楚。你需要一台和目标任务同网段的机器最好是 Linux因为批量并发和抓包排查更方便。Windows 也能跑但要注意防火墙会拦掉一部分 SYN 包导致结果偏少。网络层面如果你扫的是自己管理的网段直接接核心交换机就行如果是客户现场务必拿到书面授权并且避开业务高峰因为部分老设备在大量连接请求下会重启。授权边界这件事不是走形式。我见过有人拿 RouterScan 扫了一栋楼的公共网段结果触发运营商侧的风控整条线路被限速。所以扫描范围要精确到 IP 段和端口别图省事写0.0.0.0/0。另外扫描频率要压住并发线程别超过 50否则很多低端路由器直接假死。下面这张表是我常用的起步参数你可以根据现场情况微调。参数项建议起步值调整方向并发线程30设备老就降到 10超时时间3 秒跨网段调到 5 秒重试次数1网络抖动大调到 2端口范围80,443,8080,8443,23,22按指纹结果补字典轮次先 10 条高频再按品牌补3. 用 RouterScan 中文版跑通一次内网清点3.1 最小可用流程从导入 IP 段到导出 CSV假设你已经拿到授权目标网段是192.168.10.0/24。第一步是把 IP 段导入。RouterScan 中文版一般支持手动输入范围或导入 txt每行一个 IP 或一个 CIDR。导入后先别急着点开始把端口和线程按上一节的表设好。第二步是选择扫描模式通常有“快速识别”和“深度扫描”两档快速识别只做存活和端口深度扫描才做指纹和口令。第一次跑建议先快速识别确认在线设备数量对不对再决定要不要深度扫。# 生成待扫描 IP 列表输出到 targets.txt # 这里用 seq 生成 1 到 254 的主机位拼成完整 IP for i in $(seq 1 254); do echo 192.168.10.$i done targets.txt # 查看生成结果确认行数和首尾 IP wc -l targets.txt head -3 targets.txt tail -3 targets.txt这段脚本的作用是生成标准的目标列表文件。seq 1 254生成主机位echo拼接网段前缀重定向写入targets.txt。跑完后用wc -l确认是 254 行用head和tail检查首尾有没有拼错。参数上唯一要改的是网段前缀换成你的实际网段即可。注意别把网关和广播地址混进去虽然扫了也不报错但会浪费一次探测。导入后点开始观察进度条和实时日志。如果日志里大量出现timeout说明超时设短了或者网络有丢包如果在线数量远少于预期先检查本机防火墙和 ARP 表。扫描结束后导出 CSV用 Excel 或脚本做二次筛选。我一般会按“开放 23 端口”和“指纹含默认页”两个条件先筛一遍这两类设备风险最高优先处理。3.2 指纹识别结果怎么读品牌、固件、登录入口三列导出的 CSV 里信息很多但真正有用的是三列品牌、固件版本、登录入口路径。品牌列告诉你这是什么设备固件版本决定你有没有已知漏洞可查登录入口路径决定你后面能不能用脚本批量验证口令。举个例子如果指纹显示TP-LINK且登录入口是/login.cgi那你就知道它的登录表单字段通常是username和password提交方式是 POST。如果显示Huawei且入口是/cgi-bin/luci那字段名可能变成luci_username直接套用会失败。读指纹时要注意误报。有些设备首页是通用模板RouterScan 可能把 A 品牌识别成 B 品牌。遇到拿不准的手动打开浏览器访问一下看页面标题和 logo 确认。这一步花不了几分钟但能避免后面用错字典白跑一轮。另外固件版本列如果是空的不代表设备没版本信息可能是页面需要登录后才显示这种情况先记下来等口令验证通过后再补。3.3 口令验证的节奏控制别把管理口撞锁口令验证是最容易翻车的环节。很多路由器有登录失败锁定机制连续错五次就锁 IP 十分钟你越急它锁得越久。我一般会把验证节奏拆成三步第一步只试三个口令admin/admin、admin/空、root/admin这三个能覆盖相当一部分未改密设备第二步根据品牌补两到三个品牌特定口令第三步才上完整字典而且每台设备之间加随机延迟。# 读取扫描结果 CSV按品牌分组统计决定口令验证顺序 import csv from collections import defaultdict # 打开 RouterScan 导出的结果文件注意用 utf-8-sig 处理 BOM with open(scan_result.csv, encodingutf-8-sig) as f: reader csv.DictReader(f) brand_count defaultdict(int) for row in reader: # 只统计开放了 Web 管理端口的设备 if row.get(80) open or row.get(8080) open: brand row.get(brand, unknown).strip() brand_count[brand] 1 # 按数量从多到少排序优先处理数量多的品牌 for brand, count in sorted(brand_count.items(), keylambda x: -x[1]): print(f{brand}: {count} 台)这段代码的作用是统计各品牌设备数量帮你决定先攻哪个品牌。utf-8-sig是为了正确读取带 BOM 的 CSV否则第一列列名会带隐藏字符。row.get(80)和row.get(8080)是判断 Web 端口是否开放不同版本的列名可能略有差异跑之前先打印一行看看实际列名。输出结果里数量最多的品牌通常意味着默认口令命中率最高优先处理它能最快出成果。参数上唯一要改的是文件名和端口列名其他不用动。4. 扫描结果里的常见异常与排查4.1 在线设备数远少于预期现象ARP 表里明明有三百多个 MACRouterScan 只报了一百多台在线。原因通常有三个一是 ICMP 被禁且 TCP SYN 被防火墙丢弃二是本机防火墙拦了回包三是并发太高导致部分设备没来得及响应。解决方法是先关掉本机防火墙做对比测试再把并发降到 10 重扫一遍。如果数量上来了说明是并发问题如果还是少换一台同网段 Linux 机器再试排除本机网络栈的影响。4.2 指纹识别全是 unknown现象设备在线、端口开放但品牌列全是unknown。原因多半是 Web 页面需要特定 Host 头或 Cookie 才返回正常内容RouterScan 的默认请求没带这些。解决方法是手动抓一个正常登录的请求看它带了哪些头然后在 RouterScan 的自定义请求头里补上。另一个可能是设备用了非标准端口比如 8081而你的端口列表里没加补上再扫。4.3 口令验证全部失败但手动能登录现象手动浏览器能进管理页RouterScan 跑完字典却一个都没成。原因通常是指纹识别出的登录路径不对或者表单字段名不匹配。解决方法是打开浏览器开发者工具抓一次登录请求看实际的 POST URL 和字段名然后在 RouterScan 的自定义登录模板里改。还有一种情况是设备用了验证码这种就别硬撞了直接人工处理。4.4 扫描到一半程序卡死现象进度条不动日志也不再刷新。原因一般是某台设备返回了超大响应体或者触发了设备的连接数限制导致 TCP 连接挂起。解决方法是把超时时间从 3 秒降到 2 秒重试次数设为 0并且开启“跳过无响应设备”选项。如果还卡把扫描范围拆成多个小段分段跑别一次性怼整个 B 段。4.5 导出的 CSV 中文乱码现象用 Excel 打开 CSV设备名和品牌全是问号或方块。原因是编码没对上。中文版一般导出 UTF-8 with BOM但有些版本默认 GBK。解决方法是先用记事本打开看编码如果是 UTF-8 无 BOM用脚本转一下或者直接用 Python 的utf-8-sig读取后再另存。别用 Excel 直接改改完保存又会变回本地编码下次打开继续乱。5. 把 RouterScan 接进日常巡检定时任务与结果比对5.1 用 cron 做每周自动扫描与差异报告单次扫描只能看到当下状态真正有价值的是变化。我习惯把 RouterScan 挂到 cron 上每周日凌晨跑一次导出带日期的 CSV然后和上周的结果做 diff。新增的在线设备、新开放的端口、指纹变化的设备这三类是要重点看的。新增设备可能是有人私接新开放端口可能是配置被改指纹变化可能是固件升级或设备替换。# 每周日凌晨 2 点执行扫描结果按日期归档 # 注意 RouterScan 命令行参数因版本而异这里用占位符表示 0 2 * * 0 /opt/routerscan/routerscan-cli \ --targets /opt/routerscan/targets.txt \ --ports 80,443,8080,8443,23,22 \ --threads 20 \ --timeout 3 \ --output /opt/routerscan/reports/scan_$(date \%Y\%m\%d).csv # 扫描完成后对比最近两份报告输出新增 IP python3 /opt/routerscan/diff_report.py \ /opt/routerscan/reports/scan_$(date \%Y\%m\%d).csv \ /opt/routerscan/reports/scan_$(date -d 7 days ago \%Y\%m\%d).csv这段 cron 配置的关键点是日期变量$(date \%Y\%m\%d)注意在 crontab 里百分号要转义成\%否则会被当成换行。--threads 20比手动扫描时更低因为无人值守时没必要抢时间稳定优先。diff_report.py是自己写的小脚本用 Python 的csv模块读两份报告按 IP 做集合差集输出新增和消失的设备。参数上要改的是路径和端口列表其他保持默认即可。5.2 结果比对时重点看哪三列差异报告出来后别从头看到尾只看三列IP、开放端口、指纹。IP 新增说明有设备接入IP 消失可能是设备下线也可能是扫描漏了要结合 ARP 表确认。开放端口变化最危险比如某台设备突然多了 23 端口说明 Telnet 被打开了这是典型的风险信号。指纹变化说明设备可能被替换或固件升级如果是升级通常风险降低如果是替换成未知品牌就要人工确认。我一般会把差异结果按风险分级新增 IP 且开放 23 端口标红端口变化但指纹没变标黄只有 IP 消失标灰。标红的当天处理标黄的周末处理标灰的月底统一核对。这套分级不是拍脑袋是踩过坑之后总结的——曾经有一台设备被私接后开了 Telnet默认口令没改两周后成了内网横向的跳板。从那以后23 端口的变化我一律当天看。5.3 把扫描结果同步进资产台账扫描只是手段最终要落到台账上。我习惯把 RouterScan 的 CSV 和现有资产表做关联用 IP 或 MAC 做键把品牌、固件、开放端口、最后在线时间补进去。这样下次有人问“这台设备什么型号”直接查台账就行不用再扫一遍。同步脚本用 Python 写读 CSV 和 Excel按 IP 匹配更新对应列。注意 Excel 读写用openpyxl别用xlrd后者对新格式支持不好。# 将扫描结果合并进资产台账按 IP 匹配更新 import csv from openpyxl import load_workbook # 读取扫描结果建立 IP 到设备信息的映射 scan_map {} with open(scan_result.csv, encodingutf-8-sig) as f: for row in csv.DictReader(f): ip row.get(ip, ).strip() if ip: scan_map[ip] { brand: row.get(brand, ), firmware: row.get(firmware, ), ports: row.get(open_ports, ) } # 打开资产台账逐行更新 wb load_workbook(asset.xlsx) ws wb.active for row in ws.iter_rows(min_row2): ip str(row[0].value).strip() if ip in scan_map: row[2].value scan_map[ip][brand] row[3].value scan_map[ip][firmware] row[4].value scan_map[ip][ports] wb.save(asset_updated.xlsx)这段代码的核心是scan_map字典用 IP 做键把扫描结果暂存起来然后遍历台账逐行匹配更新。min_row2是跳过表头row[0]到row[4]对应台账里的 IP、名称、品牌、固件、端口列列顺序要按你的实际表调整。跑之前先备份台账因为wb.save是覆盖写写错了没有后悔药。参数上要改的是文件名和列索引其他不用动。6. 进阶用自定义指纹模板提高识别率RouterScan 内置的指纹库覆盖主流品牌但遇到小众设备或定制固件就容易抓瞎。这时候可以自己写指纹模板。模板的本质是一组匹配规则请求哪个路径、匹配响应里的什么字符串、匹配成功后标记成什么品牌。我一般会先手动访问设备首页看标题和特征路径然后照着内置模板的格式写一条。比如某款国产光猫的登录页标题是“天翼宽带”特征路径是/cgi-bin/login.cgi那模板就写两条规则一条匹配标题一条匹配路径命中任意一条就标记品牌。写模板时要注意大小写和编码。有些设备返回的标题是 GBK 编码直接匹配 UTF-8 字符串会失败所以模板里最好用十六进制或正则的宽松匹配。另外匹配字符串别选太通用的词比如“登录”这种词几乎每个设备都有会导致误报。选品牌名或型号前缀这种唯一性强的词。模板写好后先在小范围测试确认命中率和误报率都能接受再放进正式扫描。验证模板是否生效最简单的办法是拿一台已知设备扫一遍看品牌列是不是你标记的值。如果没生效先检查路径对不对再检查匹配字符串有没有被转义。我踩过的一个坑是模板文件保存成了带 BOM 的 UTF-8导致第一条规则前面多了隐藏字符匹配一直失败。后来统一用无 BOM 保存问题就没了。这个细节很小但排查起来很费时间希望帮到你。本文还有配套的精品资源点击获取
返回列表