从一次真实的渗透测试说起攻击者如何利用SNMP弱口令摸清你的内网家底那天下午客户公司的网络管理员老张接到了一通奇怪的电话。你们的服务器正在对外发送大量异常流量电话那头的运营商技术人员这样说道。老张半信半疑地登录防火墙查看却发现一切正常。他不知道的是这通电话正是攻击者精心设计的心理战——就在通话过程中攻击者已经通过一个被所有人忽视的UDP 161端口悄无声息地摸清了整个内网的底细。1. 不起眼的入口SNMP服务为何成为攻击者的最爱在大多数企业的安全防护体系中SNMP服务就像个透明人。它默默运行在网络设备、服务器甚至打印机上却很少引起安全管理员的重视。这种普遍存在的忽视恰恰让SNMP成为了攻击者最爱的突破口。SNMP协议设计之初就是为了方便网络管理它能提供设备的详尽信息系统用户列表包括隐藏的管理员账户正在运行的所有进程含杀毒软件等安全产品已安装的软件及版本寻找存在漏洞的旧版本网络连接状态发现内部其他系统的连接关系存储设备信息寻找敏感文件存放位置安全团队常犯的错误是将SNMP视为只读协议而放松警惕却忽略了信息泄露本身就是最危险的漏洞。我曾在一个金融客户的渗透测试中发现他们核心交换机的SNMP仍在使用默认团体名public。通过这个看似无害的只读权限我不仅拿到了所有VLAN划分信息还发现了连接核心数据库的跳板机IP。三周后当我在汇报会上展示出完整的内网拓扑图时CTO的脸色变得煞白。2. 攻击者视角如何将碎片信息拼成内网地图2.1 初始信息收集假设我们发现了一台开启SNMP服务的Windows服务器使用nmap进行基础探测nmap -sU -p161 --scriptsnmp-sysdescr 192.168.1.100返回结果可能包含Host script results: | snmp-sysdescr: Hardware: x86_64 | System: Windows 10 Enterprise 6.3 |_ Kernel: 10.0 build 18362这短短几行已经透露了关键信息这是一台Win10企业版系统版本号1903build 18362存在多个公开漏洞。2.2 用户枚举实战接下来获取用户列表这对后续的密码爆破至关重要nmap -sU -p161 --scriptsnmp-win32-users 192.168.1.100典型输出会显示| snmp-win32-users: | Administrator | Guest | SQLService | BackupAdmin |_ DevUser01看到BackupAdmin和SQLService这样的账户名有经验的红队成员马上会想到备份账户可能拥有特殊权限服务账户密码可能长期未更换命名规律暗示其他系统存在类似账户2.3 进程与软件清单通过SNMP获取的进程列表能暴露更多敏感信息snmputil walk 192.168.1.100 public .1.3.6.1.2.1.25.4.2.1.2输出可能包含1.3.6.1.2.1.25.4.2.1.2.1 System 1.3.6.1.2.1.25.4.2.1.2.100 Symantec Endpoint Protection 1.3.6.1.2.1.25.4.2.1.2.230 TeamViewer_Service.exe 1.3.6.1.2.1.25.4.2.1.2.350 sqlservr.exe这些信息价值连城杀毒软件类型提示免杀方案远程控制软件可能提供备用通道数据库进程暴露了数据存储位置3. 从信息到控制攻击链的构建艺术3.1 网络拓扑重建通过SNMP的ARP表和路由信息可以绘制出惊人的内网结构nmap -sU -p161 --scriptsnmp-netstat 192.168.1.100输出示例| snmp-netstat: | TCP 192.168.1.100:3389 - 10.10.1.15:55342 | TCP 192.168.1.100:1433 - 192.168.2.33:49822 |_ UDP 192.168.1.100:161 - *这个结果显示有人通过RDP连接了10.10.1.15可能是管理员工作站存在到192.168.2.33的SQL Server连接可能是数据库服务器本机开放着SNMP端口3.2 横向移动路径结合多台设备的SNMP信息攻击者可以构建完整的攻击路径信息类型攻击价值防御难点用户列表针对性密码爆破无法完全隐藏系统账户进程列表识别安全软件/开发工具业务需要真实进程名网络连接发现高价值目标系统合法业务需要网络通信安装软件寻找存在漏洞的旧版本降级可能影响业务稳定计划任务发现自动执行的脚本/程序运维依赖定时任务4. 防御者的反击从被动到主动的防护策略4.1 SNMP安全配置清单对于必须使用SNMP的环境建议采用以下加固措施团体名强化长度至少16字符包含大小写字母、数字和特殊符号不同设备使用不同团体名访问控制access-list 10 permit 192.168.1.100 snmp-server community Jx!8sK3q$L9pW2mR RO 10加密升级优先使用SNMPv3配置认证和加密net-snmp-config --create-snmpv3-user -a SHA -x AES -X 强密码 -A 认证密码 snmpadmin4.2 监控与检测方案即使加固后仍需建立有效的监控机制异常流量检测SNMP响应数据超过阈值来自非授权IP的SNMP请求日志分析规则sourcesnmp.log | stats count by src_ip | where count 50蜜罐部署在内网部署伪装SNMP服务设置诱饵信息用于追踪攻击者5. 渗透测试中的经验之谈在一次制造业客户的测试中我们通过打印机SNMP服务拿到了VLAN信息。有趣的是这些打印机使用的团体名竟然是公司成立日期20030815。更糟的是财务部的文件服务器使用了相同的团体名。三小时后我们拿到了全部供应商付款记录。另一个案例是某互联网公司他们的SNMP配置看似安全复杂的团体名、严格的ACL。但我们发现其内部监控系统在通过SNMP收集数据时使用的是硬编码在脚本中的团体名。通过Git历史记录我们找到了三年前使用的旧团体名——令人震惊的是这个密码仍在某些网络设备上生效。
从一次真实的渗透测试说起:攻击者如何利用SNMP弱口令摸清你的内网家底
从一次真实的渗透测试说起攻击者如何利用SNMP弱口令摸清你的内网家底那天下午客户公司的网络管理员老张接到了一通奇怪的电话。你们的服务器正在对外发送大量异常流量电话那头的运营商技术人员这样说道。老张半信半疑地登录防火墙查看却发现一切正常。他不知道的是这通电话正是攻击者精心设计的心理战——就在通话过程中攻击者已经通过一个被所有人忽视的UDP 161端口悄无声息地摸清了整个内网的底细。1. 不起眼的入口SNMP服务为何成为攻击者的最爱在大多数企业的安全防护体系中SNMP服务就像个透明人。它默默运行在网络设备、服务器甚至打印机上却很少引起安全管理员的重视。这种普遍存在的忽视恰恰让SNMP成为了攻击者最爱的突破口。SNMP协议设计之初就是为了方便网络管理它能提供设备的详尽信息系统用户列表包括隐藏的管理员账户正在运行的所有进程含杀毒软件等安全产品已安装的软件及版本寻找存在漏洞的旧版本网络连接状态发现内部其他系统的连接关系存储设备信息寻找敏感文件存放位置安全团队常犯的错误是将SNMP视为只读协议而放松警惕却忽略了信息泄露本身就是最危险的漏洞。我曾在一个金融客户的渗透测试中发现他们核心交换机的SNMP仍在使用默认团体名public。通过这个看似无害的只读权限我不仅拿到了所有VLAN划分信息还发现了连接核心数据库的跳板机IP。三周后当我在汇报会上展示出完整的内网拓扑图时CTO的脸色变得煞白。2. 攻击者视角如何将碎片信息拼成内网地图2.1 初始信息收集假设我们发现了一台开启SNMP服务的Windows服务器使用nmap进行基础探测nmap -sU -p161 --scriptsnmp-sysdescr 192.168.1.100返回结果可能包含Host script results: | snmp-sysdescr: Hardware: x86_64 | System: Windows 10 Enterprise 6.3 |_ Kernel: 10.0 build 18362这短短几行已经透露了关键信息这是一台Win10企业版系统版本号1903build 18362存在多个公开漏洞。2.2 用户枚举实战接下来获取用户列表这对后续的密码爆破至关重要nmap -sU -p161 --scriptsnmp-win32-users 192.168.1.100典型输出会显示| snmp-win32-users: | Administrator | Guest | SQLService | BackupAdmin |_ DevUser01看到BackupAdmin和SQLService这样的账户名有经验的红队成员马上会想到备份账户可能拥有特殊权限服务账户密码可能长期未更换命名规律暗示其他系统存在类似账户2.3 进程与软件清单通过SNMP获取的进程列表能暴露更多敏感信息snmputil walk 192.168.1.100 public .1.3.6.1.2.1.25.4.2.1.2输出可能包含1.3.6.1.2.1.25.4.2.1.2.1 System 1.3.6.1.2.1.25.4.2.1.2.100 Symantec Endpoint Protection 1.3.6.1.2.1.25.4.2.1.2.230 TeamViewer_Service.exe 1.3.6.1.2.1.25.4.2.1.2.350 sqlservr.exe这些信息价值连城杀毒软件类型提示免杀方案远程控制软件可能提供备用通道数据库进程暴露了数据存储位置3. 从信息到控制攻击链的构建艺术3.1 网络拓扑重建通过SNMP的ARP表和路由信息可以绘制出惊人的内网结构nmap -sU -p161 --scriptsnmp-netstat 192.168.1.100输出示例| snmp-netstat: | TCP 192.168.1.100:3389 - 10.10.1.15:55342 | TCP 192.168.1.100:1433 - 192.168.2.33:49822 |_ UDP 192.168.1.100:161 - *这个结果显示有人通过RDP连接了10.10.1.15可能是管理员工作站存在到192.168.2.33的SQL Server连接可能是数据库服务器本机开放着SNMP端口3.2 横向移动路径结合多台设备的SNMP信息攻击者可以构建完整的攻击路径信息类型攻击价值防御难点用户列表针对性密码爆破无法完全隐藏系统账户进程列表识别安全软件/开发工具业务需要真实进程名网络连接发现高价值目标系统合法业务需要网络通信安装软件寻找存在漏洞的旧版本降级可能影响业务稳定计划任务发现自动执行的脚本/程序运维依赖定时任务4. 防御者的反击从被动到主动的防护策略4.1 SNMP安全配置清单对于必须使用SNMP的环境建议采用以下加固措施团体名强化长度至少16字符包含大小写字母、数字和特殊符号不同设备使用不同团体名访问控制access-list 10 permit 192.168.1.100 snmp-server community Jx!8sK3q$L9pW2mR RO 10加密升级优先使用SNMPv3配置认证和加密net-snmp-config --create-snmpv3-user -a SHA -x AES -X 强密码 -A 认证密码 snmpadmin4.2 监控与检测方案即使加固后仍需建立有效的监控机制异常流量检测SNMP响应数据超过阈值来自非授权IP的SNMP请求日志分析规则sourcesnmp.log | stats count by src_ip | where count 50蜜罐部署在内网部署伪装SNMP服务设置诱饵信息用于追踪攻击者5. 渗透测试中的经验之谈在一次制造业客户的测试中我们通过打印机SNMP服务拿到了VLAN信息。有趣的是这些打印机使用的团体名竟然是公司成立日期20030815。更糟的是财务部的文件服务器使用了相同的团体名。三小时后我们拿到了全部供应商付款记录。另一个案例是某互联网公司他们的SNMP配置看似安全复杂的团体名、严格的ACL。但我们发现其内部监控系统在通过SNMP收集数据时使用的是硬编码在脚本中的团体名。通过Git历史记录我们找到了三年前使用的旧团体名——令人震惊的是这个密码仍在某些网络设备上生效。