天天看點

正常web流量分析總結及例題(普通http流量,http傳輸檔案流量,https加密流量,視訊流)

web流量分析基本套路

  1. 流量分析傳輸了資料:zip rar png jpg txt mp3,特别是流量包比較大時需要注意
  2. binwalk分離檔案,grep或者wireshark内ctrl+f搜尋
  3. 分情況使用導出對象,導出分組位元組流,原始資料
  4. 搜尋時可以看情況搜尋分組詳情、分組位元組流
  5. 檢視包廂的差異,可以按大小排列資料包等
  6. png在流量中經常以base64形式出現
  7. 如果有TLS,要麼找密鑰,要麼看别的協定

例題一普通http流量

使用wireshark打開檔案

可以點選Protocol,按協定進行排序

也可以直接按請求方式過濾

http.request.method == "GET"
http.request.method == "POST"      

發現大部分請求都是404,有三個成功,并且是編碼資料

正常web流量分析總結及例題(普通http流量,http傳輸檔案流量,https加密流量,視訊流)

點選右擊選擇追蹤流->http流

正常web流量分析總結及例題(普通http流量,http傳輸檔案流量,https加密流量,視訊流)

進行base64解碼

第二個是flag.txt

正常web流量分析總結及例題(普通http流量,http傳輸檔案流量,https加密流量,視訊流)

找到流量右擊選擇導出分組位元組流

因為url通路的是

print_r(gzcompress(file_get_contents(base64_decode(%22ZmxhZy50eHQ%22))));      

需要解碼

gzcompress
相反的函數就是
gzuncompress      

decode.php

<?php
$file=file_get_contents("./flag.bin");
$file=gzuncompress($file);
var_dump($file);
?>      
正常web流量分析總結及例題(普通http流量,http傳輸檔案流量,https加密流量,視訊流)

得到flag

例題二http傳輸檔案流量

正常web流量分析總結及例題(普通http流量,http傳輸檔案流量,https加密流量,視訊流)

檔案比較大

使用wireshark打開,按協定排序

正常web流量分析總結及例題(普通http流量,http傳輸檔案流量,https加密流量,視訊流)

追蹤TCP流

正常web流量分析總結及例題(普通http流量,http傳輸檔案流量,https加密流量,視訊流)

發現可疑代碼,解碼整理一下

yo=@eval(base64_decode($_POST[z0]));
&z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0+fCIpOzskRD1kaXJuYW1lKCRfU0VSVkVSWyJTQ1JJUFRfRklMRU5BTUUiXSk7aWYoJEQ9PSIiKSREPWRpcm5hbWUoJF9TRVJWRVJbIlBBVEhfVFJBTlNMQVRFRCJdKTskUj0ieyREfVx0IjtpZihzdWJzdHIoJEQsMCwxKSE9Ii8iKXtmb3JlYWNoKHJhbmdlKCJBIiwiWiIpIGFzICRMKWlmKGlzX2RpcigieyRMfToiKSkkUi49InskTH06Ijt9JFIuPSJcdCI7JHU9KGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0ZWdpZCcpKT9AcG9zaXhfZ2V0cHd1aWQoQHBvc2l4X2dldGV1aWQoKSk6Jyc7JHVzcj0oJHUpPyR1WyduYW1lJ106QGdldF9jdXJyZW50X3VzZXIoKTskUi49cGhwX3VuYW1lKCk7JFIuPSIoeyR1c3J9KSI7cHJpbnQgJFI7O2VjaG8oInw8LSIpO2RpZSgpOw==      
@ini_set("display_errors","0");@set_time_limit(0);@set_magic_quotes_runtime(0);echo("->|");;$D=dirname($_SERVER["SCRIPT_FILENAME"]);if($D=="")$D=dirname($_SERVER["PATH_TRANSLATED"]);$R="{$D}\t";if(substr($D,0,1)!="/"){foreach(range("A","Z") as $L)if(is_dir("{$L}:"))$R.="{$L}:";}$R.="\t";$u=(function_exists('posix_getegid'))?@posix_getpwuid(@posix_geteuid()):'';$usr=($u)?$u['name']:@get_current_user();$R.=php_uname();$R.="({$usr})";print $R;;echo("|<-");die();      

其他HTTP流量中也沒有什麼重要資訊,選擇追蹤TCP流,在流21,發現rar檔案,選擇原始資料,另存為

正常web流量分析總結及例題(普通http流量,http傳輸檔案流量,https加密流量,視訊流)

這是把整個資料包都儲存下來了,在本地打開rar檔案,如果打不開檔案,使用010打開,把無用内容删除

正常web流量分析總結及例題(普通http流量,http傳輸檔案流量,https加密流量,視訊流)

打開rar壓縮包發現被加密了,因為這是到流量題,有限考慮去流量中找密碼,其次是考慮壓縮包的各種考點

這個壓縮包肯定是傳過來之前被加密的,是以需要向前找,看看流量中有什麼

在的流量中可以看到傳了三個變量,z0,z1,z2,其中z2解碼之後就是每次執行的指令,從流21開始依次向前解碼z2,發現流18,base64解碼内容為

cd /d "c:\inetpub\wwwroot\"&C:\progra~1\WinRAR\rar a C:\Inetpub\wwwroot\backup\wwwroot.rar C:\Inetpub\wwwroot\backup\1.gif -hpJJBoom&echo [S]&cd&echo [E]      

大概就是在cmd中調用了winrar,加密檔案并設定密碼

hp[password] 加密檔案資料和檔案頭      

密碼就是JJBoom了,解壓檔案

正常web流量分析總結及例題(普通http流量,http傳輸檔案流量,https加密流量,視訊流)

但是圖檔并不能檢視,用010打開

正常web流量分析總結及例題(普通http流量,http傳輸檔案流量,https加密流量,視訊流)

檔案頭是MDMP,說明這是Dump檔案或用linux下的file指令檢視檔案格式

Dump檔案是程序的記憶體鏡像,可以把程式的執行狀态通過調試器儲存到dump檔案中。Dump檔案是用來給驅動程式編寫人員調試驅動程式用的,這種檔案必須用專用工具軟體打開,比如使用WinDbg打開

需要使用猕猴桃mimikatz打開

使用以下三條指令

log d:\1.txt  //将回顯輸出到一個檔案中
sekurlsa::minidump 1.gif  //載入dmp檔案
sekurlsa::logonpasswords full //讀取登入密碼      

登入密碼就是flag

正常web流量分析總結及例題(普通http流量,http傳輸檔案流量,https加密流量,視訊流)

總結:

  1. 如果資料包比較大,可以追蹤流再儲存,資料包小的話可以直接使用儲存分組位元組流
  2. 資料流量比較多的話,在wireshark中可以使用統計->conversations進行檢視

例題三https加密流量

一個pcap檔案一個txt文檔

txt文檔内容為題目的提示

提示一:若感覺在中間某個容易出錯的步驟,若有需要檢驗是否正确時,可以比較MD5: 90c490781f9c320cd1ba671fcb112d1c
提示二:注意補齊私鑰格式
-----BEGIN RSA PRIVATE KEY-----
XXXXXXX
-----END RSA PRIVATE KEY-----      

打開流量包沒有發現http,但是存在TLS協定,判斷采用了https,需要密鑰解碼

正常web流量分析總結及例題(普通http流量,http傳輸檔案流量,https加密流量,視訊流)

繼續分析其他協定,翻一遍smtp,發現一張經過base64圖檔

正常web流量分析總結及例題(普通http流量,http傳輸檔案流量,https加密流量,視訊流)

選擇show data as 原始資料,另存為1.txt,把多餘的資訊删除,隻保留base64

使用腳本将base64轉換成圖檔

import base64
f=open("data.txt","r")
f2=open("1.png","wb")
content=base64.b64decode(f.read())
f2.write(content)
f.close()    
f2.close()      
正常web流量分析總結及例題(普通http流量,http傳輸檔案流量,https加密流量,視訊流)

生成的圖檔,可以聯想到HTTPS的私鑰,使用ocr進行識别,我用的是qq識屏,識别後點選下載下傳,儲存資料,python簡單處理下除掉多餘的空格

因為題目提示了中間容易出錯的地方大概就是這裡了,對一下md5值不對,頭大了,需要一個個的對比

将字元前後加上RSA的标記,儲存文檔

正常web流量分析總結及例題(普通http流量,http傳輸檔案流量,https加密流量,視訊流)

在wireshark中添加私鑰檔案

  1. 編輯->首選項->選擇協定TLS->選擇RSA keys list->點選Edit
  2. 在彈出的視窗中點選左下角加号->在Key File中選擇檔案->點選ok

添加完成,wireshark會自動重新整理,搜尋http協定,追蹤流就可以看到flag

例題四視訊流

兩個點

  1. 視訊資訊在流量包中使用UDP協定進行傳輸
  2. png,jpg等圖檔資訊隻要頭尾标記在,圖檔外多餘的資料不會影響顯示

打開流量包,首先關注http協定,選中第一個http包右鍵選擇追蹤http流

正常web流量分析總結及例題(普通http流量,http傳輸檔案流量,https加密流量,視訊流)

在流中發現大量與視訊相關的字眼,并且沒有發現關于flag的資訊,既然與視訊相關就去看udp包

正常web流量分析總結及例題(普通http流量,http傳輸檔案流量,https加密流量,視訊流)

在流中發現jpg圖檔

jpg圖檔含有的明顯特征      
正常web流量分析總結及例題(普通http流量,http傳輸檔案流量,https加密流量,視訊流)

将這個流選擇原始資料并儲存,資料很多需要等待一會兒避免漏掉

因為整個流中有很多jpg圖檔是以需要使用腳本分割

f = open("./pcap","rb")
data = f.read()
sub = 0
f.seek(0)
while 1:
    if f.read(3) == b'\xff\xd8\xff':
        f1 = open(str(sub) + '.jpg', "wb")
        f1.write(data[f.tell()-3:])
        f1.close()
        sub += 1
    else:
        f.seek(-2, 1)      

代碼解釋

  • b’\xff\xd8\xff’ jpg格式檔案頭
  • f.seek() 函數用于将檔案指針移動至指定位置
file.seek(offset[, whence])

其中,各個參數的含義如下:
file:表示檔案對象;
whence:作為可選參數,用于指定檔案指針要放置的位置,該參數的參數值有 3 個選擇:0 代表檔案頭(預設值)、1 代表目前位置、2 代表檔案尾。
offset:表示相對于 whence 位置檔案指針的偏移量,正數表示向後偏移,負數表示向前偏移。例如,當whence == 0 &&offset == 3(即 seek(3,0) ),表示檔案指針移動至距離檔案開頭處 3 個字元的位置;當whence == 1 &&offset == 5(即 seek(5,1) ),表示檔案指針向後移動,移動至距離目前位置 5 個字元處。
注意,當 offset 值非 0 時,Python 要求檔案必須要以二進制格式打開,否則會抛出 io.UnsupportedOperation 錯誤。      
  • f.tell(3) 輸出目前檔案指針位置

    tell執行個體

讀取 a.txt 的代碼如下:
f = open("a.txt",'r')
print(f.tell())
print(f.read(3))
print(f.tell())
運作結果為:
0
htt
3      

當使用 open() 函數打開檔案時,檔案指針的起始位置為 0,表示位于檔案的開頭處,當使用 read() 函數從檔案中讀取 3 個字元之後,檔案指針同時向後移動了 3 個字元的位置。這就表明,當程式使用檔案對象讀寫資料時,檔案指針會自動向後移動:讀寫了多少個資料,檔案指針就自動向後移動多少個位置

代碼意思就是每次讀取檔案三個位元組,判斷是不是jpg的檔案頭,注意此時檔案指針已經發生了變化向後移動了兩位,如果是檔案頭就将目前指針位置到末尾的全部資料儲存為jpg,也就是說生成的jpg圖檔大小會越來越小,如果不是jpg的檔案頭,檔案指針就從目前位置向前移動兩位繼續判斷

運作腳本解析圖檔

正常web流量分析總結及例題(普通http流量,http傳輸檔案流量,https加密流量,視訊流)