Zabbix協議分析

2022-04-05 10:06:06 字數 3171 閱讀 2467

概述

zabbix使用一種自定義的基於tcp的協議與客戶端進行通訊

zabbix zabbix agent

協議內容

- "

zbxd\x01

" (5

bytes)

- data length (8 bytes). 1 will be formatted as 01/00/00/00/00/00/00/00 (eight bytes in hex, 64 bit number)

: json格式,內容又分為主動檢查和被動檢查

為了避免zabbix記憶體耗盡,zabbix限制每個連線最多使用128m記憶體

被動檢查

server request

\n
agent response

[\0

]

是可選的僅在不支援的items時傳送

主動檢查

(1)獲取相關items的列表

agent request

server response

,]}

(2)傳送收集的資料

agent send

,

],"clock

": 1400675595

, "ns

": 78211329

}

server response

python模擬的zabbix_sender

#

!/usr/bin/python

#-*- coding:utf8 -*-

__author__ = '

pdd'

__date__ = '

2016/11/28

''''

script simulate zabbix_sender

'''import

sysimport

json

import

time

import

struct

import

socket

import

argparse

parser = argparse.argumentparser(description='

script simulate zabbix_sender')

parser.add_argument('-z

','--server

',dest='

server

',action='

store

',help='

zabbix server ip')

parser.add_argument('-p

','--port

',dest='

port

',action='

store

',help='

zabbix server port

',default=10051,type=int)

parser.add_argument('-s

','--host

',dest='

host

',action='

store')

parser.add_argument('-k

','--key

',dest='

key',action='

store

',help='

item key')

parser.add_argument('-o

','--value

',dest='

value

',action='

store

',help='

item value')

args =parser.parse_args()

class

metric(object):

def__init__

(self, host, key, value):

self.host =host

self.key =key

self.value =value

def__repr__

(self):

result = '

metric(%r, %r, %r)

' %(self.host, self.key, self.value)

return

result

defsend_to_zabbix():

j =json.dumps

m =metric(args.host, args.key, args.value)

clock = ('

%d' %time.time())

metrics = '

' %(j(m.host), j(m.key), j(m.value), j(clock))

json_data = '

' %metrics

data_len = struct.pack('

', len(json_data))

packet = '

zbxd\x01

' + data_len +json_data

try:

zabbix =socket.socket()

zabbix.connect((args.server, args.port))

zabbix.sendall(packet)

resp_hdr = zabbix.recv(13)

resp_body_len = struct.unpack('

', resp_hdr[5:])[0]

resp_body =zabbix.recv(resp_body_len)

zabbix.close()

resp =json.loads(resp_body)

print

(resp)

except

:

print('

error while sending data to zabbix')

if__name__=='

__main__':

send_to_zabbix()

執行

參考:

Zabbix 漏洞分析

之前看到zabbix 出現sql注入漏洞,自己來嘗試分析。ps 我沒找到3.0.3版本的 zabbix 暫用的是zabbix 2.2.0版本,如果有問題,請大牛指點。zabbix是乙個基於web介面的提供分布式系統監視以及網路監視功能的企業級的開源解決方案。能監視各種網路引數,保證伺服器系統的安全運...

網路協議分析 VRRP協議分析

2 rip 2的報文格式 3 rip 2的驗證報文 三 例項化 rip報文由頭部 header 和多個路由表項 route entries 部分組成。乙個rip表項中最多可以有25個路由表項。rip是基於udp協議的,所以rip報文的資料報不能超過512個位元組。1 command 長度8bit,報...

網路協議分析 生成樹協議(STP)分析

lan資料鏈路層 例項化二層通訊協議,基本應用是防止交換機冗餘鏈路產生的環路.用於確保乙太網中無環路的邏輯拓撲結構.從而避免了廣播風暴,大量占用交換機的資源。網橋協議資料單元 bridge protocol data unit 是一種生成樹協議問候資料報,它可以配置的間隔發出,用來在網路的網橋間進行...