工业互联网安全测试技术:协议fuzzing.docx
协议Fuzzing实验文档实验原理Peach文件Fuzz流程图如下:一个基于网络协议的Fuzz测试的实现过程如下:1获得待测协议的正常数据包2用变异数据替换该数据包中的某些局部3用发包器向目标应用发包4观察目标应用的反响通常情况下,通过抓包器捕获客户端与被测设备正常交互的数据包作为测试的正常数据 包样本。通过任意方式改变随机数据。例如,可以打乱整个数据包,也可以把数据包中的某 个局部替换。不管采用什么方法变异数据,关键是在数据包中放入大量随机数据,然后将该 数据包发送到目标应用并观察目标应用的行为能力。Peach模糊测试工具是一个开源的模糊测试框架,包括数据模型(数据类型、变异器接口 等)、状态模型(数据模型接口、状态、动作一输入输出等)、代理器(包括本地调试器如 WindowsDebugger和网络监视器如PcapMonitor等)、测试引擎(代理器接口、状态模型接 口、发布器、日志记录器等)实验目的利用模糊测试攻击对MODBUS仿真设备进行写入设备的攻击实验环境Windows 10操作系统Pench框架软件1套MODBUS SimuSoftware 软件 1 套Modbusscan 软件 1 套Wireshark 软件 1 套推荐课时数:2课时实验步骤.开启MODBUS协议仿真点击File新建文件,出现如图界面。配置Address, Length, Device Id, MODBUS Point Type如图显示值£ ModSim32 ModSiml- XAle Connection Display Window Hdp图1配置ModSim 在主机中使用modsim开启仿真,依次点击connection>8的6戊一*Modbus/Tcp svr,开 启modbus仿真的502端口Device Id: 1 Address: l(M01MOOBUS Point TypeI03: HOLD4NG REGISTER4M01: <00000>Sdect Service Pori图2开启主机Modbus仿真(3)翻开modscan采集工具依次点击connectionconnect采集仿真的数据,配置Address, Length, Device Id, MODBUS Point Type 和 modsim 中的一致fiks«upolMk 0fUtpc 0 a内容O _I _c_ /且" V , IS'C 八 6 " 艰:Kb 图3采集数据(4)输入被采集仿真主机IP以及端口,点击OK进行采集图4 1P和端口设置1 .分析MODBUS流量(1)翻开wireshark在筛选处输入modbus,抓取modbus协议仿真工具与采集工具之间通讯 的流量包Aftx loopiMck hi!Tk capture分析(A)统计(S)£曾於二三 (Y)无线(W) ae q HTJKT)将助出)- X文WF)珈(E)4 J «a(V) IH«(G) x e qffift(C)函 O.rDestinationProtocol Length Info.Modbus-56 Query:Trans: 12288;Unit: 1, Func: 3: Read HoldingRe-Modbus-55 Response:Trans: 12288;Unit: 1, Func: 3: Read HoldingRe.Modbus.56 Query:Trans: 12544;Unit: 1, Func: 3: Read HoldingModbus_55 Response:Trans: 12544;Unit: 1, Func: 3: Read HoldingRe_Modbus一56 Query:Trans: 12800;Unit: 1, Func: 3: Read HoldingRe.<>Frame 384: 56 bytes on wire (448 bits), 56 bytes captured (448 bits) on interface DeviceNPF_Loopback, id 0Null/LoopbackInternet Protocol Version % Transmission Control Protocol, Src Port: 58470, Dst Port: 502Seq: 349, Ack: 320, Len: 12Modbus/TCPModbus02 7fee2e 3d0002 7fee2e 3d0000 00 45 00 0000 01 7f 00 000a 0d 50 18 0101 06 00 00 00e8 11 40 00 40 06 00 90E4 e4 66 01f6 49 7d 4dd2 f- IM-9c aa 00 00 4d 00 00 00=j- -PM P在这里“入你要授索的内容图5数据报文双击modbus采集中的数值,在value处输入需要写入的数值,点击update,第一次写 入4,第二次重复上诉操作写入5。使用wireshark分别抓取写入modsim的流量包3U ModSim32 McxISirn 1Ale Connection Display Window Hdp3U ModSim32 McxISirn 1Ale Connection Display Window Hdp图6设置value数值(3)通过流量后方的write single register可以很容易分辨出哪条是写入的流量包00 ODExpand Subtrees- D X文华9行了场刑第W)TJKT)m(H)4 壮全酷!开e a乳史RlaMlbu*工 IWTW£3 Z3 1 应用为刊Ctrt*Shift*lLength Info*作树龙KE用55 Response:Trans:19456;Unit: 1, Func:3: Read Holding Re-Prepare as Filter56 Query:Trans:19712;Unit: 1> Func:6: Write Single Re56 Response:Trans:19712;Unit: 1, Func:6: Write Single Re_用河妣匕色56 Query:Trans:19968;Unit: 1, Func:3: Read Holding Re.55 Response:Trans:19968;Unit: 1, Func:3: Read Holding Re- 、<新刊Ei目> Frame 3& > Null/lOOF > Internet > Transois*导出用a字节熬bl.Wiki WSHCESWtO Ctr1*Shift«X龙中科K所胪J5W5目 期逑字段名桂9nterface 0eviceNPF_Loopback, id 0Ack: 320, Len: 12Modbus/T(波也"段停号与议中项作旗;维HModbusA RW图7分析报文(4)复制两条流量包ModbusTCP的hex流,观察不同点,分析流量,发现协议的hex流是 以十六进制显示且前两位后两位不相同,由于写入的数值是4和5在编写pit脚本时仅需 要模糊测试最后两位即可。J 新建文本文档一记事本 文件(F)编辑(E)格式(0)查看(V)帮助(H)4d000000000601图8 hex数据导出3,分析MODBUS流量在peach文件夹中搜索modbus.xml文件,复制一份以免损坏源文件,修改其中的内容, 将复制的流量包按照格式每两位为一组为添加进脚本中,并在不需要进行模糊测试的代码后 方加入mutable:”false”(取消参数的随机变换),查看开启仿真主机的IP以及端口,添加进 脚本中对应的位置<?xnl trslco»*1.0" ecxoding»*utf- 8*?><Fe«ch x»1.abttD;* x/:m:x,bttp;/ev.S,orq/281/】xsx:schexLccatiWhtto:peaStuzzer.coa/2012/Peach ./peach.xxT><!寒夏送©HfC分一, <!少丫11小献认殳或只会*第当崂,3金百,/归更改看口交般赛花acSleiOL 敛去蝇->vdUModr n4»e-”nd卜/Block)F </DataMo<lel>AsqBirrAma.<?一 H3tZK>(SuteModel E3e-TheState" lnitialStace-*inltlalSUte"><3t4S nam«*lnieialSUt«a>>Oction type«*<nitpuf><DataNodel ref«*>end <Uta" /></Actlon></State><!一位骑36敷达星班认使MPUMJ幺祀西力P的通境收快.知父费金疗处笈0监独建H慢Mses”级发拄一<A9ent n«»e»*Uoc«l">< -Monitor cla99«*Piz>g"> <:-Pax*Bvalue-* 127.0.0.1* /></Monitor->V -达里应”的是38KDS盛拽><Noni(or z,<P«r&x nAB?«*Bo»t<P*ra* nAm«*port'</Honicor>value-lW.168.3.214* /> v,lu»«502. /><!-友送.井生或log-><T<>t nA&e-*D«faulta><Agent ref«*Voc«l* /><StateModeI ref-Tl>eSt4ite" />(Lo99«f clo>*Fil«*>< Paran nam«*P«th" value«-C:C«zlo' /></LOQQtX><Polisher cl«>>"ta>.Ttp*>< Par ax na»e-Boif talue«"192.168.3.214* /><P«r*a n<m-*ort* L«lu»«a>SO* /></PObliBher> </Fe<ch>开启modwn主机IP以及送口图9配置modbus文件使用CMD运行脚本'nd翁断帝- X存工控安全课程资源'实验软件费源,协议fuzzingpeach-3.1.124-win-x64-release>peach. exe E:工控安全课程资源'实验软件资源' i)(fuzzingpeach-3. 1. 124-win-x64-releasesamplesiDodbus. xml;Copyright (c) Michael Eddington Test * Default* starting with random seed 15961.RI.-t- Performing iteration* Fuzzing: send_data. nod Mutator: DataElementDuplicateMutator' Fuzzing: send.data. nod. 06 Mutator: XumericalEdgeCaseMutator"2,-»" Perforaing iteration* Fuzzing: send_data. nod Mutator: DataElementRemoveMutator:3.Performing iterat ion Fuzzing: send_data. wod. 06 Mutator: XumericalEdgeCaseMutator Fuzzing: send_data.nod Mutator: DataE1ementRemoveMutator图10运行脚本 查看modsim发现数值已发生变化,modbus模糊测试成功.-J!1 Fuzzing: s«nd.data. sod. 06 Stator: DataElcaentReaoveMutator.22. Frfoniinx itcrat i: Fuzzing: wnd_&m»o(L Mutator: FiniteRandoaKta:AW Gxwccr DitpUy Window f,Fuzzing: Stator:'23. - Perforaitw i.data-aodDevice ”1:24.lT Per faming is*nd_datA.Bod.Fuzzinc: -Hutator: DataElcscntDupl«*«»»: OMIlef IMODBUS IMnt Type|t): »KX.DING RfGtSVtR二,Fuzzing: s*nd_<htA.«odMutator:DataElceentDuplMW1:<000t1>25. - Perfor«in« it Fuzzing: Jljtator: Stator:26.-,-) Per Fuzzing:27. Jr Fuzzing: Stator:图11测试界面