“ 之前进行了服务扫描,对于hasee得到的结果主要就是80端口的http服务,似乎攻击面被局限在了web渗透上,这样就太不全面了,接下来的几篇文章我会针对常见的服务进行深入分析攻击手段”
SNMP 扫描
Simple Network Management Protocol 简单网络管理协议
通过SNMP 协议可以获取到几乎服务器运行的全部状况(cpu使用情况,内存占用率,硬盘使用情况等),因此一般被用来监控服务器的运行状况
SNMP 使用UDP协议,因为UDP协议效率较高,用它来实现网络管理不会太多地增大网络负荷
在大范围管理网络的时候这个协议显得尤为重要,还有很多路由设备中采用SNMP协议来进行流量查看管理。
SNMP Community String
这个是snmp协议的中一个类似密码的配置项,正是因为很多管理员没有配置这个选项才导致严重的信息泄漏,甚至被攻陷服务器
Windows 和Linux中默认的值是 public
Public 的权限可以查询任意信息
除此之外还有 private ,private有写的权限,可以直接修改配置文件,甚至可以启动一个进程
MIB Tree
MIB Tree 是一个以树状来定义的信息管理库,不同的厂商可能会定义自己的MiB库,同时国际标准化组织也规定了一套规范
Port
SNMP 分为客户端和服务器端
我们使用客户端对服务器进行监控
客户端端口 162
服务器端口 161
Version
目前snmp有三个版本 V1,V2c,V3
前两个版本应用较广,遗憾的是缺乏加密机制,导致信息可以被嗅探;同时缺乏一个较为完善的身份验证机制
V3版本中完善了以上的这些缺陷
这里我就自己在本地win7搭建了一个SNMP的服务器
onesixtyone
onesixtyone 192.168..1.1 public
可以看到我配置的Community String 是ita-cat,所以我们扫描出现的结果是这样,说明并没有采用默认配置(win7默认配置中并没有用户,且默认只允许本地连接)
我们用shodan在互联网上随便找一个
结果对比一下
可以看出这个是存在默认口令的路由设备,可以任意我们查询了
如果此时不是默认CommunityString ,我们可以采用爆破的方式来进行
onesixtyone 192.168.1.1 -c password.txt -w 100
正好之前整理了字典,这回就不大动干戈了,用一个小字典吧
可以看到ita-cat这个Community String是正确的
snmpwalk
snmpwalk 192.168.1.133 -c public -v 2c
可以看出查出了关于这个路由设备的几乎所有信息(后面还有巨多),前面的数字就是MIBTree
如果想要查询特定的信息可以指定oid
snmpwalk 192.168.1.1 -c public -v 11.3.6.1.4.1.25506.2.12.1.1.1
有三个通常包含账号密码信息的oid是
1.3.6.1.4.1.2011.5.2.1.10.1
1.3.6.1.4.1.2011.10.2.12.1.1.1
1.3.6.1.4.1.25506.2.12.1.1.1
snmpwalk 可以看到相对来说更加详细的信息,稍有遗憾的是这些我们很难都记住,并不是很直观,而且snmpwalk似乎没有爆破密码的功能,或许它就是用来作为一个信息获取工具来使用的,后期的数据处理由调用方来进行
snmp-check
snmp-check –c public –v 2c 192.168.1.1
显示的信息更佳符合我们人工去查看,比较直观
我添加一个可写的CommunityString,看看这个工具的 –w 选项能不能识别出来
snmp-check –c public –v 2c –w 192.168.1.1
从结果看出是可写的!
StringBleed
CVE-2017-5135
这个CVE漏洞利用异常的简单,漏洞产生的原因就是个别产品身份验证有问题,无论我们提交什么CommunityString ,都会身份认证成功,对于这个漏洞的修补可以说是十分的糟糕,我刚刚还在shodan按照漏洞说明的产品们选择了几个进行测试,都成功了,而且其中大部分还具有写的权限。
目前受影响厂商和相关设备(78种型号设备)
漏洞说明 http://www.cnvd.org.cn/webinfo/show/4122
5352 —>Zoom Telephonics, Inc
BCW700J —> BN-Mux
BCW710J —> BN-Mux
BCW710J2 —> BN-Mux
C3000-100NAS —> Netgear
CBV734EW —> Castlenet
CBV38Z4EC —>CastleNet
CBV38Z4ECNIT —>CastleNet
CBW383G4J —>CastleNet
CBW38G4J —>CastleNet
CBW700N —> TEKNOTEL
CG2001-AN22A
CG2001—>UDBNA
CG2001—>UN2NA
CG2002 —>UN2NA
CG2200 —>UN2NA
CGD24G-100NAS —> Netgear
CGD24G-1CHNAS —> Netgear
CM5100 —> Netgear
CM5100-511 —> Netgear
CM-6300n —> Comtrend
DCX-3200 —> Arris
DDW2600 —> Ubee
DDW2602 —> Ubee
DG950A —> Arris
DPC2100 —> Cisco
DPC2320 —> Cisco
DPC2420 —> Cisco
DPC3928SL —> Cisco
DVW2108 —> Ubee
DVW2110 —> Ubee
DVW2117 —> Ubee
DWG849 —> Thomson
DWG850-4 —> Thomson
DWG855 —> Thomson
EPC2203 —> Cisco
EPC3212 —> Cisco
IB-8120 —>W21
IB-8120 —>W21E1
MNG2120J —>NET&SYS
MNG6200 —>NET&SYS
MNG6300 —>NET&SYS
SB5100 —> Motorola
SB5101 —> Motorola
SB5102 —> Motorola
SBG6580 —> Motorola
SBG900 —> Motorola
SBG901 —> Motorola
SBG941 —> Motorola
SVG1202 —> Motorola
SVG2501 —> Motorola
T60C926 —> Ambit
TC7110.AR —> Technicolor
TC7110.B —> Technicolor
TC7110.D —> Technicolor
TC7200.d1I —> Technicolor
TC7200.TH2v2 —> Technicolor
THG540 —> Thomson
THG541 —> Thomson
Tj715x —> Terayon
TM501A —> Arris
TM502B —> Arris
TM601A —> Arris
TM601B —> Arris
TM602A —> Arris
TM602B —> Arris
TM602G —> Arris
TWG850-4U —> Thomson
TWG870 —> Thomson
TWG870U —> Thomson
U10C019 —> Ubee
U10C037 —> Ubee
VM1700D —>Kaonmedia
WTM552G —> Arris
WTM652G —> Arris
DCM-704 —> D-Link
DCM-604 —> D-Link
DG950S—> Arris
经过以上方法应该我们可以获取读或者读写的权限,下一步我们开始考虑下一步的攻击
SNMP放大反射DoS 攻击
其实之前我有讲过关于DoS(拒绝服务攻击)的相关课程,在DoS 中有一种就是反射性DoS,原理上就是利用IP欺骗和发包与回包之间数据包的大小差距来进行的数据放大的一种攻击方法
比如我向一个SNMP服务器发送一个请求包,原地址写上我们要攻击的目标,此时SNMP就会返回数据包给目标,我们请求的数据包较小,而返回的数据包量巨大,可能会放大近20倍,从而实现此攻击。
结合刚刚介绍的漏洞,一个完美的DDoS方案就出来了,大家应该都懂吧!
或许哪天无聊我可能会写一个这样的脚本。
获取或者修改密码
在只读权限下,我们可以最基本的就是完整的路由信息,端口信息,进程信息,服务信息等,不过想要进一步对目标进行渗透才是我们想要的,华为的一些设备我们可以直接读取到明文或加密的密码,这样我们就可以直接登录了,这是比较顺利的,wooyun上有很多案例
可以参考
http://www.anquan.us/static/bugs/wooyun-2015-0137975.html
在读写的权限下,如果能够直接读到密码就不说了,大多数情况下还是不能读取到的,此时利用起来就十分的艰难了
目前互联网上也没有什么文章来介绍这方面,我针对获取的信息进行了以下思
考
1. 修改某一个属性,为我们以后的渗透做准备(比如将主机名改成sql注入语句等)
snmpset -On -v2c -c test 192.168.1.106iso.3.6.1.2.1.1.5.0 s Hack
修改过后在win7这边并没有看到变化,不知道是不是重起生效
我用mysql查询了一下,确实是没有变
现在我重新启动一下
可以看到还是没有变化,我们在查询一次,看看重启后是不是snmp的结果也变回来了
从结果可以看出并没有哈,用这个小实验可以看出一点,这里的修改只是改变了snmp查询时候的MIB库的内容,而不是对系统实质性的修改
那么刚才我打算修改后为了后期渗透调用的想法就失败了
2. 留着以后擦屁股时候用
目标系统的管理员或者使用snmp协议管理流量的路由设备可能会被我们修改的信息所蒙骗,即使发生了大流量洪峰也可能蒙混过关而不被察觉!
3. 对抗AV时候使用
在绕过WAF或者防病毒软件时候心里有数,提前做好免杀
最后分享两个自动化渗透的脚本
之前也说过,snmp协议多用于路由等设备中,说到这种设备,那么比较有名的就是华为和思科了
华为、HP、H3C
https://github.com/grutz/h3c-pt-tools/
思科
Cisc0wn
https://github.com/nccgroup/cisco-SNMP-enumeration
由于我没有相关设备,也不想去费时间去配置模拟器,大家可以用gns3 配置试一试,玩一玩
总结来说对于SNMP的一个渗透也就是这个地步了,虽然很难获取到shell,不过能够得到如此详细的信息对后面的渗透测试工作可是十分的有帮助。
-END-