CTF—流量分析題型整理總結
我見過的流量分析類型的題目總結:
一,ping 報文信息 (icmp協議)
二,上傳/下載文件(藍牙obex,http,難:文件的分段上傳/下載)
三,sql注入攻擊
四,訪問特定的加密解密網站(md5,base64)
五,后臺掃描+弱密碼爆破+菜刀
六,usb流量分析
七,WiFi無線密碼破解
八,根據一組流量包了解黑客的具體行為
例題:
一,ping 報文信息 (icmp協議)
例1.1
打開流量包,發現有一大段的icmp協議的包,發現在icmp報文中夾雜著flag

這里可以依次查看每一個icmp報文數據,然后得到flag.也可以用腳本處理:(不推薦)
先過濾出 icmp協議的包》導出特定分組 》保存為flag.pcapng》然后用腳本處理:
(這個腳本只能處理data只有一個字節的包,局限性較大,還不如直接一個包一個包查看,反正flag也不會太長)
import pysharkcap = pyshark.FileCapture('flag.pcapng')for packet in cap: data = ''+packet[packet.highest_layer].data print(chr(int(data,16)),end='')cap.close()

二,上傳/下載文件(藍牙obex,http,難:文件的分段上傳/下載)
這類夾雜著文件的流量包最好處理,
方法一,直接用foremost直接分離提取一下就能提取出其中隱藏的文件,一般會直接分離出來一個 壓縮包,一張圖片,或者flag.txt都是有可能的
方法二,自動提取通過http傳輸的文件內容:文件->導出對象->HTTP

在打開的對象列表中找到有價值的文件,如壓縮文件、文本文件、音頻文件、圖片等,點擊Save進行保存,或者Save All保存所有對象再進入文件夾進行分析。

手動提取通過http傳輸的文件內容
選中http文件傳輸流量包,在分組詳情中找到data,Line-based text, JPEG File Interchange Format, data:text/html層,鼠標右鍵點擊 – 選中 導出分組字節流。

如果是菜刀下載文件的流量,需要刪除分組字節流前開頭和結尾的X@Y字符,否則下載的文件會出錯。鼠標右鍵點擊 – 選中 顯示分組字節

在彈出的窗口中設置開始和結束的字節(原字節數開頭加3,結尾減3)

最后點擊Save as按鈕導出。
例2.1手機熱點(藍牙傳輸協議obex,數據提取)
題目來源:第七季極客大挑戰
考點:藍牙傳輸協議obex,數據提取
題目信息:(Blatand_1.pcapng)

題中說用 沒流浪 向電腦傳了文件 那肯定是 用的藍牙 藍牙協議 為 obex協議
篩出 obex 協議包 :發現 有一個包 里有一個 rar壓縮包:

要分離出 這個 rar 包:
方法一:直接復制 數據塊 然后復制到winhex中 轉存為 rar
復制數據塊 as Hex stream > 在winhex中粘貼 為 ASCII HEX > 刪除前面的 多余信息 > 保存為 rar

方法二 :用formost 分離:分離出來好多東西,不過我們目標是rar包

得到一張flag.git:

例2.2 抓到一只蒼蠅
這題屬于比較難的類型,是文件的分段傳輸,我們需要將幾段數據拼接起來
首先在 分組字節流中 搜索一下 字符串 flag 找到第一個 包,追蹤一下數據流 ,

然后就看到了上述信息,知道了應該是在用 qq郵箱傳輸文件,文件的信息:fly.rar 文件的大小為 525701
{"path":"fly.rar","appid":"","size":525701,"md5":"e023afa4f6579db5becda8fe7861c2d3","sha":"ecccba7aea1d482684374b22e2e7abad2ba86749","sha3":""}
既然知道了在上傳文件,肯定要用到 http的request的 POST方法
在過濾器中 輸入
http && http.request.method==POST
然后找到這5個包,第一個包是 文件的信息,后面5個包為數據

分別查看其中 date 的長度:

前四個 為 131436 最后一個為 17777,所以 131436*4 +17777=527571 與第一個包給出的 fly.rar的長度 525701 差 1820
因為每個包都包含頭信息,1820/5 = 364,所以每個包的頭信息為 364
接下來導出數據包:wireshark->文件->導出對象->http->選擇save對象

將對應的包 分別save 為 1 2 3 4 5
將這五個包拖進 kali中
執行:
dd if=1 bs=1 skip=364 of=11 dd if=2 bs=1 skip=364 of=22 dd if=3 bs=1 skip=364 of=33 dd if=4 bs=1 skip=364 of=44 dd if=5 bs=1 skip=364 of=55
將數據包的頭部的 364個字節去除 得到 11 22 33 44 55
將這五個包合并
cat 11 22 33 44 55 > fly.rar
查看一下 flag.rar的md5值是否正確
md5sum fly.rar
正確
解壓,跳出提示文件頭損壞,并且要求輸入密碼
知道是偽密碼,用winhex打開,修改文件頭,將 84 改為 80,保存

解壓得到,flag.txt 打開一堆亂碼,直接用 foremost分離一下,得到很多的圖片
發現一張二維碼,掃描后得到flag

flag{m1Sc_oxO2_Fly}
其實我剛開始不是這么做的,我是直接用foremost分離 流量包 ,然后分離出來幾張圖片 和一個壓縮包,嘗試解壓
爆出一堆錯誤,并提示輸入密碼,將 文件頭的 84 修改為 80 后依然打不開 ,,可能是 這個文件中還包含了其他錯誤信息,然后就換用上面的方法了
三,sql注入攻擊
例3.1信息提取(超詳細)
曾經在比賽中也遇過幾乎一樣的題,一直沒有好好的寫過一篇詳細的博客,今天決定借助這個題好好記錄理解一下這種類型的題
提示 :sqlmap
打開流量包,也觀察到了 是 用sqlmap進行的 sql盲注的過程,用的是二分法
為了更好的理解 注入的過程 我們首先把 注入語句提取出來,這樣方便觀察
過濾http流量 ,然后 文件 》導出分組解析結果 》為CSV 保存為 123.txt
用notepad++ 打開 123.txt,可以看到語句語句中還是夾雜著很多的urlcode
全選 , 然后 插件 》MIME Tools 》 url decode ,這樣就把URLcode轉為更直觀的 ascii了

然后再 來理解用 二分法 進行sql盲注的過程
以flag 的第一個字符為 例 :

綠色框中的數字 代表是測試第幾個 字符
紅色框中的數字 代表 與當前測試的字符的ascii值 相比較的 值
粉色框中數字 代表返回的數據的長度(一會我們要依據這個來判斷上面的語句是否正確)
ascii有 128個所以從 64 開始判斷,然后是96(64和128的中間值),說明>64是正確的 ,才會取96,然后是 80,80小于96,說明>96是錯誤的,所以才會取 64和96 的中間值 80,然后是 72 ,說明>80是錯誤的,取80和64之間的中間值72,然后是76,說明>72是正確的,才會取 72 和80之間的中間值76,然后是 74,說明>76是錯誤的,才會取 72 和76的中間值 74,然后是73,說明>74是錯誤的,才會取 72 和 74的中間值 73
至于 > 73 語句是否正確,關系到我們最后的取值,
我們已經知道了 第一個字符 的ascii值 的范圍 為 72< x <= 74, 至于是 73 還是 74 ,需另做判斷:
若 > 73 正確, 則 x = 74 第一個字符 的ascii值為 74 就是 J
若 >73 錯誤,則 x = 73 就是 I
由于我們上面已經知道了 >64 是正確的 返回包的數據長度是 467
>96 是錯誤的 返回包的數據長度是 430
>80 是錯誤的 返回包的數據長度是 430
>72 是正確的 返回包的數據長度是 467
>76 是錯誤的 返回包的數據長度是 430
>74 是錯誤的 返回包的數據長度是 430
可以看到 當判斷語句正確時 ,返包的數據長度 是 大于 430的 ,錯誤時 是小于等于 430
然后看到 最后一條語句 >73 的返回值 為 430,說明與錯誤, 第一個字符的ascii 為 73
理解了過程就好做多了
我們只需要 找到 當前測試字符的 最后一條的測試語句的 ascii值 和 返回值
如果返回值大于 430 則 當前測試字符的ascii 值 為 最后一條測試語句的ascii值
如果返回值 小于等于 430 則 當前測試字符的ascii值 為 最后一條測試語句的ascii + 1
方法一:(當flag 較短的時候)
當flag較短的時候,我們肯定是用手工 一個一個記下 每個字符的ascii值 比較快
方法二:(當flag 較長時)
當flag 為 25個字符以上的時候,手工就顯得太費勁,不如寫個腳本來的快,就想本題一樣,flag的長度為 33
上腳本:
import reimport urllib.parse
# 更改為自己從wireshark提取出的csv文件地址f = open(r"123.txt")lines = f.readlines()datas = []# 轉碼, 保存進datasfor line in lines: datas.append(urllib.parse.unquote(line))lines = [] # 懶得改, 就復用一下, 這個lines保存注入flag的urlfor i in range(len(datas)): # 提取出注入flag的url if datas[i].find("isg.flags ORDER BY `value` LIMIT 0,1),1,1))>64") > 0: lines = datas[i:] breakflag = {}# 用正則匹配macth1 = re.compile(r"LIMIT 0,1\),(\d*?),1\)\)>(\d*?) HTTP/1.1")macth2 = re.compile(r'"HTTP","(\d*?)","HTTP/1.1 200 OK')for i in range(0, len(lines), 2): # 因為有返回響應, 所以步長為2 get1 = macth1.search(lines[i]) if get1: key = int(get1.group(1)) # key保存字符的位置 value = int(get1.group(2)) # value保存字符的ascii編碼 get2 = macth2.search(lines[i + 1]) if get2: if int(get2.group(1)) > 450: value += 1 flag[key] = value # 用字典保存flagf.close()result = ''for value in flag.values(): result += chr(value)print(result)
為什么腳本中 判斷的返回值取 450 呢?因為 取430時,得出來的flag不對,仔細查看123.txt后,發現 其中還有一些錯誤的語句的返回 包 為 431 或者 432,所以就干純粹取個 450 (433~460都可以)
(這再看不懂就考慮換專業吧)
得到flag:

ISG{BLind_SQl_InJEcTi0N_DeTEcTEd}
例3.2日志審計
用 notepad++ 打開 日志文件,先用 插件中的 MIME Tool 中的 URL decode 解一下碼
然后就能清楚的看出來 是在進行 sql 盲注操作,
進一步審查,還可以看到每一條語句 返回的狀態碼 ,并且知道 他是用的 二分法在進行 sql盲注
我需要做的就是找到 每一個 測試的字符的 最后一條狀態碼為 200 的 語句中的 ascii 值并記錄下來
例如:

由于使用的是二分法,所以我們這里可以知道 flag的第 18 個字符的ascii 為 117+1 ,118
當然你你也可以用手工的方法,一個一個的記下 flag 每一個 字符的 ascii 值 (flag也就 25個字符,如果寫不出代碼的話)
當然最好是用腳本跑出來
我找了個腳本:
# coding:utf-8import reimport urllib
f = open('access.log', 'r')lines = f.readlines()datas = []for line in lines: t = urllib.unquote(line) # 過濾出與flag相關,正確的猜解,這里只收集正確的猜解,而測試字符的ascii = 最后一個正確的猜解的ascii +1(這是二分法的一個隱藏規律) if '200 1765' in t and 'flag' in t: datas.append(t)
flag_ascii = {}for data in datas: matchObj = re.search(r'LIMIT 0,1\),(.*?),1\)\)>(.*?) AND', data) if matchObj: key = int(matchObj.group(1)) value = int(matchObj.group(2)) + 1 flag_ascii[key] = value # 使用字典,保存最后一次猜解正確的ascii碼
flag = ''for value in flag_ascii.values(): flag += chr(value)
print flag
解釋一下:
t = urllib.unquote(line) 就是將 文本進行 urldecode 解碼
if '200 1765' in t and 'flag' in t: 如果語句中有這兩個字符串就直接將這個語句 存入 數組datas中
datas.append(t)
matchObj = re.search(r'LIMIT 0,1\),(.*?),1\)\)>(.*?) AND', data) 在date 中搜索符合 正則表達的 字符串并 將匹配的字符串存入變量 matchObj 中
key = int(matchObj.group(1)) 取 變量matchObj 中 的第一個括號里的內容 (也就是上條語句中的 (.*?)中的內容)并轉為10進制
value = int(matchObj.group(2)) + 1 取 變量matchObj 中 的第二個括號里的內容,并轉為 10 進制
得到 flag:flag{sqlm4p_15_p0werful}
四,訪問特定的加密解密網站(md5,base64)
例4.1:你能找到我嗎?
打開流量包,在分組字節流中搜索 字符串 flag,找到了幾個包,但都沒有什么可利用的信息

然后嘗試著過濾出http包,(別問我為什么要過濾出http包,經驗告訴我http有問題的可能性最大)
然后就剩6個包了:

點擊第一個包,右鍵 追蹤流 》http
然后仔細審查這個包,發現了base64 ,訪問域名:
http://tool.chinaz.com/Tools/Base64.aspx
發現是個base64加密解密的網站:

然后把 result后面的密文復制下來,解密兩次 拿到了flag: sdut2019{Traffic_analysis_seclab507}
五,后臺掃描+弱密碼爆破+菜刀
例5.1,中國菜刀
在 分組字節流中搜索 flag 字符串,找到第8 個包,追蹤tcp數據流

看到了 flag.tar.gz,猜測流量包中隱藏了一個壓縮包,
用binwalk 審查一下:發現了一個壓縮包,分離


key{8769fe393f2b998fa6a11afe2bfcd65e}
例5.2 密碼爆破
flag為flag{管理員入口 地址 + 管理員密碼 }
找不到源文件了,大致的過程就是 黑客先利用后臺掃描工具,掃描出來了網站的后臺管理員入口
然后用 用戶名 admin 進行密碼的暴力破解,破解成功,然后干了些猥瑣的事情的過程
我們需要找到黑客掃描到的 管理員入口的地址 并找到他破解出admin 的密碼
六,usb流量分析
usb流量分析,包括usb鍵盤流量,usb鼠標流量
鍵盤流量數據為 8個字節
鼠標流量數據為 4個字節 (具體每個字節代表些啥,自行百度)
例6.1:usb流量分析
打開流量包:看到的確是usb流量,并且沒有雜包(如果有不是usb的包需提前濾除掉)

把這個包放進linux中提取數據:
tshark -r example.pcap -T fields -e usb.capdata > usbdata.txt
然后就得到了 usbdata.txt文件:

看到每行為8個字節,確定是 鍵盤流量數據,
然后用腳本進行處理得到flag:
normalKeys = {"04": "a", "05": "b", "06": "c", "07": "d", "08": "e", "09": "f", "0a": "g", "0b": "h", "0c": "i", "0d": "j", "0e": "k", "0f": "l", "10": "m", "11": "n", "12": "o", "13": "p", "14": "q", "15": "r", "16": "s", "17": "t", "18": "u", "19": "v", "1a": "w", "1b": "x", "1c": "y", "1d": "z", "1e": "1", "1f": "2", "20": "3", "21": "4", "22": "5", "23": "6", "24": "7", "25": "8", "26": "9", "27": "0", "28": "<RET>", "29": "<ESC>", "2a": "<DEL>", "2b": "\t", "2c": "<SPACE>", "2d": "-", "2e": "=", "2f": "[", "30": "]", "31": "\\", "32": "<NON>", "33": ";", "34": "'", "35": "<GA>", "36": ",", "37": ".", "38": "/", "39": "<CAP>", "3a": "<F1>", "3b": "<F2>", "3c": "<F3>", "3d": "<F4>", "3e": "<F5>", "3f": "<F6>", "40": "<F7>", "41": "<F8>", "42": "<F9>", "43": "<F10>", "44": "<F11>", "45": "<F12>"}
shiftKeys = {"04": "A", "05": "B", "06": "C", "07": "D", "08": "E", "09": "F", "0a": "G", "0b": "H", "0c": "I", "0d": "J", "0e": "K", "0f": "L", "10": "M", "11": "N", "12": "O", "13": "P", "14": "Q", "15": "R", "16": "S", "17": "T", "18": "U", "19": "V", "1a": "W", "1b": "X", "1c": "Y", "1d": "Z", "1e": "!", "1f": "@", "20": "#", "21": "$", "22": "%", "23": "^", "24": "&", "25": "*", "26": "(", "27": ")", "28": "<RET>", "29": "<ESC>", "2a": "<DEL>", "2b": "\t", "2c": "<SPACE>", "2d": "_", "2e": "+", "2f": "{", "30": "}", "31": "|", "32": "<NON>", "33": "\"", "34": ":", "35": "<GA>", "36": "<", "37": ">", "38": "?", "39": "<CAP>", "3a": "<F1>", "3b": "<F2>", "3c": "<F3>", "3d": "<F4>", "3e": "<F5>", "3f": "<F6>", "40": "<F7>", "41": "<F8>", "42": "<F9>", "43": "<F10>", "44": "<F11>", "45": "<F12>"}output = []keys = open('usbdata.txt')for line in keys: try: if line[0]!='0' or (line[1]!='0' and line[1]!='2') 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' or line[6:8]=="00": continue if line[6:8] in normalKeys.keys(): output += [[normalKeys[line[6:8]]],[shiftKeys[line[6:8]]]][line[1]=='2'] else: output += ['[unknown]'] except: passkeys.close()
flag=0print("".join(output))for i in range(len(output)): try: a=output.index('<DEL>') del output[a] del output[a-1] except: passfor i in range(len(output)): try: if output[i]=="<CAP>": flag+=1 output.pop(i) if flag==2: flag=0 if flag!=0: output[i]=output[i].upper() except: passprint ('output :' + "".join(output))
例6.2 usb流量
打開發現有大量的usb協議的流量包,不過其中有很多的雜包,

發現其中有一大段是 4個字節的 usb數據(鼠標數據)
先將這些鼠標流量的包過濾出來,
usb.src == "2.3.1" 過濾后,文件 》導出特殊分組 》保存為 jjj.pcap
把jjj.pcap放進linux中:
tshark -r jjj.pcap -T fields -e usb.capdata > usbdata.txt
生成usbdata.txt文件,然后將usbdata.txt中的鼠標流量數據轉換為坐標
nums = []keys = open('usbdata.txt','r')file = open('xy.txt','w')posx = 0posy = 0for line in keys: if len(line) != 12 : continue x = int(line[3:5],16) y = int(line[6:8],16) if x > 127 : x -= 256 if y > 127 : y -= 256 posx += x posy += y btn_flag = int(line[0:2],16) # 1 for left , 2 for right , 0 for nothing if btn_flag == 1 : string = str(posx) + ' '+str(posy) +'\n' file.write(string)keys.close()file.close()
生成了xy.txt文件:

然后在linux中 執行
gnuplot >plot "xy.txt"
就得到了用鼠標畫的圖了:

七,WiFi無線密碼破解
例7.1題目:想蹭網先解開密碼(無線密碼破解)
題目來源:bugku
考點:無線密碼破解
題目信息:(wifi.cap)

wifi 連接認證 的重點在于 WAP的 四次握手過程 ,就是 EAPOL 協議的包,

存在 握手過程:直接進行爆破:
先用 linux中的 crunch 生成一個字典:

然后 用 aircrack-ng 進行爆破:

得到 WiFi密碼:1391040768 6
八,根據一組流量包了解黑客的具體行為
參考:https://jwt1399.top/2019/07/29/ctf-liu-liang-fen-xi-zong-jie/(想要下面例子源文件的去看看)
例8.1 (1.pcap)
2018信息安全鐵人三項數據賽

打開流量包,流量包有點大,打開比較慢,這里我們先過濾為HTTP協議可以看到202.1.1.2對192.168.1.8進行了瘋狂的爆破

不難看出,黑客利用的SqlMap在對目標站點進行不斷的SQL試探注入
因此受害主機的網卡IP地址為192.168.1.8
而注入的參數也可以清晰的看見,為list[select]
追蹤http流,根據回顯內容,目標站點數據庫拋出的錯誤,可以清晰的看見

不難確定,目標站點的數據庫表名前綴為ajtuc_
接著為了確定受害主機網站數據庫的名字,再進行了一次過濾
(ip.addr == 192.168.1.8 || ip.addr == 202.1.1.2) && http
此時挑選最后一次注入的payload進行url解碼

可以清楚的看到
FROM joomla.ajtuc_users
因此數據庫名為joomla
所以答案:
1.黑客攻擊的第一個受害主機的網卡IP地址 192.168.1.82.黑客對URL的哪一個參數實施了SQL注入list[select]3.第一個受害主機網站數據庫的表前綴(加上下劃線例如abc_)ajtuc_4.第一個受害主機網站數據庫的名字joomla
例8.2(2.pcap)
題目來源:2018信息安全鐵人三項數據賽

根據題目一已確定目標ip,所以依舊使用以下過濾簡化操作
(ip.addr == 192.168.1.8 || ip.addr == 202.1.1.2) && http
可以看到一個奇怪文件kkkaaa.php,跟進POST數據查看

不難發現,是中國菜刀的流量,木馬密碼為zzz,接著確定黑客第二次上傳php木馬的時間,我進行了過濾,猜想黑客應該是根據第一個木馬來上傳的第二個木馬
(ip.addr == 192.168.1.8 || ip.addr == 202.1.1.2) && http.request.method==POST
此時一條數據格外引人注目

我們對其16進制進行分析

將保存的值放入winhex中得到源碼

將文件保存為php,但是代碼經過混淆過的,在代碼末尾加上下面兩句代碼
var_dump($j);var_dump($x);
運行php進行解混淆,發現這就是木馬

由此可確定這個引人注目的包上傳了第二個木馬,因此上傳時間為:17:20:44.248365
還是使用過濾
(ip.addr == 192.168.1.8 || ip.addr == 202.1.1.2) && http
然后可以看到許多請求footer.php的頁面,點開一個查看詳情

容易發現referer數據十分可疑,而ACCEPT_LANGUAGE較為正常,所以可以基本確定,木馬通過HTTP協議中的Referer頭傳遞數據
答案
1.黑客第一次獲得的php木馬的密碼是什么zzz2.黑客第二次上傳php木馬是什么時間17:20:44.2483653.第二次上傳的木馬通過HTTP協議中的哪個頭傳遞數據Referer
例.8.3(3.pcap)
題目來源:2018信息安全鐵人三項數據賽

直接進行過濾
tcp contains "mysql" && mysql
得到大量數據,可以發現黑客應該在對Mysql的登錄進行爆破,內網受害機器為192.168.2.20

我們找到最后一條登錄數據

該值就為我們需要的mysql密碼hash了
簡單過濾一下
(ip.addr == 192.168.1.8 || ip.addr == 202.1.1.2) && http

目標機器已經被掛上了tunnel.php,方便外網對內網的訪問
為方便查看黑客操作,我們過濾出POST請求
(ip.addr == 192.168.1.8 || ip.addr == 202.1.1.2) && http.request.method==POST && http

我們清晰的看見黑客的php代理第一次使用時最先連接4.2.2.2這個ip,并且端口為53
答案
1.內網主機的mysql用戶名和請求連接的密碼hash是多少(用戶:密碼hash)admin:1a3068c3e29e03e3bcfdba6f8669ad23349dc6c42.php代理第一次被使用時最先連接了哪個IP地址4.2.2.2
例8.4(4.pcap)
題目來源:2018信息安全鐵人三項數據賽

為確定黑客第一次獲取到當前目錄下的文件列表的漏洞利用請求發生在什么時候,我們繼續進行過濾
(ip.addr == 192.168.1.8 || ip.addr == 202.1.1.2) && (http contains "dir" || http contains "ls")

此時一條為ls,一條為dir,我們先對ls的進行驗證
追蹤其tcp流

發現并沒有執行成功,再對dir進行驗證

于是可以確定無誤,目標系統為windows,同時dir命令執行成功,時間為:18:37:38.482420,既然該192.168.2.20的機器可以執行命令,于是我改變過濾方式,查看黑客如何進行攻擊
ip.addr == 192.168.2.20 && http

可以看到上面幾條受害機器分別執行了 dir ,pwd,dir,以及echo%20.....等命令
不難發現,黑客利用echo命令寫入了一個名為sh.php的后門
然后往下翻看到黑客利用這個后門post 了一些東西,猜測應該是木馬文件,看一下:

果然,木馬的密碼是123,是中國菜刀的流量
我們進一步跟進黑客執行的指令,由于是中國菜刀流量,我們選擇根據回顯明文,猜測指令,這樣更有效率
ip.src == 192.168.2.20 && http
在18:50:09.344660時,我們發現可疑操作,我們發現一條可疑數據,判斷黑客應該是執行了net user的命令

然后在18:50:42.908737發現黑客再次執行了net user命令,此時回顯為:

看來黑客成功添加了管理員用戶kaka,確定了大致的作案時間,我們即可使用過濾
確定了大致的作案時間,我們即可使用過濾
ip.addr == 192.168.2.20 && http
根據之前的判斷,我們可以知道 , 18:49:27.767754時,不存在kaka用戶

18:50:42.908737時,kaka用戶已成為管理員
所以可以斷定作案時間點在這段時間內
在此期間,一共4個POST請求,我們挨個查看,果不其然,在第一個POST中就發現了問題
Y2QvZCJDOlxwaHBTdHVkeVxXV1dcYjJldm9sdXRpb25caW5zdGFsbFx0ZXN0XCImbmV0IHVzZXIga2FrYSBrYWthIC9hZGQmZWNobyBbU10mY2QmZWNobyBbRV0=
解碼后
cd/d"C:\phpStudy\WWW\b2evolution\install\test\"&net user kaka kaka /add&echo [S]&cd&echo [E]
可以明顯看到
net user kaka kaka /add
于是可以斷定,用戶名和密碼均為kaka
最后一題既然是下載,應該是利用中國菜刀進行下載了,那我們只過濾出post流量,查看命令即可
ip.dst == 192.168.2.20 && http.request.method==POST
然后我們在數據包的最后發現如下數據

我們將其解碼

發現使用了procdump.exe
同時發現文件

解碼得到

最后我們可以確定,黑客下載了 lsass.exe_180208_185247.dmp文件
答案
1.黑客第一次獲取到當前目錄下的文件列表的漏洞利用請求發生在什么時候18:37:38.4824202.黑客在內網主機中添加的用戶名和密碼是多少kaka:kaka3.黑客從內網服務器中下載下來的文件名lsass.exe_180208_185247.dmp 原文鏈接:https://blog.csdn.net/vhkjhwbs/article/details/103605892