西门子通信协议S7COMM
S7Comm(S7 Communication)是西门子专有的协议,是西门子S7通讯协议簇里的一种。
S7协议的TCP/IP实现依赖于面向块的ISO传输服务。S7协议被封装在TPKT和ISO-COTP协议中,这使得PDU(协议数据单元)能够通过TCP传送。
它用于PLC编程,在PLC之间交换数据,从SCADA(监控和数据采集)系统访问PLC数据以及诊断目的。
题目地址
https://game.fengtaisec.com/#/startQuestions/6
题目分析
工控安全分析人员在互联网上部署了工控仿真蜜罐,通过蜜罐可抓取并分析互联网上针对工业资产的扫描行为,将存在高危扫描行为的IP加入防火墙黑名单可有效减少工业企业对于互联网的攻击面。分析出日志中针对西门子私有通信协议扫描最多的IP,分析该扫描组织,Flag为该IP的域名,,flag形式为 flag{}。
解题思路
匹配
直接用python正则匹配log里面的所有的IP,取最多次数的那个IP为118.89.228.153进行域名反向解析
一共出现了2000多次,进行域名反向解析发现并不是flag
再次审题,发现是分析出日志中针对西门子私有通信协议扫描最多的IP
查找具有内容中有S7协议的IP
对脚本进行修改 ,最终找到了西门子私有通信协议扫描最多的IP
139.162.99.243这个ip出现的次数最多进行域名反向解析,得到flag
python脚本如下
from re import * def ip_read(): f = open('honeypot.log','r').readlines() for line in f: ip_f=findall(r'[0-9]{1,3}.\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}',line) if 'S7' in line: result=''.join(ip_f) ip.append(result) return ip if __name__ == '__main__': ip = [] ip_read() ip = list(filter(None,ip)) set(ip) for item in ip: print("the %s has found %d" %(item,ip.count(item))) print('出现次数最多的ip为:',max(ip, key=ip.count))