snmpd服务部署与爆破

部署snmpd服务

yum install -y net-snmp net-snmp-utils
# 启动服务
systemctl start snmpd
# 停止服务
systemctl stop snmpd

snmpwalk命令

snmpwalk命令是操作snmpd服务的工具,可以通过-h中的-v参数看到连接到snmpd有三个版本接口,其中:

  • 只有3版本提供鉴权的功能。
  • 12c版本只需要指定community参数,因此,在爆破snmpd的12c版本时,只需要爆破community字段。
[root@localhost ~]# snmpwalk -h
USAGE: snmpwalk [OPTIONS] AGENT [OID]

  Version:  5.7.2
  Web:      http://www.net-snmp.org/
  Email:    net-snmp-coders@lists.sourceforge.net

OPTIONS:
  -h, --help  display this help message
  -H   display configuration file directives understood
  -v 1|2c|3  specifies SNMP version to use
  -V, --version  display package version number
SNMP Version 1 or 2c specific
  -c COMMUNITY  set the community string
SNMP Version 3 specific
  -a PROTOCOL  set authentication protocol (MD5|SHA)
  -A PASSPHRASE  set authentication protocol pass phrase
  -e ENGINE-ID  set security engine ID (e.g. 800000020109840301)
  -E ENGINE-ID  set context engine ID (e.g. 800000020109840301)
  -l LEVEL  set security level (noAuthNoPriv|authNoPriv|authPriv)
  -n CONTEXT  set context name (e.g. bridge1)
  -u USER-NAME  set security name (e.g. bert)
  -x PROTOCOL  set privacy protocol (DES|AES)
  -X PASSPHRASE  set privacy protocol pass phrase
  -Z BOOTS,TIME  set destination engine boots/time

创建用户

查看创建用户命令参数:

Usage:
  net-snmp-create-v3-user [-ro] [-A authpass] [-X privpass]
                          [-a MD5|SHA] [-x DES|AES] [username]

可以看到这里create-v3就是上面讲到的v3版本,只有v3版本提供用户鉴权的接口。

参数说明:

  • -ro: 就是read only的意思
  • -A: 设置认证的密码,长度必须超过8位,否则登录会提示密码太短。
  • -X: 设置是否加密账号,如果指定了这个参数,登录的时候一定要带上,否则会报错。
  • -a和-x就是将密码设置为不同的加密方式(严格意义上来说,MD5不算是加密方式), -x如果不设置参数,默认为DES。
  • username: 最后就是用户名,snmpd似乎没有提供删除或修改用户的接口,修改用户密码同创建用户,只需将密码设置成其他的即可。

注意事项:创建用户必须先停止snmpd服务,用户创建完成后再重新启动服务,然后使用snmpwalk接口进行操作。

创建与登录示例:

# 创建认证且加密的读写账户(authPriv)
net-snmp-create-v3-user -a MD5 -A password2 -X password2 -x DES user2
# 登录命令
snmpwalk -v 3 localhost -u user2 -a MD5 -A password2 -X password2 -l authPriv -x DES .1.3.6.1.2.1.1

# 创建认证但不加密的只读账户(authNoPriv)
net-snmp-create-v3-user -ro -a MD5 -A password3 user3
# 登录命令
snmpwalk -v 3 localhost -u user3 -a MD5 -A password3 -l authNoPriv -x DES .1.3.6.1.2.1.1

# 创建认证但不加密的读写账户(authNoPriv)
net-snmp-create-v3-user -ro -a MD5 -A password3 user3
# 登录命令
snmpwalk -v 3 localhost -u user3 -a MD5 -A password3 -l authNoPriv -x DES .1.3.6.1.2.1.1

除了authPriv以外,不管是否是-ro账户,使用的登录命令其实是一样的。
.1.3.6.1.2.1.1可以理解为是snmpd服务所在主机上硬件设备的代号,不同的硬件设备有各自唯一的代号。

登录总结

  1. 密码必须大于等于8位数,否则报错The supplied password length is too short
  2. 如果账户不存在,则报错:Unknown user name。因此爆破时,可以先将爆破账号,然后将不存在的账户排除。
  3. 如果密码错误,则报错:incorrect password, community or key
  4. 如果账号的加密方式是authPriv,爆破时使用的参数可以是authNoPriv,但是如果没有指定-X参数,同样会报错。
  5. 如果账号的加密方式是authPriv-A密码正确,-X后面的密码错误,则会报错:Timeout: No Response from [IP地址]
  6. 如果账号的加密方式是authNoPriv,爆破时使用的参数是authPriv,则会报错。
  7. 如果账号的加密方式是authNoPriv,爆破时使用的参数是authNoPriv,设置-X参数为长度大于等于8位数的任意值都没有影响。
原文地址:https://www.cnblogs.com/liuhuan086/p/15632916.html