Vulnerability Assessment of SNMP Service – III

本文为SNMP审计系列第三篇,介绍了使用snmpwalk工具进行更细致的目标探测。snmpwalk能帮助用户获取指定OID树形结构中的信息,通过发送GETNEXT请求来遍历和收集数据。

Vulnerability Assessment of SNMP Service – III


背景

这是第三篇关于snmp审计的文章。前面我们已经介绍了基础,探测,及利用工具获取信息。我们已经提到了snmpcheck,使用它可以获取snmpOID中存储的数据。但是,这个工具多少有点无法满足需求。


目标

snmpcheck简单易用,可以快速的攻击目标,但是它不能帮助我们了解OID树形结构。这篇文章中,我们将介绍如何探测指定的OID树。这样允许高级用户探测感兴趣的内容,而不是由程序自动发送请求及收集所有信息,不管是有用的,还是无用的。

这篇文章里面,我们会介绍另一款工具snmpwalk.它可以帮助我们对目标做一些细微的探测。


目标对象

这篇文章针对的是高级读者。假设读者已经深入理解SNMP协议,掌握SNMPOID树结构等。用户应该知道,什么是OID,如何浏览OID树结构,需要获取什么数据。

稍候会给读者介绍一点OID基础,但要注意这不能取代自我学习。如果不熟悉OID,我强烈推荐阅读MIB& OID,然后结合本文的知识,你将获益匪浅。


为何寻找额外的工具

确实,使用一个工具这不是什么问题。但是,有时候因为需求,我们需要选择其他的工具;总会有一种方法,能够将任务完成的很漂亮。当我们学习某些东西的时候,需要的不仅仅是工具。这样能够帮我们了解什么时候事情会失败,怎么样做会更好。

snmpcheck已经能够完成任务,如果我们想要获取更多的信息,这样可能会发送许多的请求。我们不想这么做,但是我们无法控制工具的行为,除非我们修改它。

发送许多的请求,这并不是一个好主意,我们更需要的是用最少的数据包去探测目标,这样可以降低触发入侵防护设施的机率。

snmpwalk会发送一个请求,以便获取OID的位置,但如果OID应答中包含子树,snmpwalk会探测下面的所有节点,这样会针对性的发送一些请求。高级用户与新手之间最大的不同就在这里。高级用户知道自己正在做什么,新手不知道自己探测指定OID的过程中,发送了多少网络请求。后面会介绍有子树,与无子树这两种情况。


假设

  1. 网络上已经有一台运行默认SNMP配置的主机或网络设备。

  2. 你的测试工具包中已经有了snmpwalk


Object ID(OID) 概述

我将粗略的介绍一下对象标识(OID),因为它是snmpwalk的核心.用户可以通过指定的OID去遍历探测MIB树形结构中的对象。

OID树形结构很清晰。每个snmp对象用数字标识,如下所示:


ROOT


Iso(1)

Org(3)

Dod(6)

Internet(1)






Directory(1)

Mgmt(2)

Experimental(3)

Private(4)


从上面的结构中,我们了解到,ISO对象的OID1root的第三个对象是org。所以,如果想参考Iso,需要指明OID1;类似的,如果是orgOID则是1.3dod则是1.3.6。如果你觉得这个没什么用,这意味着,可能需要额外再读一次。下面介绍一下snmpwalk如何从远程主机的SNMP服务获取信息。


SNMPWALK

snmpwalk 可以针对性的查询网络设备,获取树信息。发送GETNEXT请求,snmpwalk会查询OID下面的所有变量,并将根据请求结果返回给用户。这个工具有许多的开关,大部分都很重要。

root@gnu:~# snmpwalk -c public192.168.1.105 -v1 1

iso.3.6.1.2.1.1.1.0 = STRING: "Linuxruby 2.6.32-5-686 #1 SMP Tue May 13 16:33:32 UTC 2014 i686"

iso.3.6.1.2.1.1.2.0 = OID:iso.3.6.1.4.1.8072.3.2.10

iso.3.6.1.2.1.1.3.0 = Timeticks:(2249333) 6:14:53.33

iso.3.6.1.2.1.1.4.0 = STRING: "Me<me@example.org>"

iso.3.6.1.2.1.1.5.0 = STRING:"ruby"

iso.3.6.1.2.1.1.6.0 = STRING:"Sitting on the Dock of the Bay"

iso.3.6.1.2.1.1.7.0 = INTEGER: 72

iso.3.6.1.2.1.1.8.0 = Timeticks: (0)0:00:00.00

iso.3.6.1.2.1.1.9.1.2.1 = OID:iso.3.6.1.6.3.10.3.1.1

iso.3.6.1.2.1.1.9.1.2.2 = OID:iso.3.6.1.6.3.11.3.1.1

iso.3.6.1.2.1.1.9.1.2.3 = OID:iso.3.6.1.6.3.15.2.1.1

iso.3.6.1.2.1.1.9.1.2.4 = OID:iso.3.6.1.6.3.1

iso.3.6.1.2.1.1.9.1.2.5 = OID:iso.3.6.1.2.1.49

iso.3.6.1.2.1.1.9.1.2.6 = OID:iso.3.6.1.2.1.4

iso.3.6.1.2.1.1.9.1.2.7 = OID:iso.3.6.1.2.1.50

iso.3.6.1.2.1.1.9.1.2.8 = OID:iso.3.6.1.6.3.16.2.2.1

iso.3.6.1.2.1.1.9.1.3.1 = STRING:"The SNMP Management Architecture MIB."

iso.3.6.1.2.1.1.9.1.3.2 = STRING:"The MIB for Message Processing and Dispatching."

iso.3.6.1.2.1.1.9.1.3.3 = STRING:"The management information definitions for the SNMPUser-based Security Model."

iso.3.6.1.2.1.1.9.1.3.4 = STRING:"The MIB module for SNMPv2 entities"

iso.3.6.1.2.1.1.9.1.3.5 = STRING:"The MIB module for managing TCP implementations"

iso.3.6.1.2.1.1.9.1.3.6 = STRING:"The MIB module for managing IP and ICMP implementations"

iso.3.6.1.2.1.1.9.1.3.7 = STRING:"The MIB module for managing UDP implementations"

iso.3.6.1.2.1.1.9.1.3.8 = STRING:"View-based Access Control Model for SNMP."

iso.3.6.1.2.1.1.9.1.4.1 = Timeticks:(0) 0:00:00.00

iso.3.6.1.2.1.1.9.1.4.2 = Timeticks:(0) 0:00:00.00

iso.3.6.1.2.1.1.9.1.4.3 = Timeticks:(0) 0:00:00.00

iso.3.6.1.2.1.1.9.1.4.4 = Timeticks:(0) 0:00:00.00

iso.3.6.1.2.1.1.9.1.4.5 = Timeticks:(0) 0:00:00.00

iso.3.6.1.2.1.1.9.1.4.6 = Timeticks:(0) 0:00:00.00

iso.3.6.1.2.1.1.9.1.4.7 = Timeticks:(0) 0:00:00.00

iso.3.6.1.2.1.1.9.1.4.8 = Timeticks:(0) 0:00:00.00

iso.3.6.1.2.1.25.1.1.0 = Timeticks:(2572475) 7:08:44.75

iso.3.6.1.2.1.25.1.2.0 = Hex-STRING:07 DE 08 0A 13 0C 1B 00 2D 04 00

iso.3.6.1.2.1.25.1.3.0 = INTEGER:1536

iso.3.6.1.2.1.25.1.4.0 = STRING:"BOOT_IMAGE=/boot/vmlinuz-2.6.32-5-686root=UUID=a01d3689-98bb-47e9-9be0-fe57c7d89628 ro quiet

"

iso.3.6.1.2.1.25.1.5.0 = Gauge32: 3

iso.3.6.1.2.1.25.1.6.0 = Gauge32:123

iso.3.6.1.2.1.25.1.7.0 = INTEGER: 0

End of MIB

root@gnu:~# snmpwalk -c public192.168.1.105 -v1 1.3.6.1.2.1.1.1.0

iso.3.6.1.2.1.1.1.0 = STRING: "Linux ruby 2.6.32-5-686 #1SMP Tue May 13 16:33:32 UTC 2014 i686"


we can also use iReasoning MIB Browser and SnmpB.


参考链接
http://resources.infosecinstitute.com/vulnerability-assessment-of-snmp-service-part-4/

http://pen-testing.sans.org/blog/2013/05/31/invasion-of-the-network-snatchers-part-i

<think>嗯,用户遇到了OpenVAS Scanner Daemon启动失败的问题,需要解决。首先,我得回想一下常见的OpenVAS相关问题。可能的原因有很多,比如依赖项未安装、配置文件错误、端口冲突、权限问题或者日志中的具体错误信息。 首先,检查依赖项是否正确安装。用户可能安装了OpenVAS但缺少某些必要的库或服务,比如PostgreSQL数据库是否运行正常,因为OpenVAS依赖它。此外,确保所有相关的包都更新到最新版本,避免版本不兼容的问题。 然后,查看日志文件,这是关键。日志通常位于/var/log/openvas/目录下,比如scanner.log或gsad.log。通过查看日志中的错误信息,可以快速定位问题。例如,如果日志显示端口被占用,就需要检查哪个进程占用了默认的9391或9392端口,并终止该进程或修改OpenVAS的端口配置。 权限问题也不容忽视。OpenVAS相关的服务可能需要以特定用户(如openvas或gvm)运行,如果文件或目录的权限不正确,会导致服务启动失败。用户需要检查数据目录如/var/lib/openvas/的权限,确保服务账户有读写权限。 数据库问题也是一个常见原因。如果PostgreSQL服务没有运行,或者数据库初始化不正确,OpenVAS就无法启动。用户需要确认数据库服务是否启动,并尝试重新初始化数据库,比如运行sudo openvasmd --rebuild。 此外,内存不足也可能导致服务启动失败,尤其是在资源有限的系统上。检查系统内存和交换空间是否足够,必要时增加交换空间或关闭其他占用内存的进程。 还有可能,SELinux或防火墙设置阻止了服务的正常运行。临时禁用SELinux或调整防火墙规则,看看是否能解决问题。如果确实如此,就需要配置适当的安全策略,而不是长期禁用安全功能。 最后,如果所有方法都试过了,可能需要完全卸载并重新安装OpenVAS,确保按照官方文档的步骤进行,避免遗漏任何配置步骤。 在生成相关问题的时候,需要涵盖安装、日志分析、端口冲突、数据库修复、权限设置以及内存不足等方面,帮助用户全面了解可能的问题点,并自主排查。</think>### OpenVAS Scanner Daemon启动失败解决方案 #### 一、检查依赖与服务状态 1. **确认关键服务运行状态** 执行命令检查PostgreSQL数据库和Redis服务是否正常: ```bash systemctl status postgresql redis ``` 若服务未启动,使用`systemctl start postgresql redis`启动服务[^1] 2. **验证软件包完整性** 通过包管理器检查关键组件是否完整: ```bash sudo apt-get install --reinstall openvas-scanner gvm ``` #### 二、诊断日志定位问题 1. **实时查看扫描器日志** 通过journalctl追踪实时日志: ```bash journalctl -u openvas-scanner -f ``` 2. **常见错误类型对照表** | 错误代码 | 含义 | 解决方案 | |---------|------|---------| | EADDRINUSE | 端口占用 | 执行`sudo netstat -tulpn | grep 9391`查找占用进程 | | EACCES | 权限不足 | 检查`/var/lib/openvas/`目录所有权 | | SQLSTATE | 数据库错误 | 执行`sudo openvasmd --rebuild --progress` | #### 三、高级修复流程 1. **完整重建数据库** 按顺序执行重建命令: ```bash sudo openvasmd --rebuild --progress sudo greenbone-feed-sync sudo gvm-setup ``` 2. **内存优化配置** 修改`/etc/default/openvas-scanner`配置文件: ```ini OSPD_OPENVAS_MAX_PROCESSES=4 OSPD_OPENVAS_MEMORY_LIMIT=2048 ``` #### 四、系统层检查 1. **SELinux策略调整** 临时设置宽容模式测试: ```bash sudo setenforce 0 sudo systemctl start openvas-scanner ``` 2. **文件系统健康检查** 使用fsck检测可能损坏的文件系统: ```bash sudo fsck /dev/sda1 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值