CTF——MISC——流量分析
目錄
一、流量包修復
二、協議分析
三、數據提取
例題:
1,題目:Cephalopod(圖片提取)
2,題目:特殊后門(icmp協議信息傳輸)
3,題目:手機熱點(藍牙傳輸協議obex,數據提取)
4,題目:想蹭網先解開密碼(無線密碼破解)
5,我的的教練也想打CTF
概括來講在比賽中的流量分析有以下三個方向:
1、流量包修復
2、協議分析
3、數據提取
一、流量包修復
比如一個流量包它的文件頭也是對的,里邊也沒有包含其他的文件等等等等,但是就是打開出現一些未知的錯誤,這時候就要考慮對流量包進行修復。
這類題目考察較少,通常都借助現成的工具例如PCAPFIX直接修復。
PcapFix
二、協議分析
此類方向需要對分析流量包工具所用的語法有一定的掌握,這里以wireshark為例,須掌握wireshark過濾器(捕捉過濾器與顯示過濾器)的基礎語法,從而更快更精準的獲取指定的信息。
捕捉過濾器:用于決定將什么樣的信息記錄在捕捉結果中,需要在開始捕捉前設置。
顯示過濾器:用于在捕獲結果中進行詳細查找,可以在得到捕捉結果后進行更改
捕捉過濾器基礎語法
Protocol Direction Host(s) Value LogicalOperations other expression
tcp dst 10.1.1.1 80 and tcp dst 10.2.2.2 3128
Protocol
可能的值: ether, fddi, ip, arp, rarp, decnet,lat, sca, moprc, mopdl, tcp and udp,如果沒有特別指明是什么協議,則默認使用所有支持的協議。
Direction
可能的值: src, dst, src and dst, src or dst,如果沒有特別指明來源或目的地,則默認使用 “src or dst” 作為關鍵字。
Host(s)
可能的值: net, port,host, portrange,如果沒有指定此值,則默認使用”host”關鍵字。
例如,”src 10.1.1.1”與”src host 10.1.1.1”相同。
Logical Operations
可能的值:not, and, or
否(“not”)具有最高的優先級,或(“or”)和與(“and”)具有相同的優先級
“not tcp port 3128 and tcp port23”與”(not tcp port 3128) and tcp port23”相同。
舉例分析:
tcp dst port 3128 //目的TCP端口為3128的封包。
ip src host 10.1.1.1 //來源IP地址為10.1.1.1的封包。
host 10.1.2.3 //目的或來源IP地址為10.1.2.3的封包。
src portrange 2000-2500
//來源為UDP或TCP,并且端口號在2000至2500范圍內的封包
not icmp //除了icmp以外的所有封包。
顯示過濾器基礎語法
Protocol String1 String2 ComparisonOperator Value Logical Operations other expression
Protocol
可以使用大量位于OSI模型第2至7層的協議。在Expression中可以看到,例如,IP,TCP,DNS,SSH
String1,String2
可選擇顯示過濾器右側表達式,點擊父類的+號,然后查看其子類
Comparison Oerators
可以使用六種比較運算符
舉例分析:
snmp || dns || icmp //顯示SNMP或DNS或ICMP封包
ip.addr == 10.1.1.1 //顯示源或目的IP為10.1.1.1的封包
ip.src != 10.1.2.3 and ip.dst!=10.4.5.6 //顯示源不為10.1.2.3并且目的不為10.4.5.6的封包
tcp.port == 25 //顯示來源或目的TCP端口號為25的封包
tcp.dport == 25 //顯示目的TCP端口號為25的封包
如果過濾器語法是正確的,表達式背景為綠色,否則為紅色
三、數據提取
這一塊是流量包中另一個重點,通過對協議分析,找到題目的關鍵點,從而對所需要的數據進行提取。
Wireshark支持提取通過http傳輸(上傳/下載)的文件內容,方法如下:
自動提取通過http傳輸的文件內容
文件->導出對象->HTTP
在打開的對象列表中找到有價值的文件,如壓縮文件、文本文件、音頻文件、圖片等,點擊Save進行保存,或者Save All保存所有對象再進入文件夾進行分析。
手動提取通過http傳輸的文件內容
選中http文件傳輸流量包,在分組詳情中找到data,Line-based text,?JPEG File Interchange Format,?data:text/html層,鼠標右鍵點擊 – 選中 導出分組字節流。
來源: 簡簡
作者: 簡簡
鏈接:?https://jwt1399.top/2019/07/29/ctf-liu-liang-fen-xi-zong-jie/
本文章著作權歸作者所有,任何形式的轉載都請注明出處。
如果是菜刀下載文件的流量,需要刪除分組字節流前開頭和結尾的X@Y字符,否則下載的文件會出錯。鼠標右鍵點擊 – 選中 顯示分組字節
?
在彈出的窗口中設置開始和結束的字節(原字節數開頭加3,結尾減3)
?
最后點擊Save as按鈕導出。
?
例題:
1,題目:Cephalopod(圖片提取)
題目來源:XCTF 3rd-HITB CTF-2017
考點:圖片提取
題目信息:(Cephalopod.pcapng)
c中zxz中z
2,題目:特殊后門(icmp協議信息傳輸)
題目來源:第七屆山東省大學生網絡安全技能大賽
考點:字符串搜索,icmp協議信息傳輸
題目信息:(backdoor++.pcapng)
打卡數據包,先在字節流中 搜索 flag 字符串 :搜索到了 一段連續的數據包 里面都有flag字符串??
發現下面每一個 包里 都有一個 字符:
一個一個收集后得到:
flag{Icmp_backdoor_can_transfer-some_infomation}
小知識點:
ICMP(Internet Control Message Protocol)Internet控制報文協議,它是TCP/IP協議簇的一個子協議,用于在IP主機、路由器之間傳遞控制消息。控制消息是指網絡通不通、主機是否可達、路由是否可用等網絡本身的消息。這些控制消息雖然并不傳輸用戶數據,但是對于用戶數據的傳遞起著重要的作用,ICMP協議是一種面向無連接的協議,用于傳輸出錯報告控制信息。它是一個非常重要的協議,它對于網絡安全具有極其重要的意義。
?
3,題目:手機熱點(藍牙傳輸協議obex,數據提取)
題目來源:第七季極客大挑戰
考點:藍牙傳輸協議obex,數據提取
題目信息:(Blatand_1.pcapng)
題中說用 沒流浪 向電腦傳了文件 那肯定是 用的藍牙 藍牙協議 為? ?obex協議
帥選出 obex 協議包 :發現 有一個包 里有一個 rar壓縮包:
要分離出 這個 rar 包:
方法一:直接復制 數據塊 然后復制到winhex中 轉存為 rar?
復制數據塊? as Hex stream? ?>? ?在winhex中粘貼 為 ASCII HEX? >? ?刪除前面的 多余信息? ? > 保存為 rar
方法二 :用formost 分離:分離出來好多東西,不過我們目標是rar包
得到一張flag.git:
4,題目:想蹭網先解開密碼(無線密碼破解)
題目來源:bugku
考點:無線密碼破解
題目信息:(wifi.cap)
?
wifi 連接認證 的重點在于 WAP的 四次握手過程 ,就是 EAPOL 協議的包,
存在 握手過程:直接進行爆破:
先用 linux中的 crunch 生成一個字典:
然后 用 aircrack-ng 進行爆破:
得到 WiFi密碼
5,我的的教練也想打CTF
打開流量包,直接搜 字符串 flag ,找到很多 包,仔細看這些包的info ,發現是 sql 注入語句 布爾注入:
鑒于 sql 注入的 布爾注入 的原理:逐個字母爆破要查詢的字符,我們可以把 查詢到的每個字符 收集起來就能 得到 flag了
注: 爆破每個字符的最后一個 查詢語句 對應的字符就是 正確的字符
本題的爆破語句 :
?id=1' and ascii(substring((select keyid from flag limit 0,1),1,1))=33? %23
意思是: 截取 keyid 的第一個字符 ,并轉化為 ascii? 與 33 進行比較,正確 就停止,不正確就繼續試 34,35……
按照這個規律 得到 keyid 的 所有字符對應的 ascii :
?
將其轉化為 字符就可以了:
?
大佬的腳本直接跑:
import pysharklastt=256 flag="flag is " capa=pyshark.FileCapture('misc.pcapng',only_summaries=True,display_filter="http.request == 1") for arps in capa:now=eval(str(arps).split(" ")[7].split('=')[2].split('%')[0])if now < lastt & lastt <= 255:flag+=chr(lastt)lastt=now flag+='}' print(flag)上面的看不太懂,貼一個自己寫的:
(過濾 http? ?然后? 文件 》 導出分組解析結果? 》 為 CVS? ?,保存為 12.txt?)
import re import urllib.parsef = open(r'12.txt') file = f.readlines() datas = [] #urldecode for i in file:datas.append(urllib.parse.unquote(i)) lines = [] #提取注入flag的語句 for i in range(0,len(datas)):if datas[i].find("flag limit 0,1),1,1))=32# HTTP/1.1") > 0:lines = datas[i:]breakflag = {} macth = re.compile(r"limit 0,1\),(.*?),1\)\)=(.*?)# HTTP/1.1") #匹配我們需要的信息塊 for i in range(0,len(lines),2):obj = macth.search(lines[i])if obj:key = int(obj.group(1)) #獲取字符的位置value = int(obj.group(2))#獲取字符的ascii值flag[key] = value #不斷的更新,進而保留最后一個 f.close() result = '' for value in flag.values():result += chr(value) print(result)?
?
本文為基礎篇,如果想進一步提升 流量分析的水平,可以參考我的另一篇文章:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的CTF——MISC——流量分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SDUT-SQL题解
- 下一篇: 《随笔 二》