- 前言
- 簡介
- 應急開始
- 準備工作
- 檢視auth.log檔案
- grep -a
- 步驟 1
- 步驟 2
- 步驟 3
- 步驟 4
- 步驟 5
- 準備工作
- 總結
前言
又花了一塊rmb玩玄機。。。啥時候才能5金幣拿下一個應急靶機,只能說功底還沒到家,唯有繼續加油了。。。
簡介
賬號root密碼linuxrz
ssh root@IP
1.有多少IP在爆破主機ssh的root帳號,如果有多個使用","分割
2.ssh爆破成功登陸的IP是多少,如果有多個使用","分割
3.爆破使用者名稱字典是什麼?如果有多個使用","分割
4.登陸成功的IP共爆破了多少次
5.駭客登陸主機後新建了一個後門使用者,使用者名稱是多少
應急開始
準備工作
下面我遇到比較多的且比較重要的都加深顏色了,其實都很重要,只是作者還沒碰到過。
日誌檔案 | 說明 |
---|---|
/var/log/cron | 記錄了系統定時任務相關的日誌 |
/var/log/cups | 記錄列印資訊的日誌 |
/var/log/dmesg | 記錄了系統在開機時核心自檢的資訊,也可以使用dmesg命令直接檢視核心自檢資訊 |
/var/log/mailog | 記錄郵件資訊 |
/var/log/message | 記錄系統重要資訊的日誌。這個日誌檔案中會記錄Linux系統的絕大多數重要資訊,如果系統出現問題時,首先要檢查的就應該是這個日誌檔案 |
/var/log/btmp | 記錄錯誤登入日誌,這個檔案是二進位制檔案,不能直接vi檢視,而要使用lastb命令檢視 |
/var/log/lastlog | 記錄系統中所有使用者最後一次登入時間的日誌,這個檔案是二進位制檔案,不能直接vi,而要使用lastlog命令檢視 |
/var/log/wtmp | 永久記錄所有使用者的登入、登出資訊,同時記錄系統的啟動、重啟、關機事件。同樣這個檔案也是一個二進位制檔案,不能直接vi,而需要使用last命令來檢視 |
/var/log/utmp | 記錄當前已經登入的使用者資訊,這個檔案會隨著使用者的登入和登出不斷變化,只記錄當前登入使用者的資訊。同樣這個檔案不能直接vi,而要使用w,who,users等命令來查詢 |
/var/log/secure | 記錄驗證和授權方面的資訊,只要涉及賬號和密碼的程式都會記錄,比如SSH登入,su切換使用者,sudo授權,甚至新增使用者和修改使用者密碼都會記錄在這個日誌檔案中 |
/var/log/auth.log | 註明:這個有的Linux系統有,有的Linux系統沒有,一般都是/var/log/secure檔案來記錄居多 |
檢視auth.log檔案
這裡著重瞭解一下auth.log,因為這個檔案給我坑了。。。
-
auth.log
檔案在本題目中儲存了:
登入成功和失敗的資訊,即認證過程,還有登入成功後系統賬戶的活動動作,比如新增使用者等等(總之這一個檔案就包含了我們整個做題的過程) -
auth.log
檔案主要儲存與系統認證和授權相關的日誌資訊。具體內容包括但不限於以下幾類資訊:-
1:登入和登出活動:
成功和失敗的登入嘗試
使用者登出事件 -
2:認證過程:
SSH 登入嘗試(成功和失敗)
本地控制檯登入
Sudo 提權事件(成功和失敗) -
3:安全事件:
無效的登入嘗試
錯誤的密碼輸入
鎖定和解鎖螢幕事件 -
4:系統賬戶活動:
使用者新增、刪除和修改
組新增、刪除和修改 -
5:PAM(Pluggable Authentication Modules)相關資訊:
各種 PAM 模組的日誌輸出,包括認證和會話管理
-
grep -a
注意,這個也把我坑了!!!
選項通常是為了處理可能包含二進位制資料的檔案,將它們視為文字檔案進行處理,那麼也就是說如果你直接cat 該檔案沒問題,但是你需要對cat出來的檔案內容進行處理的話就會報二進位制錯誤,那麼也就是說該檔案中存在二進位制資料的。
為什麼會存在二進位制資料??可能就是為了坑你,而且我也學到了使用-a這個引數能夠避免二進位制檢視報錯。
步驟 1
1.有多少IP在爆破主機ssh的root帳號,如果有多個使用","分割 小到大排序 例如flag{192.168.200.1,192.168.200.2}
剛剛已經講過我被檔案坑了,想必如果在不知道auth.log是日誌檔案的情況下,大家應該會去找 /var/log/secure 這個檔案吧。。。
ok ,我們現在明確了ssh爆破的日誌記錄都在auth.log中 (他這裡又一個auth.log.1,檢視了一下估計就是備份檔案了,那我們這裡就是用備份檔案)
命令: cat /var/log/auth.log.1 | grep -a "Failed password for root" | awk '{print $11}' | sort -n | uniq -c'
-
解釋:
grep -a "Failed password for root"是過濾出來登入失敗的記錄
awk '{print $11}'是將失敗每條記錄中的ip提取出來(這裡就是經驗多了就知道,或者你自己慢慢除錯,看是第幾列就列印第幾列)
sort -n是將ip進行排序,-n其實你加不加無所謂,反正你除錯對了就行,我這個就是加-n就能從小到大排序。
uniq -c就是去重且列印重複次數 -
flag為:
flag{192.168.200.2,192.168.200.31,192.168.200.32}
步驟 2
2.ssh爆破成功登陸的IP是多少,如果有多個使用","分割
命令: grep -a "Accepted " /var/log/auth.log.1 | awk '{print $11}' | uniq -c
-
解釋
grep -a "Accepted "就是過濾登入成功的記錄
awk '{print $11}' 獲取登入ip
uniq -c 去重 -
flag為:
flag{192.168.200.2}
步驟 3
3.爆破使用者名稱字典是什麼?如果有多個使用","分割
-
錯誤示範:
這裡本人僅僅列印了第九列,這裡其實是不對的,因為無效使用者名稱會導致他出現invalid user xxxx,其實xxxx才是我們要的使用者名稱,所以我下面這種方式就沒有不同的使用者名稱都列出來。
-
正確方式:
這裡用到了perl語言,我還沒搞懂就不解釋了,原理肯定是我想的那樣,就是涉及到知識盲區了而已。
命令:cat /var/log/auth.log.1 | grep -a "Failed password" |perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
-
flag為:
flag{root,user,hello,test3,test2,test1}
步驟 4
4.成功登入 root 使用者的 ip 一共爆破了多少次
-
我們已知成功登入root的ip地址是:flag{192.168.200.2}
命令:grep -a "192.168.200.2" /var/log/auth.log.1 | grep -a 'Failed password root' | awk '{print $11}' | uniq -c
-
flag為:
flag{4}
步驟 5
5.駭客登陸主機後新建了一個後門使用者,使用者名稱是多少
由於我們現在已經知道了auth.log檔案能夠記錄系統賬戶活動,那我們直接grep該檔案即可,新增使用者的命令是net user
-
篩選 net user命令即可
命令:grep -a 'net user' /var/log/auth.log.1
-
flag為:
flag{test2}
總結
成果:
flag{192.168.200.2,192.168.200.31,192.168.200.32}
flag{192.168.200.2}
flag{root,user,hello,test3,test2,test1}
flag{4}
flag{test2}
透過這日誌分析題,瞭解到了日誌檔案其實還有一個auth.log的檔案日誌,不僅僅能夠記錄認證過程,還能知道系統賬戶執行了哪些賬戶操作,還有其他記錄型別。
需要注意的是,該檔案可能包含一些二進位制內容,所以我們grep的時候需要用-a引數進行過濾操作,否則會報錯。
總體體驗還是挺好的,第二次因為grep報錯原因浪費掉了好多時間,差幾分鐘就要重開第三次,玩的就是心跳啊。。。