参考地址:
地址:https://www.cnblogs.com/-wenli/p/9571057.html
https://www.cnblogs.com/Fluorescence-tjy/p/10933077.html
具体说明见:https://cloud.tencent.com/developer/news/14370
简单网络管理协议(SNMP)被广泛用于计算机操作系统设备、网络设备等领域监测连接到网络上的设备是否有任何引起管理上关注的情况。在运行SNMP服务的设备上,若管理员配置不当运行默认团体名/弱口令访问,将导致敏感信息泄露。敏感不限于系统运行的进程、已安装的软件、系统存在的用户,运行的服务,端口情况等。通过这些信息,攻击者可以清晰的了解到设备整体情况,根据开放的端口和服务快速定位可入侵点,根据运行的进程名判断是否存在哪些防护软件,有什么bypass的方法。根据存在的用户名,可以大大提高爆破效率等等。
如果能获取只读(RO)或读/写(RW)权限的团体字符串,将对你从设备中提取信息发挥重要作用, snmp v1 v2天生存在安全缺陷,snmp v3中添加了加密功能提供了更好的检查机制,增强了安全性为了获取管理一台交换机的权限,首先你需要找到它的SNMP团体字符串。
snmp默认团体名属于snmp默认弱口令public/privicy。在win7本机上开启snmp服务,并添加pubilc团体名和允许远程连接后(window默认没有接受的团体名也就是社团名称,且不允许远程连接)
SNMP扫描 -信息的金矿 -经常被错误配置 -public /private /manager
onesixtyone
如果你已经知道目标的团体字符串为public ,可以使用下面这条命令,可以看到目标系统的信息
onesixtyone ip public
如果你不知道目标团体字符串
onesixtyone -c /usr/share/doc/onesixtyone/dict.txt 58.215.76.23 -o my.log -w 100
显示对方团体字符串为 public
查看onesixtyone 目录
dpkg -L onesixtyone
查看自带密码目录,你也可以使用自己的字典
cat /usr/share/doc/onesixtyone/dict.txt
SNMPWALK
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SNMPWALK是一个通过SNMP GET-NEXT类型PDU,实现对目标AGENT的某指定MIB分支信息进行完整提取输出的命令工作。
命令行:
snmpwalk [选项] agent [oid]
选项参数:
由于SNMP协议中,不同的协议版本存在不同的参数选项,以下参数按协议分开说明。
1. 普通选项
a) –h 显示帮助
b) –v 1|2c|3 指定SNMP协议版本
c) –V 显示当前SNMPWALK命令行版本
d) –r RETRIES 指定重试次数,默认为0次。
e) –t TIMEOUT 指定每次请求的等待超时时间,单为秒,默认为3秒。
f) –Cc 指定当在WALK时,如果发现OID负增长将是否继续WALK。
2. V1、V2C选项
a) –c COMMUNITY 指定共同体字符串
3. V3选项
a) –l LEVEL 指定安全级别:noAuthNoPriv|authNoPriv|authPriv
b) –u USER-NAME 安全名字
c) –a PROTOCOL 验证协议:MD5|SHA。如果-l指定为authNoPriv或authPriv时才需要。
d) –A PASSPHRASE 验证字符串。如果-l指定为authNoPriv或authPriv时才需要。
e) –x PROTOCOL 加密协议:DES。如果-l指定为authPriv时才需要。
f) –X PASSPHRASE 加密字符串:如果-l指定为authPriv时才需要。
通过nmap自带的审计脚本对snmp安全审计
弱口令检测:nmap –sU –p161 –script=snmp-brute ip //查找snmp弱口令
弱口令利用:
nmap -sU -p161 --script=snmp-netstat ip//获取网络端口状态
nmap –sU –p161 –script=snmp-sysdescr ip //获取系统信息
nmap -sU -p161 --script=snmp-win32-user ip //获取用户信息
示例:
1. SNMPWALK V1版本
snmpwalk –v 1 –c public 192.168.0.1 .1.3.6
使用v1版本,共同体为public,来对192.168.0.1的.1.3.6分支进行walk。
2. SNMPWALK V2C版本
snmpwalk –v 2c –c cisco 192.168.0.2 .1
使用v2c版本,共同体为cisco,来对192.168.0.2的整个mib进行walk。
snmpwalk –v 2c –c cisco –Cc –r 1 –t 5 192.168.0.3 .1 > 192.168.0.3.mib
使用v2c版本,共同体为cisco,来对192.168.0.2的整个mib进行walk。并且通过-Cc指定OID负增长也可以继续,-r指定重试1次,-t指定超时为5秒,最后使用> 192.168.0.3.mib输出重定向到192.168.0.3.mib文件中去。
3. SNMPWALK V3版本
snmpwalk –v 3 –l noAuthNoPriv –u gov 192.168.0.3 .1.3.6
使用v3版本,安全级别为noAuthNoPriv,指定安全名字为gov,对192.168.0.3设备的.1.3.6分支进行walk。
snmpwalk –v 3 –l authNoPriv –u gov –A MD5 –a “gov auth pass” –r 3 192.168.0.3 .1
使用v3版本,安全级别为authNoPriv,指定安全名字为gov,指定验证协议为MD5同时验证字符串为gov auth pass对192.168.0.3的整个mib进行walk。同时指定重试3次。
snmpwalk –v3 –l authPriv –u gov –A MD5 –a “gov auth pass” –X DES –x “gov priv pass” 192.168.0.3 .1.3.6
使用v3版本,安全级别为authNoPriv,指定安全名字为gov,指定验证协议为MD5同时验证字符串为gov auth pass,指定加密协议为DES同时验证字符串为gov priv pass,对192.168.0.3的.1.3.6分支mib进行walk。
参考示例
示例
1、snmpwalk -c public -v 1 ip .1.3.6.1.2.1.25.1 得到取得windows端的系统进程用户数等
2、snmpwalk -c public -v 1 ip .1.3.6.1.2.1.25.2.2 取得系统总内存
3、snmpwalk -c public -v 1 ip hrSystemNumUsers 取得系统用户数
4、snmpwalk -c public -v 1 ip .1.3.6.1.2.1.4.20 取得IP信息
5、snmpwalk -v 2c -c public ip .1.3.6.1.2.1.1 查看系统信息
其中-v是指版本,-c 是指密钥。
snmpwalk功能很多,可以获取系统各种信息,只要更改后面的信息类型即可。如果不知道什么类型,也可以不指定,这样所有系统信息都获取到:
snmpwalk -v 2c -c public 10.0.1.52
另外常用的
.1.3.6.1.4.1.77.1.4.1.0 列出域名
.1.3.6.1.2.1.25.6.3.1.2 列出安装的软件
.1.3.6.1.2.1.25.4.2.1.2 列出系统进程
snmpwalk -v 2c -c public ip .1.3.6.1.2.1.1 这条命令
其他工具验证:
msf漏洞验证,请查看地址:https://www.cnblogs.com/-wenli/archive/2004/01/13/10127161.html
更加具体的步骤见:https://cloud.tencent.com/developer/news/14370
安全加固原则
先定位-再判断-后配置。
定位:通过存在snmp弱口令的端口,定位进程ID和进程名
判断:通过开放该服务的运行进程,判断这个进程是否和业务相关,是否需要 对外提供服务,只对哪些远程主机提供服务。
配置:若判断的结果与业务不相关,是没有用处的服务。则关闭端口,kill PID简单暴力没烦恼;若判断的结果与业务有关,服务不能关闭。那就去除弱口令+白名单;(方法见0x03)若判断的结果与业务相关,服务不能关闭,且弱口令还不能修改,那就白名单控制;