西门子通信协议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))
原文始发于微信公众号(Th0r安全):工控CTF_纵横网络靶场_工控蜜罐日志分析
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论