目录
mms协议
大工UDP协议
工控蜜罐日志分析
隐信道数据安全分析
工控安全取证
MDNS协议介绍
简单流量分析
S7COMM协议分析
恶意软件后门分析
mms协议
纵横网络靶场社区
MMS简介
MMS(Manufacturing Message Specification)中文翻译为制造报文规范,在介绍MMS之前我们先简单科普一下IEC61850标准。
IEC61850是电力系统自动化领域唯一的全球通用标准,而本文主要介绍的MMS就是运用在IEC61850标准站控层和间隔层之间,MMS通过对实际设备进行面向对象建模方法,实现了网络环境下不同制造设备之间的互操作。在2015年前MMS在电力系统远动通信协议中并未应用,但是IEC61850标准将其引入电力自动化领域,将其核心ACSI服务直接映射到MMS标准
由于MMS是由ISO技术委员会184(TC184)开发和维护的一种涉及用来在设备或程序之间传送实时数据和监督信息的信息传递系统的国际标准,它的定义如下。
每个设备中必须存在一组标准对象(standard objects),可以执行如,读写事件信令(event signaling)等操作。
VMD是主要对象,诸如变量,域,日志,文件等都属于VMD范围内。
在客户端和服务器站之间有一组用来监视或控制上述对象的一组标准信息。
一组用于在传输时将信息映射到位和字节的编码规则。
说完MMS的定义后,我们来看一看MMS的协议栈。其实早在1990年就已经根据ISO / IEC 9506-1和ISO / IEC 9506-2两个标准进行了标准化,但是由于OSI的实施不是很简单,所以这个原始版本并没有流行。现在流行的MMS是于1999年波音公司根据互联网协议创建的全新版本。以下是新版MMS堆栈。
wireshark打开流量包,过滤mms协议,但是并没有发现flag的内容
在tcp 流里发现了一张图片
base64编码转图片即可发现flag
大工UDP协议
udp协议
UDP是传输层的协议,功能即为在IP的数据报服务之上增加了最基本的服务:复用和分用以及差错检测。
UDP提供不可靠服务,具有TCP所没有的优势
搜索flag 然后追踪udp协议
hex解码得flag
工控蜜罐日志分析
打开是个日志文件
让分析ip
网上抄了个脚本
import fileinput
import re
import os
import shutil
def readIp():
with open(r'honeypot.log', 'r') as f:
for line in f.readlines():
result2 = re.findall('[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}',line) #匹配ip正则表达式
if not result2 == []:
result = result2[0] + '\n'
with open('ip.txt', 'a+') as w:
w.write(result)
def setIp():#去重
a=0
readDir = "ip.txt"
writeDir = "newip.txt"#new
lines_seen = set()
outfile = open(writeDir, "w")
f = open(readDir, "r")
for line in f:
if line not in lines_seen:
a+=1
outfile.write(line)
lines_seen.add(line)
print(a)
outfile.close()
def readDns():
with open(r'newip.txt', 'r') as g:
for i in g.readlines():
com=os.popen('nslookup %s'%i)
comm=com.read()
if comm.find('NXDOMAIN')==-1:
print (comm)
if __name__ == '__main__':
readIp()
setIp()
readDns()
隐信道数据安全分析
隐信道数据安全分析文件,安全人员怀疑间谍通过某种private的方
打开010分析
12+n加起来有32个
换算一下有4个字节
看一下字节的值
发现不是0就是1猜测一下是二进制转换
从前八个测试一下
二进制转十进制是70,70的ascii码是大写字母F
然后在网上抄了个脚本转换顺手学习一下
from binascii import *
with open('flag-woody.mp3','rb')as f:
init_mpeg_hdr=0x1c1b8
mpeg_data_block=0x0
flag=''
while True:
next_mpeg_hdr=init_mpeg_hdr+mpeg_data_block
f.seek(next_mpeg_hdr)#读取开始的偏移量也就是代表需要移动偏移的字节数,如果是负数表示从倒数第几位开始。
bin_data=bin(int(hexlify(f.read(4)),16))[2:] #hexlify 返回的二进制数据的十六进制
flag+=bin_data[23]
mpeg_data_block+=0x414e
if int(str(next_mpeg_hdr),16) >len(f.read()):
break
for i in range(0,len(flag),8):
try:
res_flag=chr(int(flag[i:i+8],2))#二进制转十进制 转ascii码
print(res_flag,end="")
except:
pass
工控安全取证
下载下来是个日志文件,但打开是乱码
使用file命令一下发现是pacp文件于是修改文件后缀然后拉进wireshark
开始分析
发现扫描之前ping了一下 192.168.0.9 对192.168.0.99发起扫描
第一次扫描
第二次扫描
第三次扫描
第四次扫描
尝试提交
flag{155989}
隐藏的黑客
附件打开是一堆php木马
和一个流量包
MDNS协议介绍
mDNS multicast DNS , 使用5353端口,组播地址 224.0.0.251。在一个没有常规DNS服务器的小型网络内,可以使用mDNS来实现类似DNS的编程接口、包格式和操作语义。MDNS协议的报文与DNS的报文结构相同,但有些字段对于MDNS来说有新的含义。
每个进入局域网的主机,如果开启了mDNS服务的话,都会向局域网内的所有主机组播一个消息,我是谁,和我的IP地址是多少。然后其他也有该服务的主机就会响应,也会告诉你,它是谁,它的IP地址是多少。mDNS的域名与普通DNS的域名是通过后缀.local区分开来的。如果一台终端需要访问一个mDNS域名,他就会向局域网内发送组播,询问该域名的IP是多少。
例如:
一个设备接入网络,首先查询名称是否冲突,并通告当前服务器信息
冲突检测结束后,发送MDNS通告,通知其它设备更新DNS缓存
其它设备对该域名访问时,会发起MDNS查询
在 tcp.stream eq 11发现一个1.php
0xc5c9595135a7b=L3Zhci93d3cvaHRtbC8=&pass=@ini_set("display_errors", "0");@set_time_limit(0);function asenc($out){return $out;};function asoutput(){$output=ob_get_contents();ob_end_clean();echo "cc1a3";echo @asenc($output);echo "2ff0e";}ob_start();try{$D=base64_decode($_POST["0xc5c9595135a7b"]);$F=@opendir($D);if($F==NULL){echo("ERROR:// Path Not Found Or No Permission!");}else{$M=NULL;$L=NULL;while($N=@readdir($F)){$P=$D.$N;$T=@date("Y-m-d H:i:s",@filemtime($P));@$E=substr(base_convert(@fileperms($P),10,8),-4);$R=" ".$T." ".@filesize($P)." ".$E."
";if(@is_dir($P))$M.=$N."/".$R;else $L.=$N.$R;}echo $M.$L;@closedir($F);};}catch(Exception $e){echo "ERROR://".$e->getMessage();};asoutput();die();
在http里找 发现一个 webshell的zip文件
转换成原始数据放在010里创建文件
把PK开头前面的去掉就可以打开了还有后面五个字节
需要密码,联想到另一个文件中一堆php文件
猜测这是密码,于是爬取密码进行爆破
使用正则表达式匹配,把密码列出来
import sys
import os
import re
t2=[]
for i in os.listdir("/home/kali/桌面/upload"):
with open ("/home/kali/桌面/upload/"+i,"r") as f:
t1=re.findall("\[(.*?)\]",f.readline())[0]
print(t1)
with open ("/home/kali/桌面/upload/pa.txt","a+") as w:
w.write(t1+"\n")
然后字典爆破
解压出来是一个PHP文件,我们echo 一下看输出来是什么
尝试用flag{}包裹提交
9a72c3d5e74f6051bb3b3590fa9319fe
简单流量分析
打开wireshark拉进去分析
发现都是ICMP
什么是ICMP呢?
ICMP协议是一个网络层协议。
一个新搭建好的网络,往往需要先进行一个简单的测试,来验证网络是否畅通;但是IP协议并不提供可靠传输。如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因。
所以我们就需要一种协议来完成这样的功能–ICMP协议。
具体了解ICMP协议详解_honeyCR的博客-CSDN博客_icmp
根据题目过滤ICMP包分析异常行为
发现每个data包里都有一串字符串,用base64解码出来是混乱的,请求包里的跟返回包的数据是一样的
脑洞:data长度的是ascii码十进制,然后转换成数字字母然后base64解码得flag
tshark网络分析利器:Tshark - 简书
tshark -r fetus* -Y 'ip.src_host=="192.168.3.73"' -e data -T fields > 1.txt
得到flag
奇怪的文件
解压开了是三个文件
part1、part2、part3分别对应的是ZIP压缩包的压缩源文件数据区、压缩源文件目录区和压缩源文件目录结束标志。每个文件前面添加504B然后按顺序和到一起
crc文件修复,crc值可以在第二个里面找到
之后就可以当作压缩包打开了,如下是正确的md5值
之后打开压缩包发现有加密于是爆破,要不知道是七位密码估计要爆破很久
密码是GyxXaq9
解压之后
zip格式压缩包主要由三大部分组成:数据区、中央目录记录区(也有叫核心目录记录)、中央目录记录尾部区,数据区缺失的CRC跟中央目录记录区缺失的刚好可以互补,这题熟悉zip文件结构才能好做
图片并没有直接给flag,接着分析图片
把图片拉进010分析发现末尾比较特别
新建一个文件把反着的部分复制到里面然后用脚本使其正过来
python脚本(脚本参考大佬写的)
from binascii import *
with open('t00', 'rb') as f:
hex_data = hexlify(f.read())[::-1]
with open('t5.zip', 'wb') as f1:
for i in range(0, len(hex_data), 2):
data = hex_data[i: i+2][::-1]
f1.write(unhexlify(data))
解压出来是这样,pyc后缀,pyc反编译,在线编译网站python反编译 - 在线工具
#!/usr/bin/env python
# visit python反编译 - 在线工具 for more information
# Version: Python 3.6
import random
import base64
import sys
def KeyGenerate():
random.seed(10)
keyseed = ''
for i in range(12):
x = random.randint(32, 127)
keyseed += chr(x)
return base64.b64encode(keyseed.encode('utf-8')).decode('utf-8')
def enc(key, file):
count = 0
f = open(file, 'rb')
f1 = open('encrypted', 'wb')
for now in f:
for nowByte in now:
newByte = nowByte ^ ord(key[count % len(key)])
count += 1
f1.write(bytes([
newByte]))
if __name__ == '__main__':
key = KeyGenerate()
enc(key, sys.argv[1])
打印下key
key相同 ,加密为异或加密,跟根据message XOR key XOR key==message
那么我们只要再异或一次即可还原
简单改一下脚本
import random
import base64
import sys
#!/usr/bin/env python
# visit https://tool.lu/pyc/ for more information
# Version: Python 3.6
import random
import base64
import sys
def KeyGenerate():
random.seed(10)
keyseed = ''
for i in range(12):
x = random.randint(32, 127)
keyseed += chr(x)
return base64.b64encode(keyseed.encode('utf-8')).decode('utf-8')
def dnc(key):
count=0
f=open("D:\pythonProject8\gongkong\\t5\encrypted","rb")
f1=open("flag","wb+")
for i in f:
for nowByte in i:
newByte=nowByte^ord(key[count%len(key)])
count+=1
f1.write(bytes([newByte]))
if __name__ == '__main__':
key = KeyGenerate()
#print(key)
dnc(key)
# enc(key, sys.argv[1])
打开分析png文件,修改后缀名打开
打开之后效果如下,还是没有flag 看WEB说有LSB隐写于是下载工具
工具地址https://github.com/livz/cloacked-pixel
需要配好库
不知道怎么找到密码的,直接抄WP了
密码:U!lSb29
看出flag为flag{2ceuagIha7v8mlfod9uas1d86wqer0}
S7COMM协议分析
下载下来是一个流量包
S7COMM协议
s7comm就是西门子为了它生产的PLC之间、SCADA与PLC之间的通信而设计的专属协议。S7协议的TCP/IP实现依赖于面向块的ISO传输服务。S7协议被封装在TPKT和ISO-COTP协议中,这使得PDU(协议数据单元)能够通过TCP传送。
打开之后降序排列,然后点开第一个进行hex转码
flag{is_not_real}
组态软件分析
修改文件名改成zip
打开发现有密码,但有部分文件确没有加密
恶意软件后门分析
不太会,照着网上WP打的
flag{}包裹提交
参考文章
纵横靶场工控安全wp:奇怪的文件。_C1ovd的博客-CSDN博客_纵横网络靶场社区 奇怪的文件
纵横网络靶场社区-隐藏的黑客_梵歆的博客-CSDN博客_纵横网络靶场社区 黑客文章来源:https://www.toymoban.com/news/detail-721307.html
[纵横网络靶场社区]简单流量分析_末初mochu7的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-721307.html
到了这里,关于纵横网络靶场刷题记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!