0


简单流量分析CTF(wireshark)

没做过流量分析的题目,也不怎么了解怎么流量分析,准备系统的理一下思路。。

这有第一个小题目。通过几个题目来了解wireshark的使用以及流量分析吧。。

追踪流量

bugku的杂项题目。

链接:https://pan.baidu.com/s/1OnO7OXIQB8ztl8J2q48jBA
提取码:1111

这是一个*pacp文件 *是一种常用的数据报存储文件,存储了一段数据包。

打开wireshark直接文件拖进去就可以打开了。

然后右键一个数据包选择追踪流

点开就得到了flag。。

被嗅探的流量

同样是一道CTF的杂项题目:

链接:https://pan.baidu.com/s/15Z9iUdMcxg3pOcpiJzqyvQ
提取码:1111

拖进去看看数据包

像这种数据包直接就看HTTP,还真有几个比较可疑,upload.php,点开看看

再点击追踪流,在最后面可以发现flag

直接ctrl+f 搜索一下,直接找到了具体的数据包。

键盘流量:

链接:https://pan.baidu.com/s/1F0L6vU5_cl83L83Nnqj8CQ
提取码:1111

把数据包拉进去发现全是USB协议,这是个什么东西,搜索一下看看。。

USB流量包分析

USB流量指的是USB设备接口的流量,攻击者能够通过监听usb接口流量获取键盘敲击键、鼠标移动与点击、存储设备的铭文传输通信、USB无线网卡网络传输内容等等。 在CTF中,USB流量分析主要以键盘和鼠标流量为主。 下面通过简单的讲解与例题的展示,分析键盘流量与鼠标流量。

点开个数据包看一下: 看不懂。去搜索相关信息:http://biz.doczj.com/doc/93380361.html

题目背景

安全测评人员在对某银行卡密码输入系统进行渗透测试,截获了一段通过USB键盘输入6位数字密码的流量,其中也包含了一些其他无关的USB设备的流量,你能从中恢复出6位数字密码吗?最终提交的flag格式为flag{xxxx};

解题思路:

使用kali 的 tshark命令把cap data 提取出来。

根据HID Usage ID 把数据还原成键位:

tshark命令:tshark(1)

进入kali,安装工具:

安装:sudo apt-get install tshark
tshark -v
tshark -h

tshark -r usb.pcap -T fields -e usb.capdata | sed '/^\s*$/d' > usbdata.txt
  
  -r:设置tshark 分析的输入文件
  -T:设置解码结果输出的格式。包括fields,text,ps,psml和pdml,默认为text

如图可以看到生成了usbdata.txt

把数据用脚本分隔,加上冒号;

f=open('usbdata.txt','r') 
fi=open('out.txt','w')
while 1:
  a=f.readline().strip() 
  if a:
    if len(a)==16:#键盘流量的话len为16鼠标为8 
      out=''
      for i in range(0,len(a),2):
        if i+2 != len(a):
          out+=a[i]+a[i+1]+":" 
        else:
          out+=a[i]+a[i+1] 
      fi.write(out) 
      fi.write('\n') 
  else: 
    break 
fi.close()

再使用脚本提取:

mappings = { 0x04:"A",  0x05:"B",  0x06:"C", 0x07:"D", 0x08:"E", 0x09:"F", 0x0A:"G",  0x0B:"H", 0x0C:"I",  0x0D:"J", 0x0E:"K", 0x0F:"L", 0x10:"M", 0x11:"N",0x12:"O",  0x13:"P", 0x14:"Q", 0x15:"R", 0x16:"S", 0x17:"T", 0x18:"U",0x19:"V", 0x1A:"W", 0x1B:"X", 0x1C:"Y", 0x1D:"Z", 0x1E:"1", 0x1F:"2", 0x20:"3", 0x21:"4", 0x22:"5",  0x23:"6", 0x24:"7", 0x25:"8", 0x26:"9", 0x27:"0", 0x28:"\n", 0x2a:"[DEL]",  0X2B:"    ", 0x2C:" ",  0x2D:"-", 0x2E:"=", 0x2F:"[",  0x30:"]",  0x31:"\\", 0x32:"~", 0x33:";",  0x34:"'", 0x36:",",  0x37:"." }
nums = []
keys = open('usbdata.txt')
for line in keys:
    if line[0]!='0' or line[1]!='0' or line[3]!='0' or line[4]!='0' or line[9]!='0' or line[10]!='0' or line[12]!='0' or line[13]!='0' or line[15]!='0' or line[16]!='0' or line[18]!='0' or line[19]!='0' or line[21]!='0' or line[22]!='0':
         continue
    nums.append(int(line[6:8],16)) 
keys.close()
output = ""
for n in nums:
    if n == 0 :
        continue
    if n in mappings:
        output += mappings[n]
    else:
        output += '[unknown]'
print 'output :\n' + output

输入结果

flag是六位:720093


本文转载自: https://blog.csdn.net/wcl20010/article/details/124696949
版权归原作者 ProofM 所有, 如有侵权,请联系我们删除。

“简单流量分析CTF(wireshark)”的评论:

还没有评论